From dfa7e2bffb4440143f96d82e806ccd841ab97470 Mon Sep 17 00:00:00 2001 From: "Michael Cook (mackal)" Date: Fri, 20 Jul 2018 14:06:07 -0400 Subject: [PATCH] Add completion emote for tasks --- common/version.h | 2 +- utils/sql/db_update_manifest.txt | 1 + utils/sql/git/required/2018_07_20_task_emote.sql | 1 + zone/tasks.cpp | 8 ++++++-- zone/tasks.h | 1 + 5 files changed, 10 insertions(+), 3 deletions(-) create mode 100644 utils/sql/git/required/2018_07_20_task_emote.sql diff --git a/common/version.h b/common/version.h index 15fe7bb22..b95c8ec1d 100644 --- a/common/version.h +++ b/common/version.h @@ -30,7 +30,7 @@ Manifest: https://github.com/EQEmu/Server/blob/master/utils/sql/db_update_manifest.txt */ -#define CURRENT_BINARY_DATABASE_VERSION 9124 +#define CURRENT_BINARY_DATABASE_VERSION 9125 #ifdef BOTS #define CURRENT_BINARY_BOTS_DATABASE_VERSION 9019 #else diff --git a/utils/sql/db_update_manifest.txt b/utils/sql/db_update_manifest.txt index f55ff5235..22a593176 100644 --- a/utils/sql/db_update_manifest.txt +++ b/utils/sql/db_update_manifest.txt @@ -378,6 +378,7 @@ 9122|2018_03_07_ucs_command.sql|SELECT * FROM `command_settings` WHERE `command` LIKE 'ucs'|empty| 9123|2018_07_07_data_buckets.sql|SHOW TABLES LIKE 'data_buckets'|empty| 9124|2018_07_09_tasks.sql|SHOW COLUMNS FROM `tasks` LIKE 'type'|empty| +9125|2018_07_20_task_emote.sql|SHOW COLUMNS FROM `tasks` LIKE 'completion_emote'|empty| # Upgrade conditions: # This won't be needed after this system is implemented, but it is used database that are not diff --git a/utils/sql/git/required/2018_07_20_task_emote.sql b/utils/sql/git/required/2018_07_20_task_emote.sql new file mode 100644 index 000000000..1bccf105e --- /dev/null +++ b/utils/sql/git/required/2018_07_20_task_emote.sql @@ -0,0 +1 @@ +ALTER TABLE `tasks` ADD `completion_emote` VARCHAR(128) NOT NULL DEFAULT ''; diff --git a/zone/tasks.cpp b/zone/tasks.cpp index a00ecc73a..5a3ba7914 100644 --- a/zone/tasks.cpp +++ b/zone/tasks.cpp @@ -118,12 +118,12 @@ bool TaskManager::LoadTasks(int singleTask) query = StringFormat("SELECT `id`, `type`, `duration`, `duration_code`, `title`, `description`, " "`reward`, `rewardid`, `cashreward`, `xpreward`, `rewardmethod`, `faction_reward`," - "`minlevel`, `maxlevel`, `repeatable` FROM `tasks` WHERE `id` < %i", + "`minlevel`, `maxlevel`, `repeatable`, `completion_emote` FROM `tasks` WHERE `id` < %i", MAXTASKS); } else query = StringFormat("SELECT `id`, `type`, `duration`, `duration_code`, `title`, `description`, " "`reward`, `rewardid`, `cashreward`, `xpreward`, `rewardmethod`, `faction_reward`," - "`minlevel`, `maxlevel`, `repeatable` FROM `tasks` WHERE `id` = %i", + "`minlevel`, `maxlevel`, `repeatable`, `completion_emote` FROM `tasks` WHERE `id` = %i", singleTask); const char *ERR_MYSQLERROR = "[TASKS]Error in TaskManager::LoadTasks: %s"; @@ -159,6 +159,7 @@ bool TaskManager::LoadTasks(int singleTask) Tasks[taskID]->MinLevel = atoi(row[12]); Tasks[taskID]->MaxLevel = atoi(row[13]); Tasks[taskID]->Repeatable = atoi(row[14]); + Tasks[taskID]->completion_emote = row[15]; Tasks[taskID]->ActivityCount = 0; Tasks[taskID]->SequenceMode = ActivitiesSequential; Tasks[taskID]->LastStep = 0; @@ -2020,6 +2021,9 @@ void ClientTaskState::RewardTask(Client *c, TaskInformation *Task) { } } + if (!Task->completion_emote.empty()) + c->SendColoredText(CC_Yellow, Task->completion_emote); // unsure if they use this packet or color, should work + // just use normal NPC faction ID stuff if (Task->faction_reward) c->SetFactionLevel(c->CharacterID(), Task->faction_reward, c->GetBaseClass(), c->GetBaseRace(), c->GetDeity()); diff --git a/zone/tasks.h b/zone/tasks.h index 70053a939..1505a50a1 100644 --- a/zone/tasks.h +++ b/zone/tasks.h @@ -142,6 +142,7 @@ struct TaskInformation { std::string Description; // max length 4000, 2048 on Tit std::string Reward; std::string item_link; // max length 128 older clients, item link gets own string + std::string completion_emote; // emote after completing task, yellow. Maybe should make more generic ... but yellow for now! int RewardID; int CashReward; // Expressed in copper int XPReward;