Tacklebox / classes.py
CazC's picture
Upload 4 files
337a5ce verified
from enum import Enum
import openai
from pydantic import BaseModel, Field
from typing import Optional
from typing import List
import json
import random
class TackleboxCard(BaseModel):
description: str
share_with_other_player: bool = False
class TackleboxDeck(BaseModel):
cards: List[TackleboxCard] = Field(default_factory=list)
def draw_card(self) -> Optional[TackleboxCard]:
# shuffle and draw the top card
if self.cards and len(self.cards) > 0:
return self.cards.pop(random.randint(0, len(self.cards) - 1))
return None
class Hand(BaseModel):
cards: List[TackleboxCard] = Field(default_factory=list)
def add_card(self, card: TackleboxCard):
self.cards.append(card)
class Personality(BaseModel):
baseline: str
traits: list[str]
class SpeechStyle(BaseModel):
average_sentence_count: int
allows_small_action_descriptions: bool
forbidden_topics: list[str]
class Character(BaseModel):
name: str
age: int
gender: str
relationship_to_robin: str
recent_event: str
shared_past_event: str
reason_for_fishing_today: Optional[str] = None
relationship_type: Optional[str] = None
pronouns: Optional[str] = None
personality: Personality
speech_style: SpeechStyle