[{"data":1,"prerenderedAt":1286},["ShallowReactive",2],{"doc-global_essentials\u002Fmiscellaneous\u002Fstore":3},{"id":4,"title":5,"body":6,"description":1277,"extension":1278,"meta":1279,"navigation":406,"path":1282,"seo":1283,"stem":1284,"__hash__":1285},"docs\u002Fdocs\u002Fglobal_essentials\u002Fmiscellaneous\u002Fstore.md","Store",{"type":7,"value":8,"toc":1254},"minimark",[9,13,22,25,28,33,38,41,45,48,61,65,68,70,74,137,139,143,147,155,239,243,246,292,296,299,333,337,340,360,364,371,435,446,521,523,527,533,607,611,786,788,792,796,939,943,1125,1129,1250],[10,11,5],"h1",{"id":12},"store",[14,15,16,17,21],"p",{},"Stores provide ",[18,19,20],"strong",{},"flexible key-value storage"," for your game. Unlike Properties, stores are untyped and created entirely through code - there are no editor forms.",[14,23,24],{},"Use stores when you need dynamic data structures that don't fit the Property model.",[26,27],"hr",{},[29,30,32],"h2",{"id":31},"key-features","Key Features",[34,35,37],"h3",{"id":36},"reactive-serializable","Reactive & Serializable",[14,39,40],{},"Like properties, stores are automatically saved and loaded with your game. Changes trigger reactive UI updates.",[34,42,44],{"id":43},"untyped-flexibility","Untyped Flexibility",[14,46,47],{},"Stores accept any value type for any key. This makes them ideal for:",[49,50,51,55,58],"ul",{},[52,53,54],"li",{},"Dynamic data generated at runtime",[52,56,57],{},"Complex nested structures",[52,59,60],{},"Data where the schema isn't known ahead of time",[34,62,64],{"id":63},"multiple-stores","Multiple Stores",[14,66,67],{},"Create as many named stores as you need to organize your data logically.",[26,69],{},[29,71,73],{"id":72},"when-to-use-store-vs-properties","When to Use Store vs Properties",[75,76,77,90],"table",{},[78,79,80],"thead",{},[81,82,83,87],"tr",{},[84,85,86],"th",{},"Use Case",[84,88,89],{},"Recommendation",[91,92,93,102,109,116,123,130],"tbody",{},[81,94,95,99],{},[96,97,98],"td",{},"Known values (gold, score, settings)",[96,100,101],{},"Properties",[81,103,104,107],{},[96,105,106],{},"Dynamic collections (visited NPCs, custom markers)",[96,108,5],{},[81,110,111,114],{},[96,112,113],{},"Values defined in editor",[96,115,101],{},[81,117,118,121],{},[96,119,120],{},"Values created purely in code",[96,122,5],{},[81,124,125,128],{},[96,126,127],{},"Typed with min\u002Fmax bounds",[96,129,101],{},[81,131,132,135],{},[96,133,134],{},"Flexible structure",[96,136,5],{},[26,138],{},[29,140,142],{"id":141},"api-reference","API Reference",[34,144,146],{"id":145},"createstoreid","createStore(id)",[14,148,149,150,154],{},"Create a new named store. Returns a ",[151,152,153],"code",{},"Map"," object.",[156,157,162],"pre",{"className":158,"code":159,"language":160,"meta":161,"style":161},"language-js shiki shiki-themes github-light github-dark","const myStore = game.createStore(\"quest_data\");\nmyStore.set(\"current_objective\", \"Find the key\");\nmyStore.set(\"hints_shown\", 3);\n","js","",[151,163,164,198,220],{"__ignoreMap":161},[165,166,169,173,177,180,184,188,191,195],"span",{"class":167,"line":168},"line",1,[165,170,172],{"class":171},"szBVR","const",[165,174,176],{"class":175},"sj4cs"," myStore",[165,178,179],{"class":171}," =",[165,181,183],{"class":182},"sVt8B"," game.",[165,185,187],{"class":186},"sScJk","createStore",[165,189,190],{"class":182},"(",[165,192,194],{"class":193},"sZZnC","\"quest_data\"",[165,196,197],{"class":182},");\n",[165,199,201,204,207,209,212,215,218],{"class":167,"line":200},2,[165,202,203],{"class":182},"myStore.",[165,205,206],{"class":186},"set",[165,208,190],{"class":182},[165,210,211],{"class":193},"\"current_objective\"",[165,213,214],{"class":182},", ",[165,216,217],{"class":193},"\"Find the key\"",[165,219,197],{"class":182},[165,221,223,225,227,229,232,234,237],{"class":167,"line":222},3,[165,224,203],{"class":182},[165,226,206],{"class":186},[165,228,190],{"class":182},[165,230,231],{"class":193},"\"hints_shown\"",[165,233,214],{"class":182},[165,235,236],{"class":175},"3",[165,238,197],{"class":182},[34,240,242],{"id":241},"getstoreid","getStore(id)",[14,244,245],{},"Get an existing store by ID. Throws an error if the store doesn't exist.",[156,247,249],{"className":158,"code":248,"language":160,"meta":161,"style":161},"const store = game.getStore(\"quest_data\");\nconst objective = store.get(\"current_objective\");\n",[151,250,251,271],{"__ignoreMap":161},[165,252,253,255,258,260,262,265,267,269],{"class":167,"line":168},[165,254,172],{"class":171},[165,256,257],{"class":175}," store",[165,259,179],{"class":171},[165,261,183],{"class":182},[165,263,264],{"class":186},"getStore",[165,266,190],{"class":182},[165,268,194],{"class":193},[165,270,197],{"class":182},[165,272,273,275,278,280,283,286,288,290],{"class":167,"line":200},[165,274,172],{"class":171},[165,276,277],{"class":175}," objective",[165,279,179],{"class":171},[165,281,282],{"class":182}," store.",[165,284,285],{"class":186},"get",[165,287,190],{"class":182},[165,289,211],{"class":193},[165,291,197],{"class":182},[34,293,295],{"id":294},"hasstoreid","hasStore(id)",[14,297,298],{},"Check if a store exists.",[156,300,302],{"className":158,"code":301,"language":160,"meta":161,"style":161},"if (game.hasStore(\"quest_data\")) {\n  \u002F\u002F store exists\n}\n",[151,303,304,322,328],{"__ignoreMap":161},[165,305,306,309,312,315,317,319],{"class":167,"line":168},[165,307,308],{"class":171},"if",[165,310,311],{"class":182}," (game.",[165,313,314],{"class":186},"hasStore",[165,316,190],{"class":182},[165,318,194],{"class":193},[165,320,321],{"class":182},")) {\n",[165,323,324],{"class":167,"line":200},[165,325,327],{"class":326},"sJ8bj","  \u002F\u002F store exists\n",[165,329,330],{"class":167,"line":222},[165,331,332],{"class":182},"}\n",[34,334,336],{"id":335},"deletestoreid","deleteStore(id)",[14,338,339],{},"Delete a store and all its data.",[156,341,343],{"className":158,"code":342,"language":160,"meta":161,"style":161},"game.deleteStore(\"temporary_combat_data\");\n",[151,344,345],{"__ignoreMap":161},[165,346,347,350,353,355,358],{"class":167,"line":168},[165,348,349],{"class":182},"game.",[165,351,352],{"class":186},"deleteStore",[165,354,190],{"class":182},[165,356,357],{"class":193},"\"temporary_combat_data\"",[165,359,197],{"class":182},[34,361,363],{"id":362},"usestoreid-key","useStore(id, key?)",[14,365,366,367,370],{},"Convenience wrapper that returns a reactive ",[151,368,369],{},"ComputedRef"," to store data.",[156,372,374],{"className":158,"code":373,"language":160,"meta":161,"style":161},"\u002F\u002F Get reactive ref to entire store\nconst runsStore = game.useStore(\"runs\");\n\n\u002F\u002F Get reactive ref to specific item\nconst run = game.useStore(\"runs\", runUid);\n",[151,375,376,381,402,408,414],{"__ignoreMap":161},[165,377,378],{"class":167,"line":168},[165,379,380],{"class":326},"\u002F\u002F Get reactive ref to entire store\n",[165,382,383,385,388,390,392,395,397,400],{"class":167,"line":200},[165,384,172],{"class":171},[165,386,387],{"class":175}," runsStore",[165,389,179],{"class":171},[165,391,183],{"class":182},[165,393,394],{"class":186},"useStore",[165,396,190],{"class":182},[165,398,399],{"class":193},"\"runs\"",[165,401,197],{"class":182},[165,403,404],{"class":167,"line":222},[165,405,407],{"emptyLinePlaceholder":406},true,"\n",[165,409,411],{"class":167,"line":410},4,[165,412,413],{"class":326},"\u002F\u002F Get reactive ref to specific item\n",[165,415,417,419,422,424,426,428,430,432],{"class":167,"line":416},5,[165,418,172],{"class":171},[165,420,421],{"class":175}," run",[165,423,179],{"class":171},[165,425,183],{"class":182},[165,427,394],{"class":186},[165,429,190],{"class":182},[165,431,399],{"class":193},[165,433,434],{"class":182},", runUid);\n",[14,436,437,438,441,442,445],{},"This is equivalent to wrapping ",[151,439,440],{},"getStore()"," in ",[151,443,444],{},"computed()"," manually:",[156,447,449],{"className":158,"code":448,"language":160,"meta":161,"style":161},"\u002F\u002F These are functionally identical:\nconst val = game.useStore(\"myStore\", \"key\");\nconst val = vue.computed(() => game.getStore(\"myStore\").get(\"key\"));\n",[151,450,451,456,481],{"__ignoreMap":161},[165,452,453],{"class":167,"line":168},[165,454,455],{"class":326},"\u002F\u002F These are functionally identical:\n",[165,457,458,460,463,465,467,469,471,474,476,479],{"class":167,"line":200},[165,459,172],{"class":171},[165,461,462],{"class":175}," val",[165,464,179],{"class":171},[165,466,183],{"class":182},[165,468,394],{"class":186},[165,470,190],{"class":182},[165,472,473],{"class":193},"\"myStore\"",[165,475,214],{"class":182},[165,477,478],{"class":193},"\"key\"",[165,480,197],{"class":182},[165,482,483,485,487,489,492,495,498,501,503,505,507,509,512,514,516,518],{"class":167,"line":222},[165,484,172],{"class":171},[165,486,462],{"class":175},[165,488,179],{"class":171},[165,490,491],{"class":182}," vue.",[165,493,494],{"class":186},"computed",[165,496,497],{"class":182},"(() ",[165,499,500],{"class":171},"=>",[165,502,183],{"class":182},[165,504,264],{"class":186},[165,506,190],{"class":182},[165,508,473],{"class":193},[165,510,511],{"class":182},").",[165,513,285],{"class":186},[165,515,190],{"class":182},[165,517,478],{"class":193},[165,519,520],{"class":182},"));\n",[26,522],{},[29,524,526],{"id":525},"map-methods","Map Methods",[14,528,529,530,532],{},"Stores are standard JavaScript ",[151,531,153],{}," objects. Common methods:",[75,534,535,545],{},[78,536,537],{},[81,538,539,542],{},[84,540,541],{},"Method",[84,543,544],{},"Description",[91,546,547,557,567,577,587,597],{},[81,548,549,554],{},[96,550,551],{},[151,552,553],{},"store.get(key)",[96,555,556],{},"Get a value",[81,558,559,564],{},[96,560,561],{},[151,562,563],{},"store.set(key, value)",[96,565,566],{},"Set a value",[81,568,569,574],{},[96,570,571],{},[151,572,573],{},"store.has(key)",[96,575,576],{},"Check if key exists",[81,578,579,584],{},[96,580,581],{},[151,582,583],{},"store.delete(key)",[96,585,586],{},"Remove a key",[81,588,589,594],{},[96,590,591],{},[151,592,593],{},"store.clear()",[96,595,596],{},"Remove all keys",[81,598,599,604],{},[96,600,601],{},[151,602,603],{},"store.size",[96,605,606],{},"Number of entries",[34,608,610],{"id":609},"iterating","Iterating",[156,612,614],{"className":158,"code":613,"language":160,"meta":161,"style":161},"const store = game.getStore(\"npcs_met\");\n\n\u002F\u002F Iterate all entries\nfor (const [key, value] of store) {\n  console.log(key, value);\n}\n\n\u002F\u002F Get all keys\nfor (const key of store.keys()) {\n  console.log(key);\n}\n\n\u002F\u002F Get all values\nfor (const value of store.values()) {\n  console.log(value);\n}\n",[151,615,616,635,639,644,674,685,690,695,701,724,734,739,744,750,771,781],{"__ignoreMap":161},[165,617,618,620,622,624,626,628,630,633],{"class":167,"line":168},[165,619,172],{"class":171},[165,621,257],{"class":175},[165,623,179],{"class":171},[165,625,183],{"class":182},[165,627,264],{"class":186},[165,629,190],{"class":182},[165,631,632],{"class":193},"\"npcs_met\"",[165,634,197],{"class":182},[165,636,637],{"class":167,"line":200},[165,638,407],{"emptyLinePlaceholder":406},[165,640,641],{"class":167,"line":222},[165,642,643],{"class":326},"\u002F\u002F Iterate all entries\n",[165,645,646,649,652,654,657,660,662,665,668,671],{"class":167,"line":410},[165,647,648],{"class":171},"for",[165,650,651],{"class":182}," (",[165,653,172],{"class":171},[165,655,656],{"class":182}," [",[165,658,659],{"class":175},"key",[165,661,214],{"class":182},[165,663,664],{"class":175},"value",[165,666,667],{"class":182},"] ",[165,669,670],{"class":171},"of",[165,672,673],{"class":182}," store) {\n",[165,675,676,679,682],{"class":167,"line":416},[165,677,678],{"class":182},"  console.",[165,680,681],{"class":186},"log",[165,683,684],{"class":182},"(key, value);\n",[165,686,688],{"class":167,"line":687},6,[165,689,332],{"class":182},[165,691,693],{"class":167,"line":692},7,[165,694,407],{"emptyLinePlaceholder":406},[165,696,698],{"class":167,"line":697},8,[165,699,700],{"class":326},"\u002F\u002F Get all keys\n",[165,702,704,706,708,710,713,716,718,721],{"class":167,"line":703},9,[165,705,648],{"class":171},[165,707,651],{"class":182},[165,709,172],{"class":171},[165,711,712],{"class":175}," key",[165,714,715],{"class":171}," of",[165,717,282],{"class":182},[165,719,720],{"class":186},"keys",[165,722,723],{"class":182},"()) {\n",[165,725,727,729,731],{"class":167,"line":726},10,[165,728,678],{"class":182},[165,730,681],{"class":186},[165,732,733],{"class":182},"(key);\n",[165,735,737],{"class":167,"line":736},11,[165,738,332],{"class":182},[165,740,742],{"class":167,"line":741},12,[165,743,407],{"emptyLinePlaceholder":406},[165,745,747],{"class":167,"line":746},13,[165,748,749],{"class":326},"\u002F\u002F Get all values\n",[165,751,753,755,757,759,762,764,766,769],{"class":167,"line":752},14,[165,754,648],{"class":171},[165,756,651],{"class":182},[165,758,172],{"class":171},[165,760,761],{"class":175}," value",[165,763,715],{"class":171},[165,765,282],{"class":182},[165,767,768],{"class":186},"values",[165,770,723],{"class":182},[165,772,774,776,778],{"class":167,"line":773},15,[165,775,678],{"class":182},[165,777,681],{"class":186},[165,779,780],{"class":182},"(value);\n",[165,782,784],{"class":167,"line":783},16,[165,785,332],{"class":182},[26,787],{},[29,789,791],{"id":790},"examples","Examples",[34,793,795],{"id":794},"tracking-npcs-met","Tracking NPCs Met",[156,797,799],{"className":158,"code":798,"language":160,"meta":161,"style":161},"\u002F\u002F Create or get existing store\nconst npcsMet = game.createStore(\"npcs_met\");\n\n\u002F\u002F When meeting an NPC\nfunction meetNpc(npcId) {\n  const count = npcsMet.get(npcId) || 0;\n  npcsMet.set(npcId, count + 1);\n}\n\n\u002F\u002F Check if met\nfunction hasMetNpc(npcId) {\n  return npcsMet.has(npcId);\n}\n",[151,800,801,806,825,829,834,851,878,896,900,904,909,922,935],{"__ignoreMap":161},[165,802,803],{"class":167,"line":168},[165,804,805],{"class":326},"\u002F\u002F Create or get existing store\n",[165,807,808,810,813,815,817,819,821,823],{"class":167,"line":200},[165,809,172],{"class":171},[165,811,812],{"class":175}," npcsMet",[165,814,179],{"class":171},[165,816,183],{"class":182},[165,818,187],{"class":186},[165,820,190],{"class":182},[165,822,632],{"class":193},[165,824,197],{"class":182},[165,826,827],{"class":167,"line":222},[165,828,407],{"emptyLinePlaceholder":406},[165,830,831],{"class":167,"line":410},[165,832,833],{"class":326},"\u002F\u002F When meeting an NPC\n",[165,835,836,839,842,844,848],{"class":167,"line":416},[165,837,838],{"class":171},"function",[165,840,841],{"class":186}," meetNpc",[165,843,190],{"class":182},[165,845,847],{"class":846},"s4XuR","npcId",[165,849,850],{"class":182},") {\n",[165,852,853,856,859,861,864,866,869,872,875],{"class":167,"line":687},[165,854,855],{"class":171},"  const",[165,857,858],{"class":175}," count",[165,860,179],{"class":171},[165,862,863],{"class":182}," npcsMet.",[165,865,285],{"class":186},[165,867,868],{"class":182},"(npcId) ",[165,870,871],{"class":171},"||",[165,873,874],{"class":175}," 0",[165,876,877],{"class":182},";\n",[165,879,880,883,885,888,891,894],{"class":167,"line":692},[165,881,882],{"class":182},"  npcsMet.",[165,884,206],{"class":186},[165,886,887],{"class":182},"(npcId, count ",[165,889,890],{"class":171},"+",[165,892,893],{"class":175}," 1",[165,895,197],{"class":182},[165,897,898],{"class":167,"line":697},[165,899,332],{"class":182},[165,901,902],{"class":167,"line":703},[165,903,407],{"emptyLinePlaceholder":406},[165,905,906],{"class":167,"line":726},[165,907,908],{"class":326},"\u002F\u002F Check if met\n",[165,910,911,913,916,918,920],{"class":167,"line":736},[165,912,838],{"class":171},[165,914,915],{"class":186}," hasMetNpc",[165,917,190],{"class":182},[165,919,847],{"class":846},[165,921,850],{"class":182},[165,923,924,927,929,932],{"class":167,"line":741},[165,925,926],{"class":171},"  return",[165,928,863],{"class":182},[165,930,931],{"class":186},"has",[165,933,934],{"class":182},"(npcId);\n",[165,936,937],{"class":167,"line":746},[165,938,332],{"class":182},[34,940,942],{"id":941},"custom-npc-relationship-data","Custom NPC Relationship Data",[156,944,946],{"className":158,"code":945,"language":160,"meta":161,"style":161},"\u002F\u002F Create store for NPC data\ngame.createStore(\"npc_relations\");\n\n\u002F\u002F Store complex data per NPC\nfunction updateRelation(npcId, data) {\n  const relations = game.getStore(\"npc_relations\");\n  const existing = relations.get(npcId) || { trust: 0, gifts: [], conversations: 0 };\n  relations.set(npcId, { ...existing, ...data });\n}\n\n\u002F\u002F Usage\nupdateRelation(\"merchant\", { trust: 50, gifts: [\"apple\", \"gold\"] });\nupdateRelation(\"merchant\", { conversations: 5 });\n",[151,947,948,953,966,970,975,993,1012,1044,1065,1069,1073,1078,1108],{"__ignoreMap":161},[165,949,950],{"class":167,"line":168},[165,951,952],{"class":326},"\u002F\u002F Create store for NPC data\n",[165,954,955,957,959,961,964],{"class":167,"line":200},[165,956,349],{"class":182},[165,958,187],{"class":186},[165,960,190],{"class":182},[165,962,963],{"class":193},"\"npc_relations\"",[165,965,197],{"class":182},[165,967,968],{"class":167,"line":222},[165,969,407],{"emptyLinePlaceholder":406},[165,971,972],{"class":167,"line":410},[165,973,974],{"class":326},"\u002F\u002F Store complex data per NPC\n",[165,976,977,979,982,984,986,988,991],{"class":167,"line":416},[165,978,838],{"class":171},[165,980,981],{"class":186}," updateRelation",[165,983,190],{"class":182},[165,985,847],{"class":846},[165,987,214],{"class":182},[165,989,990],{"class":846},"data",[165,992,850],{"class":182},[165,994,995,997,1000,1002,1004,1006,1008,1010],{"class":167,"line":687},[165,996,855],{"class":171},[165,998,999],{"class":175}," relations",[165,1001,179],{"class":171},[165,1003,183],{"class":182},[165,1005,264],{"class":186},[165,1007,190],{"class":182},[165,1009,963],{"class":193},[165,1011,197],{"class":182},[165,1013,1014,1016,1019,1021,1024,1026,1028,1030,1033,1036,1039,1041],{"class":167,"line":692},[165,1015,855],{"class":171},[165,1017,1018],{"class":175}," existing",[165,1020,179],{"class":171},[165,1022,1023],{"class":182}," relations.",[165,1025,285],{"class":186},[165,1027,868],{"class":182},[165,1029,871],{"class":171},[165,1031,1032],{"class":182}," { trust: ",[165,1034,1035],{"class":175},"0",[165,1037,1038],{"class":182},", gifts: [], conversations: ",[165,1040,1035],{"class":175},[165,1042,1043],{"class":182}," };\n",[165,1045,1046,1049,1051,1054,1057,1060,1062],{"class":167,"line":697},[165,1047,1048],{"class":182},"  relations.",[165,1050,206],{"class":186},[165,1052,1053],{"class":182},"(npcId, { ",[165,1055,1056],{"class":171},"...",[165,1058,1059],{"class":182},"existing, ",[165,1061,1056],{"class":171},[165,1063,1064],{"class":182},"data });\n",[165,1066,1067],{"class":167,"line":703},[165,1068,332],{"class":182},[165,1070,1071],{"class":167,"line":726},[165,1072,407],{"emptyLinePlaceholder":406},[165,1074,1075],{"class":167,"line":736},[165,1076,1077],{"class":326},"\u002F\u002F Usage\n",[165,1079,1080,1083,1085,1088,1091,1094,1097,1100,1102,1105],{"class":167,"line":741},[165,1081,1082],{"class":186},"updateRelation",[165,1084,190],{"class":182},[165,1086,1087],{"class":193},"\"merchant\"",[165,1089,1090],{"class":182},", { trust: ",[165,1092,1093],{"class":175},"50",[165,1095,1096],{"class":182},", gifts: [",[165,1098,1099],{"class":193},"\"apple\"",[165,1101,214],{"class":182},[165,1103,1104],{"class":193},"\"gold\"",[165,1106,1107],{"class":182},"] });\n",[165,1109,1110,1112,1114,1116,1119,1122],{"class":167,"line":746},[165,1111,1082],{"class":186},[165,1113,190],{"class":182},[165,1115,1087],{"class":193},[165,1117,1118],{"class":182},", { conversations: ",[165,1120,1121],{"class":175},"5",[165,1123,1124],{"class":182}," });\n",[34,1126,1128],{"id":1127},"temporary-combat-state","Temporary Combat State",[156,1130,1132],{"className":158,"code":1131,"language":160,"meta":161,"style":161},"\u002F\u002F Create at combat start\ngame.createStore(\"combat\");\nconst combat = game.getStore(\"combat\");\ncombat.set(\"turn\", 1);\ncombat.set(\"enemies\", [\"goblin_1\", \"goblin_2\"]);\ncombat.set(\"player_buffs\", []);\n\n\u002F\u002F Clean up after combat\ngame.deleteStore(\"combat\");\n",[151,1133,1134,1139,1152,1171,1190,1215,1229,1233,1238],{"__ignoreMap":161},[165,1135,1136],{"class":167,"line":168},[165,1137,1138],{"class":326},"\u002F\u002F Create at combat start\n",[165,1140,1141,1143,1145,1147,1150],{"class":167,"line":200},[165,1142,349],{"class":182},[165,1144,187],{"class":186},[165,1146,190],{"class":182},[165,1148,1149],{"class":193},"\"combat\"",[165,1151,197],{"class":182},[165,1153,1154,1156,1159,1161,1163,1165,1167,1169],{"class":167,"line":222},[165,1155,172],{"class":171},[165,1157,1158],{"class":175}," combat",[165,1160,179],{"class":171},[165,1162,183],{"class":182},[165,1164,264],{"class":186},[165,1166,190],{"class":182},[165,1168,1149],{"class":193},[165,1170,197],{"class":182},[165,1172,1173,1176,1178,1180,1183,1185,1188],{"class":167,"line":410},[165,1174,1175],{"class":182},"combat.",[165,1177,206],{"class":186},[165,1179,190],{"class":182},[165,1181,1182],{"class":193},"\"turn\"",[165,1184,214],{"class":182},[165,1186,1187],{"class":175},"1",[165,1189,197],{"class":182},[165,1191,1192,1194,1196,1198,1201,1204,1207,1209,1212],{"class":167,"line":416},[165,1193,1175],{"class":182},[165,1195,206],{"class":186},[165,1197,190],{"class":182},[165,1199,1200],{"class":193},"\"enemies\"",[165,1202,1203],{"class":182},", [",[165,1205,1206],{"class":193},"\"goblin_1\"",[165,1208,214],{"class":182},[165,1210,1211],{"class":193},"\"goblin_2\"",[165,1213,1214],{"class":182},"]);\n",[165,1216,1217,1219,1221,1223,1226],{"class":167,"line":687},[165,1218,1175],{"class":182},[165,1220,206],{"class":186},[165,1222,190],{"class":182},[165,1224,1225],{"class":193},"\"player_buffs\"",[165,1227,1228],{"class":182},", []);\n",[165,1230,1231],{"class":167,"line":692},[165,1232,407],{"emptyLinePlaceholder":406},[165,1234,1235],{"class":167,"line":697},[165,1236,1237],{"class":326},"\u002F\u002F Clean up after combat\n",[165,1239,1240,1242,1244,1246,1248],{"class":167,"line":703},[165,1241,349],{"class":182},[165,1243,352],{"class":186},[165,1245,190],{"class":182},[165,1247,1149],{"class":193},[165,1249,197],{"class":182},[1251,1252,1253],"style",{},"html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .s4XuR, html code.shiki .s4XuR{--shiki-default:#E36209;--shiki-dark:#FFAB70}",{"title":161,"searchDepth":200,"depth":200,"links":1255},[1256,1261,1262,1269,1272],{"id":31,"depth":200,"text":32,"children":1257},[1258,1259,1260],{"id":36,"depth":222,"text":37},{"id":43,"depth":222,"text":44},{"id":63,"depth":222,"text":64},{"id":72,"depth":200,"text":73},{"id":141,"depth":200,"text":142,"children":1263},[1264,1265,1266,1267,1268],{"id":145,"depth":222,"text":146},{"id":241,"depth":222,"text":242},{"id":294,"depth":222,"text":295},{"id":335,"depth":222,"text":336},{"id":362,"depth":222,"text":363},{"id":525,"depth":200,"text":526,"children":1270},[1271],{"id":609,"depth":222,"text":610},{"id":790,"depth":200,"text":791,"children":1273},[1274,1275,1276],{"id":794,"depth":222,"text":795},{"id":941,"depth":222,"text":942},{"id":1127,"depth":222,"text":1128},"Stores provide flexible key-value storage for your game. Unlike Properties, stores are untyped and created entirely through code - there are no editor forms.","md",{"plugin":1280,"category":1281,"page":12},"global_essentials","miscellaneous","\u002Fdocs\u002Fglobal_essentials\u002Fmiscellaneous\u002Fstore",{"title":5,"description":1277},"docs\u002Fglobal_essentials\u002Fmiscellaneous\u002Fstore","7w9DQqeOJPSGSEhHJUIRt2GFfbFFZ2VpslBhIrfJaBA",1779582261540]