# ---------------------------------------------------------------------------
# Fake players
# ---------------------------------------------------------------------------
# Our fake player system uses the existing NPC system, allowing fake players
# to function seamlessly like NPCs with minimal impact on server performance.

# Enable fake players.
EnableFakePlayers = True

# Enable chatting with fake players.
FakePlayerChat = True

# Enable shots usage for fake players.
FakePlayerUseShots = True

# Reward PvP kills by killing fake players.
FakePlayerKillsRewardPvP = True

# Fake player kills apply karma rules.
FakePlayerUnflaggedKillsKarma = True

# Fake players can be attacked without PvP flagging.
FakePlayerAutoAttackable = False

# Aggressive AI fake players attack nearby monsters.
FakePlayerAggroMonsters = True

# Aggressive AI fake players attack nearby players.
FakePlayerAggroPlayers = True

# Aggressive AI fake players attack nearby fake players.
FakePlayerAggroFPC = False

# Fake players can drop items when killing monsters.
FakePlayerCanDropItems = True

# Fake players can pickup dropped items.
FakePlayerCanPickup = True


# ---------------------------------------------------------------------------
# SPP additions: LLM chat and AI brain
# ---------------------------------------------------------------------------

# Generate fake player chat lines with a local LLM (Ollama).
# When Ollama is not running, bots silently fall back to FakePlayerChatData.xml templates.
FakePlayerLlmChat = True

# Ollama generate endpoint.
FakePlayerLlmUrl = http://127.0.0.1:11434/api/generate

# Ollama model name (run: ollama pull gemma3).
FakePlayerLlmModel = gemma3

# Language the bots chat in.
FakePlayerLlmLanguage = русский

# LLM request timeout, milliseconds.
FakePlayerLlmTimeout = 15000

# Chance (%) per AI tick that an idle bot says something when a player is nearby.
FakePlayerAmbientChatChance = 25

# Chance (%) that a bot taunts when engaging a player or comments while assisting.
FakePlayerCombatChatChance = 60

# Chance (%) that a bot answers a general chat message said near it.
FakePlayerLocalChatReplyChance = 40

# Fake player AI tick in seconds (helper assist, ambient chat).
FakePlayerAiTick = 5

# Real progression: bots gain exp from monsters they kill, level up,
# and migrate to higher level zones with better gear (see BOTS.md).
FakePlayerProgression = False

# Multiplier for exp bots receive from kills.
FakePlayerXpRate = 3

# Trading simulation: bots periodically go to town, sit down with a private
# store (sell after successful farming, buy otherwise), shout in trade chat,
# close the shop after TradeDuration minutes and return to farming.
FakePlayerTrading = True

# Shop lifetime, minutes.
FakePlayerTradeDuration = 60

# Pause between shops, minutes (plus random up to 30 min).
FakePlayerTradeCooldown = 120

# Trade chat shout interval, seconds.
FakePlayerTradeShoutInterval = 180

# Chance (%) to actually open a shop when the time comes.
FakePlayerTradeChance = 30

# NOTE: with FakePlayerProgression = False the NPC bot population is off and the
# world is populated by headless players only (see FakePlayerHeadlessCount).
#
# Headless players: real Player instances without a client. They can join
# real parties (invite them - they auto accept), share exp, fight beside you.
# 0 = disabled.
FakePlayerHeadlessCount = 500

# Who answers first when a player talks to a bot: "seams" - the template engine
# (idiolect, memory, stance; the LLM is used only for messages no intent matched),
# "llm" - the LLM answers everything, templates are the fallback.
FakePlayerLlmPriority = seams

# Bots talk to each other (greetings, small talk, gossip) when a real player can see it.
FakePlayerBotDialogues = True

# Real economy: sell junk to the merchant, buy shots / arrows / potions with own adena.
FakePlayerEconomy = True

# Bots take their first / second / third profession at 20 / 40 / 76 like players.
FakePlayerProfessionChange = True

# Bot clans register for castle sieges and fight them (attackers break the gates,
# the clan leader engraves the artifact; defenders hold it).
FakePlayerSieges = True

# How many bot clans attack each castle siege.
FakePlayerSiegeAttackerClans = 2

# Also besiege castles owned by real players' clans.
FakePlayerSiegeAttackPlayerCastles = False

# Raid boss hunts: every 30-90 minutes a real party of 5-9 bots goes for a live raid boss of its level.
FakePlayerRaids = True

# Print bot activity totals (kills, exp, loot, trades, chat...) to the log every N minutes. 0 = off.
FakePlayerStatsLogMinutes = 10

# Write every line the bots say (channel, name, seam, text) to the server log.
FakePlayerChatLog = False
