mirror of
https://github.com/DM67-Developer/opensim-ai-npc-framework.git
synced 2026-08-14 00:47:59 +00:00
149 lines
4.9 KiB
INI
149 lines
4.9 KiB
INI
# ========================================
|
|
# SEATING CONFIGURATION - seating.cfg
|
|
# ========================================
|
|
# Universal Seating Awareness System Configuration
|
|
# This notecard controls all seating selection behavior for the NPC
|
|
#
|
|
# Format:
|
|
# - BLACKLIST: pipe-separated list (|)
|
|
# - Keywords: keyword=score_value
|
|
# - Parameters: parameter_name=value
|
|
#
|
|
# All keyword matching is case-insensitive substring matching
|
|
# Comments start with # and are ignored
|
|
|
|
# ========================================
|
|
# SEATING BLACKLIST
|
|
# ========================================
|
|
# Objects containing these keywords will NEVER be considered for seating
|
|
# These are categorical exclusions that bypass the scoring system entirely
|
|
|
|
BLACKLIST=NPC Brain|Controller|Vehicle|Candle|Car|Boat|Airplane|Aircraft|Helicopter|Bike|Motorcycle|Teleporter|Portal|Door|Gate|Weapon|Gun|Sword|Explosive|Bomb|Fire|Lava|Water|Ocean|River|Danger|Warning|Private|Restricted|Lamp|Aquarium|toad|carouse|Table|Wall
|
|
|
|
# ========================================
|
|
# POSITIVE SCORING KEYWORDS
|
|
# ========================================
|
|
# Keywords that increase seating preference
|
|
# Higher scores = more likely to select this object
|
|
|
|
# Primary seating identifiers (high scores)
|
|
|
|
# Premium seating
|
|
throne=10.0
|
|
|
|
# Standard seating
|
|
chair=8.0
|
|
seat=8.0
|
|
bench=8.0
|
|
couch=8.0
|
|
sofa=8.0
|
|
|
|
# Basic seating
|
|
stool=6.0
|
|
|
|
# Contextual modifiers (moderate scores)
|
|
dining=3.0
|
|
office=3.0
|
|
comfort=2.0
|
|
|
|
# ========================================
|
|
# NEGATIVE SCORING KEYWORDS
|
|
# ========================================
|
|
# Keywords that decrease seating preference
|
|
# Negative scores = less likely to select this object
|
|
|
|
broken=-5.0
|
|
damage=-5.0
|
|
old=-1.0
|
|
|
|
# ========================================
|
|
# OBJECT TYPE BONUSES
|
|
# ========================================
|
|
# Score bonuses based on LSL object type classification
|
|
# These are applied automatically based on object properties
|
|
|
|
furniture_type_bonus=5.0
|
|
scripted_type_bonus=3.0
|
|
|
|
# ========================================
|
|
# SCORING ALGORITHM PARAMETERS
|
|
# ========================================
|
|
# These control how the scoring system evaluates seating candidates
|
|
|
|
# Base score given to all seating candidates before keyword evaluation
|
|
base_score=5.0
|
|
|
|
# Minimum score required for an object to be considered valid seating
|
|
# Objects scoring below this threshold are rejected
|
|
min_seating_score=3.0
|
|
|
|
# Penalty applied to seats that have avatars sitting nearby
|
|
# This prevents the NPC from sitting too close to occupied seats
|
|
occupied_seat_penalty=-20.0
|
|
|
|
# ========================================
|
|
# GEOMETRIC SCORING PARAMETERS
|
|
# ========================================
|
|
# Distance and height-based scoring adjustments
|
|
|
|
# Weight multiplier for distance-based scoring (closer = better)
|
|
# Formula: (max_distance - current_distance) / max_distance * distance_weight
|
|
distance_weight=3.0
|
|
|
|
# Bonus points for seats at or below NPC's current height
|
|
# Encourages sitting on ground-level furniture rather than elevated objects
|
|
height_bonus=2.0
|
|
|
|
# Maximum height difference (meters) above NPC to qualify for height bonus
|
|
# Seats higher than this don't receive the height_bonus points
|
|
height_threshold=0.5
|
|
|
|
# ========================================
|
|
# SEATING BEHAVIOR PARAMETERS
|
|
# ========================================
|
|
# General seating system configuration
|
|
|
|
# Enable/disable the entire seating awareness system (1=enabled, 0=disabled)
|
|
enable_seating_awareness=1
|
|
|
|
# How long (seconds) to remember a seating choice before re-evaluating
|
|
# Prevents constant seat-switching behavior
|
|
seating_memory_duration=300.0
|
|
|
|
# Maximum radius (meters) to scan for potential seating objects
|
|
# Objects beyond this distance won't be considered
|
|
seating_scan_radius=10.0
|
|
|
|
# Maximum height difference (meters) above NPC to consider for seating
|
|
# Prevents sitting on objects that are too high (like chandeliers)
|
|
max_seating_height_diff=2.0
|
|
|
|
# ========================================
|
|
# OCCUPANCY DETECTION PARAMETERS
|
|
# ========================================
|
|
# Controls how the system detects if seats are already occupied
|
|
|
|
# Enable/disable occupancy detection (1=enabled, 0=disabled)
|
|
enable_occupancy_detection=1
|
|
|
|
# How close (meters) an avatar must be to a seat to count as "occupying" it
|
|
# Smaller radius = must be very close to count as occupied
|
|
occupancy_proximity_radius=1.5
|
|
|
|
# Maximum radius (meters) to scan for avatars when checking seat occupancy
|
|
# Only avatars within this radius of the NPC are considered
|
|
occupancy_detection_radius=12.0
|
|
|
|
# ========================================
|
|
# DEBUG
|
|
# ========================================
|
|
# Displays debugging information if there is a problem. Default is 0 = off
|
|
# Debug output (0 = off, 1 = on)
|
|
debug=0
|
|
|
|
# ========================================
|
|
# END OF CONFIGURATION
|
|
# ========================================
|
|
# All values above will be loaded when the script initializes
|
|
# To reload values after editing, reset the script or use /reload_seating command
|