[Bots] Add Data Bucket support to Bot Spell Entries. (#2505)

* [Bots] Add Data Bucket support to Bot Spell Entries.

* Cleanup Formatting and Functions

* Consolidated "CheckDataBucket" Functions

* Remove unneeded CastToClient

* Add choice to format data buckets as either "character-id" or "bot-id" to Bot spells

* Fix Formatting

* Clean up.

* Update npc.h

* Fix Bot Casting issues

* Formatting

Co-authored-by: Kinglykrab <kinglykrab@gmail.com>
Co-authored-by: Kinglykrab <89047260+Kinglykrab@users.noreply.github.com>
This commit is contained in:
Aeadoin
2022-11-06 17:06:01 -05:00
committed by GitHub
parent de63eaa4b2
commit 7e7358e9b6
18 changed files with 623 additions and 367 deletions
-143
View File
@@ -11607,149 +11607,6 @@ void Client::SendReloadCommandMessages() {
SendChatLineBreak();
}
bool Client::CheckMerchantDataBucket(uint8 bucket_comparison, std::string bucket_value, std::string player_value)
{
std::vector<std::string> bucket_checks;
bool found = false;
bool passes = false;
switch (bucket_comparison) {
case MerchantBucketComparison::BucketEqualTo:
{
if (player_value != bucket_value) {
break;
}
passes = true;
break;
}
case MerchantBucketComparison::BucketNotEqualTo:
{
if (player_value == bucket_value) {
break;
}
passes = true;
break;
}
case MerchantBucketComparison::BucketGreaterThanOrEqualTo:
{
if (player_value < bucket_value) {
break;
}
passes = true;
break;
}
case MerchantBucketComparison::BucketLesserThanOrEqualTo:
{
if (player_value > bucket_value) {
break;
}
passes = true;
break;
}
case MerchantBucketComparison::BucketGreaterThan:
{
if (player_value <= bucket_value) {
break;
}
passes = true;
break;
}
case MerchantBucketComparison::BucketLesserThan:
{
if (player_value >= bucket_value) {
break;
}
passes = true;
break;
}
case MerchantBucketComparison::BucketIsAny:
{
bucket_checks = Strings::Split(bucket_value, "|");
if (bucket_checks.empty()) {
break;
}
for (const auto &bucket : bucket_checks) {
if (player_value == bucket) {
found = true;
break;
}
}
if (!found) {
break;
}
passes = true;
break;
}
case MerchantBucketComparison::BucketIsNotAny:
{
bucket_checks = Strings::Split(bucket_value, "|");
if (bucket_checks.empty()) {
break;
}
for (const auto &bucket : bucket_checks) {
if (player_value == bucket) {
found = true;
break;
}
}
if (found) {
break;
}
passes = true;
break;
}
case MerchantBucketComparison::BucketIsBetween:
{
bucket_checks = Strings::Split(bucket_value, "|");
if (bucket_checks.empty()) {
break;
}
if (
std::stoll(player_value) < std::stoll(bucket_checks[0]) ||
std::stoll(player_value) > std::stoll(bucket_checks[1])
) {
break;
}
passes = true;
break;
}
case MerchantBucketComparison::BucketIsNotBetween:
{
bucket_checks = Strings::Split(bucket_value, "|");
if (bucket_checks.empty()) {
break;
}
if (
std::stoll(player_value) >= std::stoll(bucket_checks[0]) &&
std::stoll(player_value) <= std::stoll(bucket_checks[1])
) {
break;
}
passes = true;
break;
}
}
return passes;
}
std::map<std::string,std::string> Client::GetMerchantDataBuckets()
{
std::map<std::string,std::string> merchant_data_buckets;