mirror of
https://github.com/EQEmu/Server.git
synced 2026-09-01 15:46:37 +00:00
[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:
Executable → Regular
+176
-1
@@ -1875,7 +1875,7 @@ bool Zone::Depop(bool StartSpawnTimer) {
|
||||
// clear spell cache
|
||||
database.ClearNPCSpells();
|
||||
database.ClearBotSpells();
|
||||
|
||||
|
||||
zone->spawn_group_list.ReloadSpawnGroups();
|
||||
|
||||
return true;
|
||||
@@ -2976,3 +2976,178 @@ std::string Zone::GetAAName(int aa_id)
|
||||
|
||||
return std::string();
|
||||
}
|
||||
|
||||
bool Zone::CheckDataBucket(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 BucketComparison::BucketEqualTo:
|
||||
{
|
||||
if (player_value != bucket_value) {
|
||||
break;
|
||||
}
|
||||
|
||||
passes = true;
|
||||
break;
|
||||
}
|
||||
case BucketComparison::BucketNotEqualTo:
|
||||
{
|
||||
if (player_value == bucket_value) {
|
||||
break;
|
||||
}
|
||||
|
||||
passes = true;
|
||||
break;
|
||||
}
|
||||
case BucketComparison::BucketGreaterThanOrEqualTo:
|
||||
{
|
||||
if (!Strings::IsNumber(player_value) || !Strings::IsNumber(bucket_value)) {
|
||||
break;
|
||||
}
|
||||
|
||||
if (std::stoll(player_value) < std::stoll(bucket_value)) {
|
||||
break;
|
||||
}
|
||||
|
||||
passes = true;
|
||||
break;
|
||||
}
|
||||
case BucketComparison::BucketLesserThanOrEqualTo:
|
||||
{
|
||||
if (!Strings::IsNumber(player_value) || !Strings::IsNumber(bucket_value)) {
|
||||
break;
|
||||
}
|
||||
|
||||
if (std::stoll(player_value) > std::stoll(bucket_value)) {
|
||||
break;
|
||||
}
|
||||
|
||||
passes = true;
|
||||
break;
|
||||
}
|
||||
case BucketComparison::BucketGreaterThan:
|
||||
{
|
||||
if (!Strings::IsNumber(player_value) || !Strings::IsNumber(bucket_value)) {
|
||||
break;
|
||||
}
|
||||
|
||||
if (std::stoll(player_value) <= std::stoll(bucket_value)) {
|
||||
break;
|
||||
}
|
||||
|
||||
passes = true;
|
||||
break;
|
||||
}
|
||||
case BucketComparison::BucketLesserThan:
|
||||
{
|
||||
if (!Strings::IsNumber(player_value) || !Strings::IsNumber(bucket_value)) {
|
||||
break;
|
||||
}
|
||||
|
||||
if (std::stoll(player_value) >= std::stoll(bucket_value)) {
|
||||
break;
|
||||
}
|
||||
|
||||
passes = true;
|
||||
|
||||
break;
|
||||
}
|
||||
case BucketComparison::BucketIsAny:
|
||||
{
|
||||
bucket_checks = Strings::Split(bucket_value, "|");
|
||||
if (bucket_checks.empty()) {
|
||||
break;
|
||||
}
|
||||
|
||||
if (std::find(bucket_checks.begin(), bucket_checks.end(), player_value) != bucket_checks.end()) {
|
||||
found = true;
|
||||
}
|
||||
|
||||
if (!found) {
|
||||
break;
|
||||
}
|
||||
|
||||
passes = true;
|
||||
break;
|
||||
}
|
||||
case BucketComparison::BucketIsNotAny:
|
||||
{
|
||||
bucket_checks = Strings::Split(bucket_value, "|");
|
||||
if (bucket_checks.empty()) {
|
||||
break;
|
||||
}
|
||||
|
||||
if (std::find(bucket_checks.begin(), bucket_checks.end(), player_value) != bucket_checks.end()) {
|
||||
found = true;
|
||||
}
|
||||
|
||||
if (found) {
|
||||
break;
|
||||
}
|
||||
|
||||
passes = true;
|
||||
break;
|
||||
}
|
||||
case BucketComparison::BucketIsBetween:
|
||||
{
|
||||
bucket_checks = Strings::Split(bucket_value, "|");
|
||||
if (bucket_checks.empty()) {
|
||||
break;
|
||||
}
|
||||
|
||||
if (
|
||||
!Strings::IsNumber(player_value) ||
|
||||
!Strings::IsNumber(bucket_checks[0]) ||
|
||||
!Strings::IsNumber(bucket_checks[1])
|
||||
) {
|
||||
break;
|
||||
}
|
||||
|
||||
if (
|
||||
!EQ::ValueWithin(
|
||||
std::stoll(player_value),
|
||||
std::stoll(bucket_checks[0]),
|
||||
std::stoll(bucket_checks[1])
|
||||
)
|
||||
) {
|
||||
break;
|
||||
}
|
||||
|
||||
passes = true;
|
||||
break;
|
||||
}
|
||||
case BucketComparison::BucketIsNotBetween:
|
||||
{
|
||||
bucket_checks = Strings::Split(bucket_value, "|");
|
||||
if (bucket_checks.empty()) {
|
||||
break;
|
||||
}
|
||||
|
||||
if (
|
||||
!Strings::IsNumber(player_value) ||
|
||||
!Strings::IsNumber(bucket_checks[0]) ||
|
||||
!Strings::IsNumber(bucket_checks[1])
|
||||
) {
|
||||
break;
|
||||
}
|
||||
|
||||
if (
|
||||
EQ::ValueWithin(
|
||||
std::stoll(player_value),
|
||||
std::stoll(bucket_checks[0]),
|
||||
std::stoll(bucket_checks[1])
|
||||
)
|
||||
) {
|
||||
break;
|
||||
}
|
||||
|
||||
passes = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return passes;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user