Files
DM67-Developer 4a850d3a24 Add files via upload
Add initial NPC Framework files
2025-12-08 13:43:33 -06:00

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