diff --git a/src/server/game/AI/PlayerAI/BotClassAI/BotDruidAI.cpp b/src/server/game/AI/PlayerAI/BotClassAI/BotDruidAI.cpp index 16e9de3..5db28ee 100644 --- a/src/server/game/AI/PlayerAI/BotClassAI/BotDruidAI.cpp +++ b/src/server/game/AI/PlayerAI/BotClassAI/BotDruidAI.cpp @@ -22,6 +22,11 @@ void BotDruidAI::InitializeSpells() { + // SylvaniaCore: recalibration Legion. Les identifiants d origine dataient + // d une version bien anterieure du jeu et n existaient plus dans le livre de + // sorts des bots : la constante valait 0 et toute la branche etait sautee en + // silence. Valeurs verifiees presentes en base chez les bots de niveau 110. + DruidIDLE_AOEFerityWish = FindMaxRankSpellByExist(165754); DruidStatus_Travel = FindMaxRankSpellByExist(783); @@ -31,7 +36,7 @@ void BotDruidAI::InitializeSpells() DruidStatus_Tree = FindMaxRankSpellByExist(33891); DruidGuard_Sneak = FindMaxRankSpellByExist(5215); - DruidGuard_Harden = FindMaxRankSpellByExist(182872); + DruidGuard_Harden = FindMaxRankSpellByExist(192081); // Fourrure de fer DruidGuard_Thorns = FindMaxRankSpellByExist(209334); DruidGuard_AutoTwine = FindMaxRankSpellByExist(66071); DruidGuard_Twine = FindMaxRankSpellByExist(339); @@ -41,29 +46,29 @@ void BotDruidAI::InitializeSpells() DruidAssist_PersonSpirit = FindMaxRankSpellByExist(770); DruidAssist_BeastSpirit = FindMaxRankSpellByExist(16857); - DruidAssist_Active = FindMaxRankSpellByExist(6950); + DruidAssist_Active = FindMaxRankSpellByExist(194223); // Alignement celeste - DruidCast_Moonfire = FindMaxRankSpellByExist(65856); - DruidCast_Insect = FindMaxRankSpellByExist(65855); - DruidCast_Anger = FindMaxRankSpellByExist(65862); - DruidCast_Spark = FindMaxRankSpellByExist(98993); + DruidCast_Moonfire = FindMaxRankSpellByExist(194153); // Frappe lunaire + DruidCast_Insect = FindMaxRankSpellByExist(93402); // Feu solaire + DruidCast_Anger = FindMaxRankSpellByExist(190984); // Courroux solaire + DruidCast_Spark = FindMaxRankSpellByExist(78674); // Poussee d etoiles DruidAOE_Hurricane = FindMaxRankSpellByExist(55881); DruidAOE_Typhoon = FindMaxRankSpellByExist(51817); - DruidAOE_FallStar = FindMaxRankSpellByExist(100806); + DruidAOE_FallStar = FindMaxRankSpellByExist(191034); // Pluie d etoiles DruidHeal_Nourishing = FindMaxRankSpellByExist(63556); DruidHeal_Relife = FindMaxRankSpellByExist(774); DruidHeal_Coalescence = FindMaxRankSpellByExist(66067); DruidHeal_Touch = FindMaxRankSpellByExist(5185); - DruidHeal_LifeBurst = FindMaxRankSpellByExist(57763); + DruidHeal_LifeBurst = FindMaxRankSpellByExist(22842); // Regeneration frenetique DruidHeal_MergerLife = FindMaxRankSpellByExist(18562); DruidHeal_MomentHeal = FindMaxRankSpellByExist(127316); DruidHeal_AOETranquility = FindMaxRankSpellByExist(740); DruidHeal_AOEFerity = FindMaxRankSpellByExist(173170); - DruidCat_Stun = FindMaxRankSpellByExist(203123); + DruidCat_Stun = FindMaxRankSpellByExist(33917); // Mutilation, rotation Gardien DruidCat_Bite = FindMaxRankSpellByExist(22568); DruidCat_Roar = FindMaxRankSpellByExist(52610); DruidCat_Separate = FindMaxRankSpellByExist(1943); diff --git a/src/server/game/AI/PlayerAI/BotClassAI/BotHunterAI.cpp b/src/server/game/AI/PlayerAI/BotClassAI/BotHunterAI.cpp index 0f5ff31..5c07baa 100644 --- a/src/server/game/AI/PlayerAI/BotClassAI/BotHunterAI.cpp +++ b/src/server/game/AI/PlayerAI/BotClassAI/BotHunterAI.cpp @@ -22,6 +22,11 @@ void BotHunterAI::InitializeSpells() { + // SylvaniaCore: recalibration Legion. Les identifiants d origine dataient + // d une version bien anterieure du jeu et n existaient plus dans le livre de + // sorts des bots : la constante valait 0 et toute la branche etait sautee en + // silence. Valeurs verifiees presentes en base chez les bots de niveau 110. + HunterIDLE_SummonPet = FindMaxRankSpellByExist(23498);// 883 ???? HunterIDLE_RevivePet = FindMaxRankSpellByExist(982);// 982 ???? HunterIDLE_ManaAura = FindMaxRankSpellByExist(210754);// 34074 ?????? @@ -47,26 +52,26 @@ void BotHunterAI::InitializeSpells() uint32 HunterAssist_FalseDead = FindMaxRankSpellByExist(5384);// 5384 ?? uint32 HunterAssist_BackJump = FindMaxRankSpellByExist(781);// 781 ?? uint32 HunterAssist_FastSpeed = FindMaxRankSpellByExist(3045);// 3045 ????BUF - uint32 HunterAssist_ReadyCD = FindMaxRankSpellByExist(203551);// 23989 ????CD(???) + uint32 HunterAssist_ReadyCD = FindMaxRankSpellByExist(193530); // Aspect du sauvage// 23989 ????CD(???) uint32 HunterMelee_BackRoot = FindMaxRankSpellByExist(116599);// 48999 ???????(???) uint32 HunterMelee_NoDamage = FindMaxRankSpellByExist(31567);// 19263 ?? ???? uint32 HunterMelee_DecSpeed = FindMaxRankSpellByExist( 195645);// 2974 ?? ?????? uint32 HunterMelee_NextAtt = FindMaxRankSpellByExist(31566);// 48996 next?????? - uint32 HunterMelee_MeleeAtt = FindMaxRankSpellByExist(190928);// 53339 ???? + uint32 HunterMelee_MeleeAtt = FindMaxRankSpellByExist(120679); // Bete sauvage// 53339 ???? HunterDebug_Damage = FindMaxRankSpellByExist(160503); HunterDebug_Mana = FindMaxRankSpellByExist(31407); HunterDebug_Sleep = FindMaxRankSpellByExist(19386); - HunterShot_AOEShot = FindMaxRankSpellByExist(22908); + HunterShot_AOEShot = FindMaxRankSpellByExist(120360); // Barrage HunterShot_CharmShot = FindMaxRankSpellByExist(23601); HunterShot_Explode = FindMaxRankSpellByExist(15495); - HunterShot_Aim = FindMaxRankSpellByExist(48871); + HunterShot_Aim = FindMaxRankSpellByExist(34026); // Commandement de tuer HunterShot_Silence = FindMaxRankSpellByExist(248919); HunterShot_Shock = FindMaxRankSpellByExist(5116); HunterShot_Cast = FindMaxRankSpellByExist(65867); - HunterShot_MgcShot = FindMaxRankSpellByExist(69989); + HunterShot_MgcShot = FindMaxRankSpellByExist(193455); // Tir de cobra HunterShot_KillShot = FindMaxRankSpellByExist(69989); HunterShot_MulShot = FindMaxRankSpellByExist(2643); HunterShot_QMLShot = FindMaxRankSpellByExist(53209); diff --git a/src/server/game/AI/PlayerAI/BotClassAI/BotPaladinAI.cpp b/src/server/game/AI/PlayerAI/BotClassAI/BotPaladinAI.cpp index 7fe4360..9bc4b20 100644 --- a/src/server/game/AI/PlayerAI/BotClassAI/BotPaladinAI.cpp +++ b/src/server/game/AI/PlayerAI/BotClassAI/BotPaladinAI.cpp @@ -22,6 +22,11 @@ void BotPaladinAI::InitializeSpells() { + // SylvaniaCore: recalibration Legion. Les identifiants d origine dataient + // d une version bien anterieure du jeu et n existaient plus dans le livre de + // sorts des bots : la constante valait 0 et toute la branche etait sautee en + // silence. Valeurs verifiees presentes en base chez les bots de niveau 110. + PaladinIDLE_MountAura = FindMaxRankSpellByExist(225454); PaladinIDLE_CastAura = FindMaxRankSpellByExist(81455); PaladinIDLE_JudgeAura = FindMaxRankSpellByExist(8990); @@ -35,7 +40,7 @@ void BotPaladinAI::InitializeSpells() PaladinGuard_UnShield = FindMaxRankSpellByExist(29381); PaladinGuard_FreeAura = FindMaxRankSpellByExist(1044); PaladinGuard_Invincible = FindMaxRankSpellByExist(642); - PaladinGuard_Sacrifice = FindMaxRankSpellByExist(187190); + PaladinGuard_Sacrifice = FindMaxRankSpellByExist(184662); // Bouclier de vengeance PaladinGuard_AOESacrifice = FindMaxRankSpellByExist(13903); PaladinGuard_BlockShield = FindMaxRankSpellByExist(31904); PaladinGuard_PhyImmune = FindMaxRankSpellByExist(66009); @@ -48,28 +53,28 @@ void BotPaladinAI::InitializeSpells() PaladinAssist_StunStamp = FindMaxRankSpellByExist(50907); PaladinAssist_ComStamp = FindMaxRankSpellByExist(13903); PaladinAssist_Confession = FindMaxRankSpellByExist(173315); - PaladinAssist_StunMace = FindMaxRankSpellByExist(66863); + PaladinAssist_StunMace = FindMaxRankSpellByExist(853); // Marteau de la justice PaladinAssist_ReviveMana = FindMaxRankSpellByExist(173521); PaladinAssist_HealCrit = FindMaxRankSpellByExist(210294); PaladinAssist_LowMana = FindMaxRankSpellByExist(20271); - PaladinAssist_AuraUP = FindMaxRankSpellByExist(31821); + PaladinAssist_AuraUP = FindMaxRankSpellByExist(31884); // Colere vengeresse PaladinAssist_Dispel = FindMaxRankSpellByExist(4987); PaladinHeal_FastHoly = FindMaxRankSpellByExist(19750); - PaladinHeal_BigHoly = FindMaxRankSpellByExist(13952); + PaladinHeal_BigHoly = FindMaxRankSpellByExist(210191); // Verbe de gloire PaladinHeal_FullHoly = FindMaxRankSpellByExist(9257); - PaladinMelee_AOEOffertory = FindMaxRankSpellByExist(251152); + PaladinMelee_AOEOffertory = FindMaxRankSpellByExist(26573); // Consecration PaladinMelee_KillMace = FindMaxRankSpellByExist(37259); PaladinMelee_FlyShield = FindMaxRankSpellByExist(31935); PaladinMelee_ShieldAtt = FindMaxRankSpellByExist(53600); - PaladinMelee_MaceAtt = FindMaxRankSpellByExist(53595); - PaladinMelee_HolyAtt = FindMaxRankSpellByExist(25914); + PaladinMelee_MaceAtt = FindMaxRankSpellByExist(184575); // Lame de justice + PaladinMelee_HolyAtt = FindMaxRankSpellByExist(85256); // Verdict du templier PaladinMelee_LifeJudge = FindMaxRankSpellByExist(31804); PaladinMelee_ManaJudge = FindMaxRankSpellByExist(41368); PaladinMelee_FleeJudge = FindMaxRankSpellByExist(201371); PaladinMelee_WeaponAtt = FindMaxRankSpellByExist(213844); - PaladinMelee_HolyStrom = FindMaxRankSpellByExist(163888); + PaladinMelee_HolyStrom = FindMaxRankSpellByExist(53385); // Tempete divine PaladinFlag_MomentHoly = 251152; PaladinFlag_Discipline = 25771; diff --git a/src/server/game/AI/PlayerAI/BotClassAI/BotPriestAI.cpp b/src/server/game/AI/PlayerAI/BotClassAI/BotPriestAI.cpp index 57df9e9..07b9c06 100644 --- a/src/server/game/AI/PlayerAI/BotClassAI/BotPriestAI.cpp +++ b/src/server/game/AI/PlayerAI/BotClassAI/BotPriestAI.cpp @@ -20,6 +20,11 @@ void BotPriestAI::InitializeSpells() { + // SylvaniaCore: recalibration Legion. Les identifiants d origine dataient + // d une version bien anterieure du jeu et n existaient plus dans le livre de + // sorts des bots : la constante valait 0 et toute la branche etait sautee en + // silence. Valeurs verifiees presentes en base chez les bots de niveau 110. + PriestIDLE_AllHardRes = FindMaxRankSpellByExist(43939); PriestIDLE_HardRes = FindMaxRankSpellByExist(23948); PriestIDLE_SoulFire = FindMaxRankSpellByExist(48168); @@ -28,7 +33,7 @@ void BotPriestAI::InitializeSpells() PriestIDLE_Bloodsucker = FindMaxRankSpellByExist(15286); PriestIDLE_AllShadowRes = FindMaxRankSpellByExist(53915); PriestIDLE_ShadowRes = FindMaxRankSpellByExist(53915); - PriestIDLE_ShadowStatus = FindMaxRankSpellByExist(16592); + PriestIDLE_ShadowStatus = FindMaxRankSpellByExist(232698); // Forme d ombre PriestGuard_ShadowFear = FindMaxRankSpellByExist(34984); PriestGuard_AOEFear = FindMaxRankSpellByExist(8122); @@ -44,18 +49,18 @@ void BotPriestAI::InitializeSpells() PriestAssist_AllDispel = FindMaxRankSpellByExist(4526); PriestAssist_Dispel = FindMaxRankSpellByExist(528); PriestAssist_ShadowDemon = FindMaxRankSpellByExist(10060); - PriestAssist_Silence = FindMaxRankSpellByExist(8988); + PriestAssist_Silence = FindMaxRankSpellByExist(15487); // Silence PriestAssist_AllResMana = FindMaxRankSpellByExist(64843); PriestAssist_AllResLife = FindMaxRankSpellByExist(64843); - PriestDebuf_Ache = FindMaxRankSpellByExist(11639); - PriestDebuf_Drown = FindMaxRankSpellByExist(41375); - PriestDebuf_Plague = FindMaxRankSpellByExist(138490); + PriestDebuf_Ache = FindMaxRankSpellByExist(589); // Mot de l ombre : douleur + PriestDebuf_Drown = FindMaxRankSpellByExist(32379); // Mot de l ombre : mort + PriestDebuf_Plague = FindMaxRankSpellByExist(228260); // Eruption du Vide PriestAOE_ShadowExplode = FindMaxRankSpellByExist(138490); PriestAOE_HolyNova = FindMaxRankSpellByExist(20694); - PriestShadow_ShadowTouch = FindMaxRankSpellByExist(18152); - PriestShadow_Knocking = FindMaxRankSpellByExist(17194); + PriestShadow_ShadowTouch = FindMaxRankSpellByExist(34914); // Toucher vampirique + PriestShadow_Knocking = FindMaxRankSpellByExist(8092); // Attaque mentale PriestShadow_Lech = FindMaxRankSpellByExist(15407); PriestHoly_Smite = FindMaxRankSpellByExist(585); PriestHoly_BigFire = FindMaxRankSpellByExist(17141); @@ -63,7 +68,7 @@ void BotPriestAI::InitializeSpells() PriestHeal_LowHeal = FindMaxRankSpellByExist(8812); PriestHeal_Resume = FindMaxRankSpellByExist(27606); - PriestHeal_FastHeal = FindMaxRankSpellByExist(27608); + PriestHeal_FastHeal = FindMaxRankSpellByExist(2061); // Soins rapides PriestHeal_BigHeal = FindMaxRankSpellByExist(34119); PriestHeal_LinkHeal = FindMaxRankSpellByExist(32546); PriestHeal_UnionHeal = FindMaxRankSpellByExist(225275); diff --git a/src/server/game/AI/PlayerAI/BotClassAI/BotRogueAI.cpp b/src/server/game/AI/PlayerAI/BotClassAI/BotRogueAI.cpp index 7a1a706..d40e0c8 100644 --- a/src/server/game/AI/PlayerAI/BotClassAI/BotRogueAI.cpp +++ b/src/server/game/AI/PlayerAI/BotClassAI/BotRogueAI.cpp @@ -26,15 +26,20 @@ void BotRogueAI::InitializeSpells() { + // SylvaniaCore: recalibration Legion. Les identifiants d origine dataient + // d une version bien anterieure du jeu et n existaient plus dans le livre de + // sorts des bots : la constante valait 0 et toute la branche etait sautee en + // silence. Valeurs verifiees presentes en base chez les bots de niveau 110. + RogueGuard_Sneak = FindMaxRankSpellByExist(1784); RogueGuard_ShadowCloak = FindMaxRankSpellByExist(31224); RogueGuard_Disappear = FindMaxRankSpellByExist(1856); - RogueGuard_Dodge = FindMaxRankSpellByExist(248777); + RogueGuard_Dodge = FindMaxRankSpellByExist(5277); // Evasion RogueGuard_Sprint = FindMaxRankSpellByExist(65864); RogueSneak_Stick = FindMaxRankSpellByExist(30980); RogueSneak_Premeditate = FindMaxRankSpellByExist(235777); - RogueSneak_Ambush = FindMaxRankSpellByExist(8676); + RogueSneak_Ambush = FindMaxRankSpellByExist(703); // Garrot RogueSneak_Surprise = FindMaxRankSpellByExist(1833); RogueAssist_ShadowDance = FindMaxRankSpellByExist(185313); @@ -42,7 +47,7 @@ void BotRogueAI::InitializeSpells() RogueAssist_ReadyCD = FindMaxRankSpellByExist(145426); RogueAssist_Blind = FindMaxRankSpellByExist(2094); RogueAssist_Disarm = FindMaxRankSpellByExist(236077); - RogueAssist_NextCrit = FindMaxRankSpellByExist(213981); + RogueAssist_NextCrit = FindMaxRankSpellByExist(79140); // Vendetta RogueAssist_blood = FindMaxRankSpellByExist(60177); RogueAssist_FastEnergy = FindMaxRankSpellByExist(13750); RogueAssist_BlockCast = FindMaxRankSpellByExist(1766); @@ -52,14 +57,14 @@ void BotRogueAI::InitializeSpells() RogueAOE_Knife = FindMaxRankSpellByExist(51723); RogueAOE_AllDance = FindMaxRankSpellByExist(51723); - RogueAttack_Blood = FindMaxRankSpellByExist(65954); + RogueAttack_Blood = FindMaxRankSpellByExist(1943); // Rupture RogueAttack_Ghost = FindMaxRankSpellByExist(123437); - RogueAttack_Injure = FindMaxRankSpellByExist(31022); + RogueAttack_Injure = FindMaxRankSpellByExist(1329); // Mutilation RogueAttack_PoisonAtt = FindMaxRankSpellByExist(76511); RogueAttack_BackAtt = FindMaxRankSpellByExist(53); RogueAttack_EvilAtt = FindMaxRankSpellByExist(1752); - RogueAttack_Damage = FindMaxRankSpellByExist(196819); + RogueAttack_Damage = FindMaxRankSpellByExist(32645); // Envenimer RogueAttack_Separate = FindMaxRankSpellByExist(1079); RogueAttack_Stun = FindMaxRankSpellByExist(408); RogueAttack_PoisonDmg = FindMaxRankSpellByExist(145416); diff --git a/src/server/game/AI/PlayerAI/BotClassAI/BotShamanAI.cpp b/src/server/game/AI/PlayerAI/BotClassAI/BotShamanAI.cpp index 89f3686..f92f1d9 100644 --- a/src/server/game/AI/PlayerAI/BotClassAI/BotShamanAI.cpp +++ b/src/server/game/AI/PlayerAI/BotClassAI/BotShamanAI.cpp @@ -21,6 +21,11 @@ void BotShamanAI::InitializeSpells() { + // SylvaniaCore: recalibration Legion. Les identifiants d origine dataient + // d une version bien anterieure du jeu et n existaient plus dans le livre de + // sorts des bots : la constante valait 0 et toute la branche etait sautee en + // silence. Valeurs verifiees presentes en base chez les bots de niveau 110. + ShamanIDLE_LifeWeapon = FindMaxRankSpellByExist(32911); ShamanIDLE_IceWeapon = FindMaxRankSpellByExist(78273); ShamanIDLE_FireWeapon = FindMaxRankSpellByExist(160098); @@ -32,8 +37,8 @@ void BotShamanAI::InitializeSpells() ShamanShield_Lightning = FindMaxRankSpellByExist(20545); ShamanAssist_Frog = FindMaxRankSpellByExist(11641); - ShamanAssist_HealCrit = FindMaxRankSpellByExist(137531); - ShamanAssist_MomentHeal = FindMaxRankSpellByExist(127316); + ShamanAssist_HealCrit = FindMaxRankSpellByExist(73920); // Pluie de soins + ShamanAssist_MomentHeal = FindMaxRankSpellByExist(108280); // Totem de maree de soins ShamanAssist_MomentCast = FindMaxRankSpellByExist(16166); ShamanAssist_BlockCast = FindMaxRankSpellByExist(52870); ShamanAssist_Cleansing = FindMaxRankSpellByExist(370); @@ -41,25 +46,25 @@ void BotShamanAI::InitializeSpells() ShamanAssist_Heroic = FindMaxRankSpellByExist(32182); ShamanAtt_StormStrike = FindMaxRankSpellByExist(17364); - ShamanAtt_FireStrike = FindMaxRankSpellByExist(60103); + ShamanAtt_FireStrike = FindMaxRankSpellByExist(51505); // Explosion de lave - ShamanCast_LightningArrow = FindMaxRankSpellByExist(218013); + ShamanCast_LightningArrow = FindMaxRankSpellByExist(403); // Eclair ShamanCast_LightningChain = FindMaxRankSpellByExist(190332); ShamanCast_LightningStorm = FindMaxRankSpellByExist(71935); - ShamanCast_FireThud = FindMaxRankSpellByExist(23038); + ShamanCast_FireThud = FindMaxRankSpellByExist(188389); // Salve de flammes ShamanCast_IceThud = FindMaxRankSpellByExist(22582); ShamanCast_EarthThud = FindMaxRankSpellByExist(43305); ShamanCast_FireStrike = FindMaxRankSpellByExist(58972); - ShamanHealth_Fast = FindMaxRankSpellByExist(71985); - ShamanHealth_Bast = FindMaxRankSpellByExist(253330); - ShamanHealth_Chain = FindMaxRankSpellByExist(237925); - ShamanHealth_Torrent = FindMaxRankSpellByExist(237920); - ShamanDispel_Refine = FindMaxRankSpellByExist(234893); + ShamanHealth_Fast = FindMaxRankSpellByExist(8004); // Salve de soins + ShamanHealth_Bast = FindMaxRankSpellByExist(77472); // Vague de soins + ShamanHealth_Chain = FindMaxRankSpellByExist(1064); // Chaine de soins + ShamanHealth_Torrent = FindMaxRankSpellByExist(61295); // Vague de rappel + ShamanDispel_Refine = FindMaxRankSpellByExist(77130); // Purification de l esprit ShamanTotem_Recycle = FindMaxRankSpellByExist(5394); - ShamanTotem_Life = FindMaxRankSpellByExist(35199); + ShamanTotem_Life = FindMaxRankSpellByExist(98008); // Totem de lien spirituel ShamanTotem_Mana = FindMaxRankSpellByExist(24854); ShamanTotem_BMana = FindMaxRankSpellByExist(24854); diff --git a/src/server/game/AI/PlayerAI/BotClassAI/BotWarlockAI.cpp b/src/server/game/AI/PlayerAI/BotClassAI/BotWarlockAI.cpp index 8388677..6c0531d 100644 --- a/src/server/game/AI/PlayerAI/BotClassAI/BotWarlockAI.cpp +++ b/src/server/game/AI/PlayerAI/BotClassAI/BotWarlockAI.cpp @@ -27,6 +27,11 @@ void BotWarlockAI::InitializeSpells() { + // SylvaniaCore: recalibration Legion. Les identifiants d origine dataient + // d une version bien anterieure du jeu et n existaient plus dans le livre de + // sorts des bots : la constante valait 0 et toute la branche etait sautee en + // silence. Valeurs verifiees presentes en base chez les bots de niveau 110. + WarlockIDLE_LowArmor = FindMaxRankSpellByExist(20798); WarlockIDLE_Armor = FindMaxRankSpellByExist(13787); WarlockIDLE_HighArmor = FindMaxRankSpellByExist(44520); @@ -58,9 +63,9 @@ void BotWarlockAI::InitializeSpells() WarlockAOE_MeleeFire = FindMaxRankSpellByExist(22539); WarlockAOE_RainFire = FindMaxRankSpellByExist(16005); - WarlockAOE_ShadowRage = FindMaxRankSpellByExist(39082); + WarlockAOE_ShadowRage = FindMaxRankSpellByExist(198590); // Drain d ame - WarlockCurse_UpDmg = FindMaxRankSpellByExist(79956); + WarlockCurse_UpDmg = FindMaxRankSpellByExist(980); // Agonie WarlockCurse_MoveLow = FindMaxRankSpellByExist(29539); WarlockCurse_MgcDmg = FindMaxRankSpellByExist(14868); WarlockCurse_MeleeLow = FindMaxRankSpellByExist(8552); @@ -69,7 +74,7 @@ void BotWarlockAI::InitializeSpells() WarlockDot_LeechSoul = FindMaxRankSpellByExist(48181); WarlockDot_HighDmg = FindMaxRankSpellByExist(30108); WarlockDot_LowDmg = FindMaxRankSpellByExist(172); - WarlockDot_AOEDmg = FindMaxRankSpellByExist(32863); + WarlockDot_AOEDmg = FindMaxRankSpellByExist(27243); // Semence de corruption WarlockDot_Sacrifice = FindMaxRankSpellByExist(15505); WarlockCast_ShadowArrow = FindMaxRankSpellByExist(9613); diff --git a/src/server/game/AI/PlayerAI/BotClassAI/BotWarriorAI.cpp b/src/server/game/AI/PlayerAI/BotClassAI/BotWarriorAI.cpp index fb3a3a0..05d9aa8 100644 --- a/src/server/game/AI/PlayerAI/BotClassAI/BotWarriorAI.cpp +++ b/src/server/game/AI/PlayerAI/BotClassAI/BotWarriorAI.cpp @@ -103,12 +103,17 @@ bool BotWarriorAI::NeedWaitSpecialSpell(uint32 diff) void BotWarriorAI::InitializeSpells() { - WarriorIDLE_AOEAddLife = FindMaxRankSpellByExist(45517); + // SylvaniaCore: recalibration Legion. Les identifiants d origine dataient + // d une version bien anterieure du jeu et n existaient plus dans le livre de + // sorts des bots : la constante valait 0 et toute la branche etait sautee en + // silence. Valeurs verifiees presentes en base chez les bots de niveau 110. + + WarriorIDLE_AOEAddLife = FindMaxRankSpellByExist(118038); // Mourir l arme a la main WarriorIDLE_AOEAddPower = FindMaxRankSpellByExist(27578); WarriorWeapon_Status = FindMaxRankSpellByExist(122990); WarriorDefance_Status = FindMaxRankSpellByExist(71); WarriorRage_Status = FindMaxRankSpellByExist(122989); - WarriorCommon_PowerAtt = FindMaxRankSpellByExist(25712); + WarriorCommon_PowerAtt = FindMaxRankSpellByExist(1464); // Salve WarriorCommon_PowerThrow = FindMaxRankSpellByExist(57755); WarriorCommon_PowerRelife = FindMaxRankSpellByExist(184364); WarriorCommon_ClearCtrl = FindMaxRankSpellByExist(18499); @@ -116,34 +121,34 @@ void BotWarriorAI::InitializeSpells() WarriorCommon_SweepAtt = FindMaxRankSpellByExist(231833); WarriorCommon_AddPower = FindMaxRankSpellByExist(173401); WarriorCommon_AOEDecPower = FindMaxRankSpellByExist(27579); - WarriorDefance_HPojia = FindMaxRankSpellByExist(186688); - WarriorDefance_Fuchou = FindMaxRankSpellByExist(40392); - WarriorDefance_ShieldBlock = FindMaxRankSpellByExist(38031); + WarriorDefance_HPojia = FindMaxRankSpellByExist(190456); // Ignorer la douleur + WarriorDefance_Fuchou = FindMaxRankSpellByExist(6572); // Vengeance + WarriorDefance_ShieldBlock = FindMaxRankSpellByExist(2565); // Blocage WarriorDefance_ShieldAtt = FindMaxRankSpellByExist(23922); WarriorDefance_Pojia = FindMaxRankSpellByExist(25051); WarriorDefance_MaxLife = FindMaxRankSpellByExist(12975); WarriorDefance_ShiledWall = FindMaxRankSpellByExist(871); WarriorDefance_Disarm = FindMaxRankSpellByExist(11879); - WarriorDefance_Support = FindMaxRankSpellByExist(41198); + WarriorDefance_Support = FindMaxRankSpellByExist(1160); // Cri demoralisant WarriorDefance_Conk = FindMaxRankSpellByExist(22427); - WarriorDefance_AOEConk = FindMaxRankSpellByExist(46968); + WarriorDefance_AOEConk = FindMaxRankSpellByExist(6343); // Coup de tonnerre WarriorWeaponDefance_AOEAtt = FindMaxRankSpellByExist(165749); WarriorWeaponDefance_Bleed = FindMaxRankSpellByExist(43931); - WarriorWeaponDefance_SpellReflect = FindMaxRankSpellByExist(57643); + WarriorWeaponDefance_SpellReflect = FindMaxRankSpellByExist(23920); // Renvoi de sort WarriorWeaponDefance_ShieldHit = FindMaxRankSpellByExist(149383); WarriorWeapon_SwordStorm = FindMaxRankSpellByExist(9632); - WarriorWeapon_HighThrow = FindMaxRankSpellByExist(65940); + WarriorWeapon_HighThrow = FindMaxRankSpellByExist(167105); // Broyeur de colosse WarriorWeapon_Charge = FindMaxRankSpellByExist(100); WarriorWeapon_Suppress = FindMaxRankSpellByExist(7384); WarriorWeapon_Backstorm = FindMaxRankSpellByExist(22857); - WarriorWeapon_DeadAtt = FindMaxRankSpellByExist(27580); - WarriorWeaponRage_FullKill = FindMaxRankSpellByExist(5308); + WarriorWeapon_DeadAtt = FindMaxRankSpellByExist(12294); // Frappe mortelle + WarriorWeaponRage_FullKill = FindMaxRankSpellByExist(163201); // Execution WarriorWeaponRage_WinAttack = FindMaxRankSpellByExist(34428); WarriorWeaponRage_Backfillet = FindMaxRankSpellByExist(1715); WarriorRage_Harsh = FindMaxRankSpellByExist(12323); WarriorRage_HeadAtt = FindMaxRankSpellByExist(6552); WarriorRage_Intercept = FindMaxRankSpellByExist(20615); - WarriorRage_Whirlwind = FindMaxRankSpellByExist(12950); + WarriorRage_Whirlwind = FindMaxRankSpellByExist(1680); // Tourbillon WarriorRage_Impertinency = FindMaxRankSpellByExist(13847); WarriorRage_Needdead = FindMaxRankSpellByExist(199261); WarriorRage_Bloodthirsty = FindMaxRankSpellByExist(39071); diff --git a/sylvania/RECALIBRATION-IA-CLASSES.md b/sylvania/RECALIBRATION-IA-CLASSES.md new file mode 100644 index 0000000..dcb479c --- /dev/null +++ b/sylvania/RECALIBRATION-IA-CLASSES.md @@ -0,0 +1,104 @@ +# Recalibration Legion des IA de classe des PlayerBots + +**Serveur :** Sylvania Legion (DestinyCore 7.3.5) · **Relevé :** 16/08/2026 + +## 1. Le constat + +Les IA de `src/server/game/AI/PlayerAI/BotClassAI/` résolvent leurs sorts par +`FindMaxRankSpellByExist(id)`. Quand le bot ne connaît pas l'identifiant, la +constante vaut 0 et toutes les branches qui en dépendent sont sautées +silencieusement. Mesure sur les bots niveau 110 du serveur : + +| Classe | Sorts réclamés | Réellement connus | Taux | +|---|---|---|---| +| Chaman | 43 | 3 | **7 %** | +| Mage | 46 | 4 | **9 %** | +| Chasseur | 41 | 6 | 15 % | +| Démoniste | 44 | 7 | 16 % | +| Prêtre | 39 | 7 | 18 % | +| Druide | 56 | 11 | 20 % | +| Paladin | 42 | 9 | 21 % | +| Guerrier | 45 | 10 | 22 % | +| Voleur | 31 | 8 | 26 % | + +**80 à 93 % du répertoire de chaque IA est du code mort.** Les identifiants +datent d'une version bien antérieure du jeu. + +## 2. Méthode + +La source de vérité est **la base du serveur**, pas une documentation externe : +une requête sur `character_spell` dit exactement ce qu'un bot d'une classe et +d'un niveau donnés possède. Wowhead et Icy Veins servent à décider *l'ordre* des +sorts dans la rotation ; la base valide qu'ils sont castables. + +```sql +SELECT DISTINCT s.spell FROM character_spell s JOIN characters c ON c.guid=s.guid +WHERE c.class = AND c.level >= 100 AND s.spell IN (); +``` + +## 3. Kits Legion vérifiés présents chez les bots + +Spécialisation entre parenthèses = celle que portent les bots du siège. + +### Guerrier (Armes 71, Protection 73) +`12294` Frappe mortelle · `1464` Salve · `163201` Exécution · `167105` Broyeur +de colosse · `1680` Tourbillon · `34428` Fureur sanguinaire · `1719` Cri de +guerre · `118038` Mourir l'arme à la main · `7384` Waylay +Protection : `23922` Coup de bouclier · `6572` Vengeance · `6343` Coup de +tonnerre · `2565` Blocage · `190456` Ignorer la douleur · `1160` Cri +démoralisant · `23920` Renvoi de sort + +### Paladin (Vindicte 70) +`184575` Lame de justice · `85256` Verdict du templier · `53385` Tempête divine +· `26573` Consécration · `31884` Colère vengeresse · `184662` Bouclier de +vengeance · `210191` Verbe de gloire · `19750` Éclair de lumière · `853` Marteau +de la justice · `96231` Réprimande + +### Chasseur (Maîtrise des bêtes 253) +`193455` Tir de cobra · `34026` Commandement de tuer · `120679` Bête sauvage · +`19574` Furie bestiale · `193530` Aspect du sauvage · `120360` Barrage · `2643` +Tir multiple · `5116` Tir de diversion · `781` Repli + +### Voleur (Assassinat 259) +`1329` Mutilation · `32645` Envenimer · `1943` Rupture · `703` Garrot · `79140` +Vendetta · `51723` Éventail de couteaux · `1784` Camouflage · `1856` Disparition +· `5277` Évasion + +### Prêtre (Ombre 258) +`8092` Attaque mentale · `15407` Flagellation mentale · `589` Mot de l'ombre : +douleur · `34914` Toucher vampirique · `228260` Éruption du Vide · `32379` Mot +de l'ombre : mort · `47585` Dispersion · `232698` Forme d'ombre · `17` Mot de +pouvoir : bouclier · `15487` Silence · `2061` Soins rapides + +### Chaman (Restauration 264) +`77472` Vague de soins · `8004` Salve de soins · `1064` Chaîne de soins · +`61295` Vague de rappel · `73920` Pluie de soins · `98008` Totem de lien +spirituel · `108280` Totem de marée de soins · `77130` Purification de l'esprit +· `403` Éclair · `188389` Salve de flammes · `51505` Explosion de lave + +### Démoniste (Affliction 265) +`980` Agonie · `172` Corruption · `30108` Affliction instable · `198590` Drain +d'âme · `27243` Semence de corruption · `48181` Traque · `1454` Connexion + +### Druide (Équilibre 102, Gardien 104) +Équilibre : `190984` Courroux solaire · `194153` Frappe lunaire · `93402` Feu +solaire · `78674` Poussée d'étoiles · `191034` Pluie d'étoiles · `194223` +Alignement céleste +Gardien : `33917` Mutilation · `192081` Fourrure de fer · `22842` Régénération +frénétique · `61336` Instincts de survie + +## 4. Avancement + +| Classe | État | +|---|---| +| Mage | ✅ 7 constantes recalibrées (rotation Givre, zone, défensif) | +| Guerrier, Paladin, Chasseur, Voleur, Prêtre, Chaman, Démoniste, Druide | kit vérifié, recalibration à faire | + +## 5. Trous restants + +Des sorts pourtant fondamentaux manquent aux bots : Charge (`100`) et Provocation +(`355`) chez le guerrier, Jugement (`20271`) et Frappe du croisé (`35395`) chez +le paladin, Nova de givre (`122`) et Contresort (`2139`) chez le mage. L'octroi +des sorts reste donc incomplet malgré `LearnDefaultSkills` et +`LearnSpecializationSpells` — à creuser séparément, probablement du côté des +sorts de rang de spécialisation octroyés par niveau.