start fixing fate dice with other shit
This commit is contained in:
		
							parent
							
								
									4ed561a15b
								
							
						
					
					
						commit
						b6b1f872d2
					
				| 
						 | 
				
			
			@ -466,6 +466,8 @@ export const getRollConf = (rollStr: string): RollConf => {
 | 
			
		|||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  loggingEnabled && log(LT.LOG, `RollConf before cleanup: ${JSON.stringify(rollConf)}`);
 | 
			
		||||
 | 
			
		||||
  // Verify the parse, throwing errors for every invalid config
 | 
			
		||||
  if (rollConf.dieCount < 0) {
 | 
			
		||||
    throw new Error('NoZerosAllowed_base');
 | 
			
		||||
| 
						 | 
				
			
			@ -502,20 +504,26 @@ export const getRollConf = (rollStr: string): RollConf => {
 | 
			
		|||
  if (rollConf.keepLow.on && rollConf.keepLow.count === 0) {
 | 
			
		||||
    throw new Error('NoZerosAllowed_keepLow');
 | 
			
		||||
  }
 | 
			
		||||
  if (rollConf.reroll.on && !rollConf.dPercent.on && rollConf.reroll.nums.includes(0)) {
 | 
			
		||||
    throw new Error('NoZerosAllowed_reroll');
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  // Filter rollConf num lists to only include valid numbers
 | 
			
		||||
  const validNumFilter = (curNum: number) => curNum <= rollConf.dieSize && curNum > (rollConf.dPercent.on ? -1 : 0);
 | 
			
		||||
  const validNumFilter = (curNum: number) => {
 | 
			
		||||
    if (rollConf.type === 'fate') {
 | 
			
		||||
      return [-1, 0, 1].includes(curNum);
 | 
			
		||||
    }
 | 
			
		||||
    return curNum <= rollConf.dieSize && curNum > (rollConf.dPercent.on ? -1 : 0);
 | 
			
		||||
  };
 | 
			
		||||
  rollConf.reroll.nums = rollConf.reroll.nums.filter(validNumFilter);
 | 
			
		||||
  rollConf.critScore.range = rollConf.critScore.range.filter(validNumFilter);
 | 
			
		||||
  rollConf.critFail.range = rollConf.critFail.range.filter(validNumFilter);
 | 
			
		||||
  rollConf.exploding.nums = rollConf.exploding.nums.filter(validNumFilter);
 | 
			
		||||
  rollConf.success.range = rollConf.success.range.filter(validNumFilter);
 | 
			
		||||
  rollConf.fail.range = rollConf.fail.range.filter(validNumFilter);
 | 
			
		||||
 | 
			
		||||
  if (rollConf.reroll.on && rollConf.reroll.nums.length === rollConf.dieSize) {
 | 
			
		||||
  if (rollConf.reroll.on && rollConf.reroll.nums.length === (rollConf.type === 'fate' ? 3 : rollConf.dieSize)) {
 | 
			
		||||
    throw new Error('NoRerollOnAllSides');
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  loggingEnabled && log(LT.LOG, `RollConf after cleanup: ${JSON.stringify(rollConf)}`);
 | 
			
		||||
 | 
			
		||||
  return rollConf;
 | 
			
		||||
};
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue