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