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 Int
from core.db import DB
from core.decorators import instance, command
from core.text import Text
@instance()
class ResearchController:
def inject(self, registry):
self.db: DB = registry.get_instance("db")
self.text: Text = registry.get_instance("text")
self.util = registry.get_instance("util")
def pre_start(self):
self.db.load_sql_file(self.module_dir + "/sql/" + "research.sql", pre_optimized=True)
self.db.create_view("research")
@command(command="research", params=[Int("research_level")], access_level="member",
description="Show information about a specific research level")
def research_command(self, _, research_level):
if research_level > 10 or research_level < 1:
return "Research level must be between 1 and 10."
row = self.db.query_single("SELECT * FROM research WHERE level = ?", [research_level])
capsk = int(row.sk * 0.1)
blob = f"You must be level <highlight>{row.levelcap:d}</highlight> to research " \
f"<highlight>Research Level {research_level:d}</highlight>.\n"
blob += f"You need <highlight>{self.util.format_number(row.sk)} SK</highlight> to reach " \
f"<highlight>Research Level {research_level:d}</highlight> per research line.\n\n"
blob += f"This equals <highlight>{self.util.format_number(row.sk * 1000)} XP</highlight>.\n\n"
blob += f"Your research will cap at <highlight>{self.util.format_number(capsk * 1000)} XP</highlight> or " \
f"<highlight>{self.util.format_number(capsk)} SK</highlight>."
return ChatBlob("Research Level %d" % research_level, blob)
@command(command="research", params=[Int("research_level"), Int("research_level")], access_level="member",
description="Show the amount of SK needed from one research level to another")
def research_span_command(self, _, research_level1, research_level2):
if research_level1 > 10 or research_level1 < 1 or research_level2 > 10 or research_level2 < 1:
return "Research level must be between 1 and 10."
elif research_level1 == research_level2:
return "You must specify different research levels."
if research_level1 > research_level2:
# swap researches so the lower is research_level1 and higher is research_level2
research_level1, research_level2 = research_level2, research_level1
row = self.db.query_single("SELECT SUM(sk) AS total_sk, MAX(levelcap) AS levelcap FROM research "
"WHERE level > ? AND level <= ?",
[research_level1, research_level2])
blob = f"You must be <highlight>Level {row.levelcap:d}</highlight> to reach " \
f"Research Level <highlight>{research_level2:d}.</highlight>\n"
blob += f"It takes <highlight>{self.util.format_number(row.total_sk)} SK</highlight> to go from " \
f"Research Level <highlight>{research_level1:d}</highlight> to " \
f"Research Level <highlight>{research_level2:d}</highlight> per research line.\n\n"
blob += f"This equals <highlight>{self.util.format_number(row.total_sk * 1000)} XP</highlight>."
return ChatBlob(f"Research Levels {research_level1:d} - {research_level2:d}", blob)