Initial Release of IGNCore version 2.5

This commit is contained in:
2021-08-09 13:18:56 +02:00
commit a83d98c47e
910 changed files with 224171 additions and 0 deletions
@@ -0,0 +1,62 @@
from core.chat_blob import ChatBlob
from core.command_param_types import Any, Int
from core.decorators import instance, command
@instance()
class PerksController:
def __init__(self):
self.grades = ["shiny", "bright", "faded"]
def inject(self, registry):
self.db = registry.get_instance("db")
self.util = registry.get_instance("util")
def pre_start(self):
self.db.load_sql_file(self.module_dir + "/" + "perks.sql", pre_optimized=True)
self.db.create_view("perk")
self.db.create_view("perk_prof")
self.db.create_view("perk_level")
self.db.create_view("perk_level_buffs")
@command(command="perks", params=[Int("level"), Any("profession")], access_level="member",
description="Show what perks are available for specified level and profession")
def perks_cmd(self, _, level, profession):
if level < 1 or level > 220:
return "Level must be between <highlight>1</highlight> and <highlight>220</highlight>."
prof = self.util.get_profession(profession)
if not prof:
return f"Could not find profession <highlight>{profession}</highlight>"
sql = """
SELECT
p.name AS perk_name,
MAX(pl.number) AS max_perk_level,
SUM(plb.amount) AS buff_amount,
plb.skill
FROM
perk p
JOIN perk_prof pp ON p.id = pp.perk_id
JOIN perk_level pl ON p.id = pl.perk_id
JOIN perk_level_buffs plb ON pl.id = plb.perk_level_id
WHERE
pp.profession = ?
AND pl.min_level <= ?
GROUP BY
p.name,
plb.skill
ORDER BY
p.name"""
data = self.db.query(sql, [prof, level])
blob = ""
current_perk = ""
for row in data:
if row.perk_name != current_perk:
blob += f"\n<header2>{row.perk_name} {row.max_perk_level}</header2>\n"
current_perk = row.perk_name
blob += f"{row.skill} <highlight>{row.buff_amount:d}</highlight>\n"
return ChatBlob(f"Buff Perks for {level:d} {prof}", blob)