mirror of
https://github.com/mod-playerbots/mod-playerbots.git
synced 2026-01-13 09:07:19 +00:00
Compare commits
141 Commits
hermensbas
...
revert-149
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
1eba0e1e1e | ||
|
|
2a340ce68f | ||
|
|
f2b5580495 | ||
|
|
ffa8c6d94a | ||
|
|
24e69229e3 | ||
|
|
c503199422 | ||
|
|
31b19aabc7 | ||
|
|
aea58414b0 | ||
|
|
06e45300e1 | ||
|
|
1ea17e593a | ||
|
|
25726f54b1 | ||
|
|
7dac49cf9c | ||
|
|
a5120c0a7c | ||
|
|
0cc15411c1 | ||
|
|
01915ffa35 | ||
|
|
2e1507b794 | ||
|
|
a19604024e | ||
|
|
55b58a2ef6 | ||
|
|
972e2604ce | ||
|
|
aaa9e1a42c | ||
|
|
0afeca4300 | ||
|
|
df77668b4b | ||
|
|
c3eecc0d7c | ||
|
|
7ff56dfd07 | ||
|
|
873767db7c | ||
|
|
03a56405f5 | ||
|
|
6f79193d7a | ||
|
|
b0f3de65f5 | ||
|
|
30bd58be67 | ||
|
|
c20fb34470 | ||
|
|
34ce17fb3a | ||
|
|
e525c22d85 | ||
|
|
ec8e9db1ed | ||
|
|
59555b2248 | ||
|
|
c8f32569a8 | ||
|
|
23d9931f65 | ||
|
|
ec4ab34f94 | ||
|
|
62e2ca247a | ||
|
|
d9b57fcfd4 | ||
|
|
05d3a44481 | ||
|
|
662e7f1b0b | ||
|
|
e042e3b12b | ||
|
|
b9dbfe9646 | ||
|
|
3228667121 | ||
|
|
0547ce5cf7 | ||
|
|
f5a6194808 | ||
|
|
f23b2ea2f6 | ||
|
|
bdfd45c9a0 | ||
|
|
e8954f6cba | ||
|
|
dff4934dd1 | ||
|
|
f26c4e99f6 | ||
|
|
fc69dd5ddd | ||
|
|
01f0b71a17 | ||
|
|
f35e39e19c | ||
|
|
ca0dafd67b | ||
|
|
22d1cc9d57 | ||
|
|
0b74820f80 | ||
|
|
c9fb2e35cb | ||
|
|
7f9eb9f1a0 | ||
|
|
fcb956ec1b | ||
|
|
90518a59ae | ||
|
|
5c1e9576b7 | ||
|
|
ace813516d | ||
|
|
e175eb1178 | ||
|
|
17f50f780d | ||
|
|
4f69b7bb48 | ||
|
|
782bbc9d0e | ||
|
|
0362db94ad | ||
|
|
a41abb54cb | ||
|
|
8586796cec | ||
|
|
907f1aff61 | ||
|
|
b388657bf6 | ||
|
|
2c383339d8 | ||
|
|
0eb7cdba64 | ||
|
|
21de08baab | ||
|
|
20025b7dfa | ||
|
|
e60876a1cb | ||
|
|
6d5717234a | ||
|
|
92f1dbd3f1 | ||
|
|
f5f4f32799 | ||
|
|
11b96b51b7 | ||
|
|
311bf32da5 | ||
|
|
fe9791e1ec | ||
|
|
19399c6f57 | ||
|
|
a41c1912ac | ||
|
|
21d8f32d24 | ||
|
|
bf56154eee | ||
|
|
e46269920a | ||
|
|
3717c6133e | ||
|
|
1881ef1fe0 | ||
|
|
876455baca | ||
|
|
3c442a6b71 | ||
|
|
750d557e6a | ||
|
|
8057a5d7ac | ||
|
|
c218dbe653 | ||
|
|
6588ca5878 | ||
|
|
f5aa484e8d | ||
|
|
fbf8ed9256 | ||
|
|
df6b1490b1 | ||
|
|
179c34e3a9 | ||
|
|
45d046f427 | ||
|
|
31f2c6a20d | ||
|
|
37458f0dc5 | ||
|
|
02343edc46 | ||
|
|
bc737ecc68 | ||
|
|
704e02e9cc | ||
|
|
5f00b9bbd5 | ||
|
|
5469333465 | ||
|
|
2dad8bf01d | ||
|
|
78116fe37e | ||
|
|
5f8754123d | ||
|
|
c9b4cfa184 | ||
|
|
957a60cd1d | ||
|
|
b661264c53 | ||
|
|
77c2354c3f | ||
|
|
0c3a799aae | ||
|
|
b369b1f9ae | ||
|
|
fa7b863035 | ||
|
|
4f5f7d286e | ||
|
|
6cb9f56c4e | ||
|
|
3e0f23536d | ||
|
|
12065a6ad5 | ||
|
|
f37ef41523 | ||
|
|
cb8c7a84db | ||
|
|
93975cc898 | ||
|
|
c5010b3809 | ||
|
|
0cf41ad690 | ||
|
|
86dbf54584 | ||
|
|
c38303cba7 | ||
|
|
2144c95311 | ||
|
|
28de238422 | ||
|
|
ab345b8847 | ||
|
|
683c6e39e4 | ||
|
|
95410c5710 | ||
|
|
106117003f | ||
|
|
3900237ffd | ||
|
|
548746c25f | ||
|
|
f7e64589e8 | ||
|
|
8545225923 | ||
|
|
ffc96b664e | ||
|
|
aa6f8153a1 |
26
README.md
26
README.md
@@ -2,6 +2,8 @@
|
||||
<a href="https://github.com/liyunfan1223/mod-playerbots/blob/master/README.md">English</a>
|
||||
|
|
||||
<a href="https://github.com/liyunfan1223/mod-playerbots/blob/master/README_CN.md">中文</a>
|
||||
|
|
||||
<a href="https://github.com/brighton-chi/mod-playerbots/blob/readme/README_ES.md">Español</a>
|
||||
</p>
|
||||
|
||||
|
||||
@@ -16,23 +18,25 @@
|
||||
</div>
|
||||
|
||||
# Playerbots Module
|
||||
`mod-playerbots` is an [AzerothCore](https://www.azerothcore.org/) module that adds player-like bots to a server. The project is based off [IKE3's Playerbots](https://github.com/ike3/mangosbot). Features include:
|
||||
`mod-playerbots` is an [AzerothCore](https://www.azerothcore.org/) module that adds player-like bots to a server. The project is based off [IKE3's Playerbots](https://github.com/ike3/mangosbot) and requires a custom branch of AzerothCore to compile and run: [liyunfan1223/azerothcore-wotlk/tree/Playerbot](https://github.com/liyunfan1223/azerothcore-wotlk/tree/Playerbot).
|
||||
|
||||
- Bots that utilize real player data, allowing players to interact with their other characters, form parties, level up, and more;
|
||||
- Random bots that wander through the world and behave like players, simulating the MMO experience;
|
||||
- Bots capable of running raids and battlegrounds;
|
||||
Features include:
|
||||
|
||||
- The ability to log in alt characters as bots, allowing players to interact with their other characters, form parties, level up, and more;
|
||||
- Random bots that wander through the world, complete quests, and otherwise behave like players, simulating the MMO experience;
|
||||
- Bots capable of running most raids and battlegrounds;
|
||||
- Highly configurable settings to define how bots behave;
|
||||
- Excellent performance, even when running thousands of bots.
|
||||
|
||||
**This project is still under development**. If you encounter any errors or experience crashes, we kindly request that you [report them as GitHub issues](https://github.com/liyunfan1223/mod-playerbots/issues/new?template=bug_report.md). Your valuable feedback will help us improve this project collaboratively.
|
||||
|
||||
**Playerbots Module** has a **[Discord server](https://discord.gg/NQm5QShwf9)** where you can discuss the project.
|
||||
`mod-playerbots` has a **[Discord server](https://discord.gg/NQm5QShwf9)** where you can discuss the project, ask questions, and get involved in the community!
|
||||
|
||||
## Installation
|
||||
|
||||
### Classic Installation
|
||||
|
||||
`mod-playerbots` requires a custom branch of AzerothCore to work: [liyunfan1223/azerothcore-wotlk/tree/Playerbot](https://github.com/liyunfan1223/azerothcore-wotlk/tree/Playerbot). To install the module, simply run:
|
||||
As noted above, `mod-playerbots` requires a custom branch of AzerothCore: [liyunfan1223/azerothcore-wotlk/tree/Playerbot](https://github.com/liyunfan1223/azerothcore-wotlk/tree/Playerbot). To install the module, simply run:
|
||||
|
||||
```bash
|
||||
git clone https://github.com/liyunfan1223/azerothcore-wotlk.git --branch=Playerbot
|
||||
@@ -81,21 +85,21 @@ Use `docker compose up -d --build` to build and run the server. For more informa
|
||||
|
||||
## Documentation
|
||||
|
||||
The [Playerbots Wiki](https://github.com/liyunfan1223/mod-playerbots/wiki) contains an extensive overview of addons, commands, and recommended configurations. Please note that documentation may be incomplete or out-of-date in some sections. Contributions are welcome.
|
||||
The [Playerbots Wiki](https://github.com/liyunfan1223/mod-playerbots/wiki) contains an extensive overview of addons, commands, raids with programmed bot strategies, and recommended performance configurations. Please note that documentation may be incomplete or out-of-date in some sections. Contributions are welcome.
|
||||
|
||||
## Frequently Asked Questions
|
||||
|
||||
- **Why aren't my bots casting spells?** Please make sure that the necessary English DBC file (enUS) is present.
|
||||
- **What platforms are supported?** We support Ubuntu, Windows, and macOS. Other Linux distros may work, but will not receive support.
|
||||
- **Why isn't my source compiling?** Please [check the build status of our CI](https://github.com/liyunfan1223/mod-playerbots/actions). If the latest build is failing, rever to the last successful commit until we address the issue.
|
||||
- **Why isn't my source compiling?** Please ensure that you are compiling with the required [custom branch of AzerothCore](https://github.com/liyunfan1223/azerothcore-wotlk/tree/Playerbot). Additionally, please [check the build status of our CI](https://github.com/liyunfan1223/mod-playerbots/actions). If the latest build is failing, rever to the last successful commit until we address the issue.
|
||||
|
||||
## Addons
|
||||
|
||||
Typically, bots are controlled via chat commands. For larger bot groups, this can be unwieldy. As an alternative, community members have developed client Add-Ons to allow controlling bots through the in-game UI. We recommend you check out their projects:
|
||||
|
||||
- [Multibot](https://github.com/Macx-Lio/MultiBot) (by Macx-Lio)
|
||||
- [Unbot Addon (zh)](https://github.com/liyunfan1223/unbot-addon) (Chinese version by Liyunfan)
|
||||
- [Unbot Addon (en)](https://github.com/noisiver/unbot-addon/tree/english) (English version translated by @Revision)
|
||||
- [Multibot](https://github.com/Macx-Lio/MultiBot) (by Macx-Lio), which includes English, Chinese, French, German, Korean, Russian, and Spanish support [note: active development is temporarily continuing on a fork in Macx-Lio's absence (https://github.com/Wishmaster117/MultiBot)]
|
||||
- [Unbot Addon (zh)](https://github.com/liyunfan1223/unbot-addon) (Chinese version by Liyunfan) [note: no longer under active development]
|
||||
- [Unbot Addon (en)](https://github.com/noisiver/unbot-addon/tree/english) (English version translated by @Revision) [note: no longer under active development]
|
||||
|
||||
## Acknowledgements
|
||||
|
||||
|
||||
@@ -21,6 +21,7 @@
|
||||
# THRESHOLDS
|
||||
# QUESTS
|
||||
# COMBAT
|
||||
# PALADIN BUFFS STRATEGIES
|
||||
# CHEATS
|
||||
# SPELLS
|
||||
# FLIGHTPATH
|
||||
@@ -158,6 +159,9 @@ AiPlayerbot.RandomBotGuildNearby = 0
|
||||
# Number of guilds created by randombots
|
||||
AiPlayerbot.RandomBotGuildCount = 20
|
||||
|
||||
# Maximum number of members in randombot guilds (minimum is hardcoded to 10)
|
||||
AiPlayerbot.RandomBotGuildSizeMax = 15
|
||||
|
||||
# Delete all randombot guilds if set to 1
|
||||
AiPlayerbot.DeleteRandomBotGuilds = 0
|
||||
|
||||
@@ -174,10 +178,6 @@ AiPlayerbot.SummonWhenGroup = 1
|
||||
# Selfbot permission level (0 = disabled, 1 = GM only (default), 2 = all players, 3 = activate on login)
|
||||
AiPlayerbot.SelfBotLevel = 1
|
||||
|
||||
# Give free food to bots
|
||||
# Default: 1 (enabled)
|
||||
AiPlayerbot.FreeFood = 1
|
||||
|
||||
# Non-GM player can only use init=auto to initialize bots based on their own level and gearscore
|
||||
# Default: 0 (non-GM player can use any intialization commands)
|
||||
AiPlayerbot.AutoInitOnly = 0
|
||||
@@ -443,7 +443,7 @@ AiPlayerbot.AutoAvoidAoe = 1
|
||||
AiPlayerbot.MaxAoeAvoidRadius = 15.0
|
||||
|
||||
# A whitelist of aoe spell IDs that should not be avoided
|
||||
AiPlayerbot.AoeAvoidSpellWhitelist = 50759,57491,13810
|
||||
AiPlayerbot.AoeAvoidSpellWhitelist = 50759,57491,13810,29946
|
||||
|
||||
# Enable healer bot save mana strategy
|
||||
# Default: 1 (enabled)
|
||||
@@ -461,6 +461,24 @@ AiPlayerbot.FleeingEnabled = 1
|
||||
#
|
||||
####################################################################################################
|
||||
|
||||
####################################################################################################
|
||||
# PALADIN BUFFS STRATEGIES
|
||||
#
|
||||
#
|
||||
|
||||
# Min group size to use Greater buffs (Paladin, Mage, Druid)
|
||||
# Default: 3
|
||||
AiPlayerbot.MinBotsForGreaterBuff = 3
|
||||
|
||||
# Cooldown (seconds) between reagent-missing RP warnings, per bot & per buff
|
||||
# Default: 30
|
||||
AiPlayerbot.RPWarningCooldown = 30
|
||||
|
||||
#
|
||||
#
|
||||
#
|
||||
####################################################################################################
|
||||
|
||||
####################################################################################################
|
||||
# CHEATS
|
||||
#
|
||||
@@ -470,6 +488,34 @@ AiPlayerbot.FleeingEnabled = 1
|
||||
# Default: 1 (enabled)
|
||||
AiPlayerbot.MaintenanceCommand = 1
|
||||
|
||||
# Enable/Disable specific maintenance command functionality for alt bots
|
||||
# Disable to prevent players from giving free bags, spells, skill levels etc to their alt bots
|
||||
# Default: 1 (enabled)
|
||||
AiPlayerbot.AltMaintenanceAmmo = 1
|
||||
AiPlayerbot.AltMaintenanceFood = 1
|
||||
AiPlayerbot.AltMaintenanceReagents = 1
|
||||
AiPlayerbot.AltMaintenanceConsumables = 1
|
||||
AiPlayerbot.AltMaintenancePotions = 1
|
||||
|
||||
AiPlayerbot.AltMaintenanceBags = 1
|
||||
AiPlayerbot.AltMaintenanceMounts = 1
|
||||
AiPlayerbot.AltMaintenanceSkills = 1
|
||||
|
||||
AiPlayerbot.AltMaintenanceClassSpells = 1
|
||||
AiPlayerbot.AltMaintenanceAvailableSpells = 1
|
||||
AiPlayerbot.AltMaintenanceSpecialSpells = 1
|
||||
AiPlayerbot.AltMaintenanceTalentTree = 1
|
||||
AiPlayerbot.AltMaintenanceGlyphs = 1
|
||||
AiPlayerbot.AltMaintenanceGemsEnchants = 1
|
||||
|
||||
AiPlayerbot.AltMaintenancePet = 1
|
||||
AiPlayerbot.AltMaintenancePetTalents = 1
|
||||
|
||||
AiPlayerbot.AltMaintenanceReputation = 1
|
||||
AiPlayerbot.AltMaintenanceAttunementQuests = 1
|
||||
AiPlayerbot.AltMaintenanceKeyring = 1
|
||||
|
||||
|
||||
# Enable/Disable autogear command, which automatically upgrades bots' gear; the quality is limited by AutoGearQualityLimit and AutoGearScoreLimit
|
||||
# Default: 1 (enabled)
|
||||
AiPlayerbot.AutoGearCommand = 1
|
||||
@@ -491,20 +537,21 @@ AiPlayerbot.AutoGearQualityLimit = 3
|
||||
# Max iLVL Phase 1(Kara, Gruul, Mag) = 125 | Phase 1.5(ZA) = 138 | Phase 2(SC, TK) = 141 | Phase 3(Hyjal, BT) = 156 | Phase 4(Sunwell) = 164
|
||||
# Wotlk
|
||||
# Max iLVL Tier 7(10/25) = 200/213 | Tier 8(10/25) = 225/232 | Tier 9(10/25) = 232/245 | Tier 10(10/25/HC) = 251/264/290
|
||||
# Max iLVL Phase 1(Naxx) = 224 | Phase 2(Ulduar) = 245 | Phase 3(ToC) = 258 | Phase 4(ICC) = 290
|
||||
# Max iLVL Phase 1(Naxx) = 224 | Phase 2(Ulduar) = 245 | Phase 3(ToC) = 258 | Phase 4(ICC) = 290
|
||||
# Default: 0 (no limit)
|
||||
AiPlayerbot.AutoGearScoreLimit = 0
|
||||
|
||||
# Enable/Disable cheats for bots
|
||||
# "food" (bots eat or drink without using food or drinks from their inventory)
|
||||
# "gold" (bots have infinite gold)
|
||||
# "health" (bots have infinite health)
|
||||
# "health" (bots immediately regenerate lost health)
|
||||
# "mana" (bots have infinite mana)
|
||||
# "power" (bots have infinite energy, rage, and runic power)
|
||||
# "taxi" (bots may use all flight paths, though they will not actually learn them)
|
||||
# "raid" (bots use cheats implemented into raid strategies)
|
||||
# "taxi" (bots may use all flight paths, though they will not actually learn them)
|
||||
# "raid" (bots use cheats implemented into raid strategies)
|
||||
# To use multiple cheats, separate them by commas below (e.g., to enable all, use "gold,health,mana,power,raid,taxi")
|
||||
# Default: taxi and raid are enabled
|
||||
AiPlayerbot.BotCheats = "taxi,raid"
|
||||
# Default: food, taxi, and raid are enabled
|
||||
AiPlayerbot.BotCheats = "food,taxi,raid"
|
||||
|
||||
#
|
||||
#
|
||||
@@ -654,7 +701,7 @@ AiPlayerbot.RandomGearQualityLimit = 3
|
||||
# Max iLVL Phase 1(Kara, Gruul, Mag) = 125 | Phase 1.5(ZA) = 138 | Phase 2(SC, TK) = 141 | Phase 3(Hyjal, BT) = 156 | Phase 4(Sunwell) = 164
|
||||
# Wotlk
|
||||
# Max iLVL Tier 7(10/25) = 200/213 | Tier 8(10/25) = 225/232 | Tier 9(10/25) = 232/245 | Tier 10(10/25/HC) = 251/264/290
|
||||
# Max iLVL Phase 1(Naxx) = 224 | Phase 2(Ulduar) = 245 | Phase 3(ToC) = 258 | Phase 4(ICC) = 290
|
||||
# Max iLVL Phase 1(Naxx) = 224 | Phase 2(Ulduar) = 245 | Phase 3(ToC) = 258 | Phase 4(ICC) = 290
|
||||
# Default: 0 (no limit)
|
||||
AiPlayerbot.RandomGearScoreLimit = 0
|
||||
|
||||
@@ -662,7 +709,7 @@ AiPlayerbot.RandomGearScoreLimit = 0
|
||||
# Default: 1 (enabled)
|
||||
AiPlayerbot.IncrementalGearInit = 1
|
||||
|
||||
# Set minimum level of bots that will enchant their equipment (Maxlevel + 1 to disable)
|
||||
# Set minimum level of bots that will enchant their equipment (if greater than RandomBotMaxlevel, bots will not enchant equipment)
|
||||
# Default: 60
|
||||
AiPlayerbot.MinEnchantingBotLevel = 60
|
||||
|
||||
@@ -699,6 +746,16 @@ AiPlayerbot.AutoUpgradeEquip = 1
|
||||
# Default: 0 (disabled)
|
||||
AiPlayerbot.HunterWolfPet = 0
|
||||
|
||||
# Default pet stance when a bot summons a pet
|
||||
# 0 = Passive, 1 = Defensive, 2 = Aggressive
|
||||
# Default: 1 (Defensive)
|
||||
AiPlayerbot.DefaultPetStance = 1
|
||||
|
||||
# Enable/disable debug messages about pet commands
|
||||
# 0 = Disabled, 1 = Enabled
|
||||
# Default = 0 (disabled)
|
||||
AiPlayerbot.PetChatCommandDebug = 0
|
||||
|
||||
# Prohibit hunter bots from creating pets with any family ID listed below in ExcludedHunterPetFamilies
|
||||
# See the creature_family database table for all pet families by ID (note: ID for spiders is 3)
|
||||
AiPlayerbot.ExcludedHunterPetFamilies = ""
|
||||
@@ -753,7 +810,7 @@ AiPlayerbot.botActiveAloneSmartScaleWhenMaxLevel = 80
|
||||
#
|
||||
|
||||
# Quest that will be completed and rewarded for all randombots
|
||||
AiPlayerbot.RandomBotQuestIds = "7848,3802,5505,6502,7761,10277,10285,11492,24499,24511,24710,24712"
|
||||
AiPlayerbot.RandomBotQuestIds = "7848,3802,5505,6502,7761,10277,10285,11492,13188,13189,24499,24511,24710,24712"
|
||||
|
||||
# Randombots will group with nearby randombots to do shared quests
|
||||
AiPlayerbot.RandomBotGroupNearby = 0
|
||||
@@ -804,12 +861,13 @@ AiPlayerbot.OpenGoSpell = 6477
|
||||
#
|
||||
|
||||
# Additional randombot strategies
|
||||
# Strategies added here are applied to all randombots, in addition (or subtraction) to spec-based default strategies. These rules are processed after the defaults.
|
||||
AiPlayerbot.RandomBotCombatStrategies = "+dps,+dps assist,-threat"
|
||||
# Strategies added here are applied to all randombots, in addition (or subtraction) to spec/role-based default strategies. These rules are processed after the defaults.
|
||||
# Example: "+threat,-potions"
|
||||
AiPlayerbot.RandomBotCombatStrategies = ""
|
||||
AiPlayerbot.RandomBotNonCombatStrategies = ""
|
||||
|
||||
# Additional altbot strategies
|
||||
# Strategies added here are applied to all altbots, in addition (or subtraction) to spec-based default strategies. These rules are processed after the defaults.
|
||||
# Strategies added here are applied to all altbots, in addition (or subtraction) to spec/role-based default strategies. These rules are processed after the defaults.
|
||||
AiPlayerbot.CombatStrategies = ""
|
||||
AiPlayerbot.NonCombatStrategies = ""
|
||||
|
||||
@@ -1006,6 +1064,20 @@ AiPlayerbot.RandomBotMaps = 0,1,530,571
|
||||
# Default: 0.25
|
||||
AiPlayerbot.ProbTeleToBankers = 0.25
|
||||
|
||||
# Control probability weights for bots teleporting to Capital city bankers
|
||||
# Sum of weights need not be 100. Set to 0 to disable teleporting to the city.
|
||||
AiPlayerbot.EnableWeightTeleToCityBankers = 1
|
||||
AiPlayerbot.TeleToStormwindWeight = 2
|
||||
AiPlayerbot.TeleToIronforgeWeight = 1
|
||||
AiPlayerbot.TeleToDarnassusWeight = 1
|
||||
AiPlayerbot.TeleToExodarWeight = 1
|
||||
AiPlayerbot.TeleToOrgrimmarWeight = 2
|
||||
AiPlayerbot.TeleToUndercityWeight = 1
|
||||
AiPlayerbot.TeleToThunderBluffWeight = 1
|
||||
AiPlayerbot.TeleToSilvermoonCityWeight = 1
|
||||
AiPlayerbot.TeleToShattrathCityWeight = 1
|
||||
AiPlayerbot.TeleToDalaranWeight = 1
|
||||
|
||||
# How far randombots are teleported after death
|
||||
AiPlayerbot.RandomBotTeleportDistance = 100
|
||||
|
||||
@@ -1110,7 +1182,7 @@ AiPlayerbot.DeleteRandomBotArenaTeams = 0
|
||||
AiPlayerbot.PvpProhibitedZoneIds = "2255,656,2361,2362,2363,976,35,2268,3425,392,541,1446,3828,3712,3738,3565,3539,3623,4152,3988,4658,4284,4418,4436,4275,4323,4395,3703,4298,3951"
|
||||
|
||||
# PvP Restricted Areas (bots don't pvp)
|
||||
AiPlayerbot.PvpProhibitedAreaIds = "976,35,392,2268,4161,4010,4317,4312,3649,3887,3958,3724,4080"
|
||||
AiPlayerbot.PvpProhibitedAreaIds = "976,35,392,2268,4161,4010,4317,4312,3649,3887,3958,3724,4080,3938,3754"
|
||||
|
||||
# Improve reaction speeds in battlegrounds and arenas (may cause lag)
|
||||
AiPlayerbot.FastReactInBG = 1
|
||||
@@ -1407,11 +1479,11 @@ AiPlayerbot.PremadeSpecGlyph.7.0 = 41536,43385,41532,43386,44923,45776
|
||||
AiPlayerbot.PremadeSpecLink.7.0.60 = 4530001520213351102301351
|
||||
AiPlayerbot.PremadeSpecLink.7.0.80 = 3530001523213351322301351-005050031
|
||||
AiPlayerbot.PremadeSpecName.7.1 = enh pve
|
||||
AiPlayerbot.PremadeSpecGlyph.7.1 = 41542,43385,41539,43386,44923,45771
|
||||
AiPlayerbot.PremadeSpecLink.7.1.60 = -30205033005001333031131131051
|
||||
AiPlayerbot.PremadeSpecLink.7.1.80 = 053030052-30205033005021333031131131051
|
||||
AiPlayerbot.PremadeSpecGlyph.7.1 = 41530,43385,41539,43386,44923,45771
|
||||
AiPlayerbot.PremadeSpecLink.7.1.60 = -30305003105021333031121131051
|
||||
AiPlayerbot.PremadeSpecLink.7.1.80 = 053030152-30305003105021333031131131051
|
||||
AiPlayerbot.PremadeSpecName.7.2 = resto pve
|
||||
AiPlayerbot.PremadeSpecGlyph.7.2 = 41517,43385,41527,43386,44923,45775
|
||||
AiPlayerbot.PremadeSpecGlyph.7.2 = 41527,43385,41517,43386,44923,45775
|
||||
AiPlayerbot.PremadeSpecLink.7.2.60 = --50005301235310501102321251
|
||||
AiPlayerbot.PremadeSpecLink.7.2.80 = -00502033-50005331335310501122331251
|
||||
AiPlayerbot.PremadeSpecName.7.3 = ele pvp
|
||||
@@ -1562,10 +1634,10 @@ AiPlayerbot.PremadeSpecLink.11.6.80 = 05320021--230033312031500531353013251
|
||||
#
|
||||
#
|
||||
|
||||
# Applies a permanent buff to all bots simulating effects of spells, flasks, food, runes, etc.
|
||||
# Applies automatically refreshing buffs to bots simulating effects of spells, flasks, food, runes, etc.
|
||||
# Requires sending the command "nc +worldbuff" in chat to a bot (or a group of bots) to enable
|
||||
# Each entry in the matrix should be formatted as follows: Entry:FactionID,ClassID,SpecID,MinimumLevel,MaximumLevel:SpellID1,SpellID2,etc.;
|
||||
# Use 0 for any field to make it agnostic (e.g., 0 for FactionID means the entry will apply buffs to either faction)
|
||||
# FactionID may be set to 0 for the entry to apply buffs to bots of either faction
|
||||
# The default entries create a cross-faction list of level 80 buffs for each implemented pve spec from the "Premade Specs" section
|
||||
# The default entries may be deleted or modified, and new custom entries may be added
|
||||
|
||||
@@ -1975,13 +2047,15 @@ AiPlayerbot.AllowedLogFiles = ""
|
||||
####################################################################################################
|
||||
# A list of gameObject GUID's that are not allowed for bots to interact with.
|
||||
#
|
||||
AiPlayerbot.DisallowedGameObjects = 176213,17155,2656,74448,19020,3719,3658,3705,3706,105579,75293,17155,2857,179490
|
||||
AiPlayerbot.DisallowedGameObjects = 176213,17155,2656,74448,19020,3719,3658,3705,3706,105579,75293,2857,179490,141596,160836,160845,179516,176224,181085,176112,128308,128403,165739,165738,175245,175970,176325,176327,123329,2560
|
||||
#
|
||||
# List of GUID's:
|
||||
# QuestItems:
|
||||
# 176213 = Blood of Heroes, 17155 = Defias Gunpowder, 2656 = Waterlogged Envelope
|
||||
# 176213 = Blood of Heroes, 17155 = Defias Gunpowder, 2656 = Waterlogged Envelope, 123329 = Baelogs Chest, 2560 = Half-Buried Bottle
|
||||
# Chests:
|
||||
# Large Solid Chest = 74448, Box of Assorted Parts = 19020, Food Crate = 3719, Water Barrel = 3658, Barrel of Milk = 3705, Barrel of sweet Nectar = 3706, Tattered Chest = 105579, Large bettered Chest = 75293, Solid Chest = 2857, Battered Foodlocker = 179490
|
||||
# Large Solid Chest = 74448, Box of Assorted Parts = 19020, Food Crate = 3719, Water Barrel = 3658, Barrel of Milk = 3705, Barrel of sweet Nectar = 3706, Tattered Chest = 105579, Large bettered Chest = 75293, Solid Chest = 2857, Battered Foodlocker = 179490, Witch Doctor's Chest = 141596, Relic Coffer = 160836, Dark Coffer = 160845, Fengus's Chest = 179516, Supply Crate = 176224/181085, Malor's Strongbox = 176112
|
||||
# Other:
|
||||
# Shallow Grave (Zul'Farrak) = 128308/128403, Grim Guzzler Boar (Blackrock Depths) = 165739, Dark Iron Ale Mug (Blackrock Depths) = 165738, Father Flame (Blackrock Spire) = 175245, Unforged Runic Breastplate (Blackrock Spire) = 175970, Blacksmithing Plans (Stratholme) = 176325/176327
|
||||
# Feel free to edit and help to complete.
|
||||
#
|
||||
####################################################################################################
|
||||
|
||||
100013
data/sql/characters/base/playerbots_names.sql
Normal file
100013
data/sql/characters/base/playerbots_names.sql
Normal file
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
0
data/sql/characters/updates/.gitkeep
Normal file
0
data/sql/characters/updates/.gitkeep
Normal file
@@ -0,0 +1,8 @@
|
||||
UPDATE guild
|
||||
SET
|
||||
EmblemStyle = FLOOR(RAND() * 181),
|
||||
EmblemColor = FLOOR(RAND() * 18),
|
||||
BorderStyle = FLOOR(RAND() * 8),
|
||||
BorderColor = FLOOR(RAND() * 18),
|
||||
BackgroundColor = FLOOR(RAND() * 52)
|
||||
WHERE EmblemStyle=0 AND EmblemColor=0 AND BorderStyle=0 AND BorderColor=0 AND BackgroundColor=0;
|
||||
@@ -8,7 +8,7 @@ CREATE TABLE IF NOT EXISTS `ai_playerbot_texts_chance` (
|
||||
|
||||
/*!40000 ALTER TABLE `ai_playerbot_texts_chance` DISABLE KEYS */;
|
||||
INSERT INTO `ai_playerbot_texts_chance` (`id`, `name`, `probability`) VALUES
|
||||
(1, 'taunt', 30),
|
||||
(2, 'aoe', 75),
|
||||
(3, 'loot', 20);
|
||||
(1, 'taunt', 30),
|
||||
(2, 'aoe', 75),
|
||||
(3, 'loot', 20);
|
||||
/*!40000 ALTER TABLE `ai_playerbot_texts_chance` ENABLE KEYS */;
|
||||
|
||||
@@ -53,16 +53,16 @@ INSERT INTO `playerbots_dungeon_suggestion_definition` VALUES
|
||||
(NULL, 'ub' , 'The Underbog' , 1, 0, 62, 70, NULL),
|
||||
(NULL, 'mt' , 'Mana-Tombs' , 1, 0, 63, 70, NULL),
|
||||
(NULL, 'ac' , 'Auchenai Crypts' , 1, 0, 64, 70, NULL),
|
||||
(NULL, 'seth', 'Sethekk Halls' , 1, 0, 66, 70, NULL),
|
||||
(NULL, 'seth', 'Sethekk Halls' , 1, 0, 66, 70, NULL),
|
||||
(NULL, 'oh' , 'Old Hillsbrad Foothills', 1, 0, 66, 70, NULL),
|
||||
(NULL, 'bm' , 'The Black Morass' , 1, 0, 68, 70, NULL),
|
||||
(NULL, 'mech', 'The Mechanar' , 1, 0, 68, 70, NULL),
|
||||
(NULL, 'bot' , 'The Botanica' , 1, 0, 69, 70, NULL),
|
||||
(NULL, 'arc' , 'The Arcatraz' , 1, 0, 69, 70, NULL),
|
||||
(NULL, 'sh' , 'The Shattered Halls' , 1, 0, 69, 70, NULL),
|
||||
(NULL, 'sv' , 'The Steamvault' , 1, 0, 69, 70, NULL),
|
||||
(NULL, 'sl' , 'Shadow Labyrinth' , 1, 0, 69, 70, NULL),
|
||||
(NULL, 'mgt' , 'Magister''s Terrace' , 1, 0, 70, 70, NULL),
|
||||
(NULL, 'bm' , 'The Black Morass' , 1, 0, 68, 70, NULL),
|
||||
(NULL, 'mech', 'The Mechanar' , 1, 0, 68, 70, NULL),
|
||||
(NULL, 'bot' , 'The Botanica' , 1, 0, 69, 70, NULL),
|
||||
(NULL, 'arc' , 'The Arcatraz' , 1, 0, 69, 70, NULL),
|
||||
(NULL, 'sh' , 'The Shattered Halls' , 1, 0, 69, 70, NULL),
|
||||
(NULL, 'sv' , 'The Steamvault' , 1, 0, 69, 70, NULL),
|
||||
(NULL, 'sl' , 'Shadow Labyrinth' , 1, 0, 69, 70, NULL),
|
||||
(NULL, 'mgt' , 'Magister''s Terrace' , 1, 0, 70, 70, NULL),
|
||||
|
||||
-- == The Burning Crusade (Heroic) ==
|
||||
|
||||
@@ -72,51 +72,51 @@ INSERT INTO `playerbots_dungeon_suggestion_definition` VALUES
|
||||
(NULL, 'ub' , 'The Underbog' , 1, 1, 70, 70, NULL),
|
||||
(NULL, 'mt' , 'Mana-Tombs' , 1, 1, 70, 70, NULL),
|
||||
(NULL, 'ac' , 'Auchenai Crypts' , 1, 1, 70, 70, NULL),
|
||||
(NULL, 'seth', 'Sethekk Halls' , 1, 1, 70, 70, NULL),
|
||||
(NULL, 'seth', 'Sethekk Halls' , 1, 1, 70, 70, NULL),
|
||||
(NULL, 'oh' , 'Old Hillsbrad Foothills', 1, 1, 70, 70, NULL),
|
||||
(NULL, 'bm' , 'The Black Morass' , 1, 1, 70, 70, NULL),
|
||||
(NULL, 'mech', 'The Mechanar' , 1, 1, 70, 70, NULL),
|
||||
(NULL, 'bot' , 'The Botanica' , 1, 1, 70, 70, NULL),
|
||||
(NULL, 'arc' , 'The Arcatraz' , 1, 1, 70, 70, NULL),
|
||||
(NULL, 'bm' , 'The Black Morass' , 1, 1, 70, 70, NULL),
|
||||
(NULL, 'mech', 'The Mechanar' , 1, 1, 70, 70, NULL),
|
||||
(NULL, 'bot' , 'The Botanica' , 1, 1, 70, 70, NULL),
|
||||
(NULL, 'arc' , 'The Arcatraz' , 1, 1, 70, 70, NULL),
|
||||
(NULL, 'sh' , 'The Shattered Halls' , 1, 1, 70, 70, NULL),
|
||||
(NULL, 'sv' , 'The Steamvault' , 1, 1, 70, 70, NULL),
|
||||
(NULL, 'sl' , 'Shadow Labyrinth' , 1, 1, 70, 70, NULL),
|
||||
(NULL, 'sv' , 'The Steamvault' , 1, 1, 70, 70, NULL),
|
||||
(NULL, 'sl' , 'Shadow Labyrinth' , 1, 1, 70, 70, NULL),
|
||||
(NULL, 'mgt' , 'Magister''s Terrace' , 1, 1, 70, 70, NULL),
|
||||
|
||||
-- == Wrath of the Lich King ==
|
||||
|
||||
(NULL, 'uk' , 'Utgarde Keep' , 2, 0, 70, 72, NULL),
|
||||
(NULL, 'nexus' , 'The Nexus' , 2, 0, 71, 73, NULL),
|
||||
(NULL, 'an' , 'Azjol-Nerub' , 2, 0, 72, 74, NULL),
|
||||
(NULL, 'uk' , 'Utgarde Keep' , 2, 0, 70, 72, NULL),
|
||||
(NULL, 'nexus' , 'The Nexus' , 2, 0, 71, 73, NULL),
|
||||
(NULL, 'an' , 'Azjol-Nerub' , 2, 0, 72, 74, NULL),
|
||||
(NULL, 'ak' , 'Ahn''kahet: The Old Kingdom', 2, 0, 73, 75, NULL),
|
||||
(NULL, 'dtk' , 'Drak''Tharon Keep' , 2, 0, 74, 76, NULL),
|
||||
(NULL, 'vh' , 'Violet Hold' , 2, 0, 75, 77, NULL),
|
||||
(NULL, 'gd' , 'Gundrak' , 2, 0, 76, 78, NULL),
|
||||
(NULL, 'hos' , 'Halls of Stone' , 2, 0, 77, 79, NULL),
|
||||
(NULL, 'hol' , 'Halls of Lightning' , 2, 0, 80, 80, NULL),
|
||||
(NULL, 'dtk' , 'Drak''Tharon Keep' , 2, 0, 74, 76, NULL),
|
||||
(NULL, 'vh' , 'Violet Hold' , 2, 0, 75, 77, NULL),
|
||||
(NULL, 'gd' , 'Gundrak' , 2, 0, 76, 78, NULL),
|
||||
(NULL, 'hos' , 'Halls of Stone' , 2, 0, 77, 79, NULL),
|
||||
(NULL, 'hol' , 'Halls of Lightning' , 2, 0, 80, 80, NULL),
|
||||
(NULL, 'cos' , 'The Culling of Stratholme' , 2, 0, 80, 80, NULL),
|
||||
(NULL, 'oculus', 'The Oculus' , 2, 0, 80, 80, NULL),
|
||||
(NULL, 'up' , 'Utgarde Pinnacle' , 2, 0, 80, 80, NULL),
|
||||
(NULL, 'toc' , 'Trial of the Champion' , 2, 0, 80, 80, NULL),
|
||||
(NULL, 'fos' , 'Forge of Souls' , 2, 0, 80, 80, NULL),
|
||||
(NULL, 'pos' , 'Pit of Saron' , 2, 0, 80, 80, NULL),
|
||||
(NULL, 'hor' , 'Halls of Reflection' , 2, 0, 80, 80, NULL),
|
||||
(NULL, 'oculus', 'The Oculus' , 2, 0, 80, 80, NULL),
|
||||
(NULL, 'up' , 'Utgarde Pinnacle' , 2, 0, 80, 80, NULL),
|
||||
(NULL, 'toc' , 'Trial of the Champion' , 2, 0, 80, 80, NULL),
|
||||
(NULL, 'fos' , 'Forge of Souls' , 2, 0, 80, 80, NULL),
|
||||
(NULL, 'pos' , 'Pit of Saron' , 2, 0, 80, 80, NULL),
|
||||
(NULL, 'hor' , 'Halls of Reflection' , 2, 0, 80, 80, NULL),
|
||||
|
||||
-- == Wrath of the Lich King (Heroic) ==
|
||||
|
||||
(NULL, 'uk' , 'Utgarde Keep' , 2, 1, 80, 80, NULL),
|
||||
(NULL, 'nexus' , 'The Nexus' , 2, 1, 80, 80, NULL),
|
||||
(NULL, 'an' , 'Azjol-Nerub' , 2, 1, 80, 80, NULL),
|
||||
(NULL, 'uk' , 'Utgarde Keep' , 2, 1, 80, 80, NULL),
|
||||
(NULL, 'nexus' , 'The Nexus' , 2, 1, 80, 80, NULL),
|
||||
(NULL, 'an' , 'Azjol-Nerub' , 2, 1, 80, 80, NULL),
|
||||
(NULL, 'ak' , 'Ahn''kahet: The Old Kingdom', 2, 1, 80, 80, NULL),
|
||||
(NULL, 'dtk' , 'Drak''Tharon Keep' , 2, 1, 80, 80, NULL),
|
||||
(NULL, 'vh' , 'Violet Hold' , 2, 1, 80, 80, NULL),
|
||||
(NULL, 'gd' , 'Gundrak' , 2, 1, 80, 80, NULL),
|
||||
(NULL, 'hos' , 'Halls of Stone' , 2, 1, 80, 80, NULL),
|
||||
(NULL, 'hol' , 'Halls of Lightning' , 2, 1, 80, 80, NULL),
|
||||
(NULL, 'dtk' , 'Drak''Tharon Keep' , 2, 1, 80, 80, NULL),
|
||||
(NULL, 'vh' , 'Violet Hold' , 2, 1, 80, 80, NULL),
|
||||
(NULL, 'gd' , 'Gundrak' , 2, 1, 80, 80, NULL),
|
||||
(NULL, 'hos' , 'Halls of Stone' , 2, 1, 80, 80, NULL),
|
||||
(NULL, 'hol' , 'Halls of Lightning' , 2, 1, 80, 80, NULL),
|
||||
(NULL, 'cos' , 'The Culling of Stratholme' , 2, 1, 80, 80, NULL),
|
||||
(NULL, 'oculus', 'The Oculus' , 2, 1, 80, 80, NULL),
|
||||
(NULL, 'up' , 'Utgarde Pinnacle' , 2, 1, 80, 80, NULL),
|
||||
(NULL, 'toc' , 'Trial of the Champion' , 2, 1, 80, 80, NULL),
|
||||
(NULL, 'fos' , 'Forge of Souls' , 2, 1, 80, 80, NULL),
|
||||
(NULL, 'pos' , 'Pit of Saron' , 2, 1, 80, 80, NULL),
|
||||
(NULL, 'hor' , 'Halls of Reflection' , 2, 1, 80, 80, NULL);
|
||||
(NULL, 'oculus', 'The Oculus' , 2, 1, 80, 80, NULL),
|
||||
(NULL, 'up' , 'Utgarde Pinnacle' , 2, 1, 80, 80, NULL),
|
||||
(NULL, 'toc' , 'Trial of the Champion' , 2, 1, 80, 80, NULL),
|
||||
(NULL, 'fos' , 'Forge of Souls' , 2, 1, 80, 80, NULL),
|
||||
(NULL, 'pos' , 'Pit of Saron' , 2, 1, 80, 80, NULL),
|
||||
(NULL, 'hor' , 'Halls of Reflection' , 2, 1, 80, 80, NULL);
|
||||
|
||||
@@ -25,226 +25,226 @@ CREATE TABLE `playerbots_enchants` (
|
||||
/*!40000 ALTER TABLE `playerbots_enchants` DISABLE KEYS */;
|
||||
DELETE FROM `playerbots_enchants`;
|
||||
INSERT INTO `playerbots_enchants` (`class`, `spec`, `spellid`, `slotid`, `name`) VALUES
|
||||
(1, 10, 20034, 15, 'Crusader '),
|
||||
(1, 10, 22779, 17, '30 Hit '),
|
||||
(1, 10, 27927, 10, '4 All Stats '),
|
||||
(1, 10, 27927, 11, '4 All Stats '),
|
||||
(1, 10, 27960, 4, '6 All Stats '),
|
||||
(1, 10, 27984, 16, 'Mongoose '),
|
||||
(1, 10, 29483, 2, '26 Attackpower 14 Crit '),
|
||||
(1, 10, 33996, 9, '26 Attackpower '),
|
||||
(1, 10, 34002, 8, '24 Attackpower '),
|
||||
(1, 10, 34004, 14, '12 Agility '),
|
||||
(1, 10, 34007, 7, 'Minor Speed 6 Agility'),
|
||||
(1, 10, 35452, 0, '34 Attackpower 16 Hit '),
|
||||
(1, 10, 35490, 6, '50 Attackpower 12 Crit '),
|
||||
(1, 11, 20034, 15, 'Crusader '),
|
||||
(1, 11, 20034, 16, 'Crusader '),
|
||||
(1, 11, 22779, 17, '30 Hit '),
|
||||
(1, 11, 27927, 10, '4 All Stats '),
|
||||
(1, 11, 27927, 11, '4 All Stats '),
|
||||
(1, 11, 27960, 4, '6 All Stats '),
|
||||
(1, 11, 29483, 2, '26 Attackpower 14 Crit '),
|
||||
(1, 11, 33996, 9, '26 Attackpower '),
|
||||
(1, 11, 34002, 8, '24 Attackpower '),
|
||||
(1, 11, 34004, 14, '12 Agility '),
|
||||
(1, 11, 34007, 7, 'Minor Speed 6 Agility'),
|
||||
(1, 11, 35452, 0, '34 Attackpower 16 Hit '),
|
||||
(1, 11, 35490, 6, '50 Attackpower 12 Crit '),
|
||||
(1, 12, 22779, 17, '30 Hit '),
|
||||
(1, 12, 25072, 9, '2% Threat '),
|
||||
(1, 12, 27906, 8, '12 Defense '),
|
||||
(1, 12, 27927, 10, '4 All Stats '),
|
||||
(1, 12, 27927, 11, '4 All Stats '),
|
||||
(1, 12, 27954, 7, '5% Root/Snare Resist 10 Hit'),
|
||||
(1, 12, 27960, 4, '6 All Stats '),
|
||||
(1, 12, 28004, 15, 'Battlemaster '),
|
||||
(1, 12, 34009, 16, '18 Stamina '),
|
||||
(1, 12, 35433, 2, '10 Dodge 15 Defense '),
|
||||
(1, 12, 35443, 0, '16 Defense 17 Dodge '),
|
||||
(1, 12, 35495, 6, '40 Stamina 12 Agility '),
|
||||
(1, 12, 47051, 14, '12 Defense '),
|
||||
(2, 20, 22779, 17, '30 Hit '),
|
||||
(2, 20, 27926, 10, '20 Healing 7 Spelldamage '),
|
||||
(2, 20, 27926, 11, '20 Healing 7 Spelldamage '),
|
||||
(2, 20, 27945, 16, '12 Intellect '),
|
||||
(2, 20, 27954, 7, '5% Root/Snare Resist 10 Hit'),
|
||||
(2, 20, 27960, 4, '6 All Stats '),
|
||||
(2, 20, 29475, 2, '31 Healing 11 Spelldamage 5 mp5 '),
|
||||
(2, 20, 31370, 6, '66 Healing 22 Spelldamage 20 Stamina '),
|
||||
(2, 20, 33999, 9, '35 Healing 12 Spelldamage '),
|
||||
(2, 20, 34001, 8, '12 Intellect '),
|
||||
(2, 20, 34003, 14, '20 Spell Penetration '),
|
||||
(2, 20, 34010, 15, '81 Healing 27 Spelldamage '),
|
||||
(2, 20, 35445, 0, '35 Healing 12 Spelldamage 7 mp5 '),
|
||||
(2, 21, 22779, 17, '30 Hit '),
|
||||
(2, 21, 25072, 9, '2% Threat '),
|
||||
(2, 21, 27906, 8, '12 Defense '),
|
||||
(2, 21, 27927, 10, '4 All Stats '),
|
||||
(2, 21, 27927, 11, '4 All Stats '),
|
||||
(2, 21, 27954, 7, '5% Root/Snare Resist 10 Hit'),
|
||||
(2, 21, 27960, 4, '6 All Stats '),
|
||||
(2, 21, 28004, 15, 'Battlemaster '),
|
||||
(2, 21, 34009, 16, '18 Stamina '),
|
||||
(2, 21, 35433, 2, '10 Dodge 15 Defense '),
|
||||
(2, 21, 35443, 0, '16 Defense 17 Dodge '),
|
||||
(2, 21, 35495, 6, '40 Stamina 12 Agility '),
|
||||
(2, 21, 47051, 14, '12 Defense '),
|
||||
(2, 22, 20034, 15, 'Crusader '),
|
||||
(2, 22, 22779, 17, '30 Hit '),
|
||||
(2, 22, 27899, 8, '12 Strength '),
|
||||
(2, 22, 27927, 10, '4 All Stats '),
|
||||
(2, 22, 27927, 11, '4 All Stats '),
|
||||
(2, 22, 27960, 4, '6 All Stats '),
|
||||
(2, 22, 29483, 2, '26 Attackpower 14 Crit '),
|
||||
(2, 22, 33995, 6, '50 Attackpower 12 Crit '),
|
||||
(2, 22, 33996, 9, '15 Strength '),
|
||||
(2, 22, 34004, 14, '12 Agility '),
|
||||
(2, 22, 34007, 7, 'Minor Speed 6 Agility'),
|
||||
(2, 22, 37891, 0, '17 Strength16 Intellect '),
|
||||
(3, 30, 22779, 17, '30 Hit '),
|
||||
(3, 30, 25080, 9, '15 Agility '),
|
||||
(3, 30, 27927, 10, '4 All Stats '),
|
||||
(3, 30, 27927, 11, '4 All Stats '),
|
||||
(3, 30, 27951, 7, '12 Agility'),
|
||||
(3, 30, 27960, 4, '6 All Stats '),
|
||||
(3, 30, 29483, 2, '26 Attackpower 14 Crit '),
|
||||
(3, 30, 34002, 8, '24 Attackpower '),
|
||||
(3, 30, 34004, 14, '12 Agility '),
|
||||
(3, 30, 35452, 0, '34 Attackpower 16 Hit '),
|
||||
(3, 30, 35495, 6, '40 Stamina 12 Agility '),
|
||||
(3, 30, 42620, 15, 'Greater Agility '),
|
||||
(3, 30, 42620, 16, 'Greater Agility '),
|
||||
(4, 40, 22779, 17, '30 Hit '),
|
||||
(4, 40, 25080, 9, '15 Agility '),
|
||||
(4, 40, 27927, 10, '4 All Stats '),
|
||||
(4, 40, 27927, 11, '4 All Stats '),
|
||||
(4, 40, 27951, 7, '12 Agility'),
|
||||
(4, 40, 27960, 4, '6 All Stats '),
|
||||
(4, 40, 27984, 15, 'Mongoose '),
|
||||
(4, 40, 27984, 16, 'Mongoose '),
|
||||
(4, 40, 29483, 2, '26 Attackpower 14 Crit '),
|
||||
(4, 40, 34002, 8, '24 Attackpower '),
|
||||
(4, 40, 34004, 14, '12 Agility '),
|
||||
(4, 40, 35452, 0, '34 Attackpower 16 Hit '),
|
||||
(4, 40, 35495, 6, '40 Stamina 12 Agility '),
|
||||
(5, 50, 22779, 17, '30 Hit '),
|
||||
(5, 50, 27926, 10, '20 Healing 7 Spelldamage '),
|
||||
(5, 50, 27926, 11, '20 Healing 7 Spelldamage '),
|
||||
(5, 50, 27945, 16, '12 Intellect '),
|
||||
(5, 50, 27954, 7, '5% Root/Snare Resist 10 Hit'),
|
||||
(5, 50, 27960, 4, '6 All Stats '),
|
||||
(5, 50, 29475, 2, '31 Healing 11 Spelldamage 5 mp5 '),
|
||||
(5, 50, 31370, 6, '66 Healing 22 Spelldamage 20 Stamina '),
|
||||
(5, 50, 33999, 9, '35 Healing 12 Spelldamage '),
|
||||
(5, 50, 34001, 8, '12 Intellect '),
|
||||
(5, 50, 34003, 14, '20 Spell Penetration '),
|
||||
(5, 50, 34010, 15, '81 Healing 27 Spelldamage '),
|
||||
(5, 50, 35445, 0, '35 Healing 12 Spelldamage 7 mp5 '),
|
||||
(7, 70, 22779, 17, '30 Hit '),
|
||||
(7, 70, 27926, 10, '20 Healing 7 Spelldamage '),
|
||||
(7, 70, 27926, 11, '20 Healing 7 Spelldamage '),
|
||||
(7, 70, 27945, 16, '12 Intellect '),
|
||||
(7, 70, 27954, 7, '5% Root/Snare Resist 10 Hit'),
|
||||
(7, 70, 27960, 4, '6 All Stats '),
|
||||
(7, 70, 31370, 6, '66 Healing 22 Spelldamage 20 Stamina '),
|
||||
(7, 70, 33994, 9, '15 Spell Hit '),
|
||||
(7, 70, 34001, 8, '12 Intellect '),
|
||||
(7, 70, 34003, 14, '20 Spell Penetration '),
|
||||
(7, 70, 34010, 15, '81 Healing 27 Spelldamage '),
|
||||
(7, 70, 35406, 2, '18 Spelldamage 10 Crit '),
|
||||
(7, 70, 35447, 0, '22 Spelldamage 14 Hit '),
|
||||
(7, 71, 22779, 17, '30 Hit '),
|
||||
(7, 71, 25080, 9, '15 Agility '),
|
||||
(7, 71, 27927, 10, '4 All Stats '),
|
||||
(7, 71, 27927, 11, '4 All Stats '),
|
||||
(7, 71, 27951, 7, '12 Agility'),
|
||||
(7, 71, 27960, 4, '6 All Stats '),
|
||||
(7, 71, 27977, 15, '35 Agility '),
|
||||
(7, 71, 27984, 16, 'Mongoose '),
|
||||
(7, 71, 29483, 2, '26 Attackpower 14 Crit '),
|
||||
(7, 71, 34002, 8, '24 Attackpower '),
|
||||
(7, 71, 34004, 14, '12 Agility '),
|
||||
(7, 71, 35452, 0, '34 Attackpower 16 Hit '),
|
||||
(7, 71, 35495, 6, '40 Stamina 12 Agility '),
|
||||
(7, 72, 22779, 17, '30 Hit '),
|
||||
(7, 72, 27926, 10, '20 Healing 7 Spelldamage '),
|
||||
(7, 72, 27926, 11, '20 Healing 7 Spelldamage '),
|
||||
(7, 72, 27945, 16, '12 Intellect '),
|
||||
(7, 72, 27954, 7, '5% Root/Snare Resist 10 Hit'),
|
||||
(7, 72, 27960, 4, '6 All Stats '),
|
||||
(7, 72, 29475, 2, '31 Healing 11 Spelldamage 5 mp5 '),
|
||||
(7, 72, 31370, 6, '66 Healing 22 Spelldamage 20 Stamina '),
|
||||
(7, 72, 33999, 9, '35 Healing 12 Spelldamage '),
|
||||
(7, 72, 34001, 8, '12 Intellect '),
|
||||
(7, 72, 34003, 14, '20 Spell Penetration '),
|
||||
(7, 72, 34010, 15, '81 Healing 27 Spelldamage '),
|
||||
(7, 72, 35445, 0, '35 Healing 12 Spelldamage 7 mp5 '),
|
||||
(8, 80, 22779, 17, '30 Hit '),
|
||||
(8, 80, 27927, 10, '4 All Stats '),
|
||||
(8, 80, 27927, 11, '4 All Stats '),
|
||||
(8, 80, 27945, 16, '12 Intellect '),
|
||||
(8, 80, 27954, 7, '5% Root/Snare Resist 10 Hit'),
|
||||
(8, 80, 27960, 4, '6 All Stats '),
|
||||
(8, 80, 27975, 15, '40 Spelldamage '),
|
||||
(8, 80, 31372, 6, '35 Spelldamage 20 Stamina '),
|
||||
(8, 80, 33994, 9, '15 Spell Hit '),
|
||||
(8, 80, 34001, 8, '12 Intellect '),
|
||||
(8, 80, 34003, 14, '20 Spell Penetration '),
|
||||
(8, 80, 35406, 2, '18 Spelldamage 10 Crit '),
|
||||
(8, 80, 35447, 0, '22 Spelldamage 14 Hit '),
|
||||
(9, 90, 22779, 17, '30 Hit '),
|
||||
(9, 90, 27924, 11, '12 Spelldamage '),
|
||||
(9, 90, 27927, 10, '4 All Stats '),
|
||||
(9, 90, 27945, 16, '12 Intellect '),
|
||||
(9, 90, 27954, 7, '5% Root/Snare Resist 10 Hit'),
|
||||
(9, 90, 27960, 4, '6 All Stats '),
|
||||
(9, 90, 27975, 15, '40 Spelldamage '),
|
||||
(9, 90, 31372, 6, '35 Spelldamage 20 Stamina '),
|
||||
(9, 90, 33994, 9, '15 Spell Hit '),
|
||||
(9, 90, 34001, 8, '12 Intellect '),
|
||||
(9, 90, 34003, 14, '20 Spell Penetration '),
|
||||
(9, 90, 35406, 2, '18 Spelldamage 10 Crit '),
|
||||
(9, 90, 35447, 0, '22 Spelldamage 14 Hit '),
|
||||
(11, 110, 22779, 17, '30 Hit '),
|
||||
(11, 110, 27926, 10, '20 Healing 7 Spelldamage '),
|
||||
(11, 110, 27926, 11, '20 Healing 7 Spelldamage '),
|
||||
(11, 110, 27945, 16, '12 Intellect '),
|
||||
(11, 110, 27954, 7, '5% Root/Snare Resist 10 Hit'),
|
||||
(11, 110, 27960, 4, '6 All Stats '),
|
||||
(11, 110, 31370, 6, '66 Healing 22 Spelldamage 20 Stamina '),
|
||||
(11, 110, 33994, 9, '15 Spell Hit '),
|
||||
(11, 110, 34001, 8, '12 Intellect '),
|
||||
(11, 110, 34003, 14, '20 Spell Penetration '),
|
||||
(11, 110, 34010, 15, '81 Healing 27 Spelldamage '),
|
||||
(11, 110, 35406, 2, '18 Spelldamage 10 Crit '),
|
||||
(11, 110, 35447, 0, '22 Spelldamage 14 Hit '),
|
||||
(11, 111, 22779, 17, '30 Hit '),
|
||||
(11, 111, 25080, 9, '15 Agility '),
|
||||
(11, 111, 27927, 10, '4 All Stats '),
|
||||
(11, 111, 27927, 11, '4 All Stats '),
|
||||
(11, 111, 27951, 7, '12 Agility'),
|
||||
(11, 111, 27960, 4, '6 All Stats '),
|
||||
(11, 111, 29483, 2, '26 Attackpower 14 Crit '),
|
||||
(11, 111, 34002, 8, '24 Attackpower '),
|
||||
(11, 111, 34004, 14, '12 Agility '),
|
||||
(11, 111, 35452, 0, '34 Attackpower 16 Hit '),
|
||||
(11, 111, 35495, 6, '40 Stamina 12 Agility '),
|
||||
(11, 111, 42620, 15, 'Greater Agility '),
|
||||
(11, 111, 42620, 16, 'Greater Agility '),
|
||||
(11, 112, 22779, 17, '30 Hit '),
|
||||
(11, 112, 27926, 10, '20 Healing 7 Spelldamage '),
|
||||
(11, 112, 27926, 11, '20 Healing 7 Spelldamage '),
|
||||
(11, 112, 27945, 16, '12 Intellect '),
|
||||
(11, 112, 27954, 7, '5% Root/Snare Resist 10 Hit'),
|
||||
(11, 112, 27960, 4, '6 All Stats '),
|
||||
(11, 112, 29475, 2, '31 Healing 11 Spelldamage 5 mp5 '),
|
||||
(11, 112, 31370, 6, '66 Healing 22 Spelldamage 20 Stamina '),
|
||||
(11, 112, 33999, 9, '35 Healing 12 Spelldamage '),
|
||||
(11, 112, 34001, 8, '12 Intellect '),
|
||||
(11, 112, 34003, 14, '20 Spell Penetration '),
|
||||
(11, 112, 34010, 15, '81 Healing 27 Spelldamage '),
|
||||
(11, 112, 35445, 0, '35 Healing 12 Spelldamage 7 mp5 ');
|
||||
(1, 10, 20034, 15, 'Crusader '),
|
||||
(1, 10, 22779, 17, '30 Hit '),
|
||||
(1, 10, 27927, 10, '4 All Stats '),
|
||||
(1, 10, 27927, 11, '4 All Stats '),
|
||||
(1, 10, 27960, 4, '6 All Stats '),
|
||||
(1, 10, 27984, 16, 'Mongoose '),
|
||||
(1, 10, 29483, 2, '26 Attackpower 14 Crit '),
|
||||
(1, 10, 33996, 9, '26 Attackpower '),
|
||||
(1, 10, 34002, 8, '24 Attackpower '),
|
||||
(1, 10, 34004, 14, '12 Agility '),
|
||||
(1, 10, 34007, 7, 'Minor Speed 6 Agility'),
|
||||
(1, 10, 35452, 0, '34 Attackpower 16 Hit '),
|
||||
(1, 10, 35490, 6, '50 Attackpower 12 Crit '),
|
||||
(1, 11, 20034, 15, 'Crusader '),
|
||||
(1, 11, 20034, 16, 'Crusader '),
|
||||
(1, 11, 22779, 17, '30 Hit '),
|
||||
(1, 11, 27927, 10, '4 All Stats '),
|
||||
(1, 11, 27927, 11, '4 All Stats '),
|
||||
(1, 11, 27960, 4, '6 All Stats '),
|
||||
(1, 11, 29483, 2, '26 Attackpower 14 Crit '),
|
||||
(1, 11, 33996, 9, '26 Attackpower '),
|
||||
(1, 11, 34002, 8, '24 Attackpower '),
|
||||
(1, 11, 34004, 14, '12 Agility '),
|
||||
(1, 11, 34007, 7, 'Minor Speed 6 Agility'),
|
||||
(1, 11, 35452, 0, '34 Attackpower 16 Hit '),
|
||||
(1, 11, 35490, 6, '50 Attackpower 12 Crit '),
|
||||
(1, 12, 22779, 17, '30 Hit '),
|
||||
(1, 12, 25072, 9, '2% Threat '),
|
||||
(1, 12, 27906, 8, '12 Defense '),
|
||||
(1, 12, 27927, 10, '4 All Stats '),
|
||||
(1, 12, 27927, 11, '4 All Stats '),
|
||||
(1, 12, 27954, 7, '5% Root/Snare Resist 10 Hit'),
|
||||
(1, 12, 27960, 4, '6 All Stats '),
|
||||
(1, 12, 28004, 15, 'Battlemaster '),
|
||||
(1, 12, 34009, 16, '18 Stamina '),
|
||||
(1, 12, 35433, 2, '10 Dodge 15 Defense '),
|
||||
(1, 12, 35443, 0, '16 Defense 17 Dodge '),
|
||||
(1, 12, 35495, 6, '40 Stamina 12 Agility '),
|
||||
(1, 12, 47051, 14, '12 Defense '),
|
||||
(2, 20, 22779, 17, '30 Hit '),
|
||||
(2, 20, 27926, 10, '20 Healing 7 Spelldamage '),
|
||||
(2, 20, 27926, 11, '20 Healing 7 Spelldamage '),
|
||||
(2, 20, 27945, 16, '12 Intellect '),
|
||||
(2, 20, 27954, 7, '5% Root/Snare Resist 10 Hit'),
|
||||
(2, 20, 27960, 4, '6 All Stats '),
|
||||
(2, 20, 29475, 2, '31 Healing 11 Spelldamage 5 mp5 '),
|
||||
(2, 20, 31370, 6, '66 Healing 22 Spelldamage 20 Stamina '),
|
||||
(2, 20, 33999, 9, '35 Healing 12 Spelldamage '),
|
||||
(2, 20, 34001, 8, '12 Intellect '),
|
||||
(2, 20, 34003, 14, '20 Spell Penetration '),
|
||||
(2, 20, 34010, 15, '81 Healing 27 Spelldamage '),
|
||||
(2, 20, 35445, 0, '35 Healing 12 Spelldamage 7 mp5 '),
|
||||
(2, 21, 22779, 17, '30 Hit '),
|
||||
(2, 21, 25072, 9, '2% Threat '),
|
||||
(2, 21, 27906, 8, '12 Defense '),
|
||||
(2, 21, 27927, 10, '4 All Stats '),
|
||||
(2, 21, 27927, 11, '4 All Stats '),
|
||||
(2, 21, 27954, 7, '5% Root/Snare Resist 10 Hit'),
|
||||
(2, 21, 27960, 4, '6 All Stats '),
|
||||
(2, 21, 28004, 15, 'Battlemaster '),
|
||||
(2, 21, 34009, 16, '18 Stamina '),
|
||||
(2, 21, 35433, 2, '10 Dodge 15 Defense '),
|
||||
(2, 21, 35443, 0, '16 Defense 17 Dodge '),
|
||||
(2, 21, 35495, 6, '40 Stamina 12 Agility '),
|
||||
(2, 21, 47051, 14, '12 Defense '),
|
||||
(2, 22, 20034, 15, 'Crusader '),
|
||||
(2, 22, 22779, 17, '30 Hit '),
|
||||
(2, 22, 27899, 8, '12 Strength '),
|
||||
(2, 22, 27927, 10, '4 All Stats '),
|
||||
(2, 22, 27927, 11, '4 All Stats '),
|
||||
(2, 22, 27960, 4, '6 All Stats '),
|
||||
(2, 22, 29483, 2, '26 Attackpower 14 Crit '),
|
||||
(2, 22, 33995, 6, '50 Attackpower 12 Crit '),
|
||||
(2, 22, 33996, 9, '15 Strength '),
|
||||
(2, 22, 34004, 14, '12 Agility '),
|
||||
(2, 22, 34007, 7, 'Minor Speed 6 Agility'),
|
||||
(2, 22, 37891, 0, '17 Strength16 Intellect '),
|
||||
(3, 30, 22779, 17, '30 Hit '),
|
||||
(3, 30, 25080, 9, '15 Agility '),
|
||||
(3, 30, 27927, 10, '4 All Stats '),
|
||||
(3, 30, 27927, 11, '4 All Stats '),
|
||||
(3, 30, 27951, 7, '12 Agility'),
|
||||
(3, 30, 27960, 4, '6 All Stats '),
|
||||
(3, 30, 29483, 2, '26 Attackpower 14 Crit '),
|
||||
(3, 30, 34002, 8, '24 Attackpower '),
|
||||
(3, 30, 34004, 14, '12 Agility '),
|
||||
(3, 30, 35452, 0, '34 Attackpower 16 Hit '),
|
||||
(3, 30, 35495, 6, '40 Stamina 12 Agility '),
|
||||
(3, 30, 42620, 15, 'Greater Agility '),
|
||||
(3, 30, 42620, 16, 'Greater Agility '),
|
||||
(4, 40, 22779, 17, '30 Hit '),
|
||||
(4, 40, 25080, 9, '15 Agility '),
|
||||
(4, 40, 27927, 10, '4 All Stats '),
|
||||
(4, 40, 27927, 11, '4 All Stats '),
|
||||
(4, 40, 27951, 7, '12 Agility'),
|
||||
(4, 40, 27960, 4, '6 All Stats '),
|
||||
(4, 40, 27984, 15, 'Mongoose '),
|
||||
(4, 40, 27984, 16, 'Mongoose '),
|
||||
(4, 40, 29483, 2, '26 Attackpower 14 Crit '),
|
||||
(4, 40, 34002, 8, '24 Attackpower '),
|
||||
(4, 40, 34004, 14, '12 Agility '),
|
||||
(4, 40, 35452, 0, '34 Attackpower 16 Hit '),
|
||||
(4, 40, 35495, 6, '40 Stamina 12 Agility '),
|
||||
(5, 50, 22779, 17, '30 Hit '),
|
||||
(5, 50, 27926, 10, '20 Healing 7 Spelldamage '),
|
||||
(5, 50, 27926, 11, '20 Healing 7 Spelldamage '),
|
||||
(5, 50, 27945, 16, '12 Intellect '),
|
||||
(5, 50, 27954, 7, '5% Root/Snare Resist 10 Hit'),
|
||||
(5, 50, 27960, 4, '6 All Stats '),
|
||||
(5, 50, 29475, 2, '31 Healing 11 Spelldamage 5 mp5 '),
|
||||
(5, 50, 31370, 6, '66 Healing 22 Spelldamage 20 Stamina '),
|
||||
(5, 50, 33999, 9, '35 Healing 12 Spelldamage '),
|
||||
(5, 50, 34001, 8, '12 Intellect '),
|
||||
(5, 50, 34003, 14, '20 Spell Penetration '),
|
||||
(5, 50, 34010, 15, '81 Healing 27 Spelldamage '),
|
||||
(5, 50, 35445, 0, '35 Healing 12 Spelldamage 7 mp5 '),
|
||||
(7, 70, 22779, 17, '30 Hit '),
|
||||
(7, 70, 27926, 10, '20 Healing 7 Spelldamage '),
|
||||
(7, 70, 27926, 11, '20 Healing 7 Spelldamage '),
|
||||
(7, 70, 27945, 16, '12 Intellect '),
|
||||
(7, 70, 27954, 7, '5% Root/Snare Resist 10 Hit'),
|
||||
(7, 70, 27960, 4, '6 All Stats '),
|
||||
(7, 70, 31370, 6, '66 Healing 22 Spelldamage 20 Stamina '),
|
||||
(7, 70, 33994, 9, '15 Spell Hit '),
|
||||
(7, 70, 34001, 8, '12 Intellect '),
|
||||
(7, 70, 34003, 14, '20 Spell Penetration '),
|
||||
(7, 70, 34010, 15, '81 Healing 27 Spelldamage '),
|
||||
(7, 70, 35406, 2, '18 Spelldamage 10 Crit '),
|
||||
(7, 70, 35447, 0, '22 Spelldamage 14 Hit '),
|
||||
(7, 71, 22779, 17, '30 Hit '),
|
||||
(7, 71, 25080, 9, '15 Agility '),
|
||||
(7, 71, 27927, 10, '4 All Stats '),
|
||||
(7, 71, 27927, 11, '4 All Stats '),
|
||||
(7, 71, 27951, 7, '12 Agility'),
|
||||
(7, 71, 27960, 4, '6 All Stats '),
|
||||
(7, 71, 27977, 15, '35 Agility '),
|
||||
(7, 71, 27984, 16, 'Mongoose '),
|
||||
(7, 71, 29483, 2, '26 Attackpower 14 Crit '),
|
||||
(7, 71, 34002, 8, '24 Attackpower '),
|
||||
(7, 71, 34004, 14, '12 Agility '),
|
||||
(7, 71, 35452, 0, '34 Attackpower 16 Hit '),
|
||||
(7, 71, 35495, 6, '40 Stamina 12 Agility '),
|
||||
(7, 72, 22779, 17, '30 Hit '),
|
||||
(7, 72, 27926, 10, '20 Healing 7 Spelldamage '),
|
||||
(7, 72, 27926, 11, '20 Healing 7 Spelldamage '),
|
||||
(7, 72, 27945, 16, '12 Intellect '),
|
||||
(7, 72, 27954, 7, '5% Root/Snare Resist 10 Hit'),
|
||||
(7, 72, 27960, 4, '6 All Stats '),
|
||||
(7, 72, 29475, 2, '31 Healing 11 Spelldamage 5 mp5 '),
|
||||
(7, 72, 31370, 6, '66 Healing 22 Spelldamage 20 Stamina '),
|
||||
(7, 72, 33999, 9, '35 Healing 12 Spelldamage '),
|
||||
(7, 72, 34001, 8, '12 Intellect '),
|
||||
(7, 72, 34003, 14, '20 Spell Penetration '),
|
||||
(7, 72, 34010, 15, '81 Healing 27 Spelldamage '),
|
||||
(7, 72, 35445, 0, '35 Healing 12 Spelldamage 7 mp5 '),
|
||||
(8, 80, 22779, 17, '30 Hit '),
|
||||
(8, 80, 27927, 10, '4 All Stats '),
|
||||
(8, 80, 27927, 11, '4 All Stats '),
|
||||
(8, 80, 27945, 16, '12 Intellect '),
|
||||
(8, 80, 27954, 7, '5% Root/Snare Resist 10 Hit'),
|
||||
(8, 80, 27960, 4, '6 All Stats '),
|
||||
(8, 80, 27975, 15, '40 Spelldamage '),
|
||||
(8, 80, 31372, 6, '35 Spelldamage 20 Stamina '),
|
||||
(8, 80, 33994, 9, '15 Spell Hit '),
|
||||
(8, 80, 34001, 8, '12 Intellect '),
|
||||
(8, 80, 34003, 14, '20 Spell Penetration '),
|
||||
(8, 80, 35406, 2, '18 Spelldamage 10 Crit '),
|
||||
(8, 80, 35447, 0, '22 Spelldamage 14 Hit '),
|
||||
(9, 90, 22779, 17, '30 Hit '),
|
||||
(9, 90, 27924, 11, '12 Spelldamage '),
|
||||
(9, 90, 27927, 10, '4 All Stats '),
|
||||
(9, 90, 27945, 16, '12 Intellect '),
|
||||
(9, 90, 27954, 7, '5% Root/Snare Resist 10 Hit'),
|
||||
(9, 90, 27960, 4, '6 All Stats '),
|
||||
(9, 90, 27975, 15, '40 Spelldamage '),
|
||||
(9, 90, 31372, 6, '35 Spelldamage 20 Stamina '),
|
||||
(9, 90, 33994, 9, '15 Spell Hit '),
|
||||
(9, 90, 34001, 8, '12 Intellect '),
|
||||
(9, 90, 34003, 14, '20 Spell Penetration '),
|
||||
(9, 90, 35406, 2, '18 Spelldamage 10 Crit '),
|
||||
(9, 90, 35447, 0, '22 Spelldamage 14 Hit '),
|
||||
(11, 110, 22779, 17, '30 Hit '),
|
||||
(11, 110, 27926, 10, '20 Healing 7 Spelldamage '),
|
||||
(11, 110, 27926, 11, '20 Healing 7 Spelldamage '),
|
||||
(11, 110, 27945, 16, '12 Intellect '),
|
||||
(11, 110, 27954, 7, '5% Root/Snare Resist 10 Hit'),
|
||||
(11, 110, 27960, 4, '6 All Stats '),
|
||||
(11, 110, 31370, 6, '66 Healing 22 Spelldamage 20 Stamina '),
|
||||
(11, 110, 33994, 9, '15 Spell Hit '),
|
||||
(11, 110, 34001, 8, '12 Intellect '),
|
||||
(11, 110, 34003, 14, '20 Spell Penetration '),
|
||||
(11, 110, 34010, 15, '81 Healing 27 Spelldamage '),
|
||||
(11, 110, 35406, 2, '18 Spelldamage 10 Crit '),
|
||||
(11, 110, 35447, 0, '22 Spelldamage 14 Hit '),
|
||||
(11, 111, 22779, 17, '30 Hit '),
|
||||
(11, 111, 25080, 9, '15 Agility '),
|
||||
(11, 111, 27927, 10, '4 All Stats '),
|
||||
(11, 111, 27927, 11, '4 All Stats '),
|
||||
(11, 111, 27951, 7, '12 Agility'),
|
||||
(11, 111, 27960, 4, '6 All Stats '),
|
||||
(11, 111, 29483, 2, '26 Attackpower 14 Crit '),
|
||||
(11, 111, 34002, 8, '24 Attackpower '),
|
||||
(11, 111, 34004, 14, '12 Agility '),
|
||||
(11, 111, 35452, 0, '34 Attackpower 16 Hit '),
|
||||
(11, 111, 35495, 6, '40 Stamina 12 Agility '),
|
||||
(11, 111, 42620, 15, 'Greater Agility '),
|
||||
(11, 111, 42620, 16, 'Greater Agility '),
|
||||
(11, 112, 22779, 17, '30 Hit '),
|
||||
(11, 112, 27926, 10, '20 Healing 7 Spelldamage '),
|
||||
(11, 112, 27926, 11, '20 Healing 7 Spelldamage '),
|
||||
(11, 112, 27945, 16, '12 Intellect '),
|
||||
(11, 112, 27954, 7, '5% Root/Snare Resist 10 Hit'),
|
||||
(11, 112, 27960, 4, '6 All Stats '),
|
||||
(11, 112, 29475, 2, '31 Healing 11 Spelldamage 5 mp5 '),
|
||||
(11, 112, 31370, 6, '66 Healing 22 Spelldamage 20 Stamina '),
|
||||
(11, 112, 33999, 9, '35 Healing 12 Spelldamage '),
|
||||
(11, 112, 34001, 8, '12 Intellect '),
|
||||
(11, 112, 34003, 14, '20 Spell Penetration '),
|
||||
(11, 112, 34010, 15, '81 Healing 27 Spelldamage '),
|
||||
(11, 112, 35445, 0, '35 Healing 12 Spelldamage 7 mp5 ');
|
||||
/*!40000 ALTER TABLE `playerbots_enchants` ENABLE KEYS */;
|
||||
|
||||
/*!40101 SET SQL_MODE=IFNULL(@OLD_SQL_MODE, '') */;
|
||||
|
||||
@@ -7,278 +7,278 @@ CREATE TABLE IF NOT EXISTS `playerbots_weightscale_data` (
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
|
||||
|
||||
INSERT INTO `playerbots_weightscale_data` (`id`, `field`, `val`) VALUES
|
||||
(1, 'exprtng', 100),
|
||||
(1, 'str', 82),
|
||||
(1, 'critstrkrtng', 66),
|
||||
(1, 'agi', 53),
|
||||
(1, 'armorpenrtng', 52),
|
||||
(1, 'hitrtng', 48),
|
||||
(1, 'hastertng', 36),
|
||||
(1, 'atkpwr', 31),
|
||||
(1, 'armor', 5),
|
||||
(2, 'exprtng', 100),
|
||||
(2, 'str', 82),
|
||||
(2, 'critstrkrtng', 66),
|
||||
(2, 'agi', 53),
|
||||
(2, 'armorpenrtng', 52),
|
||||
(2, 'hitrtng', 48),
|
||||
(2, 'hastertng', 36),
|
||||
(2, 'atkpwr', 31),
|
||||
(2, 'armor', 5),
|
||||
(3, 'sta', 100),
|
||||
(3, 'dodgertng', 90),
|
||||
(3, 'defrtng', 86),
|
||||
(3, 'block', 81),
|
||||
(3, 'agi', 67),
|
||||
(3, 'parryrtng', 67),
|
||||
(3, 'blockrtng', 48),
|
||||
(3, 'str', 48),
|
||||
(3, 'exprtng', 19),
|
||||
(3, 'hitrtng', 10),
|
||||
(3, 'armorpenrtng', 10),
|
||||
(3, 'critstrkrtng', 7),
|
||||
(3, 'armor', 6),
|
||||
(3, 'hastertng', 1),
|
||||
(3, 'atkpwr', 1),
|
||||
(4, 'int', 100),
|
||||
(4, 'manargn', 88),
|
||||
(4, 'splpwr', 58),
|
||||
(4, 'critstrkrtng', 46),
|
||||
(4, 'hastertng', 35),
|
||||
(5, 'sta', 100),
|
||||
(5, 'dodgertng', 94),
|
||||
(5, 'block', 86),
|
||||
(5, 'defrtng', 86),
|
||||
(5, 'exprtng', 79),
|
||||
(5, 'agi', 76),
|
||||
(5, 'parryrtng', 76),
|
||||
(5, 'hitrtng', 58),
|
||||
(5, 'blockrtng', 52),
|
||||
(5, 'str', 50),
|
||||
(5, 'armor', 6),
|
||||
(5, 'atkpwr', 6),
|
||||
(5, 'splpwr', 4),
|
||||
(5, 'critstrkrtng', 3),
|
||||
(6, 'mledps', 470),
|
||||
(6, 'hitrtng', 100),
|
||||
(6, 'str', 80),
|
||||
(6, 'exprtng', 66),
|
||||
(6, 'critstrkrtng', 40),
|
||||
(6, 'atkpwr', 34),
|
||||
(6, 'agi', 32),
|
||||
(6, 'hastertng', 30),
|
||||
(6, 'armorpenrtng', 22),
|
||||
(6, 'splpwr', 9),
|
||||
(7, 'rgddps', 213),
|
||||
(7, 'hitrtng', 100),
|
||||
(7, 'agi', 58),
|
||||
(7, 'critstrkrtng', 40),
|
||||
(7, 'int', 37),
|
||||
(7, 'atkpwr', 30),
|
||||
(7, 'armorpenrtng', 28),
|
||||
(7, 'hastertng', 21),
|
||||
(8, 'rgddps', 379),
|
||||
(8, 'hitrtng', 100),
|
||||
(8, 'agi', 74),
|
||||
(8, 'critstrkrtng', 57),
|
||||
(8, 'armorpenrtng', 40),
|
||||
(8, 'int', 39),
|
||||
(8, 'atkpwr', 32),
|
||||
(8, 'hastertng', 24),
|
||||
(9, 'rgddps', 181),
|
||||
(9, 'hitrtng', 100),
|
||||
(9, 'agi', 76),
|
||||
(9, 'critstrkrtng', 42),
|
||||
(9, 'int', 35),
|
||||
(9, 'hastertng', 31),
|
||||
(9, 'atkpwr', 29),
|
||||
(9, 'armorpenrtng', 26),
|
||||
(10, 'mledps', 170),
|
||||
(10, 'agi', 100),
|
||||
(10, 'exprtng', 87),
|
||||
(10, 'hitrtng', 83),
|
||||
(10, 'critstrkrtng', 81),
|
||||
(10, 'atkpwr', 65),
|
||||
(10, 'armorpenrtng', 65),
|
||||
(10, 'hastertng', 64),
|
||||
(10, 'str', 55),
|
||||
(11, 'mledps', 220),
|
||||
(11, 'armorpenrtng', 100),
|
||||
(11, 'agi', 100),
|
||||
(11, 'exprtng', 82),
|
||||
(11, 'hitrtng', 80),
|
||||
(11, 'critstrkrtng', 75),
|
||||
(11, 'hastertng', 73),
|
||||
(11, 'str', 55),
|
||||
(11, 'atkpwr', 50),
|
||||
(12, 'mledps', 228),
|
||||
(12, 'exprtng', 100),
|
||||
(12, 'agi', 100),
|
||||
(12, 'hitrtng', 80),
|
||||
(12, 'armorpenrtng', 75),
|
||||
(12, 'critstrkrtng', 75),
|
||||
(12, 'hastertng', 75),
|
||||
(12, 'str', 55),
|
||||
(12, 'atkpwr', 50),
|
||||
(13, 'splpwr', 100),
|
||||
(13, 'manargn', 67),
|
||||
(13, 'int', 65),
|
||||
(13, 'hastertng', 59),
|
||||
(13, 'critstrkrtng', 48),
|
||||
(13, 'spi', 22),
|
||||
(14, 'manargn', 100),
|
||||
(14, 'int', 69),
|
||||
(14, 'splpwr', 60),
|
||||
(14, 'spi', 52),
|
||||
(14, 'critstrkrtng', 38),
|
||||
(14, 'hastertng', 31),
|
||||
(15, 'hitrtng', 100),
|
||||
(15, 'shasplpwr', 76),
|
||||
(15, 'splpwr', 76),
|
||||
(15, 'critstrkrtng', 54),
|
||||
(15, 'hastertng', 50),
|
||||
(15, 'spi', 16),
|
||||
(15, 'int', 16),
|
||||
(16, 'mledps', 360),
|
||||
(16, 'armorpenrtng', 100),
|
||||
(16, 'str', 99),
|
||||
(16, 'hitrtng', 91),
|
||||
(16, 'exprtng', 90),
|
||||
(16, 'critstrkrtng', 57),
|
||||
(16, 'hastertng', 55),
|
||||
(16, 'atkpwr', 36),
|
||||
(16, 'armor', 1),
|
||||
(17, 'mledps', 337),
|
||||
(17, 'hitrtng', 100),
|
||||
(17, 'str', 97),
|
||||
(17, 'exprtng', 81),
|
||||
(17, 'armorpenrtng', 61),
|
||||
(17, 'critstrkrtng', 45),
|
||||
(17, 'atkpwr', 35),
|
||||
(17, 'hastertng', 28),
|
||||
(17, 'armor', 1),
|
||||
(18, 'mledps', 419),
|
||||
(18, 'parryrtng', 100),
|
||||
(18, 'hitrtng', 97),
|
||||
(18, 'str', 96),
|
||||
(18, 'defrtng', 85),
|
||||
(18, 'exprtng', 69),
|
||||
(18, 'dodgertng', 61),
|
||||
(18, 'agi', 61),
|
||||
(18, 'sta', 61),
|
||||
(18, 'critstrkrtng', 49),
|
||||
(18, 'atkpwr', 41),
|
||||
(18, 'armorpenrtng', 31),
|
||||
(18, 'armor', 5),
|
||||
(19, 'mledps', 209),
|
||||
(19, 'str', 100),
|
||||
(19, 'hitrtng', 66),
|
||||
(19, 'exprtng', 51),
|
||||
(19, 'hastertng', 48),
|
||||
(19, 'critstrkrtng', 45),
|
||||
(19, 'atkpwr', 34),
|
||||
(19, 'armorpenrtng', 32),
|
||||
(19, 'armor', 1),
|
||||
(20, 'hitrtng', 100),
|
||||
(20, 'splpwr', 60),
|
||||
(20, 'hastertng', 56),
|
||||
(20, 'critstrkrtng', 40),
|
||||
(20, 'int', 11),
|
||||
(21, 'mledps', 135),
|
||||
(21, 'hitrtng', 100),
|
||||
(21, 'exprtng', 84),
|
||||
(21, 'agi', 55),
|
||||
(21, 'int', 55),
|
||||
(21, 'critstrkrtng', 55),
|
||||
(21, 'hastertng', 42),
|
||||
(21, 'str', 35),
|
||||
(21, 'atkpwr', 32),
|
||||
(21, 'splpwr', 29),
|
||||
(21, 'armorpenrtng', 26),
|
||||
(22, 'manargn', 100),
|
||||
(22, 'int', 85),
|
||||
(22, 'splpwr', 77),
|
||||
(22, 'critstrkrtng', 62),
|
||||
(22, 'hastertng', 35),
|
||||
(23, 'hitrtng', 100),
|
||||
(23, 'hastertng', 54),
|
||||
(23, 'arcsplpwr', 49),
|
||||
(23, 'splpwr', 49),
|
||||
(23, 'critstrkrtng', 37),
|
||||
(23, 'int', 34),
|
||||
(23, 'frosplpwr', 24),
|
||||
(23, 'firsplpwr', 24),
|
||||
(23, 'spi', 14),
|
||||
(24, 'hitrtng', 100),
|
||||
(24, 'hastertng', 53),
|
||||
(24, 'firsplpwr', 46),
|
||||
(24, 'splpwr', 46),
|
||||
(24, 'critstrkrtng', 43),
|
||||
(24, 'frosplpwr', 23),
|
||||
(24, 'arcsplpwr', 23),
|
||||
(24, 'int', 13),
|
||||
(25, 'hitrtng', 100),
|
||||
(25, 'hastertng', 42),
|
||||
(25, 'frosplpwr', 39),
|
||||
(25, 'splpwr', 39),
|
||||
(25, 'arcsplpwr', 19),
|
||||
(25, 'firsplpwr', 19),
|
||||
(25, 'critstrkrtng', 19),
|
||||
(25, 'int', 6),
|
||||
(26, 'hitrtng', 100),
|
||||
(26, 'shasplpwr', 72),
|
||||
(26, 'splpwr', 72),
|
||||
(26, 'hastertng', 61),
|
||||
(26, 'critstrkrtng', 38),
|
||||
(26, 'firsplpwr', 36),
|
||||
(26, 'spi', 34),
|
||||
(26, 'int', 15),
|
||||
(27, 'hitrtng', 100),
|
||||
(27, 'hastertng', 50),
|
||||
(27, 'firsplpwr', 45),
|
||||
(27, 'shasplpwr', 45),
|
||||
(27, 'splpwr', 45),
|
||||
(27, 'critstrkrtng', 31),
|
||||
(27, 'spi', 29),
|
||||
(27, 'int', 13),
|
||||
(28, 'hitrtng', 100),
|
||||
(28, 'firsplpwr', 47),
|
||||
(28, 'splpwr', 47),
|
||||
(28, 'hastertng', 46),
|
||||
(28, 'spi', 26),
|
||||
(28, 'shasplpwr', 23),
|
||||
(28, 'critstrkrtng', 16),
|
||||
(28, 'int', 13),
|
||||
(29, 'hitrtng', 100),
|
||||
(29, 'splpwr', 66),
|
||||
(29, 'hastertng', 54),
|
||||
(29, 'critstrkrtng', 43),
|
||||
(29, 'spi', 22),
|
||||
(29, 'int', 22),
|
||||
(30, 'agi', 100),
|
||||
(30, 'sta', 75),
|
||||
(30, 'dodgertng', 65),
|
||||
(30, 'defrtng', 60),
|
||||
(30, 'exprtng', 16),
|
||||
(30, 'str', 10),
|
||||
(30, 'armor', 10),
|
||||
(30, 'hitrtng', 8),
|
||||
(30, 'hastertng', 5),
|
||||
(30, 'atkpwr', 4),
|
||||
(30, 'feratkpwr', 4),
|
||||
(30, 'critstrkrtng', 3),
|
||||
(31, 'splpwr', 100),
|
||||
(31, 'manargn', 73),
|
||||
(31, 'hastertng', 57),
|
||||
(31, 'int', 51),
|
||||
(31, 'spi', 32),
|
||||
(31, 'critstrkrtng', 11),
|
||||
(32, 'agi', 100),
|
||||
(32, 'armorpenrtng', 90),
|
||||
(32, 'str', 80),
|
||||
(32, 'critstrkrtng', 55),
|
||||
(32, 'exprtng', 50),
|
||||
(32, 'hitrtng', 50),
|
||||
(32, 'feratkpwr', 40),
|
||||
(32, 'atkpwr', 40),
|
||||
(32, 'hastertng', 35);
|
||||
(1, 'exprtng', 100),
|
||||
(1, 'str', 82),
|
||||
(1, 'critstrkrtng', 66),
|
||||
(1, 'agi', 53),
|
||||
(1, 'armorpenrtng', 52),
|
||||
(1, 'hitrtng', 48),
|
||||
(1, 'hastertng', 36),
|
||||
(1, 'atkpwr', 31),
|
||||
(1, 'armor', 5),
|
||||
(2, 'exprtng', 100),
|
||||
(2, 'str', 82),
|
||||
(2, 'critstrkrtng', 66),
|
||||
(2, 'agi', 53),
|
||||
(2, 'armorpenrtng', 52),
|
||||
(2, 'hitrtng', 48),
|
||||
(2, 'hastertng', 36),
|
||||
(2, 'atkpwr', 31),
|
||||
(2, 'armor', 5),
|
||||
(3, 'sta', 100),
|
||||
(3, 'dodgertng', 90),
|
||||
(3, 'defrtng', 86),
|
||||
(3, 'block', 81),
|
||||
(3, 'agi', 67),
|
||||
(3, 'parryrtng', 67),
|
||||
(3, 'blockrtng', 48),
|
||||
(3, 'str', 48),
|
||||
(3, 'exprtng', 19),
|
||||
(3, 'hitrtng', 10),
|
||||
(3, 'armorpenrtng', 10),
|
||||
(3, 'critstrkrtng', 7),
|
||||
(3, 'armor', 6),
|
||||
(3, 'hastertng', 1),
|
||||
(3, 'atkpwr', 1),
|
||||
(4, 'int', 100),
|
||||
(4, 'manargn', 88),
|
||||
(4, 'splpwr', 58),
|
||||
(4, 'critstrkrtng', 46),
|
||||
(4, 'hastertng', 35),
|
||||
(5, 'sta', 100),
|
||||
(5, 'dodgertng', 94),
|
||||
(5, 'block', 86),
|
||||
(5, 'defrtng', 86),
|
||||
(5, 'exprtng', 79),
|
||||
(5, 'agi', 76),
|
||||
(5, 'parryrtng', 76),
|
||||
(5, 'hitrtng', 58),
|
||||
(5, 'blockrtng', 52),
|
||||
(5, 'str', 50),
|
||||
(5, 'armor', 6),
|
||||
(5, 'atkpwr', 6),
|
||||
(5, 'splpwr', 4),
|
||||
(5, 'critstrkrtng', 3),
|
||||
(6, 'mledps', 470),
|
||||
(6, 'hitrtng', 100),
|
||||
(6, 'str', 80),
|
||||
(6, 'exprtng', 66),
|
||||
(6, 'critstrkrtng', 40),
|
||||
(6, 'atkpwr', 34),
|
||||
(6, 'agi', 32),
|
||||
(6, 'hastertng', 30),
|
||||
(6, 'armorpenrtng', 22),
|
||||
(6, 'splpwr', 9),
|
||||
(7, 'rgddps', 213),
|
||||
(7, 'hitrtng', 100),
|
||||
(7, 'agi', 58),
|
||||
(7, 'critstrkrtng', 40),
|
||||
(7, 'int', 37),
|
||||
(7, 'atkpwr', 30),
|
||||
(7, 'armorpenrtng', 28),
|
||||
(7, 'hastertng', 21),
|
||||
(8, 'rgddps', 379),
|
||||
(8, 'hitrtng', 100),
|
||||
(8, 'agi', 74),
|
||||
(8, 'critstrkrtng', 57),
|
||||
(8, 'armorpenrtng', 40),
|
||||
(8, 'int', 39),
|
||||
(8, 'atkpwr', 32),
|
||||
(8, 'hastertng', 24),
|
||||
(9, 'rgddps', 181),
|
||||
(9, 'hitrtng', 100),
|
||||
(9, 'agi', 76),
|
||||
(9, 'critstrkrtng', 42),
|
||||
(9, 'int', 35),
|
||||
(9, 'hastertng', 31),
|
||||
(9, 'atkpwr', 29),
|
||||
(9, 'armorpenrtng', 26),
|
||||
(10, 'mledps', 170),
|
||||
(10, 'agi', 100),
|
||||
(10, 'exprtng', 87),
|
||||
(10, 'hitrtng', 83),
|
||||
(10, 'critstrkrtng', 81),
|
||||
(10, 'atkpwr', 65),
|
||||
(10, 'armorpenrtng', 65),
|
||||
(10, 'hastertng', 64),
|
||||
(10, 'str', 55),
|
||||
(11, 'mledps', 220),
|
||||
(11, 'armorpenrtng', 100),
|
||||
(11, 'agi', 100),
|
||||
(11, 'exprtng', 82),
|
||||
(11, 'hitrtng', 80),
|
||||
(11, 'critstrkrtng', 75),
|
||||
(11, 'hastertng', 73),
|
||||
(11, 'str', 55),
|
||||
(11, 'atkpwr', 50),
|
||||
(12, 'mledps', 228),
|
||||
(12, 'exprtng', 100),
|
||||
(12, 'agi', 100),
|
||||
(12, 'hitrtng', 80),
|
||||
(12, 'armorpenrtng', 75),
|
||||
(12, 'critstrkrtng', 75),
|
||||
(12, 'hastertng', 75),
|
||||
(12, 'str', 55),
|
||||
(12, 'atkpwr', 50),
|
||||
(13, 'splpwr', 100),
|
||||
(13, 'manargn', 67),
|
||||
(13, 'int', 65),
|
||||
(13, 'hastertng', 59),
|
||||
(13, 'critstrkrtng', 48),
|
||||
(13, 'spi', 22),
|
||||
(14, 'manargn', 100),
|
||||
(14, 'int', 69),
|
||||
(14, 'splpwr', 60),
|
||||
(14, 'spi', 52),
|
||||
(14, 'critstrkrtng', 38),
|
||||
(14, 'hastertng', 31),
|
||||
(15, 'hitrtng', 100),
|
||||
(15, 'shasplpwr', 76),
|
||||
(15, 'splpwr', 76),
|
||||
(15, 'critstrkrtng', 54),
|
||||
(15, 'hastertng', 50),
|
||||
(15, 'spi', 16),
|
||||
(15, 'int', 16),
|
||||
(16, 'mledps', 360),
|
||||
(16, 'armorpenrtng', 100),
|
||||
(16, 'str', 99),
|
||||
(16, 'hitrtng', 91),
|
||||
(16, 'exprtng', 90),
|
||||
(16, 'critstrkrtng', 57),
|
||||
(16, 'hastertng', 55),
|
||||
(16, 'atkpwr', 36),
|
||||
(16, 'armor', 1),
|
||||
(17, 'mledps', 337),
|
||||
(17, 'hitrtng', 100),
|
||||
(17, 'str', 97),
|
||||
(17, 'exprtng', 81),
|
||||
(17, 'armorpenrtng', 61),
|
||||
(17, 'critstrkrtng', 45),
|
||||
(17, 'atkpwr', 35),
|
||||
(17, 'hastertng', 28),
|
||||
(17, 'armor', 1),
|
||||
(18, 'mledps', 419),
|
||||
(18, 'parryrtng', 100),
|
||||
(18, 'hitrtng', 97),
|
||||
(18, 'str', 96),
|
||||
(18, 'defrtng', 85),
|
||||
(18, 'exprtng', 69),
|
||||
(18, 'dodgertng', 61),
|
||||
(18, 'agi', 61),
|
||||
(18, 'sta', 61),
|
||||
(18, 'critstrkrtng', 49),
|
||||
(18, 'atkpwr', 41),
|
||||
(18, 'armorpenrtng', 31),
|
||||
(18, 'armor', 5),
|
||||
(19, 'mledps', 209),
|
||||
(19, 'str', 100),
|
||||
(19, 'hitrtng', 66),
|
||||
(19, 'exprtng', 51),
|
||||
(19, 'hastertng', 48),
|
||||
(19, 'critstrkrtng', 45),
|
||||
(19, 'atkpwr', 34),
|
||||
(19, 'armorpenrtng', 32),
|
||||
(19, 'armor', 1),
|
||||
(20, 'hitrtng', 100),
|
||||
(20, 'splpwr', 60),
|
||||
(20, 'hastertng', 56),
|
||||
(20, 'critstrkrtng', 40),
|
||||
(20, 'int', 11),
|
||||
(21, 'mledps', 135),
|
||||
(21, 'hitrtng', 100),
|
||||
(21, 'exprtng', 84),
|
||||
(21, 'agi', 55),
|
||||
(21, 'int', 55),
|
||||
(21, 'critstrkrtng', 55),
|
||||
(21, 'hastertng', 42),
|
||||
(21, 'str', 35),
|
||||
(21, 'atkpwr', 32),
|
||||
(21, 'splpwr', 29),
|
||||
(21, 'armorpenrtng', 26),
|
||||
(22, 'manargn', 100),
|
||||
(22, 'int', 85),
|
||||
(22, 'splpwr', 77),
|
||||
(22, 'critstrkrtng', 62),
|
||||
(22, 'hastertng', 35),
|
||||
(23, 'hitrtng', 100),
|
||||
(23, 'hastertng', 54),
|
||||
(23, 'arcsplpwr', 49),
|
||||
(23, 'splpwr', 49),
|
||||
(23, 'critstrkrtng', 37),
|
||||
(23, 'int', 34),
|
||||
(23, 'frosplpwr', 24),
|
||||
(23, 'firsplpwr', 24),
|
||||
(23, 'spi', 14),
|
||||
(24, 'hitrtng', 100),
|
||||
(24, 'hastertng', 53),
|
||||
(24, 'firsplpwr', 46),
|
||||
(24, 'splpwr', 46),
|
||||
(24, 'critstrkrtng', 43),
|
||||
(24, 'frosplpwr', 23),
|
||||
(24, 'arcsplpwr', 23),
|
||||
(24, 'int', 13),
|
||||
(25, 'hitrtng', 100),
|
||||
(25, 'hastertng', 42),
|
||||
(25, 'frosplpwr', 39),
|
||||
(25, 'splpwr', 39),
|
||||
(25, 'arcsplpwr', 19),
|
||||
(25, 'firsplpwr', 19),
|
||||
(25, 'critstrkrtng', 19),
|
||||
(25, 'int', 6),
|
||||
(26, 'hitrtng', 100),
|
||||
(26, 'shasplpwr', 72),
|
||||
(26, 'splpwr', 72),
|
||||
(26, 'hastertng', 61),
|
||||
(26, 'critstrkrtng', 38),
|
||||
(26, 'firsplpwr', 36),
|
||||
(26, 'spi', 34),
|
||||
(26, 'int', 15),
|
||||
(27, 'hitrtng', 100),
|
||||
(27, 'hastertng', 50),
|
||||
(27, 'firsplpwr', 45),
|
||||
(27, 'shasplpwr', 45),
|
||||
(27, 'splpwr', 45),
|
||||
(27, 'critstrkrtng', 31),
|
||||
(27, 'spi', 29),
|
||||
(27, 'int', 13),
|
||||
(28, 'hitrtng', 100),
|
||||
(28, 'firsplpwr', 47),
|
||||
(28, 'splpwr', 47),
|
||||
(28, 'hastertng', 46),
|
||||
(28, 'spi', 26),
|
||||
(28, 'shasplpwr', 23),
|
||||
(28, 'critstrkrtng', 16),
|
||||
(28, 'int', 13),
|
||||
(29, 'hitrtng', 100),
|
||||
(29, 'splpwr', 66),
|
||||
(29, 'hastertng', 54),
|
||||
(29, 'critstrkrtng', 43),
|
||||
(29, 'spi', 22),
|
||||
(29, 'int', 22),
|
||||
(30, 'agi', 100),
|
||||
(30, 'sta', 75),
|
||||
(30, 'dodgertng', 65),
|
||||
(30, 'defrtng', 60),
|
||||
(30, 'exprtng', 16),
|
||||
(30, 'str', 10),
|
||||
(30, 'armor', 10),
|
||||
(30, 'hitrtng', 8),
|
||||
(30, 'hastertng', 5),
|
||||
(30, 'atkpwr', 4),
|
||||
(30, 'feratkpwr', 4),
|
||||
(30, 'critstrkrtng', 3),
|
||||
(31, 'splpwr', 100),
|
||||
(31, 'manargn', 73),
|
||||
(31, 'hastertng', 57),
|
||||
(31, 'int', 51),
|
||||
(31, 'spi', 32),
|
||||
(31, 'critstrkrtng', 11),
|
||||
(32, 'agi', 100),
|
||||
(32, 'armorpenrtng', 90),
|
||||
(32, 'str', 80),
|
||||
(32, 'critstrkrtng', 55),
|
||||
(32, 'exprtng', 50),
|
||||
(32, 'hitrtng', 50),
|
||||
(32, 'feratkpwr', 40),
|
||||
(32, 'atkpwr', 40),
|
||||
(32, 'hastertng', 35);
|
||||
|
||||
@@ -7,35 +7,35 @@ CREATE TABLE IF NOT EXISTS `playerbots_weightscales` (
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=33 DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT;
|
||||
|
||||
INSERT INTO `playerbots_weightscales` (`id`, `name`, `class`) VALUES
|
||||
(1, 'arms', 1),
|
||||
(2, 'fury', 1),
|
||||
(3, 'prot', 1),
|
||||
(4, 'holy', 2),
|
||||
(5, 'prot', 2),
|
||||
(6, 'retrib', 2),
|
||||
(7, 'beast', 3),
|
||||
(8, 'marks', 3),
|
||||
(9, 'surv', 3),
|
||||
(10, 'assas', 4),
|
||||
(11, 'combat', 4),
|
||||
(12, 'subtle', 4),
|
||||
(13, 'disc', 5),
|
||||
(14, 'holy', 5),
|
||||
(15, 'shadow', 5),
|
||||
(16, 'blooddps', 6),
|
||||
(17, 'frostdps', 6),
|
||||
(18, 'frosttank', 6),
|
||||
(19, 'unholydps', 6),
|
||||
(20, 'elem', 7),
|
||||
(21, 'enhance', 7),
|
||||
(22, 'resto', 7),
|
||||
(23, 'arcane', 8),
|
||||
(24, 'fire', 8),
|
||||
(25, 'frost', 8),
|
||||
(26, 'afflic', 9),
|
||||
(27, 'demo', 9),
|
||||
(28, 'destro', 9),
|
||||
(29, 'balance', 11),
|
||||
(30, 'feraltank', 11),
|
||||
(31, 'resto', 11),
|
||||
(32, 'feraldps', 11);
|
||||
(1, 'arms', 1),
|
||||
(2, 'fury', 1),
|
||||
(3, 'prot', 1),
|
||||
(4, 'holy', 2),
|
||||
(5, 'prot', 2),
|
||||
(6, 'retrib', 2),
|
||||
(7, 'beast', 3),
|
||||
(8, 'marks', 3),
|
||||
(9, 'surv', 3),
|
||||
(10, 'assas', 4),
|
||||
(11, 'combat', 4),
|
||||
(12, 'subtle', 4),
|
||||
(13, 'disc', 5),
|
||||
(14, 'holy', 5),
|
||||
(15, 'shadow', 5),
|
||||
(16, 'blooddps', 6),
|
||||
(17, 'frostdps', 6),
|
||||
(18, 'frosttank', 6),
|
||||
(19, 'unholydps', 6),
|
||||
(20, 'elem', 7),
|
||||
(21, 'enhance', 7),
|
||||
(22, 'resto', 7),
|
||||
(23, 'arcane', 8),
|
||||
(24, 'fire', 8),
|
||||
(25, 'frost', 8),
|
||||
(26, 'afflic', 9),
|
||||
(27, 'demo', 9),
|
||||
(28, 'destro', 9),
|
||||
(29, 'balance', 11),
|
||||
(30, 'feraltank', 11),
|
||||
(31, 'resto', 11),
|
||||
(32, 'feraldps', 11);
|
||||
@@ -24,9 +24,9 @@ CREATE TABLE IF NOT EXISTS `updates_include` (
|
||||
DELETE FROM `updates_include`;
|
||||
/*!40000 ALTER TABLE `updates_include` DISABLE KEYS */;
|
||||
INSERT INTO `updates_include` (`path`, `state`) VALUES
|
||||
('$/data/sql/playerbots/updates', 'RELEASED'),
|
||||
('$/data/sql/playerbots/custom', 'CUSTOM'),
|
||||
('$/data/sql/playerbots/archive', 'ARCHIVED');
|
||||
('$/data/sql/playerbots/updates', 'RELEASED'),
|
||||
('$/data/sql/playerbots/custom', 'CUSTOM'),
|
||||
('$/data/sql/playerbots/archive', 'ARCHIVED');
|
||||
/*!40000 ALTER TABLE `updates_include` ENABLE KEYS */;
|
||||
|
||||
/*!40101 SET SQL_MODE=IFNULL(@OLD_SQL_MODE, '') */;
|
||||
|
||||
@@ -1285,7 +1285,7 @@ CREATE TABLE IF NOT EXISTS `ai_playerbot_texts_chance` (
|
||||
|
||||
/*!40000 ALTER TABLE `ai_playerbot_texts_chance` DISABLE KEYS */;
|
||||
INSERT INTO `ai_playerbot_texts_chance` (`id`, `name`, `probability`) VALUES
|
||||
(1, 'taunt', 30),
|
||||
(2, 'aoe', 75),
|
||||
(3, 'loot', 20);
|
||||
(1, 'taunt', 30),
|
||||
(2, 'aoe', 75),
|
||||
(3, 'loot', 20);
|
||||
/*!40000 ALTER TABLE `ai_playerbot_texts_chance` ENABLE KEYS */;
|
||||
@@ -4,11 +4,11 @@ DELETE FROM `playerbots_travelnode_path` WHERE `node_id` = 3780;
|
||||
DELETE FROM `playerbots_travelnode` WHERE `id` = 3780;
|
||||
|
||||
-- Insert new entries into playerbots_travelnode
|
||||
INSERT INTO `playerbots_travelnode` (`id`, `name`, `map_id`, `x`, `y`, `z`, `linked`)
|
||||
INSERT INTO `playerbots_travelnode` (`id`, `name`, `map_id`, `x`, `y`, `z`, `linked`)
|
||||
VALUES (3780, 'Highlord Mograine', 533, 2524.32, -2951.28, 245.633, 1);
|
||||
|
||||
-- Insert new entries into playerbots_travelnode_path
|
||||
INSERT INTO `playerbots_travelnode_path` (`node_id`, `to_node_id`, `nr`, `map_id`, `x`, `y`, `z`)
|
||||
INSERT INTO `playerbots_travelnode_path` (`node_id`, `to_node_id`, `nr`, `map_id`, `x`, `y`, `z`)
|
||||
VALUES
|
||||
(3780, 472, 0, 533, 2524.32, -2951.28, 245.633),
|
||||
(3780, 472, 1, 533, 2528.79, -2948.58, 245.633),
|
||||
@@ -16,7 +16,7 @@ VALUES
|
||||
(3780, 757, 1, 533, 2517.62, -2959.38, 245.636);
|
||||
|
||||
-- Insert new entries into playerbots_travelnode_link
|
||||
INSERT INTO `playerbots_travelnode_link` (`node_id`, `to_node_id`, `type`, `object`, `distance`, `swim_distance`, `extra_cost`, `calculated`, `max_creature_0`, `max_creature_1`, `max_creature_2`)
|
||||
INSERT INTO `playerbots_travelnode_link` (`node_id`, `to_node_id`, `type`, `object`, `distance`, `swim_distance`, `extra_cost`, `calculated`, `max_creature_0`, `max_creature_1`, `max_creature_2`)
|
||||
VALUES
|
||||
(3780, 472, 1, 0, 5.3221, 0, 0, 1, 83, 0, 0),
|
||||
(3780, 757, 1, 0, 10.6118, 0, 0, 1, 83, 0, 0);
|
||||
849
data/sql/playerbots/updates/2025_09_16_00.sql
Normal file
849
data/sql/playerbots/updates/2025_09_16_00.sql
Normal file
@@ -0,0 +1,849 @@
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "посреди нигде" WHERE `id` = 1;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "в неопределенном месте" WHERE `id` = 2;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "где-то" WHERE `id` = 3;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "что-то" WHERE `id` = 4;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "интересно, какой на вкус %item_link" WHERE `id` = 5;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "нет, мне выпал %item_link" WHERE `id` = 6;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "опять этот хлам %item_link" WHERE `id` = 7;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "похоже, я лутаю мусор %item_link" WHERE `id` = 8;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "ну, лучше чем ничего, наверное %item_link" WHERE `id` = 9;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "не знаю, что делать с %item_link" WHERE `id` = 10;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "интересно, какой на вкус %item_link" WHERE `id` = 11;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "могу лутать %item_link весь день" WHERE `id` = 12;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "еще один день, еще один %item_link" WHERE `id` = 13;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "получил немного %item_link" WHERE `id` = 14;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "немного %item_link — это нормально" WHERE `id` = 15;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "неплохо, только что получил %item_link" WHERE `id` = 16;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "только что залутал %item_link в %zone_name" WHERE `id` = 17;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "могу найти применение %item_link" WHERE `id` = 18;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "деньги, деньги, деньги %item_link" WHERE `id` = 19;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "получил %item_link" WHERE `id` = 20;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "%item_link — лучший для охотника" WHERE `id` = 21;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "%item_link — лучший для %my_class" WHERE `id` = 22;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "сегодня удача на моей стороне %item_link" WHERE `id` = 23;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "классный %item_link, только что залутал" WHERE `id` = 24;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "вау, только что получил %item_link" WHERE `id` = 25;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "%item_link — лучший для охотника" WHERE `id` = 26;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "%item_link — лучший для %my_class" WHERE `id` = 27;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "сегодня удача на моей стороне %item_link" WHERE `id` = 28;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "классный %item_link, только что залутал" WHERE `id` = 29;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "ОГО, посмотрите, что я только что получил %item_link!!!" WHERE `id` = 30;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Нет @#$@%! Не может быть, я получил %item_link, это безумие" WHERE `id` = 31;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Нет @#$@%! Не может быть, я получил %item_link, это безумие" WHERE `id` = 32;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Я только что взял %quest_link" WHERE `id` = 33;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "только что принял %quest_link" WHERE `id` = 34;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "%quest_link попробую выполнить это задание" WHERE `id` = 35;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "взял %quest_link в %zone_name" WHERE `id` = 36;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Наконец-то закончил %quest_obj_name для %quest_link" WHERE `id` = 37;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "наконец-то получил %quest_obj_available/%quest_obj_required %quest_obj_name для %quest_link" WHERE `id` = 38;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "%quest_obj_full_formatted для %quest_link, наконец-то" WHERE `id` = 39;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Ох, получил %quest_obj_available/%quest_obj_required %quest_obj_name для %quest_link" WHERE `id` = 40;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "еще нужно %quest_obj_missing %quest_obj_name для %quest_link" WHERE `id` = 41;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "%quest_obj_full_formatted, все еще работаю над %quest_link" WHERE `id` = 42;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Наконец-то закончил с %item_link для %quest_link" WHERE `id` = 43;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "наконец-то получил %quest_obj_available/%quest_obj_required %item_link для %quest_link" WHERE `id` = 44;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "%quest_obj_full_formatted для %quest_link, наконец-то" WHERE `id` = 45;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Ох, получил %quest_obj_available/%quest_obj_required %item_link для %quest_link" WHERE `id` = 46;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "еще нужно %quest_obj_missing %item_link для %quest_link" WHERE `id` = 47;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "%quest_obj_full_formatted, все еще работаю над %quest_link" WHERE `id` = 48;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Не успел завершить %quest_link вовремя..." WHERE `id` = 49;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Время для %quest_link вышло :(" WHERE `id` = 50;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Я выполнил все задачи для %quest_link" WHERE `id` = 51;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Выполнил все задачи для %quest_link" WHERE `id` = 52;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Скоро сдам %quest_link, только что закончил все задачи" WHERE `id` = 53;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Да, наконец-то сдал %quest_link" WHERE `id` = 54;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "сдал %quest_link" WHERE `id` = 55;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "смог завершить %quest_link, только что сдал" WHERE `id` = 56;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "только что сдал %quest_link" WHERE `id` = 57;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "только что сдал %quest_link в %zone_name" WHERE `id` = 58;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "еще одна жертва — %victim_name" WHERE `id` = 59;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Я продолжаю убивать %victim_name, нечего рассказывать" WHERE `id` = 60;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "еще один %victim_name пал" WHERE `id` = 61;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "минус один %victim_name в %zone_name" WHERE `id` = 62;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Убил этого элитного ублюдка %victim_name!" WHERE `id` = 63;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "убил элиту %victim_name в %zone_name" WHERE `id` = 64;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Фух, удалось завалить %victim_name!" WHERE `id` = 65;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Это было круто! Только что убил %victim_name! Теперь есть что рассказать" WHERE `id` = 66;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Йо, я только что убил %victim_name!" WHERE `id` = 67;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "убил редкого %victim_name в %zone_name" WHERE `id` = 68;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Что я только что убил? %victim_name" WHERE `id` = 69;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Только что убил этого пета %victim_name" WHERE `id` = 70;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "О да, только что убил %victim_name" WHERE `id` = 71;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "убил %victim_name в %zone_name" WHERE `id` = 72;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Динг!" WHERE `id` = 73;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Да, я теперь %my_level уровень!" WHERE `id` = 74;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Я только что повысил уровень" WHERE `id` = 75;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Я %my_level уровень!!!" WHERE `id` = 76;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Становлюсь сильнее, уже %my_level уровень!!!" WHERE `id` = 77;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Только что достиг %my_level уровня!!!" WHERE `id` = 78;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "ОГО, наконец-то %my_level уровень!!!" WHERE `id` = 79;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "%my_level!!! теперь могу заниматься эндгейм-контентом" WHERE `id` = 80;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "свежий новый уровень %my_level %my_class!!!" WHERE `id` = 81;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "еще один уровень %my_level %my_race %my_class!" WHERE `id` = 82;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Молодец %other_name. Ты это заслужил." WHERE `id` = 83;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Это было ужасно %other_name. Не хотел этого делать, но..." WHERE `id` = 84;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Кому нужен %instance_name?" WHERE `id` = 85;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Есть группы в %instance_name?" WHERE `id` = 86;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Нужна помощь в %instance_name?" WHERE `id` = 87;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "ЛФД: %instance_name." WHERE `id` = 88;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Кому нужен %my_role для %instance_name?" WHERE `id` = 89;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Не хватает %my_role для %instance_name?" WHERE `id` = 90;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Могу быть %my_role для %instance_name." WHERE `id` = 91;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Нужна помощь с %instance_name?" WHERE `id` = 92;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Нужна помощь %my_role с %instance_name?" WHERE `id` = 93;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Кому нужен шмот из %instance_name?" WHERE `id` = 94;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Немного пофармить в %instance_name?" WHERE `id` = 95;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Ищу %instance_name" WHERE `id` = 96;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Нужна помощь в %instance_name." WHERE `id` = 97;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Хочу пройти %instance_name." WHERE `id` = 98;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "%my_role ищет %instance_name." WHERE `id` = 99;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Как насчет %instance_name?" WHERE `id` = 100;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Кто хочет пофармить %instance_name?" WHERE `id` = 101;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Пойдем в %instance_name?" WHERE `id` = 102;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Ищу %instance_name." WHERE `id` = 103;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Нужна помощь с квестами в %instance_name?" WHERE `id` = 104;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Хочу квестить в %instance_name." WHERE `id` = 105;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Кто-то с квестами в %instance_name?" WHERE `id` = 106;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Могу помочь с квестами в %instance_name." WHERE `id` = 107;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "%my_role: есть место в группе для %instance_name?" WHERE `id` = 108;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Кто-нибудь еще ходит в %instance_name в наши дни?" WHERE `id` = 109;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "%instance_name: кто хочет взять %my_role?" WHERE `id` = 110;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Есть ли смысл быть %my_role в %instance_name?" WHERE `id` = 111;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Стоит ли идти в %instance_name?" WHERE `id` = 112;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Кому нужны еще люди для %instance_name?" WHERE `id` = 113;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "В %instance_name боссы дропают хороший шмот. Пойдем?" WHERE `id` = 114;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Как насчет %instance_name?" WHERE `id` = 115;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Кому нужен %my_role?" WHERE `id` = 116;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Кому нужен %my_role?" WHERE `id` = 117;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Кто хочет %instance_name?" WHERE `id` = 118;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Кто может призвать меня в %instance_name?" WHERE `id` = 119;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Встретимся в %instance_name" WHERE `id` = 120;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Хочу быструю пробежку %instance_name" WHERE `id` = 121;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Хочу полный забег %instance_name" WHERE `id` = 122;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Сколько раз ты был в %instance_name?" WHERE `id` = 123;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Еще один забег в %instance_name?" WHERE `id` = 124;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Вайпнулись в %instance_name? Возьмите меня!" WHERE `id` = 125;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Возьмите меня в %instance_name, пожалуйста." WHERE `id` = 126;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Быстрый забег в %instance_name?" WHERE `id` = 127;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Полный забег в %instance_name?" WHERE `id` = 128;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Кто может взять %my_role в %instance_name?" WHERE `id` = 129;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "ЛФГ %instance_name, я %my_role" WHERE `id` = 130;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "%my_role ЛФГ %instance_name" WHERE `id` = 131;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Нужна помощь с %quest_link?" WHERE `id` = 132;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Кто хочет поделиться %quest_link?" WHERE `id` = 133;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Кто делает %quest_link?" WHERE `id` = 134;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Хочу сделать %quest_link." WHERE `id` = 135;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Кто хочет пофармить %category?" WHERE `id` = 136;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Ищу помощь для фарма %category." WHERE `id` = 137;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Черт, %category такие дорогие!" WHERE `id` = 138;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Хочу %category." WHERE `id` = 139;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Нужна помощь с %category." WHERE `id` = 140;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Куплю %category." WHERE `id` = 141;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Кому интересно %category?" WHERE `id` = 142;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Продам %category." WHERE `id` = 143;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Продаю %category дешевле, чем на Аукционе." WHERE `id` = 144;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Кто хочет пофармить %category?" WHERE `id` = 145;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Хочу пофармить %category." WHERE `id` = 146;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Ищу пати после %category." WHERE `id` = 147;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Любые %category приветствуются." WHERE `id` = 148;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Куплю что угодно из %category." WHERE `id` = 149;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Вау, кто-то фармит %category!" WHERE `id` = 150;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "%category отлично продаются на аукционе." WHERE `id` = 151;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Аукцион горячий по %category." WHERE `id` = 152;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "%category на рынке." WHERE `id` = 153;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Хочу обменять немного %category." WHERE `id` = 154;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Нужно больше %category." WHERE `id` = 155;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Кто-нибудь может поделиться %category?" WHERE `id` = 156;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Кто хочет %category?" WHERE `id` = 157;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Немного %category, пожалуйста?" WHERE `id` = 158;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Надо было прокачать навык для %category." WHERE `id` = 159;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Очень хочу %category." WHERE `id` = 160;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Люди убивают ради %category." WHERE `id` = 161;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "%category — отличная сделка!" WHERE `id` = 162;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Все сходят с ума по %category!" WHERE `id` = 163;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Где лучше всего фармить %category?" WHERE `id` = 164;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Я полностью готов к %category." WHERE `id` = 165;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Выгодно ли продавать %category?" WHERE `id` = 166;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Наверное, я бы оставил все свои %category себе." WHERE `id` = 167;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Нужна группа? Может, пофармить %category?" WHERE `id` = 168;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Все еще думаю о %category." WHERE `id` = 169;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Я уже слышал о %category, но карманы пусты." WHERE `id` = 170;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "ЛФГ для %category" WHERE `id` = 171;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Сделает ли продажа %category меня богатым?" WHERE `id` = 172;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "ОК. Завтра фармлю %category." WHERE `id` = 173;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Все говорят о %category." WHERE `id` = 174;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Видел как минимум десять человек, фармящих %category." WHERE `id` = 175;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Вчера продал все свои %category. Теперь я полностью на мели!" WHERE `id` = 176;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Хочу вступить в гильдию, фармящую %category." WHERE `id` = 177;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Кто фармит репутацию %faction?" WHERE `id` = 178;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Кто поможет с %faction?" WHERE `id` = 179;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Хочу квестить ради %faction." WHERE `id` = 180;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "%faction — лучшая." WHERE `id` = 181;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Нужно чуть-чуть, чтобы стать %rep_level у %faction." WHERE `id` = 182;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Кто-нибудь уже %rep_level у %faction?" WHERE `id` = 183;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Кто хочет стать %rep_level у %faction?" WHERE `id` = 184;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Я никогда не стану %rep_level у %faction." WHERE `id` = 185;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Кто-то не хватает репы у %faction?" WHERE `id` = 186;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Могу помочь с фармом репы %faction." WHERE `id` = 187;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Чем больше репы, тем лучше. Особенно у %faction." WHERE `id` = 188;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "%faction: нужно %rndK для %rep_level." WHERE `id` = 189;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Кто может поделиться квестами %faction?" WHERE `id` = 190;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Есть подземелья для %faction?" WHERE `id` = 191;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Хочу фармить репу %faction." WHERE `id` = 192;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Давайте фармить репу %faction!" WHERE `id` = 193;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Фармлю репу %faction." WHERE `id` = 194;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Хочу пофармить %faction." WHERE `id` = 195;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Нужна помощь с %faction." WHERE `id` = 196;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "%faction что-то полезное продает?" WHERE `id` = 197;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Есть ли у %faction торговцы?" WHERE `id` = 198;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Кто фармит %faction?" WHERE `id` = 199;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Как лучше всего фармить %faction?" WHERE `id` = 200;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Ненавижу фарм репы %faction." WHERE `id` = 201;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Я так устал от %faction." WHERE `id` = 202;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Пойдем за %faction?" WHERE `id` = 203;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Кажется, все уже %rep_level у %faction. Только я, как обычно, опаздываю." WHERE `id` = 204;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "ЛФГ для фарма репы %faction?" WHERE `id` = 205;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Кто-нибудь подскажет хорошее место для фарма репы %faction?" WHERE `id` = 206;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Будет ли польза от репы %faction?" WHERE `id` = 207;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Кто бы мог подумать, что репа %faction окажется полезной..." WHERE `id` = 208;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Хочу быть превознесенным у всех фракций, начну с %faction." WHERE `id` = 209;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Есть ли смысл повышать репу с %faction?" WHERE `id` = 210;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Что лучше для %faction? Квесты или фарм мобов?" WHERE `id` = 211;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Пофармлю репу %faction для тебя. Только дай немного золота." WHERE `id` = 212;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Думаю, фармить репу %faction — это навсегда." WHERE `id` = 213;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Я убиваю ради %faction каждый день, но все еще далеко до %rep_level." WHERE `id` = 214;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "На %my_level депозиты на аукционе уменьшатся, да?" WHERE `id` = 215;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Сколько у тебя превознесенных реп?" WHERE `id` = 216;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Кто хочет быть %my_level у %faction?" WHERE `id` = 217;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Черт. Моя гильдия вчера хорошо пофармила %faction без меня." WHERE `id` = 218;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Никто не хочет мне помогать, потому что я %rep_level у %faction." WHERE `id` = 219;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Пожалуйста, держись подальше от %faction." WHERE `id` = 220;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Хочу в пати в %zone_name." WHERE `id` = 221;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Кто ищет %my_role?" WHERE `id` = 222;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "%my_role ищет гильдию." WHERE `id` = 223;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Ищу золото." WHERE `id` = 224;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "%my_role хочет вступить в хорошую гильдию." WHERE `id` = 225;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Нужен друг." WHERE `id` = 226;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Кто-нибудь чувствует себя одиноко?" WHERE `id` = 227;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Скучно..." WHERE `id` = 228;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Кто хочет немного?" WHERE `id` = 229;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Давай, поймай меня!" WHERE `id` = 230;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Может, дуэль в %zone_name?" WHERE `id` = 231;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Кто-нибудь что-то делает?" WHERE `id` = 232;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "%zone_name: кто-нибудь здесь есть?" WHERE `id` = 233;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "%zone_name: где все?" WHERE `id` = 234;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Похоже, я один в %zone_name." WHERE `id` = 235;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Встретимся в %zone_name." WHERE `id` = 236;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Давайте квестить в %zone_name!" WHERE `id` = 237;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "%zone_name — лучшее место!" WHERE `id` = 238;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Хочу в %zone_name. Кто со мной?" WHERE `id` = 239;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Кто хочет пойти в %zone_name?" WHERE `id` = 240;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Мне не нравится %zone_name. Куда пойти?" WHERE `id` = 241;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Есть хорошие квесты в %zone_name?" WHERE `id` = 242;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Куда идти после %zone_name?" WHERE `id` = 243;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Кто в %zone_name?" WHERE `id` = 244;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "ЛФГ в %zone_name." WHERE `id` = 245;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "%zone_name — худшее место." WHERE `id` = 246;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Лови меня в %zone_name!" WHERE `id` = 247;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Пойдем в %zone_name!" WHERE `id` = 248;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Хочу квестить в %zone_name" WHERE `id` = 249;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "У кого есть квесты в %zone_name?" WHERE `id` = 250;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Приходите сюда, в %zone_name!" WHERE `id` = 251;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Похоже, в %zone_name нет Орды" WHERE `id` = 252;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Похоже, в %zone_name нет Альянса" WHERE `id` = 253;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Я очень устал от %zone_name. Может, пойти куда-нибудь еще?" WHERE `id` = 254;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Удачи" WHERE `id` = 255;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Хочу домой, а потом на край" WHERE `id` = 256;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Кто-нибудь знает, что нужно для двуручного боя?" WHERE `id` = 257;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Всем привет!" WHERE `id` = 258;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "%zone_name уютно" WHERE `id` = 259;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Я отлично себя чувствую" WHERE `id` = 260;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Я не игнорирую людей, я троллю их, пока они не проигнорируют меня" WHERE `id` = 261;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Что думаете о моей сборке? %my_role" WHERE `id` = 262;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Рад видеть, что чат еще помнит" WHERE `id` = 263;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Как и все оружие — это лучший для охотника" WHERE `id` = 264;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Вся суть игры для меня — соло и поиск новых способов соло" WHERE `id` = 265;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Я НИКОГДА никого не обманывал" WHERE `id` = 266;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Ах да, мир варкрафта, где я ищу жизненные советы" WHERE `id` = 267;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "АЛЛО?" WHERE `id` = 268;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Пора пробиваться в %zone_name" WHERE `id` = 269;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "%zone_name" WHERE `id` = 270;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "надо в туалет" WHERE `id` = 271;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Если не лутать скинируемых мобов, твой пп уменьшится на 1мм навсегда" WHERE `id` = 272;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "НЕТТТТТТТТТТ" WHERE `id` = 273;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Я ЛЮБЛЮ КАРТОШКУ" WHERE `id` = 274;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "w чат" WHERE `id` = 275;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "привет, как дела" WHERE `id` = 276;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "только что вышел и снова зашел" WHERE `id` = 277;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "можете потише, я заблудился в %zone_name" WHERE `id` = 278;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "кто хочет выпить со мной в %zone_name ... ик!" WHERE `id` = 279;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "хахахахахииииииии дирин диринг инггггг хахахахахииииииииииииии" WHERE `id` = 280;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "раньше приманка была правдоподобной" WHERE `id` = 281;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "может, ты просто потерял невинность" WHERE `id` = 282;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "есть гильдии, готовые тащить %my_role?" WHERE `id` = 283;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "чем выше уровень, тем легче золото" WHERE `id` = 284;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "утро" WHERE `id` = 285;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "почему у меня болит задница?" WHERE `id` = 286;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Мне кажется, дух — лучший для прокачки" WHERE `id` = 287;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Особенно для тролля" WHERE `id` = 288;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "КТО-НИБУДЬ ПРИГЛАСИТЕ МЕНЯ" WHERE `id` = 289;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "нужно много выпивки" WHERE `id` = 290;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "чертовы гномы" WHERE `id` = 291;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "никто не любит гномов" WHERE `id` = 292;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "гномы годятся только для одного" WHERE `id` = 293;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Ну" WHERE `id` = 294;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "грибы" WHERE `id` = 295;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "автоматические мысли — страшная вещь" WHERE `id` = 296;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "ум более гибок, чем нам кажется" WHERE `id` = 297;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "есть гильдии для прокачки?" WHERE `id` = 298;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "брб" WHERE `id` = 299;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Почему снег белый, а лед прозрачный? Ведь это одно и то же" WHERE `id` = 300;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "почему взбитые сливки пышные, а обычные нет" WHERE `id` = 301;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "почему ноги пахнут, если у них нет носа" WHERE `id` = 302;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "похоже, прибыла банка новичков" WHERE `id` = 303;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "хватит троллить новичков бредовыми ответами" WHERE `id` = 304;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "На этом сервере есть PvP?" WHERE `id` = 305;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "угу" WHERE `id` = 306;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "фух... :)" WHERE `id` = 307;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "вы знали что" WHERE `id` = 308;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "я не пытаюсь представить, что чувствуют другие существа" WHERE `id` = 309;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "ой, не тот чат" WHERE `id` = 310;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "бро, вы сегодня отжигаете" WHERE `id` = 311;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "пусть все знают, что мой текст был здесь" WHERE `id` = 312;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "гррр злой" WHERE `id` = 313;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "гринд — это весело" WHERE `id` = 314;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Wow держит меня в тонусе" WHERE `id` = 315;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "у меня вопрос: где можно взять бросок на больше опыта? я в %zone_name" WHERE `id` = 316;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "вы любите сосиски?" WHERE `id` = 317;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Пригласите меня. Я помогу" WHERE `id` = 318;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "какой класс лучше для пвп?" WHERE `id` = 319;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "где, черт возьми, тренер кулинарии в %zone_name" WHERE `id` = 320;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "знаете, что происходит в %zone_name?" WHERE `id` = 321;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Мне нужно что-то скрафтить" WHERE `id` = 322;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "что такое лигма" WHERE `id` = 323;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "что такое сугма" WHERE `id` = 324;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "лима болс" WHERE `id` = 325;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "сугма болс" WHERE `id` = 326;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Я ЕМ ЗАДНИЦУ" WHERE `id` = 327;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Я хочу засунуть %random_inventory_item_link себе в задницу" WHERE `id` = 328;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Я хочу засунуть %random_inventory_item_link тебе в задницу" WHERE `id` = 329;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Дарнасс" WHERE `id` = 330;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "похоже, у тебя сугма" WHERE `id` = 331;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "дииз натс в твой рот" WHERE `id` = 332;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "крутой стояк, бро" WHERE `id` = 333;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "ERP?" WHERE `id` = 334;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "я перепробовал все, но в итоге ERP помог" WHERE `id` = 335;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Хочу заняться этим в %zone_name" WHERE `id` = 336;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "ищу гнома-девушку с гориллой для ERP в %zone_name" WHERE `id` = 337;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "я могу понять засранца, но извращенца?" WHERE `id` = 338;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "в %zone_name нет гят" WHERE `id` = 339;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Я убиваю всех животных в %zone_name. К черту животных!!!" WHERE `id` = 340;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "хорошо, что у меня три ноги" WHERE `id` = 341;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "не злись, я гоиню как сигма" WHERE `id` = 342;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "попробуй палец, но дырку" WHERE `id` = 343;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "%prefix %random_taken_quest_or_item_link" WHERE `id` = 344;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "%prefix %random_inventory_item_link" WHERE `id` = 345;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "%thunderfury_link" WHERE `id` = 346;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "%thunderfury_link%thunderfury_link" WHERE `id` = 347;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "%thunderfury_link%thunderfury_link%thunderfury_link" WHERE `id` = 348;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Кажется, я только что услышал %thunderfury_link" WHERE `id` = 349;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Кажется, я слышал %thunderfury_link" WHERE `id` = 350;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Я точно слышал %thunderfury_link" WHERE `id` = 351;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Не знаю, но уверен, что слышал %thunderfury_link" WHERE `id` = 352;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Ты только что сказал %thunderfury_link" WHERE `id` = 353;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "кто-то сказал %thunderfury_link" WHERE `id` = 354;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Кто-то сказал %thunderfury_link?" WHERE `id` = 355;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Кто-то сказал %thunderfury_link" WHERE `id` = 356;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "%thunderfury_link выходит из шкафа" WHERE `id` = 357;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "мог бы поклясться, что это был %thunderfury_link, хотя, может, и %thunderfury_link" WHERE `id` = 358;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Зачем использовать %thunderfury_link, если %thunderfury_link явно круче" WHERE `id` = 359;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Продаю %item_formatted_link за %cost_gold." WHERE `id` = 360;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Кто хочет %item_formatted_link за %cost_gold?" WHERE `id` = 361;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Кому нужен %item_formatted_link? Всего %cost_gold." WHERE `id` = 362;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Всего %cost_gold за %item_formatted_link!" WHERE `id` = 363;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Продаю %item_formatted_link за %cost_gold." WHERE `id` = 364;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "%item_formatted_link твой всего за %cost_gold!" WHERE `id` = 365;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Смешная цена %cost_gold за %item_formatted_link!" WHERE `id` = 366;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Хочу продать %item_formatted_link за %cost_gold." WHERE `id` = 367;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Кому нужен %item_formatted_link? Всего %cost_gold." WHERE `id` = 368;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Кому нужен %item_formatted_link за %cost_gold?" WHERE `id` = 369;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "%cost_gold за %item_formatted_link. Дешевле, чем на аукционе!" WHERE `id` = 370;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "%item_formatted_link дорогой, но я бы продал за %cost_gold." WHERE `id` = 371;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Ты нигде не найдешь %item_formatted_link дешевле, чем за %cost_gold!" WHERE `id` = 372;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Нужно больше, чем %item_formatted_link!" WHERE `id` = 373;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "У меня есть %item_formatted_link и нужно еще." WHERE `id` = 374;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Есть %item_formatted_link. Кто хочет купить за %cost_gold?" WHERE `id` = 375;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Кто хочет купить %item_formatted_link за %cost_gold?" WHERE `id` = 376;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Как насчет %item_formatted_link? За %cost_gold." WHERE `id` = 377;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Кто сказал, что я ублюдок? %item_formatted_link за %cost_gold — хорошая цена." WHERE `id` = 378;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Продаю %item_formatted_link? Всего %cost_gold." WHERE `id` = 379;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "ЛФГ для фарма. Все еще можешь купить %item_formatted_link у меня за %cost_gold." WHERE `id` = 380;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Сегодня почти все продал. Еще есть %item_formatted_link за %cost_gold." WHERE `id` = 381;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Для чего нужен торговый чат? Конечно, чтобы продавать %item_formatted_link за %cost_gold." WHERE `id` = 382;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Кто перебьет цену %cost_gold за %item_formatted_link?" WHERE `id` = 383;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Хочешь прекратить торговый чат? Просто купи %item_formatted_link за %cost_gold!" WHERE `id` = 384;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Все спамят в торговом чате. Я тоже — %cost_gold за %item_formatted_link!" WHERE `id` = 385;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Есть ли польза от %item_formatted_link? Просто продаю за %cost_gold." WHERE `id` = 386;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "У меня есть %item_formatted_link, готов продать за %cost_gold." WHERE `id` = 387;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Вчера ничего не делал, но получил %item_formatted_link. Продаю за %cost_gold." WHERE `id` = 388;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Вчера фармил и получил %item_formatted_link. Кто купит за %cost_gold?" WHERE `id` = 389;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Вчера купил %item_formatted_link. Кому нужно за %cost_gold?" WHERE `id` = 390;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Кто спрашивал про %item_formatted_link? Цена та же — %cost_gold." WHERE `id` = 391;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "У меня еще есть %item_formatted_link. Купишь за %cost_gold?" WHERE `id` = 392;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Раньше было больше, чем %item_formatted_link. Теперь нужно продать за %cost_gold." WHERE `id` = 393;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Хотел бы иметь больше, чем %item_formatted_link. Но можешь купить за %cost_gold." WHERE `id` = 394;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Для чего твое золото? Чтобы купить мой %item_formatted_link за %cost_gold." WHERE `id` = 395;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Пожалуйста, подкинь немного золота. Можешь купить %item_formatted_link за %cost_gold." WHERE `id` = 396;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "%cost_gold — хорошая цена за %item_formatted_link?" WHERE `id` = 397;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Вчера купил %item_formatted_links, но больше не нужно. Кому за %cost_gold?" WHERE `id` = 398;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Собирался выставить %item_formatted_link на аукцион, но можешь купить дешевле сейчас за %cost_gold." WHERE `id` = 399;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Зачем, черт возьми, я купил %item_formatted_link? Кому нужно за %cost_gold?" WHERE `id` = 400;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "У меня есть %quest_links" WHERE `id` = 401;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "У меня тоже есть %quest_links" WHERE `id` = 402;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "У меня тоже есть %quest_links, сейчас я в %zone_name" WHERE `id` = 403;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "%other_name, у меня тоже есть %quest_links" WHERE `id` = 404;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "%other_name, у меня тоже есть %quest_links, сейчас я в %zone_name" WHERE `id` = 405;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Я готов к %quest_links, сейчас я в %zone_name" WHERE `id` = 406;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Я готов к %quest_links, я %my_role" WHERE `id` = 407;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "%other_name, я готов к %quest_links, сейчас я в %zone_name" WHERE `id` = 408;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "%other_name, я готов к %quest_links, я %my_role" WHERE `id` = 409;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Привет, я готов к %quest_links" WHERE `id` = 410;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Привет, могу сделать %quest_links с тобой" WHERE `id` = 411;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Привет, у меня тоже есть %quest_links" WHERE `id` = 412;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Привет %other_name, я готов к %quest_links" WHERE `id` = 413;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Привет %other_name, могу сделать %quest_links с тобой" WHERE `id` = 414;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Привет %other_name, у меня тоже есть %quest_links" WHERE `id` = 415;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Хочешь сгруппироваться для %quest_links?" WHERE `id` = 416;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Я готов к %quest_links, сейчас я в %zone_name" WHERE `id` = 417;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Я готов к %quest_links, я %my_role" WHERE `id` = 418;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "%other_name, могу продать тебе %formatted_item_links" WHERE `id` = 419;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Могу, возможно, продать %formatted_item_links" WHERE `id` = 420;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Думаю, могу продать %formatted_item_links" WHERE `id` = 421;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "%other_name, возможно, могу продать %formatted_item_links" WHERE `id` = 422;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "%other_name, думаю, могу продать %formatted_item_links" WHERE `id` = 423;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Могу продать тебе %formatted_item_links" WHERE `id` = 424;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Привет, у меня есть %formatted_item_links на продажу" WHERE `id` = 425;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Привет, возможно, могу продать %formatted_item_links" WHERE `id` = 426;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Квест принят" WHERE `id` = 427;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Квест удален" WHERE `id` = 428;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Я не могу взять этот квест" WHERE `id` = 429;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Я не могу поговорить с дающим квест" WHERE `id` = 430;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Я уже выполнил %quest" WHERE `id` = 431;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "У меня уже есть %quest" WHERE `id` = 432;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Я не могу взять %quest" WHERE `id` = 433;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Я не могу взять %quest, потому что мой журнал квестов заполнен" WHERE `id` = 434;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Я не могу взять %quest, потому что моя сумка заполнена" WHERE `id` = 435;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Я принял %quest" WHERE `id` = 436;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Я не выполнил квест %quest" WHERE `id` = 437;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Квест %quest доступен" WHERE `id` = 438;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Я провалил квест %quest" WHERE `id` = 439;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Я не могу сдать квест %quest" WHERE `id` = 440;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Я выполнил квест %quest" WHERE `id` = 441;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Я выполнил квест %quest и получил %item" WHERE `id` = 442;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Какую награду выбрать за выполнение квеста %quest?%rewards" WHERE `id` = 443;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Хорошо, выберу %item в качестве награды" WHERE `id` = 444;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Привет" WHERE `id` = 445;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Привет!" WHERE `id` = 446;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Здравствуй" WHERE `id` = 447;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Здравствуй!" WHERE `id` = 448;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Приветствую!" WHERE `id` = 449;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Привет, я следую за тобой!" WHERE `id` = 450;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Привет, веди меня!" WHERE `id` = 451;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Привет, веди меня!" WHERE `id` = 452;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Эй %player, хочешь в мою группу?" WHERE `id` = 453;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Эй %player, хочешь в мою группу?" WHERE `id` = 454;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Выход отменен!" WHERE `id` = 455;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Я выхожу из игры!" WHERE `id` = 456;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "До свидания!" WHERE `id` = 457;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Пока!" WHERE `id` = 458;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Увидимся!" WHERE `id` = 459;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "что это было, %s?" WHERE `id` = 460;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "не уверен, что понял %s?" WHERE `id` = 461;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "эээ... не понимаю, о чем ты" WHERE `id` = 462;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "ты ко мне обращаешься, %s?" WHERE `id` = 463;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "чт-что?" WHERE `id` = 464;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "а?" WHERE `id` = 465;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "что?" WHERE `id` = 466;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "ты говоришь?" WHERE `id` = 467;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "как хочешь" WHERE `id` = 468;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "ты меня запутал" WHERE `id` = 469;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Бла бла бла..." WHERE `id` = 470;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Что ты сказал, %s?" WHERE `id` = 471;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Сконцентрируйся на игре, %s!" WHERE `id` = 472;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Общаться с тобой, %s, так здорово! Всегда хотел встретиться" WHERE `id` = 473;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Эти сообщения в чате сводят меня с ума! Такое чувство, что я всех вас знаю!" WHERE `id` = 474;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "ДА ЛАДНО! ХАХА КОНЕЧНО!!!" WHERE `id` = 475;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Я тебе верю!!!" WHERE `id` = 476;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "ОК, ага, ЛОЛ" WHERE `id` = 477;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Почему все всегда говорят одно и то же???" WHERE `id` = 478;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Эй %s... а, неважно!" WHERE `id` = 479;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "О чем ты, %s" WHERE `id` = 480;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Кто это сказал? Я похож на это замечание" WHERE `id` = 481;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "чего вы все несете" WHERE `id` = 482;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "фр фр, без шуток" WHERE `id` = 483;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "ты ничего не получишь" WHERE `id` = 484;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "сваг" WHERE `id` = 485;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "спасибо!" WHERE `id` = 486;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "нет" WHERE `id` = 487;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Да" WHERE `id` = 488;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "ф" WHERE `id` = 489;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "%s, без шуток xD" WHERE `id` = 490;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "почему так" WHERE `id` = 491;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "лмао" WHERE `id` = 492;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "решил помолчать, снова запутался в чате" WHERE `id` = 493;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "я могу по-настоящему завидовать" WHERE `id` = 494;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "%s, ты не слышишь капающую иронию в моем тексте" WHERE `id` = 495;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "он сказал без обид, все нормально" WHERE `id` = 496;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "момент дворфа" WHERE `id` = 497;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Да, %s" WHERE `id` = 498;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "интересно..." WHERE `id` = 499;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "лол" WHERE `id` = 500;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "%s, иди ты :D" WHERE `id` = 501;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = ":^)" WHERE `id` = 502;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "спс" WHERE `id` = 503;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "%s, хорошо сказано" WHERE `id` = 504;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "ура" WHERE `id` = 505;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "да" WHERE `id` = 506;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "ооооо" WHERE `id` = 507;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "хмм" WHERE `id` = 508;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "ага, конечно" WHERE `id` = 509;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "ты заставил меня блевануть, что за" WHERE `id` = 510;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "жарко" WHERE `id` = 511;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "злятся" WHERE `id` = 512;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "что ты ел, %s" WHERE `id` = 513;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "что за" WHERE `id` = 514;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "попробую понять этот комментарий" WHERE `id` = 515;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "*в замешательстве*" WHERE `id` = 516;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "да, черт возьми" WHERE `id` = 517;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "0/10 не стал бы читать снова" WHERE `id` = 518;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "10/10 прочитал бы снова" WHERE `id` = 519;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "6/10 прочитал бы" WHERE `id` = 520;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "7/10 прочитал бы" WHERE `id` = 521;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "бейсд" WHERE `id` = 522;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "о да, может быть" WHERE `id` = 523;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "да, и что" WHERE `id` = 524;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "эй %s, я тебя не забыл" WHERE `id` = 525;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "ты меня бесишь, %s" WHERE `id` = 526;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "я достану тебя в этот раз, %s" WHERE `id` = 527;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "лучше берегись, %s" WHERE `id` = 528;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "мне не понравился прошлый раунд" WHERE `id` = 529;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "я был плох в прошлом раунде из-за %s" WHERE `id` = 530;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "готовься умереть, %s" WHERE `id` = 531;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "не нравится, что ты меня убил, %s" WHERE `id` = 532;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "%s, я тебя ненавижу" WHERE `id` = 533;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "грррр, в этот раз я тебя достану, %s" WHERE `id` = 534;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "ну и пошел ты" WHERE `id` = 535;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "%s, я тебе в рот блевану" WHERE `id` = 536;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "не суди меня" WHERE `id` = 537;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Твоя мама такая толстая, что не может пройти через Темный Портал" WHERE `id` = 538;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "что за" WHERE `id` = 539;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "что за??" WHERE `id` = 540;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "ничтожество" WHERE `id` = 541;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "что за" WHERE `id` = 542;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "отстой" WHERE `id` = 543;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "РЕВАНШ!!! я его уделаю" WHERE `id` = 544;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "жалко, меня убил %s" WHERE `id` = 545;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "ладно, я закончил" WHERE `id` = 546;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "хе-хе, я уделал %s?" WHERE `id` = 547;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "это было слишком просто, убил %s" WHERE `id` = 548;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "попался, дружок" WHERE `id` = 549;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "ха-ха" WHERE `id` = 550;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "лузер" WHERE `id` = 551;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "я убил %s, вы все следующие" WHERE `id` = 552;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "о да, я его уделал" WHERE `id` = 553;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "я машина для убийств" WHERE `id` = 554;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "%s, это напоминает мне песню Slayer... столько крови" WHERE `id` = 555;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "извини, %s. можем повторить сцену?" WHERE `id` = 556;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "ну как тебе быть кормом для червей, %s???" WHERE `id` = 557;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "ты должен быть мёртв, %s, это часть игры!!!!!" WHERE `id` = 558;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "извини, %s. выглядело так же хорошо, как картина Энди Уорхола!" WHERE `id` = 559;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "%s, в следующий раз использую резиновые пули!" WHERE `id` = 560;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "что случилось, %s?? голову потерял? хахаха, надо сохранять хладнокровие!!" WHERE `id` = 561;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "я должен был это сделать, %s. Ты понимаешь. Режиссёр так сказал!!" WHERE `id` = 562;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "эй, %s.......МУАХАХАХАХАХАХА" WHERE `id` = 563;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "%s, мне это понравилось!! Давай сыграем ещё раз, Сэм" WHERE `id` = 564;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "эй, %s! можешь звать меня ликом... ты кусок ЧЕРТА!!!!" WHERE `id` = 565;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "ты со мной разговариваешь, %s??" WHERE `id` = 566;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "%s, в этот раз не стой перед моими пулями." WHERE `id` = 567;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "%s, чего ты валяешься??? хехе" WHERE `id` = 568;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "сильно смеялся" WHERE `id` = 569;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "привет %s" WHERE `id` = 570;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "о, привет %s" WHERE `id` = 571;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "как дела, %s!!!" WHERE `id` = 572;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "привет" WHERE `id` = 573;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "как дела" WHERE `id` = 574;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "здравствуй %s" WHERE `id` = 575;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "привет %s, мы знакомы?" WHERE `id` = 576;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "эй %s" WHERE `id` = 577;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "хай %s" WHERE `id` = 578;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "что за фигня" WHERE `id` = 579;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "что за черт" WHERE `id` = 580;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "это бред" WHERE `id` = 581;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "админ" WHERE `id` = 582;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "эй %s, хватит злоупотреблять своими правами админа" WHERE `id` = 583;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "оставь меня в покое, админ!" WHERE `id` = 584;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "ты отстой, админ" WHERE `id` = 585;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "это моё имя, что тебе нужно %s" WHERE `id` = 586;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "да???" WHERE `id` = 587;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "эээ... что" WHERE `id` = 588;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "ты со мной разговариваешь, %s?" WHERE `id` = 589;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "У меня под бронёй щенки!" WHERE `id` = 590;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Укуси меня, <target>!" WHERE `id` = 591;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Эй, <target>! Угадай, что твоя мама сказала прошлой ночью!" WHERE `id` = 592;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "<target>, ты такой урод, что даже в обезьяньем борделе с бананами не добился бы успеха!" WHERE `id` = 593;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Заткнись, <target>, тебе никогда не стать таким мужчиной, как твоя мать!!" WHERE `id` = 594;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Твоя мать была хомяком, а отец пах одуванчиками!!!!" WHERE `id` = 595;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Я больше не хочу с тобой разговаривать, ты пустоголовый кормовой корытоочиститель!!!" WHERE `id` = 596;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Я пускаю в твою сторону газы!!!" WHERE `id` = 597;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Иди и вскипяти свою задницу, сын смешного человека!!!" WHERE `id` = 598;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Что ты собираешься делать, <target>, заставить меня кровоточить? ВПЕРЁД!" WHERE `id` = 599;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "М-О-О-Н! Это значит агр!" WHERE `id` = 600;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Ты так же полезен, как одноногий на конкурсе пинков." WHERE `id` = 601;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Эй, <target>! Перестань клеиться к ним, они не твой тип. Они не надувные." WHERE `id` = 602;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "<target>, ты настолько не в своей лиге, что играешь в другой вид спорта." WHERE `id` = 603;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Ты сегодня совершил большую ошибку, <target>, ты встал с кровати." WHERE `id` = 604;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Я хочу попробовать превратиться в лошадь, но мне нужна помощь. Я буду спереди, а ты будь собой." WHERE `id` = 605;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Можно я одолжу твоё лицо на пару дней? Моя задница уходит в отпуск...." WHERE `id` = 606;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Я бы хотел сделать тебе прощальный подарок... Сначала ты сделай свою часть." WHERE `id` = 607;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "До тебя мы были голодны, теперь мы просто сыты по горло." WHERE `id` = 608;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Ты мне нравишься. Говорят, у меня нет вкуса, но ты мне нравишься." WHERE `id` = 609;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Думаю, у тебя комплекс неполноценности, но это нормально, он оправдан." WHERE `id` = 610;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Прочь, гнилое создание! Или я вытрясу твои кости из одежды." WHERE `id` = 611;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Не могу поверить, что трачу на тебя своё время!" WHERE `id` = 612;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Мне нравится, когда меня оскорбляют, значит, можно больше не быть вежливым." WHERE `id` = 613;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Ты кожаный-жилет, хрустальная пуговица, узловатый, агатовый, рвотный чулок, ленточный подвязочник, гладкоязычный, испанский кошелёк!" WHERE `id` = 614;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Ты дрожащий ловец летучих мышей, пивной червь!" WHERE `id` = 615;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Ты действительно идол поклонников идиотов!" WHERE `id` = 616;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Ты ублюдочный узловатый хвостун!" WHERE `id` = 617;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Ты, ублюдочный мандрагор, тебе больше подходит быть у меня на шапке, чем ждать у моих пяток!" WHERE `id` = 618;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Ты! Ты кухарка! Ты бродяга! Ты мерзавец! Я пощекочу твою катастрофу!" WHERE `id` = 619;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "О, <target>! Ты заразная, плохо воспитанная льняная девка!" WHERE `id` = 620;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Мы протекаем в твоей трубе, <target>!" WHERE `id` = 621;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "О, ты бесполезный болотный цветок!" WHERE `id` = 622;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Если бы я был как ты, я бы выбросил себя!" WHERE `id` = 623;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Научи меня, <target>, как забыть думать!" WHERE `id` = 624;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Истинно, ты проклят, как плохо прожаренное яйцо, с одной стороны!" WHERE `id` = 625;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Ты голодающий, ты кожа-угря, ты сушёный бычий язык, ты бычий член, ты треска — о, чтобы хватило дыхания сказать, что ты такое!! — ты портновский ярд, ты ножны, ты футляр для лука, ты мерзкий стоячий клинок!" WHERE `id` = 626;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Фу! Брось себя в гнилую пасть Смерти!" WHERE `id` = 627;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "<target>, ты торговец рыбой!" WHERE `id` = 628;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Я доживу, чтобы выбить тебе мозги!" WHERE `id` = 629;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Ты очень поверхностен, <target>!! Ты корм для червей по сравнению с хорошим куском мяса!!" WHERE `id` = 630;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Подлый негодяй! О, <target>, ты зловонный, ненавистный к свиньям орех!" WHERE `id` = 631;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "<target>! Твой поцелуй так же утешителен, как замёрзшая вода для голодной змеи!" WHERE `id` = 632;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Я презираю тебя, паршивый спутник. Что, ты бедный, низкий, мошеннический, безрубашечный приятель! Прочь, ты плесневелый негодяй, прочь!" WHERE `id` = 633;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Прочь с глаз моих! Ты заражаешь мои глаза, <target>!" WHERE `id` = 634;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "ВРЕМЯ ИГРЫ!!!!" WHERE `id` = 635;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Никто не пройдёт!" WHERE `id` = 636;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "На нас напали! Вперёд, вы негодяи! Отразите захватчиков!" WHERE `id` = 637;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Никто не может бросить вызов Братству!" WHERE `id` = 638;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Дураки... Убейте того, кто в платье!" WHERE `id` = 639;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Я отдам твою душу самому Хаккару!" WHERE `id` = 640;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Гордость предвещает конец вашего мира! Идите, смертные! Столкнитесь с гневом !" WHERE `id` = 641;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Все мои планы привели к этому!" WHERE `id` = 642;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Ах! Еще ягнята на заклание!" WHERE `id` = 643;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Еще один день, еще одна славная битва!" WHERE `id` = 644;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Итак, дело... или удовольствие?" WHERE `id` = 645;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Вы не готовы!" WHERE `id` = 646;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Финальное завоевание началось! Снова подчинение этого мира в наших руках. Пусть никто не выживет!" WHERE `id` = 647;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Ваша смерть будет болезненной." WHERE `id` = 648;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Просите о милости! Ваши бессмысленные жизни скоро будут потеряны." WHERE `id` = 649;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Оставьте все надежды! вернулся, чтобы завершить то, что было начато много лет назад. На этот раз не будет побега!" WHERE `id` = 650;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Внимание! Вы помечены для уничтожения!" WHERE `id` = 651;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = " предназначена только для гостей..." WHERE `id` = 652;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Ха-ха-ха! Вы безнадежно не на уровне!" WHERE `id` = 653;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Я сокрушу ваши иллюзии величия!" WHERE `id` = 654;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Простите меня, ведь вы собираетесь проиграть игру." WHERE `id` = 655;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Борьба только усугубляет ситуацию." WHERE `id` = 656;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Паразиты! Пиявки! Берите мою кровь и подавитесь ею!" WHERE `id` = 657;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Опять... ЕЩЕ РАЗ!" WHERE `id` = 658;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Моя кровь станет вашим концом!" WHERE `id` = 659;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Хорошо, теперь ты сразишься со мной!" WHERE `id` = 660;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Давайте, охранники! Время убивать!" WHERE `id` = 661;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Не задерживайте свою судьбу. Идите ко мне сейчас. Я сделаю вашу жертву быстрой." WHERE `id` = 662;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Ты скоро будешь мертв!" WHERE `id` = 663;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Муа-ха-ха!" WHERE `id` = 664;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Я хищник! Ты жертва..." WHERE `id` = 665;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Ты уйдешь в кусках!" WHERE `id` = 666;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Смерть приходит. Будет ли твоя совесть чиста?" WHERE `id` = 667;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Ваше поведение не будет терпимо." WHERE `id` = 668;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Менажерия предназначена только для гостей." WHERE `id` = 669;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Хмм, незваные гости, нужно подготовиться..." WHERE `id` = 670;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Обнаружены враждебные сущности. Протокол оценки угрозы активирован. Основная цель захвачена. Время до повторной оценки - тридцать секунд." WHERE `id` = 671;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Новые игрушки? Для меня? Обещаю, что на этот раз не сломаю их!" WHERE `id` = 672;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Я готов играть!" WHERE `id` = 673;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Шшш... скоро все закончится." WHERE `id` = 674;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Ааааагхиббргубугбугрубгл!" WHERE `id` = 675;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "РвлРвлРвлРвл!" WHERE `id` = 676;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Ты тоже будешь служить!" WHERE `id` = 677;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Скажи мне... скажи мне все! Непослушные секреты! Я вырву секреты из твоей плоти!" WHERE `id` = 678;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Приготовьтесь, колокола прозвучали! Укройте своих слабых, молодых и старых! Каждый из вас заплатит окончательную цену! Просите о милости, расплата пришла!" WHERE `id` = 679;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Где я, в латунных пуговицах Бонзо?" WHERE `id` = 680;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Я больше не могу это терпеть! Король гоблинов! Король гоблинов! Где бы ты ни был! Унеси этого далеко от меня!" WHERE `id` = 681;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "У вас есть тринадцать часов, чтобы решить лабиринт, прежде чем ваш младший брат станет одним из нас... навсегда." WHERE `id` = 682;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Итак, - это кусок торта, да? Ну, давайте посмотрим, как вы справитесь с этим маленьким куском..." WHERE `id` = 683;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Отступи, я приму тебя, упрямый, готовый сразиться с кем угодно, я знаю, что ты не прав, и это не то место, где ты должен быть." WHERE `id` = 684;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Покажи, что у тебя есть!" WHERE `id` = 685;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "До смерти!" WHERE `id` = 686;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Двойное лезвие, для чистого бритья каждый раз." WHERE `id` = 687;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Давай!" WHERE `id` = 688;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Ты падешь!" WHERE `id` = 689;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Ударь, ударь, ударь!" WHERE `id` = 690;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Давайте сделаем это быстро, время - это мана." WHERE `id` = 691;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Я не думаю, что вы осознаете серьезность вашей ситуации." WHERE `id` = 692;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Я принесу честь своей семье и своему королевству!" WHERE `id` = 693;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Свет, дай мне силу!" WHERE `id` = 694;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Моя церковь - это поле битвы - время поклоняться..." WHERE `id` = 695;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Я держу тебя в презрении..." WHERE `id` = 696;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Столкнись с молотом справедливости!" WHERE `id` = 697;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Докажи свою ценность в испытании оружием под Светом!" WHERE `id` = 698;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Все должны пасть перед могуществом и правом моего дела, ты будешь следующим!" WHERE `id` = 699;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Приготовься умереть!" WHERE `id` = 700;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Зверь со мной ничто по сравнению с зверем внутри..." WHERE `id` = 701;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Стань свидетелем огневой мощи этого полностью вооруженного охотника!" WHERE `id` = 702;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Исцели меня! Быстро!" WHERE `id` = 703;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Почти мертв! Исцели меня!" WHERE `id` = 704;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Помогите! Исцели меня!" WHERE `id` = 705;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Кто-нибудь! Исцели меня!" WHERE `id` = 706;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Исцели! Исцели! Исцели!" WHERE `id` = 707;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Я умираю! Исцели! Ааааргх!" WHERE `id` = 708;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Исцели меня!" WHERE `id` = 709;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Я умру. Я умру. Я умру. Исцели!" WHERE `id` = 710;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Целители, где вы? Я умираю!" WHERE `id` = 711;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "О, боль. Исцели меня быстро!" WHERE `id` = 712;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Нужна исцеление" WHERE `id` = 713;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Низкое здоровье" WHERE `id` = 714;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Сделай исцеление. Пожалуйста." WHERE `id` = 715;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Может кто-нибудь исцелить меня?" WHERE `id` = 716;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Эй! Лучше исцели меня сейчас, чем воскрешать позже." WHERE `id` = 717;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Извини. Нужна еще одна исцеление." WHERE `id` = 718;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Черт возьми, мобы. Исцели меня, пожалуйста." WHERE `id` = 719;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Еще один удар, и я пропал. Исцели, пожалуйста." WHERE `id` = 720;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Есть ли целители?" WHERE `id` = 721;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Почему они всегда бьют меня в лицо? Нужна исцеление." WHERE `id` = 722;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Может кто-нибудь немного исцелить меня?" WHERE `id` = 723;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "OOM" WHERE `id` = 724;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "У меня закончилась мана" WHERE `id` = 725;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Черт, я потратил всю свою ману на это" WHERE `id` = 726;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Тебе стоит подождать, пока я выпью или восстановлю свою ману" WHERE `id` = 727;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Низкая мана" WHERE `id` = 728;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Нет маны. Снова?" WHERE `id` = 729;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Низкая мана. Хочу выпить." WHERE `id` = 730;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "У нас есть торговый автомат? Снова нет маны." WHERE `id` = 731;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Моя мана в истории." WHERE `id` = 732;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "В следующий раз я возьму напитки. Нет маны." WHERE `id` = 733;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Где моя мана?" WHERE `id` = 734;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "У меня осталось немного !" WHERE `id` = 735;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Мне нужно больше !" WHERE `id` = 736;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "100 осталось!" WHERE `id` = 737;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Вот и все! Нет !" WHERE `id` = 738;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "И у тебя есть мой лук... Ой, нет !" WHERE `id` = 739;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Нужна патроны!" WHERE `id` = 740;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "О боже!" WHERE `id` = 741;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Мне страшно" WHERE `id` = 742;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Мы пропали" WHERE `id` = 743;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Это закончено" WHERE `id` = 744;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Это заканчивается сейчас" WHERE `id` = 745;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Может кто-нибудь вызвать метель или что-то подобное?" WHERE `id` = 746;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Черт. Танку агрировал всех мобов вокруг." WHERE `id` = 747;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Мы умрем. Мы умрем. Мы умрем." WHERE `id` = 748;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Ух ты! Так много игрушек, с которыми можно играть." WHERE `id` = 749;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Я убью их всех!" WHERE `id` = 750;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Если танк умрет, мы в истории." WHERE `id` = 751;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Аааааргх!" WHERE `id` = 752;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "ЛЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЙ ДЖЕНКИНС!!!!!!!" WHERE `id` = 753;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Правильно. Что у нас есть в AOE?" WHERE `id` = 754;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Это становится интересным." WHERE `id` = 755;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Круто. Соберите их в одном месте для хорошего огненного удара." WHERE `id` = 756;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Убей! Убей! Убей!" WHERE `id` = 757;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Я думаю, что мои штаны мокрые." WHERE `id` = 758;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Мы в истории." WHERE `id` = 759;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Надеюсь, целители готовы. Лееерой!" WHERE `id` = 760;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Надеюсь, они не придут за мной." WHERE `id` = 761;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "О нет. Я не вижу в этом резне." WHERE `id` = 762;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Надеюсь, там будет немного денег." WHERE `id` = 763;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Лут! Лут!" WHERE `id` = 764;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Мое драгоценное." WHERE `id` = 765;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Надеюсь, там ждет меня блестящий эпический предмет." WHERE `id` = 766;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "У меня глубокие карманы и сумки." WHERE `id` = 767;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Все мое!" WHERE `id` = 768;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Надеюсь, сегодня не будет серой ерунды." WHERE `id` = 769;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Этот лут - МОЙ!" WHERE `id` = 770;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Лутать отвратительно, но мне нужны деньги." WHERE `id` = 771;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Золото!" WHERE `id` = 772;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Хорошо. Давайте посмотрим, что у них есть." WHERE `id` = 773;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Не волнуйтесь. Я все залутаю." WHERE `id` = 774;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Я ниндзя лута." WHERE `id` = 775;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Мне нужно бросить кубик?" WHERE `id` = 776;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Кто-нибудь объясните мне, куда они положили все эти вещи?" WHERE `id` = 777;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Нет, я не буду лутать серую ерунду." WHERE `id` = 778;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Я первый. Я первый. Я первый." WHERE `id` = 779;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Отдай мне свои деньги!" WHERE `id` = 780;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Мои карманы пусты, мне нужно их заполнить." WHERE `id` = 781;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "У меня есть новая сумка для этого." WHERE `id` = 782;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Надеюсь, я не агрирую никого, пока лутаю." WHERE `id` = 783;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Пожалуйста, не смотрите. Я лутаю." WHERE `id` = 784;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Ха! Ты не получишь ни кусочка этого!" WHERE `id` = 785;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Лутать круто." WHERE `id` = 786;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Мне нравится новая экипировка." WHERE `id` = 787;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Я уйду, если снова не будет ничего ценного." WHERE `id` = 788;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Надеюсь, это будет красивое кольцо." WHERE `id` = 789;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Я вырву лут у тебя." WHERE `id` = 790;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Все держитесь подальше. Я собираюсь лутать." WHERE `id` = 791;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Сладкий лут." WHERE `id` = 792;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Бог Ролла! Дай мне эпик сегодня." WHERE `id` = 793;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Пожалуйста, дай мне новые игрушки." WHERE `id` = 794;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Надеюсь, они принесут вкусняшки." WHERE `id` = 795;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Золото - мое. Я оставлю все, обещаю." WHERE `id` = 796;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Нет, я не могу устоять." WHERE `id` = 797;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Я хочу больше!" WHERE `id` = 798;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Я близко, подожди меня!" WHERE `id` = 799;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Я не далеко, пожалуйста, подожди!" WHERE `id` = 800;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Я направляюсь к вашему местоположению." WHERE `id` = 801;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Я иду к тебе." WHERE `id` = 802;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Я путешествую к вашему местоположению." WHERE `id` = 803;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Я пытаюсь добраться до тебя." WHERE `id` = 804;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Экипирую %item." WHERE `id` = 805;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "%item снят." WHERE `id` = 806;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Я выучил заклинания: %spells." WHERE `id` = 807;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "%item в перезарядке." WHERE `id` = 808;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "У меня нет %item в инвентаре." WHERE `id` = 809;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Предмет с ID %item не существует." WHERE `id` = 810;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Вставляю %gem в %item." WHERE `id` = 811;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Я не могу использовать %item." WHERE `id` = 812;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Следую." WHERE `id` = 813;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Остаюсь." WHERE `id` = 814;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Убегаю." WHERE `id` = 815;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Я не буду убегать с тобой, ты слишком далеко." WHERE `id` = 816;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Фармлю." WHERE `id` = 817;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Атакую." WHERE `id` = 818;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Это слишком далеко." WHERE `id` = 819;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Это под водой." WHERE `id` = 820;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Я не могу туда пойти." WHERE `id` = 821;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Я не в твоем гильдии!" WHERE `id` = 822;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Не могу найти гильдейский банк поблизости." WHERE `id` = 823;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Я не могу положить " WHERE `id` = 824;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "У меня нет прав на размещение предметов в первой вкладке гильдейского банка." WHERE `id` = 825;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = " положено в гильдейский банк." WHERE `id` = 826;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Свободное движение." WHERE `id` = 827;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Охраняю." WHERE `id` = 828;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Использую %target." WHERE `id` = 829;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "на %unit." WHERE `id` = 830;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "(%amount доступно)" WHERE `id` = 831;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "(последний)" WHERE `id` = 832;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Сокет не подходит." WHERE `id` = 833;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "на торговом предмете." WHERE `id` = 834;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "на себе." WHERE `id` = 835;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "на %item." WHERE `id` = 836;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "на %gameobject." WHERE `id` = 837;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Лутаю %item." WHERE `id` = 838;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Призываю %target." WHERE `id` = 839;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "У меня недостаточно членов группы, чтобы вызвать." WHERE `id` = 840;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Не удалось найти цель для призыва." WHERE `id` = 841;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Я не могу призывать, пока я в бою." WHERE `id` = 842;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Я не знаю заклинание %spell." WHERE `id` = 843;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Кастую %spell." WHERE `id` = 844;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Создаю %spell." WHERE `id` = 845;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Не могу кастовать %spell." WHERE `id` = 846;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "Не удалось кастовать %spell." WHERE `id` = 847;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = " |cffffff00(x%amount осталось)|r" WHERE `id` = 848;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc8` = "dummy" WHERE `id` = 849;
|
||||
@@ -0,0 +1,35 @@
|
||||
DELETE FROM ai_playerbot_texts
|
||||
WHERE name IN (
|
||||
'rp_missing_reagent_greater_blessing',
|
||||
'rp_missing_reagent_gift_of_the_wild',
|
||||
'rp_missing_reagent_arcane_brilliance',
|
||||
'rp_missing_reagent_generic'
|
||||
);
|
||||
|
||||
DELETE FROM ai_playerbot_texts_chance
|
||||
WHERE name IN (
|
||||
'rp_missing_reagent_greater_blessing',
|
||||
'rp_missing_reagent_gift_of_the_wild',
|
||||
'rp_missing_reagent_arcane_brilliance',
|
||||
'rp_missing_reagent_generic'
|
||||
);
|
||||
|
||||
INSERT INTO ai_playerbot_texts (name, text, say_type, reply_type, text_loc1, text_loc2, `text_loc3`, `text_loc4`, `text_loc5`, `text_loc6`, `text_loc7`, `text_loc8`) VALUES
|
||||
('rp_missing_reagent_greater_blessing',
|
||||
'By the Light... I forgot my Symbols of Kings. We’ll make do with %base_spell!', 0, 0,
|
||||
'', 'Par la Lumière... J''ai oublié mes Symboles du roi. On se contentera de %base_spell !', '', '', '', '', '', ''),
|
||||
('rp_missing_reagent_gift_of_the_wild',
|
||||
'Nature is generous, my bags are not... out of herbs for %group_spell. Take %base_spell for now!', 0, 0,
|
||||
'', 'La nature est généreuse, pas mes sacs... plus d''herbes pour %group_spell. Prenez %base_spell pour l''instant !', '', '', '', '', '', ''),
|
||||
('rp_missing_reagent_arcane_brilliance',
|
||||
'Out of Arcane Powder... %group_spell will have to wait. Casting %base_spell!', 0, 0,
|
||||
'', 'Plus de poudre des arcanes... %group_spell attendra. Je lance %base_spell !', '', '', '', '', '', ''),
|
||||
('rp_missing_reagent_generic',
|
||||
'Oops, I’m out of components for %group_spell. We’ll go with %base_spell!', 0, 0,
|
||||
'', 'Oups, je n''ai plus de composants pour %group_spell. On fera avec %base_spell !', '', '', '', '', '', '');
|
||||
|
||||
INSERT INTO ai_playerbot_texts_chance (name, probability) VALUES
|
||||
('rp_missing_reagent_greater_blessing', 100),
|
||||
('rp_missing_reagent_gift_of_the_wild', 100),
|
||||
('rp_missing_reagent_arcane_brilliance', 100),
|
||||
('rp_missing_reagent_generic', 100);
|
||||
@@ -0,0 +1,856 @@
|
||||
UPDATE ai_playerbot_texts SET text_loc2 = '';
|
||||
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='au milieu de nulle part' WHERE `id`=1;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='un endroit non divulgué' WHERE `id`=2;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='quelque part' WHERE `id`=3;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='un truc' WHERE `id`=4;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='je me demande quel goût a %item_link' WHERE `id`=5;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='noooon, j’ai eu %item_link' WHERE `id`=6;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='oh non, encore cette camelote %item_link' WHERE `id`=7;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='on dirait que je ramasse des ordures %item_link' WHERE `id`=8;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='bon, c’est mieux que rien je suppose %item_link' WHERE `id`=9;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='je ne sais pas quoi faire de %item_link' WHERE `id`=10;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='je me demande quel goût a %item_link' WHERE `id`=11;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='je pourrais ramasser du %item_link toute la journée' WHERE `id`=12;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='un jour de plus, un %item_link de plus' WHERE `id`=13;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='j’ai ramassé un peu de %item_link' WHERE `id`=14;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='un peu de %item_link, c’est toujours ça' WHERE `id`=15;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='pas mal, je viens de choper %item_link' WHERE `id`=16;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='je viens de ramasser %item_link à %zone_name' WHERE `id`=17;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='je pourrais bien l’utiliser ça %item_link' WHERE `id`=18;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='argent, argent, argent %item_link' WHERE `id`=19;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='j’ai eu %item_link' WHERE `id`=20;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='%item_link est BiS pour les chasseurs' WHERE `id`=21;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='%item_link est BiS pour les %my_class' WHERE `id`=22;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='la chance est avec moi aujourd’hui %item_link' WHERE `id`=23;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='trop bon %item_link, fraîchement looté' WHERE `id`=24;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='wow, je viens de choper %item_link' WHERE `id`=25;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='%item_link est BiS pour les chasseurs' WHERE `id`=26;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='%item_link est BiS pour les %my_class' WHERE `id`=27;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='la chance est avec moi aujourd’hui %item_link' WHERE `id`=28;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='trop bon %item_link, fraîchement looté' WHERE `id`=29;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='OMG, regardez ce que je viens de looter %item_link !!!' WHERE `id`=30;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Noooon ! C’est pas possible, j’ai eu %item_link, c’est de la folie' WHERE `id`=31;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Noooon ! C’est pas possible, j’ai eu %item_link, c’est de la folie' WHERE `id`=32;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='je viens juste de prendre la quête %quest_link' WHERE `id`=33;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='je viens d’accepter %quest_link' WHERE `id`=34;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='%quest_link je vais essayer de la finir' WHERE `id`=35;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='j’ai pris %quest_link à %zone_name' WHERE `id`=36;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Enfin fini l’objectif %quest_obj_name pour %quest_link' WHERE `id`=37;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='j’ai enfin %quest_obj_available/%quest_obj_required de %quest_obj_name pour %quest_link' WHERE `id`=38;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='%quest_obj_full_formatted pour %quest_link, enfin !' WHERE `id`=39;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Oof, j’ai %quest_obj_available/%quest_obj_required %quest_obj_name pour %quest_link' WHERE `id`=40;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='il me manque encore %quest_obj_missing de %quest_obj_name pour %quest_link' WHERE `id`=41;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='%quest_obj_full_formatted, je bosse toujours sur %quest_link' WHERE `id`=42;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Enfin fini avec %item_link pour %quest_link' WHERE `id`=43;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='j’ai enfin %quest_obj_available/%quest_obj_required de %item_link pour %quest_link' WHERE `id`=44;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='%quest_obj_full_formatted pour %quest_link, enfin !' WHERE `id`=45;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Oof, j’ai %quest_obj_available/%quest_obj_required %item_link pour %quest_link' WHERE `id`=46;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='il me manque encore %quest_obj_missing de %item_link pour %quest_link' WHERE `id`=47;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='%quest_obj_full_formatted, je suis encore sur %quest_link' WHERE `id`=48;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Échec : je n’ai pas fini %quest_link à temps...' WHERE `id`=49;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Plus de temps pour %quest_link :(' WHERE `id`=50;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='J’ai terminé tous les objectifs de %quest_link' WHERE `id`=51;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Objectifs terminés pour %quest_link' WHERE `id`=52;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Je vais rendre %quest_link bientôt, tout est fait' WHERE `id`=53;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Ouiii, j’ai enfin rendu %quest_link' WHERE `id`=54;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='%quest_link rendu' WHERE `id`=55;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Mission %quest_link terminée, rendu !' WHERE `id`=56;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='%quest_link rendu' WHERE `id`=57;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='%quest_link rendu à %zone_name' WHERE `id`=58;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='encore un %victim_name à terre' WHERE `id`=59;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='je continue à tuer %victim_name, la routine quoi' WHERE `id`=60;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='un autre %victim_name qui mord la poussière' WHERE `id`=61;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='un %victim_name en moins à %zone_name' WHERE `id`=62;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='J’ai descendu ce sale élite %victim_name !' WHERE `id`=63;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='élite %victim_name éliminé à %zone_name' WHERE `id`=64;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Ouf, j’ai réussi à abattre %victim_name !' WHERE `id`=65;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='C’était épique ! %victim_name est tombé, maintenant j’ai une histoire à raconter' WHERE `id`=66;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Yoo, je viens de tuer %victim_name !' WHERE `id`=67;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='rare %victim_name éliminé à %zone_name' WHERE `id`=68;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='WTF ais-je bien tué? %victim_name' WHERE `id`=69;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='J’ai tué cette bestiole %victim_name' WHERE `id`=70;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Oh ouiii, j’ai tué %victim_name' WHERE `id`=71;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='%victim_name éliminé à %zone_name' WHERE `id`=72;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Ding !' WHERE `id`=73;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Ouiii, je suis niveau %my_level !' WHERE `id`=74;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Je viens de passer un niveau' WHERE `id`=75;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Je suis niveau %my_level !!!' WHERE `id`=76;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Je deviens plus fort, déjà %my_level !!!' WHERE `id`=77;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Je viens d’atteindre le niveau %my_level !!!' WHERE `id`=78;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='OMG, enfin niveau %my_level !!!' WHERE `id`=79;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='%my_level !!! prêt pour le contenu endgame' WHERE `id`=80;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='tout frais, nouveau %my_level %my_class !!!' WHERE `id`=81;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='encore un niveau %my_level %my_race %my_class !' WHERE `id`=82;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Bien joué %other_name. Tu l’as mérité.' WHERE `id`=83;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='C’était affreux %other_name. J’ai détesté faire ça mais...' WHERE `id`=84;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Quelqu’un veut faire %instance_name ?' WHERE `id`=85;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Des groupes pour %instance_name ?' WHERE `id`=86;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Besoin d’aide pour %instance_name ?' WHERE `id`=87;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='LFD : %instance_name.' WHERE `id`=88;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Quelqu’un a besoin d’un %my_role pour %instance_name ?' WHERE `id`=89;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Il manque un %my_role pour %instance_name ?' WHERE `id`=90;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Je peux être %my_role pour %instance_name.' WHERE `id`=91;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Besoin d’un coup de main à %instance_name ?' WHERE `id`=92;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Besoin d’un %my_role pour %instance_name ?' WHERE `id`=93;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Quelqu’un a besoin de loot à %instance_name ?' WHERE `id`=94;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Un petit farm à %instance_name ?' WHERE `id`=95;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='WTR %instance_name' WHERE `id`=96;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Besoin d’aide pour %instance_name.' WHERE `id`=97;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Envie de faire %instance_name.' WHERE `id`=98;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='%my_role cherche un groupe pour %instance_name.' WHERE `id`=99;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Et %instance_name, on y va ?' WHERE `id`=100;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Qui veut farmer %instance_name ?' WHERE `id`=101;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='On entre dans %instance_name ?' WHERE `id`=102;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Je cherche groupe pour %instance_name.' WHERE `id`=103;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Des quêtes à %instance_name ?' WHERE `id`=104;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Envie de faire des quêtes à %instance_name.' WHERE `id`=105;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Quelqu’un avec des quêtes à %instance_name ?' WHERE `id`=106;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Je peux aider pour les quêtes à %instance_name.' WHERE `id`=107;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='%my_role : une place dispo pour %instance_name ?' WHERE `id`=108;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Est-ce que quelqu’un fait encore %instance_name de nos jours ?' WHERE `id`=109;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='%instance_name : quelqu’un cherche un %my_role ?' WHERE `id`=110;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Ça sert encore à quelque chose d’être %my_role à %instance_name ?' WHERE `id`=111;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Ça vaut vraiment le coup d’aller à %instance_name ?' WHERE `id`=112;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Quelqu’un a besoin de plus de joueurs pour %instance_name ?' WHERE `id`=113;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Les boss de %instance_name lootent du bon matos. On y va ?' WHERE `id`=114;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Alors, %instance_name ?' WHERE `id`=115;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Quelqu’un a besoin d’un %my_role ?' WHERE `id`=116;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Quelqu’un a besoin d’un %my_role ?' WHERE `id`=117;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Qui veut aller à %instance_name ?' WHERE `id`=118;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Quelqu’un peut me TP à %instance_name ?' WHERE `id`=119;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Retrouve-moi à %instance_name' WHERE `id`=120;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Envie d’un petit run rapide à %instance_name ?' WHERE `id`=121;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='On se fait un run complet à %instance_name ?' WHERE `id`=122;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='T’as été combien de fois à %instance_name ?' WHERE `id`=123;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Encore un run à %instance_name ?' WHERE `id`=124;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Wipe à %instance_name ? Prends-moi, je suis un porte-bonheur !' WHERE `id`=125;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Emmène-moi à %instance_name s’il te plaît.' WHERE `id`=126;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Un petit %instance_name vite fait bien fait ?' WHERE `id`=127;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Full %instance_name jusqu’à la fin ?' WHERE `id`=128;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Qui peut prendre un %my_role à %instance_name ?' WHERE `id`=129;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='LFG %instance_name, je suis %my_role' WHERE `id`=130;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='%my_role cherche groupe pour %instance_name' WHERE `id`=131;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Besoin d’aide pour %quest_link ?' WHERE `id`=132;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Quelqu’un veut partager %quest_link ?' WHERE `id`=133;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Quelqu’un fait %quest_link ?' WHERE `id`=134;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='On fait %quest_link ?' WHERE `id`=135;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Quelqu’un pour farmer du %category ?' WHERE `id`=136;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Cherche aide pour farmer %category.' WHERE `id`=137;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Ces %category coûtent un bras !' WHERE `id`=138;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='J’ai besoin de %category.' WHERE `id`=139;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Besoin d’aide pour %category.' WHERE `id`=140;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='WTB %category.' WHERE `id`=141;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Quelqu’un est intéressé par %category ?' WHERE `id`=142;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='WTS %category.' WHERE `id`=143;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Je vends %category moins cher que l’HV.' WHERE `id`=144;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Qui veut farmer du %category ?' WHERE `id`=145;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='On farme du %category ?' WHERE `id`=146;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Je cherche un groupe, après ça on fait du %category ?' WHERE `id`=147;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Tous les %category sont les bienvenus.' WHERE `id`=148;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='J’achète tout ce qui ressemble à du %category.' WHERE `id`=149;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Wow, y’a des gens qui farment encore du %category ?' WHERE `id`=150;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Les %category partent comme des petits pains à l’HV !' WHERE `id`=151;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='L’HV brûle à cause des %category !' WHERE `id`=152;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Y’a des %category sur le marché.' WHERE `id`=153;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='J\'échange des %category ?' WHERE `id`=154;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Il me faut plus de %category.' WHERE `id`=155;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Quelqu’un a un peu de %category à donner ?' WHERE `id`=156;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Qui veut du %category ?' WHERE `id`=157;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Un peu de %category s’il vous plaît ?' WHERE `id`=158;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='J’aurais dû monter une compétence pour les %category.' WHERE `id`=159;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Je meurs d’envie d’avoir des %category.' WHERE `id`=160;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Les gens se tuent pour les %category.' WHERE `id`=161;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='%category, c’est une affaire en or !' WHERE `id`=162;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Tout le monde devient fou pour les %category !' WHERE `id`=163;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='C’est où le meilleur spot pour farmer des %category ?' WHERE `id`=164;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Je suis prêt pour le farm de %category.' WHERE `id`=165;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Ça se vend bien les %category ?' WHERE `id`=166;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Je vais garder tous mes %category. Pour moi.' WHERE `id`=167;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Besoin d’un groupe ? On pourrait farm des %category ensemble.' WHERE `id`=168;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Je pense encore aux %category.' WHERE `id`=169;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='J’ai entendu parler des %category... mais mon porte-monnaie ne veut pas.' WHERE `id`=170;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='LFG pour %category' WHERE `id`=171;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Vendre %category rend riche ?' WHERE `id`=172;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Ok. Demain je farm les %category.' WHERE `id`=173;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Tout le monde parle des %category.' WHERE `id`=174;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='J’ai vu au moins dix gars farmer du %category.' WHERE `id`=175;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='J’ai tout vendu mes %category hier. Maintenant je mange du pain sec!' WHERE `id`=176;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Envie de rejoindre une guilde qui farme du %category.' WHERE `id`=177;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Quelqu’un farm la réputation %faction ?' WHERE `id`=178;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Quelqu’un peut m’aider pour %faction ?' WHERE `id`=179;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='On fait des quêtes pour %faction ?' WHERE `id`=180;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='%faction est la meilleur' WHERE `id`=181;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Il me manque juste un tout petit peu pour être %rep_level avec %faction.' WHERE `id`=182;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Quelqu’un est %rep_level avec %faction ?' WHERE `id`=183;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Qui veut devenir %rep_level avec %faction ?' WHERE `id`=184;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Je serai jamais %rep_level avec %faction.' WHERE `id`=185;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Quelqu’un a oublié de monter la réputation %faction ?' WHERE `id`=186;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Je peux aider à farmer la réputation %faction.' WHERE `id`=187;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Plus on a de réputation, mieux c’est. Surtout avec %faction.' WHERE `id`=188;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='%faction : il me faut encore %rndK pour être %rep_level.' WHERE `id`=189;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Qui peut partager des quêtes %faction ?' WHERE `id`=190;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Des donjons pour la réputation %faction ?' WHERE `id`=191;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='On farm la réput %faction ?' WHERE `id`=192;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Allons-y pour %faction !' WHERE `id`=193;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Je farm la réputation %faction.' WHERE `id`=194;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='On farme pour %faction ?' WHERE `id`=195;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Besoin d’aide pour %faction.' WHERE `id`=196;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='%faction vend quelque chose d’utile ?' WHERE `id`=197;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Il existe des vendeurs %faction ?' WHERE `id`=198;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Qui farme %faction ?' WHERE `id`=199;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Quelle est la meilleure façon de farmer %faction ?' WHERE `id`=200;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Je déteste farmer la réputation %faction.' WHERE `id`=201;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='J’en ai marre de %faction.' WHERE `id`=202;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='On y va pour %faction ?' WHERE `id`=203;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Tout le monde est %rep_level avec %faction. Et moi, je galère encore.' WHERE `id`=204;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='LFG pour farm de réputation %faction ?' WHERE `id`=205;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Quelqu’un a un bon spot pour la réputation %faction ?' WHERE `id`=206;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Améliorer ma réput %faction, ça sert ?' WHERE `id`=207;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Qui aurait cru que la réputation %faction finirait par servir...' WHERE `id`=208;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Je veux être exalté avec toutes les factions. En commençant par %faction.' WHERE `id`=209;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Est-ce que ça vaut le coup de monter %faction ?' WHERE `id`=210;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Qu’est-ce qui marche le mieux pour %faction ? Les quêtes ou tuer des mobs ?' WHERE `id`=211;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Je farm %faction pour toi, si tu me paies.' WHERE `id`=212;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Farmer la réputation %faction ? Ça prendra 3 vies au moins.' WHERE `id`=213;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Je tue pour %faction tous les jours, mais je suis toujours pas %rep_level.' WHERE `id`=214;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='À %my_level, les dépôts à l’HV vont baisser, non ?' WHERE `id`=215;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Combien de réputations exaltées tu as ?' WHERE `id`=216;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Qui veut être %my_level avec %faction ?' WHERE `id`=217;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Ma guilde a farmé la réputation %faction hier. Sans moi...' WHERE `id`=218;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Personne ne veut m’aider, tout ça parce que je suis %rep_level avec %faction.' WHERE `id`=219;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Évitez la %faction.' WHERE `id`=220;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='On se fait une soirée à %zone_name ?' WHERE `id`=221;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Quelqu’un cherche un %my_role ?' WHERE `id`=222;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='%my_role cherche une guilde.' WHERE `id`=223;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Je cherche de l’or.' WHERE `id`=224;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='%my_role cherche une bonne guilde.' WHERE `id`=225;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='J’ai besoin d’un ami.' WHERE `id`=226;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Quelqu’un d’autre se sent seul ?' WHERE `id`=227;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Je m’ennuie...' WHERE `id`=228;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Qui en veut ?' WHERE `id`=229;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Allez viens te battre !' WHERE `id`=230;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Un petit duel à %zone_name ?' WHERE `id`=231;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Quelqu’un fait quelque chose ici ?' WHERE `id`=232;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='%zone_name : y’a une âme qui vive ici ?' WHERE `id`=233;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='%zone_name : tout le monde est en furtif ou quoi ?' WHERE `id`=234;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='On dirait que je suis seul à %zone_name.' WHERE `id`=235;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Rejoins-moi à %zone_name .' WHERE `id`=236;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Allez, on fait des quêtes à %zone_name !' WHERE `id`=237;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='%zone_name c’est LE coin sympa du momment.' WHERE `id`=238;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='J’veux aller à %zone_name. Quelqu’un me suit ?' WHERE `id`=239;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Qui veut aller à %zone_name ?' WHERE `id`=240;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='J’aime pas %zone_name. Où doi-je aller ?' WHERE `id`=241;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Y’a de bonnes quêtes à %zone_name ?' WHERE `id`=242;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='On va où après %zone_name ?' WHERE `id`=243;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Qui traîne à %zone_name ?' WHERE `id`=244;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='LFG pour %zone_name.' WHERE `id`=245;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='%zone_name est l’endroit le plus naze du monde.' WHERE `id`=246;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Attrape-moi à %zone_name si tu peux !' WHERE `id`=247;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Direction %zone_name !' WHERE `id`=248;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Envie de quêtes à %zone_name' WHERE `id`=249;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Quelqu’un a des quêtes à %zone_name ?' WHERE `id`=250;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Venez à %zone_name !' WHERE `id`=251;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='On dirait que la Horde a déserté %zone_name...' WHERE `id`=252;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='On dirait que l’Alliance a déserté %zone_name...' WHERE `id`=253;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='J’en peux plus de %zone_name. Quelqu’un me sort de là ?' WHERE `id`=254;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Bonne chance !' WHERE `id`=255;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Je veux rentrer chez moi… puis pleurer au bord du vide' WHERE `id`=256;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Quelqu’un sait ce qu’il faut pour jouer double arme ?' WHERE `id`=257;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Salut tout le monde !' WHERE `id`=258;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='%zone_name est cosy' WHERE `id`=259;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Je me sens bien' WHERE `id`=260;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Je n’ignore pas les gens. Je les trolle jusqu’à ce qu’ils m’ignorent.' WHERE `id`=261;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Que pensez-vous de mon build ? %my_role' WHERE `id`=262;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Heureux de voir que le chat ne m’a pas oublié' WHERE `id`=263;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Comme toutes les armes, c’est BiS pour chasseur' WHERE `id`=264;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Le but du jeu pour moi ? Solo tout ce qui bouge.' WHERE `id`=265;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='J’ai JAMAIS arnaqué personne.' WHERE `id`=266;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Ah, World of Warcraft. Là où je viens chercher des conseils de vie.' WHERE `id`=267;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Y’A QUELQU’UN ?!' WHERE `id`=268;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Il est temps de me frayer un chemin dans %zone_name.' WHERE `id`=269;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='%zone_name' WHERE `id`=270;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='… faut que j’aille aux toilettes.' WHERE `id`=271;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Si tu loot pas tes mobs skinables, ton zizi perd 1mm. C’est la règle.' WHERE `id`=272;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='NOOOOOOOOOOOOO' WHERE `id`=273;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='J’AIME LA PATATE' WHERE `id`=274;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='La discussion est animée.' WHERE `id`=275;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='salut, comment ça va les gens ?' WHERE `id`=276;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Je viens de me déco / reco.' WHERE `id`=277;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Faites moins de bruit, j’suis perdu dans %zone_name…' WHERE `id`=278;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Quelqu’un veut boire un verre à %zone_name ? hic' WHERE `id`=279;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='hahahahaheeeee dirin diring inggggg hahahahaheeeeeeeeeeeeee' WHERE `id`=280;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Avant, les appâts étaient crédibles.' WHERE `id`=281;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Peut-être que t’as juste perdu ton innocence.' WHERE `id`=282;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Y’a une guilde qui veut carry un %my_role fragile ?' WHERE `id`=283;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Plus on monte en niveau, plus l’or coule à flots' WHERE `id`=284;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Bonjour !' WHERE `id`=285;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Pourquoi j’ai mal au cul ?' WHERE `id`=286;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Je pense que l’esprit est BiS pour monter de niveau.' WHERE `id`=287;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Encore plus si t’es troll.' WHERE `id`=288;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='QUELQU’UN PEUT M’INVITER ?' WHERE `id`=289;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='J’ai besoin de beaucouuuup de boissons.' WHERE `id`=290;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='P*utain de gnomes…' WHERE `id`=291;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Personne n’aime les gnomes.' WHERE `id`=292;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Les gnomes ne servent qu’à une chose' WHERE `id`=293;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Bah…' WHERE `id`=294;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='… des champignons.' WHERE `id`=295;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Les pensées automatiques, c’est flippant.' WHERE `id`=296;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='L’esprit est plus malléable qu’on aimerait le croire.' WHERE `id`=297;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Y’a des guildes pour leveling ?' WHERE `id`=298;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='brb' WHERE `id`=299;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Pourquoi la neige est-elle blanche alors que la glace est transparente, alors qu’elles sont faites de la même chose ?' WHERE `id`=300;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Pourquoi la crème fouettée est fluffy, mais pas la normale ?' WHERE `id`=301;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Pourquoi les pieds sentent alors qu’ils n’ont pas de nez ?' WHERE `id`=302;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='On dirait que la boîte à noobs vient de s’ouvrir.' WHERE `id`=303;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Arrêtez de troller les nouveaux avec vos réponses à la con.' WHERE `id`=304;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Y’a du PvP sur ce serveur ?' WHERE `id`=305;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='évidemment...' WHERE `id`=306;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='ouf… :)' WHERE `id`=307;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Vous saviez que' WHERE `id`=308;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Je ne tente pas d’imaginer ce que ressentent les autres créatures' WHERE `id`=309;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Oups, mauvais canal.' WHERE `id`=310;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Bruh, vous êtes déchaînés aujourd’hui' WHERE `id`=311;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Juste pour que tout le monde sache : mon message est passé ici' WHERE `id`=312;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='grrr énervéééééé' WHERE `id`=313;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Le farm, c’est marrant' WHERE `id`=314;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='WoW me garde vif' WHERE `id`=315;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Hé, question : où on prend le rôle pour plus d’XP ? Je suis à %zone_name.' WHERE `id`=316;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Vous aimez les saucisses ?' WHERE `id`=317;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Invitez-moi. Je peux aider.' WHERE `id`=318;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='À votre avis, quelle classe est la meilleure en PvP ?' WHERE `id`=319;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Où est ce foutu maître de cuisine à %zone_name ?!' WHERE `id`=320;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Vous savez ce qu’il se passe à %zone_name ?' WHERE `id`=321;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='J’ai besoin de crafter quelque chose' WHERE `id`=322;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='C’est quoi lèchemes' WHERE `id`=323;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='C’est quoi sucemes ' WHERE `id`=324;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='lèchemes couilles' WHERE `id`=325;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='sucemes couilles' WHERE `id`=326;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='JE MANGE DES FESSES' WHERE `id`=327;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='J’ai envie de me fourrer %random_inventory_item_link là où le soleil ne brille pas' WHERE `id`=328;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='J’ai envie de te fourrer %random_inventory_item_link là où tu penses' WHERE `id`=329;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Darnasses' WHERE `id`=330;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='On dirait que t’as chopé le syndrôme de sucemes' WHERE `id`=331;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='cesnoix dans ta bouche' WHERE `id`=332;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Sympa ton os, frérot' WHERE `id`=333;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='ERP ?' WHERE `id`=334;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='J’ai tout essayé, mais au final c’est l’ERP qui a marché' WHERE `id`=335;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='J’ai envie de batifoler à %zone_name' WHERE `id`=336;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Recherche gnome femelle avec gorille pour ERP sauvage à %zone_name' WHERE `id`=337;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Je peux comprendre un idiot, mais un gros pervers ?' WHERE `id`=338;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Aucun GYAT en vue à %zone_name' WHERE `id`=339;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Je tue tous les animaux de %zone_name. Désolé WWF !' WHERE `id`=340;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Heureusement que j’ai trois jambes' WHERE `id`=341;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Sois pas vénère, je goon comme un sigma' WHERE `id`=342;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='essaye doigt, mais trou' WHERE `id`=343;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='%prefix %random_taken_quest_or_item_link' WHERE `id`=344;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='%prefix %random_inventory_item_link' WHERE `id`=345;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='%thunderfury_link' WHERE `id`=346;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='%thunderfury_link%thunderfury_link' WHERE `id`=347;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='%thunderfury_link%thunderfury_link%thunderfury_link' WHERE `id`=348;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Je crois que je viens d’entendre %thunderfury_link' WHERE `id`=349;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='J’ai entendu %thunderfury_link' WHERE `id`=350;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='J’ai clairement entendu %thunderfury_link' WHERE `id`=351;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='J’suis pas sûr, mais j’crois avoir entendu %thunderfury_link' WHERE `id`=352;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='T’as dit %thunderfury_link' WHERE `id`=353;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Quelqu’un a dit %thunderfury_link' WHERE `id`=354;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Quelqu’un a VRAIMENT dit %thunderfury_link' WHERE `id`=355;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Quelqu’un a parlé de %thunderfury_link' WHERE `id`=356;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='%thunderfury_link sort du placard, les gars' WHERE `id`=357;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='J’aurais juré que c’était un %thunderfury_link… ou peut-être un %thunderfury_link' WHERE `id`=358;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Pourquoi utiliser %thunderfury_link alors que %thunderfury_link est bien plus OP' WHERE `id`=359;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='WTS %item_formatted_link pour %cost_gold.' WHERE `id`=360;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Qui veut %item_formatted_link pour %cost_gold ?' WHERE `id`=361;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Quelqu’un veut %item_formatted_link ? Seulement %cost_gold' WHERE `id`=362;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Juste %cost_gold pour %item_formatted_link!' WHERE `id`=363;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Je vends %item_formatted_link pour %cost_gold' WHERE `id`=364;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='%item_formatted_link est à toi pour seulement %cost_gold !' WHERE `id`=365;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Prix ridicule : %cost_gold pour %item_formatted_link !' WHERE `id`=366;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Je cherche à vendre %item_formatted_link pour %cost_gold' WHERE `id`=367;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Qui a besoin de %item_formatted_link ? Seulement %cost_gold' WHERE `id`=368;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Quelqu’un veut %item_formatted_link pour %cost_gold ?' WHERE `id`=369;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='%cost_gold pour %item_formatted_link. Moins cher qu’à l’HV !' WHERE `id`=370;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='%item_formatted_link est cher, mais je te le fais à %cost_gold' WHERE `id`=371;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Tu trouveras jamais %item_formatted_link moins cher que %cost_gold!' WHERE `id`=372;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='J’ai besoin de plus que %item_formatted_link, là !' WHERE `id`=373;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='J’ai %item_formatted_link et j’en veux encore' WHERE `id`=374;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='J’ai %item_formatted_link. Qui l’achète pour %cost_gold ?' WHERE `id`=375;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='WTB %item_formatted_link pour %cost_gold, quelqu’un ?' WHERE `id`=376;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Et %item_formatted_link ? Pour %cost_gold.' WHERE `id`=377;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Qui m’a traité d\'arnaqueur ? %item_formatted_link pour %cost_gold c’est honnête !' WHERE `id`=378;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Je vends %item_formatted_link. Juste %cost_gold' WHERE `id`=379;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='LFG pour du farm, et au passage %item_formatted_link à vendre %cost_gold' WHERE `id`=380;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Presque tout vendu aujourd’hui. Me reste %item_formatted_link pour %cost_gold' WHERE `id`=381;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='À quoi sert le canal commerce ? A vendre %item_formatted_link pour %cost_gold, évidemment' WHERE `id`=382;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Quelqu’un peut battre %cost_gold pour %item_formatted_link ?' WHERE `id`=383;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Envie d’arrêter le spam commerce ? Achetez %item_formatted_link à %cost_gold !' WHERE `id`=384;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Tout le monde spam, moi aussi : %cost_gold pour %item_formatted_link !' WHERE `id`=385;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='%item_formatted_link est utile ? Je sais pas, mais je le vends %cost_gold' WHERE `id`=386;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='J’ai %item_formatted_link prêt à vendre %cost_gold' WHERE `id`=387;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Hier j’ai rien foutu, mais j’ai loot %item_formatted_link. À vendre %cost_gold' WHERE `id`=388;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='J’ai farmé hier, j’ai eu %item_formatted_link. WTB ? %cost_gold' WHERE `id`=389;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='J’ai acheté %item_formatted_link hier. Quelqu’un le veut ? %cost_gold' WHERE `id`=390;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Quelqu’un cherchait %item_formatted_link ? C’est %cost_gold toujours' WHERE `id`=391;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='J’ai encore %item_formatted_link. Achetez-le %cost_gold' WHERE `id`=392;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Avant j’en avais plein %item_formatted_link, maintenant je dois vendre à %cost_gold' WHERE `id`=393;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='J’aimerais en avoir plus que %item_formatted_link. Mais achetez celui-là %cost_gold' WHERE `id`=394;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Ton or te sert à quoi ? À acheter %item_formatted_link pour %cost_gold' WHERE `id`=395;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Ayez pitié, donnez-moi de l’or... ou achetez %item_formatted_link %cost_gold' WHERE `id`=396;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Est-ce que %cost_gold est un bon prix pour %item_formatted_link ?' WHERE `id`=397;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='J’ai acheté %item_formatted_links hier, mais j’en veux plus. Quelqu\'un vends pour %cost_gold' WHERE `id`=398;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Je vais le mettre à l’HV %item_formatted_link, mais tu peux l’avoir moins cher : %cost_gold' WHERE `id`=399;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Pourquoi j’ai acheté %item_formatted_link bordel ? Quelqu’un le veut ? %cost_gold' WHERE `id`=400;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='J’ai %quest_links' WHERE `id`=401;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Moi aussi j’ai %quest_links' WHERE `id`=402;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Moi aussi j’ai %quest_links, je suis à %zone_name' WHERE `id`=403;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='%other_name, moi aussi j’ai %quest_links' WHERE `id`=404;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='%other_name, moi aussi j’ai %quest_links, et je suis à %zone_name' WHERE `id`=405;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Je suis dispo pour %quest_links, je suis à %zone_name' WHERE `id`=406;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Je suis dispo pour %quest_links, je suis %my_role' WHERE `id`=407;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='%other_name, je suis dispo pour %quest_links à %zone_name' WHERE `id`=408;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='%other_name, je suis dispo pour %quest_links, je suis %my_role' WHERE `id`=409;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Hey, je suis partant pour %quest_links' WHERE `id`=410;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Hey, je pourrais faire %quest_links avec toi' WHERE `id`=411;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Hey, moi aussi j’ai %quest_links' WHERE `id`=412;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Hey %other_name, partant pour %quest_links' WHERE `id`=413;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Hey %other_name, je peux faire %quest_links avec toi' WHERE `id`=414;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Hey %other_name, moi aussi j’ai %quest_links' WHERE `id`=415;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='On se groupe pour %quest_links ?' WHERE `id`=416;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Je suis partant pour %quest_links, je suis à %zone_name' WHERE `id`=417;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Je suis dispo pour %quest_links, je suis %my_role' WHERE `id`=418;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='%other_name, je peux te vendre %formatted_item_links' WHERE `id`=419;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Je peux peut-être vendre %formatted_item_links' WHERE `id`=420;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Je pense pouvoir vendre %formatted_item_links' WHERE `id`=421;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='%other_name, je peux peut-être te vendre %formatted_item_links' WHERE `id`=422;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='%other_name, tu penses que je peux vendre %formatted_item_links ?' WHERE `id`=423;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Je peux te vendre %formatted_item_links' WHERE `id`=424;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Hey, j’ai %formatted_item_links à vendre' WHERE `id`=425;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Hey, je pourrais peut-être vendre %formatted_item_links' WHERE `id`=426;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Quête acceptée' WHERE `id`=427;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Quête abandonnée' WHERE `id`=428;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Je ne peux pas prendre cette quête' WHERE `id`=429;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Je ne peux pas parler au donneur de quête' WHERE `id`=430;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='J’ai déjà terminé %quest' WHERE `id`=431;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='J’ai déjà la quête %quest' WHERE `id`=432;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Je ne peux pas prendre %quest' WHERE `id`=433;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Je ne peux pas prendre %quest, mon journal de quêtes est plein' WHERE `id`=434;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Je ne peux pas prendre %quest, mes sacs sont pleins' WHERE `id`=435;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='J’ai accepté la quête %quest' WHERE `id`=436;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Je n’ai pas encore terminé la quête %quest' WHERE `id`=437;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='La quête %quest est dispo' WHERE `id`=438;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='J’ai échoué à la quête %quest' WHERE `id`=439;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Je ne peux pas rendre la quête %quest' WHERE `id`=440;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='J’ai terminé la quête %quest' WHERE `id`=441;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='J’ai terminé la quête %quest et reçu %item' WHERE `id`=442;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Quelle récompense devrais-je choisir pour la quête %quest ? %rewards' WHERE `id`=443;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='OK, je vais prendre %item comme récompense' WHERE `id`=444;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Bonjour' WHERE `id`=445;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Bonjour !' WHERE `id`=446;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Salut' WHERE `id`=447;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Salut !' WHERE `id`=448;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Salut à toi !' WHERE `id`=449;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Bonjour, je vous suis !' WHERE `id`=450;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Bonjour, montrez-moi le chemin !' WHERE `id`=451;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Salut, montre-moi le chemin !' WHERE `id`=452;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Hey %player, tu veux rejoindre mon groupe ?' WHERE `id`=453;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Hey %player, tu veux rejoindre mon groupe ?' WHERE `id`=454;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Déconnexion annulée !' WHERE `id`=455;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Je me déconnecte !' WHERE `id`=456;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Au revoir !' WHERE `id`=457;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Bye bye !' WHERE `id`=458;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='À plus tard !' WHERE `id`=459;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='c’était quoi ce truc %s ?' WHERE `id`=460;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='pas sûr d’avoir compris %s ?' WHERE `id`=461;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='euh… j’ai aucune idée de ce que tu racontes' WHERE `id`=462;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='tu parles à moi, %s ?' WHERE `id`=463;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='whaaaa ?' WHERE `id`=464;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='hein ?' WHERE `id`=465;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='quoi ?' WHERE `id`=466;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='tu parles ou tu râles ?' WHERE `id`=467;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='comme tu veux, mec' WHERE `id`=468;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='tu m’as perdu là' WHERE `id`=469;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Bla bla bla…' WHERE `id`=470;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='T’as dit quoi, %s ?' WHERE `id`=471;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Concentre-toi sur le jeu, %s !' WHERE `id`=472;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Parler avec toi %s, c’est génial ! J’ai toujours rêvé de te rencontrer' WHERE `id`=473;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Ces messages me font flipper ! J’ai l’impression de tous vous connaître !' WHERE `id`=474;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Ouais bien sûr ! HAHA ! C’est ça, allez !' WHERE `id`=475;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Je te crois !!!' WHERE `id`=476;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='OK, uhuh LOL' WHERE `id`=477;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Pourquoi tout le monde dit toujours les mêmes trucs ???' WHERE `id`=478;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Hey %s… euh, laisse tomber !' WHERE `id`=479;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Tu parles de quoi %s ? Sérieux ?' WHERE `id`=480;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Qui a dit ça ? Je me sens visé là' WHERE `id`=481;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='wtf vous racontez tous là ?' WHERE `id`=482;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='fr fr no cap on a stack' WHERE `id`=483;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='t’auras que dalle' WHERE `id`=484;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='swag' WHERE `id`=485;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='merci !' WHERE `id`=486;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='non' WHERE `id`=487;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Yep' WHERE `id`=488;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Paix à son ame.' WHERE `id`=489;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='%s sans déconner xD' WHERE `id`=490;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='pourquoi ça ?' WHERE `id`=491;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='mdr' WHERE `id`=492;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Je pensais fermer ma gueule, j’ai encore rien compris au chat' WHERE `id`=493;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Je peux devenir vraiment jaloux... comme un elfe sans loot' WHERE `id`=494;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='%s tu captes pas le sarcasme qui dégouline de mon message là ?' WHERE `id`=495;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Il a dit "no homo", donc c’est bon apparemment' WHERE `id`=496;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Instant nain' WHERE `id`=497;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Oui %s' WHERE `id`=498;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Intéressant…' WHERE `id`=499;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='lol' WHERE `id`=500;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='%s va te faire voir mec :D' WHERE `id`=501;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`=':^)' WHERE `id`=502;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='merci' WHERE `id`=503;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='%s bien dit !' WHERE `id`=504;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='ouiiiii' WHERE `id`=505;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='ouais' WHERE `id`=506;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='ooooooh' WHERE `id`=507;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='hmm' WHERE `id`=508;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='ouais c’est ça' WHERE `id`=509;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='t’as failli me faire vomir, wtf' WHERE `id`=510;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='chaud !' WHERE `id`=511;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='les rageux pleurent' WHERE `id`=512;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='T’as mangé quoi %s ?' WHERE `id`=513;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='wtf' WHERE `id`=514;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Je vais essayer de comprendre ce que t’as dit' WHERE `id`=515;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='*confus*' WHERE `id`=516;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='putain ouais' WHERE `id`=517;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='0/10 ne lirait pas ça une deuxième fois' WHERE `id`=518;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='10/10 je relis direct' WHERE `id`=519;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='6/10 ouais, pourquoi pas' WHERE `id`=520;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='7/10 ça passe' WHERE `id`=521;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='basé' WHERE `id`=522;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='ah ouais peut-être' WHERE `id`=523;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='ouais, et alors ?' WHERE `id`=524;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='hey %s je t’ai pas oublié' WHERE `id`=525;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='tu m’énerves %s' WHERE `id`=526;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='je vais t’avoir cette fois %s' WHERE `id`=527;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='garde un œil derrière toi %s' WHERE `id`=528;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='J’ai pas trop aimé la manche d’avant' WHERE `id`=529;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='J’ai été nul au dernier round à cause de %s' WHERE `id`=530;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Prépare-toi à mourir %s' WHERE `id`=531;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='J’ai pas trop kiffé que tu me tues %s' WHERE `id`=532;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='%s, je te hais' WHERE `id`=533;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='grrrrr je vais t’avoir cette fois %s' WHERE `id`=534;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='eh bien va te faire foutre' WHERE `id`=535;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='%s je vais vomir dans ta putain de bouche' WHERE `id`=536;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='me juge pas bordel' WHERE `id`=537;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Ta mère est tellement grosse qu’elle passe même pas le Portail des Ténèbres' WHERE `id`=538;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='wtf' WHERE `id`=539;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='wtf ??' WHERE `id`=540;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='vie misérable' WHERE `id`=541;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='qu’est-ce qui se passe là ?' WHERE `id`=542;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='nul à chier' WHERE `id`=543;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='REVANCHE !!! Je vais l’éclater' WHERE `id`=544;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='pathétique, je me suis fait tuer par %s' WHERE `id`=545;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='ok j’en ai fini' WHERE `id`=546;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='hé hé, j’ai explosé %s ?' WHERE `id`=547;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='C’était trop facile, d\'exploser %s' WHERE `id`=548;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='T’es grillé, clochard' WHERE `id`=549;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='ha ha' WHERE `id`=550;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Loser' WHERE `id`=551;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='J’ai tué %s et vous êtes tous les prochains, les gars' WHERE `id`=552;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Oh ouais, je l’ai éclaté' WHERE `id`=553;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Je suis une machine à tuer' WHERE `id`=554;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='%s, ça me rappelle un morceau de Slayer… tout ce sang, c’est beau' WHERE `id`=555;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Désolé %s. On peut refaire la scène ?' WHERE `id`=556;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Alors %s… ça fait quoi de nourrir les vers ???' WHERE `id`=557;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='T’étais censé être mort %s ! C’est dans le script bon sang !' WHERE `id`=558;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Désolé %s. Franchement, c’était aussi beau qu’un Warhol !' WHERE `id`=559;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='%s, je prendrai les balles en caoutchouc la prochaine fois, promis !' WHERE `id`=560;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Qu’est-ce qu’il y a %s ?? T’as perdu la tête ? Hahaha, faut rester cool !' WHERE `id`=561;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Fallait que je le fasse %s… Le Réalisateur me l’a dit !' WHERE `id`=562;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Hey %s… MUAHAHAHAHAHAHAHAHAHAHA' WHERE `id`=563;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='%s, celle-là, je l’ai savourée !! Allez, on recommence Sam !' WHERE `id`=564;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Hey %s ! Tu peux commencer à m’appeler Scarface… espèce de M…erde !' WHERE `id`=565;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Tu me parles à moi %s ?? Tu me parles à MOI ?!' WHERE `id`=566;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='%s, fais-le bien cette fois, évite MES balles.' WHERE `id`=567;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='%s, pourquoi tu traînes par terre ? Allez bouge !' WHERE `id`=568;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='J’ai rigolé comme jamais' WHERE `id`=569;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Salut %s' WHERE `id`=570;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Oh, salut %s' WHERE `id`=571;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Wazzup %s !!!' WHERE `id`=572;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Salut' WHERE `id`=573;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Wazzup' WHERE `id`=574;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Bonjour %s' WHERE `id`=575;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Salut %s, je te connais ?' WHERE `id`=576;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Hey %s' WHERE `id`=577;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Hai %s' WHERE `id`=578;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='c’est quoi ce délire' WHERE `id`=579;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='wtf' WHERE `id`=580;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='c’est du foutage de gueule' WHERE `id`=581;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='admin' WHERE `id`=582;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Hey %s, arrête d’abuser de ton admin là' WHERE `id`=583;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Lâche-moi admin !' WHERE `id`=584;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='T’es nul admin' WHERE `id`=585;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='C’est mon nom ça, tu veux quoi %s ?' WHERE `id`=586;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Oui ???' WHERE `id`=587;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Euh… quoi ?' WHERE `id`=588;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Tu me parles à moi %s ?' WHERE `id`=589;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='J’ai des chiots sous mon armure !' WHERE `id`=590;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Mords-moi, <target> !' WHERE `id`=591;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Hey <target> ! Devine ce que ta mère a dit hier soir !' WHERE `id`=592;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='<target>, t’es tellement moche que tu pourrais même pas scorer dans un bordel de singes avec un sac de bananes !' WHERE `id`=593;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Tais-toi <target>, tu seras jamais l’homme que ta mère est !!' WHERE `id`=594;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Ta mère était un hamster et ton père sentait la surette !' WHERE `id`=595;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Je ne veux plus te parler, espèce de vide-écuelle à bestiaux débiles !!!' WHERE `id`=596;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Je pète dans ta direction générale !!!' WHERE `id`=597;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Va faire bouillir ton postérieur, fils d’un imbécile cosmique !!!' WHERE `id`=598;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Tu comptes faire quoi <target>, saigner sur moi ? ALLEZ, VIENS !' WHERE `id`=599;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='M-O-O-N ! Ça veut dire aggro !' WHERE `id`=600;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='T’es aussi utile qu’un unijambiste dans un concours de coups de pied au cul' WHERE `id`=601;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Hey <target> ! Arrête de draguer, c’est pas ton genre. C’est pas gonflable.' WHERE `id`=602;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='<target>, t’es tellement hors catégorie que tu joues carrément à un autre sport' WHERE `id`=603;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Tu as fait une grosse erreur aujourd’hui <target>… t’es sorti du lit.' WHERE `id`=604;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Je veux essayer de me transformer en cheval. Je prends l’avant, et toi… tu restes toi.' WHERE `id`=605;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Je peux emprunter ton visage ? Mon cul part en vacances.' WHERE `id`=606;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='J’aimerais t’offrir un cadeau de départ… d’abord, fais ta part.' WHERE `id`=607;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Avant que t’arrives, on avait faim. Maintenant on en a juste marre.' WHERE `id`=608;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Je t’aime bien. Les gens disent que j’ai mauvais goût, mais je t’aime bien.' WHERE `id`=609;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Je pense que t’as un complexe d’infériorité… mais t’inquiète, il est mérité.' WHERE `id`=610;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Arrière, créature pourrie ! Ou je secoue tes os hors de ta tunique !' WHERE `id`=611;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Je crois pas que je perds mon temps avec toi… et pourtant !' WHERE `id`=612;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='J’adore quand on m’insulte : j’ai plus besoin d’être poli.' WHERE `id`=613;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Espèce de veston de cuir, boutons en cristal, tête nouée, braillard à gerbe, jarretière de puce, langue mielleuse, bourse espagnole !' WHERE `id`=614;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Espèce de pleurnichard, chasseur de chauve-souris, ivrogne de malte !' WHERE `id`=615;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='T’es vraiment une idole pour les adorateurs de l’idiotie !' WHERE `id`=616;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Misérable piaf mal dégrossi !' WHERE `id`=617;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Fils de mandragore ! T’es plus utile en plumeau qu’en laquais !' WHERE `id`=618;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Toi ! Gueux ! Cloporte ! Tarlouze ! Je vais chatouiller ta catastrophe !' WHERE `id`=619;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Oh <target> ! Infâme fille de lin mal élevé !' WHERE `id`=620;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='On fuit par ta cheminée, <target> !' WHERE `id`=621;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Oh toi, misérable fleur de cancre gorgée de marais !' WHERE `id`=622;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Si j’étais comme toi, je me jetterais à la poubelle.' WHERE `id`=623;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Apprends-moi <target>… à ne plus penser du tout.' WHERE `id`=624;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='T’es maudit comme un œuf mal rôti… tout cramé d’un côté.' WHERE `id`=625;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Espèce de gringalet, de peau de hareng, de langue de bœuf séchée, de… souffle… taureau démembré, morceau de corde ! Queue d’épée, boîte à rien, tige de tailleur !' WHERE `id`=626;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Fi ! Qu’on te jette dans la bouche pourrie de la Mort !' WHERE `id`=627;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='<target>, t’es poissonnier, avoue !' WHERE `id`=628;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Je vivrai assez pour te défoncer le crâne !' WHERE `id`=629;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='T’es aussi profond qu’une flaque ! <target>, t’es bonne pour les vers, pas pour la viande !' WHERE `id`=630;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Vermine ! Ô <target>, espèce de noisette infernale puante !' WHERE `id`=631;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='<target> ! Ton baiser est aussi réconfortant qu’un glaçon pour un serpent affamé !' WHERE `id`=632;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Je te méprise, compagnon galeux. Quoi, pauvre arnaqueur sans chemise ! Dégage, raclure moisie !' WHERE `id`=633;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Hors de ma vue ! Tu infectes mes yeux <target> !' WHERE `id`=634;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='HEURE DE JEU !!!!' WHERE `id`=635;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Personne ne passera !' WHERE `id`=636;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='On est attaqués ! Hissez les voiles ! Repoussez les intrus !' WHERE `id`=637;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Personne ne défie la Confrérie !' WHERE `id`=638;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Imbéciles… tuez celui en robe !' WHERE `id`=639;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Je vais offrir ton âme à Hakkar lui-même !' WHERE `id`=640;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='L’orgueil annonce la fin de ton monde ! Venez, mortels ! Affrontez la colère de la %randomfaction !' WHERE `id`=641;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Tous mes plans menaient à CE moment !' WHERE `id`=642;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Ahh ! Encore des agneaux pour l’abattoir !' WHERE `id`=643;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Encore une journée, encore une glorieuse bataille !' WHERE `id`=644;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Alors, affaires… ou plaisir ?' WHERE `id`=645;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Vous n’êtes pas préparés !' WHERE `id`=646;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='La conquête finale de la %randomfaction a commencé ! Cette fois, aucun ne survivra !' WHERE `id`=647;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Ta mort sera douloureuse.' WHERE `id`=648;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Implore pitié ! Tes vies inutiles vont être sacrifiées.' WHERE `id`=649;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Abandonne tout espoir ! La %randomfaction est revenue pour finir ce qui a commencé… et cette fois, pas d’échappatoire !' WHERE `id`=650;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Alerte ! Tu es marqué pour l’EXTERMINATION !' WHERE `id`=651;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Le %subzone est réservé aux invités seulement…' WHERE `id`=652;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Ha ha ha ! Tu es totalement dépassé !' WHERE `id`=653;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Je vais écraser tes illusions de grandeur !' WHERE `id`=654;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Pardonne-moi, mais tu vas perdre cette partie.' WHERE `id`=655;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Résister ne fait qu’empirer les choses.' WHERE `id`=656;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Vermine ! Sangsues ! Prends mon sang et étouffe-toi avec !' WHERE `id`=657;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Pas encore… PAS ENCORE !' WHERE `id`=658;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Mon sang sera ta perte !' WHERE `id`=659;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Parfait. Maintenant bats-toi contre moi !' WHERE `id`=660;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Allez les gardes ! C’est l’heure de tuer !' WHERE `id`=661;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='N’attends pas la mort, viens à moi. Je rendrai ton sacrifice rapide.' WHERE `id`=662;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Tu seras mort très bientôt !' WHERE `id`=663;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Mouahaha !' WHERE `id`=664;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='C’est moi le prédateur ! Toi, la proie...' WHERE `id`=665;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Tu vas repartir en morceaux !' WHERE `id`=666;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='La mort approche... As-tu la conscience tranquille ?' WHERE `id`=667;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Ton comportement ne sera pas toléré.' WHERE `id`=668;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='La Ménagerie est réservée aux invités.' WHERE `id`=669;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Hmm, des visiteurs non annoncés… Il faut se préparer…' WHERE `id`=670;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Entités hostiles détectées. Évaluation de menace en cours. Cible principale verrouillée. Réévaluation dans trente secondes.' WHERE `id`=671;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Des nouveaux jouets ? Pour moi ? Promis, je les casse pas… cette fois !' WHERE `id`=672;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Je suis prêt à jouer !' WHERE `id`=673;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Chut… tout sera fini bientôt.' WHERE `id`=674;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Aaaaaughibbrgubugbugrguburgle !' WHERE `id`=675;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='RwlRwlRwlRwl !' WHERE `id`=676;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Toi aussi, tu serviras !' WHERE `id`=677;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Dis-moi... dis-moi tout ! Tes vilains petits secrets ! Je vais les arracher de ta chair !' WHERE `id`=678;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Préparez-vous, les cloches ont sonné ! Protégez vos faibles, vos jeunes et vos vieux ! Chacun paiera le prix final ! Implorerez-vous pitié ? Le Jugement est arrivé !' WHERE `id`=679;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Mais où suis-je, par les boutons en laiton de Bonzo ?' WHERE `id`=680;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Je n’en peux plus ! Roi Gobelin ! Roi Gobelin ! Où que tu sois ! Emporte ce <target> loin de moi !' WHERE `id`=681;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Tu as treize heures pour résoudre le labyrinthe... sinon ton petit frère deviendra l’un des nôtres... pour toujours.' WHERE `id`=682;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Alors, le <subzone> c’est du gâteau, hein ? Voyons comment tu gères ce petit bout-là…' WHERE `id`=683;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Recule, j’vais t’affronter. Déterminé, prêt à affronter n’importe qui. J’sais que t’as tort, t’as rien à faire ici !' WHERE `id`=684;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Montre-moi c’que t’as dans le ventre !' WHERE `id`=685;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Jusqu’à la mort !' WHERE `id`=686;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Double lame, pour un rasage net à chaque fois !' WHERE `id`=687;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Allez, viens !' WHERE `id`=688;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Tu vas tomber !' WHERE `id`=689;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Piou piou, coup de couteau !' WHERE `id`=690;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Finissons-en vite, le temps c’est du mana.' WHERE `id`=691;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Je ne crois pas que tu réalises dans quelle merde tu es.' WHERE `id`=692;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Je vais faire honneur à ma famille et à mon royaume !' WHERE `id`=693;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Lumière, donne-moi la force !' WHERE `id`=694;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Mon église, c’est le champ de bataille – l’heure de la messe a sonné !' WHERE `id`=695;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Je te tiens en mépris total…' WHERE `id`=696;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Affronte le marteau de la justice !' WHERE `id`=697;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Prouve ta valeur dans l’épreuve des armes, sous la Lumière !' WHERE `id`=698;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Tous doivent tomber devant la puissance de ma cause – tu es le prochain !' WHERE `id`=699;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Prépare-toi à mourir !' WHERE `id`=700;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='La bête en moi est bien pire que celle à mes côtés…' WHERE `id`=701;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Admire la puissance de feu d’un chasseur totalement équipé !' WHERE `id`=702;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Soigne-moi ! Vite !' WHERE `id`=703;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Je suis presque mort ! Soignez-moi !' WHERE `id`=704;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='À l’aide ! Soignez-moi !' WHERE `id`=705;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Quelqu’un ! Un soin vite !' WHERE `id`=706;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Heal ! Heal ! Heal !' WHERE `id`=707;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Je meurs ! Soin ! Aaaaarhg !' WHERE `id`=708;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Soignez-moi !' WHERE `id`=709;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Je vais mourir. Je vais mourir. Je vais mourir. Soignez-moi !' WHERE `id`=710;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Healers, vous êtes où ? Je crève !' WHERE `id`=711;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Ouille, la douleur ! Soignez vite !' WHERE `id`=712;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Besoin de soin' WHERE `id`=713;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Vie basse !' WHERE `id`=714;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Lâche un heal. S’il te plaît.' WHERE `id`=715;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Quelqu’un peut me balancer un soin ?' WHERE `id`=716;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Hey ! Mieux vaut me soigner maintenant que me rez plus tard !' WHERE `id`=717;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Désolé… mais encore un heal, please.' WHERE `id`=718;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Saletés de mobs… heal moi vite !' WHERE `id`=719;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Encore un coup et je suis mort. Un petit heal ?' WHERE `id`=720;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Y’a des soigneurs dans cette galère ?' WHERE `id`=721;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Pourquoi c’est toujours ma tête qu’ils frappent ? J’ai besoin d’un soin !' WHERE `id`=722;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Quelqu’un pour me soigner un chouïa ?' WHERE `id`=723;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='OOM' WHERE `id`=724;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Plus de mana !' WHERE `id`=725;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='J’ai cramé tout mon mana pour ça, sérieux...' WHERE `id`=726;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Faudrait attendre que je boive ou que je régène, là…' WHERE `id`=727;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Mana faible… très faible…' WHERE `id`=728;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Encore à sec ? Pas de mana, encore.' WHERE `id`=729;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Mana bas. Je veux une boisson !' WHERE `id`=730;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='On a une machine à boissons ? J’ai encore plus rien !' WHERE `id`=731;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Mon mana ? Parti dans les limbes.' WHERE `id`=732;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='J’achèterai des boissons la prochaine fois. Là j’ai que dalle.' WHERE `id`=733;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Où est passé mon mana ?' WHERE `id`=734;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Il me reste quelques <ammo> !' WHERE `id`=735;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Besoin de plus de <ammo> !' WHERE `id`=736;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Plus que 100 <ammo> !' WHERE `id`=737;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='C’est fini ! Plus un seul <ammo> !' WHERE `id`=738;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Et tu as mon arc… oups, plus de <ammo> !' WHERE `id`=739;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='J’ai besoin de munitions !' WHERE `id`=740;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Oh mon dieu !' WHERE `id`=741;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='J’ai peur… là… vraiment.' WHERE `id`=742;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='On est foutus !' WHERE `id`=743;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='C’est fini. F.I.N.I.' WHERE `id`=744;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Ça se termine maintenant.' WHERE `id`=745;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Quelqu’un peut balancer un blizzard ou un truc ?!' WHERE `id`=746;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Mince. Le tank a aggro TOUT le monde…' WHERE `id`=747;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='On va mourir. On va mourir. On VA MOURIR !' WHERE `id`=748;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Wow ! Tant de jouets à casser !' WHERE `id`=749;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Je vais tous les buter ! TOUS !' WHERE `id`=750;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Si le tank meurt, c’est foutu pour nous tous…' WHERE `id`=751;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Aaaaaargh !' WHERE `id`=752;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='LEEEEERROOOYYYYYYYYYYYY JENNKINNNSSSSSS !!!!!!!!' WHERE `id`=753;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Bon. Qu’est-ce qu’on a en AOE là ?' WHERE `id`=754;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Ça devient intéressant…' WHERE `id`=755;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Cool. Regroupez-les bien pour une jolie boule de feu !' WHERE `id`=756;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='TUEZ ! TUEZ ! TUEZ !' WHERE `id`=757;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Je crois que j’ai mouillé mon pantalon…' WHERE `id`=758;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='C’est notre fin. C’était sympa.' WHERE `id`=759;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='J’espère que les healers sont prêts… LEEEEROYYYY !' WHERE `id`=760;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Pourvu qu’ils ne me ciblent pas moi…' WHERE `id`=761;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Oh non. Je peux pas regarder ce massacre…' WHERE `id`=762;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='J’espère qu’il y aura de la thune.' WHERE `id`=763;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Loot ! LOOT !' WHERE `id`=764;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Mon précieux…' WHERE `id`=765;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='J’espère qu’un bel objet épique m’attend là-dedans' WHERE `id`=766;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='J’ai des poches profondes et des sacs encore vides.' WHERE `id`=767;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Tout est à moi !' WHERE `id`=768;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Pas de gris moisi aujourd’hui, pitié…' WHERE `id`=769;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='CE loot est À MOI !' WHERE `id`=770;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Looter c’est sale… mais j’ai besoin de thunes.' WHERE `id`=771;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='De l’or !' WHERE `id`=772;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Ok. Voyons ce qu’ils ont laissé…' WHERE `id`=773;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='T’inquiète, je vais tout looter. Tout.' WHERE `id`=774;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Je suis un ninja du loot.' WHERE `id`=775;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Je dois lancer les dés ?' WHERE `id`=776;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Quelqu’un peut m’expliquer où ils ont rangé tout ça ?' WHERE `id`=777;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Non, je loot pas cette merde grise.' WHERE `id`=778;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='C’est moi d’abord ! C’est moi ! MOI !' WHERE `id`=779;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Donne-moi ton fric !' WHERE `id`=780;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Mes poches sont vides, il faut les remplir.' WHERE `id`=781;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='J’ai un nouveau sac, il est fait pour ça.' WHERE `id`=782;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='J’espère que je vais pas aggro en lootant…' WHERE `id`=783;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Ne regardez pas… je loot discret…' WHERE `id`=784;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Ha ! Vous n’aurez rien de tout ça !' WHERE `id`=785;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Le loot, c’est stylé.' WHERE `id`=786;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='J’adore les nouveaux équipements.' WHERE `id`=787;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Je me casse si y’a encore rien de valeur…' WHERE `id`=788;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='J’espère que ce sera une jolie bague !' WHERE `id`=789;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Je vais t’arracher le loot des mains !' WHERE `id`=790;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Personne ne touche à rien. C’est MOI qui loot.' WHERE `id`=791;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Loot sucré :D' WHERE `id`=792;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Dieu du lancer, donne-moi un épique aujourd’hui…' WHERE `id`=793;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Allez, de nouveaux jouets s’il vous plaît !' WHERE `id`=794;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='J’espère qu’ils ont des trucs savoureux…' WHERE `id`=795;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='L’or est à moi. Je laisse tout le reste… promis…' WHERE `id`=796;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Non, je peux pas résister.' WHERE `id`=797;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='J’en veux ENCORE !' WHERE `id`=798;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Je suis presque là, attendez-moi !' WHERE `id`=799;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Je suis pas loin, attendez-moi !' WHERE `id`=800;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='J’arrive vers ta position' WHERE `id`=801;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='J’arrive vers toi' WHERE `id`=802;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Je me dirige vers ta position' WHERE `id`=803;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='J’essaie de te rejoindre' WHERE `id`=804;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Équipement de %item' WHERE `id`=805;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='%item retiré' WHERE `id`=806;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='J’ai appris les sorts : %spells' WHERE `id`=807;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='%item est en recharge' WHERE `id`=808;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Je n’ai pas %item dans mon inventaire' WHERE `id`=809;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='L’objet avec l’ID %item n’existe pas' WHERE `id`=810;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Insertion de %gem dans %item' WHERE `id`=811;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Je ne peux pas utiliser %item' WHERE `id`=812;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Suivi' WHERE `id`=813;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Je reste ici' WHERE `id`=814;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Je fuis' WHERE `id`=815;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Je fuis pas avec toi, t’es trop loin !' WHERE `id`=816;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Farm en cours' WHERE `id`=817;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Attaque en cours' WHERE `id`=818;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='C’est trop loin' WHERE `id`=819;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='C’est sous l’eau' WHERE `id`=820;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Je ne peux pas y aller' WHERE `id`=821;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Je ne suis pas dans ta guilde !' WHERE `id`=822;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Impossible de trouver une banque de guilde à proximité' WHERE `id`=823;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Je ne peux pas déposer' WHERE `id`=824;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Je n’ai pas les droits pour déposer dans le premier onglet de la banque de guilde' WHERE `id`=825;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='déposé dans la banque de guilde' WHERE `id`=826;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Déplacement libre' WHERE `id`=827;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='En garde' WHERE `id`=828;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Utilisation de %target' WHERE `id`=829;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='sur %unit' WHERE `id`=830;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='(%amount disponible)' WHERE `id`=831;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='(le dernier)' WHERE `id`=832;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='La châsse ne correspond pas' WHERE `id`=833;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='sur objet d’échange' WHERE `id`=834;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='sur moi-même' WHERE `id`=835;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='sur %item' WHERE `id`=836;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='sur %gameobject' WHERE `id`=837;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Loot de %item' WHERE `id`=838;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Invocation de %target' WHERE `id`=839;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Je n’ai pas assez de membres du groupe à proximité pour invoquer' WHERE `id`=840;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Impossible de trouver la cible d’invocation' WHERE `id`=841;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Je ne peux pas invoquer en combat' WHERE `id`=842;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Je ne connais pas le sort %spell' WHERE `id`=843;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Lancement du sort %spell' WHERE `id`=844;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Fabrication de %spell' WHERE `id`=845;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Impossible de lancer %spell' WHERE `id`=846;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Échec du lancement de %spell' WHERE `id`=847;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='|cffffff00(x%amount restant)|r' WHERE `id`=848;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='dummy' WHERE `id`=849;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Par la Lumière... J\'ai oublié mes Symboles du roi. On se contentera de %base_spell !' WHERE `id`=934;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='La nature est généreuse, pas mes sacs... plus d\'herbes pour %group_spell. Prenez %base_spell pour l\'instant !' WHERE `id`=935;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Plus de poudre des arcanes... %group_spell attendra. Je lance %base_spell !' WHERE `id`=936;
|
||||
UPDATE `ai_playerbot_texts` SET `text_loc2`='Oups, je n\'ai plus de composants pour %group_spell. On fera avec %base_spell !' WHERE `id`=937;
|
||||
|
||||
@@ -0,0 +1,29 @@
|
||||
DELETE FROM ai_playerbot_texts WHERE name IN (
|
||||
'netherspite_beam_blocking_red',
|
||||
'netherspite_beam_blocking_blue',
|
||||
'netherspite_beam_blocking_green',
|
||||
'netherspite_beam_leaving_blue',
|
||||
'netherspite_beam_leaving_green'
|
||||
);
|
||||
|
||||
DELETE FROM ai_playerbot_texts_chance WHERE name IN (
|
||||
'netherspite_beam_blocking_red',
|
||||
'netherspite_beam_blocking_blue',
|
||||
'netherspite_beam_blocking_green',
|
||||
'netherspite_beam_leaving_blue',
|
||||
'netherspite_beam_leaving_green'
|
||||
);
|
||||
|
||||
INSERT INTO ai_playerbot_texts (name, text, say_type, reply_type, text_loc1, text_loc2, text_loc3, text_loc4, text_loc5, text_loc6, text_loc7, text_loc8) VALUES
|
||||
('netherspite_beam_blocking_red', '%player is moving to block the red beam!', 0, 0, '', '', '', '', '', '', '', ''),
|
||||
('netherspite_beam_blocking_blue', '%player is moving to block the blue beam!', 0, 0, '', '', '', '', '', '', '', ''),
|
||||
('netherspite_beam_blocking_green', '%player is moving to block the green beam!', 0, 0, '', '', '', '', '', '', '', ''),
|
||||
('netherspite_beam_leaving_blue', '%player is leaving the blue beam--next blocker up!', 0, 0, '', '', '', '', '', '', '', ''),
|
||||
('netherspite_beam_leaving_green', '%player is leaving the green beam--next blocker up!', 0, 0, '', '', '', '', '', '', '', '');
|
||||
|
||||
INSERT INTO ai_playerbot_texts_chance (name, probability) VALUES
|
||||
('netherspite_beam_blocking_red', 100),
|
||||
('netherspite_beam_blocking_blue', 100),
|
||||
('netherspite_beam_blocking_green', 100),
|
||||
('netherspite_beam_leaving_blue', 100),
|
||||
('netherspite_beam_leaving_green', 100);
|
||||
@@ -1,5 +1,5 @@
|
||||
DROP TABLE IF EXISTS `playerbots_rpg_races`;
|
||||
CREATE TABLE `playerbots_rpg_races`
|
||||
CREATE TABLE `playerbots_rpg_races`
|
||||
(
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`entry` int(11),
|
||||
3
data/sql/world/updates/2025_08_27_03.sql
Normal file
3
data/sql/world/updates/2025_08_27_03.sql
Normal file
@@ -0,0 +1,3 @@
|
||||
DELETE FROM spell_dbc WHERE ID = 30758;
|
||||
INSERT INTO spell_dbc (`ID`,`Category`,`DispelType`,`Mechanic`,`Attributes`,`AttributesEx`,`AttributesEx2`,`AttributesEx3`,`AttributesEx4`,`AttributesEx5`,`AttributesEx6`,`AttributesEx7`,`ShapeshiftMask`,`unk_320_2`,`ShapeshiftExclude`,`unk_320_3`,`Targets`,`TargetCreatureType`,`RequiresSpellFocus`,`FacingCasterFlags`,`CasterAuraState`,`TargetAuraState`,`ExcludeCasterAuraState`,`ExcludeTargetAuraState`,`CasterAuraSpell`,`TargetAuraSpell`,`ExcludeCasterAuraSpell`,`ExcludeTargetAuraSpell`,`CastingTimeIndex`,`RecoveryTime`,`CategoryRecoveryTime`,`InterruptFlags`,`AuraInterruptFlags`,`ChannelInterruptFlags`,`ProcTypeMask`,`ProcChance`,`ProcCharges`,`MaxLevel`,`BaseLevel`,`SpellLevel`,`DurationIndex`,`PowerType`,`ManaCost`,`ManaCostPerLevel`,`ManaPerSecond`,`ManaPerSecondPerLevel`,`RangeIndex`,`Speed`,`ModalNextSpell`,`CumulativeAura`,`Totem_1`,`Totem_2`,`Reagent_1`,`Reagent_2`,`Reagent_3`,`Reagent_4`,`Reagent_5`,`Reagent_6`,`Reagent_7`,`Reagent_8`,`ReagentCount_1`,`ReagentCount_2`,`ReagentCount_3`,`ReagentCount_4`,`ReagentCount_5`,`ReagentCount_6`,`ReagentCount_7`,`ReagentCount_8`,`EquippedItemClass`,`EquippedItemSubclass`,`EquippedItemInvTypes`,`Effect_1`,`Effect_2`,`Effect_3`,`EffectDieSides_1`,`EffectDieSides_2`,`EffectDieSides_3`,`EffectRealPointsPerLevel_1`,`EffectRealPointsPerLevel_2`,`EffectRealPointsPerLevel_3`,`EffectBasePoints_1`,`EffectBasePoints_2`,`EffectBasePoints_3`,`EffectMechanic_1`,`EffectMechanic_2`,`EffectMechanic_3`,`ImplicitTargetA_1`,`ImplicitTargetA_2`,`ImplicitTargetA_3`,`ImplicitTargetB_1`,`ImplicitTargetB_2`,`ImplicitTargetB_3`,`EffectRadiusIndex_1`,`EffectRadiusIndex_2`,`EffectRadiusIndex_3`,`EffectAura_1`,`EffectAura_2`,`EffectAura_3`,`EffectAuraPeriod_1`,`EffectAuraPeriod_2`,`EffectAuraPeriod_3`,`EffectMultipleValue_1`,`EffectMultipleValue_2`,`EffectMultipleValue_3`,`EffectChainTargets_1`,`EffectChainTargets_2`,`EffectChainTargets_3`,`EffectItemType_1`,`EffectItemType_2`,`EffectItemType_3`,`EffectMiscValue_1`,`EffectMiscValue_2`,`EffectMiscValue_3`,`EffectMiscValueB_1`,`EffectMiscValueB_2`,`EffectMiscValueB_3`,`EffectTriggerSpell_1`,`EffectTriggerSpell_2`,`EffectTriggerSpell_3`,`EffectPointsPerCombo_1`,`EffectPointsPerCombo_2`,`EffectPointsPerCombo_3`,`EffectSpellClassMaskA_1`,`EffectSpellClassMaskA_2`,`EffectSpellClassMaskA_3`,`EffectSpellClassMaskB_1`,`EffectSpellClassMaskB_2`,`EffectSpellClassMaskB_3`,`EffectSpellClassMaskC_1`,`EffectSpellClassMaskC_2`,`EffectSpellClassMaskC_3`,`SpellVisualID_1`,`SpellVisualID_2`,`SpellIconID`,`ActiveIconID`,`SpellPriority`,`Name_Lang_enUS`,`Name_Lang_enGB`,`Name_Lang_koKR`,`Name_Lang_frFR`,`Name_Lang_deDE`,`Name_Lang_enCN`,`Name_Lang_zhCN`,`Name_Lang_enTW`,`Name_Lang_zhTW`,`Name_Lang_esES`,`Name_Lang_esMX`,`Name_Lang_ruRU`,`Name_Lang_ptPT`,`Name_Lang_ptBR`,`Name_Lang_itIT`,`Name_Lang_Unk`,`Name_Lang_Mask`,`NameSubtext_Lang_enUS`,`NameSubtext_Lang_enGB`,`NameSubtext_Lang_koKR`,`NameSubtext_Lang_frFR`,`NameSubtext_Lang_deDE`,`NameSubtext_Lang_enCN`,`NameSubtext_Lang_zhCN`,`NameSubtext_Lang_enTW`,`NameSubtext_Lang_zhTW`,`NameSubtext_Lang_esES`,`NameSubtext_Lang_esMX`,`NameSubtext_Lang_ruRU`,`NameSubtext_Lang_ptPT`,`NameSubtext_Lang_ptBR`,`NameSubtext_Lang_itIT`,`NameSubtext_Lang_Unk`,`NameSubtext_Lang_Mask`,`Description_Lang_enUS`,`Description_Lang_enGB`,`Description_Lang_koKR`,`Description_Lang_frFR`,`Description_Lang_deDE`,`Description_Lang_enCN`,`Description_Lang_zhCN`,`Description_Lang_enTW`,`Description_Lang_zhTW`,`Description_Lang_esES`,`Description_Lang_esMX`,`Description_Lang_ruRU`,`Description_Lang_ptPT`,`Description_Lang_ptBR`,`Description_Lang_itIT`,`Description_Lang_Unk`,`Description_Lang_Mask`,`AuraDescription_Lang_enUS`,`AuraDescription_Lang_enGB`,`AuraDescription_Lang_koKR`,`AuraDescription_Lang_frFR`,`AuraDescription_Lang_deDE`,`AuraDescription_Lang_enCN`,`AuraDescription_Lang_zhCN`,`AuraDescription_Lang_enTW`,`AuraDescription_Lang_zhTW`,`AuraDescription_Lang_esES`,`AuraDescription_Lang_esMX`,`AuraDescription_Lang_ruRU`,`AuraDescription_Lang_ptPT`,`AuraDescription_Lang_ptBR`,`AuraDescription_Lang_itIT`,`AuraDescription_Lang_Unk`,`AuraDescription_Lang_Mask`,`ManaCostPct`,`StartRecoveryCategory`,`StartRecoveryTime`,`MaxTargetLevel`,`SpellClassSet`,`SpellClassMask_1`,`SpellClassMask_2`,`SpellClassMask_3`,`MaxTargets`,`DefenseType`,`PreventionType`,`StanceBarOrder`,`EffectChainAmplitude_1`,`EffectChainAmplitude_2`,`EffectChainAmplitude_3`,`MinFactionID`,`MinReputation`,`RequiredAuraVision`,`RequiredTotemCategoryID_1`,`RequiredTotemCategoryID_2`,`RequiredAreasID`,`SchoolMask`,`RuneCostID`,`SpellMissileID`,`PowerDisplayID`,`EffectBonusMultiplier_1`,`EffectBonusMultiplier_2`,`EffectBonusMultiplier_3`,`SpellDescriptionVariableID`,`SpellDifficultyID`)
|
||||
VALUES (30758,0,0,0,696254720,132128,268976133,269680640,8388736,393224,4100,0,0,0,0,0,64,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,101,0,0,0,0,0,0,0,0,0,0,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,0,0,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,52,0,0,0,0,10,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,'aedm','','','','','','','','','','','','','','','',16712190,'','','','','','','','','','','','','','','','',16712172,'','','','','','','','','','','','','','','','',16712188,'','','','','','','','','','','','','','','','',16712188,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0);
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* Copyright (C) 2016+ AzerothCore <www.azerothcore.org>, released under GNU GPL v2 license, you may redistribute it
|
||||
* and/or modify it under version 2 of the License, or (at your option), any later version.
|
||||
* Copyright (C) 2016+ AzerothCore <www.azerothcore.org>, released under GNU AGPL v3 license, you may redistribute it
|
||||
* and/or modify it under version 3 of the License, or (at your option), any later version.
|
||||
*/
|
||||
|
||||
#include "AiFactory.h"
|
||||
@@ -91,6 +91,9 @@ uint8 AiFactory::GetPlayerSpecTab(Player* bot)
|
||||
case CLASS_WARLOCK:
|
||||
tab = WARLOCK_TAB_DEMONOLOGY;
|
||||
break;
|
||||
case CLASS_SHAMAN:
|
||||
tab = SHAMAN_TAB_ELEMENTAL;
|
||||
break;
|
||||
}
|
||||
|
||||
return tab;
|
||||
@@ -292,7 +295,7 @@ void AiFactory::AddDefaultCombatStrategies(Player* player, PlayerbotAI* const fa
|
||||
{
|
||||
engine->addStrategiesNoInit("dps", "shadow debuff", "shadow aoe", nullptr);
|
||||
}
|
||||
else if (tab == PRIEST_TAB_DISIPLINE)
|
||||
else if (tab == PRIEST_TAB_DISCIPLINE)
|
||||
{
|
||||
engine->addStrategiesNoInit("heal", nullptr);
|
||||
}
|
||||
@@ -304,9 +307,9 @@ void AiFactory::AddDefaultCombatStrategies(Player* player, PlayerbotAI* const fa
|
||||
engine->addStrategiesNoInit("dps assist", "cure", nullptr);
|
||||
break;
|
||||
case CLASS_MAGE:
|
||||
if (tab == 0)
|
||||
if (tab == 0) // Arcane
|
||||
engine->addStrategiesNoInit("arcane", nullptr);
|
||||
else if (tab == 1)
|
||||
else if (tab == 1) // Fire
|
||||
{
|
||||
if (player->HasSpell(44614) /*Frostfire Bolt*/ && player->HasAura(15047) /*Ice Shards*/)
|
||||
{
|
||||
@@ -316,8 +319,8 @@ void AiFactory::AddDefaultCombatStrategies(Player* player, PlayerbotAI* const fa
|
||||
{
|
||||
engine->addStrategiesNoInit("fire", nullptr);
|
||||
}
|
||||
}
|
||||
else
|
||||
}
|
||||
else // Frost
|
||||
engine->addStrategiesNoInit("frost", nullptr);
|
||||
|
||||
engine->addStrategiesNoInit("dps", "dps assist", "cure", "aoe", nullptr);
|
||||
@@ -331,14 +334,14 @@ void AiFactory::AddDefaultCombatStrategies(Player* player, PlayerbotAI* const fa
|
||||
engine->addStrategiesNoInit("fury", "aoe", "dps assist", /*"behind",*/ nullptr);
|
||||
break;
|
||||
case CLASS_SHAMAN:
|
||||
if (tab == 0)
|
||||
engine->addStrategiesNoInit("caster", "caster aoe", "bmana", nullptr);
|
||||
else if (tab == 2)
|
||||
engine->addStrategiesNoInit("heal", "bmana", nullptr);
|
||||
else
|
||||
engine->addStrategiesNoInit("melee", "melee aoe", "bdps", nullptr);
|
||||
if (tab == 0) // Elemental
|
||||
engine->addStrategiesNoInit("ele", "stoneskin", "wrath", "mana spring", "wrath of air", nullptr);
|
||||
else if (tab == 2) // Restoration
|
||||
engine->addStrategiesNoInit("resto", "stoneskin", "flametongue", "mana spring", "wrath of air", nullptr);
|
||||
else // Enhancement
|
||||
engine->addStrategiesNoInit("enh", "strength of earth", "magma", "healing stream", "windfury", nullptr);
|
||||
|
||||
engine->addStrategiesNoInit("dps assist", "cure", "totems", nullptr);
|
||||
engine->addStrategiesNoInit("dps assist", "cure", "aoe", nullptr);
|
||||
break;
|
||||
case CLASS_PALADIN:
|
||||
if (tab == 1)
|
||||
@@ -472,6 +475,10 @@ void AiFactory::AddDefaultCombatStrategies(Player* player, PlayerbotAI* const fa
|
||||
}
|
||||
}
|
||||
}
|
||||
if (sRandomPlayerbotMgr->IsRandomBot(player))
|
||||
{
|
||||
engine->ChangeStrategy(sPlayerbotAIConfig->randomBotCombatStrategies);
|
||||
}
|
||||
else
|
||||
{
|
||||
engine->ChangeStrategy(sPlayerbotAIConfig->combatStrategies);
|
||||
@@ -600,7 +607,7 @@ void AiFactory::AddDefaultNonCombatStrategies(Player* player, PlayerbotAI* const
|
||||
nonCombatEngine->addStrategy("dps assist", false);
|
||||
break;
|
||||
case CLASS_WARLOCK:
|
||||
if (tab == WARLOCK_TAB_AFFLICATION)
|
||||
if (tab == WARLOCK_TAB_AFFLICTION)
|
||||
{
|
||||
nonCombatEngine->addStrategiesNoInit("felhunter", "spellstone", nullptr);
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* Copyright (C) 2016+ AzerothCore <www.azerothcore.org>, released under GNU GPL v2 license, you may redistribute it
|
||||
* and/or modify it under version 2 of the License, or (at your option), any later version.
|
||||
* Copyright (C) 2016+ AzerothCore <www.azerothcore.org>, released under GNU AGPL v3 license, you may redistribute it
|
||||
* and/or modify it under version 3 of the License, or (at your option), any later version.
|
||||
*/
|
||||
|
||||
#ifndef _PLAYERBOT_AIFACTORY_H
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* Copyright (C) 2016+ AzerothCore <www.azerothcore.org>, released under GNU GPL v2 license, you may redistribute it
|
||||
* and/or modify it under version 2 of the License, or (at your option), any later version.
|
||||
* Copyright (C) 2016+ AzerothCore <www.azerothcore.org>, released under GNU AGPL v3 license, you may redistribute it
|
||||
* and/or modify it under version 3 of the License, or (at your option), any later version.
|
||||
*/
|
||||
|
||||
#include "ChatFilter.h"
|
||||
@@ -8,6 +8,18 @@
|
||||
#include "Group.h"
|
||||
#include "Playerbots.h"
|
||||
#include "RtiTargetValue.h"
|
||||
#include "AiFactory.h"
|
||||
|
||||
#include <algorithm>
|
||||
#include <cctype>
|
||||
#include <string>
|
||||
|
||||
static std::string ToLower(const std::string& str)
|
||||
{
|
||||
std::string out = str;
|
||||
std::transform(out.begin(), out.end(), out.begin(), [](unsigned char c){ return std::tolower(c); });
|
||||
return out;
|
||||
}
|
||||
|
||||
std::string const ChatFilter::Filter(std::string& message)
|
||||
{
|
||||
@@ -25,27 +37,36 @@ public:
|
||||
std::string const Filter(std::string& message) override
|
||||
{
|
||||
Player* bot = botAI->GetBot();
|
||||
std::string msgLower = ToLower(message);
|
||||
|
||||
bool tank = message.find("@tank") == 0;
|
||||
bool tank = msgLower.find("@tank") == 0;
|
||||
if (tank && !botAI->IsTank(bot))
|
||||
return "";
|
||||
|
||||
bool dps = message.find("@dps") == 0;
|
||||
bool dps = msgLower.find("@dps") == 0;
|
||||
if (dps && (botAI->IsTank(bot) || botAI->IsHeal(bot)))
|
||||
return "";
|
||||
|
||||
bool heal = message.find("@heal") == 0;
|
||||
bool heal = msgLower.find("@heal") == 0;
|
||||
if (heal && !botAI->IsHeal(bot))
|
||||
return "";
|
||||
|
||||
bool ranged = message.find("@ranged") == 0;
|
||||
bool ranged = msgLower.find("@ranged") == 0;
|
||||
if (ranged && !botAI->IsRanged(bot))
|
||||
return "";
|
||||
|
||||
bool melee = message.find("@melee") == 0;
|
||||
bool melee = msgLower.find("@melee") == 0;
|
||||
if (melee && botAI->IsRanged(bot))
|
||||
return "";
|
||||
|
||||
bool rangeddps = msgLower.find("@rangeddps") == 0;
|
||||
if (rangeddps && (!botAI->IsRanged(bot) || botAI->IsTank(bot) || botAI->IsHeal(bot)))
|
||||
return "";
|
||||
|
||||
bool meleedps = msgLower.find("@meleedps") == 0;
|
||||
if (meleedps && (!botAI->IsMelee(bot) || botAI->IsTank(bot) || botAI->IsHeal(bot)))
|
||||
return "";
|
||||
|
||||
if (tank || dps || heal || ranged || melee)
|
||||
return ChatFilter::Filter(message);
|
||||
|
||||
@@ -61,11 +82,11 @@ public:
|
||||
std::string const Filter(std::string& message) override
|
||||
{
|
||||
Player* bot = botAI->GetBot();
|
||||
|
||||
if (message[0] != '@')
|
||||
std::string msgLower = ToLower(message);
|
||||
if (msgLower[0] != '@')
|
||||
return message;
|
||||
|
||||
if (message.find("-") != std::string::npos)
|
||||
if (msgLower.find("-") != std::string::npos)
|
||||
{
|
||||
uint32 fromLevel = atoi(message.substr(message.find("@") + 1, message.find("-")).c_str());
|
||||
uint32 toLevel = atoi(message.substr(message.find("-") + 1, message.find(" ")).c_str());
|
||||
@@ -92,9 +113,10 @@ public:
|
||||
std::string const Filter(std::string& message) override
|
||||
{
|
||||
Player* bot = botAI->GetBot();
|
||||
std::string msgLower = ToLower(message);
|
||||
|
||||
bool melee = message.find("@melee") == 0;
|
||||
bool ranged = message.find("@ranged") == 0;
|
||||
bool melee = msgLower.find("@melee") == 0;
|
||||
bool ranged = msgLower.find("@ranged") == 0;
|
||||
|
||||
if (!melee && !ranged)
|
||||
return message;
|
||||
@@ -151,17 +173,17 @@ public:
|
||||
std::string const Filter(std::string& message) override
|
||||
{
|
||||
Player* bot = botAI->GetBot();
|
||||
std::string msgLower = ToLower(message);
|
||||
Group* group = bot->GetGroup();
|
||||
if (!group)
|
||||
return message;
|
||||
|
||||
bool found = false;
|
||||
//bool isRti = false; //not used, shadowed by the next declaration, line marked for removal.
|
||||
for (std::vector<std::string>::iterator i = rtis.begin(); i != rtis.end(); i++)
|
||||
{
|
||||
std::string const rti = *i;
|
||||
|
||||
bool isRti = message.find(rti) == 0;
|
||||
std::string rtiLower = ToLower(rti);
|
||||
bool isRti = msgLower.find(rtiLower) == 0;
|
||||
if (!isRti)
|
||||
continue;
|
||||
|
||||
@@ -196,7 +218,7 @@ class ClassChatFilter : public ChatFilter
|
||||
public:
|
||||
ClassChatFilter(PlayerbotAI* botAI) : ChatFilter(botAI)
|
||||
{
|
||||
classNames["@death_knight"] = CLASS_DEATH_KNIGHT;
|
||||
classNames["@dk"] = CLASS_DEATH_KNIGHT;
|
||||
classNames["@druid"] = CLASS_DRUID;
|
||||
classNames["@hunter"] = CLASS_HUNTER;
|
||||
classNames["@mage"] = CLASS_MAGE;
|
||||
@@ -211,12 +233,12 @@ public:
|
||||
std::string const Filter(std::string& message) override
|
||||
{
|
||||
Player* bot = botAI->GetBot();
|
||||
std::string msgLower = ToLower(message);
|
||||
|
||||
bool found = false;
|
||||
//bool isClass = false; //not used, shadowed by the next declaration, line marked for removal.
|
||||
for (std::map<std::string, uint8>::iterator i = classNames.begin(); i != classNames.end(); i++)
|
||||
{
|
||||
bool isClass = message.find(i->first) == 0;
|
||||
bool isClass = msgLower.find(ToLower(i->first)) == 0;
|
||||
if (isClass && bot->getClass() != i->second)
|
||||
return "";
|
||||
|
||||
@@ -243,30 +265,321 @@ public:
|
||||
std::string const Filter(std::string& message) override
|
||||
{
|
||||
Player* bot = botAI->GetBot();
|
||||
|
||||
if (message.find("@group") == 0)
|
||||
std::string msgLower = ToLower(message);
|
||||
if (msgLower.find("@group") == 0)
|
||||
{
|
||||
std::string const pnum = message.substr(6, message.find(" "));
|
||||
uint32 from = atoi(pnum.c_str());
|
||||
uint32 to = from;
|
||||
if (pnum.find("-") != std::string::npos)
|
||||
size_t spacePos = message.find(" ");
|
||||
if (spacePos == std::string::npos)
|
||||
return message;
|
||||
|
||||
std::string pnum = message.substr(6, spacePos - 6);
|
||||
std::string actualMessage = message.substr(spacePos + 1);
|
||||
|
||||
std::set<uint32> targets;
|
||||
std::istringstream ss(pnum);
|
||||
std::string token;
|
||||
|
||||
while (std::getline(ss, token, ','))
|
||||
{
|
||||
from = atoi(pnum.substr(pnum.find("@") + 1, pnum.find("-")).c_str());
|
||||
to = atoi(pnum.substr(pnum.find("-") + 1, pnum.find(" ")).c_str());
|
||||
size_t dashPos = token.find("-");
|
||||
if (dashPos != std::string::npos)
|
||||
{
|
||||
uint32 from = atoi(token.substr(0, dashPos).c_str());
|
||||
uint32 to = atoi(token.substr(dashPos + 1).c_str());
|
||||
if (from > to) std::swap(from, to);
|
||||
for (uint32 i = from; i <= to; ++i)
|
||||
targets.insert(i);
|
||||
}
|
||||
else
|
||||
{
|
||||
uint32 index = atoi(token.c_str());
|
||||
targets.insert(index);
|
||||
}
|
||||
}
|
||||
|
||||
if (!bot->GetGroup())
|
||||
return message;
|
||||
|
||||
uint32 sg = bot->GetSubGroup() + 1;
|
||||
if (sg >= from && sg <= to)
|
||||
return ChatFilter::Filter(message);
|
||||
if (targets.find(sg) != targets.end())
|
||||
return ChatFilter::Filter(actualMessage);
|
||||
}
|
||||
|
||||
return message;
|
||||
}
|
||||
};
|
||||
|
||||
class SpecChatFilter : public ChatFilter
|
||||
{
|
||||
public:
|
||||
SpecChatFilter(PlayerbotAI* botAI) : ChatFilter(botAI)
|
||||
{
|
||||
// Map (class, specTab) to spec+class string
|
||||
specTabNames[{CLASS_PALADIN, 0}] = "hpal";
|
||||
specTabNames[{CLASS_PALADIN, 1}] = "ppal";
|
||||
specTabNames[{CLASS_PALADIN, 2}] = "rpal";
|
||||
specTabNames[{CLASS_PRIEST, 0}] = "disc";
|
||||
specTabNames[{CLASS_PRIEST, 1}] = "hpr";
|
||||
specTabNames[{CLASS_PRIEST, 2}] = "spr";
|
||||
specTabNames[{CLASS_MAGE, 0}] = "arc";
|
||||
specTabNames[{CLASS_MAGE, 1}] = "frost";
|
||||
specTabNames[{CLASS_MAGE, 2}] = "fire";
|
||||
specTabNames[{CLASS_WARRIOR, 0}] = "arms";
|
||||
specTabNames[{CLASS_WARRIOR, 1}] = "fury";
|
||||
specTabNames[{CLASS_WARRIOR, 2}] = "pwar";
|
||||
specTabNames[{CLASS_WARLOCK, 0}] = "affl";
|
||||
specTabNames[{CLASS_WARLOCK, 1}] = "demo";
|
||||
specTabNames[{CLASS_WARLOCK, 2}] = "dest";
|
||||
specTabNames[{CLASS_SHAMAN, 0}] = "ele";
|
||||
specTabNames[{CLASS_SHAMAN, 1}] = "enh";
|
||||
specTabNames[{CLASS_SHAMAN, 2}] = "rsha";
|
||||
specTabNames[{CLASS_DRUID, 0}] = "bal";
|
||||
// See below for feral druid
|
||||
specTabNames[{CLASS_DRUID, 2}] = "rdru";
|
||||
specTabNames[{CLASS_HUNTER, 0}] = "bmh";
|
||||
specTabNames[{CLASS_HUNTER, 1}] = "mmh";
|
||||
specTabNames[{CLASS_HUNTER, 2}] = "svh";
|
||||
specTabNames[{CLASS_ROGUE, 0}] = "mut";
|
||||
specTabNames[{CLASS_ROGUE, 1}] = "comb";
|
||||
specTabNames[{CLASS_ROGUE, 2}] = "sub";
|
||||
// See below for blood death knight
|
||||
specTabNames[{CLASS_DEATH_KNIGHT, 1}] = "fdk";
|
||||
specTabNames[{CLASS_DEATH_KNIGHT, 2}] = "udk";
|
||||
}
|
||||
|
||||
std::string const Filter(std::string& message) override
|
||||
{
|
||||
std::string msgLower = ToLower(message);
|
||||
std::string specPrefix;
|
||||
std::string rest;
|
||||
if (!ParseSpecPrefix(message, specPrefix, rest))
|
||||
{
|
||||
return message;
|
||||
}
|
||||
|
||||
Player* bot = botAI->GetBot();
|
||||
if (!MatchesSpec(bot, specPrefix))
|
||||
{
|
||||
return "";
|
||||
}
|
||||
|
||||
std::string result = ChatFilter::Filter(rest);
|
||||
return result;
|
||||
}
|
||||
|
||||
private:
|
||||
std::map<std::pair<uint8, int>, std::string> specTabNames;
|
||||
|
||||
bool ParseSpecPrefix(const std::string& message, std::string& specPrefix, std::string& rest)
|
||||
{
|
||||
std::string msgLower = ToLower(message);
|
||||
for (const auto& entry : specTabNames)
|
||||
{
|
||||
std::string prefix = "@" + entry.second;
|
||||
if (msgLower.find(ToLower(prefix)) == 0)
|
||||
{
|
||||
specPrefix = entry.second;
|
||||
size_t spacePos = message.find(' ');
|
||||
rest = (spacePos != std::string::npos) ? message.substr(spacePos + 1) : "";
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
bool MatchesSpec(Player* bot, const std::string& specPrefix)
|
||||
{
|
||||
uint8 cls = bot->getClass();
|
||||
int specTab = AiFactory::GetPlayerSpecTab(bot);
|
||||
std::string botSpecClass;
|
||||
// For druids, specTab==1 is always feral; distinguish bear/cat at runtime by role
|
||||
if (cls == CLASS_DRUID && specTab == 1)
|
||||
{
|
||||
botSpecClass = botAI->IsTank(bot) ? "bear" : "cat";
|
||||
}
|
||||
// For death knights, specTab==0 is always blood; distinguish tank/dps at runtime by role
|
||||
else if (cls == CLASS_DEATH_KNIGHT && specTab == 0)
|
||||
{
|
||||
botSpecClass = botAI->IsTank(bot) ? "bdkt" : "bdkd";
|
||||
}
|
||||
else
|
||||
{
|
||||
auto it = specTabNames.find({cls, specTab});
|
||||
if (it != specTabNames.end())
|
||||
botSpecClass = it->second;
|
||||
}
|
||||
return ToLower(botSpecClass) == ToLower(specPrefix);
|
||||
}
|
||||
};
|
||||
|
||||
class AuraChatFilter : public ChatFilter
|
||||
{
|
||||
public:
|
||||
AuraChatFilter(PlayerbotAI* botAI) : ChatFilter(botAI) {}
|
||||
|
||||
std::string const Filter(std::string& message) override
|
||||
{
|
||||
Player* bot = botAI->GetBot();
|
||||
std::string msgLower = ToLower(message);
|
||||
const std::string auraPrefix = "@aura";
|
||||
const std::string noAuraPrefix = "@noaura";
|
||||
size_t prefixLen = 0;
|
||||
bool isNoAura = false;
|
||||
if (msgLower.find(auraPrefix) == 0)
|
||||
{
|
||||
prefixLen = auraPrefix.length();
|
||||
isNoAura = false;
|
||||
}
|
||||
else if (msgLower.find(noAuraPrefix) == 0)
|
||||
{
|
||||
prefixLen = noAuraPrefix.length();
|
||||
isNoAura = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
return message;
|
||||
}
|
||||
|
||||
// Trim any leading spaces after @aura or @noaura (can use space between prefix and spell ID if desired, but not required)
|
||||
std::string auraIdOrName = message.substr(prefixLen);
|
||||
auraIdOrName.erase(0, auraIdOrName.find_first_not_of(' '));
|
||||
if (auraIdOrName.empty())
|
||||
{
|
||||
return message;
|
||||
}
|
||||
|
||||
uint32 auraId = 0;
|
||||
size_t spacePos = auraIdOrName.find(' ');
|
||||
std::string idStr = (spacePos != std::string::npos) ? auraIdOrName.substr(0, spacePos) : auraIdOrName;
|
||||
std::string rest = (spacePos != std::string::npos) ? auraIdOrName.substr(spacePos + 1) : "";
|
||||
if (!idStr.empty())
|
||||
{
|
||||
bool isNumeric = std::all_of(idStr.begin(), idStr.end(), ::isdigit);
|
||||
if (isNumeric)
|
||||
{
|
||||
auraId = atoi(idStr.c_str());
|
||||
}
|
||||
}
|
||||
|
||||
if (auraId == 0)
|
||||
return message;
|
||||
|
||||
bool hasAura = bot->HasAura(auraId);
|
||||
bool match = isNoAura ? !hasAura : hasAura;
|
||||
std::string result = match ? ChatFilter::Filter(rest) : "";
|
||||
return result;
|
||||
}
|
||||
};
|
||||
|
||||
class AggroByChatFilter : public ChatFilter
|
||||
{
|
||||
public:
|
||||
AggroByChatFilter(PlayerbotAI* botAI) : ChatFilter(botAI) {}
|
||||
|
||||
std::string const Filter(std::string& message) override
|
||||
{
|
||||
Player* bot = botAI->GetBot();
|
||||
std::string msgLower = ToLower(message);
|
||||
const std::string prefix = "@aggroby";
|
||||
size_t prefixLen = prefix.length();
|
||||
if (msgLower.find(prefix) != 0)
|
||||
{
|
||||
return message;
|
||||
}
|
||||
|
||||
// Trim any leading spaces after @aggroby (can use space between prefix and entry ID/creature name if desired, but not required)
|
||||
std::string enemyStr = message.substr(prefixLen);
|
||||
enemyStr.erase(0, enemyStr.find_first_not_of(' '));
|
||||
if (enemyStr.empty())
|
||||
{
|
||||
return message;
|
||||
}
|
||||
|
||||
// If creature name is more than one word, it must be enclosed in quotes, e.g. @aggroby "Scarlet Commander Mograine" flee
|
||||
std::string rest = "";
|
||||
std::string enemyName = "";
|
||||
bool isName = false;
|
||||
uint32 entryId = 0;
|
||||
|
||||
if (enemyStr[0] == '"')
|
||||
{
|
||||
size_t endQuote = enemyStr.find('"', 1);
|
||||
if (endQuote != std::string::npos)
|
||||
{
|
||||
enemyName = enemyStr.substr(1, endQuote - 1);
|
||||
isName = true;
|
||||
size_t spacePos = enemyStr.find(' ', endQuote + 1);
|
||||
if (spacePos != std::string::npos)
|
||||
{
|
||||
rest = enemyStr.substr(spacePos + 1);
|
||||
}
|
||||
else
|
||||
{
|
||||
rest = "";
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
enemyName = enemyStr.substr(1);
|
||||
isName = true;
|
||||
rest = "";
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
size_t splitPos = enemyStr.find_first_of(" ");
|
||||
std::string idOrName = (splitPos != std::string::npos) ? enemyStr.substr(0, splitPos) : enemyStr;
|
||||
if (splitPos != std::string::npos)
|
||||
{
|
||||
rest = enemyStr.substr(splitPos + 1);
|
||||
}
|
||||
else
|
||||
{
|
||||
rest = "";
|
||||
}
|
||||
if (!idOrName.empty())
|
||||
{
|
||||
bool isNumeric = std::all_of(idOrName.begin(), idOrName.end(), ::isdigit);
|
||||
if (isNumeric)
|
||||
{
|
||||
entryId = atoi(idOrName.c_str());
|
||||
}
|
||||
else
|
||||
{
|
||||
enemyName = idOrName;
|
||||
isName = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
const float radius = 100.0f;
|
||||
GuidVector npcs = botAI->GetAiObjectContext()->GetValue<GuidVector>("nearest npcs")->Get();
|
||||
bool match = false;
|
||||
for (const auto& guid : npcs)
|
||||
{
|
||||
Creature* c = botAI->GetCreature(guid);
|
||||
if (!c)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
bool nameMatch = isName && ToLower(c->GetName()) == ToLower(enemyName);
|
||||
bool idMatch = (entryId != 0) && c->GetEntry() == entryId;
|
||||
if ((nameMatch || idMatch) && c->GetDistance2d(bot) <= radius)
|
||||
{
|
||||
Unit* victim = c->GetVictim();
|
||||
if (victim && victim->GetGUID() == bot->GetGUID())
|
||||
{
|
||||
match = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
std::string result = match ? ChatFilter::Filter(rest) : "";
|
||||
return result;
|
||||
}
|
||||
};
|
||||
|
||||
CompositeChatFilter::CompositeChatFilter(PlayerbotAI* botAI) : ChatFilter(botAI)
|
||||
{
|
||||
filters.push_back(new StrategyChatFilter(botAI));
|
||||
@@ -275,6 +588,9 @@ CompositeChatFilter::CompositeChatFilter(PlayerbotAI* botAI) : ChatFilter(botAI)
|
||||
filters.push_back(new CombatTypeChatFilter(botAI));
|
||||
filters.push_back(new LevelChatFilter(botAI));
|
||||
filters.push_back(new SubGroupChatFilter(botAI));
|
||||
filters.push_back(new SpecChatFilter(botAI));
|
||||
filters.push_back(new AuraChatFilter(botAI));
|
||||
filters.push_back(new AggroByChatFilter(botAI));
|
||||
}
|
||||
|
||||
CompositeChatFilter::~CompositeChatFilter()
|
||||
@@ -285,14 +601,11 @@ CompositeChatFilter::~CompositeChatFilter()
|
||||
|
||||
std::string const CompositeChatFilter::Filter(std::string& message)
|
||||
{
|
||||
for (uint32 j = 0; j < filters.size(); ++j)
|
||||
for (auto* filter : filters)
|
||||
{
|
||||
for (std::vector<ChatFilter*>::iterator i = filters.begin(); i != filters.end(); i++)
|
||||
{
|
||||
message = (*i)->Filter(message);
|
||||
if (message.empty())
|
||||
break;
|
||||
}
|
||||
message = filter->Filter(message);
|
||||
if (message.empty())
|
||||
break;
|
||||
}
|
||||
|
||||
return message;
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* Copyright (C) 2016+ AzerothCore <www.azerothcore.org>, released under GNU GPL v2 license, you may redistribute it
|
||||
* and/or modify it under version 2 of the License, or (at your option), any later version.
|
||||
* Copyright (C) 2016+ AzerothCore <www.azerothcore.org>, released under GNU AGPL v3 license, you may redistribute it
|
||||
* and/or modify it under version 3 of the License, or (at your option), any later version.
|
||||
*/
|
||||
|
||||
#ifndef _PLAYERBOT_CHATFILTER_H
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* Copyright (C) 2016+ AzerothCore <www.azerothcore.org>, released under GNU GPL v2 license, you may redistribute it
|
||||
* and/or modify it under version 2 of the License, or (at your option), any later version.
|
||||
* Copyright (C) 2016+ AzerothCore <www.azerothcore.org>, released under GNU AGPL v3 license, you may redistribute it
|
||||
* and/or modify it under version 3 of the License, or (at your option), any later version.
|
||||
*/
|
||||
|
||||
#include "ChatHelper.h"
|
||||
@@ -308,25 +308,25 @@ ItemIds ChatHelper::parseItems(std::string const text)
|
||||
ItemWithRandomProperty ChatHelper::parseItemWithRandomProperty(std::string const text)
|
||||
{
|
||||
ItemWithRandomProperty res;
|
||||
|
||||
|
||||
size_t itemStart = text.find("Hitem:");
|
||||
if (itemStart == std::string::npos)
|
||||
return res;
|
||||
|
||||
|
||||
itemStart += 6;
|
||||
if (itemStart >= text.length())
|
||||
return res;
|
||||
|
||||
|
||||
size_t colonPos = text.find(':', itemStart);
|
||||
if (colonPos == std::string::npos)
|
||||
return res;
|
||||
|
||||
|
||||
std::string itemIdStr = text.substr(itemStart, colonPos - itemStart);
|
||||
res.itemId = atoi(itemIdStr.c_str());
|
||||
|
||||
|
||||
std::vector<std::string> params;
|
||||
size_t currentPos = colonPos + 1;
|
||||
|
||||
|
||||
while (currentPos < text.length()) {
|
||||
size_t nextColon = text.find(':', currentPos);
|
||||
if (nextColon == std::string::npos) {
|
||||
@@ -336,15 +336,15 @@ ItemWithRandomProperty ChatHelper::parseItemWithRandomProperty(std::string const
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
params.push_back(text.substr(currentPos, nextColon - currentPos));
|
||||
currentPos = nextColon + 1;
|
||||
}
|
||||
|
||||
|
||||
if (params.size() >= 6) {
|
||||
res.randomPropertyId = atoi(params[5].c_str());
|
||||
}
|
||||
|
||||
|
||||
return res;
|
||||
}
|
||||
|
||||
@@ -364,7 +364,7 @@ std::string const ChatHelper::FormatQuest(Quest const* quest)
|
||||
|
||||
if (questTitle.empty())
|
||||
questTitle = quest->GetTitle();
|
||||
|
||||
|
||||
out << "|cFFFFFF00|Hquest:" << quest->GetQuestId() << ':' << quest->GetQuestLevel() << "|h[" << questTitle << "]|h|r";
|
||||
return out.str();
|
||||
}
|
||||
@@ -432,7 +432,7 @@ std::string const ChatHelper::FormatItem(ItemTemplate const* proto, uint32 count
|
||||
|
||||
if (locale && locale->Name.size() > sWorld->GetDefaultDbcLocale())
|
||||
itemName = locale->Name[sWorld->GetDefaultDbcLocale()];
|
||||
|
||||
|
||||
if (itemName.empty())
|
||||
itemName = proto->Name1;
|
||||
|
||||
@@ -677,7 +677,7 @@ std::set<uint32> extractGeneric(std::string_view text, std::string_view prefix)
|
||||
std::string_view number_str = text_view.substr(pos, end_pos - pos);
|
||||
|
||||
uint32 number = 0;
|
||||
|
||||
|
||||
auto [ptr, ec] = std::from_chars(number_str.data(), number_str.data() + number_str.size(), number);
|
||||
|
||||
if (ec == std::errc())
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* Copyright (C) 2016+ AzerothCore <www.azerothcore.org>, released under GNU GPL v2 license, you may redistribute it
|
||||
* and/or modify it under version 2 of the License, or (at your option), any later version.
|
||||
* Copyright (C) 2016+ AzerothCore <www.azerothcore.org>, released under GNU AGPL v3 license, you may redistribute it
|
||||
* and/or modify it under version 3 of the License, or (at your option), any later version.
|
||||
*/
|
||||
|
||||
#ifndef _PLAYERBOT_CHATHELPER_H
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* Copyright (C) 2016+ AzerothCore <www.azerothcore.org>, released under GNU GPL v2 license, you may redistribute it
|
||||
* and/or modify it under version 2 of the License, or (at your option), any later version.
|
||||
* Copyright (C) 2016+ AzerothCore <www.azerothcore.org>, released under GNU AGPL v3 license, you may redistribute it
|
||||
* and/or modify it under version 3 of the License, or (at your option), any later version.
|
||||
*/
|
||||
|
||||
#include "FleeManager.h"
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* Copyright (C) 2016+ AzerothCore <www.azerothcore.org>, released under GNU GPL v2 license, you may redistribute it
|
||||
* and/or modify it under version 2 of the License, or (at your option), any later version.
|
||||
* Copyright (C) 2016+ AzerothCore <www.azerothcore.org>, released under GNU AGPL v3 license, you may redistribute it
|
||||
* and/or modify it under version 3 of the License, or (at your option), any later version.
|
||||
*/
|
||||
|
||||
#ifndef _PLAYERBOT_FLEEMANAGER_H
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* Copyright (C) 2016+ AzerothCore <www.azerothcore.org>, released under GNU GPL v2 license, you may redistribute it
|
||||
* and/or modify it under version 2 of the License, or (at your option), any later version.
|
||||
* Copyright (C) 2016+ AzerothCore <www.azerothcore.org>, released under GNU AGPL v3 license, you may redistribute it
|
||||
* and/or modify it under version 3 of the License, or (at your option), any later version.
|
||||
*/
|
||||
|
||||
#include "GuildTaskMgr.h"
|
||||
@@ -590,7 +590,7 @@ uint32 GuildTaskMgr::GetTaskValue(uint32 owner, uint32 guildId, std::string cons
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
uint32 value = 0;
|
||||
|
||||
PlayerbotsDatabasePreparedStatement* stmt =
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* Copyright (C) 2016+ AzerothCore <www.azerothcore.org>, released under GNU GPL v2 license, you may redistribute it
|
||||
* and/or modify it under version 2 of the License, or (at your option), any later version.
|
||||
* Copyright (C) 2016+ AzerothCore <www.azerothcore.org>, released under GNU AGPL v3 license, you may redistribute it
|
||||
* and/or modify it under version 3 of the License, or (at your option), any later version.
|
||||
*/
|
||||
|
||||
#ifndef _PLAYERBOT_GUILDTASKMGR_H
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* Copyright (C) 2016+ AzerothCore <www.azerothcore.org>, released under GNU GPL v2 license, you may redistribute it
|
||||
* and/or modify it under version 2 of the License, or (at your option), any later version.
|
||||
* Copyright (C) 2016+ AzerothCore <www.azerothcore.org>, released under GNU AGPL v3 license, you may redistribute it
|
||||
* and/or modify it under version 3 of the License, or (at your option), any later version.
|
||||
*/
|
||||
|
||||
#include "Helpers.h"
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* Copyright (C) 2016+ AzerothCore <www.azerothcore.org>, released under GNU GPL v2 license, you may redistribute it
|
||||
* and/or modify it under version 2 of the License, or (at your option), any later version.
|
||||
* Copyright (C) 2016+ AzerothCore <www.azerothcore.org>, released under GNU AGPL v3 license, you may redistribute it
|
||||
* and/or modify it under version 3 of the License, or (at your option), any later version.
|
||||
*/
|
||||
|
||||
#ifndef _PLAYERBOT_HELPERS_H
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* Copyright (C) 2016+ AzerothCore <www.azerothcore.org>, released under GNU GPL v2 license, you may redistribute it
|
||||
* and/or modify it under version 2 of the License, or (at your option), any later version.
|
||||
* Copyright (C) 2016+ AzerothCore <www.azerothcore.org>, released under GNU AGPL v3 license, you may redistribute it
|
||||
* and/or modify it under version 3 of the License, or (at your option), any later version.
|
||||
*/
|
||||
|
||||
#ifndef _PLAYERBOT_LAZYCALCULATEDVALUE_H
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* Copyright (C) 2016+ AzerothCore <www.azerothcore.org>, released under GNU GPL v2 license, you may redistribute it
|
||||
* and/or modify it under version 2 of the License, or (at your option), any later version.
|
||||
* Copyright (C) 2016+ AzerothCore <www.azerothcore.org>, released under GNU AGPL v3 license, you may redistribute it
|
||||
* and/or modify it under version 3 of the License, or (at your option), any later version.
|
||||
*/
|
||||
|
||||
#include "LootObjectStack.h"
|
||||
@@ -299,9 +299,10 @@ bool LootObject::IsLootPossible(Player* bot)
|
||||
return false;
|
||||
}
|
||||
|
||||
// Prevent bot from running to chests that are unlootable (e.g. Gunship Armory before completing the event)
|
||||
// Prevent bot from running to chests that are unlootable (e.g. Gunship Armory before completing the event) or on
|
||||
// respawn time
|
||||
GameObject* go = botAI->GetGameObject(guid);
|
||||
if (go && go->HasFlag(GAMEOBJECT_FLAGS, GO_FLAG_INTERACT_COND | GO_FLAG_NOT_SELECTABLE))
|
||||
if (go && (go->HasFlag(GAMEOBJECT_FLAGS, GO_FLAG_INTERACT_COND | GO_FLAG_NOT_SELECTABLE) || !go->isSpawned()))
|
||||
return false;
|
||||
|
||||
if (skillId == SKILL_NONE)
|
||||
@@ -407,4 +408,4 @@ LootObject LootObjectStack::GetNearest(float maxDistance)
|
||||
}
|
||||
|
||||
return nearest;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* Copyright (C) 2016+ AzerothCore <www.azerothcore.org>, released under GNU GPL v2 license, you may redistribute it
|
||||
* and/or modify it under version 2 of the License, or (at your option), any later version.
|
||||
* Copyright (C) 2016+ AzerothCore <www.azerothcore.org>, released under GNU AGPL v3 license, you may redistribute it
|
||||
* and/or modify it under version 3 of the License, or (at your option), any later version.
|
||||
*/
|
||||
|
||||
#ifndef _PLAYERBOT_LOOTOBJECTSTACK_H
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* Copyright (C) 2016+ AzerothCore <www.azerothcore.org>, released under GNU GPL v2 license, you may redistribute it
|
||||
* and/or modify it under version 2 of the License, or (at your option), any later version.
|
||||
* Copyright (C) 2016+ AzerothCore <www.azerothcore.org>, released under GNU AGPL v3 license, you may redistribute it
|
||||
* and/or modify it under version 3 of the License, or (at your option), any later version.
|
||||
*/
|
||||
|
||||
#include "PerformanceMonitor.h"
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* Copyright (C) 2016+ AzerothCore <www.azerothcore.org>, released under GNU GPL v2 license, you may redistribute it
|
||||
* and/or modify it under version 2 of the License, or (at your option), any later version.
|
||||
* Copyright (C) 2016+ AzerothCore <www.azerothcore.org>, released under GNU AGPL v3 license, you may redistribute it
|
||||
* and/or modify it under version 3 of the License, or (at your option), any later version.
|
||||
*/
|
||||
|
||||
#ifndef _PLAYERBOT_PERFORMANCEMONITOR_H
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* Copyright (C) 2016+ AzerothCore <www.azerothcore.org>, released under GNU GPL v2 license, you may redistribute it
|
||||
* and/or modify it under version 2 of the License, or (at your option), any later version.
|
||||
* Copyright (C) 2016+ AzerothCore <www.azerothcore.org>, released under GNU AGPL v3 license, you may redistribute it
|
||||
* and/or modify it under version 3 of the License, or (at your option), any later version.
|
||||
*/
|
||||
|
||||
#include "PlaceholderHelper.h"
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* Copyright (C) 2016+ AzerothCore <www.azerothcore.org>, released under GNU GPL v2 license, you may redistribute it
|
||||
* and/or modify it under version 2 of the License, or (at your option), any later version.
|
||||
* Copyright (C) 2016+ AzerothCore <www.azerothcore.org>, released under GNU AGPL v3 license, you may redistribute it
|
||||
* and/or modify it under version 3 of the License, or (at your option), any later version.
|
||||
*/
|
||||
|
||||
#ifndef _PLAYERBOT_PLACEHOLDERHELPER_H
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* Copyright (C) 2016+ AzerothCore <www.azerothcore.org>, released under GNU GPL v2 license, you may redistribute it
|
||||
* and/or modify it under version 2 of the License, or (at your option), any later version.
|
||||
* Copyright (C) 2016+ AzerothCore <www.azerothcore.org>, released under GNU AGPL v3 license, you may redistribute it
|
||||
* and/or modify it under version 3 of the License, or (at your option), any later version.
|
||||
*/
|
||||
|
||||
#include "PlayerbotAI.h"
|
||||
@@ -722,7 +722,8 @@ void PlayerbotAI::HandleTeleportAck()
|
||||
// SetNextCheckDelay(urand(2000, 5000));
|
||||
if (sPlayerbotAIConfig->applyInstanceStrategies)
|
||||
ApplyInstanceStrategies(bot->GetMapId(), true);
|
||||
EvaluateHealerDpsStrategy();
|
||||
if (sPlayerbotAIConfig->restrictHealerDPS)
|
||||
EvaluateHealerDpsStrategy();
|
||||
Reset(true);
|
||||
}
|
||||
|
||||
@@ -1050,7 +1051,7 @@ void PlayerbotAI::HandleBotOutgoingPacket(WorldPacket const& packet)
|
||||
default:
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
if (chanName == "World")
|
||||
return;
|
||||
|
||||
@@ -1512,19 +1513,22 @@ void PlayerbotAI::ApplyInstanceStrategies(uint32 mapId, bool tellMaster)
|
||||
switch (mapId)
|
||||
{
|
||||
case 249:
|
||||
strategyName = "onyxia";
|
||||
strategyName = "onyxia"; // Onyxia's Lair
|
||||
break;
|
||||
case 409:
|
||||
strategyName = "mc";
|
||||
strategyName = "mc"; // Molten Core
|
||||
break;
|
||||
case 469:
|
||||
strategyName = "bwl";
|
||||
strategyName = "bwl"; // Blackwing Lair
|
||||
break;
|
||||
case 509:
|
||||
strategyName = "aq20";
|
||||
strategyName = "aq20"; // Ruins of Ahn'Qiraj
|
||||
break;
|
||||
case 532:
|
||||
strategyName = "karazhan"; // Karazhan
|
||||
break;
|
||||
case 533:
|
||||
strategyName = "naxx";
|
||||
strategyName = "naxx"; // Naxxramas
|
||||
break;
|
||||
case 574:
|
||||
strategyName = "wotlk-uk"; // Utgarde Keep
|
||||
@@ -1765,7 +1769,7 @@ bool PlayerbotAI::IsRangedDps(Player* player, bool bySpec) { return IsRanged(pla
|
||||
|
||||
bool PlayerbotAI::IsHealAssistantOfIndex(Player* player, int index)
|
||||
{
|
||||
Group* group = bot->GetGroup();
|
||||
Group* group = player->GetGroup();
|
||||
if (!group)
|
||||
{
|
||||
return false;
|
||||
@@ -1777,6 +1781,11 @@ bool PlayerbotAI::IsHealAssistantOfIndex(Player* player, int index)
|
||||
{
|
||||
Player* member = ref->GetSource();
|
||||
|
||||
if (!member)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if (IsHeal(member)) // Check if the member is a healer
|
||||
{
|
||||
bool isAssistant = group->IsAssistant(member->GetGUID());
|
||||
@@ -1796,7 +1805,7 @@ bool PlayerbotAI::IsHealAssistantOfIndex(Player* player, int index)
|
||||
|
||||
bool PlayerbotAI::IsRangedDpsAssistantOfIndex(Player* player, int index)
|
||||
{
|
||||
Group* group = bot->GetGroup();
|
||||
Group* group = player->GetGroup();
|
||||
if (!group)
|
||||
{
|
||||
return false;
|
||||
@@ -1808,6 +1817,11 @@ bool PlayerbotAI::IsRangedDpsAssistantOfIndex(Player* player, int index)
|
||||
{
|
||||
Player* member = ref->GetSource();
|
||||
|
||||
if (!member)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if (IsRangedDps(member)) // Check if the member is a ranged DPS
|
||||
{
|
||||
bool isAssistant = group->IsAssistant(member->GetGUID());
|
||||
@@ -1840,6 +1854,35 @@ bool PlayerbotAI::HasAggro(Unit* unit)
|
||||
return false;
|
||||
}
|
||||
|
||||
int32 PlayerbotAI::GetAssistTankIndex(Player* player)
|
||||
{
|
||||
Group* group = player->GetGroup();
|
||||
if (!group)
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
int counter = 0;
|
||||
for (GroupReference* ref = group->GetFirstMember(); ref; ref = ref->next())
|
||||
{
|
||||
Player* member = ref->GetSource();
|
||||
|
||||
if (!member)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if (player == member)
|
||||
{
|
||||
return counter;
|
||||
}
|
||||
if (IsTank(member, true) && group->IsAssistant(member->GetGUID()))
|
||||
{
|
||||
counter++;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
int32 PlayerbotAI::GetGroupSlotIndex(Player* player)
|
||||
{
|
||||
Group* group = bot->GetGroup();
|
||||
@@ -1851,6 +1894,12 @@ int32 PlayerbotAI::GetGroupSlotIndex(Player* player)
|
||||
for (GroupReference* ref = group->GetFirstMember(); ref; ref = ref->next())
|
||||
{
|
||||
Player* member = ref->GetSource();
|
||||
|
||||
if (!member)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if (player == member)
|
||||
{
|
||||
return counter;
|
||||
@@ -1875,6 +1924,12 @@ int32 PlayerbotAI::GetRangedIndex(Player* player)
|
||||
for (GroupReference* ref = group->GetFirstMember(); ref; ref = ref->next())
|
||||
{
|
||||
Player* member = ref->GetSource();
|
||||
|
||||
if (!member)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if (player == member)
|
||||
{
|
||||
return counter;
|
||||
@@ -1902,6 +1957,12 @@ int32 PlayerbotAI::GetClassIndex(Player* player, uint8 cls)
|
||||
for (GroupReference* ref = group->GetFirstMember(); ref; ref = ref->next())
|
||||
{
|
||||
Player* member = ref->GetSource();
|
||||
|
||||
if (!member)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if (player == member)
|
||||
{
|
||||
return counter;
|
||||
@@ -1928,6 +1989,12 @@ int32 PlayerbotAI::GetRangedDpsIndex(Player* player)
|
||||
for (GroupReference* ref = group->GetFirstMember(); ref; ref = ref->next())
|
||||
{
|
||||
Player* member = ref->GetSource();
|
||||
|
||||
if (!member)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if (player == member)
|
||||
{
|
||||
return counter;
|
||||
@@ -1955,6 +2022,12 @@ int32 PlayerbotAI::GetMeleeIndex(Player* player)
|
||||
for (GroupReference* ref = group->GetFirstMember(); ref; ref = ref->next())
|
||||
{
|
||||
Player* member = ref->GetSource();
|
||||
|
||||
if (!member)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if (player == member)
|
||||
{
|
||||
return counter;
|
||||
@@ -2015,7 +2088,7 @@ bool PlayerbotAI::IsHeal(Player* player, bool bySpec)
|
||||
switch (player->getClass())
|
||||
{
|
||||
case CLASS_PRIEST:
|
||||
if (tab == PRIEST_TAB_DISIPLINE || tab == PRIEST_TAB_HOLY)
|
||||
if (tab == PRIEST_TAB_DISCIPLINE || tab == PRIEST_TAB_HOLY)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
@@ -2126,6 +2199,12 @@ bool PlayerbotAI::IsMainTank(Player* player)
|
||||
for (GroupReference* ref = group->GetFirstMember(); ref; ref = ref->next())
|
||||
{
|
||||
Player* member = ref->GetSource();
|
||||
|
||||
if (!member)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if (IsTank(member) && member->IsAlive())
|
||||
{
|
||||
return player->GetGUID() == member->GetGUID();
|
||||
@@ -2134,6 +2213,62 @@ bool PlayerbotAI::IsMainTank(Player* player)
|
||||
return false;
|
||||
}
|
||||
|
||||
bool PlayerbotAI::IsBotMainTank(Player* player)
|
||||
{
|
||||
if (!player->GetSession()->IsBot() || !IsTank(player))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if (IsMainTank(player))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
Group* group = player->GetGroup();
|
||||
if (!group)
|
||||
{
|
||||
return true; // If no group, consider the bot as main tank
|
||||
}
|
||||
|
||||
uint32 botAssistTankIndex = GetAssistTankIndex(player);
|
||||
|
||||
if (botAssistTankIndex == -1)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
for (GroupReference* gref = group->GetFirstMember(); gref; gref = gref->next())
|
||||
{
|
||||
Player* member = gref->GetSource();
|
||||
if (!member)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
uint32 memberAssistTankIndex = GetAssistTankIndex(member);
|
||||
|
||||
if (memberAssistTankIndex == -1)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if (memberAssistTankIndex == botAssistTankIndex && player == member)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
if (memberAssistTankIndex < botAssistTankIndex && member->GetSession()->IsBot())
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
uint32 PlayerbotAI::GetGroupTankNum(Player* player)
|
||||
{
|
||||
Group* group = player->GetGroup();
|
||||
@@ -2145,6 +2280,12 @@ uint32 PlayerbotAI::GetGroupTankNum(Player* player)
|
||||
for (GroupReference* ref = group->GetFirstMember(); ref; ref = ref->next())
|
||||
{
|
||||
Player* member = ref->GetSource();
|
||||
|
||||
if (!member)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if (IsTank(member) && member->IsAlive())
|
||||
{
|
||||
result++;
|
||||
@@ -2157,7 +2298,7 @@ bool PlayerbotAI::IsAssistTank(Player* player) { return IsTank(player) && !IsMai
|
||||
|
||||
bool PlayerbotAI::IsAssistTankOfIndex(Player* player, int index)
|
||||
{
|
||||
Group* group = bot->GetGroup();
|
||||
Group* group = player->GetGroup();
|
||||
if (!group)
|
||||
{
|
||||
return false;
|
||||
@@ -2166,6 +2307,12 @@ bool PlayerbotAI::IsAssistTankOfIndex(Player* player, int index)
|
||||
for (GroupReference* ref = group->GetFirstMember(); ref; ref = ref->next())
|
||||
{
|
||||
Player* member = ref->GetSource();
|
||||
|
||||
if (!member)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if (group->IsAssistant(member->GetGUID()) && IsAssistTank(member))
|
||||
{
|
||||
if (index == counter)
|
||||
@@ -2179,6 +2326,12 @@ bool PlayerbotAI::IsAssistTankOfIndex(Player* player, int index)
|
||||
for (GroupReference* ref = group->GetFirstMember(); ref; ref = ref->next())
|
||||
{
|
||||
Player* member = ref->GetSource();
|
||||
|
||||
if (!member)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if (!group->IsAssistant(member->GetGUID()) && IsAssistTank(member))
|
||||
{
|
||||
if (index == counter)
|
||||
@@ -2386,6 +2539,11 @@ std::vector<Player*> PlayerbotAI::GetPlayersInGroup()
|
||||
{
|
||||
Player* member = ref->GetSource();
|
||||
|
||||
if (!member)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if (GET_PLAYERBOT_AI(member) && !GET_PLAYERBOT_AI(member)->IsRealPlayer())
|
||||
continue;
|
||||
|
||||
@@ -2779,9 +2937,9 @@ bool PlayerbotAI::HasAura(uint32 spellId, Unit const* unit)
|
||||
return unit->HasAura(spellId);
|
||||
// for (uint8 effect = EFFECT_0; effect <= EFFECT_2; effect++)
|
||||
// {
|
||||
// AuraEffect const* aurEff = unit->GetAuraEffect(spellId, effect);
|
||||
// if (IsRealAura(bot, aurEff, unit))
|
||||
// return true;
|
||||
// AuraEffect const* aurEff = unit->GetAuraEffect(spellId, effect);
|
||||
// if (IsRealAura(bot, aurEff, unit))
|
||||
// return true;
|
||||
// }
|
||||
|
||||
// return false;
|
||||
@@ -3970,37 +4128,15 @@ bool IsAlliance(uint8 race)
|
||||
|
||||
bool PlayerbotAI::HasRealPlayerMaster()
|
||||
{
|
||||
// if (master)
|
||||
// {
|
||||
// PlayerbotAI* masterBotAI = GET_PLAYERBOT_AI(master);
|
||||
// return !masterBotAI || masterBotAI->IsRealPlayer();
|
||||
// }
|
||||
//
|
||||
// return false;
|
||||
|
||||
// Removes a long-standing crash (0xC0000005 ACCESS_VIOLATION)
|
||||
/* 1) The "master" pointer can be null if the bot was created
|
||||
without a master player or if the master was just removed. */
|
||||
if (!master)
|
||||
return false;
|
||||
|
||||
/* 2) Is the master player still present in the world?
|
||||
If FindPlayer fails, we invalidate "master" and stop here. */
|
||||
if (!ObjectAccessor::FindPlayer(master->GetGUID()))
|
||||
if (master)
|
||||
{
|
||||
master = nullptr; // avoids repeating the check on the next tick
|
||||
return false;
|
||||
PlayerbotAI* masterBotAI = GET_PLAYERBOT_AI(master);
|
||||
return !masterBotAI || masterBotAI->IsRealPlayer();
|
||||
}
|
||||
|
||||
/* 3) If the master is a bot, we check that it is itself controlled
|
||||
by a real player. Otherwise, it's already a real player → true. */
|
||||
if (PlayerbotAI* masterBotAI = GET_PLAYERBOT_AI(master))
|
||||
return masterBotAI->IsRealPlayer(); // bot controlled by a player?
|
||||
|
||||
return true; // master = real player
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
bool PlayerbotAI::HasActivePlayerMaster() { return master && !GET_PLAYERBOT_AI(master); }
|
||||
|
||||
bool PlayerbotAI::IsAlt() { return HasRealPlayerMaster() && !sRandomPlayerbotMgr->IsRandomBot(bot); }
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* Copyright (C) 2016+ AzerothCore <www.azerothcore.org>, released under GNU GPL v2 license, you may redistribute it
|
||||
* and/or modify it under version 2 of the License, or (at your option), any later version.
|
||||
* Copyright (C) 2016+ AzerothCore <www.azerothcore.org>, released under GNU AGPL v3 license, you may redistribute it
|
||||
* and/or modify it under version 3 of the License, or (at your option), any later version.
|
||||
*/
|
||||
|
||||
#ifndef _PLAYERBOT_PLAYERbotAI_H
|
||||
@@ -276,7 +276,7 @@ enum BotRoles : uint8
|
||||
|
||||
enum HUNTER_TABS
|
||||
{
|
||||
HUNTER_TAB_BEASTMASTER,
|
||||
HUNTER_TAB_BEASTMASTERY,
|
||||
HUNTER_TAB_MARKSMANSHIP,
|
||||
HUNTER_TAB_SURVIVAL,
|
||||
};
|
||||
@@ -285,12 +285,12 @@ enum ROGUE_TABS
|
||||
{
|
||||
ROGUE_TAB_ASSASSINATION,
|
||||
ROGUE_TAB_COMBAT,
|
||||
ROGUE_TAB_SUBTLETY
|
||||
ROGUE_TAB_SUBTLETY,
|
||||
};
|
||||
|
||||
enum PRIEST_TABS
|
||||
{
|
||||
PRIEST_TAB_DISIPLINE,
|
||||
PRIEST_TAB_DISCIPLINE,
|
||||
PRIEST_TAB_HOLY,
|
||||
PRIEST_TAB_SHADOW,
|
||||
};
|
||||
@@ -332,7 +332,7 @@ enum PALADIN_TABS
|
||||
|
||||
enum WARLOCK_TABS
|
||||
{
|
||||
WARLOCK_TAB_AFFLICATION,
|
||||
WARLOCK_TAB_AFFLICTION,
|
||||
WARLOCK_TAB_DEMONOLOGY,
|
||||
WARLOCK_TAB_DESTRUCTION,
|
||||
};
|
||||
@@ -423,13 +423,15 @@ public:
|
||||
static bool IsCaster(Player* player, bool bySpec = false);
|
||||
static bool IsRangedDps(Player* player, bool bySpec = false);
|
||||
static bool IsCombo(Player* player);
|
||||
static bool IsBotMainTank(Player* player);
|
||||
static bool IsMainTank(Player* player);
|
||||
static uint32 GetGroupTankNum(Player* player);
|
||||
bool IsAssistTank(Player* player);
|
||||
bool IsAssistTankOfIndex(Player* player, int index);
|
||||
bool IsHealAssistantOfIndex(Player* player, int index);
|
||||
bool IsRangedDpsAssistantOfIndex(Player* player, int index);
|
||||
static bool IsAssistTank(Player* player);
|
||||
static bool IsAssistTankOfIndex(Player* player, int index);
|
||||
static bool IsHealAssistantOfIndex(Player* player, int index);
|
||||
static bool IsRangedDpsAssistantOfIndex(Player* player, int index);
|
||||
bool HasAggro(Unit* unit);
|
||||
static int32 GetAssistTankIndex(Player* player);
|
||||
int32 GetGroupSlotIndex(Player* player);
|
||||
int32 GetRangedIndex(Player* player);
|
||||
int32 GetClassIndex(Player* player, uint8 cls);
|
||||
@@ -552,7 +554,7 @@ public:
|
||||
bool IsSafe(Player* player);
|
||||
bool IsSafe(WorldObject* obj);
|
||||
ChatChannelSource GetChatChannelSource(Player* bot, uint32 type, std::string channelName);
|
||||
|
||||
|
||||
bool CheckLocationDistanceByLevel(Player* player, const WorldLocation &loc, bool fromStartUp = false);
|
||||
|
||||
bool HasCheat(BotCheatMask mask)
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* Copyright (C) 2016+ AzerothCore <www.azerothcore.org>, released under GNU GPL v2 license, you may redistribute it
|
||||
* and/or modify it under version 2 of the License, or (at your option), any later version.
|
||||
* Copyright (C) 2016+ AzerothCore <www.azerothcore.org>, released under GNU AGPL v3 license, you may redistribute it
|
||||
* and/or modify it under version 3 of the License, or (at your option), any later version.
|
||||
*/
|
||||
|
||||
#ifndef _PLAYERBOT_PLAYERbotAIAWARE_H
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* Copyright (C) 2016+ AzerothCore <www.azerothcore.org>, released under GNU GPL v2 license, you may redistribute it
|
||||
* and/or modify it under version 2 of the License, or (at your option), any later version.
|
||||
* Copyright (C) 2016+ AzerothCore <www.azerothcore.org>, released under GNU AGPL v3 license, you may redistribute it
|
||||
* and/or modify it under version 3 of the License, or (at your option), any later version.
|
||||
*/
|
||||
|
||||
#include "PlayerbotAIBase.h"
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* Copyright (C) 2016+ AzerothCore <www.azerothcore.org>, released under GNU GPL v2 license, you may redistribute it
|
||||
* and/or modify it under version 2 of the License, or (at your option), any later version.
|
||||
* Copyright (C) 2016+ AzerothCore <www.azerothcore.org>, released under GNU AGPL v3 license, you may redistribute it
|
||||
* and/or modify it under version 3 of the License, or (at your option), any later version.
|
||||
*/
|
||||
|
||||
#ifndef _PLAYERBOT_PLAYERBOTAIBASE_H
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* Copyright (C) 2016+ AzerothCore <www.azerothcore.org>, released under GNU GPL v2 license, you may redistribute it
|
||||
* and/or modify it under version 2 of the License, or (at your option), any later version.
|
||||
* Copyright (C) 2016+ AzerothCore <www.azerothcore.org>, released under GNU AGPL v3 license, you may redistribute it
|
||||
* and/or modify it under version 3 of the License, or (at your option), any later version.
|
||||
*/
|
||||
|
||||
#include "PlayerbotAIConfig.h"
|
||||
@@ -81,6 +81,9 @@ bool PlayerbotAIConfig::Initialize()
|
||||
sitDelay = sConfigMgr->GetOption<int32>("AiPlayerbot.SitDelay", 30000);
|
||||
returnDelay = sConfigMgr->GetOption<int32>("AiPlayerbot.ReturnDelay", 7000);
|
||||
lootDelay = sConfigMgr->GetOption<int32>("AiPlayerbot.LootDelay", 1000);
|
||||
// Buff system
|
||||
minBotsForGreaterBuff = sConfigMgr->GetOption<int32>("AiPlayerbot.MinBotsForGreaterBuff", 3);
|
||||
rpWarningCooldown = sConfigMgr->GetOption<int32>("AiPlayerbot.RPWarningCooldown", 30);
|
||||
disabledWithoutRealPlayerLoginDelay = sConfigMgr->GetOption<int32>("AiPlayerbot.DisabledWithoutRealPlayerLoginDelay", 30);
|
||||
disabledWithoutRealPlayerLogoutDelay = sConfigMgr->GetOption<int32>("AiPlayerbot.DisabledWithoutRealPlayerLogoutDelay", 300);
|
||||
|
||||
@@ -139,6 +142,17 @@ bool PlayerbotAIConfig::Initialize()
|
||||
randomBotMapsAsString = sConfigMgr->GetOption<std::string>("AiPlayerbot.RandomBotMaps", "0,1,530,571");
|
||||
LoadList<std::vector<uint32>>(randomBotMapsAsString, randomBotMaps);
|
||||
probTeleToBankers = sConfigMgr->GetOption<float>("AiPlayerbot.ProbTeleToBankers", 0.25f);
|
||||
enableWeightTeleToCityBankers = sConfigMgr->GetOption<bool>("AiPlayerbot.EnableWeightTeleToCityBankers", false);
|
||||
weightTeleToStormwind = sConfigMgr->GetOption<int>("AiPlayerbot.TeleToStormwindWeight", 1);
|
||||
weightTeleToIronforge = sConfigMgr->GetOption<int>("AiPlayerbot.TeleToIronforgeWeight", 1);
|
||||
weightTeleToDarnassus = sConfigMgr->GetOption<int>("AiPlayerbot.TeleToDarnassusWeight", 1);
|
||||
weightTeleToExodar = sConfigMgr->GetOption<int>("AiPlayerbot.TeleToExodarWeight", 1);
|
||||
weightTeleToOrgrimmar = sConfigMgr->GetOption<int>("AiPlayerbot.TeleToOrgrimmarWeight", 1);
|
||||
weightTeleToUndercity = sConfigMgr->GetOption<int>("AiPlayerbot.TeleToUndercityWeight", 1);
|
||||
weightTeleToThunderBluff = sConfigMgr->GetOption<int>("AiPlayerbot.TeleToThunderBluffWeight", 1);
|
||||
weightTeleToSilvermoonCity = sConfigMgr->GetOption<int>("AiPlayerbot.TeleToSilvermoonCityWeight", 1);
|
||||
weightTeleToShattrathCity = sConfigMgr->GetOption<int>("AiPlayerbot.TeleToShattrathCityWeight", 1);
|
||||
weightTeleToDalaran = sConfigMgr->GetOption<int>("AiPlayerbot.TeleToDalaranWeight", 1);
|
||||
LoadList<std::vector<uint32>>(
|
||||
sConfigMgr->GetOption<std::string>("AiPlayerbot.RandomBotQuestItems",
|
||||
"6948,5175,5176,5177,5178,16309,12382,13704,11000"),
|
||||
@@ -150,15 +164,21 @@ bool PlayerbotAIConfig::Initialize()
|
||||
"2255,656,2361,2362,2363,976,35,2268,3425,392,541,1446,3828,3712,3738,3565,"
|
||||
"3539,3623,4152,3988,4658,4284,4418,4436,4275,4323,4395,3703,4298,3951"),
|
||||
pvpProhibitedZoneIds);
|
||||
LoadList<std::vector<uint32>>(sConfigMgr->GetOption<std::string>("AiPlayerbot.PvpProhibitedAreaIds", "976,35"),
|
||||
pvpProhibitedAreaIds);
|
||||
LoadList<std::vector<uint32>>(
|
||||
sConfigMgr->GetOption<std::string>("AiPlayerbot.PvpProhibitedAreaIds",
|
||||
"976,35,392,2268,4161,4010,4317,4312,3649,3887,3958,3724,4080,3938,3754"),
|
||||
pvpProhibitedAreaIds);
|
||||
fastReactInBG = sConfigMgr->GetOption<bool>("AiPlayerbot.FastReactInBG", true);
|
||||
LoadList<std::vector<uint32>>(
|
||||
sConfigMgr->GetOption<std::string>("AiPlayerbot.RandomBotQuestIds", "7848,3802,5505,6502,7761"),
|
||||
sConfigMgr->GetOption<std::string>("AiPlayerbot.RandomBotQuestIds", "7848,3802,5505,6502,7761,10277,10285,11492,13188,13189,24499,24511,24710,24712"),
|
||||
randomBotQuestIds);
|
||||
|
||||
LoadSet<std::set<uint32>>(sConfigMgr->GetOption<std::string>("AiPlayerbot.DisallowedGameObjects", "176213,17155"),
|
||||
disallowedGameObjects);
|
||||
LoadSet<std::set<uint32>>(
|
||||
sConfigMgr->GetOption<std::string>("AiPlayerbot.DisallowedGameObjects",
|
||||
"176213,17155,2656,74448,19020,3719,3658,3705,3706,105579,75293,2857,"
|
||||
"179490,141596,160836,160845,179516,176224,181085,176112,128308,128403,"
|
||||
"165739,165738,175245,175970,176325,176327,123329,2560"),
|
||||
disallowedGameObjects);
|
||||
botAutologin = sConfigMgr->GetOption<bool>("AiPlayerbot.BotAutologin", false);
|
||||
randomBotAutologin = sConfigMgr->GetOption<bool>("AiPlayerbot.RandomBotAutologin", true);
|
||||
minRandomBots = sConfigMgr->GetOption<int32>("AiPlayerbot.MinRandomBots", 50);
|
||||
@@ -198,10 +218,10 @@ bool PlayerbotAIConfig::Initialize()
|
||||
"575,576,578,595,599,600,601,602,604,608,619,632,650,658,668,409,469,509,"
|
||||
"531,532,534,544,548,550,564,565,580,249,533,603,615,616,624,631,649,724"),
|
||||
restrictedHealerDPSMaps);
|
||||
|
||||
//////////////////////////// ICC
|
||||
|
||||
EnableICCBuffs = sConfigMgr->GetOption<bool>("AiPlayerbot.EnableICCBuffs", true);
|
||||
//////////////////////////// ICC
|
||||
|
||||
EnableICCBuffs = sConfigMgr->GetOption<bool>("AiPlayerbot.EnableICCBuffs", true);
|
||||
|
||||
//////////////////////////// CHAT
|
||||
enableBroadcasts = sConfigMgr->GetOption<bool>("AiPlayerbot.EnableBroadcasts", true);
|
||||
@@ -369,7 +389,7 @@ bool PlayerbotAIConfig::Initialize()
|
||||
|
||||
randomChangeMultiplier = sConfigMgr->GetOption<float>("AiPlayerbot.RandomChangeMultiplier", 1.0);
|
||||
|
||||
randomBotCombatStrategies = sConfigMgr->GetOption<std::string>("AiPlayerbot.RandomBotCombatStrategies", "-threat");
|
||||
randomBotCombatStrategies = sConfigMgr->GetOption<std::string>("AiPlayerbot.RandomBotCombatStrategies", "");
|
||||
randomBotNonCombatStrategies = sConfigMgr->GetOption<std::string>("AiPlayerbot.RandomBotNonCombatStrategies", "");
|
||||
combatStrategies = sConfigMgr->GetOption<std::string>("AiPlayerbot.CombatStrategies", "+custom::say");
|
||||
nonCombatStrategies = sConfigMgr->GetOption<std::string>("AiPlayerbot.NonCombatStrategies", "+custom::say,+return");
|
||||
@@ -456,11 +476,13 @@ bool PlayerbotAIConfig::Initialize()
|
||||
}
|
||||
|
||||
botCheats.clear();
|
||||
LoadListString<std::vector<std::string>>(sConfigMgr->GetOption<std::string>("AiPlayerbot.BotCheats", "taxi,raid"),
|
||||
LoadListString<std::vector<std::string>>(sConfigMgr->GetOption<std::string>("AiPlayerbot.BotCheats", "food,taxi,raid"),
|
||||
botCheats);
|
||||
|
||||
botCheatMask = 0;
|
||||
|
||||
if (std::find(botCheats.begin(), botCheats.end(), "food") != botCheats.end())
|
||||
botCheatMask |= (uint32)BotCheatMask::food;
|
||||
if (std::find(botCheats.begin(), botCheats.end(), "taxi") != botCheats.end())
|
||||
botCheatMask |= (uint32)BotCheatMask::taxi;
|
||||
if (std::find(botCheats.begin(), botCheats.end(), "gold") != botCheats.end())
|
||||
@@ -487,6 +509,7 @@ bool PlayerbotAIConfig::Initialize()
|
||||
randomBotAccountCount = sConfigMgr->GetOption<int32>("AiPlayerbot.RandomBotAccountCount", 0);
|
||||
deleteRandomBotAccounts = sConfigMgr->GetOption<bool>("AiPlayerbot.DeleteRandomBotAccounts", false);
|
||||
randomBotGuildCount = sConfigMgr->GetOption<int32>("AiPlayerbot.RandomBotGuildCount", 20);
|
||||
randomBotGuildSizeMax = sConfigMgr->GetOption<int32>("AiPlayerbot.RandomBotGuildSizeMax", 15);
|
||||
deleteRandomBotGuilds = sConfigMgr->GetOption<bool>("AiPlayerbot.DeleteRandomBotGuilds", false);
|
||||
|
||||
guildTaskEnabled = sConfigMgr->GetOption<bool>("AiPlayerbot.EnableGuildTasks", true);
|
||||
@@ -527,6 +550,27 @@ bool PlayerbotAIConfig::Initialize()
|
||||
addClassCommand = sConfigMgr->GetOption<int32>("AiPlayerbot.AddClassCommand", 1);
|
||||
addClassAccountPoolSize = sConfigMgr->GetOption<int32>("AiPlayerbot.AddClassAccountPoolSize", 50);
|
||||
maintenanceCommand = sConfigMgr->GetOption<int32>("AiPlayerbot.MaintenanceCommand", 1);
|
||||
|
||||
altMaintenanceAttunementQs = sConfigMgr->GetOption<bool>("AiPlayerbot.AltMaintenanceAttunementQuests", true);
|
||||
altMaintenanceBags = sConfigMgr->GetOption<bool>("AiPlayerbot.AltMaintenanceBags", true);
|
||||
altMaintenanceAmmo = sConfigMgr->GetOption<bool>("AiPlayerbot.AltMaintenanceAmmo", true);
|
||||
altMaintenanceFood = sConfigMgr->GetOption<bool>("AiPlayerbot.AltMaintenanceFood", true);
|
||||
altMaintenanceReagents = sConfigMgr->GetOption<bool>("AiPlayerbot.AltMaintenanceReagents", true);
|
||||
altMaintenanceConsumables = sConfigMgr->GetOption<bool>("AiPlayerbot.AltMaintenanceConsumables", true);
|
||||
altMaintenancePotions = sConfigMgr->GetOption<bool>("AiPlayerbot.AltMaintenancePotions", true);
|
||||
altMaintenanceTalentTree = sConfigMgr->GetOption<bool>("AiPlayerbot.AltMaintenanceTalentTree", true);
|
||||
altMaintenancePet = sConfigMgr->GetOption<bool>("AiPlayerbot.AltMaintenancePet", true);
|
||||
altMaintenancePetTalents = sConfigMgr->GetOption<bool>("AiPlayerbot.AltMaintenancePetTalents", true);
|
||||
altMaintenanceClassSpells = sConfigMgr->GetOption<bool>("AiPlayerbot.AltMaintenanceClassSpells", true);
|
||||
altMaintenanceAvailableSpells = sConfigMgr->GetOption<bool>("AiPlayerbot.AltMaintenanceAvailableSpells", true);
|
||||
altMaintenanceSkills = sConfigMgr->GetOption<bool>("AiPlayerbot.AltMaintenanceSkills", true);
|
||||
altMaintenanceReputation = sConfigMgr->GetOption<bool>("AiPlayerbot.AltMaintenanceReputation", true);
|
||||
altMaintenanceSpecialSpells = sConfigMgr->GetOption<bool>("AiPlayerbot.AltMaintenanceSpecialSpells", true);
|
||||
altMaintenanceMounts = sConfigMgr->GetOption<bool>("AiPlayerbot.AltMaintenanceMounts", true);
|
||||
altMaintenanceGlyphs = sConfigMgr->GetOption<bool>("AiPlayerbot.AltMaintenanceGlyphs", true);
|
||||
altMaintenanceKeyring = sConfigMgr->GetOption<bool>("AiPlayerbot.AltMaintenanceKeyring", true);
|
||||
altMaintenanceGemsEnchants = sConfigMgr->GetOption<bool>("AiPlayerbot.AltMaintenanceGemsEnchants", true);
|
||||
|
||||
autoGearCommand = sConfigMgr->GetOption<int32>("AiPlayerbot.AutoGearCommand", 1);
|
||||
autoGearCommandAltBots = sConfigMgr->GetOption<int32>("AiPlayerbot.AutoGearCommandAltBots", 1);
|
||||
autoGearQualityLimit = sConfigMgr->GetOption<int32>("AiPlayerbot.AutoGearQualityLimit", 3);
|
||||
@@ -575,6 +619,8 @@ bool PlayerbotAIConfig::Initialize()
|
||||
autoPickTalents = sConfigMgr->GetOption<bool>("AiPlayerbot.AutoPickTalents", true);
|
||||
autoUpgradeEquip = sConfigMgr->GetOption<bool>("AiPlayerbot.AutoUpgradeEquip", false);
|
||||
hunterWolfPet = sConfigMgr->GetOption<int32>("AiPlayerbot.HunterWolfPet", 0);
|
||||
defaultPetStance = sConfigMgr->GetOption<int32>("AiPlayerbot.DefaultPetStance", 1);
|
||||
petChatCommandDebug = sConfigMgr->GetOption<bool>("AiPlayerbot.PetChatCommandDebug", 0);
|
||||
autoLearnTrainerSpells = sConfigMgr->GetOption<bool>("AiPlayerbot.AutoLearnTrainerSpells", true);
|
||||
autoLearnQuestSpells = sConfigMgr->GetOption<bool>("AiPlayerbot.AutoLearnQuestSpells", false);
|
||||
autoTeleportForLevel = sConfigMgr->GetOption<bool>("AiPlayerbot.AutoTeleportForLevel", false);
|
||||
@@ -590,7 +636,6 @@ bool PlayerbotAIConfig::Initialize()
|
||||
RpgStatusProbWeight[RPG_REST] = sConfigMgr->GetOption<int32>("AiPlayerbot.RpgStatusProbWeight.Rest", 5);
|
||||
|
||||
syncLevelWithPlayers = sConfigMgr->GetOption<bool>("AiPlayerbot.SyncLevelWithPlayers", false);
|
||||
freeFood = sConfigMgr->GetOption<bool>("AiPlayerbot.FreeFood", true);
|
||||
randomBotGroupNearby = sConfigMgr->GetOption<bool>("AiPlayerbot.RandomBotGroupNearby", true);
|
||||
|
||||
// arena
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* Copyright (C) 2016+ AzerothCore <www.azerothcore.org>, released under GNU GPL v2 license, you may redistribute it
|
||||
* and/or modify it under version 2 of the License, or (at your option), any later version.
|
||||
* Copyright (C) 2016+ AzerothCore <www.azerothcore.org>, released under GNU AGPL v3 license, you may redistribute it
|
||||
* and/or modify it under version 3 of the License, or (at your option), any later version.
|
||||
*/
|
||||
|
||||
#ifndef _PLAYERBOT_PLAYERbotAICONFIG_H
|
||||
@@ -23,7 +23,8 @@ enum class BotCheatMask : uint32
|
||||
mana = 8,
|
||||
power = 16,
|
||||
raid = 32,
|
||||
maxMask = 64
|
||||
food = 64,
|
||||
maxMask = 128
|
||||
};
|
||||
|
||||
enum class HealingManaEfficiency : uint8
|
||||
@@ -101,6 +102,17 @@ public:
|
||||
bool botAutologin;
|
||||
std::string randomBotMapsAsString;
|
||||
float probTeleToBankers;
|
||||
bool enableWeightTeleToCityBankers;
|
||||
int weightTeleToStormwind;
|
||||
int weightTeleToIronforge;
|
||||
int weightTeleToDarnassus;
|
||||
int weightTeleToExodar;
|
||||
int weightTeleToOrgrimmar;
|
||||
int weightTeleToUndercity;
|
||||
int weightTeleToThunderBluff;
|
||||
int weightTeleToSilvermoonCity;
|
||||
int weightTeleToShattrathCity;
|
||||
int weightTeleToDalaran;
|
||||
std::vector<uint32> randomBotMaps;
|
||||
std::vector<uint32> randomBotQuestItems;
|
||||
std::vector<uint32> randomBotAccounts;
|
||||
@@ -127,6 +139,12 @@ public:
|
||||
uint32 disabledWithoutRealPlayerLoginDelay, disabledWithoutRealPlayerLogoutDelay;
|
||||
bool randomBotJoinLfg;
|
||||
|
||||
// Buff system
|
||||
// Min group size to use Greater buffs (Paladin, Mage, Druid). Default: 3
|
||||
int32 minBotsForGreaterBuff;
|
||||
// Cooldown (seconds) between reagent-missing RP warnings, per bot & per buff. Default: 30
|
||||
int32 rpWarningCooldown;
|
||||
|
||||
// chat
|
||||
bool randomBotTalk;
|
||||
bool randomBotEmote;
|
||||
@@ -249,7 +267,7 @@ public:
|
||||
uint32 randomBotAccountCount;
|
||||
bool randomBotRandomPassword;
|
||||
bool deleteRandomBotAccounts;
|
||||
uint32 randomBotGuildCount;
|
||||
uint32 randomBotGuildCount, randomBotGuildSizeMax;
|
||||
bool deleteRandomBotGuilds;
|
||||
std::vector<uint32> randomBotGuilds;
|
||||
std::vector<uint32> pvpProhibitedZoneIds;
|
||||
@@ -333,12 +351,13 @@ public:
|
||||
bool autoPickTalents;
|
||||
bool autoUpgradeEquip;
|
||||
int32 hunterWolfPet;
|
||||
int32 defaultPetStance;
|
||||
int32 petChatCommandDebug;
|
||||
bool autoLearnTrainerSpells;
|
||||
bool autoDoQuests;
|
||||
bool enableNewRpgStrategy;
|
||||
std::unordered_map<NewRpgStatus, uint32> RpgStatusProbWeight;
|
||||
bool syncLevelWithPlayers;
|
||||
bool freeFood;
|
||||
bool autoLearnQuestSpells;
|
||||
bool autoTeleportForLevel;
|
||||
bool randomBotGroupNearby;
|
||||
@@ -372,6 +391,25 @@ public:
|
||||
int32 addClassCommand;
|
||||
int32 addClassAccountPoolSize;
|
||||
int32 maintenanceCommand;
|
||||
bool altMaintenanceAttunementQs,
|
||||
altMaintenanceBags,
|
||||
altMaintenanceAmmo,
|
||||
altMaintenanceFood,
|
||||
altMaintenanceReagents,
|
||||
altMaintenanceConsumables,
|
||||
altMaintenancePotions,
|
||||
altMaintenanceTalentTree,
|
||||
altMaintenancePet,
|
||||
altMaintenancePetTalents,
|
||||
altMaintenanceClassSpells,
|
||||
altMaintenanceAvailableSpells,
|
||||
altMaintenanceSkills,
|
||||
altMaintenanceReputation,
|
||||
altMaintenanceSpecialSpells,
|
||||
altMaintenanceMounts,
|
||||
altMaintenanceGlyphs,
|
||||
altMaintenanceKeyring,
|
||||
altMaintenanceGemsEnchants;
|
||||
int32 autoGearCommand, autoGearCommandAltBots, autoGearQualityLimit, autoGearScoreLimit;
|
||||
|
||||
uint32 useGroundMountAtMinLevel;
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* Copyright (C) 2016+ AzerothCore <www.azerothcore.org>, released under GNU GPL v2 license, you may redistribute it
|
||||
* and/or modify it under version 2 of the License, or (at your option), any later version.
|
||||
* Copyright (C) 2016+ AzerothCore <www.azerothcore.org>, released under GNU AGPL v3 license, you may redistribute it
|
||||
* and/or modify it under version 3 of the License, or (at your option), any later version.
|
||||
*/
|
||||
|
||||
#include "PlayerbotCommandServer.h"
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* Copyright (C) 2016+ AzerothCore <www.azerothcore.org>, released under GNU GPL v2 license, you may redistribute it
|
||||
* and/or modify it under version 2 of the License, or (at your option), any later version.
|
||||
* Copyright (C) 2016+ AzerothCore <www.azerothcore.org>, released under GNU AGPL v3 license, you may redistribute it
|
||||
* and/or modify it under version 3 of the License, or (at your option), any later version.
|
||||
*/
|
||||
|
||||
#ifndef _PLAYERBOT_PLAYERBOTCOMMANDSERVER_H
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* Copyright (C) 2016+ AzerothCore <www.azerothcore.org>, released under GNU GPL v2 license, you may redistribute it
|
||||
* and/or modify it under version 2 of the License, or (at your option), any later version.
|
||||
* Copyright (C) 2016+ AzerothCore <www.azerothcore.org>, released under GNU AGPL v3 license, you may redistribute it
|
||||
* and/or modify it under version 3 of the License, or (at your option), any later version.
|
||||
*/
|
||||
|
||||
#include "PlayerbotDbStore.h"
|
||||
@@ -82,7 +82,7 @@ void PlayerbotDbStore::Reset(PlayerbotAI* botAI)
|
||||
{
|
||||
ObjectGuid::LowType guid = botAI->GetBot()->GetGUID().GetCounter();
|
||||
|
||||
PlayerbotsDatabasePreparedStatement* stmt = PlayerbotsDatabase.GetPreparedStatement(PLAYERBOTS_DEL_CUSTOM_STRATEGY);
|
||||
PlayerbotsDatabasePreparedStatement* stmt = PlayerbotsDatabase.GetPreparedStatement(PLAYERBOTS_DEL_DB_STORE);
|
||||
stmt->SetData(0, guid);
|
||||
PlayerbotsDatabase.Execute(stmt);
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* Copyright (C) 2016+ AzerothCore <www.azerothcore.org>, released under GNU GPL v2 license, you may redistribute it
|
||||
* and/or modify it under version 2 of the License, or (at your option), any later version.
|
||||
* Copyright (C) 2016+ AzerothCore <www.azerothcore.org>, released under GNU AGPL v3 license, you may redistribute it
|
||||
* and/or modify it under version 3 of the License, or (at your option), any later version.
|
||||
*/
|
||||
|
||||
#ifndef _PLAYERBOT_PLAYERBOTDBSTORE_H
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* Copyright (C) 2016+ AzerothCore <www.azerothcore.org>, released under GNU GPL v2 license, you may redistribute it
|
||||
* and/or modify it under version 2 of the License, or (at your option), any later version.
|
||||
* Copyright (C) 2016+ AzerothCore <www.azerothcore.org>, released under GNU AGPL v3 license, you may redistribute it
|
||||
* and/or modify it under version 3 of the License, or (at your option), any later version.
|
||||
*/
|
||||
|
||||
#include "PlayerbotDungeonSuggestionMgr.h"
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* Copyright (C) 2016+ AzerothCore <www.azerothcore.org>, released under GNU GPL v2 license, you may redistribute it
|
||||
* and/or modify it under version 2 of the License, or (at your option), any later version.
|
||||
* Copyright (C) 2016+ AzerothCore <www.azerothcore.org>, released under GNU AGPL v3 license, you may redistribute it
|
||||
* and/or modify it under version 3 of the License, or (at your option), any later version.
|
||||
*/
|
||||
|
||||
#ifndef _PLAYERBOT_PLAYERBOTDUNGEONSUGGESTIONMGR_H
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* Copyright (C) 2016+ AzerothCore <www.azerothcore.org>, released under GNU GPL v2 license, you may redistribute it
|
||||
* and/or modify it under version 2 of the License, or (at your option), any later version.
|
||||
* Copyright (C) 2016+ AzerothCore <www.azerothcore.org>, released under GNU AGPL v3 license, you may redistribute it
|
||||
* and/or modify it under version 3 of the License, or (at your option), any later version.
|
||||
*/
|
||||
|
||||
#include "PlayerbotMgr.h"
|
||||
@@ -38,8 +38,6 @@
|
||||
#include "WorldSessionMgr.h"
|
||||
#include "DatabaseEnv.h" // Added for gender choice
|
||||
#include <algorithm> // Added for gender choice
|
||||
#include "Log.h" // removes a long-standing crash (0xC0000005 ACCESS_VIOLATION)
|
||||
#include <shared_mutex> // removes a long-standing crash (0xC0000005 ACCESS_VIOLATION)
|
||||
|
||||
class BotInitGuard
|
||||
{
|
||||
@@ -477,7 +475,7 @@ void PlayerbotHolder::OnBotLogin(Player* const bot)
|
||||
}
|
||||
|
||||
Player* master = botAI->GetMaster();
|
||||
if (master)
|
||||
if (master)
|
||||
{
|
||||
ObjectGuid masterGuid = master->GetGUID();
|
||||
if (master->GetGroup() && !master->GetGroup()->IsLeader(masterGuid))
|
||||
@@ -501,7 +499,7 @@ void PlayerbotHolder::OnBotLogin(Player* const bot)
|
||||
}
|
||||
}
|
||||
|
||||
// Don't disband alt groups when master goes away
|
||||
// Don't disband alt groups when master goes away
|
||||
// Controlled by config
|
||||
if (sPlayerbotAIConfig->KeepAltsInGroup())
|
||||
{
|
||||
@@ -1132,18 +1130,18 @@ std::vector<std::string> PlayerbotHolder::HandlePlayerbotCommand(char const* arg
|
||||
int8 gender = -1; // -1 = gender will be random
|
||||
if (genderArg)
|
||||
{
|
||||
std::string g = genderArg;
|
||||
std::transform(g.begin(), g.end(), g.begin(), ::tolower);
|
||||
|
||||
if (g == "male" || g == "0")
|
||||
gender = GENDER_MALE; // 0
|
||||
else if (g == "female" || g == "1")
|
||||
gender = GENDER_FEMALE; // 1
|
||||
else
|
||||
{
|
||||
messages.push_back("Unknown gender : " + g + " (male/female/0/1)");
|
||||
return messages;
|
||||
}
|
||||
std::string g = genderArg;
|
||||
std::transform(g.begin(), g.end(), g.begin(), ::tolower);
|
||||
|
||||
if (g == "male" || g == "0")
|
||||
gender = GENDER_MALE; // 0
|
||||
else if (g == "female" || g == "1")
|
||||
gender = GENDER_FEMALE; // 1
|
||||
else
|
||||
{
|
||||
messages.push_back("Unknown gender : " + g + " (male/female/0/1)");
|
||||
return messages;
|
||||
}
|
||||
} //end
|
||||
|
||||
if (claz == 6 && master->GetLevel() < sWorld->getIntConfig(CONFIG_START_HEROIC_PLAYER_LEVEL))
|
||||
@@ -1157,7 +1155,7 @@ std::vector<std::string> PlayerbotHolder::HandlePlayerbotCommand(char const* arg
|
||||
{
|
||||
// If the user requested a specific gender, skip any character that doesn't match.
|
||||
if (gender != -1 && GetOfflinePlayerGender(guid) != gender)
|
||||
continue;
|
||||
continue;
|
||||
if (botLoading.find(guid) != botLoading.end())
|
||||
continue;
|
||||
if (ObjectAccessor::FindConnectedPlayer(guid))
|
||||
@@ -1728,70 +1726,21 @@ void PlayerbotsMgr::RemovePlayerBotData(ObjectGuid const& guid, bool is_AI)
|
||||
|
||||
PlayerbotAI* PlayerbotsMgr::GetPlayerbotAI(Player* player)
|
||||
{
|
||||
// if (!(sPlayerbotAIConfig->enabled) || !player)
|
||||
// {
|
||||
if (!(sPlayerbotAIConfig->enabled) || !player)
|
||||
{
|
||||
return nullptr;
|
||||
}
|
||||
// if (player->GetSession()->isLogingOut() || player->IsDuringRemoveFromWorld()) {
|
||||
// return nullptr;
|
||||
// }
|
||||
// // if (player->GetSession()->isLogingOut() || player->IsDuringRemoveFromWorld()) {
|
||||
// // return nullptr;
|
||||
// // }
|
||||
// auto itr = _playerbotsAIMap.find(player->GetGUID());
|
||||
// if (itr != _playerbotsAIMap.end())
|
||||
// {
|
||||
// if (itr->second->IsBotAI())
|
||||
// return reinterpret_cast<PlayerbotAI*>(itr->second);
|
||||
// }
|
||||
//
|
||||
// return nullptr;
|
||||
|
||||
// removes a long-standing crash (0xC0000005 ACCESS_VIOLATION)
|
||||
if (!player || !sPlayerbotAIConfig->enabled)
|
||||
return nullptr;
|
||||
|
||||
// First read the GUID into a local variable, but ONLY after the check!
|
||||
ObjectGuid guid = player->GetGUID(); // <-- OK here, we know that player != nullptr
|
||||
{
|
||||
std::shared_lock rlock(_aiMutex);
|
||||
auto it = _playerbotsAIMap.find(guid);
|
||||
if (it != _playerbotsAIMap.end() && it->second->IsBotAI())
|
||||
return static_cast<PlayerbotAI*>(it->second);
|
||||
}
|
||||
|
||||
// Transient state: NEVER break the master ⇄ bots relationship here.
|
||||
if (!ObjectAccessor::FindPlayer(guid))
|
||||
auto itr = _playerbotsAIMap.find(player->GetGUID());
|
||||
if (itr != _playerbotsAIMap.end())
|
||||
{
|
||||
RemovePlayerbotAI(guid, /*removeMgrEntry=*/false);
|
||||
}
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
// removes a long-standing crash (0xC0000005 ACCESS_VIOLATION)
|
||||
PlayerbotAI* PlayerbotsMgr::GetPlayerbotAIByGuid(ObjectGuid guid)
|
||||
{
|
||||
if (!sPlayerbotAIConfig->enabled)
|
||||
return nullptr;
|
||||
|
||||
std::shared_lock rlock(_aiMutex);
|
||||
auto it = _playerbotsAIMap.find(guid);
|
||||
if (it != _playerbotsAIMap.end() && it->second->IsBotAI())
|
||||
return static_cast<PlayerbotAI*>(it->second);
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
void PlayerbotsMgr::RemovePlayerbotAI(ObjectGuid const& guid, bool removeMgrEntry /*= true*/)
|
||||
{
|
||||
std::unique_lock wlock(_aiMutex);
|
||||
|
||||
if (auto it = _playerbotsAIMap.find(guid); it != _playerbotsAIMap.end())
|
||||
{
|
||||
delete it->second;
|
||||
_playerbotsAIMap.erase(it);
|
||||
LOG_DEBUG("playerbots", "Removed stale AI for GUID {}",
|
||||
static_cast<uint64>(guid.GetRawValue()));
|
||||
if (itr->second->IsBotAI())
|
||||
return reinterpret_cast<PlayerbotAI*>(itr->second);
|
||||
}
|
||||
|
||||
if (removeMgrEntry)
|
||||
_playerbotsMgrMap.erase(guid); // we NO longer touch the relation in a "soft" purge
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
PlayerbotMgr* PlayerbotsMgr::GetPlayerbotMgr(Player* player)
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* Copyright (C) 2016+ AzerothCore <www.azerothcore.org>, released under GNU GPL v2 license, you may redistribute it
|
||||
* and/or modify it under version 2 of the License, or (at your option), any later version.
|
||||
* Copyright (C) 2016+ AzerothCore <www.azerothcore.org>, released under GNU AGPL v3 license, you may redistribute it
|
||||
* and/or modify it under version 3 of the License, or (at your option), any later version.
|
||||
*/
|
||||
|
||||
#ifndef _PLAYERBOT_PLAYERBOTMGR_H
|
||||
@@ -12,7 +12,6 @@
|
||||
#include "PlayerbotAIBase.h"
|
||||
#include "QueryHolder.h"
|
||||
#include "QueryResult.h"
|
||||
#include <shared_mutex> // removes a long-standing crash (0xC0000005 ACCESS_VIOLATION)
|
||||
|
||||
class ChatHandler;
|
||||
class PlayerbotAI;
|
||||
@@ -115,38 +114,13 @@ public:
|
||||
void RemovePlayerBotData(ObjectGuid const& guid, bool is_AI);
|
||||
|
||||
PlayerbotAI* GetPlayerbotAI(Player* player);
|
||||
PlayerbotAI* GetPlayerbotAIByGuid(ObjectGuid guid); // removes a long-standing crash (0xC0000005 ACCESS_VIOLATION)
|
||||
// void RemovePlayerbotAI(ObjectGuid const& guid); // removes a long-standing crash (0xC0000005 ACCESS_VIOLATION)
|
||||
// removeMgrEntry = true => "hard" purge (AI + manager relation), for real logouts
|
||||
// removeMgrEntry = false => "soft" purge (AI only), for detected "stale" cases
|
||||
void RemovePlayerbotAI(ObjectGuid const& guid, bool removeMgrEntry = true);
|
||||
PlayerbotMgr* GetPlayerbotMgr(Player* player);
|
||||
|
||||
private:
|
||||
std::unordered_map<ObjectGuid, PlayerbotAIBase*> _playerbotsAIMap;
|
||||
std::unordered_map<ObjectGuid, PlayerbotAIBase*> _playerbotsMgrMap;
|
||||
mutable std::shared_mutex _aiMutex; // removes a long-standing crash (0xC0000005 ACCESS_VIOLATION)
|
||||
};
|
||||
|
||||
#define sPlayerbotsMgr PlayerbotsMgr::instance()
|
||||
|
||||
// Temporary addition If it keeps crashing, we will use them.
|
||||
// Like
|
||||
// BEFORE : PlayerbotAI* botAI = GET_PLAYERBOT_AI(bot);
|
||||
// AFTER (safe) : PlayerbotAI* botAI = GET_PLAYERBOT_AI_SAFE(bot);
|
||||
// BEFORE : if (PlayerbotAI* botAI = GET_PLAYERBOT_AI(player)) { ... }
|
||||
// AFTER (safe) : if (PlayerbotAI* botAI = GET_PLAYERBOT_AI_SAFE(player)) { ... }
|
||||
// --- SAFE helpers (append to PlayerbotMgr.h) ---
|
||||
inline PlayerbotAI* GET_PLAYERBOT_AI_SAFE(Player* p)
|
||||
{
|
||||
// Avoid any dereference during transient states (nullptr, teleport, flight, etc.)
|
||||
return p ? sPlayerbotsMgr->GetPlayerbotAI(p) : nullptr;
|
||||
}
|
||||
|
||||
inline PlayerbotMgr* GET_PLAYERBOT_MGR_SAFE(Player* p)
|
||||
{
|
||||
return p ? sPlayerbotsMgr->GetPlayerbotMgr(p) : nullptr;
|
||||
}
|
||||
// --- end SAFE helpers ---
|
||||
|
||||
#endif
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* Copyright (C) 2016+ AzerothCore <www.azerothcore.org>, released under GNU GPL v2 license, you may redistribute it
|
||||
* and/or modify it under version 2 of the License, or (at your option), any later version.
|
||||
* Copyright (C) 2016+ AzerothCore <www.azerothcore.org>, released under GNU AGPL v3 license, you may redistribute it
|
||||
* and/or modify it under version 3 of the License, or (at your option), any later version.
|
||||
*/
|
||||
|
||||
#include "PlayerbotSecurity.h"
|
||||
@@ -164,7 +164,7 @@ PlayerbotSecurityLevel PlayerbotSecurity::LevelFor(Player* from, DenyReason* rea
|
||||
|
||||
if (reason)
|
||||
*reason = PLAYERBOT_DENY_INVITE;
|
||||
|
||||
|
||||
return PLAYERBOT_SECURITY_INVITE;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* Copyright (C) 2016+ AzerothCore <www.azerothcore.org>, released under GNU GPL v2 license, you may redistribute it
|
||||
* and/or modify it under version 2 of the License, or (at your option), any later version.
|
||||
* Copyright (C) 2016+ AzerothCore <www.azerothcore.org>, released under GNU AGPL v3 license, you may redistribute it
|
||||
* and/or modify it under version 3 of the License, or (at your option), any later version.
|
||||
*/
|
||||
|
||||
#ifndef _PLAYERBOT_PLAYERBOTSECURITY_H
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* Copyright (C) 2016+ AzerothCore <www.azerothcore.org>, released under GNU GPL v2 license, you may redistribute it
|
||||
* and/or modify it under version 2 of the License, or (at your option), any later version.
|
||||
* Copyright (C) 2016+ AzerothCore <www.azerothcore.org>, released under GNU AGPL v3 license, you may redistribute it
|
||||
* and/or modify it under version 3 of the License, or (at your option), any later version.
|
||||
*/
|
||||
|
||||
#include "PlayerbotTextMgr.h"
|
||||
@@ -101,6 +101,22 @@ std::string PlayerbotTextMgr::GetBotText(std::string name, std::map<std::string,
|
||||
return botText;
|
||||
}
|
||||
|
||||
std::string PlayerbotTextMgr::GetBotTextOrDefault(std::string name, std::string defaultText,
|
||||
std::map<std::string, std::string> placeholders)
|
||||
{
|
||||
std::string botText = GetBotText(name, placeholders);
|
||||
if (botText.empty())
|
||||
{
|
||||
for (std::map<std::string, std::string>::iterator i = placeholders.begin(); i != placeholders.end(); ++i)
|
||||
{
|
||||
replaceAll(defaultText, i->first, i->second);
|
||||
}
|
||||
return defaultText;
|
||||
}
|
||||
|
||||
return botText;
|
||||
}
|
||||
|
||||
// chat replies
|
||||
|
||||
std::string PlayerbotTextMgr::GetBotText(ChatReplyType replyType, std::map<std::string, std::string> placeholders)
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* Copyright (C) 2016+ AzerothCore <www.azerothcore.org>, released under GNU GPL v2 license, you may redistribute it
|
||||
* and/or modify it under version 2 of the License, or (at your option), any later version.
|
||||
* Copyright (C) 2016+ AzerothCore <www.azerothcore.org>, released under GNU AGPL v3 license, you may redistribute it
|
||||
* and/or modify it under version 3 of the License, or (at your option), any later version.
|
||||
*/
|
||||
|
||||
#ifndef _PLAYERBOT_PLAYERBOTTEXTMGR_H
|
||||
@@ -83,6 +83,8 @@ public:
|
||||
std::string GetBotText(ChatReplyType replyType, std::string name);
|
||||
bool GetBotText(std::string name, std::string& text);
|
||||
bool GetBotText(std::string name, std::string& text, std::map<std::string, std::string> placeholders);
|
||||
std::string GetBotTextOrDefault(std::string name, std::string defaultText,
|
||||
std::map<std::string, std::string> placeholders);
|
||||
void LoadBotTexts();
|
||||
void LoadBotTextChance();
|
||||
static void replaceAll(std::string& str, const std::string& from, const std::string& to);
|
||||
|
||||
@@ -115,7 +115,7 @@ public:
|
||||
roundedTime = roundedTime.substr(0, roundedTime.find('.') + 2);
|
||||
|
||||
ChatHandler(player->GetSession()).SendSysMessage(
|
||||
"|cff00ff00Playerbots:|r bot initialization at server startup takes about '"
|
||||
"|cff00ff00Playerbots:|r bot initialization at server startup takes about '"
|
||||
+ roundedTime + "' minutes.");
|
||||
}
|
||||
}
|
||||
@@ -217,16 +217,20 @@ public:
|
||||
if (!player->GetSession()->IsBot() || !sRandomPlayerbotMgr->IsRandomBot(player))
|
||||
return;
|
||||
|
||||
// no XP multiplier, when bot has group where leader is a real player.
|
||||
// no XP multiplier, when bot is in a group with a real player.
|
||||
if (Group* group = player->GetGroup())
|
||||
{
|
||||
Player* leader = group->GetLeader();
|
||||
if (leader && leader != player)
|
||||
for (GroupReference* gref = group->GetFirstMember(); gref; gref = gref->next())
|
||||
{
|
||||
if (PlayerbotAI* leaderBotAI = GET_PLAYERBOT_AI(leader))
|
||||
Player* member = gref->GetSource();
|
||||
if (!member)
|
||||
{
|
||||
if (leaderBotAI->HasRealPlayerMaster())
|
||||
return;
|
||||
continue;
|
||||
}
|
||||
|
||||
if (!member->GetSession()->IsBot())
|
||||
{
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -295,7 +299,7 @@ public:
|
||||
LOG_INFO("server.loading", "╚══════════════════════════════════════════════════════════╝");
|
||||
|
||||
uint32 oldMSTime = getMSTime();
|
||||
|
||||
|
||||
LOG_INFO("server.loading", " ");
|
||||
LOG_INFO("server.loading", "Load Playerbots Config...");
|
||||
|
||||
@@ -377,10 +381,6 @@ public:
|
||||
|
||||
void OnPlayerbotLogout(Player* player) override
|
||||
{
|
||||
// immediate purge of the bot's AI upon disconnection
|
||||
if (player && player->GetSession()->IsBot())
|
||||
sPlayerbotsMgr->RemovePlayerbotAI(player->GetGUID()); // removes a long-standing crash (0xC0000005 ACCESS_VIOLATION)
|
||||
|
||||
if (PlayerbotMgr* playerbotMgr = GET_PLAYERBOT_MGR(player))
|
||||
{
|
||||
PlayerbotAI* botAI = GET_PLAYERBOT_AI(player);
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* Copyright (C) 2016+ AzerothCore <www.azerothcore.org>, released under GNU GPL v2 license, you may redistribute it
|
||||
* and/or modify it under version 2 of the License, or (at your option), any later version.
|
||||
* Copyright (C) 2016+ AzerothCore <www.azerothcore.org>, released under GNU AGPL v3 license, you may redistribute it
|
||||
* and/or modify it under version 3 of the License, or (at your option), any later version.
|
||||
*/
|
||||
|
||||
#ifndef _PLAYERBOT_H
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* Copyright (C) 2016+ AzerothCore <www.azerothcore.org>, released under GNU GPL v2 license, you may redistribute it
|
||||
* and/or modify it under version 2 of the License, or (at your option), any later version.
|
||||
* Copyright (C) 2016+ AzerothCore <www.azerothcore.org>, released under GNU AGPL v3 license, you may redistribute it
|
||||
* and/or modify it under version 3 of the License, or (at your option), any later version.
|
||||
*/
|
||||
|
||||
#include "RandomItemMgr.h"
|
||||
@@ -2360,7 +2360,7 @@ void RandomItemMgr::BuildPotionCache()
|
||||
(proto->SubClass != ITEM_SUBCLASS_POTION && proto->SubClass != ITEM_SUBCLASS_FLASK) ||
|
||||
proto->Bonding != NO_BIND)
|
||||
continue;
|
||||
|
||||
|
||||
uint32 requiredLevel = proto->RequiredLevel;
|
||||
if (requiredLevel > level || (level > 13 && requiredLevel < level - 13))
|
||||
continue;
|
||||
@@ -2374,10 +2374,10 @@ void RandomItemMgr::BuildPotionCache()
|
||||
if (proto->Duration & 0x80000000)
|
||||
continue;
|
||||
|
||||
|
||||
|
||||
if (proto->AllowableClass != -1)
|
||||
continue;
|
||||
|
||||
|
||||
bool hybrid = false;
|
||||
SpellInfo const* spellInfo = sSpellMgr->GetSpellInfo(proto->Spells[0].SpellId);
|
||||
if (!spellInfo)
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* Copyright (C) 2016+ AzerothCore <www.azerothcore.org>, released under GNU GPL v2 license, you may redistribute it
|
||||
* and/or modify it under version 2 of the License, or (at your option), any later version.
|
||||
* Copyright (C) 2016+ AzerothCore <www.azerothcore.org>, released under GNU AGPL v3 license, you may redistribute it
|
||||
* and/or modify it under version 3 of the License, or (at your option), any later version.
|
||||
*/
|
||||
|
||||
#ifndef _PLAYERBOT_RANDOMITEMMGR_H
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* Copyright (C) 2016+ AzerothCore <www.azerothcore.org>, released under GNU GPL v2 license, you may redistribute it
|
||||
* and/or modify it under version 2 of the License, or (at your option), any later version.
|
||||
* Copyright (C) 2016+ AzerothCore <www.azerothcore.org>, released under GNU AGPL v3 license, you may redistribute it
|
||||
* and/or modify it under version 3 of the License, or (at your option), any later version.
|
||||
*/
|
||||
|
||||
#include "RandomPlayerbotFactory.h"
|
||||
@@ -15,6 +15,9 @@
|
||||
#include "SharedDefines.h"
|
||||
#include "SocialMgr.h"
|
||||
#include "Timer.h"
|
||||
#include "Guild.h" // EmblemInfo::SaveToDB
|
||||
#include "Log.h"
|
||||
#include "GuildMgr.h"
|
||||
|
||||
std::map<uint8, std::vector<uint8>> RandomPlayerbotFactory::availableRaces;
|
||||
|
||||
@@ -890,7 +893,9 @@ void RandomPlayerbotFactory::CreateRandomGuilds()
|
||||
}
|
||||
}
|
||||
|
||||
for (; guildNumber < sPlayerbotAIConfig->randomBotGuildCount; ++guildNumber)
|
||||
// Create up to randomBotGuildCount by counting only EFFECTIVE creations
|
||||
uint32 createdThisRun = 0;
|
||||
for (; guildNumber < sPlayerbotAIConfig->randomBotGuildCount; /* ++guildNumber -> done only if creation */)
|
||||
{
|
||||
std::string const guildName = CreateRandomGuildName();
|
||||
if (guildName.empty())
|
||||
@@ -902,21 +907,29 @@ void RandomPlayerbotFactory::CreateRandomGuilds()
|
||||
if (availableLeaders.empty())
|
||||
{
|
||||
LOG_ERROR("playerbots", "No leaders for random guilds available");
|
||||
continue;
|
||||
break; // no more leaders: we can no longer progress without distorting the counter
|
||||
}
|
||||
|
||||
uint32 index = urand(0, availableLeaders.size() - 1);
|
||||
ObjectGuid leader = availableLeaders[index];
|
||||
availableLeaders.erase(availableLeaders.begin() + index); // Removes the chosen leader to avoid re-selecting it repeatedly
|
||||
|
||||
Player* player = ObjectAccessor::FindPlayer(leader);
|
||||
if (!player)
|
||||
{
|
||||
LOG_ERROR("playerbots", "ObjectAccessor Cannot find player to set leader for guild {} . Skipped...",
|
||||
guildName.c_str());
|
||||
// we will try with other leaders in the next round (guildNumber is not incremented)
|
||||
continue;
|
||||
}
|
||||
|
||||
if (player->GetGuildId())
|
||||
{
|
||||
// leader already in guild -> we don't advance the counter, we move on to the next one
|
||||
continue;
|
||||
}
|
||||
|
||||
LOG_DEBUG("playerbots", "Creating guild name='{}' leader='{}'...", guildName.c_str(), player->GetName().c_str());
|
||||
|
||||
Guild* guild = new Guild();
|
||||
if (!guild->Create(player, guildName))
|
||||
@@ -929,6 +942,8 @@ void RandomPlayerbotFactory::CreateRandomGuilds()
|
||||
|
||||
sGuildMgr->AddGuild(guild);
|
||||
|
||||
LOG_DEBUG("playerbots", "Guild created: id={} name='{}'", guild->GetId(), guildName.c_str());
|
||||
|
||||
// create random emblem
|
||||
uint32 st, cl, br, bc, bg;
|
||||
bg = urand(0, 51);
|
||||
@@ -936,13 +951,38 @@ void RandomPlayerbotFactory::CreateRandomGuilds()
|
||||
cl = urand(0, 17);
|
||||
br = urand(0, 7);
|
||||
st = urand(0, 180);
|
||||
EmblemInfo emblemInfo(st, cl, br, bc, bg);
|
||||
guild->HandleSetEmblem(emblemInfo);
|
||||
|
||||
LOG_DEBUG("playerbots",
|
||||
"[TABARD] new guild id={} random -> style={}, color={}, borderStyle={}, borderColor={}, bgColor={}",
|
||||
guild->GetId(), st, cl, br, bc, bg);
|
||||
|
||||
// populate guild table with a random tabard design
|
||||
CharacterDatabase.Execute(
|
||||
"UPDATE guild SET EmblemStyle={}, EmblemColor={}, BorderStyle={}, BorderColor={}, BackgroundColor={} "
|
||||
"WHERE guildid={}",
|
||||
st, cl, br, bc, bg, guild->GetId());
|
||||
LOG_DEBUG("playerbots", "[TABARD] UPDATE done for guild id={}", guild->GetId());
|
||||
|
||||
// Immediate reading for log
|
||||
if (QueryResult qr = CharacterDatabase.Query(
|
||||
"SELECT EmblemStyle,EmblemColor,BorderStyle,BorderColor,BackgroundColor FROM guild WHERE guildid={}",
|
||||
guild->GetId()))
|
||||
{
|
||||
Field* f = qr->Fetch();
|
||||
LOG_DEBUG("playerbots",
|
||||
"[TABARD] DB check guild id={} => style={}, color={}, borderStyle={}, borderColor={}, bgColor={}",
|
||||
guild->GetId(), f[0].Get<uint8>(), f[1].Get<uint8>(), f[2].Get<uint8>(), f[3].Get<uint8>(), f[4].Get<uint8>());
|
||||
}
|
||||
|
||||
sPlayerbotAIConfig->randomBotGuilds.push_back(guild->GetId());
|
||||
// The guild is only counted if it is actually created
|
||||
++guildNumber;
|
||||
++createdThisRun;
|
||||
}
|
||||
|
||||
LOG_INFO("playerbots", "{} random bot guilds available", guildNumber);
|
||||
// Shows the true total and how many were created during this run
|
||||
LOG_INFO("playerbots", "{} random bot guilds available (created this run: {})",
|
||||
uint32(sPlayerbotAIConfig->randomBotGuilds.size()), createdThisRun);
|
||||
}
|
||||
|
||||
std::string const RandomPlayerbotFactory::CreateRandomGuildName()
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* Copyright (C) 2016+ AzerothCore <www.azerothcore.org>, released under GNU GPL v2 license, you may redistribute it
|
||||
* and/or modify it under version 2 of the License, or (at your option), any later version.
|
||||
* Copyright (C) 2016+ AzerothCore <www.azerothcore.org>, released under GNU AGPL v3 license, you may redistribute it
|
||||
* and/or modify it under version 3 of the License, or (at your option), any later version.
|
||||
*/
|
||||
|
||||
#ifndef _PLAYERBOT_RANDOMPLAYERBOTFACTORY_H
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* Copyright (C) 2016+ AzerothCore <www.azerothcore.org>, released under GNU GPL v2 license, you may redistribute it
|
||||
* and/or modify it under version 2 of the License, or (at your option), any later version.
|
||||
* Copyright (C) 2016+ AzerothCore <www.azerothcore.org>, released under GNU AGPL v3 license, you may redistribute it
|
||||
* and/or modify it under version 3 of the License, or (at your option), any later version.
|
||||
*/
|
||||
|
||||
#include "RandomPlayerbotMgr.h"
|
||||
@@ -60,6 +60,48 @@ struct GuidClassRaceInfo
|
||||
uint32 rRace;
|
||||
};
|
||||
|
||||
enum class CityId : uint8 {
|
||||
STORMWIND, IRONFORGE, DARNASSUS, EXODAR,
|
||||
ORGRIMMAR, UNDERCITY, THUNDER_BLUFF, SILVERMOON_CITY,
|
||||
SHATTRATH_CITY, DALARAN
|
||||
};
|
||||
|
||||
enum class FactionId : uint8 { ALLIANCE, HORDE, NEUTRAL };
|
||||
|
||||
// Map of banker entry → city + faction
|
||||
static const std::unordered_map<uint16, std::pair<CityId, FactionId>> bankerToCity = {
|
||||
{2455, {CityId::STORMWIND, FactionId::ALLIANCE}}, {2456, {CityId::STORMWIND, FactionId::ALLIANCE}}, {2457, {CityId::STORMWIND, FactionId::ALLIANCE}},
|
||||
{2460, {CityId::IRONFORGE, FactionId::ALLIANCE}}, {2461, {CityId::IRONFORGE, FactionId::ALLIANCE}}, {5099, {CityId::IRONFORGE, FactionId::ALLIANCE}},
|
||||
{4155, {CityId::DARNASSUS, FactionId::ALLIANCE}}, {4208, {CityId::DARNASSUS, FactionId::ALLIANCE}}, {4209, {CityId::DARNASSUS, FactionId::ALLIANCE}},
|
||||
{17773, {CityId::EXODAR, FactionId::ALLIANCE}}, {18350, {CityId::EXODAR, FactionId::ALLIANCE}}, {16710, {CityId::EXODAR, FactionId::ALLIANCE}},
|
||||
{3320, {CityId::ORGRIMMAR, FactionId::HORDE}}, {3309, {CityId::ORGRIMMAR, FactionId::HORDE}}, {3318, {CityId::ORGRIMMAR, FactionId::HORDE}},
|
||||
{4549, {CityId::UNDERCITY, FactionId::HORDE}}, {2459, {CityId::UNDERCITY, FactionId::HORDE}}, {2458, {CityId::UNDERCITY, FactionId::HORDE}}, {4550, {CityId::UNDERCITY, FactionId::HORDE}},
|
||||
{2996, {CityId::THUNDER_BLUFF, FactionId::HORDE}}, {8356, {CityId::THUNDER_BLUFF, FactionId::HORDE}}, {8357, {CityId::THUNDER_BLUFF, FactionId::HORDE}},
|
||||
{17631, {CityId::SILVERMOON_CITY, FactionId::HORDE}}, {17632, {CityId::SILVERMOON_CITY, FactionId::HORDE}}, {17633, {CityId::SILVERMOON_CITY, FactionId::HORDE}},
|
||||
{16615, {CityId::SILVERMOON_CITY, FactionId::HORDE}}, {16616, {CityId::SILVERMOON_CITY, FactionId::HORDE}}, {16617, {CityId::SILVERMOON_CITY, FactionId::HORDE}},
|
||||
{19246, {CityId::SHATTRATH_CITY, FactionId::NEUTRAL}}, {19338, {CityId::SHATTRATH_CITY, FactionId::NEUTRAL}},
|
||||
{19034, {CityId::SHATTRATH_CITY, FactionId::NEUTRAL}}, {19318, {CityId::SHATTRATH_CITY, FactionId::NEUTRAL}},
|
||||
{30604, {CityId::DALARAN, FactionId::NEUTRAL}}, {30605, {CityId::DALARAN, FactionId::NEUTRAL}}, {30607, {CityId::DALARAN, FactionId::NEUTRAL}},
|
||||
{28675, {CityId::DALARAN, FactionId::NEUTRAL}}, {28676, {CityId::DALARAN, FactionId::NEUTRAL}}, {28677, {CityId::DALARAN, FactionId::NEUTRAL}}
|
||||
};
|
||||
|
||||
// Map of city → available banker entries
|
||||
static const std::unordered_map<CityId, std::vector<uint16>> cityToBankers = {
|
||||
{CityId::STORMWIND, {2455, 2456, 2457}},
|
||||
{CityId::IRONFORGE, {2460, 2461, 5099}},
|
||||
{CityId::DARNASSUS, {4155, 4208, 4209}},
|
||||
{CityId::EXODAR, {17773, 18350, 16710}},
|
||||
{CityId::ORGRIMMAR, {3320, 3309, 3318}},
|
||||
{CityId::UNDERCITY, {4549, 2459, 2458, 4550}},
|
||||
{CityId::THUNDER_BLUFF, {2996, 8356, 8357}},
|
||||
{CityId::SILVERMOON_CITY, {17631, 17632, 17633, 16615, 16616, 16617}},
|
||||
{CityId::SHATTRATH_CITY, {19246, 19338, 19034, 19318}},
|
||||
{CityId::DALARAN, {30604, 30605, 30607, 28675, 28676, 28677, 29530}}
|
||||
};
|
||||
|
||||
// Quick lookup map: banker entry → location
|
||||
static std::unordered_map<uint32, WorldLocation> bankerEntryToLocation;
|
||||
|
||||
void PrintStatsThread() { sRandomPlayerbotMgr->PrintStats(); }
|
||||
|
||||
void activatePrintStatsThread()
|
||||
@@ -675,14 +717,14 @@ uint32 RandomPlayerbotMgr::AddRandomBots()
|
||||
|
||||
if (currentBots.size() < maxAllowedBotCount)
|
||||
{
|
||||
// Calculate how many bots to add
|
||||
// Calculate how many bots to add
|
||||
maxAllowedBotCount -= currentBots.size();
|
||||
maxAllowedBotCount = std::min(sPlayerbotAIConfig->randomBotsPerInterval, maxAllowedBotCount);
|
||||
|
||||
// Single RNG instance for all shuffling
|
||||
// Single RNG instance for all shuffling
|
||||
std::mt19937 rng(std::chrono::steady_clock::now().time_since_epoch().count());
|
||||
|
||||
// Only need to track the Alliance count, as it's in Phase 1
|
||||
// Only need to track the Alliance count, as it's in Phase 1
|
||||
uint32 totalRatio = sPlayerbotAIConfig->randomBotAllianceRatio + sPlayerbotAIConfig->randomBotHordeRatio;
|
||||
uint32 allowedAllianceCount = maxAllowedBotCount * (sPlayerbotAIConfig->randomBotAllianceRatio) / totalRatio;
|
||||
|
||||
@@ -835,17 +877,17 @@ uint32 RandomPlayerbotMgr::AddRandomBots()
|
||||
LOG_ERROR("playerbots",
|
||||
"Can't log-in all the requested bots. Try increasing RandomBotAccountCount in your conf file.\n"
|
||||
"{} more accounts needed.", moreAccountsNeeded);
|
||||
missingBotsTimer = 0; // Reset timer so error is not spammed every tick
|
||||
missingBotsTimer = 0; // Reset timer so error is not spammed every tick
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
missingBotsTimer = 0; // Reset timer if logins for this interval were successful
|
||||
missingBotsTimer = 0; // Reset timer if logins for this interval were successful
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
missingBotsTimer = 0; // Reset timer if there's enough bots
|
||||
missingBotsTimer = 0; // Reset timer if there's enough bots
|
||||
}
|
||||
|
||||
return currentBots.size();
|
||||
@@ -855,7 +897,7 @@ void RandomPlayerbotMgr::LoadBattleMastersCache()
|
||||
{
|
||||
BattleMastersCache.clear();
|
||||
|
||||
LOG_INFO("playerbots", "Loading BattleMasters Cache...");
|
||||
LOG_INFO("playerbots", "Loading Battlemasters Cache...");
|
||||
|
||||
QueryResult result = WorldDatabase.Query("SELECT `entry`,`bg_template` FROM `battlemaster_entry`");
|
||||
|
||||
@@ -898,7 +940,7 @@ void RandomPlayerbotMgr::LoadBattleMastersCache()
|
||||
|
||||
BattleMastersCache[bmTeam][BattlegroundTypeId(bgTypeId)].insert(
|
||||
BattleMastersCache[bmTeam][BattlegroundTypeId(bgTypeId)].end(), entry);
|
||||
LOG_DEBUG("playerbots", "Cached Battmemaster #{} for BG Type {} ({})", entry, bgTypeId,
|
||||
LOG_DEBUG("playerbots", "Cached Battlemaster #{} for BG Type {} ({})", entry, bgTypeId,
|
||||
bmTeam == TEAM_ALLIANCE ? "Alliance"
|
||||
: bmTeam == TEAM_HORDE ? "Horde"
|
||||
: "Neutral");
|
||||
@@ -1660,11 +1702,6 @@ void RandomPlayerbotMgr::RandomTeleport(Player* bot, std::vector<WorldLocation>&
|
||||
return;
|
||||
}
|
||||
|
||||
if (tlocs.empty())
|
||||
{
|
||||
LOG_DEBUG("playerbots", "Cannot teleport bot {} - no locations available", bot->GetName().c_str());
|
||||
return;
|
||||
}
|
||||
|
||||
PerformanceMonitorOperation* pmo = sPerformanceMonitor->start(PERF_MON_RNDBOT, "RandomTeleportByLocations");
|
||||
|
||||
@@ -2021,7 +2058,8 @@ void RandomPlayerbotMgr::PrepareTeleportCache()
|
||||
"position_y, "
|
||||
"position_z, "
|
||||
"orientation, "
|
||||
"t.minlevel "
|
||||
"t.minlevel, "
|
||||
"t.entry "
|
||||
"FROM "
|
||||
"creature c "
|
||||
"INNER JOIN creature_template t on c.id1 = t.entry "
|
||||
@@ -2048,27 +2086,30 @@ void RandomPlayerbotMgr::PrepareTeleportCache()
|
||||
float z = fields[3].Get<float>();
|
||||
float orient = fields[4].Get<float>();
|
||||
uint32 level = fields[5].Get<uint32>();
|
||||
WorldLocation loc(mapId, x + cos(orient) * 6.0f, y + sin(orient) * 6.0f, z + 2.0f, orient + M_PI);
|
||||
uint32 entry = fields[6].Get<uint32>();
|
||||
BankerLocation bLoc;
|
||||
bLoc.loc = WorldLocation(mapId, x + cos(orient) * 6.0f, y + sin(orient) * 6.0f, z + 2.0f, orient + M_PI);
|
||||
bLoc.entry = entry;
|
||||
collected_locs++;
|
||||
for (int32 l = 1; l <= maxLevel; l++)
|
||||
{
|
||||
if (l <= 60 && level >= 60)
|
||||
// Bots 1-60 go to base game bankers (all have minlevel 30 or 45)
|
||||
if (l <=60 && level > 45)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
if (l <= 70 && level >= 70)
|
||||
// Bots 61-70 go to Shattrath bankers (all have minlevel 60 or 70)
|
||||
if ((l >=61 && l <=70) && (level < 60 || level > 70))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
if (l >= 70 && level >= 60 && level <= 70)
|
||||
// Bots 71+ go to Dalaran bankers (all have minlevel 75)
|
||||
if ((l >=71) && level != 75)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
if (l >= 30 && level <= 30)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
bankerLocsPerLevelCache[(uint8)l].push_back(loc);
|
||||
bankerLocsPerLevelCache[(uint8)l].push_back(bLoc);
|
||||
bankerEntryToLocation[bLoc.entry] = bLoc.loc;
|
||||
}
|
||||
} while (results->NextRow());
|
||||
}
|
||||
@@ -2138,11 +2179,92 @@ void RandomPlayerbotMgr::RandomTeleportForLevel(Player* bot)
|
||||
locs = IsAlliance(race) ? &allianceStarterPerLevelCache[level] : &hordeStarterPerLevelCache[level];
|
||||
else
|
||||
locs = &locsPerLevelCache[level];
|
||||
LOG_DEBUG("playerbots", "Random teleporting bot {} for level {} ({} locations available)", bot->GetName().c_str(),
|
||||
bot->GetLevel(), locs->size());
|
||||
if (level >= 10 && urand(0, 100) < sPlayerbotAIConfig->probTeleToBankers * 100)
|
||||
{
|
||||
RandomTeleport(bot, bankerLocsPerLevelCache[level], true);
|
||||
std::vector<WorldLocation> fallbackLocs;
|
||||
for (auto& bLoc : bankerLocsPerLevelCache[level])
|
||||
fallbackLocs.push_back(bLoc.loc);
|
||||
|
||||
if (!sPlayerbotAIConfig->enableWeightTeleToCityBankers)
|
||||
{
|
||||
RandomTeleport(bot, fallbackLocs, true);
|
||||
return;
|
||||
}
|
||||
|
||||
// Collect valid cities based on bot faction.
|
||||
std::unordered_set<CityId> validBankerCities;
|
||||
for (auto& loc : bankerLocsPerLevelCache[level])
|
||||
{
|
||||
auto cityIt = bankerToCity.find(loc.entry);
|
||||
if (cityIt == bankerToCity.end()) continue;
|
||||
|
||||
CityId cityId = cityIt->second.first;
|
||||
FactionId cityFactionId = cityIt->second.second;
|
||||
|
||||
if ((IsAlliance(bot->getRace()) && cityFactionId == FactionId::ALLIANCE) ||
|
||||
(!IsAlliance(bot->getRace()) && cityFactionId == FactionId::HORDE) ||
|
||||
(cityFactionId == FactionId::NEUTRAL))
|
||||
{
|
||||
validBankerCities.insert(cityId);
|
||||
}
|
||||
}
|
||||
|
||||
// Fallback if no valid cities
|
||||
if (validBankerCities.empty())
|
||||
{
|
||||
RandomTeleport(bot, fallbackLocs, true);
|
||||
return;
|
||||
}
|
||||
|
||||
// Apply weights to valid cities
|
||||
std::vector<CityId> weightedCities;
|
||||
for (CityId city : validBankerCities)
|
||||
{
|
||||
int weight = 0;
|
||||
switch (city)
|
||||
{
|
||||
case CityId::STORMWIND: weight = sPlayerbotAIConfig->weightTeleToStormwind; break;
|
||||
case CityId::IRONFORGE: weight = sPlayerbotAIConfig->weightTeleToIronforge; break;
|
||||
case CityId::DARNASSUS: weight = sPlayerbotAIConfig->weightTeleToDarnassus; break;
|
||||
case CityId::EXODAR: weight = sPlayerbotAIConfig->weightTeleToExodar; break;
|
||||
case CityId::ORGRIMMAR: weight = sPlayerbotAIConfig->weightTeleToOrgrimmar; break;
|
||||
case CityId::UNDERCITY: weight = sPlayerbotAIConfig->weightTeleToUndercity; break;
|
||||
case CityId::THUNDER_BLUFF: weight = sPlayerbotAIConfig->weightTeleToThunderBluff; break;
|
||||
case CityId::SILVERMOON_CITY: weight = sPlayerbotAIConfig->weightTeleToSilvermoonCity; break;
|
||||
case CityId::SHATTRATH_CITY: weight = sPlayerbotAIConfig->weightTeleToShattrathCity; break;
|
||||
case CityId::DALARAN: weight = sPlayerbotAIConfig->weightTeleToDalaran; break;
|
||||
default: weight = 0; break;
|
||||
}
|
||||
if (weight <= 0) continue;
|
||||
|
||||
for (int i = 0; i < weight; ++i)
|
||||
{
|
||||
weightedCities.push_back(city);
|
||||
}
|
||||
}
|
||||
|
||||
// Fallback if no valid cities
|
||||
if (weightedCities.empty())
|
||||
{
|
||||
RandomTeleport(bot, fallbackLocs, true);
|
||||
return;
|
||||
}
|
||||
|
||||
// Pick a weighted city randomly, then a random banker in that city
|
||||
// then teleport to that banker
|
||||
CityId selectedCity = weightedCities[urand(0, weightedCities.size() - 1)];
|
||||
const auto& bankers = cityToBankers.at(selectedCity);
|
||||
uint32 selectedBankerEntry = bankers[urand(0, bankers.size() - 1)];
|
||||
auto locIt = bankerEntryToLocation.find(selectedBankerEntry);
|
||||
if (locIt != bankerEntryToLocation.end())
|
||||
{
|
||||
std::vector<WorldLocation> teleportTarget = { locIt->second };
|
||||
RandomTeleport(bot, teleportTarget, true);
|
||||
return;
|
||||
}
|
||||
|
||||
// Fallback if something went wrong
|
||||
RandomTeleport(bot, *locs);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* Copyright (C) 2016+ AzerothCore <www.azerothcore.org>, released under GNU GPL v2 license, you may redistribute it
|
||||
* and/or modify it under version 2 of the License, or (at your option), any later version.
|
||||
* Copyright (C) 2016+ AzerothCore <www.azerothcore.org>, released under GNU AGPL v3 license, you may redistribute it
|
||||
* and/or modify it under version 3 of the License, or (at your option), any later version.
|
||||
*/
|
||||
|
||||
#ifndef _PLAYERBOT_RANDOMPLAYERBOTMGR_H
|
||||
@@ -183,7 +183,11 @@ public:
|
||||
bool InsideBracket(uint32 val) { return val >= low && val <= high; }
|
||||
};
|
||||
std::map<uint32, LevelBracket> zone2LevelBracket;
|
||||
std::map<uint8, std::vector<WorldLocation>> bankerLocsPerLevelCache;
|
||||
struct BankerLocation {
|
||||
WorldLocation loc;
|
||||
uint32 entry;
|
||||
};
|
||||
std::map<uint8, std::vector<BankerLocation>> bankerLocsPerLevelCache;
|
||||
|
||||
// Account type management
|
||||
void AssignAccountTypes();
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* Copyright (C) 2016+ AzerothCore <www.azerothcore.org>, released under GNU GPL v2 license, you may redistribute it
|
||||
* and/or modify it under version 2 of the License, or (at your option), any later version.
|
||||
* Copyright (C) 2016+ AzerothCore <www.azerothcore.org>, released under GNU AGPL v3 license, you may redistribute it
|
||||
* and/or modify it under version 3 of the License, or (at your option), any later version.
|
||||
*/
|
||||
|
||||
#include "ServerFacade.h"
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* Copyright (C) 2016+ AzerothCore <www.azerothcore.org>, released under GNU GPL v2 license, you may redistribute it
|
||||
* and/or modify it under version 2 of the License, or (at your option), any later version.
|
||||
* Copyright (C) 2016+ AzerothCore <www.azerothcore.org>, released under GNU AGPL v3 license, you may redistribute it
|
||||
* and/or modify it under version 3 of the License, or (at your option), any later version.
|
||||
*/
|
||||
|
||||
#ifndef _PLAYERBOT_SERVERFACADE_H
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* Copyright (C) 2016+ AzerothCore <www.azerothcore.org>, released under GNU GPL v2 license, you may redistribute it
|
||||
* and/or modify it under version 2 of the License, or (at your option), any later version.
|
||||
* Copyright (C) 2016+ AzerothCore <www.azerothcore.org>, released under GNU AGPL v3 license, you may redistribute it
|
||||
* and/or modify it under version 3 of the License, or (at your option), any later version.
|
||||
*/
|
||||
|
||||
#include "Talentspec.h"
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* Copyright (C) 2016+ AzerothCore <www.azerothcore.org>, released under GNU GPL v2 license, you may redistribute it
|
||||
* and/or modify it under version 2 of the License, or (at your option), any later version.
|
||||
* Copyright (C) 2016+ AzerothCore <www.azerothcore.org>, released under GNU AGPL v3 license, you may redistribute it
|
||||
* and/or modify it under version 3 of the License, or (at your option), any later version.
|
||||
*/
|
||||
|
||||
#ifndef _PLAYERBOT_TALENTSPEC_H
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* Copyright (C) 2016+ AzerothCore <www.azerothcore.org>, released under GNU GPL v2 license, you may redistribute it
|
||||
* and/or modify it under version 2 of the License, or (at your option), any later version.
|
||||
* Copyright (C) 2016+ AzerothCore <www.azerothcore.org>, released under GNU AGPL v3 license, you may redistribute it
|
||||
* and/or modify it under version 3 of the License, or (at your option), any later version.
|
||||
*/
|
||||
|
||||
#include "TravelMgr.h"
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* Copyright (C) 2016+ AzerothCore <www.azerothcore.org>, released under GNU GPL v2 license, you may redistribute it
|
||||
* and/or modify it under version 2 of the License, or (at your option), any later version.
|
||||
* Copyright (C) 2016+ AzerothCore <www.azerothcore.org>, released under GNU AGPL v3 license, you may redistribute it
|
||||
* and/or modify it under version 3 of the License, or (at your option), any later version.
|
||||
*/
|
||||
|
||||
#ifndef _PLAYERBOT_TRAVELMGR_H
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* Copyright (C) 2016+ AzerothCore <www.azerothcore.org>, released under GNU GPL v2 license, you may redistribute it
|
||||
* and/or modify it under version 2 of the License, or (at your option), any later version.
|
||||
* Copyright (C) 2016+ AzerothCore <www.azerothcore.org>, released under GNU AGPL v3 license, you may redistribute it
|
||||
* and/or modify it under version 3 of the License, or (at your option), any later version.
|
||||
*/
|
||||
|
||||
#include "TravelNode.h"
|
||||
@@ -2299,7 +2299,7 @@ void TravelNodeMap::printNodeStore()
|
||||
}
|
||||
}
|
||||
|
||||
sPlayerbotAIConfig->log(nodeStore, " }");
|
||||
sPlayerbotAIConfig->log(nodeStore, " }");
|
||||
sPlayerbotAIConfig->log(nodeStore, "};");
|
||||
|
||||
printf("\r [Done] \r\x3D");
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* Copyright (C) 2016+ AzerothCore <www.azerothcore.org>, released under GNU GPL v2 license, you may redistribute it
|
||||
* and/or modify it under version 2 of the License, or (at your option), any later version.
|
||||
* Copyright (C) 2016+ AzerothCore <www.azerothcore.org>, released under GNU AGPL v3 license, you may redistribute it
|
||||
* and/or modify it under version 3 of the License, or (at your option), any later version.
|
||||
*/
|
||||
|
||||
#ifndef _PLAYERBOT_TRAVELNODE_H
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* Copyright (C) 2016+ AzerothCore <www.azerothcore.org>, released under GNU GPL v2 license, you may redistribute it
|
||||
* and/or modify it under version 2 of the License, or (at your option), any later version.
|
||||
* Copyright (C) 2016+ AzerothCore <www.azerothcore.org>, released under GNU AGPL v3 license, you may redistribute it
|
||||
* and/or modify it under version 3 of the License, or (at your option), any later version.
|
||||
*/
|
||||
|
||||
#include "PlayerbotFactory.h"
|
||||
@@ -40,6 +40,7 @@
|
||||
#include "StatsWeightCalculator.h"
|
||||
#include "World.h"
|
||||
#include "AiObjectContext.h"
|
||||
#include "ItemPackets.h"
|
||||
|
||||
const uint64 diveMask = (1LL << 7) | (1LL << 44) | (1LL << 37) | (1LL << 38) | (1LL << 26) | (1LL << 30) | (1LL << 27) |
|
||||
(1LL << 33) | (1LL << 24) | (1LL << 34);
|
||||
@@ -123,7 +124,10 @@ void PlayerbotFactory::Init()
|
||||
if (id == 47181 || id == 50358 || id == 47242 || id == 52639 || id == 47147 || id == 7218) // Test Enchant
|
||||
continue;
|
||||
|
||||
if (id == 15463) // Legendary Arcane Amalgamation
|
||||
if (id == 15463 || id == 15490) // Legendary Arcane Amalgamation
|
||||
continue;
|
||||
|
||||
if (id == 29467 || id == 29475 || id == 29480 || id == 29483) // Naxx40 Sapphiron Shoulder Enchants
|
||||
continue;
|
||||
|
||||
SpellInfo const* spellInfo = sSpellMgr->GetSpellInfo(id);
|
||||
@@ -164,33 +168,33 @@ void PlayerbotFactory::Init()
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
|
||||
ItemTemplate const* proto = sObjectMgr->GetItemTemplate(gemId);
|
||||
if (!proto)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
|
||||
if (proto->ItemLevel < 60)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
|
||||
if (proto->Flags & ITEM_FLAG_UNIQUE_EQUIPPABLE)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
|
||||
if (sRandomItemMgr->IsTestItem(gemId))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
|
||||
if (!sGemPropertiesStore.LookupEntry(proto->GemProperties))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
|
||||
// LOG_INFO("playerbots", "Add {} to enchantment gems", gemId);
|
||||
enchantGemIdCache.push_back(gemId);
|
||||
}
|
||||
@@ -732,7 +736,7 @@ void PlayerbotFactory::InitConsumables()
|
||||
int count = (int)item.second - (int)bot->GetItemCount(item.first);
|
||||
if (count > 0)
|
||||
StoreItem(item.first, count);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void PlayerbotFactory::InitPetTalents()
|
||||
@@ -1028,14 +1032,17 @@ void PlayerbotFactory::ClearSkills()
|
||||
}
|
||||
bot->SetUInt32Value(PLAYER_SKILL_INDEX(0), 0);
|
||||
bot->SetUInt32Value(PLAYER_SKILL_INDEX(1), 0);
|
||||
|
||||
// unlearn default race/class skills
|
||||
PlayerInfo const* info = sObjectMgr->GetPlayerInfo(bot->getRace(), bot->getClass());
|
||||
for (PlayerCreateInfoSkills::const_iterator itr = info->skills.begin(); itr != info->skills.end(); ++itr)
|
||||
if (PlayerInfo const* info = sObjectMgr->GetPlayerInfo(bot->getRace(), bot->getClass()))
|
||||
{
|
||||
uint32 skillId = itr->SkillId;
|
||||
if (!bot->HasSkill(skillId))
|
||||
continue;
|
||||
bot->SetSkill(skillId, 0, 0, 0);
|
||||
for (PlayerCreateInfoSkills::const_iterator itr = info->skills.begin(); itr != info->skills.end(); ++itr)
|
||||
{
|
||||
uint32 skillId = itr->SkillId;
|
||||
if (!bot->HasSkill(skillId))
|
||||
continue;
|
||||
bot->SetSkill(skillId, 0, 0, 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1088,7 +1095,7 @@ void PlayerbotFactory::ResetQuests()
|
||||
uint32 entry = quest->GetQuestId();
|
||||
if (bot->GetQuestStatus(entry) == QUEST_STATUS_NONE)
|
||||
continue;
|
||||
|
||||
|
||||
bot->RemoveRewardedQuest(entry);
|
||||
bot->RemoveActiveQuest(entry, false);
|
||||
|
||||
@@ -1164,7 +1171,7 @@ void PlayerbotFactory::InitTalentsTree(bool increment /*false*/, bool use_templa
|
||||
|
||||
if (bot->GetFreeTalentPoints())
|
||||
InitTalents((specTab + 2) % 3);
|
||||
|
||||
|
||||
bot->SendTalentsInfoData(false);
|
||||
}
|
||||
|
||||
@@ -1697,7 +1704,7 @@ void PlayerbotFactory::InitEquipment(bool incremental, bool second_chance)
|
||||
{
|
||||
if (incremental && !sPlayerbotAIConfig->incrementalGearInit)
|
||||
return;
|
||||
|
||||
|
||||
if (level < 5) {
|
||||
// original items
|
||||
if (CharStartOutfitEntry const* oEntry = GetCharStartOutfitEntry(bot->getRace(), bot->getClass(), bot->getGender()))
|
||||
@@ -1708,11 +1715,11 @@ void PlayerbotFactory::InitEquipment(bool incremental, bool second_chance)
|
||||
continue;
|
||||
|
||||
uint32 itemId = oEntry->ItemId[j];
|
||||
|
||||
|
||||
// skip hearthstone
|
||||
if (itemId == 6948)
|
||||
continue;
|
||||
|
||||
|
||||
// just skip, reported in ObjectMgr::LoadItemTemplates
|
||||
ItemTemplate const* iProto = sObjectMgr->GetItemTemplate(itemId);
|
||||
if (!iProto)
|
||||
@@ -1736,10 +1743,10 @@ void PlayerbotFactory::InitEquipment(bool incremental, bool second_chance)
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
std::unordered_map<uint8, std::vector<uint32>> items;
|
||||
// int tab = AiFactory::GetPlayerSpecTab(bot);
|
||||
|
||||
|
||||
uint32 blevel = bot->GetLevel();
|
||||
int32 delta = std::min(blevel, 10u);
|
||||
|
||||
@@ -1807,7 +1814,7 @@ void PlayerbotFactory::InitEquipment(bool incremental, bool second_chance)
|
||||
ItemTemplate const* proto = sObjectMgr->GetItemTemplate(itemId);
|
||||
if (!proto)
|
||||
continue;
|
||||
|
||||
|
||||
bool shouldCheckGS = desiredQuality > ITEM_QUALITY_NORMAL;
|
||||
|
||||
if (shouldCheckGS && gearScoreLimit != 0 &&
|
||||
@@ -1893,7 +1900,9 @@ void PlayerbotFactory::InitEquipment(bool incremental, bool second_chance)
|
||||
|
||||
WorldPacket packet(CMSG_AUTOSTORE_BAG_ITEM, 3);
|
||||
packet << bagIndex << slot << dstBag;
|
||||
bot->GetSession()->HandleAutoStoreBagItemOpcode(packet);
|
||||
WorldPackets::Item::AutoStoreBagItem nicePacket(std::move(packet));
|
||||
nicePacket.Read();
|
||||
bot->GetSession()->HandleAutoStoreBagItemOpcode(nicePacket);
|
||||
}
|
||||
|
||||
oldItem = bot->GetItemByPos(INVENTORY_SLOT_BAG_0, slot);
|
||||
@@ -2914,7 +2923,7 @@ void PlayerbotFactory::InitQuests(std::list<uint32>& questMap, bool withRewardIt
|
||||
// set reward to 5 to skip majority quest reward
|
||||
uint32 reward = withRewardItem ? 0 : 5;
|
||||
bot->RewardQuest(quest, reward, bot, false);
|
||||
|
||||
|
||||
if (!withRewardItem)
|
||||
{
|
||||
// destroy the quest reward item
|
||||
@@ -3001,10 +3010,10 @@ void PlayerbotFactory::InitAmmo()
|
||||
// disable next expansion ammo
|
||||
if (sPlayerbotAIConfig->limitGearExpansion && bot->GetLevel() <= 60 && tEntry >= 23728)
|
||||
continue;
|
||||
|
||||
|
||||
if (sPlayerbotAIConfig->limitGearExpansion && bot->GetLevel() <= 70 && tEntry >= 35570)
|
||||
continue;
|
||||
|
||||
|
||||
entry = tEntry;
|
||||
break;
|
||||
}
|
||||
@@ -3168,7 +3177,7 @@ void PlayerbotFactory::InitPotions()
|
||||
|
||||
if (effect == SPELL_EFFECT_ENERGIZE && !bot->GetPower(POWER_MANA))
|
||||
continue;
|
||||
|
||||
|
||||
FindPotionVisitor visitor(bot, effect);
|
||||
IterateItems(&visitor);
|
||||
if (!visitor.GetResult().empty())
|
||||
@@ -3241,7 +3250,7 @@ std::vector<uint32> PlayerbotFactory::GetCurrentGemsCount()
|
||||
|
||||
void PlayerbotFactory::InitFood()
|
||||
{
|
||||
if (sPlayerbotAIConfig->freeFood)
|
||||
if (botAI && botAI->HasCheat(BotCheatMask::food))
|
||||
{
|
||||
return;
|
||||
}
|
||||
@@ -3310,7 +3319,7 @@ void PlayerbotFactory::InitReagents()
|
||||
switch (bot->getClass())
|
||||
{
|
||||
case CLASS_DEATH_KNIGHT:
|
||||
if (level >= 56)
|
||||
if (level >= 56)
|
||||
items.push_back({37201, 40}); // Corpse Dust
|
||||
break;
|
||||
case CLASS_DRUID:
|
||||
@@ -3983,7 +3992,7 @@ void PlayerbotFactory::InitGuild()
|
||||
return;
|
||||
}
|
||||
|
||||
if (guild->GetMemberSize() < urand(10, 15))
|
||||
if (guild->GetMemberSize() < urand(10, sPlayerbotAIConfig->randomBotGuildSizeMax))
|
||||
guild->AddMember(bot->GetGUID(), urand(GR_OFFICER, GR_INITIATE));
|
||||
|
||||
// add guild tabard
|
||||
@@ -4336,7 +4345,7 @@ void PlayerbotFactory::ApplyEnchantAndGemsNew(bool destoryOld)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
|
||||
if (item->GetTemplate() && item->GetTemplate()->Quality < ITEM_QUALITY_UNCOMMON)
|
||||
continue;
|
||||
int32 bestEnchantId = -1;
|
||||
@@ -4359,10 +4368,10 @@ void PlayerbotFactory::ApplyEnchantAndGemsNew(bool destoryOld)
|
||||
}
|
||||
|
||||
// disable next expansion enchantments
|
||||
if (sPlayerbotAIConfig->limitEnchantExpansion && bot->GetLevel() <= 60 && enchantSpell >= 25072)
|
||||
if (sPlayerbotAIConfig->limitEnchantExpansion && bot->GetLevel() <= 60 && enchantSpell >= 27899)
|
||||
continue;
|
||||
|
||||
if (sPlayerbotAIConfig->limitEnchantExpansion && bot->GetLevel() <= 70 && enchantSpell > 48557)
|
||||
if (sPlayerbotAIConfig->limitEnchantExpansion && bot->GetLevel() <= 70 && enchantSpell >= 44483)
|
||||
continue;
|
||||
|
||||
for (uint8 j = 0; j < MAX_SPELL_EFFECTS; ++j)
|
||||
@@ -4652,12 +4661,12 @@ void PlayerbotFactory::InitKeyring()
|
||||
{
|
||||
if (!bot)
|
||||
return;
|
||||
|
||||
|
||||
if (bot->GetLevel() < 70)
|
||||
return;
|
||||
|
||||
ReputationMgr& repMgr = bot->GetReputationMgr(); // Reference, use . instead of ->
|
||||
|
||||
|
||||
std::vector<std::pair<uint32, uint32>> keysToCheck;
|
||||
|
||||
// Reputation-based Keys (Honored requirement)
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* Copyright (C) 2016+ AzerothCore <www.azerothcore.org>, released under GNU GPL v2 license, you may redistribute it
|
||||
* and/or modify it under version 2 of the License, or (at your option), any later version.
|
||||
* Copyright (C) 2016+ AzerothCore <www.azerothcore.org>, released under GNU AGPL v3 license, you may redistribute it
|
||||
* and/or modify it under version 3 of the License, or (at your option), any later version.
|
||||
*/
|
||||
|
||||
#ifndef _PLAYERBOT_PLAYERBOTFACTORY_H
|
||||
@@ -85,7 +85,7 @@ public:
|
||||
void InitKeyring();
|
||||
void InitReputation();
|
||||
void InitAttunementQuests();
|
||||
|
||||
|
||||
private:
|
||||
void Prepare();
|
||||
// void InitSecondEquipmentSet();
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* Copyright (C) 2016+ AzerothCore <www.azerothcore.org>, released under GNU GPL v2 license, you may redistribute it
|
||||
* and/or modify it under version 2 of the License, or (at your option), any later version.
|
||||
* Copyright (C) 2016+ AzerothCore <www.azerothcore.org>, released under GNU AGPL v3 license, you may redistribute it
|
||||
* and/or modify it under version 3 of the License, or (at your option), any later version.
|
||||
*/
|
||||
|
||||
#ifndef _PLAYERBOT_STATSCOLLECTOR_H
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* Copyright (C) 2016+ AzerothCore <www.azerothcore.org>, released under GNU GPL v2 license, you may redistribute it
|
||||
* and/or modify it under version 2 of the License, or (at your option), any later version.
|
||||
* Copyright (C) 2016+ AzerothCore <www.azerothcore.org>, released under GNU AGPL v3 license, you may redistribute it
|
||||
* and/or modify it under version 3 of the License, or (at your option), any later version.
|
||||
*/
|
||||
|
||||
#include "StatsWeightCalculator.h"
|
||||
@@ -184,7 +184,7 @@ void StatsWeightCalculator::GenerateBasicWeights(Player* player)
|
||||
stats_weights_[STATS_TYPE_MELEE_DPS] += 0.01f;
|
||||
stats_weights_[STATS_TYPE_RANGED_DPS] += 0.01f;
|
||||
|
||||
if (cls == CLASS_HUNTER && (tab == HUNTER_TAB_BEASTMASTER || tab == HUNTER_TAB_SURVIVAL))
|
||||
if (cls == CLASS_HUNTER && (tab == HUNTER_TAB_BEASTMASTERY || tab == HUNTER_TAB_SURVIVAL))
|
||||
{
|
||||
stats_weights_[STATS_TYPE_AGILITY] += 2.5f;
|
||||
stats_weights_[STATS_TYPE_ATTACK_POWER] += 1.0f;
|
||||
@@ -571,7 +571,7 @@ void StatsWeightCalculator::CalculateItemTypePenalty(ItemTemplate const* proto)
|
||||
{
|
||||
weight_ *= 0.1;
|
||||
}
|
||||
|
||||
|
||||
if (lvl >= 10 && cls == CLASS_ROGUE && (tab == ROGUE_TAB_ASSASSINATION || tab == ROGUE_TAB_SUBTLETY) &&
|
||||
proto->SubClass == ITEM_SUBCLASS_WEAPON_DAGGER)
|
||||
{
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* Copyright (C) 2016+ AzerothCore <www.azerothcore.org>, released under GNU GPL v2 license, you may redistribute it
|
||||
* and/or modify it under version 2 of the License, or (at your option), any later version.
|
||||
* Copyright (C) 2016+ AzerothCore <www.azerothcore.org>, released under GNU AGPL v3 license, you may redistribute it
|
||||
* and/or modify it under version 3 of the License, or (at your option), any later version.
|
||||
*/
|
||||
|
||||
#ifndef _PLAYERBOT_GEARSCORECALCULATOR_H
|
||||
@@ -30,16 +30,16 @@ public:
|
||||
void Reset();
|
||||
float CalculateItem(uint32 itemId, int32 randomPropertyId = 0);
|
||||
float CalculateEnchant(uint32 enchantId);
|
||||
|
||||
|
||||
void SetOverflowPenalty(bool apply) { enable_overflow_penalty_ = apply; }
|
||||
void SetItemSetBonus(bool apply) { enable_item_set_bonus_ = apply; }
|
||||
void SetQualityBlend(bool apply) { enable_quality_blend_ = apply; }
|
||||
|
||||
|
||||
private:
|
||||
void GenerateWeights(Player* player);
|
||||
void GenerateBasicWeights(Player* player);
|
||||
void GenerateAdditionalWeights(Player* player);
|
||||
|
||||
|
||||
void CalculateRandomProperty(int32 randomPropertyId, uint32 itemId);
|
||||
void CalculateItemSetMod(Player* player, ItemTemplate const* proto);
|
||||
void CalculateSocketBonus(Player* player, ItemTemplate const* proto);
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* Copyright (C) 2016+ AzerothCore <www.azerothcore.org>, released under GNU GPL v2 license, you may redistribute it
|
||||
* and/or modify it under version 2 of the License, or (at your option), any later version.
|
||||
* Copyright (C) 2016+ AzerothCore <www.azerothcore.org>, released under GNU AGPL v3 license, you may redistribute it
|
||||
* and/or modify it under version 3 of the License, or (at your option), any later version.
|
||||
*/
|
||||
|
||||
#include "Action.h"
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* Copyright (C) 2016+ AzerothCore <www.azerothcore.org>, released under GNU GPL v2 license, you may redistribute it
|
||||
* and/or modify it under version 2 of the License, or (at your option), any later version.
|
||||
* Copyright (C) 2016+ AzerothCore <www.azerothcore.org>, released under GNU AGPL v3 license, you may redistribute it
|
||||
* and/or modify it under version 3 of the License, or (at your option), any later version.
|
||||
*/
|
||||
|
||||
#ifndef _PLAYERBOT_ACTION_H
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* Copyright (C) 2016+ AzerothCore <www.azerothcore.org>, released under GNU GPL v2 license, you may redistribute it
|
||||
* and/or modify it under version 2 of the License, or (at your option), any later version.
|
||||
* Copyright (C) 2016+ AzerothCore <www.azerothcore.org>, released under GNU AGPL v3 license, you may redistribute it
|
||||
* and/or modify it under version 3 of the License, or (at your option), any later version.
|
||||
*/
|
||||
|
||||
#include "AiObject.h"
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* Copyright (C) 2016+ AzerothCore <www.azerothcore.org>, released under GNU GPL v2 license, you may redistribute it
|
||||
* and/or modify it under version 2 of the License, or (at your option), any later version.
|
||||
* Copyright (C) 2016+ AzerothCore <www.azerothcore.org>, released under GNU AGPL v3 license, you may redistribute it
|
||||
* and/or modify it under version 3 of the License, or (at your option), any later version.
|
||||
*/
|
||||
|
||||
#ifndef _PLAYERBOT_AIOBJECT_H
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* Copyright (C) 2016+ AzerothCore <www.azerothcore.org>, released under GNU GPL v2 license, you may redistribute it
|
||||
* and/or modify it under version 2 of the License, or (at your option), any later version.
|
||||
* Copyright (C) 2016+ AzerothCore <www.azerothcore.org>, released under GNU AGPL v3 license, you may redistribute it
|
||||
* and/or modify it under version 3 of the License, or (at your option), any later version.
|
||||
*/
|
||||
|
||||
#include "AiObjectContext.h"
|
||||
@@ -33,22 +33,24 @@
|
||||
#include "raids/RaidStrategyContext.h"
|
||||
#include "raids/aq20/RaidAq20ActionContext.h"
|
||||
#include "raids/aq20/RaidAq20TriggerContext.h"
|
||||
#include "raids/blackwinglair/RaidBwlActionContext.h"
|
||||
#include "raids/blackwinglair/RaidBwlTriggerContext.h"
|
||||
#include "raids/eyeofeternity/RaidEoEActionContext.h"
|
||||
#include "raids/eyeofeternity/RaidEoETriggerContext.h"
|
||||
#include "raids/icecrown/RaidIccActionContext.h"
|
||||
#include "raids/icecrown/RaidIccTriggerContext.h"
|
||||
#include "raids/moltencore/RaidMcActionContext.h"
|
||||
#include "raids/moltencore/RaidMcTriggerContext.h"
|
||||
#include "raids/blackwinglair/RaidBwlActionContext.h"
|
||||
#include "raids/blackwinglair/RaidBwlTriggerContext.h"
|
||||
#include "raids/karazhan/RaidKarazhanActionContext.h"
|
||||
#include "raids/karazhan/RaidKarazhanTriggerContext.h"
|
||||
#include "raids/naxxramas/RaidNaxxActionContext.h"
|
||||
#include "raids/naxxramas/RaidNaxxTriggerContext.h"
|
||||
#include "raids/eyeofeternity/RaidEoEActionContext.h"
|
||||
#include "raids/eyeofeternity/RaidEoETriggerContext.h"
|
||||
#include "raids/vaultofarchavon/RaidVoAActionContext.h"
|
||||
#include "raids/vaultofarchavon/RaidVoATriggerContext.h"
|
||||
#include "raids/obsidiansanctum/RaidOsActionContext.h"
|
||||
#include "raids/obsidiansanctum/RaidOsTriggerContext.h"
|
||||
#include "raids/onyxia/RaidOnyxiaActionContext.h"
|
||||
#include "raids/onyxia/RaidOnyxiaTriggerContext.h"
|
||||
#include "raids/vaultofarchavon/RaidVoAActionContext.h"
|
||||
#include "raids/vaultofarchavon/RaidVoATriggerContext.h"
|
||||
#include "raids/icecrown/RaidIccActionContext.h"
|
||||
#include "raids/icecrown/RaidIccTriggerContext.h"
|
||||
|
||||
SharedNamedObjectContextList<Strategy> AiObjectContext::sharedStrategyContexts;
|
||||
SharedNamedObjectContextList<Action> AiObjectContext::sharedActionContexts;
|
||||
@@ -96,8 +98,8 @@ void AiObjectContext::BuildSharedStrategyContexts(SharedNamedObjectContextList<S
|
||||
strategyContexts.Add(new MovementStrategyContext());
|
||||
strategyContexts.Add(new AssistStrategyContext());
|
||||
strategyContexts.Add(new QuestStrategyContext());
|
||||
strategyContexts.Add(new RaidStrategyContext());
|
||||
strategyContexts.Add(new DungeonStrategyContext());
|
||||
strategyContexts.Add(new RaidStrategyContext());
|
||||
}
|
||||
|
||||
void AiObjectContext::BuildSharedActionContexts(SharedNamedObjectContextList<Action>& actionContexts)
|
||||
@@ -105,15 +107,16 @@ void AiObjectContext::BuildSharedActionContexts(SharedNamedObjectContextList<Act
|
||||
actionContexts.Add(new ActionContext());
|
||||
actionContexts.Add(new ChatActionContext());
|
||||
actionContexts.Add(new WorldPacketActionContext());
|
||||
actionContexts.Add(new RaidAq20ActionContext());
|
||||
actionContexts.Add(new RaidMcActionContext());
|
||||
actionContexts.Add(new RaidBwlActionContext());
|
||||
actionContexts.Add(new RaidOnyxiaActionContext());
|
||||
actionContexts.Add(new RaidAq20ActionContext());
|
||||
actionContexts.Add(new RaidKarazhanActionContext());
|
||||
actionContexts.Add(new RaidNaxxActionContext());
|
||||
actionContexts.Add(new RaidOsActionContext());
|
||||
actionContexts.Add(new RaidEoEActionContext());
|
||||
actionContexts.Add(new RaidVoAActionContext());
|
||||
actionContexts.Add(new RaidUlduarActionContext());
|
||||
actionContexts.Add(new RaidOnyxiaActionContext());
|
||||
actionContexts.Add(new RaidIccActionContext());
|
||||
actionContexts.Add(new WotlkDungeonUKActionContext());
|
||||
actionContexts.Add(new WotlkDungeonNexActionContext());
|
||||
@@ -137,15 +140,16 @@ void AiObjectContext::BuildSharedTriggerContexts(SharedNamedObjectContextList<Tr
|
||||
triggerContexts.Add(new TriggerContext());
|
||||
triggerContexts.Add(new ChatTriggerContext());
|
||||
triggerContexts.Add(new WorldPacketTriggerContext());
|
||||
triggerContexts.Add(new RaidAq20TriggerContext());
|
||||
triggerContexts.Add(new RaidMcTriggerContext());
|
||||
triggerContexts.Add(new RaidBwlTriggerContext());
|
||||
triggerContexts.Add(new RaidOnyxiaTriggerContext());
|
||||
triggerContexts.Add(new RaidAq20TriggerContext());
|
||||
triggerContexts.Add(new RaidKarazhanTriggerContext());
|
||||
triggerContexts.Add(new RaidNaxxTriggerContext());
|
||||
triggerContexts.Add(new RaidOsTriggerContext());
|
||||
triggerContexts.Add(new RaidEoETriggerContext());
|
||||
triggerContexts.Add(new RaidVoATriggerContext());
|
||||
triggerContexts.Add(new RaidUlduarTriggerContext());
|
||||
triggerContexts.Add(new RaidOnyxiaTriggerContext());
|
||||
triggerContexts.Add(new RaidIccTriggerContext());
|
||||
triggerContexts.Add(new WotlkDungeonUKTriggerContext());
|
||||
triggerContexts.Add(new WotlkDungeonNexTriggerContext());
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* Copyright (C) 2016+ AzerothCore <www.azerothcore.org>, released under GNU GPL v2 license, you may redistribute it
|
||||
* and/or modify it under version 2 of the License, or (at your option), any later version.
|
||||
* Copyright (C) 2016+ AzerothCore <www.azerothcore.org>, released under GNU AGPL v3 license, you may redistribute it
|
||||
* and/or modify it under version 3 of the License, or (at your option), any later version.
|
||||
*/
|
||||
|
||||
#ifndef _PLAYERBOT_AIOBJECTCONTEXT_H
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* Copyright (C) 2016+ AzerothCore <www.azerothcore.org>, released under GNU GPL v2 license, you may redistribute it
|
||||
* and/or modify it under version 2 of the License, or (at your option), any later version.
|
||||
* Copyright (C) 2016+ AzerothCore <www.azerothcore.org>, released under GNU AGPL v3 license, you may redistribute it
|
||||
* and/or modify it under version 3 of the License, or (at your option), any later version.
|
||||
*/
|
||||
|
||||
#include "CustomStrategy.h"
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* Copyright (C) 2016+ AzerothCore <www.azerothcore.org>, released under GNU GPL v2 license, you may redistribute it
|
||||
* and/or modify it under version 2 of the License, or (at your option), any later version.
|
||||
* Copyright (C) 2016+ AzerothCore <www.azerothcore.org>, released under GNU AGPL v3 license, you may redistribute it
|
||||
* and/or modify it under version 3 of the License, or (at your option), any later version.
|
||||
*/
|
||||
|
||||
#ifndef _PLAYERBOT_CUSTOMSTRATEGY_H
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* Copyright (C) 2016+ AzerothCore <www.azerothcore.org>, released under GNU GPL v2 license, you may redistribute it
|
||||
* and/or modify it under version 2 of the License, or (at your option), any later version.
|
||||
* Copyright (C) 2016+ AzerothCore <www.azerothcore.org>, released under GNU AGPL v3 license, you may redistribute it
|
||||
* and/or modify it under version 3 of the License, or (at your option), any later version.
|
||||
*/
|
||||
|
||||
#include "Engine.h"
|
||||
@@ -88,7 +88,7 @@ Engine::~Engine(void)
|
||||
void Engine::Reset()
|
||||
{
|
||||
strategyTypeMask = 0;
|
||||
|
||||
|
||||
ActionNode* action = nullptr;
|
||||
|
||||
while ((action = queue.Pop()) != nullptr)
|
||||
@@ -154,7 +154,7 @@ bool Engine::DoNextAction(Unit* unit, uint32 depth, bool minimal)
|
||||
|
||||
uint32 iterations = 0;
|
||||
uint32 iterationsPerTick = queue.Size() * (minimal ? 2 : sPlayerbotAIConfig->iterationsPerTick);
|
||||
|
||||
|
||||
while (++iterations <= iterationsPerTick)
|
||||
{
|
||||
basket = queue.Peek();
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* Copyright (C) 2016+ AzerothCore <www.azerothcore.org>, released under GNU GPL v2 license, you may redistribute it
|
||||
* and/or modify it under version 2 of the License, or (at your option), any later version.
|
||||
* Copyright (C) 2016+ AzerothCore <www.azerothcore.org>, released under GNU AGPL v3 license, you may redistribute it
|
||||
* and/or modify it under version 3 of the License, or (at your option), any later version.
|
||||
*/
|
||||
|
||||
#ifndef _PLAYERBOT_ENGINE_H
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* Copyright (C) 2016+ AzerothCore <www.azerothcore.org>, released under GNU GPL v2 license, you may redistribute it
|
||||
* and/or modify it under version 2 of the License, or (at your option), any later version.
|
||||
* Copyright (C) 2016+ AzerothCore <www.azerothcore.org>, released under GNU AGPL v3 license, you may redistribute it
|
||||
* and/or modify it under version 3 of the License, or (at your option), any later version.
|
||||
*/
|
||||
|
||||
#include "Event.h"
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user