Mr. Spell - Amélioration du PNJ.
Je tiens tout d'abord à remercier kyra123 pour le partage du PNJ sur ac-web sans les fonctions de remboursement, d'insertion des spells dans la DB sur le script du PNJ de base, et sans autres systèmes.

Tutoriel UNIQUEMENT RÉDIGÉ pour WOW-EMU.FR, il est strictement interdit de le poster ailleurs, merci de respect mon travail.

PARTIE SQL:

(code extrait via Truice. J'utilise une version de Trinity datant de début 2014. Le code n'est peut être pas à jour).

Ce code SQL est à exécuter sur la base de donnée vous servant de connexion au "monde" plus communément appellée "world".

SQL du PNJ
Ce code SQL est à exécuter sur la base de donnée vous servant à enrengistrer les objets, titres, sorts, talents, guildes, équipes d'arènes de vos JOUEURS. plus communément appellée "characters".

SQL characters:

• characters.sql:
• achat_spell.sql:
• remboursement_spell.sql:
La partie SQL s'arrête donc ici.

PARTIE C++:

Avant d'ajouter le script du PNJ, nous ajouterons la selection du nombre de spell dans la DB "characters".

Passons désormais au C++ du PNJ, qui se divisera en plusieurs parties. Selon vos exigeances, le PNJ peut être simplement configuré sans utiliser de limitation (configuratin par default du script utilisé sur AGONY.)

• mr_spell.cpp:

[spoiler][shcode=cpp]
/*
*
* Release initiale de kyra123 - script récupéré sur AC-WEB
* Complément par Sleazy pour AGONY.fr - ajout de diverses fonctions
*
*
*/

#include "ScriptPCH.h"
#include "Config.h"

#define MESSAGE_MONNAIE_MANQUANTE "Vous n'avez pas assez de diamants." // Message whisper si le joueur manque de "points" ou de la "monnaie" configurée.
#define MESSAGE_SPELL_POSSEDER "J'en suis confus, mais vous posséder déjà ce spell!" // Message whisper si le joueur dispose déjà ce sort.
#define SPELL_DESACTIVE_EQUILIBRE "J'en suis confus, mais cette spell est désactivé pour votre classe pour l'équilibre des classes sur le serveur, merci de votre compréhension." // Message whisper quand le joueur essaie d'apprendre un sort désactivé pour sa classe.
#define MESSAGE_SPELL_AJOUTE "Grâce à toutes les fonctions que Sleazy m'a codé, je vous apprend ce sort! Merci de votre achat et que les vents vous mènent, revenez me voir si il vous faut autre chose!" // Message whisper quand le joueur apprends un sort.
#define MESSAGE_PERSONNAGE_SAVE "Le personnage est sauvegardé! Je vous souhaite une bonne aventure!" // Message whisper quand le joueur clique sur le script de sauvegarde.
#define MESSAGE_CLASSE_RESTRICTION "Je suis navré de vous annoncer que vous ne pouvez pas apprendre ce sort ni vous le rembourser, vous l'avez déjà en votre possession grâce à votre entrainement auprès de votre maître de classe." // Message whisper quand le joueur essaie de rembourser un sort de sa classe.
#define MESSAGE_SPELL_REMBOURSER "Grâce à la puissance de l'arcanite, j'ai pu vous restaurer quelques diamants en vous oubliant un sort que je vous ai appris auparavant." // Message whisper quand le joueur rembourse un sort.
#define MESSAGE_SPELL_MANQUANTE "C'est dingue, mais en cherchant dans mon grimoire vous ne m'aviez jamais demandé à vous apprendre ce sort, je ne peux donc pas vous le rembourser." // Message whisper si spell manquante pour un remboursement.

// INUTILE POUR LE MOMENT -- #define MESSAGE_LIMITE "J'en suis confus, mais la limite des 25 sorts hors classes sera dépassée si je vous apprends ce sort..." // Message whisper quand le joueur dispose déjà de 25 spells.

enum MenuStructure
{
MAIN_MENU = 0,

// Menu principal
MENU_SPELL_COMBAT = 1, // Déroule le menu spell de combat pour afficher les sous menus.
MENU_SPELL_FUN = 2, // Déroule le menu spell fun pour afficher les sous menus.
// COMBAT
SPELLMENU_WAR = 3, // Déroule le menu Guerrier pour afficher les spells de combat de la classe "Guerrier"
SPELLMENU_PAL = 4, // MENU PALADIN
SPELLMENU_HUNT = 5, // MENU CHASSEUR
SPELLMENU_ROGUE = 6, // MENU VOLEUR
SPELLMENU_PRIEST = 7, // MENU PRÊTRE
SPELLMENU_DK = 8, // MENU CHEVALIER DE LA MORT
SPELLMENU_SHAMAN = 9, // MENU CHAMAN
SPELLMENU_MAGE = 10, // MENU MAGE
SPELLMENU_WARLOCK = 11, // MENU DEMONISTE
SPELLMENU_DROOD = 12, // MENU DRUIDE
SPELLMENU_FAMILIER = 13, // MENU FAMILIER
SPELLMENU_PNJ = 14, // MENU PNJ

SAVE_MENU = 15, // Fonction Sauvegarde
EXIT_MENU = 16, // Fonction Fermé
};

enum Consts
{
MONNAIE_ID = 99999, // Votre ID de monnaie
PRIX_SPELL_1 = 7, // Votre prix pour les spell "classiques"
PRIX_SPELL_2 = 12, // Votre prix pour les spell "supérieurs"
PRIX_SPELL_3 = 25, // Votre prix pour les spell "cheatés"
PRIX_SPELL_4 = 50, // Votre prix pour les spell "semi-légendaires"
PRIX_SPELL_5 = 100, // Votre prix pour les spells "légendaires"

REMBOURSER_PRIX_SPELL_1 = 5, // Votre prix pour rembourser les spell "classiques"
REMBOURSER_PRIX_SPELL_2 = 8, // Votre prix pour rembourser les spell "supérieurs"
REMBOURSER_PRIX_SPELL_3 = 18, // Votre prix pour rembourser les spell "cheatés"
REMBOURSER_PRIX_SPELL_4 = 42, // Votre prix pour rembourser les spell "semi-légendaires"
REMBOURSER_PRIX_SPELL_5 = 88, // Votre prix pour rembourser les spells "légendaires"
};

enum Actions
{
// Spell Guerrier # 100 - 199

SPELL_WAR_1 = 100,
SPELL_WAR_2 = 101,
SPELL_WAR_3 = 102,
SPELL_WAR_4 = 103,
SPELL_WAR_5 = 104,
SPELL_WAR_6 = 105,
SPELL_WAR_7 = 106,
SPELL_WAR_8 = 107,
SPELL_WAR_9 = 108,

DESC_SPELL_WAR_1 = 110,
DESC_SPELL_WAR_2 = 111,
DESC_SPELL_WAR_3 = 112,
DESC_SPELL_WAR_4 = 113,
DESC_SPELL_WAR_5 = 114,
DESC_SPELL_WAR_6 = 115,
DESC_SPELL_WAR_7 = 116,
DESC_SPELL_WAR_8 = 117,
DESC_SPELL_WAR_9 = 118,

REMBOURSER_SPELL_WAR_1 = 120,
REMBOURSER_SPELL_WAR_2 = 121,
REMBOURSER_SPELL_WAR_3 = 122,
REMBOURSER_SPELL_WAR_4 = 123,
REMBOURSER_SPELL_WAR_5 = 124,
REMBOURSER_SPELL_WAR_6 = 125,
REMBOURSER_SPELL_WAR_7 = 126,
REMBOURSER_SPELL_WAR_8 = 127,
REMBOURSER_SPELL_WAR_9 = 128,

// Spell paladin # 200 - 299

SPELL_PAL_1 = 200,
SPELL_PAL_2 = 201,
SPELL_PAL_3 = 202,
SPELL_PAL_4 = 203,
SPELL_PAL_5 = 204,
SPELL_PAL_6 = 205,
SPELL_PAL_7 = 206,
SPELL_PAL_8 = 207,
SPELL_PAL_9 = 208,
SPELL_PAL_10 = 209,
SPELL_PAL_11 = 210,
SPELL_PAL_12 = 211,

DESC_SPELL_PAL_1 = 220,
DESC_SPELL_PAL_2 = 221,
DESC_SPELL_PAL_3 = 222,
DESC_SPELL_PAL_4 = 223,
DESC_SPELL_PAL_5 = 224,
DESC_SPELL_PAL_6 = 225,
DESC_SPELL_PAL_7 = 226,
DESC_SPELL_PAL_8 = 227,
DESC_SPELL_PAL_9 = 228,
DESC_SPELL_PAL_10 = 229,
DESC_SPELL_PAL_11 = 220,
DESC_SPELL_PAL_12 = 221,

REMBOURSER_SPELL_PAL_1 = 230,
REMBOURSER_SPELL_PAL_2 = 231,
REMBOURSER_SPELL_PAL_3 = 232,
REMBOURSER_SPELL_PAL_4 = 233,
REMBOURSER_SPELL_PAL_5 = 234,
REMBOURSER_SPELL_PAL_6 = 235,
REMBOURSER_SPELL_PAL_7 = 236,
REMBOURSER_SPELL_PAL_8 = 237,
REMBOURSER_SPELL_PAL_9 = 238,
REMBOURSER_SPELL_PAL_10 = 239,
REMBOURSER_SPELL_PAL_11 = 230,
REMBOURSER_SPELL_PAL_12 = 231,

// Spell chasseur # 300 - 399

SPELL_HUNT_1 = 300,
SPELL_HUNT_2 = 301,
SPELL_HUNT_3 = 302,
SPELL_HUNT_4 = 303,
SPELL_HUNT_5 = 304,
SPELL_HUNT_6 = 305,
SPELL_HUNT_7 = 306,
SPELL_HUNT_8 = 307,
SPELL_HUNT_9 = 308,
SPELL_HUNT_10 = 309,
SPELL_HUNT_11 = 310,
SPELL_HUNT_12 = 311,
SPELL_HUNT_13 = 312,
SPELL_HUNT_14 = 313,
SPELL_HUNT_15 = 314,
SPELL_HUNT_16 = 315,
SPELL_HUNT_17 = 316,
SPELL_HUNT_18 = 317,
SPELL_HUNT_19 = 318,
SPELL_HUNT_20 = 319,

DESC_SPELL_HUNT_1 = 320,
DESC_SPELL_HUNT_2 = 321,
DESC_SPELL_HUNT_3 = 322,
DESC_SPELL_HUNT_4 = 323,
DESC_SPELL_HUNT_5 = 324,
DESC_SPELL_HUNT_6 = 325,
DESC_SPELL_HUNT_7 = 326,
DESC_SPELL_HUNT_8 = 327,
DESC_SPELL_HUNT_9 = 328,
DESC_SPELL_HUNT_10 = 329,
DESC_SPELL_HUNT_11 = 330,
DESC_SPELL_HUNT_12 = 331,
DESC_SPELL_HUNT_13 = 332,
DESC_SPELL_HUNT_14 = 333,
DESC_SPELL_HUNT_15 = 334,
DESC_SPELL_HUNT_16 = 335,
DESC_SPELL_HUNT_17 = 336,
DESC_SPELL_HUNT_18 = 337,
DESC_SPELL_HUNT_19 = 338,
DESC_SPELL_HUNT_20 = 339,

REMBOURSER_SPELL_HUNT_1 = 340,
REMBOURSER_SPELL_HUNT_2 = 341,
REMBOURSER_SPELL_HUNT_3 = 342,
REMBOURSER_SPELL_HUNT_4 = 343,
REMBOURSER_SPELL_HUNT_5 = 344,
REMBOURSER_SPELL_HUNT_6 = 345,
REMBOURSER_SPELL_HUNT_7 = 346,
REMBOURSER_SPELL_HUNT_8 = 347,
REMBOURSER_SPELL_HUNT_9 = 348,
REMBOURSER_SPELL_HUNT_10 = 349,
REMBOURSER_SPELL_HUNT_11 = 350,
REMBOURSER_SPELL_HUNT_12 = 351,
REMBOURSER_SPELL_HUNT_13 = 352,
REMBOURSER_SPELL_HUNT_14 = 353,
REMBOURSER_SPELL_HUNT_15 = 354,
REMBOURSER_SPELL_HUNT_16 = 355,
REMBOURSER_SPELL_HUNT_17 = 356,
REMBOURSER_SPELL_HUNT_18 = 357,
REMBOURSER_SPELL_HUNT_19 = 358,
REMBOURSER_SPELL_HUNT_20 = 359,

// Spell voleur # 400 - 499

SPELL_ROGUE_1 = 400,
SPELL_ROGUE_2 = 401,
SPELL_ROGUE_3 = 402,
SPELL_ROGUE_4 = 403,
SPELL_ROGUE_5 = 404,
SPELL_ROGUE_6 = 405,
SPELL_ROGUE_7 = 406,
SPELL_ROGUE_8 = 407,
SPELL_ROGUE_9 = 408,
SPELL_ROGUE_10 = 409,

DESC_SPELL_ROGUE_1 = 410,
DESC_SPELL_ROGUE_2 = 411,
DESC_SPELL_ROGUE_3 = 412,
DESC_SPELL_ROGUE_4 = 413,
DESC_SPELL_ROGUE_5 = 414,
DESC_SPELL_ROGUE_6 = 415,
DESC_SPELL_ROGUE_7 = 416,
DESC_SPELL_ROGUE_8 = 417,
DESC_SPELL_ROGUE_9 = 418,
DESC_SPELL_ROGUE_10 = 419,

REMBOURSER_SPELL_ROGUE_1 = 420,
REMBOURSER_SPELL_ROGUE_2 = 421,
REMBOURSER_SPELL_ROGUE_3 = 422,
REMBOURSER_SPELL_ROGUE_4 = 423,
REMBOURSER_SPELL_ROGUE_5 = 424,
REMBOURSER_SPELL_ROGUE_6 = 425,
REMBOURSER_SPELL_ROGUE_7 = 426,
REMBOURSER_SPELL_ROGUE_8 = 427,
REMBOURSER_SPELL_ROGUE_9 = 428,
REMBOURSER_SPELL_ROGUE_10 = 429,

// Spell pretre # 500 - 599

SPELL_PRIEST_1 = 500,
SPELL_PRIEST_2 = 501,
SPELL_PRIEST_3 = 502,
SPELL_PRIEST_4 = 503,
SPELL_PRIEST_5 = 504,
SPELL_PRIEST_6 = 505,
SPELL_PRIEST_7 = 506,
SPELL_PRIEST_8 = 507,
SPELL_PRIEST_9 = 508,
SPELL_PRIEST_10 = 509,
SPELL_PRIEST_11 = 510,
SPELL_PRIEST_12 = 511,
SPELL_PRIEST_13 = 512,
SPELL_PRIEST_14 = 513,
SPELL_PRIEST_15 = 514,
SPELL_PRIEST_16 = 515,
SPELL_PRIEST_17 = 516,

DESC_SPELL_PRIEST_1 = 520,
DESC_SPELL_PRIEST_2 = 521,
DESC_SPELL_PRIEST_3 = 522,
DESC_SPELL_PRIEST_4 = 523,
DESC_SPELL_PRIEST_5 = 524,
DESC_SPELL_PRIEST_6 = 525,
DESC_SPELL_PRIEST_7 = 526,
DESC_SPELL_PRIEST_8 = 527,
DESC_SPELL_PRIEST_9 = 528,
DESC_SPELL_PRIEST_10 = 529,
DESC_SPELL_PRIEST_11 = 530,
DESC_SPELL_PRIEST_12 = 531,
DESC_SPELL_PRIEST_13 = 532,
DESC_SPELL_PRIEST_14 = 533,
DESC_SPELL_PRIEST_15 = 534,
DESC_SPELL_PRIEST_16 = 535,
DESC_SPELL_PRIEST_17 = 536,

REMBOURSER_SPELL_PRIEST_1 = 540,
REMBOURSER_SPELL_PRIEST_2 = 541,
REMBOURSER_SPELL_PRIEST_3 = 542,
REMBOURSER_SPELL_PRIEST_4 = 543,
REMBOURSER_SPELL_PRIEST_5 = 544,
REMBOURSER_SPELL_PRIEST_6 = 545,
REMBOURSER_SPELL_PRIEST_7 = 546,
REMBOURSER_SPELL_PRIEST_8 = 547,
REMBOURSER_SPELL_PRIEST_9 = 548,
REMBOURSER_SPELL_PRIEST_10 = 549,
REMBOURSER_SPELL_PRIEST_11 = 550,
REMBOURSER_SPELL_PRIEST_12 = 551,
REMBOURSER_SPELL_PRIEST_13 = 552,
REMBOURSER_SPELL_PRIEST_14 = 553,
REMBOURSER_SPELL_PRIEST_15 = 554,
REMBOURSER_SPELL_PRIEST_16 = 555,
REMBOURSER_SPELL_PRIEST_17 = 556,

// Spell DK # 600 - 699

SPELL_DK_1 = 600,
SPELL_DK_2 = 601,
SPELL_DK_3 = 602,
SPELL_DK_4 = 603,
SPELL_DK_5 = 604,
SPELL_DK_6 = 605,
SPELL_DK_7 = 606,
SPELL_DK_8 = 607,
SPELL_DK_9 = 608,
SPELL_DK_10 = 609,
SPELL_DK_11 = 610,
SPELL_DK_12 = 611,
SPELL_DK_13 = 612,
SPELL_DK_14 = 613,
SPELL_DK_15 = 614,

DESC_SPELL_DK_1 = 620,
DESC_SPELL_DK_2 = 621,
DESC_SPELL_DK_3 = 622,
DESC_SPELL_DK_4 = 623,
DESC_SPELL_DK_5 = 624,
DESC_SPELL_DK_6 = 625,
DESC_SPELL_DK_7 = 626,
DESC_SPELL_DK_8 = 627,
DESC_SPELL_DK_9 = 628,
DESC_SPELL_DK_10 = 629,
DESC_SPELL_DK_11 = 630,
DESC_SPELL_DK_12 = 631,
DESC_SPELL_DK_13 = 632,
DESC_SPELL_DK_14 = 633,
DESC_SPELL_DK_15 = 634,

REMBOURSER_SPELL_DK_1 = 640,
REMBOURSER_SPELL_DK_2 = 641,
REMBOURSER_SPELL_DK_3 = 642,
REMBOURSER_SPELL_DK_4 = 643,
REMBOURSER_SPELL_DK_5 = 644,
REMBOURSER_SPELL_DK_6 = 645,
REMBOURSER_SPELL_DK_7 = 646,
REMBOURSER_SPELL_DK_8 = 647,
REMBOURSER_SPELL_DK_9 = 648,
REMBOURSER_SPELL_DK_10 = 649,
REMBOURSER_SPELL_DK_11 = 650,
REMBOURSER_SPELL_DK_12 = 651,
REMBOURSER_SPELL_DK_13 = 652,
REMBOURSER_SPELL_DK_14 = 653,
REMBOURSER_SPELL_DK_15 = 654,

// Spell chaman # 700 - 799

SPELL_SHAMAN_1 = 700,
SPELL_SHAMAN_2 = 701,
SPELL_SHAMAN_3 = 702,
SPELL_SHAMAN_4 = 703,
SPELL_SHAMAN_5 = 704,
SPELL_SHAMAN_6 = 705,
SPELL_SHAMAN_7 = 706,
SPELL_SHAMAN_8 = 707,
SPELL_SHAMAN_9 = 708,
SPELL_SHAMAN_10 = 709,
SPELL_SHAMAN_11 = 710,
SPELL_SHAMAN_12 = 711,
SPELL_SHAMAN_13 = 712,
SPELL_SHAMAN_14 = 713,
SPELL_SHAMAN_15 = 714,

DESC_SPELL_SHAMAN_1 = 720,
DESC_SPELL_SHAMAN_2 = 721,
DESC_SPELL_SHAMAN_3 = 722,
DESC_SPELL_SHAMAN_4 = 723,
DESC_SPELL_SHAMAN_5 = 724,
DESC_SPELL_SHAMAN_6 = 725,
DESC_SPELL_SHAMAN_7 = 726,
DESC_SPELL_SHAMAN_8 = 727,
DESC_SPELL_SHAMAN_9 = 728,
DESC_SPELL_SHAMAN_10 = 729,
DESC_SPELL_SHAMAN_11 = 730,
DESC_SPELL_SHAMAN_12 = 731,
DESC_SPELL_SHAMAN_13 = 732,
DESC_SPELL_SHAMAN_14 = 733,
DESC_SPELL_SHAMAN_15 = 734,

REMBOURSER_SPELL_SHAMAN_1 = 740,
REMBOURSER_SPELL_SHAMAN_2 = 741,
REMBOURSER_SPELL_SHAMAN_3 = 742,
REMBOURSER_SPELL_SHAMAN_4 = 743,
REMBOURSER_SPELL_SHAMAN_5 = 744,
REMBOURSER_SPELL_SHAMAN_6 = 745,
REMBOURSER_SPELL_SHAMAN_7 = 746,
REMBOURSER_SPELL_SHAMAN_8 = 747,
REMBOURSER_SPELL_SHAMAN_9 = 748,
REMBOURSER_SPELL_SHAMAN_10 = 749,
REMBOURSER_SPELL_SHAMAN_11 = 750,
REMBOURSER_SPELL_SHAMAN_12 = 751,
REMBOURSER_SPELL_SHAMAN_13 = 752,
REMBOURSER_SPELL_SHAMAN_14 = 753,
REMBOURSER_SPELL_SHAMAN_15 = 754,

// Spell mage # 800 - 899

SPELL_MAGE_1 = 800,
SPELL_MAGE_2 = 801,
SPELL_MAGE_3 = 802,
SPELL_MAGE_4 = 803,
SPELL_MAGE_5 = 804,
SPELL_MAGE_6 = 805,
SPELL_MAGE_7 = 806,
SPELL_MAGE_8 = 807,
SPELL_MAGE_9 = 808,
SPELL_MAGE_10 = 809,
SPELL_MAGE_11 = 810,
SPELL_MAGE_12 = 811,
SPELL_MAGE_13 = 812,
SPELL_MAGE_14 = 813,
SPELL_MAGE_15 = 814,

DESC_SPELL_MAGE_1 = 820,
DESC_SPELL_MAGE_2 = 821,
DESC_SPELL_MAGE_3 = 822,
DESC_SPELL_MAGE_4 = 823,
DESC_SPELL_MAGE_5 = 824,
DESC_SPELL_MAGE_6 = 825,
DESC_SPELL_MAGE_7 = 826,
DESC_SPELL_MAGE_8 = 827,
DESC_SPELL_MAGE_9 = 828,
DESC_SPELL_MAGE_10 = 829,
DESC_SPELL_MAGE_11 = 830,
DESC_SPELL_MAGE_12 = 831,
DESC_SPELL_MAGE_13 = 832,
DESC_SPELL_MAGE_14 = 833,
DESC_SPELL_MAGE_15 = 834,

REMBOURSER_SPELL_MAGE_1 = 840,
REMBOURSER_SPELL_MAGE_2 = 841,
REMBOURSER_SPELL_MAGE_3 = 842,
REMBOURSER_SPELL_MAGE_4 = 843,
REMBOURSER_SPELL_MAGE_5 = 844,
REMBOURSER_SPELL_MAGE_6 = 845,
REMBOURSER_SPELL_MAGE_7 = 846,
REMBOURSER_SPELL_MAGE_8 = 847,
REMBOURSER_SPELL_MAGE_9 = 848,
REMBOURSER_SPELL_MAGE_10 = 849,
REMBOURSER_SPELL_MAGE_11 = 850,
REMBOURSER_SPELL_MAGE_12 = 851,
REMBOURSER_SPELL_MAGE_13 = 852,
REMBOURSER_SPELL_MAGE_14 = 853,
REMBOURSER_SPELL_MAGE_15 = 854,

// Spell demoniste # 900 - 999

SPELL_WARLOCK_1 = 900,
SPELL_WARLOCK_2 = 901,
SPELL_WARLOCK_3 = 902,
SPELL_WARLOCK_4 = 903,
SPELL_WARLOCK_5 = 904,
SPELL_WARLOCK_6 = 905,
SPELL_WARLOCK_7 = 906,
SPELL_WARLOCK_8 = 907,
SPELL_WARLOCK_9 = 908,
SPELL_WARLOCK_10 = 909,
SPELL_WARLOCK_11 = 910,
SPELL_WARLOCK_12 = 911,
SPELL_WARLOCK_13 = 912,
SPELL_WARLOCK_14 = 913,
SPELL_WARLOCK_15 = 914,

DESC_SPELL_WARLOCK_1 = 920,
DESC_SPELL_WARLOCK_2 = 921,
DESC_SPELL_WARLOCK_3 = 922,
DESC_SPELL_WARLOCK_4 = 923,
DESC_SPELL_WARLOCK_5 = 924,
DESC_SPELL_WARLOCK_6 = 925,
DESC_SPELL_WARLOCK_7 = 926,
DESC_SPELL_WARLOCK_8 = 927,
DESC_SPELL_WARLOCK_9 = 928,
DESC_SPELL_WARLOCK_10 = 929,
DESC_SPELL_WARLOCK_11 = 930,
DESC_SPELL_WARLOCK_12 = 931,
DESC_SPELL_WARLOCK_13 = 932,
DESC_SPELL_WARLOCK_14 = 933,
DESC_SPELL_WARLOCK_15 = 934,

REMBOURSER_SPELL_WARLOCK_1 = 940,
REMBOURSER_SPELL_WARLOCK_2 = 941,
REMBOURSER_SPELL_WARLOCK_3 = 942,
REMBOURSER_SPELL_WARLOCK_4 = 943,
REMBOURSER_SPELL_WARLOCK_5 = 944,
REMBOURSER_SPELL_WARLOCK_6 = 945,
REMBOURSER_SPELL_WARLOCK_7 = 946,
REMBOURSER_SPELL_WARLOCK_8 = 947,
REMBOURSER_SPELL_WARLOCK_9 = 948,
REMBOURSER_SPELL_WARLOCK_10 = 949,
REMBOURSER_SPELL_WARLOCK_11 = 940,
REMBOURSER_SPELL_WARLOCK_12 = 941,
REMBOURSER_SPELL_WARLOCK_13 = 942,
REMBOURSER_SPELL_WARLOCK_14 = 943,
REMBOURSER_SPELL_WARLOCK_15 = 944,

// Spell druide # 1000 - 1099

SPELL_DROOD_1 = 1000,
SPELL_DROOD_2 = 1001,
SPELL_DROOD_3 = 1002,
SPELL_DROOD_4 = 1003,
SPELL_DROOD_5 = 1004,
SPELL_DROOD_6 = 1005,
SPELL_DROOD_7 = 1006,
SPELL_DROOD_8 = 1007,
SPELL_DROOD_9 = 1008,
SPELL_DROOD_10 = 1009,
SPELL_DROOD_11 = 1010,
SPELL_DROOD_12 = 1011,
SPELL_DROOD_13 = 1012,
SPELL_DROOD_14 = 1013,
SPELL_DROOD_15 = 1014,

DESC_SPELL_DROOD_1 = 1020,
DESC_SPELL_DROOD_2 = 1021,
DESC_SPELL_DROOD_3 = 1022,
DESC_SPELL_DROOD_4 = 1023,
DESC_SPELL_DROOD_5 = 1024,
DESC_SPELL_DROOD_6 = 1025,
DESC_SPELL_DROOD_7 = 1026,
DESC_SPELL_DROOD_8 = 1027,
DESC_SPELL_DROOD_9 = 1028,
DESC_SPELL_DROOD_10 = 1029,
DESC_SPELL_DROOD_11 = 1030,
DESC_SPELL_DROOD_12 = 1031,
DESC_SPELL_DROOD_13 = 1032,
DESC_SPELL_DROOD_14 = 1033,
DESC_SPELL_DROOD_15 = 1034,

REMBOURSER_SPELL_DROOD_1 = 1040,
REMBOURSER_SPELL_DROOD_2 = 1041,
REMBOURSER_SPELL_DROOD_3 = 1042,
REMBOURSER_SPELL_DROOD_4 = 1043,
REMBOURSER_SPELL_DROOD_5 = 1044,
REMBOURSER_SPELL_DROOD_6 = 1045,
REMBOURSER_SPELL_DROOD_7 = 1046,
REMBOURSER_SPELL_DROOD_8 = 1047,
REMBOURSER_SPELL_DROOD_9 = 1048,
REMBOURSER_SPELL_DROOD_10 = 1049,
REMBOURSER_SPELL_DROOD_11 = 1050,
REMBOURSER_SPELL_DROOD_12 = 1051,
REMBOURSER_SPELL_DROOD_13 = 1052,
REMBOURSER_SPELL_DROOD_14 = 1053,
REMBOURSER_SPELL_DROOD_15 = 1054,

// Spell PNJ # 1100 - 1199

SPELL_PNJ_1 = 1100,
SPELL_PNJ_2 = 1101,

DESC_SPELL_PNJ_1 = 1110,
DESC_SPELL_PNJ_2 = 1111,

REMBOURSER_SPELL_PNJ_1 = 1120,
REMBOURSER_SPELL_PNJ_2 = 1121,

// Menu sauvegarde du personnage
ACTION_NBR_SPELL = 9998, // Fonction qui compte le nombre de spell
ACTION_SAVE = 9999, // Action Fonction Save
};

uint64 spellnbr = 0;


class mr_spell : public CreatureScript
{
public:
mr_spell() : CreatureScript("mr_spell") { }

/* MENU PRINCIPAL */


bool OnGossipHello(Player* player, Creature* creature)
{
player->PlayerTalkClass->ClearMenus();
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_TALK, "Spell de combat", GOSSIP_SENDER_MAIN, MENU_SPELL_COMBAT);
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_TALK, "Mes statistiques d'achat", GOSSIP_SENDER_MAIN, ACTION_NBR_SPELL);
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_MONEY_BAG, "Sauvegarder mon personnage", GOSSIP_SENDER_MAIN, ACTION_SAVE);
player->SEND_GOSSIP_MENU(DEFAULT_GOSSIP_MESSAGE, creature->GetGUID());
return true;
}

/* FIN DU MENU */

/* WAR */

bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 action)
{
player->PlayerTalkClass->ClearMenus();

switch (action)
{
/* MENU PRINCIPAL */
case MAIN_MENU:
player->PlayerTalkClass->ClearMenus();
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_TALK, "Spell de combat", GOSSIP_SENDER_MAIN, MENU_SPELL_COMBAT);
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_TALK, "Mes statistiques d'achat", GOSSIP_SENDER_MAIN, ACTION_NBR_SPELL);
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_MONEY_BAG, "Sauvegarder mon personnage", GOSSIP_SENDER_MAIN, ACTION_SAVE);
player->SEND_GOSSIP_MENU(DEFAULT_GOSSIP_MESSAGE, creature->GetGUID());
return true;

break;
/* FIN MENU PRINCIPAL */

/* NOMBRE SPELL */

case ACTION_NBR_SPELL:

ChatHandler(player->GetSession()).PSendSysMessage("Vous avez actuellement %u spell(s), dont %u spell(s) de Combat, et %u spell(s) FUN. Depuis la création de votre personnage, vous avez dépensé %u diamants, vous avez été remboursé de %u diamants grâce à vos %u spell(s) remboursé(s).", player->GetSpells(), player->GetSpellsCombat(), player->GetSpellsFun(), player->GetDiamantsDepenser(), player->GetDiamantsRembourser(), player->GetSpellsRembourser());
player->CLOSE_GOSSIP_MENU();
break;


/* FIN FOCTION NOMBRE SPELL */

/* MENU SPELL DE COMBAT */
case MENU_SPELL_COMBAT:
player->PlayerTalkClass->ClearMenus();

if(player->getClass() != CLASS_WARRIOR)
{
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_TALK, "Spell |cFF4C290BGuerrier", GOSSIP_SENDER_MAIN, SPELLMENU_WAR);
}

if(player->getClass() != CLASS_PALADIN) // début du gossip war
{
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_TALK, "Spell |cFFF58CBAPaladin", GOSSIP_SENDER_MAIN, SPELLMENU_PAL);
}

if(player->getClass() != CLASS_HUNTER)
{
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_TALK, "Spell |cFFABD473Chasseur", GOSSIP_SENDER_MAIN, SPELLMENU_HUNT);
}

if(player->getClass() != CLASS_ROGUE)
{
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_TALK, "Spell |cFFFFF569Voleur", GOSSIP_SENDER_MAIN, SPELLMENU_ROGUE);
}

if(player->getClass() != CLASS_PRIEST)
{
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_TALK, "Spell |cFFFFFFFFPrêtre", GOSSIP_SENDER_MAIN, SPELLMENU_PRIEST);
}

if(player->getClass() != CLASS_DEATH_KNIGHT)
{
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_TALK, "Spell |cFFC41F3BChevalier de la mort", GOSSIP_SENDER_MAIN, SPELLMENU_DK);
}

if(player->getClass() != CLASS_SHAMAN)
{
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_TALK, "Spell |cFF0070DEChaman", GOSSIP_SENDER_MAIN, SPELLMENU_SHAMAN);
}

if(player->getClass() != CLASS_MAGE)
{
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_TALK, "Spell |cFF69CCF0Mage", GOSSIP_SENDER_MAIN, SPELLMENU_MAGE);
}

if(player->getClass() != CLASS_WARLOCK)
{
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_TALK, "Spell |cFF9482C9Démoniste", GOSSIP_SENDER_MAIN, SPELLMENU_WARLOCK);
}

if(player->getClass() != CLASS_DRUID)
{
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_TALK, "Spell |cFFFF7D0ADruide", GOSSIP_SENDER_MAIN, SPELLMENU_DROOD);
}

player->ADD_GOSSIP_ITEM(GOSSIP_ICON_TALK, "Spell |cFF00FF96Familiers", GOSSIP_SENDER_MAIN, SPELLMENU_FAMILIER);

player->ADD_GOSSIP_ITEM(GOSSIP_ICON_TALK, "Spell |cFFD701B3PNJ", GOSSIP_SENDER_MAIN, SPELLMENU_PNJ);


player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "<- Menu principal", GOSSIP_SENDER_MAIN, MAIN_MENU);
player->SEND_GOSSIP_MENU(DEFAULT_GOSSIP_MESSAGE, creature->GetGUID());
return true;
break;
/* FIN MENU SPELL DE COMBAT */

case SPELLMENU_WAR:
player->PlayerTalkClass->ClearMenus();

if(player->HasSpell(46917))
{
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_MONEY_BAG, "{|cFF00FFEBConnu|r} Poigne du titan [12 diamants]", GOSSIP_SENDER_MAIN, DESC_SPELL_WAR_1);
}
else
{
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_MONEY_BAG, "Poigne du titan [12 diamants]", GOSSIP_SENDER_MAIN, DESC_SPELL_WAR_1);
}

if(player->HasSpell(12974))
{
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_MONEY_BAG, "{|cFF00FFEBConnu|r} Rafale [7 diamants]", GOSSIP_SENDER_MAIN, DESC_SPELL_WAR_2);
}
else
{
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_MONEY_BAG, "Rafale [7 diamants]", GOSSIP_SENDER_MAIN, DESC_SPELL_WAR_2);
}

if(player->HasSpell(29838))
{
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_MONEY_BAG, "{|cFF00FFEBConnu|r} Second souffle [12 diamants]", GOSSIP_SENDER_MAIN, DESC_SPELL_WAR_3);
}
else
{
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_MONEY_BAG, "Second souffle [12 diamants]", GOSSIP_SENDER_MAIN, DESC_SPELL_WAR_3);
}

if(player->HasSpell(12867))
{
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_MONEY_BAG, "{|cFF00FFEBConnu|r} Blessures profondes [12 diamants]", GOSSIP_SENDER_MAIN, DESC_SPELL_WAR_4);
}
else
{
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_MONEY_BAG, "Blessures profondes [12 diamants]", GOSSIP_SENDER_MAIN, DESC_SPELL_WAR_4);
}

if(player->HasSpell(61222))
{
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_MONEY_BAG, "{|cFF00FFEBConnu|r} Armé jusqu'aux dents [25 diamants]", GOSSIP_SENDER_MAIN, DESC_SPELL_WAR_5);
}
else
{
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_MONEY_BAG, "Armé jusqu'aux dents [25 diamants]", GOSSIP_SENDER_MAIN, DESC_SPELL_WAR_5);
}

if(player->HasSpell(12975))
{
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_MONEY_BAG, "{|cFF00FFEBConnu|r} Dernier rempart [12 diamants]", GOSSIP_SENDER_MAIN, DESC_SPELL_WAR_6);
}
else
{
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_MONEY_BAG, "Dernier rempart [12 diamants]", GOSSIP_SENDER_MAIN, DESC_SPELL_WAR_6);
}

if(player->HasSpell(29144))
{
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_MONEY_BAG, "{|cFF00FFEBConnu|r} Vitalité [25 diamants]", GOSSIP_SENDER_MAIN, DESC_SPELL_WAR_7);
}
else
{
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_MONEY_BAG, "Vitalité [25 diamants]", GOSSIP_SENDER_MAIN, DESC_SPELL_WAR_7);
}

if(player->HasSpell(16492))
{
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_MONEY_BAG, "{|cFF00FFEBConnu|r} Folie sanguinaire [25 diamants]", GOSSIP_SENDER_MAIN, DESC_SPELL_WAR_8);
}
else
{
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_MONEY_BAG, "Folie sanguinaire [25 diamants]", GOSSIP_SENDER_MAIN, DESC_SPELL_WAR_8);
}

if(player->HasSpell(29859))
{
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_MONEY_BAG, "{|cFF00FFEBConnu|r} Frénésie sanglante [50 diamants]", GOSSIP_SENDER_MAIN, DESC_SPELL_WAR_9);
}
else
{
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_MONEY_BAG, "Frénésie sanglante [50 diamants]", GOSSIP_SENDER_MAIN, DESC_SPELL_WAR_9);
}



player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "<- Menu Spell de combat", GOSSIP_SENDER_MAIN, MENU_SPELL_COMBAT);
player->SEND_GOSSIP_MENU(DEFAULT_GOSSIP_MESSAGE, creature->GetGUID());
return true;
break;

/* FIN WAR */

/* SPELL WAR */

case DESC_SPELL_WAR_1:

ChatHandler(player->GetSession()).PSendSysMessage("Poigne du titan: Vous permet de manier les haches, les masses et les épées à deux mains d'une seule main. Lorsque vous portez une arme à deux mains d'une seule main, les dégâts physiques que vous infligez sont réduits de 10%%");
player->PlayerTalkClass->ClearMenus();

if(player->HasSpell(46917))
{
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_TALK, "Remboursement de ce spell pour [8 diamants] ?", GOSSIP_SENDER_MAIN, REMBOURSER_SPELL_WAR_1);
}
else
{
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_TALK, "Apprendre ce spell pour [12 diamants] ?", GOSSIP_SENDER_MAIN, SPELL_WAR_1);
}

player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "<- Retour au spell Guerrier", GOSSIP_SENDER_MAIN, SPELLMENU_WAR);

player->SEND_GOSSIP_MENU(DEFAULT_GOSSIP_MESSAGE, creature->GetGUID());
return true;
break;

case REMBOURSER_SPELL_WAR_1:

if(player->getClass() == CLASS_WARRIOR)
{
creature->MonsterWhisper(MESSAGE_CLASSE_RESTRICTION, player->GetGUID());
player->CLOSE_GOSSIP_MENU();
}
if(player->HasSpell(46917))
{
creature->MonsterWhisper(MESSAGE_SPELL_REMBOURSER, player->GetGUID());
player->CLOSE_GOSSIP_MENU();
player->removeSpell(46917, false);
player->AddItem(MONNAIE_ID, REMBOURSER_PRIX_SPELL_2);
player->SaveToDB();
CharacterDatabase.DirectPExecute("DELETE FROM achat_spell WHERE (spellid, pseudo) = (46917, '%s')", player->GetName().c_str());
CharacterDatabase.DirectPExecute("INSERT INTO remboursement_spell (id, spellid, prix, guidID, pseudo) VALUES ('', '46917', '8', '%u', '%s')", player->GetGUIDLow(), player->GetName().c_str());
CharacterDatabase.DirectPExecute("UPDATE characters SET total_spell = total_spell - 1 WHERE name = '%s'", player->GetName().c_str());
CharacterDatabase.DirectPExecute("UPDATE characters SET total_spell_combat = total_spell_combat - 1 WHERE name = '%s'", player->GetName().c_str());
CharacterDatabase.DirectPExecute("UPDATE characters SET total_diamants_rembourser = total_diamants_rembourser + 8 WHERE name = '%s'", player->GetName().c_str());
CharacterDatabase.DirectPExecute("UPDATE characters SET total_spell_rembourser = total_spell_rembourser + 1 WHERE name = '%s'", player->GetName().c_str());
CharacterDatabase.DirectPExecute("UPDATE characters SET total_spell_combat_rembourser = total_spell_combat_rembourser + 1 WHERE name = '%s'", player->GetName().c_str());
}
else
{
player->CLOSE_GOSSIP_MENU();
creature->MonsterWhisper(MESSAGE_SPELL_MANQUANTE, player->GetGUID());

}
break;

case SPELL_WAR_1:
if (player->HasItemCount(MONNAIE_ID, PRIX_SPELL_2, true))
{
if(player->HasSpell(46917))
{
creature->MonsterWhisper(MESSAGE_SPELL_POSSEDER, player->GetGUID());
player->CLOSE_GOSSIP_MENU();
}
else if(player->getClass() == CLASS_WARRIOR)
{
creature->MonsterWhisper(MESSAGE_CLASSE_RESTRICTION, player->GetGUID());
player->CLOSE_GOSSIP_MENU();
}
else
{
player->CLOSE_GOSSIP_MENU();
player->learnSpell(46917, false);
player->DestroyItemCount(MONNAIE_ID, PRIX_SPELL_2, true);
player->SaveToDB();
CharacterDatabase.DirectPExecute("INSERT INTO achat_spell (id, spellid, prix, guidID, pseudo) VALUES ('', '46917', '12', '%u', '%s')", player->GetGUIDLow(), player->GetName().c_str());
CharacterDatabase.DirectPExecute("UPDATE characters SET total_spell = total_spell + 1 WHERE name = '%s'", player->GetName().c_str());
CharacterDatabase.DirectPExecute("UPDATE characters SET total_spell_combat = total_spell_combat + 1 WHERE name = '%s'", player->GetName().c_str());
CharacterDatabase.DirectPExecute("UPDATE characters SET total_diamants_depenser = total_diamants_depenser + 12 WHERE name = '%s'", player->GetName().c_str());
creature->MonsterWhisper(MESSAGE_SPELL_AJOUTE, player->GetGUID());
}
}
else
{
player->CLOSE_GOSSIP_MENU();
creature->MonsterWhisper(MESSAGE_MONNAIE_MANQUANTE, player->GetGUID());

}
break;

case DESC_SPELL_WAR_2:

ChatHandler(player->GetSession()).PSendSysMessage("Rafale: Lorsque vous infligez un coup critique en mêlée, augmente votre vitesse d'attaque de 25%% pour les 3 prochains coups.");
player->PlayerTalkClass->ClearMenus();

if(player->HasSpell(12974))
{
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_TALK, "Remboursement de ce spell pour [5 diamants] ?", GOSSIP_SENDER_MAIN, REMBOURSER_SPELL_WAR_2);
}
else
{
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_TALK, "Apprendre ce spell pour [7 diamants] ?", GOSSIP_SENDER_MAIN, SPELL_WAR_2);
}

player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "<- Retour au spell Guerrier", GOSSIP_SENDER_MAIN, SPELLMENU_WAR);

player->SEND_GOSSIP_MENU(DEFAULT_GOSSIP_MESSAGE, creature->GetGUID());
return true;
break;

case REMBOURSER_SPELL_WAR_2:

if(player->getClass() == CLASS_WARRIOR)
{
creature->MonsterWhisper(MESSAGE_CLASSE_RESTRICTION, player->GetGUID());
player->CLOSE_GOSSIP_MENU();
}
if(player->HasSpell(12974))
{
creature->MonsterWhisper(MESSAGE_SPELL_REMBOURSER, player->GetGUID());
player->CLOSE_GOSSIP_MENU();
player->removeSpell(12974, false);
player->AddItem(MONNAIE_ID, REMBOURSER_PRIX_SPELL_1);
player->SaveToDB();
CharacterDatabase.DirectPExecute("DELETE FROM achat_spell WHERE (spellid, pseudo) = (12974, '%s')", player->GetName().c_str());
CharacterDatabase.DirectPExecute("INSERT INTO remboursement_spell (id, spellid, prix, guidID, pseudo) VALUES ('', '12974', '5', '%u', '%s')", player->GetGUIDLow(), player->GetName().c_str());
CharacterDatabase.DirectPExecute("UPDATE characters SET total_spell = total_spell - 1 WHERE name = '%s'", player->GetName().c_str());
CharacterDatabase.DirectPExecute("UPDATE characters SET total_spell_combat = total_spell_combat - 1 WHERE name = '%s'", player->GetName().c_str());
CharacterDatabase.DirectPExecute("UPDATE characters SET total_diamants_rembourser = total_diamants_rembourser + 5 WHERE name = '%s'", player->GetName().c_str());
CharacterDatabase.DirectPExecute("UPDATE characters SET total_spell_rembourser = total_spell_rembourser + 1 WHERE name = '%s'", player->GetName().c_str());
CharacterDatabase.DirectPExecute("UPDATE characters SET total_spell_combat_rembourser = total_spell_combat_rembourser + 1 WHERE name = '%s'", player->GetName().c_str());
}
else
{
player->CLOSE_GOSSIP_MENU();
creature->MonsterWhisper(MESSAGE_SPELL_MANQUANTE, player->GetGUID());

}
break;

case SPELL_WAR_2:
if (player->HasItemCount(MONNAIE_ID, PRIX_SPELL_1, true))
{
if(player->HasSpell(12974))
{
creature->MonsterWhisper(MESSAGE_SPELL_POSSEDER, player->GetGUID());
player->CLOSE_GOSSIP_MENU();
}
else if(player->getClass() == CLASS_WARRIOR)
{
creature->MonsterWhisper(MESSAGE_CLASSE_RESTRICTION, player->GetGUID());
player->CLOSE_GOSSIP_MENU();
}
else
{
player->CLOSE_GOSSIP_MENU();
player->learnSpell(12974, false);
player->DestroyItemCount(MONNAIE_ID, PRIX_SPELL_1, true);
player->SaveToDB();
CharacterDatabase.DirectPExecute("INSERT INTO achat_spell (id, spellid, prix, guidID, pseudo) VALUES ('', '12974', '7', '%u', '%s')", player->GetGUIDLow(), player->GetName().c_str());
CharacterDatabase.DirectPExecute("UPDATE characters SET total_spell = total_spell + 1 WHERE name = '%s'", player->GetName().c_str());
CharacterDatabase.DirectPExecute("UPDATE characters SET total_spell_combat = total_spell_combat + 1 WHERE name = '%s'", player->GetName().c_str());
CharacterDatabase.DirectPExecute("UPDATE characters SET total_diamants_depenser = total_diamants_depenser + 7 WHERE name = '%s'", player->GetName().c_str());
creature->MonsterWhisper(MESSAGE_SPELL_AJOUTE, player->GetGUID());
}
}
else
{
player->CLOSE_GOSSIP_MENU();
creature->MonsterWhisper(MESSAGE_MONNAIE_MANQUANTE, player->GetGUID());
}
break;

case DESC_SPELL_WAR_3:

ChatHandler(player->GetSession()).PSendSysMessage("Second souffle: Chaque fois que vous êtes atteint par un effet d'étourdissement ou d'immobilisation, vous gagnez 20 points de rage et 10%% de votre total de points de vie en 10 sec.");
player->PlayerTalkClass->ClearMenus();

if(player->HasSpell(29838))
{
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_TALK, "Remboursement de ce spell pour [8 diamants] ?", GOSSIP_SENDER_MAIN, REMBOURSER_SPELL_WAR_3);
}
else
{
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_TALK, "Apprendre ce spell pour [12 diamants] ?", GOSSIP_SENDER_MAIN, SPELL_WAR_3);
}

player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "<- Retour au spell Guerrier", GOSSIP_SENDER_MAIN, SPELLMENU_WAR);

player->SEND_GOSSIP_MENU(DEFAULT_GOSSIP_MESSAGE, creature->GetGUID());
return true;
break;

case REMBOURSER_SPELL_WAR_3:

if(player->getClass() == CLASS_WARRIOR)
{
creature->MonsterWhisper(MESSAGE_CLASSE_RESTRICTION, player->GetGUID());
player->CLOSE_GOSSIP_MENU();
}
if(player->HasSpell(29838))
{
creature->MonsterWhisper(MESSAGE_SPELL_REMBOURSER, player->GetGUID());
player->CLOSE_GOSSIP_MENU();
player->removeSpell(29838, false);
player->AddItem(MONNAIE_ID, REMBOURSER_PRIX_SPELL_2);
player->SaveToDB();
CharacterDatabase.DirectPExecute("DELETE FROM achat_spell WHERE (spellid, pseudo) = (29838, '%s')", player->GetName().c_str());
CharacterDatabase.DirectPExecute("INSERT INTO remboursement_spell (id, spellid, prix, guidID, pseudo) VALUES ('', '29838', '8', '%u', '%s')", player->GetGUIDLow(), player->GetName().c_str());
CharacterDatabase.DirectPExecute("UPDATE characters SET total_spell = total_spell - 1 WHERE name = '%s'", player->GetName().c_str());
CharacterDatabase.DirectPExecute("UPDATE characters SET total_spell_combat = total_spell_combat - 1 WHERE name = '%s'", player->GetName().c_str());
CharacterDatabase.DirectPExecute("UPDATE characters SET total_diamants_rembourser = total_diamants_rembourser + 8 WHERE name = '%s'", player->GetName().c_str());
CharacterDatabase.DirectPExecute("UPDATE characters SET total_spell_rembourser = total_spell_rembourser + 1 WHERE name = '%s'", player->GetName().c_str());
CharacterDatabase.DirectPExecute("UPDATE characters SET total_spell_combat_rembourser = total_spell_combat_rembourser + 1 WHERE name = '%s'", player->GetName().c_str());
}
else
{
player->CLOSE_GOSSIP_MENU();
creature->MonsterWhisper(MESSAGE_SPELL_MANQUANTE, player->GetGUID());

}
break;

case SPELL_WAR_3:
if (player->HasItemCount(MONNAIE_ID, PRIX_SPELL_2, true))
{
if(player->HasSpell(29838))
{
creature->MonsterWhisper(MESSAGE_SPELL_POSSEDER, player->GetGUID());
player->CLOSE_GOSSIP_MENU();
}
else if(player->getClass() == CLASS_WARRIOR)
{
creature->MonsterWhisper(MESSAGE_CLASSE_RESTRICTION, player->GetGUID());
player->CLOSE_GOSSIP_MENU();
}
else
{
player->CLOSE_GOSSIP_MENU();
player->learnSpell(29838, false);
player->DestroyItemCount(MONNAIE_ID, PRIX_SPELL_2, true);
player->SaveToDB();
CharacterDatabase.DirectPExecute("INSERT INTO achat_spell (id, spellid, prix, guidID, pseudo) VALUES ('', '29838', '12', '%u', '%s')", player->GetGUIDLow(), player->GetName().c_str());
CharacterDatabase.DirectPExecute("UPDATE characters SET total_spell = total_spell + 1 WHERE name = '%s'", player->GetName().c_str());
CharacterDatabase.DirectPExecute("UPDATE characters SET total_spell_combat = total_spell_combat + 1 WHERE name = '%s'", player->GetName().c_str());
CharacterDatabase.DirectPExecute("UPDATE characters SET total_diamants_depenser = total_diamants_depenser + 12 WHERE name = '%s'", player->GetName().c_str());
creature->MonsterWhisper(MESSAGE_SPELL_AJOUTE, player->GetGUID());
}
}
else
{
player->CLOSE_GOSSIP_MENU();
creature->MonsterWhisper(MESSAGE_MONNAIE_MANQUANTE, player->GetGUID());
}
break;

case DESC_SPELL_WAR_4:

ChatHandler(player->GetSession()).PSendSysMessage("Blessures profondes: Vos coups critiques font saigner l'adversaire et lui infligent 48%% des points de dégâts moyens de votre arme de mêmlée en 6 sec.");
player->PlayerTalkClass->ClearMenus();

if(player->HasSpell(12867))
{
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_TALK, "Remboursement de ce spell pour [8 diamants] ?", GOSSIP_SENDER_MAIN, REMBOURSER_SPELL_WAR_4);
}
else
{
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_TALK, "Apprendre ce spell pour [12 diamants] ?", GOSSIP_SENDER_MAIN, SPELL_WAR_4);
}

player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "<- Retour au spell Guerrier", GOSSIP_SENDER_MAIN, SPELLMENU_WAR);

player->SEND_GOSSIP_MENU(DEFAULT_GOSSIP_MESSAGE, creature->GetGUID());
return true;
break;

case REMBOURSER_SPELL_WAR_4:

if(player->getClass() == CLASS_WARRIOR)
{
creature->MonsterWhisper(MESSAGE_CLASSE_RESTRICTION, player->GetGUID());
player->CLOSE_GOSSIP_MENU();
}
if(player->HasSpell(12867))
{
creature->MonsterWhisper(MESSAGE_SPELL_REMBOURSER, player->GetGUID());
player->CLOSE_GOSSIP_MENU();
player->removeSpell(12867, false);
player->AddItem(MONNAIE_ID, REMBOURSER_PRIX_SPELL_2);
player->SaveToDB();
CharacterDatabase.DirectPExecute("DELETE FROM achat_spell WHERE (spellid, pseudo) = (12867, '%s')", player->GetName().c_str());
CharacterDatabase.DirectPExecute("INSERT INTO remboursement_spell (id, spellid, prix, guidID, pseudo) VALUES ('', '12867', '8', '%u', '%s')", player->GetGUIDLow(), player->GetName().c_str());
CharacterDatabase.DirectPExecute("UPDATE characters SET total_spell = total_spell - 1 WHERE name = '%s'", player->GetName().c_str());
CharacterDatabase.DirectPExecute("UPDATE characters SET total_spell_combat = total_spell_combat - 1 WHERE name = '%s'", player->GetName().c_str());
CharacterDatabase.DirectPExecute("UPDATE characters SET total_diamants_rembourser = total_diamants_rembourser + 8 WHERE name = '%s'", player->GetName().c_str());
CharacterDatabase.DirectPExecute("UPDATE characters SET total_spell_rembourser = total_spell_rembourser + 1 WHERE name = '%s'", player->GetName().c_str());
CharacterDatabase.DirectPExecute("UPDATE characters SET total_spell_combat_rembourser = total_spell_combat_rembourser + 1 WHERE name = '%s'", player->GetName().c_str());
}
else
{
player->CLOSE_GOSSIP_MENU();
creature->MonsterWhisper(MESSAGE_SPELL_MANQUANTE, player->GetGUID());

}
break;

case SPELL_WAR_4:
if (player->HasItemCount(MONNAIE_ID, PRIX_SPELL_2, true))
{
if(player->HasSpell(12867))
{
creature->MonsterWhisper(MESSAGE_SPELL_POSSEDER, player->GetGUID());
player->CLOSE_GOSSIP_MENU();
}
else if(player->getClass() == CLASS_WARRIOR)
{
creature->MonsterWhisper(MESSAGE_CLASSE_RESTRICTION, player->GetGUID());
player->CLOSE_GOSSIP_MENU();
}
else
{
player->CLOSE_GOSSIP_MENU();
player->learnSpell(12867, false);
player->DestroyItemCount(MONNAIE_ID, PRIX_SPELL_2, true);
player->SaveToDB();
CharacterDatabase.DirectPExecute("INSERT INTO achat_spell (id, spellid, prix, guidID, pseudo) VALUES ('', '12867', '12', '%u', '%s')", player->GetGUIDLow(), player->GetName().c_str());
CharacterDatabase.DirectPExecute("UPDATE characters SET total_spell = total_spell + 1 WHERE name = '%s'", player->GetName().c_str());
CharacterDatabase.DirectPExecute("UPDATE characters SET total_spell_combat = total_spell_combat + 1 WHERE name = '%s'", player->GetName().c_str());
CharacterDatabase.DirectPExecute("UPDATE characters SET total_diamants_depenser = total_diamants_depenser + 12 WHERE name = '%s'", player->GetName().c_str());
creature->MonsterWhisper(MESSAGE_SPELL_AJOUTE, player->GetGUID());
}
}
else
{
player->CLOSE_GOSSIP_MENU();
creature->MonsterWhisper(MESSAGE_MONNAIE_MANQUANTE, player->GetGUID());
}
break;

case DESC_SPELL_WAR_5:

ChatHandler(player->GetSession()).PSendSysMessage("Armé jusqu'aux dents: Augmente votre puissance d'attaque de 3 pour chaque tranche de 108 points de votre valeur d'armure.");
player->PlayerTalkClass->ClearMenus();

if(player->HasSpell(61222))
{
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_TALK, "Remboursement de ce spell pour [18 diamants] ?", GOSSIP_SENDER_MAIN, REMBOURSER_SPELL_WAR_5);
}
else
{
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_TALK, "Apprendre ce spell pour [25 diamants] ?", GOSSIP_SENDER_MAIN, SPELL_WAR_5);
}

player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "<- Retour au spell Guerrier", GOSSIP_SENDER_MAIN, SPELLMENU_WAR);

player->SEND_GOSSIP_MENU(DEFAULT_GOSSIP_MESSAGE, creature->GetGUID());
return true;
break;

case REMBOURSER_SPELL_WAR_5:

if(player->getClass() == CLASS_WARRIOR)
{
creature->MonsterWhisper(MESSAGE_CLASSE_RESTRICTION, player->GetGUID());
player->CLOSE_GOSSIP_MENU();
}
if(player->HasSpell(61222))
{
creature->MonsterWhisper(MESSAGE_SPELL_REMBOURSER, player->GetGUID());
player->CLOSE_GOSSIP_MENU();
player->removeSpell(61222, false);
player->AddItem(MONNAIE_ID, REMBOURSER_PRIX_SPELL_3);
player->SaveToDB();
CharacterDatabase.DirectPExecute("DELETE FROM achat_spell WHERE (spellid, pseudo) = (61222, '%s')", player->GetName().c_str());
CharacterDatabase.DirectPExecute("INSERT INTO remboursement_spell (id, spellid, prix, guidID, pseudo) VALUES ('', '61222', '18', '%u', '%s')", player->GetGUIDLow(), player->GetName().c_str());
CharacterDatabase.DirectPExecute("UPDATE characters SET total_spell = total_spell - 1 WHERE name = '%s'", player->GetName().c_str());
CharacterDatabase.DirectPExecute("UPDATE characters SET total_spell_combat = total_spell_combat - 1 WHERE name = '%s'", player->GetName().c_str());
CharacterDatabase.DirectPExecute("UPDATE characters SET total_diamants_rembourser = total_diamants_rembourser + 18 WHERE name = '%s'", player->GetName().c_str());
CharacterDatabase.DirectPExecute("UPDATE characters SET total_spell_rembourser = total_spell_rembourser + 1 WHERE name = '%s'", player->GetName().c_str());
CharacterDatabase.DirectPExecute("UPDATE characters SET total_spell_combat_rembourser = total_spell_combat_rembourser + 1 WHERE name = '%s'", player->GetName().c_str());
}
else
{
player->CLOSE_GOSSIP_MENU();
creature->MonsterWhisper(MESSAGE_SPELL_MANQUANTE, player->GetGUID());

}
break;

case SPELL_WAR_5:
if (player->HasItemCount(MONNAIE_ID, PRIX_SPELL_3, true))
{
if(player->HasSpell(61222))
{
creature->MonsterWhisper(MESSAGE_SPELL_POSSEDER, player->GetGUID());
player->CLOSE_GOSSIP_MENU();
}
else if(player->getClass() == CLASS_WARRIOR)
{
creature->MonsterWhisper(MESSAGE_CLASSE_RESTRICTION, player->GetGUID());
player->CLOSE_GOSSIP_MENU();
}
else
{
player->CLOSE_GOSSIP_MENU();
player->learnSpell(61222, false);
player->DestroyItemCount(MONNAIE_ID, PRIX_SPELL_3, true);
player->SaveToDB();
CharacterDatabase.DirectPExecute("INSERT INTO achat_spell (id, spellid, prix, guidID, pseudo) VALUES ('', '61222', '25', '%u', '%s')", player->GetGUIDLow(), player->GetName().c_str());
CharacterDatabase.DirectPExecute("UPDATE characters SET total_spell = total_spell + 1 WHERE name = '%s'", player->GetName().c_str());
CharacterDatabase.DirectPExecute("UPDATE characters SET total_spell_combat = total_spell_combat + 1 WHERE name = '%s'", player->GetName().c_str());
CharacterDatabase.DirectPExecute("UPDATE characters SET total_diamants_depenser = total_diamants_depenser + 25 WHERE name = '%s'", player->GetName().c_str());
creature->MonsterWhisper(MESSAGE_SPELL_AJOUTE, player->GetGUID());
}
}
else
{
player->CLOSE_GOSSIP_MENU();
creature->MonsterWhisper(MESSAGE_MONNAIE_MANQUANTE, player->GetGUID());
}
break;

case DESC_SPELL_WAR_6:

ChatHandler(player->GetSession()).PSendSysMessage("Dernier rempart: Activée, cette technique vous confère temporairement 30%% de votre maximum de points de vie en plus pendant 20 sec. Lorsque l'effet expire, les points de vie sont perdus.");
player->PlayerTalkClass->ClearMenus();

if(player->HasSpell(12975))
{
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_TALK, "Remboursement de ce spell pour [8 diamants] ?", GOSSIP_SENDER_MAIN, REMBOURSER_SPELL_WAR_6);
}
else
{
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_TALK, "Apprendre ce spell pour [12 diamants] ?", GOSSIP_SENDER_MAIN, SPELL_WAR_6);
}

player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "<- Retour au spell Guerrier", GOSSIP_SENDER_MAIN, SPELLMENU_WAR);

player->SEND_GOSSIP_MENU(DEFAULT_GOSSIP_MESSAGE, creature->GetGUID());
return true;
break;

case REMBOURSER_SPELL_WAR_6:

if(player->getClass() == CLASS_WARRIOR)
{
creature->MonsterWhisper(MESSAGE_CLASSE_RESTRICTION, player->GetGUID());
player->CLOSE_GOSSIP_MENU();
}
if(player->HasSpell(12975))
{
creature->MonsterWhisper(MESSAGE_SPELL_REMBOURSER, player->GetGUID());
player->CLOSE_GOSSIP_MENU();
player->removeSpell(12975, false);
player->AddItem(MONNAIE_ID, REMBOURSER_PRIX_SPELL_2);
player->SaveToDB();
CharacterDatabase.DirectPExecute("DELETE FROM achat_spell WHERE (spellid, pseudo) = (12975, '%s')", player->GetName().c_str());
CharacterDatabase.DirectPExecute("INSERT INTO remboursement_spell (id, spellid, prix, guidID, pseudo) VALUES ('', '12975', '8', '%u', '%s')", player->GetGUIDLow(), player->GetName().c_str());
CharacterDatabase.DirectPExecute("UPDATE characters SET total_spell = total_spell - 1 WHERE name = '%s'", player->GetName().c_str());
CharacterDatabase.DirectPExecute("UPDATE characters SET total_spell_combat = total_spell_combat - 1 WHERE name = '%s'", player->GetName().c_str());
CharacterDatabase.DirectPExecute("UPDATE characters SET total_diamants_rembourser = total_diamants_rembourser + 8 WHERE name = '%s'", player->GetName().c_str());
CharacterDatabase.DirectPExecute("UPDATE characters SET total_spell_rembourser = total_spell_rembourser + 1 WHERE name = '%s'", player->GetName().c_str());
CharacterDatabase.DirectPExecute("UPDATE characters SET total_spell_combat_rembourser = total_spell_combat_rembourser + 1 WHERE name = '%s'", player->GetName().c_str());
}
else
{
player->CLOSE_GOSSIP_MENU();
creature->MonsterWhisper(MESSAGE_SPELL_MANQUANTE, player->GetGUID());

}
break;

case SPELL_WAR_6:
if (player->HasItemCount(MONNAIE_ID, PRIX_SPELL_2, true))
{
if(player->HasSpell(12975))
{
creature->MonsterWhisper(MESSAGE_SPELL_POSSEDER, player->GetGUID());
player->CLOSE_GOSSIP_MENU();
}
else if(player->getClass() == CLASS_WARRIOR)
{
creature->MonsterWhisper(MESSAGE_CLASSE_RESTRICTION, player->GetGUID());
player->CLOSE_GOSSIP_MENU();
}
else
{
player->CLOSE_GOSSIP_MENU();
player->learnSpell(12975, false);
player->DestroyItemCount(MONNAIE_ID, PRIX_SPELL_2, true);
player->SaveToDB();
CharacterDatabase.DirectPExecute("INSERT INTO achat_spell (id, spellid, prix, guidID, pseudo) VALUES ('', '12975', '12', '%u', '%s')", player->GetGUIDLow(), player->GetName().c_str());
CharacterDatabase.DirectPExecute("UPDATE characters

Retourner en haut WoW-Emu