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/
