LivinGrimoire Skill Tree

Shinka Class

Overview

The Shinka class is a unique skill class that allows base skills to be upgraded modularly with upgrade skills. When an upgrade skill activates, it temporarily overrides the base skill’s behavior. This enables modular skill augmentation as well as flexible skill evolution logic implementation in Shinka subclasses during runtime.

class Shinka(Skill):
    """
    this unique skill upgrades a base skill with upgrade skills
    when an upgrade skill wants to run, it overrides the base skill
    subclasses can be coded with logic to equip and unequip upgrade skills at runtime
    """
    def __init__(self, base_skill:Skill):
        super().__init__()
        self.upgrades: list["Shinka"] = []
        self.active_upgrade = -1
        self.base_skill = base_skill

    def input(self, ear: str, skin: str, eye: str):
        for i in range(len(self.upgrades)):
            self.upgrades[i].input(ear, skin, eye)
            if self.upgrades[i].pendingAlgorithm():
                self.active_upgrade = i
                return
        self.base_skill.input(ear, skin, eye)

    def setKokoro(self, kokoro: Kokoro):
        self._kokoro = kokoro  # potential usage in sub classes for runtime upgrades mode.
        self.base_skill._kokoro = kokoro
        for upgrade in self.upgrades:
            upgrade.setKokoro(kokoro)

    def pendingAlgorithm(self) -> bool:
        return self.base_skill.pendingAlgorithm() or self.active_upgrade > -1

    def output(self, neuron: Neuron):
        if self.active_upgrade>-1:
            self.upgrades[self.active_upgrade].output(neuron)
            self.active_upgrade = -1
            return
        self.base_skill.output(neuron)

    def skillNotes(self, param: str) -> str:
        return self.base_skill.skillNotes(param)

    def add_skill_tree(self, skill_tree: "Shinka") -> "Shinka":
        self.upgrades.append(skill_tree)
        return self

    def clear_upgrades(self):
        self.upgrades.clear()
        self.active_upgrade = -1

For more information, visit: https://livingrimoire.uwu.ai/

Leave a Reply