[{"data":1,"prerenderedAt":2588},["ShallowReactive",2],{"doc-global_essentials\u002Fmiscellaneous\u002Frandom_pools":3},{"id":4,"title":5,"body":6,"description":2578,"extension":2579,"meta":2580,"navigation":288,"path":2584,"seo":2585,"stem":2586,"__hash__":2587},"docs\u002Fdocs\u002Fglobal_essentials\u002Fmiscellaneous\u002Frandom_pools.md","Random Pools",{"type":7,"value":8,"toc":2537},"minimark",[9,13,22,25,30,35,38,66,73,77,80,94,100,102,106,110,154,158,214,216,220,224,227,366,371,477,491,493,497,500,514,518,527,535,542,573,577,586,592,622,624,628,633,637,728,732,739,798,802,813,851,855,862,914,918,930,932,936,940,1039,1043,1139,1143,1194,1198,1201,1385,1389,1560,1564,1684,1688,1774,1778,1793,2030,2032,2036,2047,2058,2061,2063,2067,2099,2101,2105,2112,2116,2119,2184,2188,2264,2272,2275,2476,2480,2533],[10,11,5],"h1",{"id":12},"random-pools",[14,15,16,17,21],"p",{},"Random pools provide ",[18,19,20],"strong",{},"weighted random selection"," from collections of data. Use them for loot tables, encounter spawning, reward systems, and any scenario where you need controlled randomness.",[23,24],"hr",{},[26,27,29],"h2",{"id":28},"key-concepts","Key Concepts",[31,32,34],"h3",{"id":33},"pool-definitions","Pool Definitions",[14,36,37],{},"A pool definition specifies:",[39,40,41,53],"ul",{},[42,43,44,47,48,52],"li",{},[18,45,46],{},"Source",": Which data collection to draw from (e.g., ",[49,50,51],"code",{},"item_templates",")",[42,54,55,58,59,62,63,52],{},[18,56,57],{},"Filter Fields",": Which fields can be used for filtering (e.g., ",[49,60,61],{},"traits.rarity",", ",[49,64,65],{},"tags",[14,67,68,69,72],{},"Pool definitions are created in the editor under ",[18,70,71],{},"Pools > Pool Definitions",".",[31,74,76],{"id":75},"pool-entries","Pool Entries",[14,78,79],{},"A pool entry is a configured draw from a pool. Each entry contains:",[39,81,82,88],{},[42,83,84,87],{},[18,85,86],{},"Pool",": Reference to a pool definition",[42,89,90,93],{},[18,91,92],{},"Entities",": One or more entity groups, each with its own weight, count, and filters",[14,95,96,97,72],{},"Pool entries are created in the editor under ",[18,98,99],{},"Pools > Pool Entries",[23,101],{},[26,103,105],{"id":104},"editor-setup","Editor Setup",[31,107,109],{"id":108},"step-1-create-a-pool-definition","Step 1: Create a Pool Definition",[111,112,113,119,125,133],"ol",{},[42,114,115,116],{},"Go to ",[18,117,118],{},"Game Data > Pools > Pool Definitions",[42,120,121,122,52],{},"Create a new definition (e.g., ",[49,123,124],{},"item_pool",[42,126,127,128,130,131,52],{},"Set the ",[18,129,46],{}," to your data file (e.g., ",[49,132,51],{},[42,134,135,136,138,139],{},"Add ",[18,137,57],{}," - the paths to filterable properties:\n",[39,140,141,145,150],{},[42,142,143],{},[49,144,61],{},[42,146,147],{},[49,148,149],{},"traits.weight",[42,151,152],{},[49,153,65],{},[31,155,157],{"id":156},"step-2-create-pool-entries","Step 2: Create Pool Entries",[111,159,160,165,171,177],{},[42,161,115,162],{},[18,163,164],{},"Game Data > Pools > Pool Entries",[42,166,167,168,52],{},"Create a new entry (e.g., ",[49,169,170],{},"common_loot",[42,172,173,174,176],{},"Select your ",[18,175,86],{}," definition",[42,178,135,179,181,182],{},[18,180,92],{}," - each entity group specifies:\n",[39,183,184,190,196,202,208],{},[42,185,186,189],{},[18,187,188],{},"Weight",": Relative weight for weight mode (any positive number)",[42,191,192,195],{},[18,193,194],{},"Chance",": Percentage (0-100) for chance mode",[42,197,198,201],{},[18,199,200],{},"Count",": How many items to draw when this entity wins",[42,203,204,207],{},[18,205,206],{},"Filters Include",": Items must match these criteria",[42,209,210,213],{},[18,211,212],{},"Filters Exclude",": Items matching these are excluded",[23,215],{},[26,217,219],{"id":218},"api-reference","API Reference",[31,221,223],{"id":222},"drawfrompoolentry-settings","drawFromPool(entry, settings?)",[14,225,226],{},"Draw items from a pool using weighted random selection.",[228,229,234],"pre",{"className":230,"code":231,"language":232,"meta":233,"style":233},"language-js shiki shiki-themes github-light github-dark","\u002F\u002F Basic usage - returns array of { id, quantity }\nconst results = game.drawFromPool('common_loot');\n\u002F\u002F [{ id: 'iron_sword', quantity: 2 }, { id: 'leather_armor', quantity: 1 }]\n\n\u002F\u002F With settings\nconst rewards = game.drawFromPool('boss_drops', {\n  type: 'weight',   \u002F\u002F Selection mode (default)\n  draws: 3,         \u002F\u002F Number of draw rounds\n  unique: true      \u002F\u002F No duplicate items\n});\n","js","",[49,235,236,245,277,283,290,296,318,333,348,360],{"__ignoreMap":233},[237,238,241],"span",{"class":239,"line":240},"line",1,[237,242,244],{"class":243},"sJ8bj","\u002F\u002F Basic usage - returns array of { id, quantity }\n",[237,246,248,252,256,259,263,267,270,274],{"class":239,"line":247},2,[237,249,251],{"class":250},"szBVR","const",[237,253,255],{"class":254},"sj4cs"," results",[237,257,258],{"class":250}," =",[237,260,262],{"class":261},"sVt8B"," game.",[237,264,266],{"class":265},"sScJk","drawFromPool",[237,268,269],{"class":261},"(",[237,271,273],{"class":272},"sZZnC","'common_loot'",[237,275,276],{"class":261},");\n",[237,278,280],{"class":239,"line":279},3,[237,281,282],{"class":243},"\u002F\u002F [{ id: 'iron_sword', quantity: 2 }, { id: 'leather_armor', quantity: 1 }]\n",[237,284,286],{"class":239,"line":285},4,[237,287,289],{"emptyLinePlaceholder":288},true,"\n",[237,291,293],{"class":239,"line":292},5,[237,294,295],{"class":243},"\u002F\u002F With settings\n",[237,297,299,301,304,306,308,310,312,315],{"class":239,"line":298},6,[237,300,251],{"class":250},[237,302,303],{"class":254}," rewards",[237,305,258],{"class":250},[237,307,262],{"class":261},[237,309,266],{"class":265},[237,311,269],{"class":261},[237,313,314],{"class":272},"'boss_drops'",[237,316,317],{"class":261},", {\n",[237,319,321,324,327,330],{"class":239,"line":320},7,[237,322,323],{"class":261},"  type: ",[237,325,326],{"class":272},"'weight'",[237,328,329],{"class":261},",   ",[237,331,332],{"class":243},"\u002F\u002F Selection mode (default)\n",[237,334,336,339,342,345],{"class":239,"line":335},8,[237,337,338],{"class":261},"  draws: ",[237,340,341],{"class":254},"3",[237,343,344],{"class":261},",         ",[237,346,347],{"class":243},"\u002F\u002F Number of draw rounds\n",[237,349,351,354,357],{"class":239,"line":350},9,[237,352,353],{"class":261},"  unique: ",[237,355,356],{"class":254},"true",[237,358,359],{"class":243},"      \u002F\u002F No duplicate items\n",[237,361,363],{"class":239,"line":362},10,[237,364,365],{"class":261},"});\n",[14,367,368],{},[18,369,370],{},"Parameters:",[372,373,374,390],"table",{},[375,376,377],"thead",{},[378,379,380,384,387],"tr",{},[381,382,383],"th",{},"Parameter",[381,385,386],{},"Type",[381,388,389],{},"Description",[391,392,393,409,426,444,462],"tbody",{},[378,394,395,401,406],{},[396,397,398],"td",{},[49,399,400],{},"entry",[396,402,403],{},[49,404,405],{},"string | PoolEntry",[396,407,408],{},"Pool entry ID or custom entry object",[378,410,411,416,421],{},[396,412,413],{},[49,414,415],{},"settings.type",[396,417,418],{},[49,419,420],{},"'weight' | 'chance'",[396,422,423,424,52],{},"Selection mode (default: ",[49,425,326],{},[378,427,428,433,438],{},[396,429,430],{},[49,431,432],{},"settings.draws",[396,434,435],{},[49,436,437],{},"number",[396,439,440,441,52],{},"Number of draw rounds (default: ",[49,442,443],{},"1",[378,445,446,451,456],{},[396,447,448],{},[49,449,450],{},"settings.unique",[396,452,453],{},[49,454,455],{},"boolean",[396,457,458,459,52],{},"Remove drawn items from pool (default: ",[49,460,461],{},"false",[378,463,464,469,474],{},[396,465,466],{},[49,467,468],{},"settings.customData",[396,470,471],{},[49,472,473],{},"Map\u003Cstring, any> | any[]",[396,475,476],{},"Use runtime data instead of pool's source",[14,478,479,482,483,486,487,490],{},[18,480,481],{},"Returns:"," ",[49,484,485],{},"PoolDrawResult[]"," - Array of ",[49,488,489],{},"{ id: string, quantity: number }"," — duplicates are stacked",[23,492],{},[26,494,496],{"id":495},"selection-modes","Selection Modes",[14,498,499],{},"Each entity has two separate fields for selection probability:",[39,501,502,508],{},[42,503,504,507],{},[18,505,506],{},"weight",": Used in weight mode (any positive number)",[42,509,510,513],{},[18,511,512],{},"chance",": Used in chance mode (0-100 percentage)",[31,515,517],{"id":516},"weight-mode-default","Weight Mode (Default)",[14,519,520,521,523,524,72],{},"Uses the ",[49,522,506],{}," field. One entity wins per draw based on ",[18,525,526],{},"relative weights",[228,528,533],{"className":529,"code":531,"language":532},[530],"language-text","Entity A: weight 80\nEntity B: weight 20\nTotal: 100\n\nA wins ~80% of the time\nB wins ~20% of the time\n","text",[49,534,531],{"__ignoreMap":233},[14,536,537,538,541],{},"The winning entity then draws its ",[49,539,540],{},"count"," of items from the filtered source.",[228,543,545],{"className":230,"code":544,"language":232,"meta":233,"style":233},"const loot = game.drawFromPool('treasure_chest', { type: 'weight' });\n",[49,546,547],{"__ignoreMap":233},[237,548,549,551,554,556,558,560,562,565,568,570],{"class":239,"line":240},[237,550,251],{"class":250},[237,552,553],{"class":254}," loot",[237,555,258],{"class":250},[237,557,262],{"class":261},[237,559,266],{"class":265},[237,561,269],{"class":261},[237,563,564],{"class":272},"'treasure_chest'",[237,566,567],{"class":261},", { type: ",[237,569,326],{"class":272},[237,571,572],{"class":261}," });\n",[31,574,576],{"id":575},"chance-mode","Chance Mode",[14,578,520,579,581,582,585],{},[49,580,512],{}," field. Each entity has an ",[18,583,584],{},"independent percentage chance"," to win. Multiple entities (or none) can win per draw.",[228,587,590],{"className":588,"code":589,"language":532},[530],"Entity A: chance 50  → 50% chance\nEntity B: chance 30  → 30% chance\nEntity C: chance 10  → 10% chance\n\nPossible outcomes:\n- A wins alone\n- A and B win\n- All three win\n- None win\n",[49,591,589],{"__ignoreMap":233},[228,593,595],{"className":230,"code":594,"language":232,"meta":233,"style":233},"const bonusLoot = game.drawFromPool('rare_rewards', { type: 'chance' });\n",[49,596,597],{"__ignoreMap":233},[237,598,599,601,604,606,608,610,612,615,617,620],{"class":239,"line":240},[237,600,251],{"class":250},[237,602,603],{"class":254}," bonusLoot",[237,605,258],{"class":250},[237,607,262],{"class":261},[237,609,266],{"class":265},[237,611,269],{"class":261},[237,613,614],{"class":272},"'rare_rewards'",[237,616,567],{"class":261},[237,618,619],{"class":272},"'chance'",[237,621,572],{"class":261},[23,623],{},[26,625,627],{"id":626},"filter-formats","Filter Formats",[14,629,630,631,72],{},"Filters determine which data entities from the source pool are eligible for selection. The editor automatically generates filter fields based on the pool definition's ",[18,632,57],{},[31,634,636],{"id":635},"filter-field-types","Filter Field Types",[372,638,639,652],{},[375,640,641],{},[378,642,643,646,649],{},[381,644,645],{},"Source Field Type",[381,647,648],{},"Editor Input",[381,650,651],{},"Matching Behavior",[391,653,654,667,679,690,703,714],{},[378,655,656,661,664],{},[396,657,658],{},[49,659,660],{},"string",[396,662,663],{},"Text input",[396,665,666],{},"Exact match",[378,668,669,673,676],{},[396,670,671],{},[49,672,437],{},[396,674,675],{},"Range input (min\u002Fmax)",[396,677,678],{},"Value within range",[378,680,681,685,688],{},[396,682,683],{},[49,684,455],{},[396,686,687],{},"Toggle switch",[396,689,666],{},[378,691,692,697,700],{},[396,693,694],{},[49,695,696],{},"chooseOne",[396,698,699],{},"Multi-select dropdown",[396,701,702],{},"Any selected value matches (OR)",[378,704,705,710,712],{},[396,706,707],{},[49,708,709],{},"chooseMany",[396,711,699],{},[396,713,702],{},[378,715,716,722,725],{},[396,717,718,721],{},[49,719,720],{},"string[]"," (tags)",[396,723,724],{},"Chip input",[396,726,727],{},"Any entered value matches (OR)",[31,729,731],{"id":730},"or-vs-and-logic-for-arrays","OR vs AND Logic for Arrays",[14,733,734,735,738],{},"For array-based filters, you can toggle between OR and AND logic using the ",[18,736,737],{},"Match All"," switch:",[372,740,741,754],{},[375,742,743],{},[378,744,745,748,751],{},[381,746,747],{},"Toggle State",[381,749,750],{},"Behavior",[381,752,753],{},"Example",[391,755,756,778],{},[378,757,758,764,771],{},[396,759,760,763],{},[18,761,762],{},"Off"," (default)",[396,765,766,767,770],{},"Item matches if it has ",[18,768,769],{},"any"," of the values",[396,772,773,774,777],{},"Tags: ",[49,775,776],{},"weapon, sword"," → matches items with \"weapon\" OR \"sword\"",[378,779,780,786,793],{},[396,781,782,785],{},[18,783,784],{},"On"," (Match All)",[396,787,788,789,792],{},"Item matches only if it has ",[18,790,791],{},"all"," values",[396,794,773,795,797],{},[49,796,776],{}," → matches items with \"weapon\" AND \"sword\"",[31,799,801],{"id":800},"range-filters","Range Filters",[14,803,804,805,808,809,812],{},"For numeric fields, the editor shows ",[18,806,807],{},"Min"," and ",[18,810,811],{},"Max"," inputs:",[372,814,815,825],{},[375,816,817],{},[378,818,819,822],{},[381,820,821],{},"Configuration",[381,823,824],{},"Matches",[391,826,827,835,843],{},[378,828,829,832],{},[396,830,831],{},"Min: 5, Max: empty",[396,833,834],{},"Values ≥ 5",[378,836,837,840],{},[396,838,839],{},"Min: empty, Max: 20",[396,841,842],{},"Values ≤ 20",[378,844,845,848],{},[396,846,847],{},"Min: 5, Max: 20",[396,849,850],{},"Values between 5 and 20 (inclusive)",[31,852,854],{"id":853},"combining-multiple-filters","Combining Multiple Filters",[14,856,857,858,861],{},"When you configure multiple filter fields, they combine with ",[18,859,860],{},"AND logic",":",[372,863,864,874],{},[375,865,866],{},[378,867,868,871],{},[381,869,870],{},"filters_include",[381,872,873],{},"Result",[391,875,876,887,900],{},[378,877,878,884],{},[396,879,880,881],{},"Rarity: ",[49,882,883],{},"common, uncommon",[396,885,886],{},"Items that are common OR uncommon",[378,888,889,897],{},[396,890,880,891,893,894],{},[49,892,883],{}," + Tags: ",[49,895,896],{},"weapon",[396,898,899],{},"Items that are (common OR uncommon) AND have \"weapon\" tag",[378,901,902,911],{},[396,903,880,904,907,908,785],{},[49,905,906],{},"rare"," + Level: max 10 + Tags: ",[49,909,910],{},"weapon, magical",[396,912,913],{},"Items that are rare AND level ≤ 10 AND have both \"weapon\" AND \"magical\" tags",[31,915,917],{"id":916},"include-vs-exclude","Include vs Exclude",[39,919,920,925],{},[42,921,922,924],{},[18,923,206],{},": Items must match all criteria to be eligible",[42,926,927,929],{},[18,928,212],{},": Items matching any criteria are removed from the pool",[23,931],{},[26,933,935],{"id":934},"examples","Examples",[31,937,939],{"id":938},"basic-loot-drop","Basic Loot Drop",[228,941,943],{"className":230,"code":942,"language":232,"meta":233,"style":233},"\u002F\u002F Draw from common_loot entry\nconst results = game.drawFromPool('common_loot');\n\n\u002F\u002F Create items and add to inventory (quantity is already stacked)\nconst inventory = game.getInventory('_party_inventory');\nfor (const r of results) {\n  inventory.addItem(game.createItem(r.id), r.quantity);\n}\n",[49,944,945,950,968,972,977,998,1017,1034],{"__ignoreMap":233},[237,946,947],{"class":239,"line":240},[237,948,949],{"class":243},"\u002F\u002F Draw from common_loot entry\n",[237,951,952,954,956,958,960,962,964,966],{"class":239,"line":247},[237,953,251],{"class":250},[237,955,255],{"class":254},[237,957,258],{"class":250},[237,959,262],{"class":261},[237,961,266],{"class":265},[237,963,269],{"class":261},[237,965,273],{"class":272},[237,967,276],{"class":261},[237,969,970],{"class":239,"line":279},[237,971,289],{"emptyLinePlaceholder":288},[237,973,974],{"class":239,"line":285},[237,975,976],{"class":243},"\u002F\u002F Create items and add to inventory (quantity is already stacked)\n",[237,978,979,981,984,986,988,991,993,996],{"class":239,"line":292},[237,980,251],{"class":250},[237,982,983],{"class":254}," inventory",[237,985,258],{"class":250},[237,987,262],{"class":261},[237,989,990],{"class":265},"getInventory",[237,992,269],{"class":261},[237,994,995],{"class":272},"'_party_inventory'",[237,997,276],{"class":261},[237,999,1000,1003,1006,1008,1011,1014],{"class":239,"line":298},[237,1001,1002],{"class":250},"for",[237,1004,1005],{"class":261}," (",[237,1007,251],{"class":250},[237,1009,1010],{"class":254}," r",[237,1012,1013],{"class":250}," of",[237,1015,1016],{"class":261}," results) {\n",[237,1018,1019,1022,1025,1028,1031],{"class":239,"line":320},[237,1020,1021],{"class":261},"  inventory.",[237,1023,1024],{"class":265},"addItem",[237,1026,1027],{"class":261},"(game.",[237,1029,1030],{"class":265},"createItem",[237,1032,1033],{"class":261},"(r.id), r.quantity);\n",[237,1035,1036],{"class":239,"line":335},[237,1037,1038],{"class":261},"}\n",[31,1040,1042],{"id":1041},"boss-with-multiple-drop-chances","Boss with Multiple Drop Chances",[228,1044,1046],{"className":230,"code":1045,"language":232,"meta":233,"style":233},"\u002F\u002F Each entity's 'chance' field determines drop probability\n\u002F\u002F Example pool entry with: common (chance: 80), rare (chance: 20), legendary (chance: 5)\nconst drops = game.drawFromPool('boss_drops', { type: 'chance' });\n\n\u002F\u002F Create items and add to inventory\nconst inventory = game.getInventory('_party_inventory');\nfor (const r of drops) {\n  inventory.addItem(game.createItem(r.id), r.quantity);\n}\n",[49,1047,1048,1053,1058,1081,1085,1090,1108,1123,1135],{"__ignoreMap":233},[237,1049,1050],{"class":239,"line":240},[237,1051,1052],{"class":243},"\u002F\u002F Each entity's 'chance' field determines drop probability\n",[237,1054,1055],{"class":239,"line":247},[237,1056,1057],{"class":243},"\u002F\u002F Example pool entry with: common (chance: 80), rare (chance: 20), legendary (chance: 5)\n",[237,1059,1060,1062,1065,1067,1069,1071,1073,1075,1077,1079],{"class":239,"line":279},[237,1061,251],{"class":250},[237,1063,1064],{"class":254}," drops",[237,1066,258],{"class":250},[237,1068,262],{"class":261},[237,1070,266],{"class":265},[237,1072,269],{"class":261},[237,1074,314],{"class":272},[237,1076,567],{"class":261},[237,1078,619],{"class":272},[237,1080,572],{"class":261},[237,1082,1083],{"class":239,"line":285},[237,1084,289],{"emptyLinePlaceholder":288},[237,1086,1087],{"class":239,"line":292},[237,1088,1089],{"class":243},"\u002F\u002F Create items and add to inventory\n",[237,1091,1092,1094,1096,1098,1100,1102,1104,1106],{"class":239,"line":298},[237,1093,251],{"class":250},[237,1095,983],{"class":254},[237,1097,258],{"class":250},[237,1099,262],{"class":261},[237,1101,990],{"class":265},[237,1103,269],{"class":261},[237,1105,995],{"class":272},[237,1107,276],{"class":261},[237,1109,1110,1112,1114,1116,1118,1120],{"class":239,"line":320},[237,1111,1002],{"class":250},[237,1113,1005],{"class":261},[237,1115,251],{"class":250},[237,1117,1010],{"class":254},[237,1119,1013],{"class":250},[237,1121,1122],{"class":261}," drops) {\n",[237,1124,1125,1127,1129,1131,1133],{"class":239,"line":335},[237,1126,1021],{"class":261},[237,1128,1024],{"class":265},[237,1130,1027],{"class":261},[237,1132,1030],{"class":265},[237,1134,1033],{"class":261},[237,1136,1137],{"class":239,"line":350},[237,1138,1038],{"class":261},[31,1140,1142],{"id":1141},"unique-starter-pack","Unique Starter Pack",[228,1144,1146],{"className":230,"code":1145,"language":232,"meta":233,"style":233},"\u002F\u002F Draw 5 unique items (no duplicates)\nconst starterItems = game.drawFromPool('starter_pack', {\n  draws: 5,\n  unique: true\n});\n",[49,1147,1148,1153,1173,1183,1190],{"__ignoreMap":233},[237,1149,1150],{"class":239,"line":240},[237,1151,1152],{"class":243},"\u002F\u002F Draw 5 unique items (no duplicates)\n",[237,1154,1155,1157,1160,1162,1164,1166,1168,1171],{"class":239,"line":247},[237,1156,251],{"class":250},[237,1158,1159],{"class":254}," starterItems",[237,1161,258],{"class":250},[237,1163,262],{"class":261},[237,1165,266],{"class":265},[237,1167,269],{"class":261},[237,1169,1170],{"class":272},"'starter_pack'",[237,1172,317],{"class":261},[237,1174,1175,1177,1180],{"class":239,"line":279},[237,1176,338],{"class":261},[237,1178,1179],{"class":254},"5",[237,1181,1182],{"class":261},",\n",[237,1184,1185,1187],{"class":239,"line":285},[237,1186,353],{"class":261},[237,1188,1189],{"class":254},"true\n",[237,1191,1192],{"class":239,"line":292},[237,1193,365],{"class":261},[31,1195,1197],{"id":1196},"custom-runtime-entry-weight-mode","Custom Runtime Entry (Weight Mode)",[14,1199,1200],{},"Create pool entries at runtime without defining them in the editor:",[228,1202,1204],{"className":230,"code":1203,"language":232,"meta":233,"style":233},"\u002F\u002F Weight mode - one entity wins based on relative weights\nconst customLoot = game.drawFromPool({\n  pool: 'item_pool',\n  entities: [\n    {\n      weight: 70,\n      count: 2,\n      filters_include: { 'traits.rarity': ['common'] }\n    },\n    {\n      weight: 25,\n      count: 1,\n      filters_include: { 'traits.rarity': ['uncommon'] }\n    },\n    {\n      weight: 5,\n      count: 1,\n      filters_include: { 'traits.rarity': ['rare'] }\n    }\n  ]\n});\n",[49,1205,1206,1211,1227,1237,1242,1247,1257,1267,1284,1289,1293,1303,1312,1326,1331,1336,1345,1354,1368,1374,1380],{"__ignoreMap":233},[237,1207,1208],{"class":239,"line":240},[237,1209,1210],{"class":243},"\u002F\u002F Weight mode - one entity wins based on relative weights\n",[237,1212,1213,1215,1218,1220,1222,1224],{"class":239,"line":247},[237,1214,251],{"class":250},[237,1216,1217],{"class":254}," customLoot",[237,1219,258],{"class":250},[237,1221,262],{"class":261},[237,1223,266],{"class":265},[237,1225,1226],{"class":261},"({\n",[237,1228,1229,1232,1235],{"class":239,"line":279},[237,1230,1231],{"class":261},"  pool: ",[237,1233,1234],{"class":272},"'item_pool'",[237,1236,1182],{"class":261},[237,1238,1239],{"class":239,"line":285},[237,1240,1241],{"class":261},"  entities: [\n",[237,1243,1244],{"class":239,"line":292},[237,1245,1246],{"class":261},"    {\n",[237,1248,1249,1252,1255],{"class":239,"line":298},[237,1250,1251],{"class":261},"      weight: ",[237,1253,1254],{"class":254},"70",[237,1256,1182],{"class":261},[237,1258,1259,1262,1265],{"class":239,"line":320},[237,1260,1261],{"class":261},"      count: ",[237,1263,1264],{"class":254},"2",[237,1266,1182],{"class":261},[237,1268,1269,1272,1275,1278,1281],{"class":239,"line":335},[237,1270,1271],{"class":261},"      filters_include: { ",[237,1273,1274],{"class":272},"'traits.rarity'",[237,1276,1277],{"class":261},": [",[237,1279,1280],{"class":272},"'common'",[237,1282,1283],{"class":261},"] }\n",[237,1285,1286],{"class":239,"line":350},[237,1287,1288],{"class":261},"    },\n",[237,1290,1291],{"class":239,"line":362},[237,1292,1246],{"class":261},[237,1294,1296,1298,1301],{"class":239,"line":1295},11,[237,1297,1251],{"class":261},[237,1299,1300],{"class":254},"25",[237,1302,1182],{"class":261},[237,1304,1306,1308,1310],{"class":239,"line":1305},12,[237,1307,1261],{"class":261},[237,1309,443],{"class":254},[237,1311,1182],{"class":261},[237,1313,1315,1317,1319,1321,1324],{"class":239,"line":1314},13,[237,1316,1271],{"class":261},[237,1318,1274],{"class":272},[237,1320,1277],{"class":261},[237,1322,1323],{"class":272},"'uncommon'",[237,1325,1283],{"class":261},[237,1327,1329],{"class":239,"line":1328},14,[237,1330,1288],{"class":261},[237,1332,1334],{"class":239,"line":1333},15,[237,1335,1246],{"class":261},[237,1337,1339,1341,1343],{"class":239,"line":1338},16,[237,1340,1251],{"class":261},[237,1342,1179],{"class":254},[237,1344,1182],{"class":261},[237,1346,1348,1350,1352],{"class":239,"line":1347},17,[237,1349,1261],{"class":261},[237,1351,443],{"class":254},[237,1353,1182],{"class":261},[237,1355,1357,1359,1361,1363,1366],{"class":239,"line":1356},18,[237,1358,1271],{"class":261},[237,1360,1274],{"class":272},[237,1362,1277],{"class":261},[237,1364,1365],{"class":272},"'rare'",[237,1367,1283],{"class":261},[237,1369,1371],{"class":239,"line":1370},19,[237,1372,1373],{"class":261},"    }\n",[237,1375,1377],{"class":239,"line":1376},20,[237,1378,1379],{"class":261},"  ]\n",[237,1381,1383],{"class":239,"line":1382},21,[237,1384,365],{"class":261},[31,1386,1388],{"id":1387},"custom-runtime-entry-chance-mode","Custom Runtime Entry (Chance Mode)",[228,1390,1392],{"className":230,"code":1391,"language":232,"meta":233,"style":233},"\u002F\u002F Chance mode - each entity has independent % chance to drop\nconst bonusDrops = game.drawFromPool({\n  pool: 'item_pool',\n  entities: [\n    {\n      chance: 80,  \u002F\u002F 80% chance\n      count: 1,\n      filters_include: { 'traits.rarity': ['common'] }\n    },\n    {\n      chance: 30,  \u002F\u002F 30% chance\n      count: 1,\n      filters_include: { 'traits.rarity': ['uncommon'] }\n    },\n    {\n      chance: 5,   \u002F\u002F 5% chance\n      count: 1,\n      filters_include: { 'traits.rarity': ['rare'] }\n    }\n  ]\n}, { type: 'chance' });\n",[49,1393,1394,1399,1414,1422,1426,1430,1444,1452,1464,1468,1472,1484,1492,1504,1508,1512,1523,1531,1543,1547,1551],{"__ignoreMap":233},[237,1395,1396],{"class":239,"line":240},[237,1397,1398],{"class":243},"\u002F\u002F Chance mode - each entity has independent % chance to drop\n",[237,1400,1401,1403,1406,1408,1410,1412],{"class":239,"line":247},[237,1402,251],{"class":250},[237,1404,1405],{"class":254}," bonusDrops",[237,1407,258],{"class":250},[237,1409,262],{"class":261},[237,1411,266],{"class":265},[237,1413,1226],{"class":261},[237,1415,1416,1418,1420],{"class":239,"line":279},[237,1417,1231],{"class":261},[237,1419,1234],{"class":272},[237,1421,1182],{"class":261},[237,1423,1424],{"class":239,"line":285},[237,1425,1241],{"class":261},[237,1427,1428],{"class":239,"line":292},[237,1429,1246],{"class":261},[237,1431,1432,1435,1438,1441],{"class":239,"line":298},[237,1433,1434],{"class":261},"      chance: ",[237,1436,1437],{"class":254},"80",[237,1439,1440],{"class":261},",  ",[237,1442,1443],{"class":243},"\u002F\u002F 80% chance\n",[237,1445,1446,1448,1450],{"class":239,"line":320},[237,1447,1261],{"class":261},[237,1449,443],{"class":254},[237,1451,1182],{"class":261},[237,1453,1454,1456,1458,1460,1462],{"class":239,"line":335},[237,1455,1271],{"class":261},[237,1457,1274],{"class":272},[237,1459,1277],{"class":261},[237,1461,1280],{"class":272},[237,1463,1283],{"class":261},[237,1465,1466],{"class":239,"line":350},[237,1467,1288],{"class":261},[237,1469,1470],{"class":239,"line":362},[237,1471,1246],{"class":261},[237,1473,1474,1476,1479,1481],{"class":239,"line":1295},[237,1475,1434],{"class":261},[237,1477,1478],{"class":254},"30",[237,1480,1440],{"class":261},[237,1482,1483],{"class":243},"\u002F\u002F 30% chance\n",[237,1485,1486,1488,1490],{"class":239,"line":1305},[237,1487,1261],{"class":261},[237,1489,443],{"class":254},[237,1491,1182],{"class":261},[237,1493,1494,1496,1498,1500,1502],{"class":239,"line":1314},[237,1495,1271],{"class":261},[237,1497,1274],{"class":272},[237,1499,1277],{"class":261},[237,1501,1323],{"class":272},[237,1503,1283],{"class":261},[237,1505,1506],{"class":239,"line":1328},[237,1507,1288],{"class":261},[237,1509,1510],{"class":239,"line":1333},[237,1511,1246],{"class":261},[237,1513,1514,1516,1518,1520],{"class":239,"line":1338},[237,1515,1434],{"class":261},[237,1517,1179],{"class":254},[237,1519,329],{"class":261},[237,1521,1522],{"class":243},"\u002F\u002F 5% chance\n",[237,1524,1525,1527,1529],{"class":239,"line":1347},[237,1526,1261],{"class":261},[237,1528,443],{"class":254},[237,1530,1182],{"class":261},[237,1532,1533,1535,1537,1539,1541],{"class":239,"line":1356},[237,1534,1271],{"class":261},[237,1536,1274],{"class":272},[237,1538,1277],{"class":261},[237,1540,1365],{"class":272},[237,1542,1283],{"class":261},[237,1544,1545],{"class":239,"line":1370},[237,1546,1373],{"class":261},[237,1548,1549],{"class":239,"line":1376},[237,1550,1379],{"class":261},[237,1552,1553,1556,1558],{"class":239,"line":1382},[237,1554,1555],{"class":261},"}, { type: ",[237,1557,619],{"class":272},[237,1559,572],{"class":261},[31,1561,1563],{"id":1562},"level-scaled-loot","Level-Scaled Loot",[228,1565,1567],{"className":230,"code":1566,"language":232,"meta":233,"style":233},"const playerLevel = game.getProperty('level').currentValue;\n\nconst scaledLoot = game.drawFromPool({\n  pool: 'item_pool',\n  entities: [{\n    weight: 1,\n    count: 3,\n    filters_include: {\n      'traits.level': { min: playerLevel - 2, max: playerLevel + 2 }\n    }\n  }]\n});\n",[49,1568,1569,1591,1595,1610,1618,1623,1632,1641,1646,1671,1675,1680],{"__ignoreMap":233},[237,1570,1571,1573,1576,1578,1580,1583,1585,1588],{"class":239,"line":240},[237,1572,251],{"class":250},[237,1574,1575],{"class":254}," playerLevel",[237,1577,258],{"class":250},[237,1579,262],{"class":261},[237,1581,1582],{"class":265},"getProperty",[237,1584,269],{"class":261},[237,1586,1587],{"class":272},"'level'",[237,1589,1590],{"class":261},").currentValue;\n",[237,1592,1593],{"class":239,"line":247},[237,1594,289],{"emptyLinePlaceholder":288},[237,1596,1597,1599,1602,1604,1606,1608],{"class":239,"line":279},[237,1598,251],{"class":250},[237,1600,1601],{"class":254}," scaledLoot",[237,1603,258],{"class":250},[237,1605,262],{"class":261},[237,1607,266],{"class":265},[237,1609,1226],{"class":261},[237,1611,1612,1614,1616],{"class":239,"line":285},[237,1613,1231],{"class":261},[237,1615,1234],{"class":272},[237,1617,1182],{"class":261},[237,1619,1620],{"class":239,"line":292},[237,1621,1622],{"class":261},"  entities: [{\n",[237,1624,1625,1628,1630],{"class":239,"line":298},[237,1626,1627],{"class":261},"    weight: ",[237,1629,443],{"class":254},[237,1631,1182],{"class":261},[237,1633,1634,1637,1639],{"class":239,"line":320},[237,1635,1636],{"class":261},"    count: ",[237,1638,341],{"class":254},[237,1640,1182],{"class":261},[237,1642,1643],{"class":239,"line":335},[237,1644,1645],{"class":261},"    filters_include: {\n",[237,1647,1648,1651,1654,1657,1660,1663,1666,1668],{"class":239,"line":350},[237,1649,1650],{"class":272},"      'traits.level'",[237,1652,1653],{"class":261},": { min: playerLevel ",[237,1655,1656],{"class":250},"-",[237,1658,1659],{"class":254}," 2",[237,1661,1662],{"class":261},", max: playerLevel ",[237,1664,1665],{"class":250},"+",[237,1667,1659],{"class":254},[237,1669,1670],{"class":261}," }\n",[237,1672,1673],{"class":239,"line":362},[237,1674,1373],{"class":261},[237,1676,1677],{"class":239,"line":1295},[237,1678,1679],{"class":261},"  }]\n",[237,1681,1682],{"class":239,"line":1305},[237,1683,365],{"class":261},[31,1685,1687],{"id":1686},"excluding-quest-items","Excluding Quest Items",[228,1689,1691],{"className":230,"code":1690,"language":232,"meta":233,"style":233},"const safeLoot = game.drawFromPool({\n  pool: 'item_pool',\n  entities: [{\n    weight: 1,\n    count: 1,\n    filters_exclude: {\n      'tags': ['quest_item', 'unique']  \u002F\u002F Never drop quest or unique items\n    }\n  }]\n});\n",[49,1692,1693,1708,1716,1720,1728,1736,1741,1762,1766,1770],{"__ignoreMap":233},[237,1694,1695,1697,1700,1702,1704,1706],{"class":239,"line":240},[237,1696,251],{"class":250},[237,1698,1699],{"class":254}," safeLoot",[237,1701,258],{"class":250},[237,1703,262],{"class":261},[237,1705,266],{"class":265},[237,1707,1226],{"class":261},[237,1709,1710,1712,1714],{"class":239,"line":247},[237,1711,1231],{"class":261},[237,1713,1234],{"class":272},[237,1715,1182],{"class":261},[237,1717,1718],{"class":239,"line":279},[237,1719,1622],{"class":261},[237,1721,1722,1724,1726],{"class":239,"line":285},[237,1723,1627],{"class":261},[237,1725,443],{"class":254},[237,1727,1182],{"class":261},[237,1729,1730,1732,1734],{"class":239,"line":292},[237,1731,1636],{"class":261},[237,1733,443],{"class":254},[237,1735,1182],{"class":261},[237,1737,1738],{"class":239,"line":298},[237,1739,1740],{"class":261},"    filters_exclude: {\n",[237,1742,1743,1746,1748,1751,1753,1756,1759],{"class":239,"line":320},[237,1744,1745],{"class":272},"      'tags'",[237,1747,1277],{"class":261},[237,1749,1750],{"class":272},"'quest_item'",[237,1752,62],{"class":261},[237,1754,1755],{"class":272},"'unique'",[237,1757,1758],{"class":261},"]  ",[237,1760,1761],{"class":243},"\u002F\u002F Never drop quest or unique items\n",[237,1763,1764],{"class":239,"line":335},[237,1765,1373],{"class":261},[237,1767,1768],{"class":239,"line":350},[237,1769,1679],{"class":261},[237,1771,1772],{"class":239,"line":362},[237,1773,365],{"class":261},[31,1775,1777],{"id":1776},"drawing-from-custom-data","Drawing from Custom Data",[14,1779,1780,1781,1784,1785,1788,1789,1792],{},"Use ",[49,1782,1783],{},"customData"," to draw from runtime-generated data instead of predefined JSON. You can pass an array of objects (uses ",[49,1786,1787],{},"id"," or ",[49,1790,1791],{},"uid"," as key) or a Map:",[228,1794,1796],{"className":230,"code":1795,"language":232,"meta":233,"style":233},"\u002F\u002F Simple array format (recommended)\nconst dynamicItems = [\n  { id: 'sword_001', traits: { rarity: 'common', level: 5 }, tags: ['weapon', 'melee'] },\n  { id: 'bow_002', traits: { rarity: 'rare', level: 8 }, tags: ['weapon', 'ranged'] },\n  { id: 'staff_003', traits: { rarity: 'uncommon', level: 6 }, tags: ['weapon', 'magic'] }\n];\n\n\u002F\u002F Use existing pool entry filters on custom data\nconst drops = game.drawFromPool('common_loot', {\n  customData: dynamicItems\n});\n\n\u002F\u002F Or combine with a custom entry for full control\nconst filtered = game.drawFromPool({\n  pool: 'item_pool',\n  entities: [{\n    weight: 1,\n    count: 2,\n    filters_include: { 'traits.rarity': ['common', 'uncommon'] }\n  }]\n}, {\n  customData: dynamicItems\n});\n",[49,1797,1798,1803,1815,1847,1874,1901,1906,1910,1915,1933,1938,1942,1946,1951,1966,1974,1978,1986,1994,2011,2015,2020,2025],{"__ignoreMap":233},[237,1799,1800],{"class":239,"line":240},[237,1801,1802],{"class":243},"\u002F\u002F Simple array format (recommended)\n",[237,1804,1805,1807,1810,1812],{"class":239,"line":247},[237,1806,251],{"class":250},[237,1808,1809],{"class":254}," dynamicItems",[237,1811,258],{"class":250},[237,1813,1814],{"class":261}," [\n",[237,1816,1817,1820,1823,1826,1828,1831,1833,1836,1839,1841,1844],{"class":239,"line":279},[237,1818,1819],{"class":261},"  { id: ",[237,1821,1822],{"class":272},"'sword_001'",[237,1824,1825],{"class":261},", traits: { rarity: ",[237,1827,1280],{"class":272},[237,1829,1830],{"class":261},", level: ",[237,1832,1179],{"class":254},[237,1834,1835],{"class":261}," }, tags: [",[237,1837,1838],{"class":272},"'weapon'",[237,1840,62],{"class":261},[237,1842,1843],{"class":272},"'melee'",[237,1845,1846],{"class":261},"] },\n",[237,1848,1849,1851,1854,1856,1858,1860,1863,1865,1867,1869,1872],{"class":239,"line":285},[237,1850,1819],{"class":261},[237,1852,1853],{"class":272},"'bow_002'",[237,1855,1825],{"class":261},[237,1857,1365],{"class":272},[237,1859,1830],{"class":261},[237,1861,1862],{"class":254},"8",[237,1864,1835],{"class":261},[237,1866,1838],{"class":272},[237,1868,62],{"class":261},[237,1870,1871],{"class":272},"'ranged'",[237,1873,1846],{"class":261},[237,1875,1876,1878,1881,1883,1885,1887,1890,1892,1894,1896,1899],{"class":239,"line":292},[237,1877,1819],{"class":261},[237,1879,1880],{"class":272},"'staff_003'",[237,1882,1825],{"class":261},[237,1884,1323],{"class":272},[237,1886,1830],{"class":261},[237,1888,1889],{"class":254},"6",[237,1891,1835],{"class":261},[237,1893,1838],{"class":272},[237,1895,62],{"class":261},[237,1897,1898],{"class":272},"'magic'",[237,1900,1283],{"class":261},[237,1902,1903],{"class":239,"line":298},[237,1904,1905],{"class":261},"];\n",[237,1907,1908],{"class":239,"line":320},[237,1909,289],{"emptyLinePlaceholder":288},[237,1911,1912],{"class":239,"line":335},[237,1913,1914],{"class":243},"\u002F\u002F Use existing pool entry filters on custom data\n",[237,1916,1917,1919,1921,1923,1925,1927,1929,1931],{"class":239,"line":350},[237,1918,251],{"class":250},[237,1920,1064],{"class":254},[237,1922,258],{"class":250},[237,1924,262],{"class":261},[237,1926,266],{"class":265},[237,1928,269],{"class":261},[237,1930,273],{"class":272},[237,1932,317],{"class":261},[237,1934,1935],{"class":239,"line":362},[237,1936,1937],{"class":261},"  customData: dynamicItems\n",[237,1939,1940],{"class":239,"line":1295},[237,1941,365],{"class":261},[237,1943,1944],{"class":239,"line":1305},[237,1945,289],{"emptyLinePlaceholder":288},[237,1947,1948],{"class":239,"line":1314},[237,1949,1950],{"class":243},"\u002F\u002F Or combine with a custom entry for full control\n",[237,1952,1953,1955,1958,1960,1962,1964],{"class":239,"line":1328},[237,1954,251],{"class":250},[237,1956,1957],{"class":254}," filtered",[237,1959,258],{"class":250},[237,1961,262],{"class":261},[237,1963,266],{"class":265},[237,1965,1226],{"class":261},[237,1967,1968,1970,1972],{"class":239,"line":1333},[237,1969,1231],{"class":261},[237,1971,1234],{"class":272},[237,1973,1182],{"class":261},[237,1975,1976],{"class":239,"line":1338},[237,1977,1622],{"class":261},[237,1979,1980,1982,1984],{"class":239,"line":1347},[237,1981,1627],{"class":261},[237,1983,443],{"class":254},[237,1985,1182],{"class":261},[237,1987,1988,1990,1992],{"class":239,"line":1356},[237,1989,1636],{"class":261},[237,1991,1264],{"class":254},[237,1993,1182],{"class":261},[237,1995,1996,1999,2001,2003,2005,2007,2009],{"class":239,"line":1370},[237,1997,1998],{"class":261},"    filters_include: { ",[237,2000,1274],{"class":272},[237,2002,1277],{"class":261},[237,2004,1280],{"class":272},[237,2006,62],{"class":261},[237,2008,1323],{"class":272},[237,2010,1283],{"class":261},[237,2012,2013],{"class":239,"line":1376},[237,2014,1679],{"class":261},[237,2016,2017],{"class":239,"line":1382},[237,2018,2019],{"class":261},"}, {\n",[237,2021,2023],{"class":239,"line":2022},22,[237,2024,1937],{"class":261},[237,2026,2028],{"class":239,"line":2027},23,[237,2029,365],{"class":261},[23,2031],{},[26,2033,2035],{"id":2034},"re-roll-behavior","Re-roll Behavior",[14,2037,2038,2039,2042,2043,2046],{},"When using ",[18,2040,2041],{},"weight mode",", if an entity cannot fulfill its requirements (not enough matching items for ",[49,2044,2045],{},"unique"," mode, or no matching items at all), the system will:",[111,2048,2049,2052,2055],{},[42,2050,2051],{},"Log a warning",[42,2053,2054],{},"Exclude that entity from the draw",[42,2056,2057],{},"Re-roll with remaining entities",[14,2059,2060],{},"This ensures you get results when possible, while alerting you to potential configuration issues.",[23,2062],{},[26,2064,2066],{"id":2065},"tips","Tips",[39,2068,2069,2075,2081,2087,2093],{},[42,2070,2071,2074],{},[18,2072,2073],{},"Test your pools"," - Use the console to verify your filters return expected items",[42,2076,2077,2080],{},[18,2078,2079],{},"Keep filters broad"," - Overly specific filters may result in empty draws",[42,2082,2083,2086],{},[18,2084,2085],{},"Use unique sparingly"," - Only enable when you truly need no duplicates",[42,2088,2089,2092],{},[18,2090,2091],{},"Prefer editor entries"," - Define common pools in the editor for easy tweaking",[42,2094,2095,2098],{},[18,2096,2097],{},"Use runtime entries"," - For dynamic scenarios like level-scaling or player choices",[23,2100],{},[26,2102,2104],{"id":2103},"drawfromcollection","drawFromCollection",[14,2106,2107,2108,2111],{},"For simple weighted draws without pool definitions, use ",[49,2109,2110],{},"game.drawFromCollection()",". This is ideal for quick selections from any array or Map.",[31,2113,2115],{"id":2114},"drawfromcollectioncollection-settings","drawFromCollection(collection, settings?)",[14,2117,2118],{},"Draw items directly from any collection using weighted random selection.",[228,2120,2122],{"className":230,"code":2121,"language":232,"meta":233,"style":233},"\u002F\u002F Draw from an array with weight property\nconst regions = game.getData(\"plugins_data\u002Fmy_plugin\u002Fregions\", true);\nconst selected = game.drawFromCollection(regions, { type: 'weight', count: 3, unique: true });\n",[49,2123,2124,2129,2154],{"__ignoreMap":233},[237,2125,2126],{"class":239,"line":240},[237,2127,2128],{"class":243},"\u002F\u002F Draw from an array with weight property\n",[237,2130,2131,2133,2136,2138,2140,2143,2145,2148,2150,2152],{"class":239,"line":247},[237,2132,251],{"class":250},[237,2134,2135],{"class":254}," regions",[237,2137,258],{"class":250},[237,2139,262],{"class":261},[237,2141,2142],{"class":265},"getData",[237,2144,269],{"class":261},[237,2146,2147],{"class":272},"\"plugins_data\u002Fmy_plugin\u002Fregions\"",[237,2149,62],{"class":261},[237,2151,356],{"class":254},[237,2153,276],{"class":261},[237,2155,2156,2158,2161,2163,2165,2167,2170,2172,2175,2177,2180,2182],{"class":239,"line":279},[237,2157,251],{"class":250},[237,2159,2160],{"class":254}," selected",[237,2162,258],{"class":250},[237,2164,262],{"class":261},[237,2166,2104],{"class":265},[237,2168,2169],{"class":261},"(regions, { type: ",[237,2171,326],{"class":272},[237,2173,2174],{"class":261},", count: ",[237,2176,341],{"class":254},[237,2178,2179],{"class":261},", unique: ",[237,2181,356],{"class":254},[237,2183,572],{"class":261},[14,2185,2186],{},[18,2187,370],{},[372,2189,2190,2200],{},[375,2191,2192],{},[378,2193,2194,2196,2198],{},[381,2195,383],{},[381,2197,386],{},[381,2199,389],{},[391,2201,2202,2220,2233,2249],{},[378,2203,2204,2209,2214],{},[396,2205,2206],{},[49,2207,2208],{},"collection",[396,2210,2211],{},[49,2212,2213],{},"Map | any[]",[396,2215,2216,2217,2219],{},"Data to draw from (Map or array of objects with ",[49,2218,506],{}," property)",[378,2221,2222,2226,2230],{},[396,2223,2224],{},[49,2225,415],{},[396,2227,2228],{},[49,2229,326],{},[396,2231,2232],{},"Selection mode (currently only weight supported)",[378,2234,2235,2240,2244],{},[396,2236,2237],{},[49,2238,2239],{},"settings.count",[396,2241,2242],{},[49,2243,437],{},[396,2245,2246,2247,52],{},"Number of items to draw (default: ",[49,2248,443],{},[378,2250,2251,2255,2259],{},[396,2252,2253],{},[49,2254,450],{},[396,2256,2257],{},[49,2258,455],{},[396,2260,2261,2262,52],{},"No duplicate draws (default: ",[49,2263,461],{},[14,2265,2266,482,2268,2271],{},[18,2267,481],{},[49,2269,2270],{},"any[]"," - Array of drawn items (full objects, not just IDs)",[31,2273,935],{"id":2274},"examples-1",[228,2276,2278],{"className":230,"code":2277,"language":232,"meta":233,"style":233},"\u002F\u002F Draw 3 unique regions weighted by their 'weight' property\nconst regions = game.getData(\"plugins_data\u002Fmy_plugin\u002Fregions\", true);\nconst drawnRegions = game.drawFromCollection(regions, {\n  type: 'weight',\n  count: 3,\n  unique: true\n});\n\n\u002F\u002F Draw from a custom array\nconst enemies = [\n  { id: 'goblin', weight: 70 },\n  { id: 'orc', weight: 25 },\n  { id: 'troll', weight: 5 }\n];\nconst spawns = game.drawFromCollection(enemies, { type: 'weight', count: 5 });\n\n\u002F\u002F Allow duplicates (same enemy can spawn multiple times)\nconst horde = game.drawFromCollection(enemies, { type: 'weight', count: 10, unique: false });\n",[49,2279,2280,2285,2307,2323,2331,2340,2346,2350,2354,2359,2370,2385,2398,2411,2415,2439,2443,2448],{"__ignoreMap":233},[237,2281,2282],{"class":239,"line":240},[237,2283,2284],{"class":243},"\u002F\u002F Draw 3 unique regions weighted by their 'weight' property\n",[237,2286,2287,2289,2291,2293,2295,2297,2299,2301,2303,2305],{"class":239,"line":247},[237,2288,251],{"class":250},[237,2290,2135],{"class":254},[237,2292,258],{"class":250},[237,2294,262],{"class":261},[237,2296,2142],{"class":265},[237,2298,269],{"class":261},[237,2300,2147],{"class":272},[237,2302,62],{"class":261},[237,2304,356],{"class":254},[237,2306,276],{"class":261},[237,2308,2309,2311,2314,2316,2318,2320],{"class":239,"line":279},[237,2310,251],{"class":250},[237,2312,2313],{"class":254}," drawnRegions",[237,2315,258],{"class":250},[237,2317,262],{"class":261},[237,2319,2104],{"class":265},[237,2321,2322],{"class":261},"(regions, {\n",[237,2324,2325,2327,2329],{"class":239,"line":285},[237,2326,323],{"class":261},[237,2328,326],{"class":272},[237,2330,1182],{"class":261},[237,2332,2333,2336,2338],{"class":239,"line":292},[237,2334,2335],{"class":261},"  count: ",[237,2337,341],{"class":254},[237,2339,1182],{"class":261},[237,2341,2342,2344],{"class":239,"line":298},[237,2343,353],{"class":261},[237,2345,1189],{"class":254},[237,2347,2348],{"class":239,"line":320},[237,2349,365],{"class":261},[237,2351,2352],{"class":239,"line":335},[237,2353,289],{"emptyLinePlaceholder":288},[237,2355,2356],{"class":239,"line":350},[237,2357,2358],{"class":243},"\u002F\u002F Draw from a custom array\n",[237,2360,2361,2363,2366,2368],{"class":239,"line":362},[237,2362,251],{"class":250},[237,2364,2365],{"class":254}," enemies",[237,2367,258],{"class":250},[237,2369,1814],{"class":261},[237,2371,2372,2374,2377,2380,2382],{"class":239,"line":1295},[237,2373,1819],{"class":261},[237,2375,2376],{"class":272},"'goblin'",[237,2378,2379],{"class":261},", weight: ",[237,2381,1254],{"class":254},[237,2383,2384],{"class":261}," },\n",[237,2386,2387,2389,2392,2394,2396],{"class":239,"line":1305},[237,2388,1819],{"class":261},[237,2390,2391],{"class":272},"'orc'",[237,2393,2379],{"class":261},[237,2395,1300],{"class":254},[237,2397,2384],{"class":261},[237,2399,2400,2402,2405,2407,2409],{"class":239,"line":1314},[237,2401,1819],{"class":261},[237,2403,2404],{"class":272},"'troll'",[237,2406,2379],{"class":261},[237,2408,1179],{"class":254},[237,2410,1670],{"class":261},[237,2412,2413],{"class":239,"line":1328},[237,2414,1905],{"class":261},[237,2416,2417,2419,2422,2424,2426,2428,2431,2433,2435,2437],{"class":239,"line":1333},[237,2418,251],{"class":250},[237,2420,2421],{"class":254}," spawns",[237,2423,258],{"class":250},[237,2425,262],{"class":261},[237,2427,2104],{"class":265},[237,2429,2430],{"class":261},"(enemies, { type: ",[237,2432,326],{"class":272},[237,2434,2174],{"class":261},[237,2436,1179],{"class":254},[237,2438,572],{"class":261},[237,2440,2441],{"class":239,"line":1338},[237,2442,289],{"emptyLinePlaceholder":288},[237,2444,2445],{"class":239,"line":1347},[237,2446,2447],{"class":243},"\u002F\u002F Allow duplicates (same enemy can spawn multiple times)\n",[237,2449,2450,2452,2455,2457,2459,2461,2463,2465,2467,2470,2472,2474],{"class":239,"line":1356},[237,2451,251],{"class":250},[237,2453,2454],{"class":254}," horde",[237,2456,258],{"class":250},[237,2458,262],{"class":261},[237,2460,2104],{"class":265},[237,2462,2430],{"class":261},[237,2464,326],{"class":272},[237,2466,2174],{"class":261},[237,2468,2469],{"class":254},"10",[237,2471,2179],{"class":261},[237,2473,461],{"class":254},[237,2475,572],{"class":261},[31,2477,2479],{"id":2478},"when-to-use","When to Use",[372,2481,2482,2492],{},[375,2483,2484],{},[378,2485,2486,2489],{},[381,2487,2488],{},"Use Case",[381,2490,2491],{},"API",[391,2493,2494,2503,2512,2524],{},[378,2495,2496,2499],{},[396,2497,2498],{},"Need filters, entity groups, or editor-defined entries",[396,2500,2501],{},[49,2502,266],{},[378,2504,2505,2508],{},[396,2506,2507],{},"Simple weighted draw from any collection",[396,2509,2510],{},[49,2511,2104],{},[378,2513,2514,2517],{},[396,2515,2516],{},"Drawing from runtime data with filtering",[396,2518,2519,2521,2522],{},[49,2520,266],{}," with ",[49,2523,1783],{},[378,2525,2526,2529],{},[396,2527,2528],{},"Quick selection without setup",[396,2530,2531],{},[49,2532,2104],{},[2534,2535,2536],"style",{},"html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}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);}",{"title":233,"searchDepth":247,"depth":247,"links":2538},[2539,2543,2547,2550,2554,2561,2571,2572,2573],{"id":28,"depth":247,"text":29,"children":2540},[2541,2542],{"id":33,"depth":279,"text":34},{"id":75,"depth":279,"text":76},{"id":104,"depth":247,"text":105,"children":2544},[2545,2546],{"id":108,"depth":279,"text":109},{"id":156,"depth":279,"text":157},{"id":218,"depth":247,"text":219,"children":2548},[2549],{"id":222,"depth":279,"text":223},{"id":495,"depth":247,"text":496,"children":2551},[2552,2553],{"id":516,"depth":279,"text":517},{"id":575,"depth":279,"text":576},{"id":626,"depth":247,"text":627,"children":2555},[2556,2557,2558,2559,2560],{"id":635,"depth":279,"text":636},{"id":730,"depth":279,"text":731},{"id":800,"depth":279,"text":801},{"id":853,"depth":279,"text":854},{"id":916,"depth":279,"text":917},{"id":934,"depth":247,"text":935,"children":2562},[2563,2564,2565,2566,2567,2568,2569,2570],{"id":938,"depth":279,"text":939},{"id":1041,"depth":279,"text":1042},{"id":1141,"depth":279,"text":1142},{"id":1196,"depth":279,"text":1197},{"id":1387,"depth":279,"text":1388},{"id":1562,"depth":279,"text":1563},{"id":1686,"depth":279,"text":1687},{"id":1776,"depth":279,"text":1777},{"id":2034,"depth":247,"text":2035},{"id":2065,"depth":247,"text":2066},{"id":2103,"depth":247,"text":2104,"children":2574},[2575,2576,2577],{"id":2114,"depth":279,"text":2115},{"id":2274,"depth":279,"text":935},{"id":2478,"depth":279,"text":2479},"Random pools provide weighted random selection from collections of data. Use them for loot tables, encounter spawning, reward systems, and any scenario where you need controlled randomness.","md",{"plugin":2581,"category":2582,"page":2583},"global_essentials","miscellaneous","random_pools","\u002Fdocs\u002Fglobal_essentials\u002Fmiscellaneous\u002Frandom_pools",{"title":5,"description":2578},"docs\u002Fglobal_essentials\u002Fmiscellaneous\u002Frandom_pools","qOR8m9ACja-sET5M5Leksb33fojD8_sraope0anBL1c",1779582261666]