Ruby-Cogs/city/crime/data.py

105 lines
3.8 KiB
Python

"""Data and settings for the crime system."""
# Define available crimes and their properties
CRIME_TYPES = {
"pickpocket": {
"requires_target": True,
"min_reward": 150,
"max_reward": 500,
"success_rate": 0.6,
"cooldown": 600, # 10 minutes
"jail_time": 3600, # 1 hour if caught
"risk": "low",
"enabled": True,
"fine_multiplier": 0.35, # 35% of max reward as fine
"min_steal_percentage": 0.01, # Steal 1-10% of target's credits
"max_steal_percentage": 0.10
},
"mugging": {
"requires_target": True,
"min_reward": 400,
"max_reward": 1500,
"success_rate": 0.6,
"cooldown": 1800, # 30 minutes
"jail_time": 5400, # 1 hour 30 minutes if caught
"risk": "medium",
"enabled": True,
"fine_multiplier": 0.4, # 40% of max reward as fine
"min_steal_percentage": 0.15, # Steal 15-25% of target's credits
"max_steal_percentage": 0.25
},
"rob_store": {
"requires_target": False,
"min_reward": 500,
"max_reward": 2000,
"success_rate": 0.5,
"cooldown": 21600, # 6 hours
"jail_time": 10800, # 3 hours if caught
"risk": "medium",
"enabled": True,
"fine_multiplier": 0.4, # 45% of max reward as fine
"steal_percentage": 0
},
"bank_heist": {
"requires_target": False,
"min_reward": 1500,
"max_reward": 5000,
"success_rate": 0.4,
"cooldown": 86400, # 1 day
"jail_time": 14400, # 4 hours if caught
"risk": "high",
"enabled": True,
"fine_multiplier": 0.4, # 40% of max reward as fine
"steal_percentage": 0
},
"random": {
"requires_target": False,
"min_reward": 100, # Will be overridden by scenario
"max_reward": 3000, # Will be overridden by scenario
"success_rate": 0.5, # Will be overridden by scenario
"cooldown": 3600, # 1 hour
"jail_time": 600, # Will be overridden by scenario
"risk": "random", # Will be determined by scenario
"enabled": True,
"fine_multiplier": 0.5, # Will be overridden by scenario
"steal_percentage": 0
}
}
# Default guild settings
DEFAULT_GUILD = {
"crime_options": CRIME_TYPES,
"global_settings": {
"allow_bail": True,
"bail_cost_multiplier": 1.6,
"min_steal_balance": 100,
"max_steal_amount": 1000,
"default_jail_time": 1800, # 30 minutes
"default_fine_multiplier": 0.5,
"protect_low_balance": True, # Prevent stealing from users with very low balance
"show_success_rate": True, # Show success rate in crime messages
"show_fine_amount": True, # Show potential fine amounts
"enable_random_events": True # Enable random events during crimes
},
"custom_scenarios": [] # List to store custom scenarios for this guild
}
# Default member settings specific to crime
DEFAULT_MEMBER = {
"jail_time": 0, # Total time to serve
"jail_started": 0, # When jail time started
"attempted_jailbreak": False, # Whether attempted jailbreak this sentence
"cooldowns": {}, # Crime cooldowns
"total_successful_crimes": 0,
"total_failed_crimes": 0,
"total_fines_paid": 0,
"total_credits_earned": 0,
"largest_heist": 0, # Track largest successful heist
"total_stolen_from": 0, # Amount stolen from others
"total_stolen_by": 0, # Amount stolen by others
"total_bail_paid": 0, # Amount spent on bail
"notify_on_release": False, # Whether to ping user when jail sentence is over
"current_streak": 0, # Current successful crime streak
"highest_streak": 0, # Highest streak achieved
"streak_multiplier": 1.0, # Current reward multiplier from streak
}