[{"data":1,"prerenderedAt":1666},["ShallowReactive",2],{"doc-global_essentials\u002Fdungeons\u002Fdungeons_api":3},{"id":4,"title":5,"body":6,"description":17,"extension":1657,"meta":1658,"navigation":144,"path":1662,"seo":1663,"stem":1664,"__hash__":1665},"docs\u002Fdocs\u002Fglobal_essentials\u002Fdungeons\u002Fdungeons_api.md","API",{"type":7,"value":8,"toc":1632},"minimark",[9,14,18,21,26,31,34,88,92,95,252,256,262,390,394,397,412,416,419,453,457,460,484,488,494,667,671,674,735,739,742,766,770,773,800,804,811,862,864,868,872,875,1004,1008,1011,1047,1051,1054,1073,1077,1080,1118,1120,1124,1127,1180,1265,1267,1271,1274,1388,1392,1628],[10,11,13],"h1",{"id":12},"dungeons-api-reference","Dungeons API Reference",[15,16,17],"p",{},"API reference for working with dungeons in code.",[19,20],"hr",{},[22,23,25],"h2",{"id":24},"game-methods","Game Methods",[27,28,30],"h3",{"id":29},"enterval","enter(val)",[15,32,33],{},"Enter a dungeon room or dungeon.",[35,36,41],"pre",{"className":37,"code":38,"language":39,"meta":40,"style":40},"language-js shiki shiki-themes github-light github-dark","game.enter('tavern'); \u002F\u002F Enter room in current dungeon\ngame.enter('forest.entrance'); \u002F\u002F Enter specific dungeon and room\n","js","",[42,43,44,71],"code",{"__ignoreMap":40},[45,46,49,53,57,60,64,67],"span",{"class":47,"line":48},"line",1,[45,50,52],{"class":51},"sVt8B","game.",[45,54,56],{"class":55},"sScJk","enter",[45,58,59],{"class":51},"(",[45,61,63],{"class":62},"sZZnC","'tavern'",[45,65,66],{"class":51},"); ",[45,68,70],{"class":69},"sJ8bj","\u002F\u002F Enter room in current dungeon\n",[45,72,74,76,78,80,83,85],{"class":47,"line":73},2,[45,75,52],{"class":51},[45,77,56],{"class":55},[45,79,59],{"class":51},[45,81,82],{"class":62},"'forest.entrance'",[45,84,66],{"class":51},[45,86,87],{"class":69},"\u002F\u002F Enter specific dungeon and room\n",[27,89,91],{"id":90},"playscenesceneid-dungeonid","playScene(sceneId, dungeonId?)",[15,93,94],{},"Play a specific scene in a dungeon. Accepts shorthand scene IDs that are resolved internally.",[35,96,98],{"className":37,"code":97,"language":39,"meta":40,"style":40},"\u002F\u002F Shorthand formats (resolved to full ID internally)\ngame.playScene('#room1.greetings'); \u002F\u002F Becomes #room1.greetings.1.1.1\ngame.playScene('greetings'); \u002F\u002F Uses current room, becomes #currentRoom.greetings.1.1.1\n\n\u002F\u002F Full scene ID format: #room.scene.row.block.paragraph\ngame.playScene('#room1.greetings.1.1.1');\n\n\u002F\u002F With specific dungeon\ngame.playScene('#room1.intro', 'forest_dungeon');\n\n\u002F\u002F Using anchors\ngame.playScene('&my_anchor'); \u002F\u002F Jump to anchor in current dungeon\n\n\u002F\u002F Exit current scene\ngame.playScene(null);\n",[42,99,100,105,122,139,146,152,167,172,178,198,203,209,226,231,237],{"__ignoreMap":40},[45,101,102],{"class":47,"line":48},[45,103,104],{"class":69},"\u002F\u002F Shorthand formats (resolved to full ID internally)\n",[45,106,107,109,112,114,117,119],{"class":47,"line":73},[45,108,52],{"class":51},[45,110,111],{"class":55},"playScene",[45,113,59],{"class":51},[45,115,116],{"class":62},"'#room1.greetings'",[45,118,66],{"class":51},[45,120,121],{"class":69},"\u002F\u002F Becomes #room1.greetings.1.1.1\n",[45,123,125,127,129,131,134,136],{"class":47,"line":124},3,[45,126,52],{"class":51},[45,128,111],{"class":55},[45,130,59],{"class":51},[45,132,133],{"class":62},"'greetings'",[45,135,66],{"class":51},[45,137,138],{"class":69},"\u002F\u002F Uses current room, becomes #currentRoom.greetings.1.1.1\n",[45,140,142],{"class":47,"line":141},4,[45,143,145],{"emptyLinePlaceholder":144},true,"\n",[45,147,149],{"class":47,"line":148},5,[45,150,151],{"class":69},"\u002F\u002F Full scene ID format: #room.scene.row.block.paragraph\n",[45,153,155,157,159,161,164],{"class":47,"line":154},6,[45,156,52],{"class":51},[45,158,111],{"class":55},[45,160,59],{"class":51},[45,162,163],{"class":62},"'#room1.greetings.1.1.1'",[45,165,166],{"class":51},");\n",[45,168,170],{"class":47,"line":169},7,[45,171,145],{"emptyLinePlaceholder":144},[45,173,175],{"class":47,"line":174},8,[45,176,177],{"class":69},"\u002F\u002F With specific dungeon\n",[45,179,181,183,185,187,190,193,196],{"class":47,"line":180},9,[45,182,52],{"class":51},[45,184,111],{"class":55},[45,186,59],{"class":51},[45,188,189],{"class":62},"'#room1.intro'",[45,191,192],{"class":51},", ",[45,194,195],{"class":62},"'forest_dungeon'",[45,197,166],{"class":51},[45,199,201],{"class":47,"line":200},10,[45,202,145],{"emptyLinePlaceholder":144},[45,204,206],{"class":47,"line":205},11,[45,207,208],{"class":69},"\u002F\u002F Using anchors\n",[45,210,212,214,216,218,221,223],{"class":47,"line":211},12,[45,213,52],{"class":51},[45,215,111],{"class":55},[45,217,59],{"class":51},[45,219,220],{"class":62},"'&my_anchor'",[45,222,66],{"class":51},[45,224,225],{"class":69},"\u002F\u002F Jump to anchor in current dungeon\n",[45,227,229],{"class":47,"line":228},13,[45,230,145],{"emptyLinePlaceholder":144},[45,232,234],{"class":47,"line":233},14,[45,235,236],{"class":69},"\u002F\u002F Exit current scene\n",[45,238,240,242,244,246,250],{"class":47,"line":239},15,[45,241,52],{"class":51},[45,243,111],{"class":55},[45,245,59],{"class":51},[45,247,249],{"class":248},"sj4cs","null",[45,251,166],{"class":51},[27,253,255],{"id":254},"resolvesceneidvalue","resolveSceneId(value)",[15,257,258,259,261],{},"Resolve a shorthand scene reference to a full scene ID and dungeon ID. Useful when you need to resolve the scene before calling ",[42,260,111],{},", e.g., to validate or use with other methods.",[35,263,265],{"className":37,"code":264,"language":39,"meta":40,"style":40},"\u002F\u002F Resolve dungeon.room.scene format\nconst { sceneId, dungeonId } = game.resolveSceneId('factions.goblins.scouts');\n\u002F\u002F sceneId: '#goblins.scouts.1.1.1', dungeonId: 'factions'\ngame.playScene(sceneId, dungeonId);\n\n\u002F\u002F Resolve room.scene format (uses current dungeon)\nconst resolved = game.resolveSceneId('tavern.greeting');\n\u002F\u002F sceneId: '#tavern.greeting.1.1.1', dungeonId: null\n\n\u002F\u002F Resolve anchor format\nconst anchor = game.resolveSceneId('&my_anchor');\n\u002F\u002F Returns the scene ID where the anchor is defined\n",[42,266,267,272,308,313,322,326,331,352,357,361,366,385],{"__ignoreMap":40},[45,268,269],{"class":47,"line":48},[45,270,271],{"class":69},"\u002F\u002F Resolve dungeon.room.scene format\n",[45,273,274,278,281,284,286,289,292,295,298,301,303,306],{"class":47,"line":73},[45,275,277],{"class":276},"szBVR","const",[45,279,280],{"class":51}," { ",[45,282,283],{"class":248},"sceneId",[45,285,192],{"class":51},[45,287,288],{"class":248},"dungeonId",[45,290,291],{"class":51}," } ",[45,293,294],{"class":276},"=",[45,296,297],{"class":51}," game.",[45,299,300],{"class":55},"resolveSceneId",[45,302,59],{"class":51},[45,304,305],{"class":62},"'factions.goblins.scouts'",[45,307,166],{"class":51},[45,309,310],{"class":47,"line":124},[45,311,312],{"class":69},"\u002F\u002F sceneId: '#goblins.scouts.1.1.1', dungeonId: 'factions'\n",[45,314,315,317,319],{"class":47,"line":141},[45,316,52],{"class":51},[45,318,111],{"class":55},[45,320,321],{"class":51},"(sceneId, dungeonId);\n",[45,323,324],{"class":47,"line":148},[45,325,145],{"emptyLinePlaceholder":144},[45,327,328],{"class":47,"line":154},[45,329,330],{"class":69},"\u002F\u002F Resolve room.scene format (uses current dungeon)\n",[45,332,333,335,338,341,343,345,347,350],{"class":47,"line":169},[45,334,277],{"class":276},[45,336,337],{"class":248}," resolved",[45,339,340],{"class":276}," =",[45,342,297],{"class":51},[45,344,300],{"class":55},[45,346,59],{"class":51},[45,348,349],{"class":62},"'tavern.greeting'",[45,351,166],{"class":51},[45,353,354],{"class":47,"line":174},[45,355,356],{"class":69},"\u002F\u002F sceneId: '#tavern.greeting.1.1.1', dungeonId: null\n",[45,358,359],{"class":47,"line":180},[45,360,145],{"emptyLinePlaceholder":144},[45,362,363],{"class":47,"line":200},[45,364,365],{"class":69},"\u002F\u002F Resolve anchor format\n",[45,367,368,370,373,375,377,379,381,383],{"class":47,"line":205},[45,369,277],{"class":276},[45,371,372],{"class":248}," anchor",[45,374,340],{"class":276},[45,376,297],{"class":51},[45,378,300],{"class":55},[45,380,59],{"class":51},[45,382,220],{"class":62},[45,384,166],{"class":51},[45,386,387],{"class":47,"line":211},[45,388,389],{"class":69},"\u002F\u002F Returns the scene ID where the anchor is defined\n",[27,391,393],{"id":392},"nextscene","nextScene()",[15,395,396],{},"Proceed to the next scene in the current dialogue.",[35,398,400],{"className":37,"code":399,"language":39,"meta":40,"style":40},"game.nextScene();\n",[42,401,402],{"__ignoreMap":40},[45,403,404,406,409],{"class":47,"line":48},[45,405,52],{"class":51},[45,407,408],{"class":55},"nextScene",[45,410,411],{"class":51},"();\n",[27,413,415],{"id":414},"exitsceneskipevents","exitScene(skipEvents?)",[15,417,418],{},"Exit the current scene.",[35,420,422],{"className":37,"code":421,"language":39,"meta":40,"style":40},"game.exitScene(); \u002F\u002F Normal exit with events\ngame.exitScene(true); \u002F\u002F Skip exit events\n",[42,423,424,437],{"__ignoreMap":40},[45,425,426,428,431,434],{"class":47,"line":48},[45,427,52],{"class":51},[45,429,430],{"class":55},"exitScene",[45,432,433],{"class":51},"(); ",[45,435,436],{"class":69},"\u002F\u002F Normal exit with events\n",[45,438,439,441,443,445,448,450],{"class":47,"line":73},[45,440,52],{"class":51},[45,442,430],{"class":55},[45,444,59],{"class":51},[45,446,447],{"class":248},"true",[45,449,66],{"class":51},[45,451,452],{"class":69},"\u002F\u002F Skip exit events\n",[27,454,456],{"id":455},"getdungeoniddungeonid","getDungeonId(dungeonId?)",[15,458,459],{},"Get the current dungeon ID.",[35,461,463],{"className":37,"code":462,"language":39,"meta":40,"style":40},"const id = game.getDungeonId(); \u002F\u002F Get current dungeon ID\n",[42,464,465],{"__ignoreMap":40},[45,466,467,469,472,474,476,479,481],{"class":47,"line":48},[45,468,277],{"class":276},[45,470,471],{"class":248}," id",[45,473,340],{"class":276},[45,475,297],{"class":51},[45,477,478],{"class":55},"getDungeonId",[45,480,433],{"class":51},[45,482,483],{"class":69},"\u002F\u002F Get current dungeon ID\n",[27,485,487],{"id":486},"getlinebydungeonidlineid-dungeonid","getLineByDungeonId(lineId, dungeonId?)",[15,489,490,491,493],{},"Get a dungeon line by its exact ID. Unlike ",[42,492,111],{},", this does not resolve shorthand - you must provide the full line ID as stored in the dungeon.",[35,495,497],{"className":37,"code":496,"language":39,"meta":40,"style":40},"\u002F\u002F Scene lines (full format: #room.scene.row.block.paragraph)\nconst scene = game.getLineByDungeonId('#room1.greetings.1.1.1');\nconsole.log(scene.val); \u002F\u002F The scene text content\n\n\u002F\u002F Choice lines\nconst choice = game.getLineByDungeonId('~room1.greetings.2.1');\n\n\u002F\u002F Encounter descriptions\nconst encounter = game.getLineByDungeonId('@room1.description');\n\n\u002F\u002F Templates\nconst template = game.getLineByDungeonId('$button');\n\n\u002F\u002F Special lines\nconst name = game.getLineByDungeonId('$dungeon_name');\nconsole.log(name.val); \u002F\u002F The dungeon's display name\n",[42,498,499,504,524,538,542,547,567,571,576,596,600,605,625,629,634,654],{"__ignoreMap":40},[45,500,501],{"class":47,"line":48},[45,502,503],{"class":69},"\u002F\u002F Scene lines (full format: #room.scene.row.block.paragraph)\n",[45,505,506,508,511,513,515,518,520,522],{"class":47,"line":73},[45,507,277],{"class":276},[45,509,510],{"class":248}," scene",[45,512,340],{"class":276},[45,514,297],{"class":51},[45,516,517],{"class":55},"getLineByDungeonId",[45,519,59],{"class":51},[45,521,163],{"class":62},[45,523,166],{"class":51},[45,525,526,529,532,535],{"class":47,"line":124},[45,527,528],{"class":51},"console.",[45,530,531],{"class":55},"log",[45,533,534],{"class":51},"(scene.val); ",[45,536,537],{"class":69},"\u002F\u002F The scene text content\n",[45,539,540],{"class":47,"line":141},[45,541,145],{"emptyLinePlaceholder":144},[45,543,544],{"class":47,"line":148},[45,545,546],{"class":69},"\u002F\u002F Choice lines\n",[45,548,549,551,554,556,558,560,562,565],{"class":47,"line":154},[45,550,277],{"class":276},[45,552,553],{"class":248}," choice",[45,555,340],{"class":276},[45,557,297],{"class":51},[45,559,517],{"class":55},[45,561,59],{"class":51},[45,563,564],{"class":62},"'~room1.greetings.2.1'",[45,566,166],{"class":51},[45,568,569],{"class":47,"line":169},[45,570,145],{"emptyLinePlaceholder":144},[45,572,573],{"class":47,"line":174},[45,574,575],{"class":69},"\u002F\u002F Encounter descriptions\n",[45,577,578,580,583,585,587,589,591,594],{"class":47,"line":180},[45,579,277],{"class":276},[45,581,582],{"class":248}," encounter",[45,584,340],{"class":276},[45,586,297],{"class":51},[45,588,517],{"class":55},[45,590,59],{"class":51},[45,592,593],{"class":62},"'@room1.description'",[45,595,166],{"class":51},[45,597,598],{"class":47,"line":200},[45,599,145],{"emptyLinePlaceholder":144},[45,601,602],{"class":47,"line":205},[45,603,604],{"class":69},"\u002F\u002F Templates\n",[45,606,607,609,612,614,616,618,620,623],{"class":47,"line":211},[45,608,277],{"class":276},[45,610,611],{"class":248}," template",[45,613,340],{"class":276},[45,615,297],{"class":51},[45,617,517],{"class":55},[45,619,59],{"class":51},[45,621,622],{"class":62},"'$button'",[45,624,166],{"class":51},[45,626,627],{"class":47,"line":228},[45,628,145],{"emptyLinePlaceholder":144},[45,630,631],{"class":47,"line":233},[45,632,633],{"class":69},"\u002F\u002F Special lines\n",[45,635,636,638,641,643,645,647,649,652],{"class":47,"line":239},[45,637,277],{"class":276},[45,639,640],{"class":248}," name",[45,642,340],{"class":276},[45,644,297],{"class":51},[45,646,517],{"class":55},[45,648,59],{"class":51},[45,650,651],{"class":62},"'$dungeon_name'",[45,653,166],{"class":51},[45,655,657,659,661,664],{"class":47,"line":656},16,[45,658,528],{"class":51},[45,660,531],{"class":55},[45,662,663],{"class":51},"(name.val); ",[45,665,666],{"class":69},"\u002F\u002F The dungeon's display name\n",[27,668,670],{"id":669},"getdungeondatabyidid","getDungeonDataById(id)",[15,672,673],{},"Get dungeon runtime data by ID. Returns a DungeonData object containing visited rooms, flags, and other state.",[35,675,677],{"className":37,"code":676,"language":39,"meta":40,"style":40},"const data = game.getDungeonDataById('forest');\nconsole.log(data.visitedRooms); \u002F\u002F Set of visited room IDs\nconsole.log(data.getFlag('boss_defeated')); \u002F\u002F Get flag value\n",[42,678,679,700,712],{"__ignoreMap":40},[45,680,681,683,686,688,690,693,695,698],{"class":47,"line":48},[45,682,277],{"class":276},[45,684,685],{"class":248}," data",[45,687,340],{"class":276},[45,689,297],{"class":51},[45,691,692],{"class":55},"getDungeonDataById",[45,694,59],{"class":51},[45,696,697],{"class":62},"'forest'",[45,699,166],{"class":51},[45,701,702,704,706,709],{"class":47,"line":73},[45,703,528],{"class":51},[45,705,531],{"class":55},[45,707,708],{"class":51},"(data.visitedRooms); ",[45,710,711],{"class":69},"\u002F\u002F Set of visited room IDs\n",[45,713,714,716,718,721,724,726,729,732],{"class":47,"line":124},[45,715,528],{"class":51},[45,717,531],{"class":55},[45,719,720],{"class":51},"(data.",[45,722,723],{"class":55},"getFlag",[45,725,59],{"class":51},[45,727,728],{"class":62},"'boss_defeated'",[45,730,731],{"class":51},")); ",[45,733,734],{"class":69},"\u002F\u002F Get flag value\n",[27,736,738],{"id":737},"getdungeontype","getDungeonType()",[15,740,741],{},"Get the current dungeon type.",[35,743,745],{"className":37,"code":744,"language":39,"meta":40,"style":40},"const type = game.getDungeonType(); \u002F\u002F 'map', 'screen', or 'text'\n",[42,746,747],{"__ignoreMap":40},[45,748,749,751,754,756,758,761,763],{"class":47,"line":48},[45,750,277],{"class":276},[45,752,753],{"class":248}," type",[45,755,340],{"class":276},[45,757,297],{"class":51},[45,759,760],{"class":55},"getDungeonType",[45,762,433],{"class":51},[45,764,765],{"class":69},"\u002F\u002F 'map', 'screen', or 'text'\n",[27,767,769],{"id":768},"getdungeonnamedungeonid","getDungeonName(dungeonId)",[15,771,772],{},"Get the display name of a dungeon.",[35,774,776],{"className":37,"code":775,"language":39,"meta":40,"style":40},"const name = game.getDungeonName('forest'); \u002F\u002F \"Dark Forest\"\n",[42,777,778],{"__ignoreMap":40},[45,779,780,782,784,786,788,791,793,795,797],{"class":47,"line":48},[45,781,277],{"class":276},[45,783,640],{"class":248},[45,785,340],{"class":276},[45,787,297],{"class":51},[45,789,790],{"class":55},"getDungeonName",[45,792,59],{"class":51},[45,794,697],{"class":62},[45,796,66],{"class":51},[45,798,799],{"class":69},"\u002F\u002F \"Dark Forest\"\n",[27,801,803],{"id":802},"getflagid","getFlag(id)",[15,805,806,807,810],{},"Get a dungeon flag value. Supports scoped flags with ",[42,808,809],{},"dungeonId.flagName"," format.",[35,812,814],{"className":37,"code":813,"language":39,"meta":40,"style":40},"const flag = game.getFlag('explored'); \u002F\u002F Current dungeon flag\nconst otherFlag = game.getFlag('forest.explored'); \u002F\u002F Specific dungeon flag\n",[42,815,816,839],{"__ignoreMap":40},[45,817,818,820,823,825,827,829,831,834,836],{"class":47,"line":48},[45,819,277],{"class":276},[45,821,822],{"class":248}," flag",[45,824,340],{"class":276},[45,826,297],{"class":51},[45,828,723],{"class":55},[45,830,59],{"class":51},[45,832,833],{"class":62},"'explored'",[45,835,66],{"class":51},[45,837,838],{"class":69},"\u002F\u002F Current dungeon flag\n",[45,840,841,843,846,848,850,852,854,857,859],{"class":47,"line":73},[45,842,277],{"class":276},[45,844,845],{"class":248}," otherFlag",[45,847,340],{"class":276},[45,849,297],{"class":51},[45,851,723],{"class":55},[45,853,59],{"class":51},[45,855,856],{"class":62},"'forest.explored'",[45,858,66],{"class":51},[45,860,861],{"class":69},"\u002F\u002F Specific dungeon flag\n",[19,863],{},[22,865,867],{"id":866},"asset-methods","Asset Methods",[27,869,871],{"id":870},"addassetsdata","addAssets(data)",[15,873,874],{},"Add assets to the current scene.",[35,876,878],{"className":37,"code":877,"language":39,"meta":40,"style":40},"\u002F\u002F By ID\ngame.addAssets('background_forest');\ngame.addAssets('tree1, tree2, rock');\ngame.addAssets(['npc_merchant', 'stall']);\n\n\u002F\u002F With asset properties\ngame.addAssets({ id: 'hero', x: 50, y: 30, animation: 'idle' });\ngame.addAssets({ id: 'spine_char', skins: ['default', 'armor'], animation: 'walk' });\n",[42,879,880,885,899,912,932,936,941,974],{"__ignoreMap":40},[45,881,882],{"class":47,"line":48},[45,883,884],{"class":69},"\u002F\u002F By ID\n",[45,886,887,889,892,894,897],{"class":47,"line":73},[45,888,52],{"class":51},[45,890,891],{"class":55},"addAssets",[45,893,59],{"class":51},[45,895,896],{"class":62},"'background_forest'",[45,898,166],{"class":51},[45,900,901,903,905,907,910],{"class":47,"line":124},[45,902,52],{"class":51},[45,904,891],{"class":55},[45,906,59],{"class":51},[45,908,909],{"class":62},"'tree1, tree2, rock'",[45,911,166],{"class":51},[45,913,914,916,918,921,924,926,929],{"class":47,"line":141},[45,915,52],{"class":51},[45,917,891],{"class":55},[45,919,920],{"class":51},"([",[45,922,923],{"class":62},"'npc_merchant'",[45,925,192],{"class":51},[45,927,928],{"class":62},"'stall'",[45,930,931],{"class":51},"]);\n",[45,933,934],{"class":47,"line":148},[45,935,145],{"emptyLinePlaceholder":144},[45,937,938],{"class":47,"line":154},[45,939,940],{"class":69},"\u002F\u002F With asset properties\n",[45,942,943,945,947,950,953,956,959,962,965,968,971],{"class":47,"line":169},[45,944,52],{"class":51},[45,946,891],{"class":55},[45,948,949],{"class":51},"({ id: ",[45,951,952],{"class":62},"'hero'",[45,954,955],{"class":51},", x: ",[45,957,958],{"class":248},"50",[45,960,961],{"class":51},", y: ",[45,963,964],{"class":248},"30",[45,966,967],{"class":51},", animation: ",[45,969,970],{"class":62},"'idle'",[45,972,973],{"class":51}," });\n",[45,975,976,978,980,982,985,988,991,993,996,999,1002],{"class":47,"line":174},[45,977,52],{"class":51},[45,979,891],{"class":55},[45,981,949],{"class":51},[45,983,984],{"class":62},"'spine_char'",[45,986,987],{"class":51},", skins: [",[45,989,990],{"class":62},"'default'",[45,992,192],{"class":51},[45,994,995],{"class":62},"'armor'",[45,997,998],{"class":51},"], animation: ",[45,1000,1001],{"class":62},"'walk'",[45,1003,973],{"class":51},[27,1005,1007],{"id":1006},"removeassetsdata","removeAssets(data)",[15,1009,1010],{},"Remove assets from the current scene.",[35,1012,1014],{"className":37,"code":1013,"language":39,"meta":40,"style":40},"game.removeAssets('background_forest');\ngame.removeAssets(['tree1', 'tree2']);\n",[42,1015,1016,1029],{"__ignoreMap":40},[45,1017,1018,1020,1023,1025,1027],{"class":47,"line":48},[45,1019,52],{"class":51},[45,1021,1022],{"class":55},"removeAssets",[45,1024,59],{"class":51},[45,1026,896],{"class":62},[45,1028,166],{"class":51},[45,1030,1031,1033,1035,1037,1040,1042,1045],{"class":47,"line":73},[45,1032,52],{"class":51},[45,1034,1022],{"class":55},[45,1036,920],{"class":51},[45,1038,1039],{"class":62},"'tree1'",[45,1041,192],{"class":51},[45,1043,1044],{"class":62},"'tree2'",[45,1046,931],{"class":51},[27,1048,1050],{"id":1049},"addflashflash","addFlash(flash)",[15,1052,1053],{},"Add a flash text effect to the current scene.",[35,1055,1057],{"className":37,"code":1056,"language":39,"meta":40,"style":40},"game.addFlash('Critical Hit!');\n",[42,1058,1059],{"__ignoreMap":40},[45,1060,1061,1063,1066,1068,1071],{"class":47,"line":48},[45,1062,52],{"class":51},[45,1064,1065],{"class":55},"addFlash",[45,1067,59],{"class":51},[45,1069,1070],{"class":62},"'Critical Hit!'",[45,1072,166],{"class":51},[27,1074,1076],{"id":1075},"setmapzoomfactorfactor","setMapZoomFactor(factor)",[15,1078,1079],{},"Set the map zoom factor for the dungeon map view.",[35,1081,1083],{"className":37,"code":1082,"language":39,"meta":40,"style":40},"game.setMapZoomFactor(1.5); \u002F\u002F Zoom in\ngame.setMapZoomFactor(0.5); \u002F\u002F Zoom out\n",[42,1084,1085,1102],{"__ignoreMap":40},[45,1086,1087,1089,1092,1094,1097,1099],{"class":47,"line":48},[45,1088,52],{"class":51},[45,1090,1091],{"class":55},"setMapZoomFactor",[45,1093,59],{"class":51},[45,1095,1096],{"class":248},"1.5",[45,1098,66],{"class":51},[45,1100,1101],{"class":69},"\u002F\u002F Zoom in\n",[45,1103,1104,1106,1108,1110,1113,1115],{"class":47,"line":73},[45,1105,52],{"class":51},[45,1107,1091],{"class":55},[45,1109,59],{"class":51},[45,1111,1112],{"class":248},"0.5",[45,1114,66],{"class":51},[45,1116,1117],{"class":69},"\u002F\u002F Zoom out\n",[19,1119],{},[22,1121,1123],{"id":1122},"dungeonline-interface","DungeonLine Interface",[15,1125,1126],{},"A single line\u002Fscene entry in a dungeon. Line IDs use prefixes to indicate their type:",[1128,1129,1130,1141,1150,1159,1168],"ul",{},[1131,1132,1133,1136,1137,1140],"li",{},[42,1134,1135],{},"#"," - Scene lines (e.g., ",[42,1138,1139],{},"#room1.greetings.1.1.1",")",[1131,1142,1143,1146,1147,1140],{},[42,1144,1145],{},"~"," - Choice lines (e.g., ",[42,1148,1149],{},"~room1.greetings.2.1",[1131,1151,1152,1155,1156,1140],{},[42,1153,1154],{},"@"," - Encounter descriptions (e.g., ",[42,1157,1158],{},"@room1.description",[1131,1160,1161,1164,1165,1140],{},[42,1162,1163],{},"!"," - Encounter choices (e.g., ",[42,1166,1167],{},"!room1.description.survey",[1131,1169,1170,1173,1174,192,1177,1140],{},[42,1171,1172],{},"$"," - Templates (e.g., ",[42,1175,1176],{},"$button",[42,1178,1179],{},"$dungeon_name",[1181,1182,1183,1199],"table",{},[1184,1185,1186],"thead",{},[1187,1188,1189,1193,1196],"tr",{},[1190,1191,1192],"th",{},"Property",[1190,1194,1195],{},"Type",[1190,1197,1198],{},"Description",[1200,1201,1202,1218,1232,1247],"tbody",{},[1187,1203,1204,1210,1215],{},[1205,1206,1207],"td",{},[42,1208,1209],{},"id",[1205,1211,1212],{},[42,1213,1214],{},"string",[1205,1216,1217],{},"Line identifier with type prefix",[1187,1219,1220,1225,1229],{},[1205,1221,1222],{},[42,1223,1224],{},"val",[1205,1226,1227],{},[42,1228,1214],{},[1205,1230,1231],{},"The content\u002Ftext of the line",[1187,1233,1234,1239,1244],{},[1205,1235,1236],{},[42,1237,1238],{},"params",[1205,1240,1241],{},[42,1242,1243],{},"Record\u003Cstring, any>?",[1205,1245,1246],{},"Optional parameters (conditions, actions, etc.)",[1187,1248,1249,1254,1259],{},[1205,1250,1251],{},[42,1252,1253],{},"anchor",[1205,1255,1256],{},[42,1257,1258],{},"string?",[1205,1260,1261,1262],{},"Optional anchor for jumping with ",[42,1263,1264],{},"&anchor_name",[19,1266],{},[22,1268,1270],{"id":1269},"dungeondata-interface","DungeonData Interface",[15,1272,1273],{},"Runtime data for a dungeon instance. Tracks visited rooms, events, flags, and other state.",[1181,1275,1276,1286],{},[1184,1277,1278],{},[1187,1279,1280,1282,1284],{},[1190,1281,1192],{},[1190,1283,1195],{},[1190,1285,1198],{},[1200,1287,1288,1303,1317,1331,1345,1359,1373],{},[1187,1289,1290,1295,1300],{},[1205,1291,1292],{},[42,1293,1294],{},"visitedRooms",[1205,1296,1297],{},[42,1298,1299],{},"Set\u003Cstring>",[1205,1301,1302],{},"Set of visited room IDs",[1187,1304,1305,1310,1314],{},[1205,1306,1307],{},[42,1308,1309],{},"visibleRooms",[1205,1311,1312],{},[42,1313,1299],{},[1205,1315,1316],{},"Set of visible room IDs",[1187,1318,1319,1324,1328],{},[1205,1320,1321],{},[42,1322,1323],{},"visitedEvents",[1205,1325,1326],{},[42,1327,1299],{},[1205,1329,1330],{},"Set of visited event IDs",[1187,1332,1333,1338,1342],{},[1205,1334,1335],{},[42,1336,1337],{},"viewEvents",[1205,1339,1340],{},[42,1341,1299],{},[1205,1343,1344],{},"Set of viewed event IDs",[1187,1346,1347,1352,1356],{},[1205,1348,1349],{},[42,1350,1351],{},"visitedInventories",[1205,1353,1354],{},[42,1355,1299],{},[1205,1357,1358],{},"Set of visited inventory IDs",[1187,1360,1361,1366,1370],{},[1205,1362,1363],{},[42,1364,1365],{},"visitedChoices",[1205,1367,1368],{},[42,1369,1299],{},[1205,1371,1372],{},"Set of visited choice IDs",[1187,1374,1375,1380,1385],{},[1205,1376,1377],{},[42,1378,1379],{},"flags",[1205,1381,1382],{},[42,1383,1384],{},"Map\u003Cstring, number>",[1205,1386,1387],{},"Map of flag names to values",[27,1389,1391],{"id":1390},"dungeondata-methods","DungeonData Methods",[35,1393,1395],{"className":37,"code":1394,"language":39,"meta":40,"style":40},"const data = game.getDungeonDataById('forest');\n\n\u002F\u002F Flag management\ndata.setFlag('boss_defeated', 1);\ndata.addFlag('treasure_found', 1);\nconst value = data.getFlag('boss_defeated'); \u002F\u002F Returns 0 if not set\ndata.removeFlag('temporary_flag');\n\n\u002F\u002F Room checks\nif (data.isRoomVisited('tavern')) {\n  console.log('Player has visited the tavern');\n}\n\nif (data.isRoomVisible('secret_room')) {\n  console.log('Secret room is visible on map');\n}\n\n\u002F\u002F Event checks\nif (data.isEventVisited('intro_event')) {\n  console.log('Player has seen the intro');\n}\n",[42,1396,1397,1415,1419,1424,1443,1461,1484,1498,1502,1507,1525,1539,1544,1548,1564,1577,1581,1586,1592,1609,1623],{"__ignoreMap":40},[45,1398,1399,1401,1403,1405,1407,1409,1411,1413],{"class":47,"line":48},[45,1400,277],{"class":276},[45,1402,685],{"class":248},[45,1404,340],{"class":276},[45,1406,297],{"class":51},[45,1408,692],{"class":55},[45,1410,59],{"class":51},[45,1412,697],{"class":62},[45,1414,166],{"class":51},[45,1416,1417],{"class":47,"line":73},[45,1418,145],{"emptyLinePlaceholder":144},[45,1420,1421],{"class":47,"line":124},[45,1422,1423],{"class":69},"\u002F\u002F Flag management\n",[45,1425,1426,1429,1432,1434,1436,1438,1441],{"class":47,"line":141},[45,1427,1428],{"class":51},"data.",[45,1430,1431],{"class":55},"setFlag",[45,1433,59],{"class":51},[45,1435,728],{"class":62},[45,1437,192],{"class":51},[45,1439,1440],{"class":248},"1",[45,1442,166],{"class":51},[45,1444,1445,1447,1450,1452,1455,1457,1459],{"class":47,"line":148},[45,1446,1428],{"class":51},[45,1448,1449],{"class":55},"addFlag",[45,1451,59],{"class":51},[45,1453,1454],{"class":62},"'treasure_found'",[45,1456,192],{"class":51},[45,1458,1440],{"class":248},[45,1460,166],{"class":51},[45,1462,1463,1465,1468,1470,1473,1475,1477,1479,1481],{"class":47,"line":154},[45,1464,277],{"class":276},[45,1466,1467],{"class":248}," value",[45,1469,340],{"class":276},[45,1471,1472],{"class":51}," data.",[45,1474,723],{"class":55},[45,1476,59],{"class":51},[45,1478,728],{"class":62},[45,1480,66],{"class":51},[45,1482,1483],{"class":69},"\u002F\u002F Returns 0 if not set\n",[45,1485,1486,1488,1491,1493,1496],{"class":47,"line":169},[45,1487,1428],{"class":51},[45,1489,1490],{"class":55},"removeFlag",[45,1492,59],{"class":51},[45,1494,1495],{"class":62},"'temporary_flag'",[45,1497,166],{"class":51},[45,1499,1500],{"class":47,"line":174},[45,1501,145],{"emptyLinePlaceholder":144},[45,1503,1504],{"class":47,"line":180},[45,1505,1506],{"class":69},"\u002F\u002F Room checks\n",[45,1508,1509,1512,1515,1518,1520,1522],{"class":47,"line":200},[45,1510,1511],{"class":276},"if",[45,1513,1514],{"class":51}," (data.",[45,1516,1517],{"class":55},"isRoomVisited",[45,1519,59],{"class":51},[45,1521,63],{"class":62},[45,1523,1524],{"class":51},")) {\n",[45,1526,1527,1530,1532,1534,1537],{"class":47,"line":205},[45,1528,1529],{"class":51},"  console.",[45,1531,531],{"class":55},[45,1533,59],{"class":51},[45,1535,1536],{"class":62},"'Player has visited the tavern'",[45,1538,166],{"class":51},[45,1540,1541],{"class":47,"line":211},[45,1542,1543],{"class":51},"}\n",[45,1545,1546],{"class":47,"line":228},[45,1547,145],{"emptyLinePlaceholder":144},[45,1549,1550,1552,1554,1557,1559,1562],{"class":47,"line":233},[45,1551,1511],{"class":276},[45,1553,1514],{"class":51},[45,1555,1556],{"class":55},"isRoomVisible",[45,1558,59],{"class":51},[45,1560,1561],{"class":62},"'secret_room'",[45,1563,1524],{"class":51},[45,1565,1566,1568,1570,1572,1575],{"class":47,"line":239},[45,1567,1529],{"class":51},[45,1569,531],{"class":55},[45,1571,59],{"class":51},[45,1573,1574],{"class":62},"'Secret room is visible on map'",[45,1576,166],{"class":51},[45,1578,1579],{"class":47,"line":656},[45,1580,1543],{"class":51},[45,1582,1584],{"class":47,"line":1583},17,[45,1585,145],{"emptyLinePlaceholder":144},[45,1587,1589],{"class":47,"line":1588},18,[45,1590,1591],{"class":69},"\u002F\u002F Event checks\n",[45,1593,1595,1597,1599,1602,1604,1607],{"class":47,"line":1594},19,[45,1596,1511],{"class":276},[45,1598,1514],{"class":51},[45,1600,1601],{"class":55},"isEventVisited",[45,1603,59],{"class":51},[45,1605,1606],{"class":62},"'intro_event'",[45,1608,1524],{"class":51},[45,1610,1612,1614,1616,1618,1621],{"class":47,"line":1611},20,[45,1613,1529],{"class":51},[45,1615,531],{"class":55},[45,1617,59],{"class":51},[45,1619,1620],{"class":62},"'Player has seen the intro'",[45,1622,166],{"class":51},[45,1624,1626],{"class":47,"line":1625},21,[45,1627,1543],{"class":51},[1629,1630,1631],"style",{},"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 pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}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 .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}",{"title":40,"searchDepth":73,"depth":73,"links":1633},[1634,1647,1653,1654],{"id":24,"depth":73,"text":25,"children":1635},[1636,1637,1638,1639,1640,1641,1642,1643,1644,1645,1646],{"id":29,"depth":124,"text":30},{"id":90,"depth":124,"text":91},{"id":254,"depth":124,"text":255},{"id":392,"depth":124,"text":393},{"id":414,"depth":124,"text":415},{"id":455,"depth":124,"text":456},{"id":486,"depth":124,"text":487},{"id":669,"depth":124,"text":670},{"id":737,"depth":124,"text":738},{"id":768,"depth":124,"text":769},{"id":802,"depth":124,"text":803},{"id":866,"depth":73,"text":867,"children":1648},[1649,1650,1651,1652],{"id":870,"depth":124,"text":871},{"id":1006,"depth":124,"text":1007},{"id":1049,"depth":124,"text":1050},{"id":1075,"depth":124,"text":1076},{"id":1122,"depth":73,"text":1123},{"id":1269,"depth":73,"text":1270,"children":1655},[1656],{"id":1390,"depth":124,"text":1391},"md",{"plugin":1659,"category":1660,"page":1661},"global_essentials","dungeons","dungeons_api","\u002Fdocs\u002Fglobal_essentials\u002Fdungeons\u002Fdungeons_api",{"title":5,"description":17},"docs\u002Fglobal_essentials\u002Fdungeons\u002Fdungeons_api","LLk_r3L-FilRxF1UK6d8Q9X6yhDvBs5hvdkSLCNP01c",1779582261046]