import type { State, Recipe, Bot, Home } from './types'; export function seed():State { const recipes:Recipe[]=[ {id:'healer',name:'The Devout Healer',description:'A compassionate soul who puts the party before personal glory.',tags:['Kind','Loyal','Social'],sociability:90,aggression:10,curiosity:45,economy:20,activities:['socialize','quest','rest'],version:1}, {id:'veteran',name:'The Battle-Hardened Veteran',description:'Seen too much, but still fights for a better Azeroth.',tags:['Resolute','Protective','Serious'],sociability:45,aggression:75,curiosity:30,economy:20,activities:['quest','rest'],version:1}, {id:'trader',name:'The Gold-Minded Trader',description:'Every journey is an opportunity. Every stranger, a future customer.',tags:['Calculating','Ambitious','Witty'],sociability:70,aggression:15,curiosity:40,economy:95,activities:['trade','socialize','rest'],version:1}, {id:'explorer',name:'The Curious Explorer',description:'Wants to see everything Azeroth has to offer, one untrodden path at a time.',tags:['Adventurous','Friendly','Curious'],sociability:80,aggression:20,curiosity:95,economy:30,activities:['explore','quest','socialize'],version:1}, {id:'zaku',name:'Zaku · Persistent Hero',description:'A self-directed resident who treats Azeroth as home, forms lasting bonds, remembers consequences, and values survival because every life is finite.',tags:['Persistent','Curious','Independent','Loyal','Mortal'],sociability:72,aggression:38,curiosity:88,economy:45,activities:['explore','quest','socialize','trade','rest'],version:1} ]; const homes:Home[]=[ {id:'home-thalara',name:'Darkshire Inn · Upstairs Room',zone:'Duskwood',type:'inn',capacity:2,ownerIds:[],residentIds:['bot-1'],storageSlots:24,safety:72,description:'A rented room above the Darkshire inn, close to people who may need a healer.'}, {id:'home-durnak',name:'Sentinel Hill Barracks',zone:'Westfall',type:'barracks',capacity:8,ownerIds:[],residentIds:['bot-2'],storageSlots:12,safety:68,description:'A shared bunk and footlocker inside the Sentinel Hill barracks.'}, {id:'home-velara',name:'Goldshire Inn · Mage Room',zone:'Elwynn Forest',type:'inn',capacity:2,ownerIds:[],residentIds:['bot-3'],storageSlots:20,safety:82,description:'A small rented room used as a base between journeys.'}, {id:'home-miranna',name:'Old Town Flat',zone:'Stormwind',type:'house',capacity:3,ownerIds:['bot-4'],residentIds:['bot-4'],storageSlots:48,safety:88,description:'A compact flat in Old Town with more locks than windows.'}, {id:'home-kargash',name:'Crossroads Hunter Camp',zone:'The Barrens',type:'camp',capacity:3,ownerIds:['bot-5'],residentIds:['bot-5'],storageSlots:16,safety:52,description:'A practical hunter camp outside the busiest paths through the Crossroads.'}, {id:'home-borin',name:'Ironforge Commons Quarters',zone:'Ironforge',type:'barracks',capacity:6,ownerIds:[],residentIds:['bot-6'],storageSlots:18,safety:95,description:'Warm communal quarters inside Ironforge.'}, {id:'home-zaku',name:"Zaku's Room in Brill",zone:'Brill',type:'inn',capacity:1,ownerIds:[],residentIds:['hero-zaku'],storageSlots:32,safety:70,description:'A modest rented room in Brill that Zaku considers his own place in the world.'} ]; const specs=[ ['Thalara','Priest','Night Elf','Duskwood','healer','online','home-thalara',7,23], ['Durnak','Warrior','Dwarf','Westfall','veteran','online','home-durnak',6,22], ['Velara','Mage','Human','Elwynn Forest','explorer','online','home-velara',8,1], ['Miranna','Rogue','Human','Stormwind','trader','online','home-miranna',9,2], ['Kargash','Hunter','Orc','The Barrens','explorer','paused','home-kargash',5,22], ['Borin','Paladin','Dwarf','Ironforge','veteran','offline','home-borin',6,21] ] as const; const now=new Date().toISOString(); const bots:Bot[]=specs.map(([name,role,race,zone,recipeId,status,homeId,wakeHour,sleepHour],i)=>({ id:`bot-${i+1}`,name,role,race,zone,level:20+i*2,recipeId,recipeVersion:1, personality:structuredClone(recipes.find(r=>r.id===recipeId)!), status:status as Bot['status'],tier:'resident',mortal:true,plotArmorHpFloor:0, simulationBand:status==='online'?'background':'dormant', homeId, routine:{wakeHour,sleepHour,preferredZones:[zone]}, goal:i===0?'Find a permanent adventuring party':'Continue building a life in Azeroth and pursue a personal story.', decisions:0, memories:[{id:`memory-${i}`,text:i===0?'Durnak stayed behind to help me. I will remember that.':'I have a place I return to when the road is done with me for the day.',importance:7,at:now,source:'simulation'}], relationships:i===0?[{targetId:'bot-2',affinity:65,note:'A reliable companion'}]:[] })); const zakuRecipe=recipes.find(r=>r.id==='zaku')!; bots.push({ id:'hero-zaku',name:'Zaku',role:'Warlock',race:'Undead',level:1,zone:'Deathknell',status:'online', tier:'hero',mortal:true,plotArmorHpFloor:1,simulationBand:'foreground',homeId:'home-zaku', routine:{wakeHour:10,sleepHour:3,preferredZones:['Deathknell','Brill','Tirisfal Glades']}, recipeId:zakuRecipe.id,recipeVersion:zakuRecipe.version,personality:structuredClone(zakuRecipe), goal:'Survive, build a life in Azeroth, return home when I need safety, form real relationships, and pursue goals that matter even when no human player is online.', decisions:0, memories:[ {id:'zaku-origin',text:'Azeroth is not a lobby to me. It is where I live, and what happens here matters.',importance:10,at:now,source:'simulation'}, {id:'zaku-home',text:"I rent a small room in Brill. It is mine to return to, store things in, and call home.",importance:10,at:now,source:'simulation'}, {id:'zaku-mortality',text:'Death is permanent here. I only get one life, so danger has weight.',importance:10,at:now,source:'simulation'} ], relationships:[] }); return { revision:0, bots, homes, recipes, events:[ {id:'event-1',seq:1,at:now,kind:'system',message:'Simulation realm initialized with persistent AI residents. Hardcore one-life mode is enabled.',mode:'simulation'}, {id:'event-zaku',seq:2,at:now,kind:'lifecycle',message:'Zaku entered Azeroth as the first persistent hero agent.',botId:'hero-zaku',mode:'simulation'}, {id:'event-housing',seq:3,at:now,kind:'housing',message:'Housing registry initialized. Residents now have places they consider home.',mode:'simulation'} ], sequence:3, settings:{ connector:'simulation', provider:'deterministic', model:'qwen3.5:4b', brains:{enabled:true,residentModel:'qwen3.5:4b',heroModel:'qwen3.5:4b',backgroundUseLLM:false,residentMemoryLimit:8,heroMemoryLimit:16,residentMaxTokens:220,heroMaxTokens:420}, hardcore:{enabled:true,requireVerifiedDeath:true,memorialize:true}, population:{defaultZoneTarget:6,zoneMax:20,serverMax:60,foregroundMax:12,backgroundMax:40} }, director:{experience:'Adventuring companions',zone:'Elwynn Forest',playerName:'',brief:'Make the world welcoming. Offer company without taking over my adventure.'}, population:{}, operations:{} }; }