// const DEFAULT_PROP = { // CHR: 5, // 颜值 charm CHR // INT: 5, // 智力 intelligence INT // STR: 5, // 体质 strength STR // MNY: 5, // 家境 money MNY // SPR: 5, // 快乐 spirit SPR // LIF: 5, // 生命 life LIF // TLT: [5], // 天赋 talent TLT // EVT: [5], // 事件 event EVT // }; // debug( // '(STR<2&MNY>3)|(MNY<2&CHR<2)', // '(STR<2&MNY>3)', // '(STR>2&MNY>3)', // '((((STR>2&MNY>2))))', // '((((STR>2&MNY>2)|(MNY<2&CHR<2))))', // '((((STR>2&MNY>2)|(MNY<2&CHR<2)&(STR>2&MNY>3))))', // '((((STR>2&MNY>2)|(MNY<2&CHR<2))&(STR>2&MNY>3)))', // 'EVT![1,2,3]', // 'EVT![1,2]', // 'EVT?[1,2,3]', // 'EVT?[1,2]', // ); // function getProp(prop) { // switch(prop) { // case 'CHR': // case 'INT': // case 'STR': // case 'MNY': // case 'SPR': // case 'LIF': // case 'TLT': // case 'EVT': return DEFAULT_PROP[prop]; // default: return null; // } // } // function check(condition) { // const conditions = parseCondition(condition); // return checkParsedCondition(conditions); // } // function checkParsedCondition(conditions) { // if(!Array.isArray(conditions)) return checkLogic(conditions); // if(conditions.length == 0) return true; // if(conditions.length == 1) return checkParsedCondition(conditions[0]); // let ret = checkParsedCondition(conditions[0]); // for(let i=1; i<\!\?=]/); // const prop = condition.substring(0,i); // const symbol = condition.substring(i, i+=(condition[i+1]=='='?2:1)); // const d = condition.substring(i, length); // const propData = getProp(prop); // const conditionData = d[0]=='['? JSON.parse(d): Number(d); // switch(symbol) { // case '>': return propData > conditionData; // case '<': return propData < conditionData; // case '>=': return propData >= conditionData; // case '<=': return propData <= conditionData; // case '=': // if(Array.isArray(propData)) // return propData.includes(conditionData); // return propData == conditionData; // case '!=': // if(Array.isArray(propData)) // return !propData.includes(conditionData); // return propData == conditionData; // case '?': // if(Array.isArray(propData)) { // for(const p of propData) // if(conditionData.includes(p)) return true; // return false; // } // return conditionData.includes(propData); // case '!': // if(Array.isArray(propData)) { // for(const p of propData) // if(conditionData.includes(p)) return false; // return true; // } // return !conditionData.includes(propData); // default: return false; // } // } // function parseCondition(condition) { // const conditions = []; // const length = condition.length; // const stack = []; // stack.unshift(conditions); // let cursor = 0; // const catchString = i => { // const str = condition.substring(cursor, i).trim(); // cursor = i; // if(str) stack[0].push(str); // }; // for(let i=0; i3)|(MNY<2&CHR<2)', '(STR<2&MNY>3)', '(STR>2&MNY>3)', '((((STR>2&MNY>2))))', '((((STR>2&MNY>2)|(MNY<2&CHR<2))))', '((((STR>2&MNY>2)|(MNY<2&CHR<2)&(STR>2&MNY>3))))', '((((STR>2&MNY>2)|(MNY<2&CHR<2))&(STR>2&MNY>3)))', 'EVT![1,2,3]', 'EVT![1,2]', 'EVT?[1,2,3]', 'EVT?[1,2]', );