import App from './app.js'; import Life from './modules/life.js'; globalThis.$$eventMap = new Map(); globalThis.$$event = (tag, data) => { const listener = $$eventMap.get(tag); if(listener) listener.forEach(fn=>fn(data)); } globalThis.$$on = (tag, fn) => { let listener = $$eventMap.get(tag); if(!listener) { listener = new Set(); $$eventMap.set(tag, listener); } listener.add(fn); } globalThis.$$off = (tag, fn) => { const listener = $$eventMap.get(tag); if(listener) listener.delete(fn); } globalThis.$$copy = async text => { const result = await navigator.permissions.query({ name: "clipboard-write" }) if (result.state == "granted" || result.state == "prompt") { navigator.clipboard.writeText(text) return true; } const input = document.createElement('input'); input.setAttribute('style', 'opacity: 0;'); document.body.appendChild(input); input.value = text; input.select(); const r = document.execCommand("copy"); document.body.removeChild(input); return r; } globalThis.$$read = async ()=>{ const result = await navigator.permissions.query({ name: "clipboard-read" }) if (result.state == "granted" || result.state == "prompt") { return await navigator.clipboard.readText(); } const input = document.createElement('input'); input.setAttribute('style', 'opacity: 0;'); document.body.appendChild(input); input.focus(); const r = document.execCommand("paste"); const text = input.value; document.body.removeChild(input); return r?text:r; }; const core = new Life(); const game = new App(); globalThis.core = core; globalThis.game = game; const query = {}; location.search.substr(1).split('&').forEach(item => { const parts = item.split('='); query[parts[0]] = parts[1]; }); core.config({ defaultPropertyPoints: 20, // default number of points for a property talentSelectLimit: 3, // max number of talents that can be selected propertyAllocateLimit: [0, 10], // scoop of properties that can be allocated, defaultPropertys: { SPR: 5 }, // default properties talentConfig: { // config for talent talentPullCount: 10, // number of talents to pull from the talent pool talentRate: { 1:100, 2:10, 3:1, total: 1000 }, // rate of talent pull additions: { TMS: [ [ 10, { 2: 1 }], [ 30, { 2: 2 }], [ 50, { 2: 3 }], [ 70, { 2: 4 }], [100, { 2: 5 }], ], CACHV: [ [ 10, { 2: 1 }], [ 30, { 2: 2 }], [ 50, { 2: 3 }], [ 70, { 2: 4 }], [100, { 2: 5 }], ] }, }, propertyConfig: { // config for property judge: { // type: [min, grade, judge] RTLT: [ [ 0, 0], [ 0.3, 1], [ 0.6, 2], [ 0.9, 3], ], REVT: [ [ 0, 0], [ 0.2, 1], [ 0.4, 2], [ 0.6, 3], ], TMS: [ [ 0, 0, 'UI_Remake_Times_Judge_Level_0'], [ 10, 1, 'UI_Remake_Times_Judge_Level_1'], [ 30, 1, 'UI_Remake_Times_Judge_Level_2'], [ 50, 2, 'UI_Remake_Times_Judge_Level_3'], [ 70, 2, 'UI_Remake_Times_Judge_Level_4'], [ 100, 3, 'UI_Remake_Times_Judge_Level_5'], ], CACHV: [ [ 0, 0, 'UI_Achievement_Count_Judge_Level_0'], [ 10, 1, 'UI_Achievement_Count_Judge_Level_1'], [ 30, 1, 'UI_Achievement_Count_Judge_Level_2'], [ 50, 2, 'UI_Achievement_Count_Judge_Level_3'], [ 70, 2, 'UI_Achievement_Count_Judge_Level_4'], [ 100, 3, 'UI_Achievement_Count_Judge_Level_5'], ], HCHR: [ [ 0, 0, 'UI_Judge_Level_0'], [ 1, 0, 'UI_Judge_Level_1'], [ 2, 0, 'UI_Judge_Level_2'], [ 4, 0, 'UI_Judge_Level_3'], [ 7, 1, 'UI_Judge_Level_4'], [ 9, 2, 'UI_Judge_Level_5'], [ 11, 3, 'UI_Judge_Level_6'], ], HMNY: [ [ 0, 0, 'UI_Judge_Level_0'], [ 1, 0, 'UI_Judge_Level_1'], [ 2, 0, 'UI_Judge_Level_2'], [ 4, 0, 'UI_Judge_Level_3'], [ 7, 1, 'UI_Judge_Level_4'], [ 9, 2, 'UI_Judge_Level_5'], [ 11, 3, 'UI_Judge_Level_6'], ], HSPR: [ [ 0, 0, 'UI_Spirit_Judge_Level_0'], [ 1, 0, 'UI_Spirit_Judge_Level_1'], [ 2, 0, 'UI_Spirit_Judge_Level_2'], [ 4, 0, 'UI_Spirit_Judge_Level_3'], [ 7, 1, 'UI_Spirit_Judge_Level_4'], [ 9, 2, 'UI_Spirit_Judge_Level_5'], [ 11, 3, 'UI_Spirit_Judge_Level_6'], ], HINT: [ [ 0, 0, 'UI_Judge_Level_0'], [ 1, 0, 'UI_Judge_Level_1'], [ 2, 0, 'UI_Judge_Level_2'], [ 4, 0, 'UI_Judge_Level_3'], [ 7, 1, 'UI_Judge_Level_4'], [ 9, 2, 'UI_Judge_Level_5'], [ 11, 3, 'UI_Judge_Level_6'], [ 21, 3, 'UI_Intelligence_Judge_Level_7'], [ 131, 3, 'UI_Intelligence_Judge_Level_8'], [ 501, 3, 'UI_Intelligence_Judge_Level_9'], ], HSTR: [ [ 0, 0, 'UI_Judge_Level_0'], [ 1, 0, 'UI_Judge_Level_1'], [ 2, 0, 'UI_Judge_Level_2'], [ 4, 0, 'UI_Judge_Level_3'], [ 7, 1, 'UI_Judge_Level_4'], [ 9, 2, 'UI_Judge_Level_5'], [ 11, 3, 'UI_Judge_Level_6'], [ 21, 3, 'UI_Strength_Judge_Level_7'], [ 101, 3, 'UI_Strength_Judge_Level_8'], [ 401, 3, 'UI_Strength_Judge_Level_9'], [1001, 3, 'UI_Strength_Judge_Level_10'], [2001, 3, 'UI_Strength_Judge_Level_11'], ], HAGE: [ [ 0, 0, 'UI_AGE_Judge_Level_0'], [ 1, 0, 'UI_AGE_Judge_Level_1'], [ 10, 0, 'UI_AGE_Judge_Level_2'], [ 18, 0, 'UI_AGE_Judge_Level_3'], [ 40, 0, 'UI_AGE_Judge_Level_4'], [ 60, 1, 'UI_AGE_Judge_Level_5'], [ 70, 1, 'UI_AGE_Judge_Level_6'], [ 80, 2, 'UI_AGE_Judge_Level_7'], [ 90, 2, 'UI_AGE_Judge_Level_8'], [ 95, 3, 'UI_AGE_Judge_Level_9'], [ 100, 3, 'UI_AGE_Judge_Level_10'], [ 500, 3, 'UI_AGE_Judge_Level_11'], ], SUM: [ [ 0, 0, 'UI_Judge_Level_0'], [ 41, 0, 'UI_Judge_Level_1'], [ 50, 0, 'UI_Judge_Level_2'], [ 60, 0, 'UI_Judge_Level_3'], [ 80, 1, 'UI_Judge_Level_4'], [ 100, 2, 'UI_Judge_Level_5'], [ 110, 3, 'UI_Judge_Level_6'], [ 120, 3, 'UI_Judge_Level_7'], ], }, }, characterConfig: { // config for character characterPullCount: 3, rateableKnife: 10, propertyWeight: [ [ 0, 1], [ 1, 2], [ 2, 3], [ 3, 4], [ 4, 5], [ 5, 6], [ 6, 5], [ 7, 4], [ 8, 3], [ 9, 2], [10, 1], ], talentWeight: [ [ 1, 1], [ 2, 2], [ 3, 3], [ 4, 2], [ 5, 1], ], }, }); game.start(query);