|
| 1 | +""" |
| 2 | +DnD-style Character Manager for PtiCalin Game Engine |
| 3 | +""" |
| 4 | + |
| 5 | +class Character: |
| 6 | + def __init__(self, name, race, char_class, level=1, stats=None, inventory=None, spells=None, quests=None): |
| 7 | + self.name = name |
| 8 | + self.race = race |
| 9 | + self.char_class = char_class |
| 10 | + self.level = level |
| 11 | + self.stats = stats or { |
| 12 | + 'STR': 10, 'DEX': 10, 'CON': 10, 'INT': 10, 'WIS': 10, 'CHA': 10 |
| 13 | + } |
| 14 | + self.inventory = inventory or [] |
| 15 | + self.spells = spells or [] |
| 16 | + self.quests = quests or [] |
| 17 | + self.hp = self.max_hp() |
| 18 | + |
| 19 | + def max_hp(self): |
| 20 | + # Example: 10 + CON modifier per level |
| 21 | + return 10 + (self.stats['CON'] - 10) // 2 * self.level |
| 22 | + |
| 23 | + def add_item(self, item): |
| 24 | + self.inventory.append(item) |
| 25 | + |
| 26 | + def add_spell(self, spell): |
| 27 | + self.spells.append(spell) |
| 28 | + |
| 29 | + def add_quest(self, quest): |
| 30 | + self.quests.append(quest) |
| 31 | + |
| 32 | + def __repr__(self): |
| 33 | + return f"<Character {self.name} ({self.char_class} Lv{self.level})>" |
| 34 | + |
| 35 | +class CharacterManager: |
| 36 | + def __init__(self): |
| 37 | + self.characters = [] |
| 38 | + |
| 39 | + def create_character(self, name, race, char_class, **kwargs): |
| 40 | + char = Character(name, race, char_class, **kwargs) |
| 41 | + self.characters.append(char) |
| 42 | + return char |
| 43 | + |
| 44 | + def get_character(self, name): |
| 45 | + for char in self.characters: |
| 46 | + if char.name == name: |
| 47 | + return char |
| 48 | + return None |
| 49 | + |
| 50 | + def list_characters(self): |
| 51 | + return self.characters |
0 commit comments