mirror of
https://github.com/EQEmu/Server.git
synced 2025-12-12 22:01:30 +00:00
792 lines
26 KiB
SQL
792 lines
26 KiB
SQL
-- '2015_09_30_bots' sql script file
|
|
-- current as of 10/09/2015
|
|
--
|
|
-- Use eqemu_update.pl to administer this script
|
|
|
|
|
|
-- Clean-up
|
|
DROP VIEW IF EXISTS `vwBotCharacterMobs`;
|
|
DROP VIEW IF EXISTS `vwBotGroups`;
|
|
DROP VIEW IF EXISTS `vwGroups`;
|
|
DROP VIEW IF EXISTS `vwGuildMembers`;
|
|
|
|
DROP VIEW IF EXISTS `vw_bot_character_mobs`;
|
|
DROP VIEW IF EXISTS `vw_bot_groups`;
|
|
DROP VIEW IF EXISTS `vw_groups`;
|
|
DROP VIEW IF EXISTS `vw_guild_members`;
|
|
|
|
DROP FUNCTION IF EXISTS `GetMobType`;
|
|
DROP FUNCTION IF EXISTS `GetMobTypeByName`;
|
|
DROP FUNCTION IF EXISTS `GetMobTypeByID`;
|
|
|
|
DROP PROCEDURE IF EXISTS `LoadBotsSchema`;
|
|
|
|
|
|
DELIMITER $$
|
|
|
|
CREATE PROCEDURE `LoadBotsSchema` ()
|
|
BEGIN
|
|
-- Activate
|
|
UPDATE `spawn2` SET `enabled` = 1 WHERE `id` IN (59297,59298);
|
|
|
|
|
|
-- Alter
|
|
IF ((SELECT COUNT(*) FROM `information_schema`.`KEY_COLUMN_USAGE` WHERE `TABLE_SCHEMA` = DATABASE() AND `TABLE_NAME` = 'guild_members' AND `CONSTRAINT_NAME` = 'PRIMARY') > 0) THEN
|
|
-- IF ((SHOW KEYS IN `guild_members` WHERE `Key_name` LIKE 'PRIMARY') != '') THEN
|
|
ALTER TABLE `guild_members` DROP PRIMARY KEY;
|
|
END IF;
|
|
|
|
IF ((SELECT COUNT(*) FROM `information_schema`.`KEY_COLUMN_USAGE` WHERE `TABLE_SCHEMA` = DATABASE() AND `TABLE_NAME` = 'group_id' AND `CONSTRAINT_NAME` = 'PRIMARY') > 0) THEN
|
|
-- IF ((SHOW KEYS IN `group_id` WHERE `Key_name` LIKE 'PRIMARY') != '') THEN
|
|
ALTER TABLE `group_id` DROP PRIMARY KEY;
|
|
END IF;
|
|
ALTER TABLE `group_id` ADD PRIMARY KEY USING BTREE(`groupid`, `charid`, `name`, `ismerc`);
|
|
--
|
|
-- From original bots.sql (for reference)
|
|
-- ALTER TABLE `group_id` DROP PRIMARY KEY, ADD PRIMARY KEY USING BTREE(`groupid`, `charid`, `name`);
|
|
-- ALTER TABLE `guild_members` DROP PRIMARY KEY;
|
|
-- ALTER TABLE `group_id` ADD UNIQUE INDEX `U_group_id_1`(`name`);
|
|
-- ALTER TABLE `group_leaders` ADD UNIQUE INDEX `U_group_leaders_1`(`leadername`);
|
|
|
|
|
|
-- Commands
|
|
IF ((SELECT COUNT(`command`) FROM `commands` WHERE `command` LIKE 'bot') = 0) THEN
|
|
INSERT INTO `commands` VALUES ('bot', '0');
|
|
END IF;
|
|
|
|
|
|
-- Rules
|
|
IF ((SELECT COUNT(`rule_name`) FROM `rule_values` WHERE `rule_name` LIKE 'Bots:BotAAExpansion') > 0) THEN
|
|
UPDATE `rule_values` SET `rule_name` = 'Bots:AAExpansion' WHERE `rule_name` LIKE 'Bots:BotAAExpansion';
|
|
END IF;
|
|
IF ((SELECT COUNT(`rule_name`) FROM `rule_values` WHERE `rule_name` LIKE 'Bots:AAExpansion') = 0) THEN
|
|
INSERT INTO `rule_values` VALUES ('1', 'Bots:AAExpansion', '8', 'The expansion through which bots will obtain AAs');
|
|
END IF;
|
|
|
|
IF ((SELECT COUNT(`rule_name`) FROM `rule_values` WHERE `rule_name` LIKE 'Bots:CreateBotCount') > 0) THEN
|
|
UPDATE `rule_values` SET `rule_name` = 'Bots:CreationLimit' WHERE `rule_name` LIKE 'Bots:CreateBotCount';
|
|
END IF;
|
|
IF ((SELECT COUNT(`rule_name`) FROM `rule_values` WHERE `rule_name` LIKE 'Bots:CreationLimit') = 0) THEN
|
|
INSERT INTO `rule_values` VALUES ('1', 'Bots:CreationLimit', '150', 'Number of bots that each account can create');
|
|
END IF;
|
|
|
|
IF ((SELECT COUNT(`rule_name`) FROM `rule_values` WHERE `rule_name` LIKE 'Bots:BotFinishBuffing') > 0) THEN
|
|
UPDATE `rule_values` SET `rule_name` = 'Bots:FinishBuffing' WHERE `rule_name` LIKE 'Bots:BotFinishBuffing';
|
|
END IF;
|
|
IF ((SELECT COUNT(`rule_name`) FROM `rule_values` WHERE `rule_name` LIKE 'Bots:FinishBuffing') = 0) THEN
|
|
INSERT INTO `rule_values` VALUES ('1', 'Bots:FinishBuffing', 'false', 'Allow for buffs to complete even if the bot caster is out of mana. Only affects buffing out of combat.');
|
|
END IF;
|
|
|
|
IF ((SELECT COUNT(`rule_name`) FROM `rule_values` WHERE `rule_name` LIKE 'Bots:BotGroupBuffing') > 0) THEN
|
|
UPDATE `rule_values` SET `rule_name` = 'Bots:GroupBuffing' WHERE `rule_name` LIKE 'Bots:BotGroupBuffing';
|
|
END IF;
|
|
IF ((SELECT COUNT(`rule_name`) FROM `rule_values` WHERE `rule_name` LIKE 'Bots:GroupBuffing') = 0) THEN
|
|
INSERT INTO `rule_values` VALUES ('1', 'Bots:GroupBuffing', 'false', 'Bots will cast single target buffs as group buffs, default is false for single. Does not make single target buffs work for MGB.');
|
|
END IF;
|
|
|
|
IF ((SELECT COUNT(`rule_name`) FROM `rule_values` WHERE `rule_name` LIKE 'Bots:BotManaRegen') > 0) THEN
|
|
UPDATE `rule_values` SET `rule_name` = 'Bots:ManaRegen' WHERE `rule_name` LIKE 'Bots:BotManaRegen';
|
|
END IF;
|
|
IF ((SELECT COUNT(`rule_name`) FROM `rule_values` WHERE `rule_name` LIKE 'Bots:ManaRegen') = 0) THEN
|
|
INSERT INTO `rule_values` VALUES ('1', 'Bots:ManaRegen', '3.0', 'Adjust mana regen for bots, 1 is fast and higher numbers slow it down 3 is about the same as players.');
|
|
END IF;
|
|
|
|
IF ((SELECT COUNT(`rule_name`) FROM `rule_values` WHERE `rule_name` LIKE 'Bots:BotQuest') > 0) THEN
|
|
UPDATE `rule_values` SET `rule_name` = 'Bots:QuestableSpawnLimit' WHERE `rule_name` LIKE 'Bots:BotQuest';
|
|
END IF;
|
|
IF ((SELECT COUNT(`rule_name`) FROM `rule_values` WHERE `rule_name` LIKE 'Bots:QuestableSpawnLimit') = 0) THEN
|
|
INSERT INTO `rule_values` VALUES ('1', 'Bots:QuestableSpawnLimit', 'false', 'Optional quest method to manage bot spawn limits using the quest_globals name bot_spawn_limit, see: /bazaar/Aediles_Thrall.pl');
|
|
END IF;
|
|
|
|
IF ((SELECT COUNT(`rule_name`) FROM `rule_values` WHERE `rule_name` LIKE 'Bots:BotSpellQuest') > 0) THEN
|
|
UPDATE `rule_values` SET `rule_name` = 'Bots:QuestableSpells' WHERE `rule_name` LIKE 'Bots:BotSpellQuest';
|
|
END IF;
|
|
IF ((SELECT COUNT(`rule_name`) FROM `rule_values` WHERE `rule_name` LIKE 'Bots:QuestableSpells') = 0) THEN
|
|
INSERT INTO `rule_values` VALUES ('1', 'Bots:QuestableSpells', 'false', 'Anita Thrall\'s (Anita_Thrall.pl) Bot Spell Scriber quests.');
|
|
END IF;
|
|
|
|
IF ((SELECT COUNT(`rule_name`) FROM `rule_values` WHERE `rule_name` LIKE 'Bots:SpawnBotCount') > 0) THEN
|
|
UPDATE `rule_values` SET `rule_name` = 'Bots:SpawnLimit' WHERE `rule_name` LIKE 'Bots:SpawnBotCount';
|
|
END IF;
|
|
IF ((SELECT COUNT(`rule_name`) FROM `rule_values` WHERE `rule_name` LIKE 'Bots:SpawnLimit') = 0) THEN
|
|
INSERT INTO `rule_values` VALUES ('1', 'Bots:SpawnLimit', '71', 'Number of bots a character can have spawned at one time, You + 71 bots is a 12 group raid');
|
|
END IF;
|
|
|
|
|
|
-- Tables
|
|
CREATE TABLE `bot_data` (
|
|
`bot_id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT,
|
|
`owner_id` INT(11) UNSIGNED NOT NULL,
|
|
`spells_id` INT(11) UNSIGNED NOT NULL DEFAULT '0',
|
|
`name` VARCHAR(64) NOT NULL DEFAULT '',
|
|
`last_name` VARCHAR(64) NOT NULL DEFAULT '', -- Change unused (64) from (32)
|
|
`title` VARCHAR(32) NOT NULL DEFAULT '', -- Unused
|
|
`suffix` VARCHAR(32) NOT NULL DEFAULT '', -- Unused
|
|
`zone_id` SMALLINT(6) NOT NULL DEFAULT '0',
|
|
`gender` TINYINT(2) NOT NULL DEFAULT '0',
|
|
`race` SMALLINT(5) NOT NULL DEFAULT '0',
|
|
`class` TINYINT(2) NOT NULL DEFAULT '0',
|
|
`level` TINYINT(2) UNSIGNED NOT NULL DEFAULT '0',
|
|
`deity` INT(11) UNSIGNED NOT NULL DEFAULT '0', -- Unused
|
|
`creation_day` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
`last_spawn` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',
|
|
`time_spawned` INT(10) UNSIGNED NOT NULL DEFAULT '0',
|
|
`size` FLOAT NOT NULL DEFAULT '0',
|
|
`face` INT(10) NOT NULL DEFAULT '1',
|
|
`hair_color` INT(10) NOT NULL DEFAULT '1',
|
|
`hair_style` INT(10) NOT NULL DEFAULT '1',
|
|
`beard` INT(10) NOT NULL DEFAULT '0',
|
|
`beard_color` INT(10) NOT NULL DEFAULT '1',
|
|
`eye_color_1` INT(10) NOT NULL DEFAULT '1',
|
|
`eye_color_2` INT(10) NOT NULL DEFAULT '1',
|
|
`drakkin_heritage` INT(10) NOT NULL DEFAULT '0',
|
|
`drakkin_tattoo` INT(10) NOT NULL DEFAULT '0',
|
|
`drakkin_details` INT(10) NOT NULL DEFAULT '0',
|
|
`ac` SMALLINT(5) NOT NULL DEFAULT '0',
|
|
`atk` MEDIUMINT(9) NOT NULL DEFAULT '0',
|
|
`hp` INTEGER NOT NULL DEFAULT '0',
|
|
`mana` INTEGER NOT NULL DEFAULT '0',
|
|
`str` MEDIUMINT(8) NOT NULL DEFAULT '75',
|
|
`sta` MEDIUMINT(8) NOT NULL DEFAULT '75',
|
|
`cha` MEDIUMINT(8) NOT NULL DEFAULT '75',
|
|
`dex` MEDIUMINT(8) NOT NULL DEFAULT '75',
|
|
`int` MEDIUMINT(8) NOT NULL DEFAULT '75',
|
|
`agi` MEDIUMINT(8) NOT NULL DEFAULT '75',
|
|
`wis` MEDIUMINT(8) NOT NULL DEFAULT '75',
|
|
`fire` SMALLINT(5) NOT NULL DEFAULT '0',
|
|
`cold` SMALLINT(5) NOT NULL DEFAULT '0',
|
|
`magic` SMALLINT(5) NOT NULL DEFAULT '0',
|
|
`poison` SMALLINT(5) NOT NULL DEFAULT '0',
|
|
`disease` SMALLINT(5) NOT NULL DEFAULT '0',
|
|
`corruption` SMALLINT(5) NOT NULL DEFAULT '0',
|
|
`show_helm` INT(11) UNSIGNED NOT NULL DEFAULT '0', -- Unused
|
|
PRIMARY KEY (`bot_id`)
|
|
) ENGINE=InnoDB;
|
|
CREATE TABLE `bot_inspect_messages` (
|
|
`bot_id` INT(11) UNSIGNED NOT NULL,
|
|
`inspect_message` VARCHAR(256) NOT NULL DEFAULT '',
|
|
PRIMARY KEY (`bot_id`),
|
|
INDEX `bot_id` (`bot_id`)
|
|
) ENGINE=InnoDB;
|
|
IF ((SELECT COUNT(*) FROM `information_schema`.`TABLES` WHERE `TABLE_SCHEMA` = DATABASE() AND `TABLE_NAME` = 'bots') > 0) THEN
|
|
-- IF ((SHOW TABLES LIKE 'bots') != '') THEN
|
|
INSERT INTO `bot_data` (
|
|
`bot_id`,
|
|
`owner_id`,
|
|
`spells_id`,
|
|
`name`,
|
|
`last_name`,
|
|
`zone_id`,
|
|
`gender`,
|
|
`race`,
|
|
`class`,
|
|
`level`,
|
|
`creation_day`,
|
|
`last_spawn`,
|
|
`time_spawned`,
|
|
`size`,
|
|
`face`,
|
|
`hair_color`,
|
|
`hair_style`,
|
|
`beard`,
|
|
`beard_color`,
|
|
`eye_color_1`,
|
|
`eye_color_2`,
|
|
`drakkin_heritage`,
|
|
`drakkin_tattoo`,
|
|
`drakkin_details`,
|
|
`ac`,
|
|
`atk`,
|
|
`hp`,
|
|
`mana`,
|
|
`str`,
|
|
`sta`,
|
|
`cha`,
|
|
`dex`,
|
|
`int`,
|
|
`agi`,
|
|
`wis`,
|
|
`fire`,
|
|
`cold`,
|
|
`magic`,
|
|
`poison`,
|
|
`disease`,
|
|
`corruption`
|
|
)
|
|
SELECT
|
|
`BotID`,
|
|
`BotOwnerCharacterID`,
|
|
`BotSpellsID`,
|
|
`Name`,
|
|
`LastName`,
|
|
`LastZoneId`,
|
|
`Gender`,
|
|
`Race`,
|
|
`Class`,
|
|
`BotLevel`,
|
|
`BotCreateDate`,
|
|
`LastSpawnDate`,
|
|
`TotalPlayTime`,
|
|
`Size`,
|
|
`Face`,
|
|
`LuclinHairColor`,
|
|
`LuclinHairStyle`,
|
|
`LuclinBeard`,
|
|
`LuclinBeardColor`,
|
|
`LuclinEyeColor`,
|
|
`LuclinEyeColor2`,
|
|
`DrakkinHeritage`,
|
|
`DrakkinTattoo`,
|
|
`DrakkinDetails`,
|
|
`AC`,
|
|
`ATK`,
|
|
`HP`,
|
|
`Mana`,
|
|
`STR`,
|
|
`STA`,
|
|
`CHA`,
|
|
`DEX`,
|
|
`_INT`,
|
|
`AGI`,
|
|
`WIS`,
|
|
`FR`,
|
|
`CR`,
|
|
`MR`,
|
|
`PR`,
|
|
`DR`,
|
|
`Corrup`
|
|
FROM `bots`;
|
|
|
|
INSERT INTO `bot_inspect_messages` (
|
|
`bot_id`,
|
|
`inspect_message`
|
|
)
|
|
SELECT
|
|
`BotID`,
|
|
`BotInspectMessage`
|
|
FROM `bots`;
|
|
|
|
RENAME TABLE `bots` TO `bots_old`;
|
|
END IF;
|
|
|
|
CREATE TABLE `bot_stances` (
|
|
`bot_id` INT(11) UNSIGNED NOT NULL DEFAULT '0',
|
|
`stance_id` TINYINT UNSIGNED NOT NULL DEFAULT '0',
|
|
PRIMARY KEY (`bot_id`),
|
|
CONSTRAINT `FK_bot_stances_1` FOREIGN KEY (`bot_id`) REFERENCES `bot_data` (`bot_id`)
|
|
);
|
|
IF ((SELECT COUNT(*) FROM `information_schema`.`TABLES` WHERE `TABLE_SCHEMA` = DATABASE() AND `TABLE_NAME` = 'botstances') > 0) THEN
|
|
-- IF ((SHOW TABLES LIKE 'botstances') != '') THEN
|
|
INSERT INTO `bot_stances` (
|
|
`bot_id`,
|
|
`stance_id`
|
|
)
|
|
SELECT
|
|
`BotID`,
|
|
`StanceID`
|
|
FROM `botstances`;
|
|
|
|
RENAME TABLE `botstances` TO `botstances_old`;
|
|
END IF;
|
|
|
|
CREATE TABLE `bot_timers` (
|
|
`bot_id` INT(11) UNSIGNED NOT NULL DEFAULT '0',
|
|
`timer_id` INT(11) UNSIGNED NOT NULL DEFAULT '0',
|
|
`timer_value` INT(11) UNSIGNED NOT NULL DEFAULT '0',
|
|
PRIMARY KEY (`bot_id`),
|
|
CONSTRAINT `FK_bot_timers_1` FOREIGN KEY (`bot_id`) REFERENCES `bot_data` (`bot_id`)
|
|
);
|
|
IF ((SELECT COUNT(*) FROM `information_schema`.`TABLES` WHERE `TABLE_SCHEMA` = DATABASE() AND `TABLE_NAME` = 'bottimers') > 0) THEN
|
|
-- IF ((SHOW TABLES LIKE 'bottimers') != '') THEN
|
|
INSERT INTO `bot_timers` (
|
|
`bot_id`,
|
|
`timer_id`,
|
|
`timer_value`
|
|
)
|
|
SELECT
|
|
`BotID`,
|
|
`TimerID`,
|
|
`Value`
|
|
FROM `bottimers`;
|
|
|
|
RENAME TABLE `bottimers` TO `bottimers_old`;
|
|
END IF;
|
|
|
|
CREATE TABLE `bot_buffs` (
|
|
`buffs_index` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT,
|
|
`bot_id` INT(11) UNSIGNED NOT NULL DEFAULT '0',
|
|
`spell_id` INT(10) UNSIGNED NOT NULL DEFAULT '0',
|
|
`caster_level` TINYINT(3) UNSIGNED NOT NULL DEFAULT '0',
|
|
`duration_formula` INT(10) UNSIGNED NOT NULL DEFAULT '0',
|
|
`tics_remaining` INT(11) UNSIGNED NOT NULL DEFAULT '0',
|
|
`poison_counters` INT(11) UNSIGNED NOT NULL DEFAULT '0',
|
|
`disease_counters` INT(11) UNSIGNED NOT NULL DEFAULT '0',
|
|
`curse_counters` INT(11) UNSIGNED NOT NULL DEFAULT '0',
|
|
`corruption_counters` INT(11) UNSIGNED NOT NULL DEFAULT '0',
|
|
`numhits` INT(10) UNSIGNED NOT NULL DEFAULT '0',
|
|
`melee_rune` INT(10) UNSIGNED NOT NULL DEFAULT '0',
|
|
`magic_rune` INT(10) UNSIGNED NOT NULL DEFAULT '0',
|
|
`dot_rune` INT(10) UNSIGNED NOT NULL DEFAULT '0', -- Fix
|
|
`persistent` TINYINT(1) NOT NULL DEFAULT '0',
|
|
`caston_x` INT(10) NOT NULL DEFAULT '0', -- Fix
|
|
`caston_y` INT(10) NOT NULL DEFAULT '0', -- Fix
|
|
`caston_z` INT(10) NOT NULL DEFAULT '0', -- Fix
|
|
`extra_di_chance` INT(10) UNSIGNED NOT NULL DEFAULT '0', -- Fix
|
|
`instrument_mod` INT(10) NOT NULL DEFAULT '10', -- Unused
|
|
PRIMARY KEY (`buffs_index`),
|
|
KEY `FK_bot_buffs_1` (`bot_id`),
|
|
CONSTRAINT `FK_bot_buffs_1` FOREIGN KEY (`bot_id`) REFERENCES `bot_data` (`bot_id`)
|
|
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=latin1;
|
|
IF ((SELECT COUNT(*) FROM `information_schema`.`TABLES` WHERE `TABLE_SCHEMA` = DATABASE() AND `TABLE_NAME` = 'botbuffs') > 0) THEN
|
|
-- IF ((SHOW TABLES LIKE 'botbuffs') != '') THEN
|
|
INSERT INTO `bot_buffs` (
|
|
`buffs_index`,
|
|
`bot_id`,
|
|
`spell_id`,
|
|
`caster_level`,
|
|
`duration_formula`,
|
|
`tics_remaining`,
|
|
`poison_counters`,
|
|
`disease_counters`,
|
|
`curse_counters`,
|
|
`corruption_counters`,
|
|
`numhits`,
|
|
`melee_rune`,
|
|
`magic_rune`,
|
|
`persistent`
|
|
)
|
|
SELECT
|
|
`BotBuffId`,
|
|
`BotId`,
|
|
`SpellId`,
|
|
`CasterLevel`,
|
|
`DurationFormula`,
|
|
`TicsRemaining`,
|
|
`PoisonCounters`,
|
|
`DiseaseCounters`,
|
|
`CurseCounters`,
|
|
`CorruptionCounters`,
|
|
`HitCount`,
|
|
`MeleeRune`,
|
|
`MagicRune`,
|
|
`Persistent`
|
|
FROM `botbuffs`;
|
|
|
|
IF ((SELECT COUNT(*) FROM `information_schema`.`COLUMNS` WHERE `TABLE_SCHEMA` = DATABASE() AND `TABLE_NAME` = 'botbuffs' AND `COLUMN_NAME` = 'dot_rune') > 0) THEN
|
|
-- IF ((SHOW COLUMNS FROM `botbuffs` LIKE 'dot_rune') != '') THEN
|
|
UPDATE `bot_buffs`
|
|
SET `dot_rune` = `botbuffs`.`dot_rune`
|
|
WHERE `buffs_index` = `botbuffs`.`BotBuffId` AND `bot_id` = `botbuffs`.`BotID`;
|
|
END IF;
|
|
|
|
IF ((SELECT COUNT(*) FROM `information_schema`.`COLUMNS` WHERE `TABLE_SCHEMA` = DATABASE() AND `TABLE_NAME` = 'botbuffs' AND `COLUMN_NAME` = 'caston_x') > 0) THEN
|
|
-- IF ((SHOW COLUMNS FROM `botbuffs` LIKE 'caston_x') != '') THEN
|
|
UPDATE `bot_buffs`
|
|
SET `caston_x` = `botbuffs`.`caston_x`
|
|
WHERE `buffs_index` = `botbuffs`.`BotBuffId` AND `bot_id` = `botbuffs`.`BotID`;
|
|
END IF;
|
|
|
|
IF ((SELECT COUNT(*) FROM `information_schema`.`COLUMNS` WHERE `TABLE_SCHEMA` = DATABASE() AND `TABLE_NAME` = 'botbuffs' AND `COLUMN_NAME` = 'caston_y') > 0) THEN
|
|
-- IF ((SHOW COLUMNS FROM `botbuffs` LIKE 'caston_y') != '') THEN
|
|
UPDATE `bot_buffs`
|
|
SET `caston_y` = `botbuffs`.`caston_y`
|
|
WHERE `buffs_index` = `botbuffs`.`BotBuffId` AND `bot_id` = `botbuffs`.`BotID`;
|
|
END IF;
|
|
|
|
IF ((SELECT COUNT(*) FROM `information_schema`.`COLUMNS` WHERE `TABLE_SCHEMA` = DATABASE() AND `TABLE_NAME` = 'botbuffs' AND `COLUMN_NAME` = 'caston_z') > 0) THEN
|
|
-- IF ((SHOW COLUMNS FROM `botbuffs` LIKE 'caston_z') != '') THEN
|
|
UPDATE `bot_buffs`
|
|
SET `caston_z` = `botbuffs`.`caston_z`
|
|
WHERE `buffs_index` = `botbuffs`.`BotBuffId` AND `bot_id` = `botbuffs`.`BotID`;
|
|
END IF;
|
|
|
|
IF ((SELECT COUNT(*) FROM `information_schema`.`COLUMNS` WHERE `TABLE_SCHEMA` = DATABASE() AND `TABLE_NAME` = 'botbuffs' AND `COLUMN_NAME` = 'ExtraDIChance') > 0) THEN
|
|
-- IF ((SHOW COLUMNS FROM `botbuffs` LIKE 'ExtraDIChance') != '') THEN
|
|
UPDATE `bot_buffs`
|
|
SET `extra_di_chance` = `botbuffs`.`ExtraDIChance`
|
|
WHERE `buffs_index` = `botbuffs`.`BotBuffId` AND `bot_id` = `botbuffs`.`BotID`;
|
|
END IF;
|
|
|
|
RENAME TABLE `botbuffs` TO `botbuffs_old`;
|
|
END IF;
|
|
|
|
CREATE TABLE `bot_inventories` (
|
|
`inventories_index` INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
|
|
`bot_id` INT(11) UNSIGNED NOT NULL DEFAULT '0',
|
|
`slot_id` MEDIUMINT(7) UNSIGNED NOT NULL DEFAULT '0',
|
|
`item_id` INT(11) UNSIGNED NULL DEFAULT '0',
|
|
`inst_charges` TINYINT(3) UNSIGNED DEFAULT 0,
|
|
`inst_color` INT(11) UNSIGNED NOT NULL DEFAULT '0',
|
|
`inst_no_drop` TINYINT(1) UNSIGNED NOT NULL DEFAULT '0',
|
|
`inst_custom_data` TEXT NULL, -- Unused
|
|
`ornament_icon` INT(11) UNSIGNED NOT NULL DEFAULT '0', -- Unused
|
|
`ornament_id_file` INT(11) UNSIGNED NOT NULL DEFAULT '0', -- Unused
|
|
`ornament_hero_model` INT(11) NOT NULL DEFAULT '0', -- Unused
|
|
`augment_1` MEDIUMINT(7) UNSIGNED NOT NULL DEFAULT '0',
|
|
`augment_2` MEDIUMINT(7) UNSIGNED NOT NULL DEFAULT '0',
|
|
`augment_3` MEDIUMINT(7) UNSIGNED NOT NULL DEFAULT '0',
|
|
`augment_4` MEDIUMINT(7) UNSIGNED NOT NULL DEFAULT '0',
|
|
`augment_5` MEDIUMINT(7) UNSIGNED NOT NULL DEFAULT '0',
|
|
`augment_6` MEDIUMINT(7) UNSIGNED NOT NULL DEFAULT '0', -- Unused
|
|
PRIMARY KEY (`inventories_index`),
|
|
KEY `FK_bot_inventories_1` (`bot_id`),
|
|
CONSTRAINT `FK_bot_inventories_1` FOREIGN KEY (`bot_id`) REFERENCES `bot_data` (`bot_id`)
|
|
) ENGINE=InnoDB;
|
|
IF ((SELECT COUNT(*) FROM `information_schema`.`TABLES` WHERE `TABLE_SCHEMA` = DATABASE() AND `TABLE_NAME` = 'botinventory') > 0) THEN
|
|
-- IF ((SHOW TABLES LIKE 'botinventory') != '') THEN
|
|
INSERT INTO `bot_inventories` (
|
|
`inventories_index`,
|
|
`bot_id`,
|
|
`slot_id`,
|
|
`item_id`,
|
|
`inst_charges`,
|
|
`inst_color`,
|
|
`inst_no_drop`,
|
|
`augment_1`,
|
|
`augment_2`,
|
|
`augment_3`,
|
|
`augment_4`,
|
|
`augment_5`
|
|
)
|
|
SELECT
|
|
`BotInventoryID`,
|
|
`BotID`,
|
|
`SlotID`,
|
|
`ItemID`,
|
|
`charges`,
|
|
`color`,
|
|
`instnodrop`,
|
|
`augslot1`,
|
|
`augslot2`,
|
|
`augslot3`,
|
|
`augslot4`,
|
|
`augslot5`
|
|
FROM `botinventory`;
|
|
|
|
IF ((SELECT COUNT(*) FROM `information_schema`.`COLUMNS` WHERE `TABLE_SCHEMA` = DATABASE() AND `TABLE_NAME` = 'botinventory' AND `COLUMN_NAME` = 'augslot6') > 0) THEN
|
|
-- IF ((SHOW COLUMNS FROM `botinventory` LIKE 'augslot6') != '') THEN
|
|
UPDATE `bot_inventories`
|
|
SET `augment_6` = `botinventory`.`augslot6`
|
|
WHERE `inventories_index` = `botinventory`.`BotInventoryID` AND `bot_id` = `botinventory`.`BotID`;
|
|
END IF;
|
|
|
|
RENAME TABLE `botinventory` TO `botinventory_old`;
|
|
END IF;
|
|
|
|
CREATE TABLE `bot_pets` (
|
|
`pets_index` INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
|
|
`pet_id` INTEGER UNSIGNED NOT NULL DEFAULT '0',
|
|
`bot_id` INTEGER UNSIGNED NOT NULL DEFAULT '0',
|
|
`name` VARCHAR(64) NULL,
|
|
`mana` INTEGER NOT NULL DEFAULT '0',
|
|
`hp` INTEGER NOT NULL DEFAULT '0',
|
|
PRIMARY KEY (`pets_index`),
|
|
KEY `FK_bot_pets_1` (`bot_id`),
|
|
CONSTRAINT `FK_bot_pets_1` FOREIGN KEY (`bot_id`) REFERENCES `bot_data` (`bot_id`),
|
|
CONSTRAINT `U_bot_pets_1` UNIQUE (`bot_id`)
|
|
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=latin1;
|
|
IF ((SELECT COUNT(*) FROM `information_schema`.`TABLES` WHERE `TABLE_SCHEMA` = DATABASE() AND `TABLE_NAME` = 'botpets') > 0) THEN
|
|
-- IF ((SHOW TABLES LIKE 'botpets') != '') THEN
|
|
INSERT INTO `bot_pets` (
|
|
`pets_index`,
|
|
`pet_id`,
|
|
`bot_id`,
|
|
`name`,
|
|
`mana`,
|
|
`hp`
|
|
)
|
|
SELECT
|
|
`BotPetsId`,
|
|
`PetId`,
|
|
`BotId`,
|
|
`Name`,
|
|
`Mana`,
|
|
`HitPoints`
|
|
FROM `botpets`;
|
|
|
|
RENAME TABLE `botpets` TO `botpets_old`;
|
|
END IF;
|
|
|
|
CREATE TABLE `bot_pet_buffs` (
|
|
`pet_buffs_index` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
|
|
`pets_index` INT(10) UNSIGNED NOT NULL DEFAULT '0',
|
|
`spell_id` INT(10) UNSIGNED NOT NULL DEFAULT '0',
|
|
`caster_level` INT(10) UNSIGNED NOT NULL DEFAULT '0',
|
|
`duration` INT(11) UNSIGNED NOT NULL DEFAULT '0',
|
|
PRIMARY KEY (`pet_buffs_index`),
|
|
KEY `FK_bot_pet_buffs_1` (`pets_index`),
|
|
CONSTRAINT `FK_bot_pet_buffs_1` FOREIGN KEY (`pets_index`) REFERENCES `bot_pets` (`pets_index`)
|
|
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=latin1;
|
|
IF ((SELECT COUNT(*) FROM `information_schema`.`TABLES` WHERE `TABLE_SCHEMA` = DATABASE() AND `TABLE_NAME` = 'botpetbuffs') > 0) THEN
|
|
-- IF ((SHOW TABLES LIKE 'botpetbuffs') != '') THEN
|
|
INSERT INTO `bot_pet_buffs` (
|
|
`pet_buffs_index`,
|
|
`pets_index`,
|
|
`spell_id`,
|
|
`caster_level`,
|
|
`duration`
|
|
)
|
|
SELECT
|
|
`BotPetBuffId`,
|
|
`BotPetsId`,
|
|
`SpellId`,
|
|
`CasterLevel`,
|
|
`Duration`
|
|
FROM `botpetbuffs`;
|
|
|
|
RENAME TABLE `botpetbuffs` TO `botpetbuffs_old`;
|
|
END IF;
|
|
|
|
CREATE TABLE `bot_pet_inventories` (
|
|
`pet_inventories_index` INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
|
|
`pets_index` INTEGER UNSIGNED NOT NULL DEFAULT '0',
|
|
`item_id` INTEGER UNSIGNED NOT NULL DEFAULT '0',
|
|
PRIMARY KEY (`pet_inventories_index`),
|
|
KEY `FK_bot_pet_inventories_1` (`pets_index`),
|
|
CONSTRAINT `FK_bot_pet_inventories_1` FOREIGN KEY (`pets_index`) REFERENCES `bot_pets` (`pets_index`)
|
|
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=latin1;
|
|
IF ((SELECT COUNT(*) FROM `information_schema`.`TABLES` WHERE `TABLE_SCHEMA` = DATABASE() AND `TABLE_NAME` = 'botpetinventory') > 0) THEN
|
|
-- IF ((SHOW TABLES LIKE 'botpetinventory') != '') THEN
|
|
INSERT INTO `bot_pet_inventories` (
|
|
`pet_inventories_index`,
|
|
`pets_index`,
|
|
`item_id`
|
|
)
|
|
SELECT
|
|
`BotPetInventoryId`,
|
|
`BotPetsId`,
|
|
`ItemId`
|
|
FROM `botpetinventory`;
|
|
|
|
RENAME TABLE `botpetinventory` TO `botpetinventory_old`;
|
|
END IF;
|
|
|
|
CREATE TABLE `bot_groups` (
|
|
`groups_index` INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
|
|
`group_leader_id` INTEGER UNSIGNED NOT NULL DEFAULT '0',
|
|
`group_name` VARCHAR(64) NOT NULL,
|
|
PRIMARY KEY (`groups_index`),
|
|
KEY `FK_bot_groups_1` (`group_leader_id`),
|
|
CONSTRAINT `FK_bot_groups_1` FOREIGN KEY (`group_leader_id`) REFERENCES `bot_data` (`bot_id`)
|
|
) ENGINE=InnoDB;
|
|
IF ((SELECT COUNT(*) FROM `information_schema`.`TABLES` WHERE `TABLE_SCHEMA` = DATABASE() AND `TABLE_NAME` = 'botgroup') > 0) THEN
|
|
-- IF ((SHOW TABLES LIKE 'botgroup') != '') THEN
|
|
INSERT INTO `bot_groups` (
|
|
`groups_index`,
|
|
`group_leader_id`,
|
|
`group_name`
|
|
)
|
|
SELECT
|
|
`BotGroupId`,
|
|
`BotGroupLeaderBotId`,
|
|
`BotGroupName`
|
|
FROM `botgroup`;
|
|
|
|
RENAME TABLE `botgroup` TO `botgroup_old`;
|
|
END IF;
|
|
|
|
CREATE TABLE `bot_group_members` (
|
|
`group_members_index` INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
|
|
`groups_index` INTEGER UNSIGNED NOT NULL DEFAULT '0',
|
|
`bot_id` INTEGER UNSIGNED NOT NULL DEFAULT '0',
|
|
PRIMARY KEY (`group_members_index`),
|
|
KEY `FK_bot_group_members_1` (`groups_index`),
|
|
CONSTRAINT `FK_bot_group_members_1` FOREIGN KEY (`groups_index`) REFERENCES `bot_groups` (`groups_index`),
|
|
KEY `FK_bot_group_members_2` (`bot_id`),
|
|
CONSTRAINT `FK_bot_group_members_2` FOREIGN KEY (`bot_id`) REFERENCES `bot_data` (`bot_id`)
|
|
) ENGINE=InnoDB;
|
|
IF ((SELECT COUNT(*) FROM `information_schema`.`TABLES` WHERE `TABLE_SCHEMA` = DATABASE() AND `TABLE_NAME` = 'botgroupmembers') > 0) THEN
|
|
-- IF ((SHOW TABLES LIKE 'botgroupmembers') != '') THEN
|
|
INSERT INTO `bot_group_members` (
|
|
`group_members_index`,
|
|
`groups_index`,
|
|
`bot_id`
|
|
)
|
|
SELECT
|
|
`BotGroupMemberId`,
|
|
`BotGroupId`,
|
|
`BotId`
|
|
FROM `botgroupmembers`;
|
|
|
|
RENAME TABLE `botgroupmembers` TO `botgroupmembers_old`;
|
|
END IF;
|
|
|
|
CREATE TABLE `bot_guild_members` (
|
|
`bot_id` INT(11) NOT NULL DEFAULT '0',
|
|
`guild_id` MEDIUMINT(8) UNSIGNED NOT NULL DEFAULT '0',
|
|
`rank` TINYINT(3) UNSIGNED NOT NULL DEFAULT '0',
|
|
`tribute_enable` TINYINT(3) UNSIGNED NOT NULL DEFAULT '0',
|
|
`total_tribute` INT(10) UNSIGNED NOT NULL DEFAULT '0',
|
|
`last_tribute` INT(10) UNSIGNED NOT NULL DEFAULT '0',
|
|
`banker` TINYINT(3) UNSIGNED NOT NULL DEFAULT '0',
|
|
`public_note` TEXT NULL,
|
|
`alt` TINYINT(3) UNSIGNED NOT NULL DEFAULT '0',
|
|
PRIMARY KEY (`bot_id`)
|
|
) ENGINE=InnoDB;
|
|
IF ((SELECT COUNT(*) FROM `information_schema`.`TABLES` WHERE `TABLE_SCHEMA` = DATABASE() AND `TABLE_NAME` = 'botguildmembers') > 0) THEN
|
|
-- IF ((SHOW TABLES LIKE 'botguildmembers') != '') THEN
|
|
INSERT INTO `bot_guild_members` (
|
|
`bot_id`,
|
|
`guild_id`,
|
|
`rank`,
|
|
`tribute_enable`,
|
|
`total_tribute`,
|
|
`last_tribute`,
|
|
`banker`,
|
|
`public_note`,
|
|
`alt`
|
|
)
|
|
SELECT
|
|
`char_id`,
|
|
`guild_id`,
|
|
`rank`,
|
|
`tribute_enable`,
|
|
`total_tribute`,
|
|
`last_tribute`,
|
|
`banker`,
|
|
`public_note`,
|
|
`alt`
|
|
FROM `botguildmembers`;
|
|
|
|
RENAME TABLE `botguildmembers` TO `botguildmembers_old`;
|
|
END IF;
|
|
|
|
END$$
|
|
|
|
DELIMITER ;
|
|
|
|
|
|
CALL `LoadBotsSchema`();
|
|
|
|
DROP PROCEDURE IF EXISTS `LoadBotsSchema`;
|
|
|
|
|
|
-- Functions
|
|
DELIMITER $$
|
|
|
|
-- (no code references)
|
|
CREATE FUNCTION `GetMobType` (mob_name VARCHAR(64)) RETURNS CHAR(1)
|
|
BEGIN
|
|
DECLARE Result CHAR(1);
|
|
|
|
SET Result = NULL;
|
|
|
|
IF ((SELECT COUNT(*) FROM `character_data` WHERE `name` = mob_name) > 0) THEN
|
|
SET Result = 'C';
|
|
ELSEIF ((SELECT COUNT(*) FROM `bot_data` WHERE `name` = mob_name) > 0) THEN
|
|
SET Result = 'B';
|
|
END IF;
|
|
|
|
RETURN Result;
|
|
END$$
|
|
|
|
-- (one code reference in /common/database.cpp)
|
|
CREATE FUNCTION `GetMobTypeById` (mob_id INTEGER UNSIGNED) RETURNS CHAR(1)
|
|
BEGIN
|
|
DECLARE Result CHAR(1);
|
|
|
|
SET Result = NULL;
|
|
|
|
IF ((select `id` from `character_data` where `id` = mob_id) > 0) THEN
|
|
SET Result = 'C';
|
|
ELSEIF ((select `bot_id` from `bot_data` where `bot_id` = mob_id) > 0) THEN
|
|
SET Result = 'B';
|
|
END IF;
|
|
|
|
RETURN Result;
|
|
END$$
|
|
|
|
-- (for reference only)
|
|
-- CREATE FUNCTION `GetMobTypeByName` (mob_name VARCHAR(64)) RETURNS CHAR(1)
|
|
-- BEGIN
|
|
-- DECLARE Result CHAR(1);
|
|
--
|
|
-- SET Result = NULL;
|
|
--
|
|
-- IF (select `id` from `character_data` where `name` = mob_name) > 0 THEN
|
|
-- SET Result = 'C';
|
|
-- ELSEIF (select `bot_id` from `bot_data` where `name` = mob_name) > 0 THEN
|
|
-- SET Result = 'B';
|
|
-- END IF;
|
|
--
|
|
-- RETURN Result;
|
|
-- END $$
|
|
|
|
DELIMITER ;
|
|
|
|
|
|
-- Views
|
|
CREATE VIEW `vw_bot_character_mobs` AS
|
|
SELECT
|
|
_utf8'C' AS mob_type,
|
|
c.`id`,
|
|
c.`name`,
|
|
c.`class`,
|
|
c.`level`,
|
|
c.`last_login`,
|
|
c.`zone_id`
|
|
FROM `character_data` AS c
|
|
UNION ALL
|
|
SELECT _utf8'B' AS mob_type,
|
|
b.`bot_id` AS id,
|
|
b.`name`,
|
|
b.`class`,
|
|
b.`level`,
|
|
b.`last_spawn` AS last_login,
|
|
b.`zone_id`
|
|
FROM `bot_data` AS b;
|
|
|
|
CREATE VIEW `vw_bot_groups` AS
|
|
SELECT
|
|
g.`groups_index`,
|
|
g.`group_name`,
|
|
g.`group_leader_id`,
|
|
b.`name` AS group_leader_name,
|
|
b.`owner_id`,
|
|
c.`name` AS owner_name
|
|
FROM `bot_groups` AS g
|
|
JOIN `bot_data` AS b ON g.`group_leader_id` = b.`bot_id`
|
|
JOIN `character_data` AS c ON b.`owner_id` = c.`id`
|
|
ORDER BY b.`owner_id`, g.`group_name`;
|
|
|
|
CREATE VIEW `vw_groups` AS
|
|
SELECT
|
|
g.`groupid` AS group_id,
|
|
GetMobType(g.`name`) AS mob_type,
|
|
g.`name` AS name,
|
|
g.`charid` AS mob_id,
|
|
IFNULL(c.`level`, b.`level`) AS level
|
|
FROM `group_id` AS g
|
|
LEFT JOIN `character_data` AS c ON g.`name` = c.`name`
|
|
LEFT JOIN `bot_data` AS b ON g.`name` = b.`name`;
|
|
|
|
CREATE VIEW `vw_guild_members` AS
|
|
SELECT
|
|
'C' AS mob_type,
|
|
cm.`char_id`,
|
|
cm.`guild_id`,
|
|
cm.`rank`,
|
|
cm.`tribute_enable`,
|
|
cm.`total_tribute`,
|
|
cm.`last_tribute`,
|
|
cm.`banker`,
|
|
cm.`public_note`,
|
|
cm.`alt`
|
|
FROM `guild_members` AS cm
|
|
UNION ALL
|
|
SELECT
|
|
'B' AS mob_type,
|
|
bm.`bot_id` AS char_id,
|
|
bm.`guild_id`,
|
|
bm.`rank`,
|
|
bm.`tribute_enable`,
|
|
bm.`total_tribute`,
|
|
bm.`last_tribute`,
|
|
bm.`banker`,
|
|
bm.`public_note`,
|
|
bm.`alt`
|
|
FROM `bot_guild_members` AS bm;
|
|
|
|
|
|
-- End of File
|