NeoCodes-dev's picture
Upload folder using huggingface_hub
ac5cfba verified
# Copyright (c) Meta Platforms, Inc. and affiliates.
# All rights reserved.
"""Event reward component for Pokemon Red."""
from typing import Any, Dict
from .base import BaseRewardComponent
class EventReward(BaseRewardComponent):
"""
Rewards triggering in-game event flags.
Pokemon Red uses event flags to track story progression,
item collection, NPC interactions, etc. This component
rewards activating new event flags.
Attributes:
weight: Reward per event triggered (default 0.1).
"""
def __init__(self, weight: float = 0.1, enabled: bool = True):
super().__init__(name="event", weight=weight, enabled=enabled)
def calculate(
self, state: Dict[str, Any], prev_state: Dict[str, Any]
) -> float:
"""Calculate reward for new events triggered."""
current_events = state.get("event_count", 0)
previous_events = prev_state.get("event_count", 0)
new_events = current_events - previous_events
return max(0.0, float(new_events))