Nobility Titles
- King - 1 per server - 100 Authority
- Duke - 5 per server - 90+ Authority
- Count - 15 per server - 60+ Authority
- Baron - 50 per server - 30+ Authority
- Peasant - Unlimited per server - 0+ Authority
- Pope - 1 per server - 100 Piety, 250+ Alignment
- Cardinal - 10 per server - 100 Piety, 50+ Alignment
- Commander - 100 Unit and Formation
- Officer - 90+ Unit and Formation
- Sergeant - 60+ Unit and Formation
SQL Code
- Code: Select all
INSERT IGNORE INTO titles (`ID`, `Name`, `TitleMessageID`) VALUES (1, 'Game Master Title', 762);
INSERT IGNORE INTO titles (`ID`, `Name`, `TitleMessageID`) VALUES (2, 'King Title', 650);
INSERT IGNORE INTO titles (`ID`, `Name`, `TitleMessageID`) VALUES (3, 'Duke Title', 648);
INSERT IGNORE INTO titles (`ID`, `Name`, `TitleMessageID`) VALUES (4, 'Count Title', 646);
INSERT IGNORE INTO titles (`ID`, `Name`, `TitleMessageID`) VALUES (5, 'Baron Title', 642);
INSERT IGNORE INTO titles (`ID`, `Name`, `TitleMessageID`) VALUES (6, 'Peasant Title', 636);
INSERT IGNORE INTO titles (`ID`, `Name`, `TitleMessageID`) VALUES (7, 'Recruit Title', 620);
INSERT IGNORE INTO titles (`ID`, `Name`, `TitleMessageID`) VALUES (8, 'Sergant Title', 624);
INSERT IGNORE INTO titles (`ID`, `Name`, `TitleMessageID`) VALUES (9, 'Officer Title', 628);
INSERT IGNORE INTO titles (`ID`, `Name`, `TitleMessageID`) VALUES (10, 'Commander Title', 630);
INSERT IGNORE INTO titles (`ID`, `Name`, `TitleMessageID`) VALUES (11, 'Pope Title', 597);
INSERT IGNORE INTO titles (`ID`, `Name`, `TitleMessageID`) VALUES (12, 'Cardinal Title', 596);
CREATE DEFINER=`root`@`localhost` TRIGGER `t_addCharacterTitle_SkillChange` AFTER UPDATE ON `skills` FOR EACH ROW BEGIN
IF NEW.SkillTypeID = 65 THEN
IF NEW.LockStatus > 0 THEN
SET @kingCount = (SELECT COUNT(*) FROM character_titles WHERE TitleID = 2);
SET @dukeCount = (SELECT COUNT(*) FROM character_titles WHERE TitleID = 3);
SET @countCount = (SELECT COUNT(*) FROM character_titles WHERE TitleID = 4);
SET @baronCount = (SELECT COUNT(*) FROM character_titles WHERE TitleID = 5);
IF NEW.SkillAmount = 1000000000 AND @kingCount = 0 THEN
CALL p_addCharacterTitle(NEW.CharacterID, 2);
ELSEIF NEW.SkillAmount > 900000000 AND @dukeCount < 5 THEN
CALL p_addCharacterTitle(NEW.CharacterID, 3);
ELSEIF NEW.SkillAmount > 600000000 AND @countCount < 15 THEN
CALL p_addCharacterTitle(NEW.CharacterID, 4);
ELSEIF NEW.SkillAmount > 300000000 AND @baronCount < 50 THEN
CALL p_addCharacterTitle(NEW.CharacterID, 5);
ELSEIF NEW.SkillAmount > 0 THEN
CALL p_addCharacterTitle(NEW.CharacterID, 6);
END IF;
END IF;
IF NEW.SkillAmount < 1000000000 THEN
DELETE FROM character_titles WHERE CharacterID = NEW.CharacterID AND TitleID = 2;
END IF;
IF NEW.SkillAmount < 900000000 THEN
DELETE FROM character_titles WHERE CharacterID = NEW.CharacterID AND TitleID = 3;
END IF;
IF NEW.SkillAmount < 600000000 THEN
DELETE FROM character_titles WHERE CharacterID = NEW.CharacterID AND TitleID = 4;
END IF;
IF NEW.SkillAmount < 300000000 THEN
DELETE FROM character_titles WHERE CharacterID = NEW.CharacterID AND TitleID = 5;
END IF;
END IF;
IF NEW.SkillTypeID = 54 THEN
IF NEW.LockStatus > 0 THEN
SET @popeCount = (SELECT COUNT(*) FROM character_titles WHERE TitleID = 11);
SET @cardinalCount = (SELECT COUNT(*) FROM character_titles WHERE TitleID = 12);
IF NEW.SkillAmount = 1000000000 THEN
SET @characterAlignment = (SELECT ch.Alignment FROM `character` ch WHERE ch.ID = NEW.CharacterID);
IF @characterAlignment = 250000000 AND @popeCount = 0 THEN
CALL p_addCharacterTitle(NEW.CharacterID, 11);
ELSEIF @characterAlignment > 50000000 AND @cardinalCount < 10 THEN
CALL p_addCharacterTitle(NEW.CharacterID, 12);
END IF;
END IF;
END IF;
IF NEW.SkillAmount < 1000000000 THEN
DELETE FROM character_titles WHERE CharacterID = NEW.CharacterID AND (TitleID = 11 OR TitleID = 12);
END IF;
END IF;
IF NEW.SkillTypeID = 56 THEN
IF NEW.LockStatus > 0 THEN
IF NEW.SkillAmount = 1000000000 THEN
CALL p_addCharacterTitle(NEW.CharacterID, 10);
ELSEIF NEW.SkillAmount > 900000000 THEN
CALL p_addCharacterTitle(NEW.CharacterID, 9);
ELSEIF NEW.SkillAmount > 600000000 THEN
CALL p_addCharacterTitle(NEW.CharacterID, 8);
END IF;
END IF;
IF NEW.SkillAmount < 1000000000 THEN
DELETE FROM character_titles WHERE CharacterID = NEW.CharacterID AND TitleID = 10;
END IF;
IF NEW.SkillAmount < 900000000 THEN
DELETE FROM character_titles WHERE CharacterID = NEW.CharacterID AND TitleID = 9;
END IF;
IF NEW.SkillAmount < 600000000 THEN
DELETE FROM character_titles WHERE CharacterID = NEW.CharacterID AND TitleID = 8;
END IF;
END IF;
END
CREATE DEFINER=`root`@`localhost` TRIGGER `t_addCharacterTitle_CharacterChange` BEFORE UPDATE ON `character` FOR EACH ROW BEGIN
SET @pietyAmount = (SELECT sk.SkillAmount FROM skills sk WHERE sk.CharacterID = NEW.ID AND sk.SkillTypeID = 54);
IF @pietyAmount = 1000000000 THEN
SET @popeCount = (SELECT COUNT(*) FROM character_titles WHERE TitleID = 11);
SET @cardinalCount = (SELECT COUNT(*) FROM character_titles WHERE TitleID = 12);
IF NEW.Alignment > 250000000 AND @popeCount = 0 THEN
CALL p_addCharacterTitle(NEW.ID, 11);
ELSEIF @characterAlignment > 50000000 AND @cardinalCount < 10 THEN
CALL p_addCharacterTitle(NEW.ID, 12);
END IF;
IF NEW.Alignment < 250000000 THEN
DELETE FROM character_titles WHERE CharacterID = NEW.ID AND TitleID = 11;
END IF;
IF NEW.Alignment < 50000000 THEN
DELETE FROM character_titles WHERE CharacterID = NEW.ID AND TitleID = 12;
END IF;
END IF;
END
CREATE DEFINER=`root`@`localhost` PROCEDURE `p_addCharacterTitle`(IN `in_characterID` INT, IN `in_titleID` INT)
LANGUAGE SQL
NOT DETERMINISTIC
MODIFIES SQL DATA
SQL SECURITY DEFINER
COMMENT ''
BEGIN
IF in_characterID > 0 AND in_titleID > 0 THEN
SET @currentCount = (SELECT COUNT(*) FROM character_titles ct WHERE ct.CharacterID = in_characterID AND ct.TitleID = in_titleID);
IF @currentCount = 0 THEN
INSERT IGNORE INTO character_titles (`CharacterID`, `TitleID`) VALUES (in_characterID, in_titleID);
END IF;
END IF;
END
This is mostly just a proof-of-concept but it works and provides basic nobility rank titles based on the player's Authority skill value. Much more complex functionality is possible and will be implemented eventually.
Let me know what you guys think and if anyone has any issues with it
Change Log
v0.3.5 - Added title delete and better alignment check
v0.3.0 - Added religious and military titles
v0.2.0 - Fixed some major bugs
v0.1.0 - Initial Release