; D100OE.ipt ; created 1-7-24 ; Created by NanoEther ; Inspired by thread: https://forum.nbos.com/discussion/1402/open-ended-dice-rolls ; with helpful comments from JDale, and OldeMusicke ; ; This will generate negative as well as positive results ; IPP does not currently handle negative lookups, the following might work ; Add a base value to your table and your rolls (like 200) ; This will shift your table values and rolls upwards ; ; OE = Open Ended, if values are between 1-5 or 96-100, additional rolls are ; either subtracted or added to the first roll ; OEH = Open Ended High, as above, but only values from 96-100 are tested ; ; Subtables: ; D100OE [main table] (rolls 1d100 Open Ended, calls D100OEH) ; D100OEH [subtable] (rolls 1d100 Open Ended High, calls itself) Table:D100OE Roll:1d100 Type:Lookup Default:1000 // this is an error trap, the roller should never reach this normally ; test for lower bounds is 1-5 ; test for upper bounds is 96-100 ; if you need to adjust bounding, use the present bounds as a guide ; don't forget to adjust D100OEH if you need to 1: {1+((-1)*[@D100OEH])} // requests a value from D100OEH, 2: {2+((-1)*[@D100OEH])} // which is then subtracted from the first roll (D100OE) 3: {3+((-1)*[@D100OEH])} 4: {4+((-1)*[@D100OEH])} 5: {5+((-1)*[@D100OEH])} 6: 6 7: 7 8: 8 9: 9 10: 10 11: 11 12: 12 13: 13 14: 14 15: 15 16: 16 17: 17 18: 18 19: 19 20: 20 21: 21 22: 22 23: 23 24: 24 25: 25 26: 26 27: 27 28: 28 29: 29 30: 30 31: 31 32: 32 33: 33 34: 34 35: 35 36: 36 37: 37 38: 38 39: 39 40: 40 41: 41 42: 42 43: 43 44: 44 45: 45 46: 46 47: 47 48: 48 49: 49 50: 50 51: 51 52: 52 53: 53 54: 54 55: 55 56: 56 57: 57 58: 58 59: 59 60: 60 61: 61 62: 62 63: 63 64: 64 65: 65 66: 66 67: 67 68: 68 69: 69 70: 70 71: 71 72: 72 73: 73 74: 74 75: 75 76: 76 77: 77 78: 78 79: 79 80: 80 81: 81 82: 82 83: 83 84: 84 85: 85 86: 86 87: 87 88: 88 89: 89 90: 90 91: 91 92: 92 93: 93 94: 94 95: 95 96: {96+([@D100OEH])} // requests a value from D100OEH, 97: {97+([@D100OEH])} // which is then added to the first roll (D100OE) 98: {98+([@D100OEH])} 99: {99+([@D100OEH])} 100: {100+([@D100OEH])} EndTable: ; the following table was originally meant to be added or subtracted from D100OE results ; but I was planning on doing a D100OEH roller too, and realized that I'd already done it ; so I changed the name. Ta Da! Table:D100OEH Type:Lookup Default:2000 // this is an error trap, the roller should never reach this normally 1: 1 2: 2 3: 3 4: 4 5: 5 6: 6 7: 7 8: 8 9: 9 10: 10 11: 11 12: 12 13: 13 14: 14 15: 15 16: 16 17: 17 18: 18 19: 19 20: 20 21: 21 22: 22 23: 23 24: 24 25: 25 26: 26 27: 27 28: 28 29: 29 30: 30 31: 31 32: 32 33: 33 34: 34 35: 35 36: 36 37: 37 38: 38 39: 39 40: 40 41: 41 42: 42 43: 43 44: 44 45: 45 46: 46 47: 47 48: 48 49: 49 50: 50 51: 51 52: 52 53: 53 54: 54 55: 55 56: 56 57: 57 58: 58 59: 59 60: 60 61: 61 62: 62 63: 63 64: 64 65: 65 66: 66 67: 67 68: 68 69: 69 70: 70 71: 71 72: 72 73: 73 74: 74 75: 75 76: 76 77: 77 78: 78 79: 79 80: 80 81: 81 82: 82 83: 83 84: 84 85: 85 86: 86 87: 87 88: 88 89: 89 90: 90 91: 91 92: 92 93: 93 94: 94 95: 95 96: {96+([@D100OEH])} // requests a value from D100OEH, 97: {97+([@D100OEH])} // which is then added to any previous rolls from D100OEH 98: {98+([@D100OEH])} 99: {99+([@D100OEH])} 100: {100+([@D100OEH])} EndTable: