CrashOverrideX
Sealing v8.1 Subjectively Aware Standard for Hugging Face. Clean Model & Knowledge release.
a3e5f70 | from game_data import MONSTER_DATA, ATTACK_DATA | |
| from random import randint | |
| class Monster: | |
| def __init__(self, name, level): | |
| self.name, self.level = name, level | |
| self.paused = False | |
| # stats | |
| self.element = MONSTER_DATA[name]['stats']['element'] | |
| self.base_stats = MONSTER_DATA[name]['stats'] | |
| self.health = self.base_stats['max_health'] * self.level | |
| self.energy = self.base_stats['max_energy'] * self.level | |
| self.initiative = 0 | |
| self.abilities = MONSTER_DATA[name]['abilities'] | |
| self.defending = False | |
| # experience | |
| self.xp = 0 | |
| self.level_up = self.level * 150 | |
| self.evolution = MONSTER_DATA[self.name]['evolve'] | |
| def __repr__(self): | |
| return f'monster: {self.name}, lvl: {self.level}' | |
| def get_stat(self, stat): | |
| return self.base_stats[stat] * self.level | |
| def get_stats(self): | |
| return { | |
| 'health': self.get_stat('max_health'), | |
| 'energy': self.get_stat('max_energy'), | |
| 'attack': self.get_stat('attack'), | |
| 'defense': self.get_stat('defense'), | |
| 'speed': self.get_stat('speed'), | |
| 'recovery': self.get_stat('recovery'), | |
| } | |
| def get_abilities(self, all = True): | |
| if all: | |
| return [ability for lvl, ability in self.abilities.items() if self.level >= lvl] | |
| else: | |
| return [ability for lvl, ability in self.abilities.items() if self.level >= lvl and ATTACK_DATA[ability]['cost'] < self.energy] | |
| def get_info(self): | |
| return ( | |
| (self.health, self.get_stat('max_health')), | |
| (self.energy, self.get_stat('max_energy')), | |
| (self.initiative, 100) | |
| ) | |
| def reduce_energy(self, attack): | |
| self.energy -= ATTACK_DATA[attack]['cost'] | |
| def get_base_damage(self, attack): | |
| return self.get_stat('attack') * ATTACK_DATA[attack]['amount'] | |
| def update_xp(self, amount): | |
| if self.level_up - self.xp > amount: | |
| self.xp += amount | |
| else: | |
| self.level += 1 | |
| self.xp = amount - (self.level_up - self.xp) | |
| self.level_up = self.level * 150 | |
| def stat_limiter(self): | |
| self.health = max(0, min(self.health, self.get_stat('max_health'))) | |
| self.energy = max(0, min(self.energy, self.get_stat('max_energy'))) | |
| def update(self, dt): | |
| self.stat_limiter() | |
| if not self.paused: | |
| self.initiative += self.get_stat('speed') * dt |