Aujourd'hui, je décide de partager un script .cpp dont je me suis chargé de le traduire. L'auteur original est inconnu mais il à été mis à jour pour la Rev.53 par Estorn sur Ac-Web ( Sources ). Je l'ai traduit à 98.5%.
/* -------------------------------------------------------------------- Créé Par : ???? Mise à Jour Par : Estorn AC-Web Traduction Par : TosZ -------------------------------------------------------------------- */ #include "ScriptPCH.h" enum Enchants { ENCHANT_WEP_BLADE_WARD = 3869, ENCHANT_WEP_BLOOD_DRAINING = 3870, ENCHANT_WEP_BERSERKING = 3789, ENCHANT_WEP_ACCURACY = 3788, ENCHANT_WEP_AGILITY_1H = 1103, ENCHANT_WEP_AGILITY_2H = 2670, ENCHANT_WEP_SPIRIT = 3844, ENCHANT_WEP_BATTLEMASTER = 2675, ENCHANT_WEP_BLACK_MAGIC = 3790, ENCHANT_WEP_ICEBREAKER = 3239, ENCHANT_WEP_LIFEWARD = 3241, ENCHANT_WEP_MIGHTY_SPELL_POWER = 3834, // Une Main ENCHANT_WEP_GREATER_SPELL_POWER = 3854, // Deux Mains (staff) ENCHANT_WEP_MONGOOSE = 2673, ENCHANT_WEP_EXECUTIONER = 3225, ENCHANT_WEP_POTENCY = 3833, ENCHANT_WEP_TITANGUARD = 3851, ENCHANT_WEP_MASSACRE = 3827, ENCHANT_WEP_CINDERGLACIER = 3369, ENCHANT_WEP_LICHBANE = 3366, ENCHANT_WEP_RAZORICE = 3370, ENCHANT_WEP_SPELLBREAKING = 3595, ENCHANT_WEP_SPELLSHATTERING = 3367, ENCHANT_WEP_SWORDBREAKING = 3594, ENCHANT_WEP_SWORDSHATTERING = 3365, ENCHANT_WEP_FALLEN_CRUSADER = 3368, ENCHANT_WEP_NERUBIAN_CARAPACE = 3883, ENCHANT_WEP_STONESKIN_GARGOYLE = 3847, ENCHANT_WEP_TITANIUM_CHAIN = 3731, ENCHANT_SHIELD_DEFENSE = 1952, ENCHANT_SHIELD_INTELLECT = 1128, ENCHANT_SHIELD_MAJOR_STAMINA = 1071, ENCHANT_SHIELD_RESILIENCE = 3229, ENCHANT_SHIELD_TITANIUM_PLATING = 3849, ENCHANT_SHIELD_TITANIUM_SPIKE = 3748, ENCHANT_HEAD_BLISSFUL_MENDING = 3819, ENCHANT_HEAD_BURNING_MYSTERIES = 3820, ENCHANT_HEAD_DOMINANCE = 3796, ENCHANT_HEAD_SAVAGE_GLADIATOR = 3842, ENCHANT_HEAD_STALWART_PROTECTOR = 3818, ENCHANT_HEAD_TORMENT = 3817, ENCHANT_HEAD_TRIUMPH = 3795, ENCHANT_SHOULDER_MASTERS_AXE = 3835, ENCHANT_SHOULDER_MASTERS_CRAG = 3836, ENCHANT_SHOULDER_MASTERS_PINNACLE = 3837, ENCHANT_SHOULDER_MASTERS_STORM = 3838, ENCHANT_SHOULDER_GREATER_AXE = 3808, ENCHANT_SHOULDER_GREATER_CRAG = 3809, ENCHANT_SHOULDER_GREATER_GLADIATOR = 3852, ENCHANT_SHOULDER_GREATER_PINNACLE = 3811, ENCHANT_SHOULDER_GREATER_STORM = 3810, ENCHANT_SHOULDER_DOMINANCE = 3794, ENCHANT_SHOULDER_TRIUMPH = 3793, ENCHANT_CLOAK_DARKGLOW_EMBROIDERY = 3728, ENCHANT_CLOAK_SWORDGUARD_EMBROIDERY = 3730, ENCHANT_CLOAK_LIGHTWEAVE_EMBROIDERY = 3722, ENCHANT_CLOAK_FLEXWEAVE_UNDERLAY = 3605, ENCHANT_CLOAK_SPRINGY_ARACHNOWEAVE = 3859, ENCHANT_CLOAK_WISDOM = 3296, ENCHANT_CLOAK_TITANWEAVE = 1951, ENCHANT_CLOAK_SPELL_PIERCING = 3243, ENCHANT_CLOAK_SHADOW_ARMOR = 3256, ENCHANT_CLOAK_MIGHTY_ARMOR = 3294, ENCHANT_CLOAK_MAJOR_AGILITY = 1099, ENCHANT_CLOAK_GREATER_SPEED = 3831, ENCHANT_CHEST_EXCEPTIONAL_MANA = 3233, ENCHANT_CHEST_GREATER_MANA_RESTO = 3533, ENCHANT_CHEST_EXCEPTIONAL_RESILIENCE= 3245, ENCHANT_CHEST_SUPER_HEALTH = 3297, ENCHANT_CHEST_ALL_STATS = 3832, ENCHANT_BRACER_GREATER_ASSAULT = 3845, ENCHANT_BRACER_EXCEPTIONAL_INTELLECT= 3458, ENCHANT_BRACER_MAJOR_SPIRIT = 1147, ENCHANT_BRACER_EXPERTISE = 3231, ENCHANT_BRACER_GREATER_STATS = 2661, ENCHANT_BRACER_SUPERIOR_SPELLPOWER = 2332, ENCHANT_BRACER_MAJOR_STAMINA = 3850, ENCHANT_BRACER_FUR_LINING_AP = 3756, ENCHANT_BRACER_FUR_LINING_STAMINA = 3757, ENCHANT_BRACER_FUR_LINING_SP = 3758, ENCHANT_BRACER_ARCANE_RESIST = 3763, ENCHANT_BRACER_NATURE_RESIST = 3762, ENCHANT_BRACER_SHADOW_RESIST = 3761, ENCHANT_BRACER_FROST_RESIST = 3760, ENCHANT_BRACER_FIRE_RESIST = 3759, ENCHANT_BRACER_SOCKET_BRACER = 3717, ENCHANT_GLOVES_CRUSHER = 1603, ENCHANT_GLOVES_EXPERTISE = -3231, ENCHANT_GLOVES_PRECISION = 3234, ENCHANT_GLOVES_GREATER_ASSAULT = 1603, ENCHANT_GLOVES_MAJOR_AGILITY = 1097, ENCHANT_GLOVES_EXCEPTIONAL_SPELLPOWER = 2330, ENCHANT_GLOVES_ARMSMAN = 3253, ENCHANT_GLOVES_SOCKET_GLOVES = 3723, ENCHANT_GLOVES_PYROROCKET = 3603, ENCHANT_GLOVES_HYPERSPEED_ACCELERATORS = 3604, ENCHANT_BELT_ETERNAL_BELT_BUCKLE = 3729, ENCHANT_BELT_FRAG_BELT = 3601, ENCHANT_LEGS_FROSTHIDE_ARMOR = 3822, ENCHANT_LEGS_ICESCALE_ARMOR = 3823, ENCHANT_LEGS_EARTHEN_ARMOR = 3853, ENCHANT_LEGS_SAPPHIRE_SPELLTHREAD = 3873, ENCHANT_LEGS_BRILLIANT_SPELLTHREAD = 3872, ENCHANT_BOOTS_TUSKARRS_VITALITY = 3232, ENCHANT_BOOTS_ICEWALKER = 2599, ENCHANT_BOOTS_GREATER_ASSAULT = 1597, ENCHANT_BOOTS_GREATER_SPIRIT = 528, ENCHANT_BOOTS_GREATER_FORTITUDE = 3259, ENCHANT_BOOTS_SUPERIOR_AGILITY = 983, ENCHANT_BOOTS_NITRO_BOOSTS = 3606, ENCHANT_RING_STAMINA = 3791, ENCHANT_RING_GREATER_SPELLPOWER = 3840, ENCHANT_RING_ASSAULT = 3839, ENCHANT_RANGED_HEARTSEEKER_SCOPE = 3608, ENCHANT_RANGED_SUN_SCOPE = 3607 }; Item* PlayerAddItem(Player* player, uint32 item_id) { uint8 count = 1; uint32 noSpaceForCount = 0; ItemPosCountVec dest; InventoryResult msg = player->CanStoreNewItem(NULL_BAG, NULL_SLOT, dest, item_id, count, &noSpaceForCount); if (msg != EQUIP_ERR_OK) count -= noSpaceForCount; Item* item = player->StoreNewItem(dest, item_id, true, Item::GenerateItemRandomPropertyId(item_id)); if (noSpaceForCount > 0) { player->GetSession()->SendNotification("S'il vous plaît, faîtes de la place dans votre " "premier sac."); return NULL; } return item; } void EnchantWithItem(Player* player, uint32 item_id, Item* target) { Item* item = PlayerAddItem(player, item_id); SpellCastTargets* targets = new SpellCastTargets(); targets->SetItemTarget(target); player->CastItemUseSpell(item, *targets, 1, 0); } void EnchantWithSpell(Player* player, uint32 spell_id, Item* item) { SpellCastTargets* targets = new SpellCastTargets(); targets->SetItemTarget(item); player->CastSpell(*targets, sSpellMgr->GetSpellInfo(spell_id), NULL, TRIGGERED_IGNORE_POWER_AND_REAGENT_COST); } void Enchant(Player* player, Creature* creature, Item* item, uint32 enchantid) { if (!item) { player->GetSession()->SendNotification("S'il vous plaît, équipez vous d'abord d'un item."); return; } uint32 item_id = 0; switch (enchantid) { case ENCHANT_WEP_GREATER_SPELL_POWER: case ENCHANT_WEP_AGILITY_2H: case ENCHANT_WEP_MASSACRE: if (item->GetTemplate()->InventoryType != INVTYPE_2HWEAPON) { creature->MonsterWhisper("Ce n'est pas une arme à deux mains", player, false); return; } break; case ENCHANT_SHIELD_DEFENSE: case ENCHANT_SHIELD_INTELLECT: case ENCHANT_SHIELD_MAJOR_STAMINA: case ENCHANT_SHIELD_RESILIENCE: case ENCHANT_SHIELD_TITANIUM_PLATING: case ENCHANT_SHIELD_TITANIUM_SPIKE: if (item->GetTemplate()->InventoryType != INVTYPE_SHIELD) { creature->MonsterWhisper("Ce n'est pas un bouclier", player, false); return; } break; case ENCHANT_RANGED_HEARTSEEKER_SCOPE: case ENCHANT_RANGED_SUN_SCOPE: if (item->GetTemplate()->InventoryType != INVTYPE_RANGED && item->GetTemplate()->InventoryType != INVTYPE_RANGEDRIGHT) { creature->MonsterWhisper("Ce n'est pas une arme à distance", player, false); return; } break; default: break; } player->ApplyEnchantment(item, PERM_ENCHANTMENT_SLOT, false); item->ClearEnchantment(PERM_ENCHANTMENT_SLOT); item->SetEnchantment(PERM_ENCHANTMENT_SLOT, enchantid, 0, 0); player->ApplyEnchantment(item, PERM_ENCHANTMENT_SLOT, true); switch (enchantid) { case ENCHANT_BELT_ETERNAL_BELT_BUCKLE: EnchantWithItem(player, 41611, item); break; case ENCHANT_BRACER_SOCKET_BRACER: PlayerAddItem(player, 5956); // Marteau de Forgeron EnchantWithSpell(player, 55628, item); player->DestroyItemCount(5956, -1, true, false); break; case ENCHANT_GLOVES_SOCKET_GLOVES: PlayerAddItem(player, 5956); // Marteau de Forgeron EnchantWithSpell(player, 55641, item); player->DestroyItemCount(5956, -1, true, false); break; } const char* item_name = item->GetTemplate()->Name1.c_str(); char* message; player->GetSession()->SendNotification("|cff0000FF%s |cffFF0000Enchanté avec succès !", item->GetTemplate()->Name1.c_str()); } class npc_enchantment : public CreatureScript { public: npc_enchantment() : CreatureScript("npc_enchantment") { } int selected_enchant; bool OnGossipHello(Player* player, Creature* creature) { ShowMainMenu(player, creature); return true; } void ShowMainMenu(Player* player, Creature* creature) { player->PlayerTalkClass->ClearMenus(); player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "[Enchanter une Arme]", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1); player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "[Enchanter une Arme à Deux Mains]", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 2); player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "[Enchanter une Arme à Distance]", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 13); player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "[Enchanter Bouclier]", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 3); player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "[Enchanter Tête]", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 4); player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "[Enchanter Epaules]", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 5); player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "[Enchanter Torse]", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 6); player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "[Enchanter Cape]", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 7); player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "[Enchant Brassards]", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 8); player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "[Enchanter Gants]", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 9); player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "[Eternal Belt Buckle]", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 10); player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "[Enchanter Jambes]", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 11); player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "[Enchanter Pied]", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 12); if (player->HasSkill(SKILL_ENCHANTING) && player->GetSkillValue(SKILL_ENCHANTING) >= 450) player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Enchanter Anneaux", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 14); player->SEND_GOSSIP_MENU(1, creature->GetGUID()); } void Show1HWeaponMenu(Player* player, Creature* creature) { player->PlayerTalkClass->ClearMenus(); if (player->getClass() == CLASS_DEATH_KNIGHT) { player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Rune de Cendreglace", GOSSIP_SENDER_MAIN, ENCHANT_WEP_CINDERGLACIER); player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Rune de Lichmort", GOSSIP_SENDER_MAIN, ENCHANT_WEP_LICHBANE); player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Rune de Trancheglace", GOSSIP_SENDER_MAIN, ENCHANT_WEP_RAZORICE); player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Rune de Brise-sort", GOSSIP_SENDER_MAIN, ENCHANT_WEP_SPELLBREAKING); player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Rune de Brise-épée", GOSSIP_SENDER_MAIN, ENCHANT_WEP_SWORDBREAKING); player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Rune du Croisé déchu", GOSSIP_SENDER_MAIN, ENCHANT_WEP_FALLEN_CRUSADER); player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Rune de la carapace nérubienne", GOSSIP_SENDER_MAIN, ENCHANT_WEP_NERUBIAN_CARAPACE); } if (player->HasSkill(SKILL_ENCHANTING) && player->GetSkillValue(SKILL_ENCHANTING) >= 450) { player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Garde lame", GOSSIP_SENDER_MAIN, ENCHANT_WEP_BLADE_WARD); player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Drain de Sang", GOSSIP_SENDER_MAIN, ENCHANT_WEP_BLOOD_DRAINING); } player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Précision -- 25 de Score de toucher + 25 de Score de coup critique", GOSSIP_SENDER_MAIN, ENCHANT_WEP_ACCURACY); player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Magie Noire -- 250 de Hâte des sorts", GOSSIP_SENDER_MAIN, ENCHANT_WEP_BLACK_MAGIC); player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Maître de Guerre -- Plus de chance de guérir", GOSSIP_SENDER_MAIN, ENCHANT_WEP_BATTLEMASTER); player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Berserker -- 400 de Puissance d'attaque", GOSSIP_SENDER_MAIN, ENCHANT_WEP_BERSERKING); player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Agilité exceptionnelle -- 26 d'Agilité", GOSSIP_SENDER_MAIN, ENCHANT_WEP_AGILITY_1H); player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Esprit exceptionnelle -- 45 d'Esprit", GOSSIP_SENDER_MAIN, ENCHANT_WEP_SPIRIT); player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Bourreau -- 120 Score de coup critique", GOSSIP_SENDER_MAIN, ENCHANT_WEP_EXECUTIONER); player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Brise-Glace -- Infilige des dégats de Feu", GOSSIP_SENDER_MAIN, ENCHANT_WEP_ICEBREAKER); player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Gardevie -- Plus de chance de guérir", GOSSIP_SENDER_MAIN, ENCHANT_WEP_LIFEWARD); player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Puissance des sorts -- 63 de pouvoir de spell", GOSSIP_SENDER_MAIN, ENCHANT_WEP_MIGHTY_SPELL_POWER); player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Mangouste -- 120 d'Agilité", GOSSIP_SENDER_MAIN, ENCHANT_WEP_MONGOOSE); player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Potentiel supérieur -- 65 de Puissance d'attaque", GOSSIP_SENDER_MAIN, ENCHANT_WEP_POTENCY); player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Garde de Titan -- 50 d'Endurance", GOSSIP_SENDER_MAIN, ENCHANT_WEP_TITANGUARD); player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Chaîne des armes en Titane -- Moins de temps de désarmement", GOSSIP_SENDER_MAIN, ENCHANT_WEP_TITANIUM_CHAIN); player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Retour", GOSSIP_SENDER_MAIN, -1); player->SEND_GOSSIP_MENU(1, creature->GetGUID()); } void Show2HWeaponMenu(Player* player, Creature* creature) { player->PlayerTalkClass->ClearMenus(); if (player->getClass() == CLASS_DEATH_KNIGHT) { player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Rune de Cendreglace", GOSSIP_SENDER_MAIN, ENCHANT_WEP_CINDERGLACIER); player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Rune de Lichmort", GOSSIP_SENDER_MAIN, ENCHANT_WEP_LICHBANE); player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Rune de Tracheglace", GOSSIP_SENDER_MAIN, ENCHANT_WEP_RAZORICE); player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Rune de Spellshattering", GOSSIP_SENDER_MAIN, // A faire ENCHANT_WEP_SPELLSHATTERING); player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Rune de Swordshattering", GOSSIP_SENDER_MAIN, // A faire ENCHANT_WEP_SWORDSHATTERING); player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Rune du croisé déchu", GOSSIP_SENDER_MAIN, ENCHANT_WEP_FALLEN_CRUSADER); player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Rune du the Stoneskin Gargoyle", GOSSIP_SENDER_MAIN, // A faire ENCHANT_WEP_STONESKIN_GARGOYLE); } player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Berserker -- 400 de puissance d'attaque", GOSSIP_SENDER_MAIN, ENCHANT_WEP_BERSERKING); player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Bourreau -- 120 de Score de coup critique", GOSSIP_SENDER_MAIN, ENCHANT_WEP_EXECUTIONER); player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Puissance des Sorts supérieur -- 81 de Puissance des Sorts", GOSSIP_SENDER_MAIN, ENCHANT_WEP_GREATER_SPELL_POWER); player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Agilité majeur -- 35 d'agilité", GOSSIP_SENDER_MAIN, ENCHANT_WEP_AGILITY_2H); player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Massacre -- 110 de Puissance d'attaque", GOSSIP_SENDER_MAIN, ENCHANT_WEP_MASSACRE); player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Mangouste --120 d'Agilité", GOSSIP_SENDER_MAIN, ENCHANT_WEP_MONGOOSE); player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Retour", GOSSIP_SENDER_MAIN, -1); player->SEND_GOSSIP_MENU(1, creature->GetGUID()); } void ShowShieldMenu(Player* player, Creature* creature) { player->PlayerTalkClass->ClearMenus(); player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Défense -- 20 de défense", GOSSIP_SENDER_MAIN, ENCHANT_SHIELD_DEFENSE); player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Intelligence supérieure -- 25 d'Intelligence", GOSSIP_SENDER_MAIN, ENCHANT_SHIELD_INTELLECT); player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Endurance majeure -- 18 d'Endurance", GOSSIP_SENDER_MAIN, ENCHANT_SHIELD_MAJOR_STAMINA); player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Resilience -- 12 de Resilience", GOSSIP_SENDER_MAIN, ENCHANT_SHIELD_RESILIENCE); player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Plaque en Titane -- 36 de Parade", GOSSIP_SENDER_MAIN, ENCHANT_SHIELD_TITANIUM_PLATING); player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Pointe de bouclier en Titane -- 81 de Parade + 50% de temps en moins de désarmé", GOSSIP_SENDER_MAIN, ENCHANT_SHIELD_TITANIUM_SPIKE); player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Retour", GOSSIP_SENDER_MAIN, -1); player->SEND_GOSSIP_MENU(1, creature->GetGUID()); } void ShowHeadMenu(Player* player, Creature* creature) { player->PlayerTalkClass->ClearMenus(); player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Arcanum de Guérison Bienheureuse -- 30 de Puissance des sorts", GOSSIP_SENDER_MAIN, ENCHANT_HEAD_BLISSFUL_MENDING); player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Arcanum des Mystères Ardents -- 25 de Résistance au Feu", GOSSIP_SENDER_MAIN, ENCHANT_HEAD_BURNING_MYSTERIES); player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Arcanum de Domination -- 30 de Puissance des sorts + 20 de Coups critiques", GOSSIP_SENDER_MAIN, ENCHANT_HEAD_DOMINANCE); player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Arcanum du Gladiateur Sauvage -- 30 d'Endurance + 25 de Résilience", GOSSIP_SENDER_MAIN, ENCHANT_HEAD_SAVAGE_GLADIATOR); player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Arcanum du Fidèle Protecteur -- 37 d'Endurance + Defense", GOSSIP_SENDER_MAIN, ENCHANT_HEAD_STALWART_PROTECTOR); player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Arcanum de Tourment -- 29 de Puissance des sorts + 20 de Résilience", GOSSIP_SENDER_MAIN, ENCHANT_HEAD_TORMENT); player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Arcanum de Triomphe -- 50 de Puissance d'attaque + 20 de Résilience", GOSSIP_SENDER_MAIN, ENCHANT_HEAD_TRIUMPH); player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Retour", GOSSIP_SENDER_MAIN, -1); player->SEND_GOSSIP_MENU(1, creature->GetGUID()); } void ShowShouldersMenu(Player* player, Creature* creature) { player->PlayerTalkClass->ClearMenus(); if (player->HasSkill(SKILL_INSCRIPTION) && player->GetSkillValue(SKILL_INSCRIPTION) >= 450) { player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Calligraphie de la hache du maître", GOSSIP_SENDER_MAIN, ENCHANT_SHOULDER_MASTERS_AXE); player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Calligraphie de la roche du maître", GOSSIP_SENDER_MAIN, ENCHANT_SHOULDER_MASTERS_CRAG); player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Calligraphie du pinacle du maître", GOSSIP_SENDER_MAIN, ENCHANT_SHOULDER_MASTERS_PINNACLE); player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Calligraphie de l'orage du maître", GOSSIP_SENDER_MAIN, ENCHANT_SHOULDER_MASTERS_STORM); } player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Calligraphie supérieure de la hache -- 40 de Puissance d'attaque + 15 de Coup critique", GOSSIP_SENDER_MAIN, ENCHANT_SHOULDER_GREATER_AXE); player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Calligraphie supérieure de la roche -- 24 de Puissance des sorts", GOSSIP_SENDER_MAIN, ENCHANT_SHOULDER_GREATER_CRAG); player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Calligraphie supérieure du pinacle -- 30 d'Endurance + 15 de Résilience", GOSSIP_SENDER_MAIN, ENCHANT_SHOULDER_GREATER_PINNACLE); player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Calligraphie supérieure du gladiateur -- 20 d'Esquive + 15 de Défense", GOSSIP_SENDER_MAIN, ENCHANT_SHOULDER_GREATER_GLADIATOR); player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Calligraphie supérieure de l'orage -- 24 de Puissance des sorts + 15 de Coup critique", GOSSIP_SENDER_MAIN, ENCHANT_SHOULDER_GREATER_STORM); player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Calligraphie de domination -- 23 de Puissance des sorts + 15 de Résilience", GOSSIP_SENDER_MAIN, ENCHANT_SHOULDER_DOMINANCE); player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Inscription du triomphe -- 40 de Puissance d'attaque + 15 de Résilience", GOSSIP_SENDER_MAIN, ENCHANT_SHOULDER_TRIUMPH); player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Retour", GOSSIP_SENDER_MAIN, -1); player->SEND_GOSSIP_MENU(1, creature->GetGUID()); } void ShowCloakMenu(Player* player, Creature* creature) { player->PlayerTalkClass->ClearMenus(); if (player->HasSkill(SKILL_ENGINEERING) && player->GetSkillValue(SKILL_ENGINEERING) >= 450) { player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Tissage arachnéen élastique", GOSSIP_SENDER_MAIN, ENCHANT_CLOAK_SPRINGY_ARACHNOWEAVE); player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Doublure en toile flexible", GOSSIP_SENDER_MAIN, ENCHANT_CLOAK_FLEXWEAVE_UNDERLAY); } if (player->getClass() == CLASS_ROGUE) player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Armure de l’ombre", GOSSIP_SENDER_MAIN, ENCHANT_CLOAK_SHADOW_ARMOR); if (player->HasSkill(SKILL_TAILORING) && player->GetSkillValue(SKILL_TAILORING) >= 450) { player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Broderie Sombrelueur", GOSSIP_SENDER_MAIN, ENCHANT_CLOAK_DARKGLOW_EMBROIDERY); player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Broderie Tisse-Lumière", GOSSIP_SENDER_MAIN, ENCHANT_CLOAK_LIGHTWEAVE_EMBROIDERY); player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Broderie Gardépée", GOSSIP_SENDER_MAIN, ENCHANT_CLOAK_SWORDGUARD_EMBROIDERY); } player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Sagesse -- 10 d'Esprit + 2% de menace réduite", GOSSIP_SENDER_MAIN, ENCHANT_CLOAK_WISDOM); player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Armure Titan -- 16 de Défense", GOSSIP_SENDER_MAIN, ENCHANT_CLOAK_TITANWEAVE); player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Sort Piercing -- 35 sorts Pen", GOSSIP_SENDER_MAIN, ENCHANT_CLOAK_SPELL_PIERCING); player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Puissante Armure -- 225 d'Armure", GOSSIP_SENDER_MAIN, ENCHANT_CLOAK_MIGHTY_ARMOR); player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Agilité majeure -- 22 d'Agilité", GOSSIP_SENDER_MAIN, ENCHANT_CLOAK_MAJOR_AGILITY); player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Vitesse supérieure -- 23 de Score de Hâte", GOSSIP_SENDER_MAIN, ENCHANT_CLOAK_GREATER_SPEED); player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Retour", GOSSIP_SENDER_MAIN, -1); player->SEND_GOSSIP_MENU(1, creature->GetGUID()); } void ShowChestMenu(Player* player, Creature* creature) { player->PlayerTalkClass->ClearMenus(); player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Mana exceptionnelle -- 150 de Mana", GOSSIP_SENDER_MAIN, ENCHANT_CHEST_EXCEPTIONAL_MANA); player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Restauration de Mana supérieur", GOSSIP_SENDER_MAIN, ENCHANT_CHEST_GREATER_MANA_RESTO); player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Résilience exceptionnelle -- 20 de Résilience", GOSSIP_SENDER_MAIN, ENCHANT_CHEST_EXCEPTIONAL_RESILIENCE); player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Super Santé -- 225 de Santé", GOSSIP_SENDER_MAIN, ENCHANT_CHEST_SUPER_HEALTH); player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "10 de toutes les statistiques", GOSSIP_SENDER_MAIN, ENCHANT_CHEST_ALL_STATS); player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Retour", GOSSIP_SENDER_MAIN, -1); player->SEND_GOSSIP_MENU(1, creature->GetGUID()); } void ShowBracerMenu(Player* player, Creature* creature) { player->PlayerTalkClass->ClearMenus(); player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Agression supérieure -- 50 de Puissance d'attaque", GOSSIP_SENDER_MAIN, ENCHANT_BRACER_GREATER_ASSAULT); player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Intelligencce exceptionnelle -- 16 d'Intelligence", GOSSIP_SENDER_MAIN, ENCHANT_BRACER_EXCEPTIONAL_INTELLECT); player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Esprit majeur -- 18 d'Esprit", GOSSIP_SENDER_MAIN, ENCHANT_BRACER_MAJOR_SPIRIT); player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Expertise -- 15 d'Expertise", GOSSIP_SENDER_MAIN, ENCHANT_BRACER_EXPERTISE); player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Statistiques supérieurs -- 6 de toutes les statistiques", GOSSIP_SENDER_MAIN, ENCHANT_BRACER_GREATER_STATS); player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Puissance des sorts supérieure -- 30 de Puissance des sorts", GOSSIP_SENDER_MAIN, ENCHANT_BRACER_SUPERIOR_SPELLPOWER); player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Endurance majeure -- 40 d'Endurance", GOSSIP_SENDER_MAIN, ENCHANT_BRACER_MAJOR_STAMINA); if (player->HasSkill(SKILL_LEATHERWORKING) && player->GetSkillValue(SKILL_LEATHERWORKING) >= 450) { player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Bordure de fourrure : Puissance d'attaque", GOSSIP_SENDER_MAIN, ENCHANT_BRACER_FUR_LINING_AP); player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Bordure de fourrure : Endurance", GOSSIP_SENDER_MAIN, ENCHANT_BRACER_FUR_LINING_STAMINA); player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Bordure de fourrure : Puissance des sorts", GOSSIP_SENDER_MAIN, ENCHANT_BRACER_FUR_LINING_SP); player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Bordure de fourrure : Résistance aux Arcanes", GOSSIP_SENDER_MAIN, ENCHANT_BRACER_ARCANE_RESIST); player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Bordure de fourrure : Résistance à la Nature", GOSSIP_SENDER_MAIN, ENCHANT_BRACER_NATURE_RESIST); player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Bordure de fourrure : Résistance à l'Ombre", GOSSIP_SENDER_MAIN, ENCHANT_BRACER_SHADOW_RESIST); player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Bordure de fourrure : Résistance à la Glace", GOSSIP_SENDER_MAIN, ENCHANT_BRACER_FROST_RESIST); player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Bordure de fourrure : Résistance au Feu", GOSSIP_SENDER_MAIN, ENCHANT_BRACER_FIRE_RESIST); } if (player->HasSkill(SKILL_BLACKSMITHING) && player->GetSkillValue(SKILL_BLACKSMITHING) >= 450) player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Châsse de brassard", GOSSIP_SENDER_MAIN, ENCHANT_BRACER_SOCKET_BRACER); player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Retour", GOSSIP_SENDER_MAIN, -1); player->SEND_GOSSIP_MENU(1, creature->GetGUID()); } void ShowGlovesMenu(Player* player, Creature* creature) { player->PlayerTalkClass->ClearMenus(); player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Homme d'armes", GOSSIP_SENDER_MAIN, ENCHANT_GLOVES_ARMSMAN); player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Puissance des sorts exceptionnelle -- 23 de Puissance des sorts", GOSSIP_SENDER_MAIN, ENCHANT_GLOVES_EXCEPTIONAL_SPELLPOWER); player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Expertise -- 15 d'Expertise", GOSSIP_SENDER_MAIN, ENCHANT_GLOVES_EXPERTISE); player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Agression supérieure -- 44 de Puissance d'attaque", GOSSIP_SENDER_MAIN, ENCHANT_GLOVES_CRUSHER); player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Agilité majeure -- 20 d'Agilité", GOSSIP_SENDER_MAIN, ENCHANT_GLOVES_MAJOR_AGILITY); player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Précision -- 20 de Score de Toucher", GOSSIP_SENDER_MAIN, ENCHANT_GLOVES_PRECISION); if (player->HasSkill(SKILL_BLACKSMITHING) && player->GetSkillValue(SKILL_BLACKSMITHING) >= 450) player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Châsse de gants", GOSSIP_SENDER_MAIN, ENCHANT_GLOVES_SOCKET_GLOVES); if (player->HasSkill(SKILL_ENGINEERING) && player->GetSkillValue(SKILL_ENGINEERING) >= 450) { player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Pyrofusée à montage manuel", GOSSIP_SENDER_MAIN, ENCHANT_GLOVES_PYROROCKET); player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Accélérateurs hyper-stimulants", GOSSIP_SENDER_MAIN, ENCHANT_GLOVES_HYPERSPEED_ACCELERATORS); } player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Retour", GOSSIP_SENDER_MAIN, -1); player->SEND_GOSSIP_MENU(1, creature->GetGUID()); } void ShowBeltMenu(Player* player, Creature* creature) { player->PlayerTalkClass->ClearMenus(); player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Boucle de ceinture éternelle", GOSSIP_SENDER_MAIN, ENCHANT_BELT_ETERNAL_BELT_BUCKLE); if (player->HasSkill(SKILL_ENGINEERING) && player->GetSkillValue(SKILL_ENGINEERING) >= 450) player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Ceinture à fragmentation", GOSSIP_SENDER_MAIN, ENCHANT_BELT_FRAG_BELT); player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Retour", GOSSIP_SENDER_MAIN, -1); player->SEND_GOSSIP_MENU(1, creature->GetGUID()); } void ShowLegsMenu(Player* player, Creature* creature) { player->PlayerTalkClass->ClearMenus(); player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Armure de jambe givrepeau -- 55 d'Endurance + 22 d'Agilité", GOSSIP_SENDER_MAIN, ENCHANT_LEGS_FROSTHIDE_ARMOR); player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Armure de jambe en écailles de glace -- 75 de Puissance d'attaque + 22 de Coup critique", GOSSIP_SENDER_MAIN, ENCHANT_LEGS_ICESCALE_ARMOR); player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Armure de jambe terrestre -- 40 de Résilience", GOSSIP_SENDER_MAIN, ENCHANT_LEGS_EARTHEN_ARMOR); player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Fil ensorcelé saphir -- 50 de Puissance des sorts", GOSSIP_SENDER_MAIN, ENCHANT_LEGS_SAPPHIRE_SPELLTHREAD); player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Fil ensorcelé brillant -- 50 de Puissance des sorts + 22 d'Esprit", GOSSIP_SENDER_MAIN, ENCHANT_LEGS_BRILLIANT_SPELLTHREAD); player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Retour", GOSSIP_SENDER_MAIN, -1); player->SEND_GOSSIP_MENU(1, creature->GetGUID()); } void ShowBootsMenu(Player* player, Creature* creature) { player->PlayerTalkClass->ClearMenus(); player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Icewalker -- 12 de Score de toucher + 12 de Score critique", GOSSIP_SENDER_MAIN, ENCHANT_BOOTS_ICEWALKER); player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Assaut supérieur -- 32 de Puissance d'attaque", GOSSIP_SENDER_MAIN, ENCHANT_BOOTS_GREATER_ASSAULT); player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Robustesse supérieure -- 22 d'Endurance", GOSSIP_SENDER_MAIN, ENCHANT_BOOTS_GREATER_FORTITUDE); player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Esprit supérieur -- 18 d'Esprit", GOSSIP_SENDER_MAIN, ENCHANT_BOOTS_GREATER_SPIRIT); if (player->HasSkill(SKILL_ENGINEERING) && player->GetSkillValue(SKILL_ENGINEERING) >= 450) player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Nitro-survolteurs", GOSSIP_SENDER_MAIN, ENCHANT_BOOTS_NITRO_BOOSTS); player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Agilité supérieure -- 16 d'Agilité", GOSSIP_SENDER_MAIN, ENCHANT_BOOTS_SUPERIOR_AGILITY); player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Vitalité rohart -- 15 d'Endurance + 8% de vitesse de déplacement", GOSSIP_SENDER_MAIN, ENCHANT_BOOTS_TUSKARRS_VITALITY); player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Retour", GOSSIP_SENDER_MAIN, -1); player->SEND_GOSSIP_MENU(1, creature->GetGUID()); } void ShowRingsMenu(Player* player, Creature* creature) { player->PlayerTalkClass->ClearMenus(); player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Puissance d'Attaque", GOSSIP_SENDER_MAIN, ENCHANT_RING_ASSAULT); player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Puissance des sorts", GOSSIP_SENDER_MAIN, ENCHANT_RING_GREATER_SPELLPOWER); player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Endurance", GOSSIP_SENDER_MAIN, ENCHANT_RING_STAMINA); player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Retour", GOSSIP_SENDER_MAIN, -1); player->SEND_GOSSIP_MENU(1, creature->GetGUID()); } void ShowRangedMenu(Player* player, Creature* creature) { player->PlayerTalkClass->ClearMenus(); player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Lunette crève-cœur", GOSSIP_SENDER_MAIN, ENCHANT_RANGED_HEARTSEEKER_SCOPE); player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Lunette de soleil", GOSSIP_SENDER_MAIN, ENCHANT_RANGED_SUN_SCOPE); player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Retour", GOSSIP_SENDER_MAIN, -1); player->SEND_GOSSIP_MENU(1, creature->GetGUID()); } bool OnGossipSelect(Player* player, Creature* creature, uint32 /*envoyer*/, uint32 action) { int slot = -1; bool check_adjacent_slot = true; switch (action) { case -1: // Retour ShowMainMenu(player, creature); break; case GOSSIP_ACTION_INFO_DEF + 1: Show1HWeaponMenu(player, creature); break; case GOSSIP_ACTION_INFO_DEF + 2: Show2HWeaponMenu(player, creature); break; case GOSSIP_ACTION_INFO_DEF + 3: ShowShieldMenu(player, creature); break; case GOSSIP_ACTION_INFO_DEF + 4: ShowHeadMenu(player, creature); break; case GOSSIP_ACTION_INFO_DEF + 5: ShowShouldersMenu(player, creature); break; case GOSSIP_ACTION_INFO_DEF + 6: ShowCloakMenu(player, creature); break; case GOSSIP_ACTION_INFO_DEF + 7: ShowChestMenu(player, creature); break; case GOSSIP_ACTION_INFO_DEF + 8: ShowBracerMenu(player, creature); break; case GOSSIP_ACTION_INFO_DEF + 9: ShowGlovesMenu(player, creature); break; case GOSSIP_ACTION_INFO_DEF + 10: ShowBeltMenu(player, creature); break; case GOSSIP_ACTION_INFO_DEF + 11: ShowLegsMenu(player, creature); break; case GOSSIP_ACTION_INFO_DEF + 12: ShowBootsMenu(player, creature); break; case GOSSIP_ACTION_INFO_DEF + 13: ShowRangedMenu(player, creature); break; case GOSSIP_ACTION_INFO_DEF + 14: ShowRingsMenu(player, creature); break; // Arme à une main case ENCHANT_WEP_BLADE_WARD: case ENCHANT_WEP_BLOOD_DRAINING: case ENCHANT_WEP_AGILITY_1H: case ENCHANT_WEP_SPIRIT: case ENCHANT_WEP_BERSERKING: case ENCHANT_WEP_ACCURACY: case ENCHANT_WEP_BLACK_MAGIC: case ENCHANT_WEP_BATTLEMASTER: case ENCHANT_WEP_ICEBREAKER: case ENCHANT_WEP_LIFEWARD: case ENCHANT_WEP_TITANGUARD: case ENCHANT_WEP_POTENCY: case ENCHANT_WEP_MONGOOSE: case ENCHANT_WEP_MIGHTY_SPELL_POWER: case ENCHANT_WEP_EXECUTIONER: case ENCHANT_WEP_TITANIUM_CHAIN: // Arme à 2mains // case ENCHANT_WEP_BERSERKING: // case ENCHANT_WEP_MONGOOSE: // case ENCHANT_WEP_EXECUTIONER: // case ENCHANT_WEP_TITANIUM_CHAIN: case ENCHANT_WEP_GREATER_SPELL_POWER: case ENCHANT_WEP_AGILITY_2H: case ENCHANT_WEP_MASSACRE: // Rune case ENCHANT_WEP_CINDERGLACIER: case ENCHANT_WEP_LICHBANE: case ENCHANT_WEP_RAZORICE: case ENCHANT_WEP_SPELLBREAKING: case ENCHANT_WEP_SPELLSHATTERING: case ENCHANT_WEP_SWORDBREAKING: case ENCHANT_WEP_SWORDSHATTERING: case ENCHANT_WEP_FALLEN_CRUSADER: case ENCHANT_WEP_NERUBIAN_CARAPACE: case ENCHANT_WEP_STONESKIN_GARGOYLE: slot = EQUIPMENT_SLOT_MAINHAND; break; // Boucliers case ENCHANT_SHIELD_DEFENSE: case ENCHANT_SHIELD_INTELLECT: case ENCHANT_SHIELD_RESILIENCE: case ENCHANT_SHIELD_TITANIUM_PLATING: case ENCHANT_SHIELD_MAJOR_STAMINA: case ENCHANT_SHIELD_TITANIUM_SPIKE: slot = EQUIPMENT_SLOT_OFFHAND; break; // Tête case ENCHANT_HEAD_BLISSFUL_MENDING: case ENCHANT_HEAD_BURNING_MYSTERIES: case ENCHANT_HEAD_DOMINANCE: case ENCHANT_HEAD_SAVAGE_GLADIATOR: case ENCHANT_HEAD_STALWART_PROTECTOR: case ENCHANT_HEAD_TORMENT: case ENCHANT_HEAD_TRIUMPH: slot = EQUIPMENT_SLOT_HEAD; break; // Epaules case ENCHANT_SHOULDER_MASTERS_AXE: case ENCHANT_SHOULDER_MASTERS_CRAG: case ENCHANT_SHOULDER_MASTERS_PINNACLE: case ENCHANT_SHOULDER_MASTERS_STORM: case ENCHANT_SHOULDER_GREATER_AXE: case ENCHANT_SHOULDER_GREATER_CRAG: case ENCHANT_SHOULDER_GREATER_GLADIATOR: case ENCHANT_SHOULDER_GREATER_PINNACLE: case ENCHANT_SHOULDER_GREATER_STORM: case ENCHANT_SHOULDER_DOMINANCE: case ENCHANT_SHOULDER_TRIUMPH: slot = EQUIPMENT_SLOT_SHOULDERS; break; // Cape case ENCHANT_CLOAK_DARKGLOW_EMBROIDERY: case ENCHANT_CLOAK_SWORDGUARD_EMBROIDERY: case ENCHANT_CLOAK_FLEXWEAVE_UNDERLAY: case ENCHANT_CLOAK_LIGHTWEAVE_EMBROIDERY: case ENCHANT_CLOAK_SPRINGY_ARACHNOWEAVE: case ENCHANT_CLOAK_WISDOM: case ENCHANT_CLOAK_TITANWEAVE: case ENCHANT_CLOAK_SPELL_PIERCING: case ENCHANT_CLOAK_SHADOW_ARMOR: case ENCHANT_CLOAK_MIGHTY_ARMOR: case ENCHANT_CLOAK_MAJOR_AGILITY: case ENCHANT_CLOAK_GREATER_SPEED: slot = EQUIPMENT_SLOT_BACK; break; // Torse case ENCHANT_CHEST_EXCEPTIONAL_MANA: case ENCHANT_CHEST_GREATER_MANA_RESTO: case ENCHANT_CHEST_EXCEPTIONAL_RESILIENCE: case ENCHANT_CHEST_SUPER_HEALTH: case ENCHANT_CHEST_ALL_STATS: slot = EQUIPMENT_SLOT_CHEST; break; // Brassard case ENCHANT_BRACER_GREATER_ASSAULT: case ENCHANT_BRACER_EXCEPTIONAL_INTELLECT: case ENCHANT_BRACER_MAJOR_SPIRIT: case ENCHANT_BRACER_EXPERTISE: case ENCHANT_BRACER_GREATER_STATS: case ENCHANT_BRACER_SUPERIOR_SPELLPOWER: case ENCHANT_BRACER_MAJOR_STAMINA: case ENCHANT_BRACER_FUR_LINING_AP: case ENCHANT_BRACER_FUR_LINING_STAMINA: case ENCHANT_BRACER_FUR_LINING_SP: case ENCHANT_BRACER_ARCANE_RESIST: case ENCHANT_BRACER_NATURE_RESIST: case ENCHANT_BRACER_SHADOW_RESIST: case ENCHANT_BRACER_FROST_RESIST: case ENCHANT_BRACER_FIRE_RESIST: case ENCHANT_BRACER_SOCKET_BRACER: slot = EQUIPMENT_SLOT_WRISTS; break; // Gants case ENCHANT_GLOVES_EXPERTISE: case ENCHANT_GLOVES_PRECISION: case ENCHANT_GLOVES_GREATER_ASSAULT: case ENCHANT_GLOVES_MAJOR_AGILITY: case ENCHANT_GLOVES_EXCEPTIONAL_SPELLPOWER: case ENCHANT_GLOVES_ARMSMAN: case ENCHANT_GLOVES_SOCKET_GLOVES: case ENCHANT_GLOVES_PYROROCKET: case ENCHANT_GLOVES_HYPERSPEED_ACCELERATORS: slot = EQUIPMENT_SLOT_HANDS; break; // Ceinture case ENCHANT_BELT_ETERNAL_BELT_BUCKLE: case ENCHANT_BELT_FRAG_BELT: slot = EQUIPMENT_SLOT_WAIST; break; // Jambes case ENCHANT_LEGS_FROSTHIDE_ARMOR: case ENCHANT_LEGS_ICESCALE_ARMOR: case ENCHANT_LEGS_EARTHEN_ARMOR: case ENCHANT_LEGS_SAPPHIRE_SPELLTHREAD : case ENCHANT_LEGS_BRILLIANT_SPELLTHREAD: slot = EQUIPMENT_SLOT_LEGS; break; // Chaussure case ENCHANT_BOOTS_TUSKARRS_VITALITY: case ENCHANT_BOOTS_ICEWALKER: case ENCHANT_BOOTS_GREATER_ASSAULT: case ENCHANT_BOOTS_GREATER_SPIRIT: case ENCHANT_BOOTS_GREATER_FORTITUDE: case ENCHANT_BOOTS_SUPERIOR_AGILITY: case ENCHANT_BOOTS_NITRO_BOOSTS: slot = EQUIPMENT_SLOT_FEET; break; // Anneau case ENCHANT_RING_STAMINA: case ENCHANT_RING_GREATER_SPELLPOWER: case ENCHANT_RING_ASSAULT: slot = EQUIPMENT_SLOT_FINGER1; break; // Ranged weapon case ENCHANT_RANGED_HEARTSEEKER_SCOPE: case ENCHANT_RANGED_SUN_SCOPE: slot = EQUIPMENT_SLOT_RANGED; break; // Main hand case GOSSIP_ACTION_INFO_DEF + 20: slot = EQUIPMENT_SLOT_MAINHAND; action = selected_enchant; check_adjacent_slot = false; break; // Off hand case GOSSIP_ACTION_INFO_DEF + 21: slot = EQUIPMENT_SLOT_OFFHAND; action = selected_enchant; check_adjacent_slot = false; break; default: player->CLOSE_GOSSIP_MENU(); break; } if (slot > -1) { // allows for a maximum of 2 duplicates, and the // convenience of using enchant ids as gossip // userdata if (action < 0) action = -action; Item* item = player->GetItemByPos(INVENTORY_SLOT_BAG_0, slot); if (!item && slot == INVTYPE_RANGEDRIGHT) item = player->GetItemByPos(INVENTORY_SLOT_BAG_0, INVTYPE_RANGEDRIGHT); if (item && check_adjacent_slot && item->GetEnchantmentId(PERM_ENCHANTMENT_SLOT) != 0) { switch (slot) { case EQUIPMENT_SLOT_MAINHAND: { Item* offhand = player->GetItemByPos(INVENTORY_SLOT_BAG_0, EQUIPMENT_SLOT_OFFHAND); if (offhand) { player->PlayerTalkClass->ClearMenus(); player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, item->GetTemplate()->Name1.c_str(), GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 20); player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, offhand->GetTemplate()->Name1.c_str(), GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 21); player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Back", GOSSIP_SENDER_MAIN, -1); player->SEND_GOSSIP_MENU(1, creature->GetGUID()); selected_enchant = action; return true; } break; } case EQUIPMENT_SLOT_FINGER1: { Item* ring2 = player->GetItemByPos(INVENTORY_SLOT_BAG_0, EQUIPMENT_SLOT_FINGER2); if (ring2) { player->PlayerTalkClass->ClearMenus(); player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, item->GetTemplate()->Name1.c_str(), GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 20); player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, ring2->GetTemplate()->Name1.c_str(), GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 21); player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Retour", GOSSIP_SENDER_MAIN, -1); player->SEND_GOSSIP_MENU(1, creature->GetGUID()); selected_enchant = action; return true; } break; } default: break; } } Enchant(player, creature, item, action); ShowMainMenu(player, creature); } return true; } }; void AddSC_npc_enchantment() { new npc_enchantment(); }