Compare commits
1 Commits
cypher-rol
...
main
Author | SHA1 | Date | |
---|---|---|---|
43f6b61a72 |
@ -1,697 +0,0 @@
|
|||||||
categories:
|
|
||||||
generic_fantasy: Fantasy/Fairy Tale
|
|
||||||
fantasy: Fantasy
|
|
||||||
modern: Modern/Romance
|
|
||||||
scifi: Science Fiction/Post-Apocalyptic
|
|
||||||
horror: Horror
|
|
||||||
superhero: Superhero
|
|
||||||
|
|
||||||
forms:
|
|
||||||
generic_fantasy:
|
|
||||||
list:
|
|
||||||
- Potion
|
|
||||||
- Scroll
|
|
||||||
- Runeplate
|
|
||||||
- Tattoo
|
|
||||||
- Charm
|
|
||||||
- Powder
|
|
||||||
- Crystal
|
|
||||||
- Book
|
|
||||||
fantasy:
|
|
||||||
include: generic_fantasy
|
|
||||||
list:
|
|
||||||
- min_roll: 1
|
|
||||||
max-roll: 2
|
|
||||||
name: Bone runeplate
|
|
||||||
- min_roll: 3
|
|
||||||
max-roll: 4
|
|
||||||
name: Book page
|
|
||||||
- min_roll: 5
|
|
||||||
max-roll: 7
|
|
||||||
name: Bottle of powder
|
|
||||||
- min_roll: 8
|
|
||||||
max-roll: 9
|
|
||||||
name: Brand
|
|
||||||
- min_roll: 10
|
|
||||||
max-roll: 12
|
|
||||||
name: Brick
|
|
||||||
- min_roll: 13
|
|
||||||
max-roll: 15
|
|
||||||
name: Carved bone
|
|
||||||
- min_roll: 16
|
|
||||||
max-roll: 18
|
|
||||||
name: Carved stick
|
|
||||||
- min_roll: 19
|
|
||||||
max-roll: 20
|
|
||||||
name: Carved tooth
|
|
||||||
- min_roll: 21
|
|
||||||
max-roll: 23
|
|
||||||
name: Chalky potion
|
|
||||||
- min_roll: 30
|
|
||||||
max-roll: 33
|
|
||||||
name: Clay runeplate
|
|
||||||
- min_roll: 34
|
|
||||||
max-roll: 37
|
|
||||||
name: Crystal
|
|
||||||
- min_roll: 38
|
|
||||||
max-roll: 39
|
|
||||||
name: Elaborate scar
|
|
||||||
- min_roll: 40
|
|
||||||
max-roll: 42
|
|
||||||
name: Envelope of powder
|
|
||||||
- min_roll: 43
|
|
||||||
max-roll: 44
|
|
||||||
name: Fuming potion
|
|
||||||
- min_roll: 45
|
|
||||||
max-roll: 47
|
|
||||||
name: Glass
|
|
||||||
- min_roll: 48
|
|
||||||
max-roll: 50
|
|
||||||
name: Leaf
|
|
||||||
- min_roll: 51
|
|
||||||
max-roll: 54
|
|
||||||
name: Leather scroll
|
|
||||||
- min_roll: 55
|
|
||||||
max-roll: 57
|
|
||||||
name: Metal runeplate
|
|
||||||
- min_roll: 58
|
|
||||||
max-roll: 60
|
|
||||||
name: Oily potion
|
|
||||||
- min_roll: 61
|
|
||||||
max-roll: 62
|
|
||||||
name: Paper scroll
|
|
||||||
- min_roll: 63
|
|
||||||
max-roll: 66
|
|
||||||
name: Papyrus scroll
|
|
||||||
- min_roll: 67
|
|
||||||
max-roll: 71
|
|
||||||
name: Parchment scroll
|
|
||||||
- min_roll: 72
|
|
||||||
max-roll: 74
|
|
||||||
name: Pouch of powder
|
|
||||||
- min_roll: 75
|
|
||||||
max-roll: 76
|
|
||||||
name: Skin drawing
|
|
||||||
- min_roll: 77
|
|
||||||
max-roll: 80
|
|
||||||
name: Stone
|
|
||||||
- min_roll: 81
|
|
||||||
max-roll: 82
|
|
||||||
name: Tattoo
|
|
||||||
- min_roll: 83
|
|
||||||
max-roll: 85
|
|
||||||
name: Thick potion
|
|
||||||
- min_roll: 86
|
|
||||||
max-roll: 88
|
|
||||||
name: Tube of power
|
|
||||||
- min_roll: 89
|
|
||||||
max-roll: 92
|
|
||||||
name: Vellum scroll
|
|
||||||
- min_roll: 93
|
|
||||||
max-roll: 96
|
|
||||||
name: Watery potion
|
|
||||||
- min_roll: 97
|
|
||||||
max-roll: 00
|
|
||||||
name: Wood runeplate
|
|
||||||
modern:
|
|
||||||
list:
|
|
||||||
- Drug
|
|
||||||
- Virus
|
|
||||||
- Smartphone app
|
|
||||||
scifi:
|
|
||||||
list:
|
|
||||||
- Drug
|
|
||||||
- Computer program
|
|
||||||
- Crystal
|
|
||||||
- Gadget
|
|
||||||
- Virus
|
|
||||||
- Biological implant
|
|
||||||
- Mechanical implant
|
|
||||||
- Nanotechnological injection
|
|
||||||
horror:
|
|
||||||
list:
|
|
||||||
- Burrowing worm or insect
|
|
||||||
- Page from a forbidden book
|
|
||||||
- Horrific image
|
|
||||||
superhero:
|
|
||||||
include: all
|
|
||||||
|
|
||||||
cyphers:
|
|
||||||
manifest:
|
|
||||||
- min_roll: 1
|
|
||||||
max-roll: 3
|
|
||||||
name: Adhesion
|
|
||||||
level: d6
|
|
||||||
- min_roll: 4
|
|
||||||
max-roll: 5
|
|
||||||
name: Antivenom
|
|
||||||
- min_roll: 6
|
|
||||||
max-roll: 9
|
|
||||||
name: Armor reinforcer
|
|
||||||
- min_roll: 10
|
|
||||||
max-roll: 11
|
|
||||||
name: Attractor
|
|
||||||
- min_roll: 12
|
|
||||||
max-roll: 13
|
|
||||||
name: Blackout
|
|
||||||
- min_roll: 14
|
|
||||||
max-roll: 15
|
|
||||||
name: Catholicon
|
|
||||||
- min_roll: 16
|
|
||||||
max-roll: 17
|
|
||||||
name: Curse bringer
|
|
||||||
- min_roll: 18
|
|
||||||
max-roll: 19
|
|
||||||
name: Death bringer
|
|
||||||
- min_roll: 20
|
|
||||||
max-roll: 22
|
|
||||||
name: Density
|
|
||||||
- min_roll: 23
|
|
||||||
max-roll: 26
|
|
||||||
name: Detonation
|
|
||||||
- min_roll: 27
|
|
||||||
max-roll: 29
|
|
||||||
name: Detonation (flash)
|
|
||||||
- min_roll: 30
|
|
||||||
max-roll: 31
|
|
||||||
name: Detonation (massive)
|
|
||||||
- min_roll: 32
|
|
||||||
max-roll: 34
|
|
||||||
name: Detonation (pressure)
|
|
||||||
- min_roll: 35
|
|
||||||
max-roll: 36
|
|
||||||
name: Detonation (sonic)
|
|
||||||
- min_roll: 37
|
|
||||||
max-roll: 38
|
|
||||||
name: Detonation (spawn)
|
|
||||||
- min_roll: 39
|
|
||||||
max-roll: 41
|
|
||||||
name: Detonation (web)
|
|
||||||
- min_roll: 42
|
|
||||||
max-roll: 44
|
|
||||||
name: Equipment cache
|
|
||||||
- min_roll: 45
|
|
||||||
max-roll: 46
|
|
||||||
name: Fireproofing
|
|
||||||
- min_roll: 47
|
|
||||||
max-roll: 49
|
|
||||||
name: Friction reducer
|
|
||||||
- min_roll: 50
|
|
||||||
max-roll: 52
|
|
||||||
name: Gas bomb
|
|
||||||
- min_roll: 53
|
|
||||||
max-roll: 55
|
|
||||||
name: Hunter/seeker
|
|
||||||
- min_roll: 56
|
|
||||||
max-roll: 57
|
|
||||||
name: Infiltrator
|
|
||||||
- min_roll: 58
|
|
||||||
max-roll: 60
|
|
||||||
name: Information sensor
|
|
||||||
- min_roll: 61
|
|
||||||
max-roll: 63
|
|
||||||
name: Metal death
|
|
||||||
- min_roll: 64
|
|
||||||
max-roll: 65
|
|
||||||
name: Nullification ray
|
|
||||||
- min_roll: 66
|
|
||||||
max-roll: 68
|
|
||||||
name: Poison (emotion)
|
|
||||||
- min_roll: 69
|
|
||||||
max-roll: 70
|
|
||||||
name: Poison (mind disrupting)
|
|
||||||
- min_roll: 71
|
|
||||||
max-roll: 73
|
|
||||||
name: Radiation spike
|
|
||||||
- min_roll: 74
|
|
||||||
max-roll: 76
|
|
||||||
name: Remote viewer
|
|
||||||
- min_roll: 77
|
|
||||||
max-roll: 79
|
|
||||||
name: Shocker
|
|
||||||
- min_roll: 80
|
|
||||||
max-roll: 82
|
|
||||||
name: Sleep inducer
|
|
||||||
- min_roll: 83
|
|
||||||
max-roll: 85
|
|
||||||
name: Sniper module
|
|
||||||
- min_roll: 86
|
|
||||||
max-roll: 88
|
|
||||||
name: Solvent
|
|
||||||
- min_roll: 89
|
|
||||||
max-roll: 90
|
|
||||||
name: Spy
|
|
||||||
- min_roll: 91
|
|
||||||
max-roll: 92
|
|
||||||
name: Tracer
|
|
||||||
- min_roll: 93
|
|
||||||
max-roll: 94
|
|
||||||
name: Uninterruptible power source
|
|
||||||
- min_roll: 95
|
|
||||||
max-roll: 96
|
|
||||||
name: Warmth
|
|
||||||
- min_roll: 97
|
|
||||||
max-roll: 98
|
|
||||||
name: Water adapter
|
|
||||||
- min_roll: 99
|
|
||||||
max-roll: 100
|
|
||||||
name: X-ray viewer
|
|
||||||
fantastic:
|
|
||||||
- min_roll: 01
|
|
||||||
max-roll: 01
|
|
||||||
name: Age taker
|
|
||||||
- min_roll: 02
|
|
||||||
max-roll: 02
|
|
||||||
name: Banishing
|
|
||||||
- min_roll: 03
|
|
||||||
max-roll: 04
|
|
||||||
name: Blinking
|
|
||||||
- min_roll: 05
|
|
||||||
max-roll: 05
|
|
||||||
name: Chemical factory
|
|
||||||
- min_roll: 06
|
|
||||||
max-roll: 06
|
|
||||||
name: Comprehension
|
|
||||||
- min_roll: 07
|
|
||||||
max-roll: 08
|
|
||||||
name: Condition remover
|
|
||||||
- min_roll: 09
|
|
||||||
max-roll: 09
|
|
||||||
name: Controlled blinking
|
|
||||||
- min_roll: 10
|
|
||||||
max-roll: 10
|
|
||||||
name: Detonation (creature)
|
|
||||||
- min_roll: 11
|
|
||||||
max-roll: 11
|
|
||||||
name: Detonation (desiccating)
|
|
||||||
- min_roll: 12
|
|
||||||
max-roll: 12
|
|
||||||
name: Detonation (gravity)
|
|
||||||
- min_roll: 13
|
|
||||||
max-roll: 13
|
|
||||||
name: Detonation (gravity inversion)
|
|
||||||
- min_roll: 14
|
|
||||||
max-roll: 14
|
|
||||||
name: Detonation (matter disruption)
|
|
||||||
- min_roll: 15
|
|
||||||
max-roll: 15
|
|
||||||
name: Detonation (singularity)
|
|
||||||
- min_roll: 16
|
|
||||||
max-roll: 16
|
|
||||||
name: Disguise module
|
|
||||||
- min_roll: 17
|
|
||||||
max-roll: 17
|
|
||||||
name: Disrupting
|
|
||||||
- min_roll: 18
|
|
||||||
max-roll: 18
|
|
||||||
name: Farsight
|
|
||||||
- min_roll: 19
|
|
||||||
max-roll: 19
|
|
||||||
name: Flame-retardant wall
|
|
||||||
- min_roll: 20
|
|
||||||
max-roll: 20
|
|
||||||
name: Force cube
|
|
||||||
- min_roll: 21
|
|
||||||
max-roll: 22
|
|
||||||
name: Force field
|
|
||||||
- min_roll: 23
|
|
||||||
max-roll: 23
|
|
||||||
name: Force screen projector
|
|
||||||
- min_roll: 24
|
|
||||||
max-roll: 24
|
|
||||||
name: Force shield projector
|
|
||||||
- min_roll: 25
|
|
||||||
max-roll: 25
|
|
||||||
name: Frigid wall
|
|
||||||
- min_roll: 26
|
|
||||||
max-roll: 27
|
|
||||||
name: Gravity nullifier
|
|
||||||
- min_roll: 28
|
|
||||||
max-roll: 28
|
|
||||||
name: Gravity-nullifying application
|
|
||||||
- min_roll: 29
|
|
||||||
max-roll: 30
|
|
||||||
name: Heat attack
|
|
||||||
- min_roll: 31
|
|
||||||
max-roll: 31
|
|
||||||
name: Image projector
|
|
||||||
- min_roll: 32
|
|
||||||
max-roll: 32
|
|
||||||
name: Inferno wall
|
|
||||||
- min_roll: 33
|
|
||||||
max-roll: 34
|
|
||||||
name: Instant servant
|
|
||||||
- min_roll: 35
|
|
||||||
max-roll: 35
|
|
||||||
name: Instant shelter
|
|
||||||
- min_roll: 36
|
|
||||||
max-roll: 36
|
|
||||||
name: Lightning wall
|
|
||||||
- min_roll: 37
|
|
||||||
max-roll: 38
|
|
||||||
name: Machine control
|
|
||||||
- min_roll: 39
|
|
||||||
max-roll: 39
|
|
||||||
name: Magnetic attack drill
|
|
||||||
- min_roll: 40
|
|
||||||
max-roll: 40
|
|
||||||
name: Magnetic master
|
|
||||||
- min_roll: 41
|
|
||||||
max-roll: 41
|
|
||||||
name: Magnetic shield
|
|
||||||
- min_roll: 42
|
|
||||||
max-roll: 42
|
|
||||||
name: Manipulation beam
|
|
||||||
- min_roll: 43
|
|
||||||
max-roll: 43
|
|
||||||
name: Matter transference ray
|
|
||||||
- min_roll: 44
|
|
||||||
max-roll: 44
|
|
||||||
name: Memory switch
|
|
||||||
- min_roll: 45
|
|
||||||
max-roll: 45
|
|
||||||
name: Mental scrambler
|
|
||||||
- min_roll: 46
|
|
||||||
max-roll: 46
|
|
||||||
name: Mind meld
|
|
||||||
- min_roll: 47
|
|
||||||
max-roll: 47
|
|
||||||
name: Mind-restricting wall
|
|
||||||
- min_roll: 48
|
|
||||||
max-roll: 49
|
|
||||||
name: Monoblade
|
|
||||||
- min_roll: 50
|
|
||||||
max-roll: 50
|
|
||||||
name: Monohorn
|
|
||||||
- min_roll: 51
|
|
||||||
max-roll: 51
|
|
||||||
name: Null field
|
|
||||||
- min_roll: 52
|
|
||||||
max-roll: 53
|
|
||||||
name: Personal environment field
|
|
||||||
- min_roll: 54
|
|
||||||
max-roll: 55
|
|
||||||
name: Phase changer
|
|
||||||
- min_roll: 56
|
|
||||||
max-roll: 56
|
|
||||||
name: Phase disruptor
|
|
||||||
- min_roll: 57
|
|
||||||
max-roll: 57
|
|
||||||
name: Poison (explosive)
|
|
||||||
- min_roll: 58
|
|
||||||
max-roll: 58
|
|
||||||
name: Poison (mind controlling)
|
|
||||||
- min_roll: 59
|
|
||||||
max-roll: 59
|
|
||||||
name: Psychic communique
|
|
||||||
- min_roll: 60
|
|
||||||
max-roll: 60
|
|
||||||
name: Ray emitter
|
|
||||||
- min_roll: 61
|
|
||||||
max-roll: 61
|
|
||||||
name: Ray emitter (command)
|
|
||||||
- min_roll: 62
|
|
||||||
max-roll: 62
|
|
||||||
name: Ray emitter (fear)
|
|
||||||
- min_roll: 63
|
|
||||||
max-roll: 63
|
|
||||||
name: Ray emitter (friend slaying)
|
|
||||||
- min_roll: 64
|
|
||||||
max-roll: 64
|
|
||||||
name: Ray emitter (mind disrupting)
|
|
||||||
- min_roll: 65
|
|
||||||
max-roll: 65
|
|
||||||
name: Ray emitter (numbing)
|
|
||||||
- min_roll: 66
|
|
||||||
max-roll: 66
|
|
||||||
name: Ray emitter (paralysis)
|
|
||||||
- min_roll: 67
|
|
||||||
max-roll: 67
|
|
||||||
name: Reality spike
|
|
||||||
- min_roll: 68
|
|
||||||
max-roll: 68
|
|
||||||
name: Repair unit
|
|
||||||
- min_roll: 69
|
|
||||||
max-roll: 69
|
|
||||||
name: Repeater
|
|
||||||
- min_roll: 70
|
|
||||||
max-roll: 71
|
|
||||||
name: Retaliation
|
|
||||||
- min_roll: 72
|
|
||||||
max-roll: 72
|
|
||||||
name: Sheen
|
|
||||||
- min_roll: 73
|
|
||||||
max-roll: 74
|
|
||||||
name: Shock attack
|
|
||||||
- min_roll: 75
|
|
||||||
max-roll: 75
|
|
||||||
name: Slave maker
|
|
||||||
- min_roll: 76
|
|
||||||
max-roll: 76
|
|
||||||
name: Sonic hole
|
|
||||||
- min_roll: 77
|
|
||||||
max-roll: 78
|
|
||||||
name: Sound dampener
|
|
||||||
- min_roll: 79
|
|
||||||
max-roll: 79
|
|
||||||
name: Spatial warp
|
|
||||||
- min_roll: 80
|
|
||||||
max-roll: 80
|
|
||||||
name: Stasis keeper
|
|
||||||
- min_roll: 81
|
|
||||||
max-roll: 81
|
|
||||||
name: Subdual field
|
|
||||||
- min_roll: 82
|
|
||||||
max-roll: 83
|
|
||||||
name: Telepathy
|
|
||||||
- min_roll: 84
|
|
||||||
max-roll: 84
|
|
||||||
name: Teleporter (bounder)
|
|
||||||
- min_roll: 85
|
|
||||||
max-roll: 85
|
|
||||||
name: Teleporter (interstellar)
|
|
||||||
- min_roll: 86
|
|
||||||
max-roll: 86
|
|
||||||
name: Teleporter (planetary)
|
|
||||||
- min_roll: 87
|
|
||||||
max-roll: 87
|
|
||||||
name: Teleporter (traveler)
|
|
||||||
- min_roll: 88
|
|
||||||
max-roll: 88
|
|
||||||
name: Temporal viewer
|
|
||||||
- min_roll: 89
|
|
||||||
max-roll: 89
|
|
||||||
name: Time dilation (defensive)
|
|
||||||
- min_roll: 90
|
|
||||||
max-roll: 90
|
|
||||||
name: Time dilation (offensive)
|
|
||||||
- min_roll: 91
|
|
||||||
max-roll: 91
|
|
||||||
name: Trick embedder
|
|
||||||
- min_roll: 92
|
|
||||||
max-roll: 92
|
|
||||||
name: Vanisher
|
|
||||||
- min_roll: 93
|
|
||||||
max-roll: 94
|
|
||||||
name: Visage changer
|
|
||||||
- min_roll: 95
|
|
||||||
max-roll: 95
|
|
||||||
name: Visual displacement device
|
|
||||||
- min_roll: 96
|
|
||||||
max-roll: 96
|
|
||||||
name: Vocal translator
|
|
||||||
- min_roll: 97
|
|
||||||
max-roll: 98
|
|
||||||
name: Weapon enhancement
|
|
||||||
- min_roll: 99
|
|
||||||
max-roll: 99
|
|
||||||
name: Wings
|
|
||||||
- min_roll: 00
|
|
||||||
max-roll: 00
|
|
||||||
name: Zero point field
|
|
||||||
subtle:
|
|
||||||
- min_roll: 1
|
|
||||||
max-roll: 4
|
|
||||||
name: Analeptic
|
|
||||||
- min_roll: 5
|
|
||||||
max-roll: 7
|
|
||||||
name: Best tool
|
|
||||||
- min_roll: 8
|
|
||||||
max-roll: 10
|
|
||||||
name: Burst of speed
|
|
||||||
- min_roll: 11
|
|
||||||
max-roll: 13
|
|
||||||
name: Contingent activator
|
|
||||||
- min_roll: 14
|
|
||||||
max-roll: 17
|
|
||||||
name: Curative
|
|
||||||
- min_roll: 18
|
|
||||||
max-roll: 20
|
|
||||||
name: Darksight
|
|
||||||
- min_roll: 21
|
|
||||||
max-roll: 23
|
|
||||||
name: Disarm
|
|
||||||
- min_roll: 24
|
|
||||||
max-roll: 26
|
|
||||||
name: Eagleseye
|
|
||||||
- min_roll: 27
|
|
||||||
max-roll: 29
|
|
||||||
name: Effect resistance
|
|
||||||
- min_roll: 30
|
|
||||||
max-roll: 32
|
|
||||||
name: Effort enhancer (combat)
|
|
||||||
- min_roll: 33
|
|
||||||
max-roll: 35
|
|
||||||
name: Effort enhancer (noncombat)
|
|
||||||
- min_roll: 36
|
|
||||||
max-roll: 39
|
|
||||||
name: Enduring shield
|
|
||||||
- min_roll: 40
|
|
||||||
max-roll: 42
|
|
||||||
name: Intellect booster
|
|
||||||
- min_roll: 43
|
|
||||||
max-roll: 45
|
|
||||||
name: Intelligence enhancement
|
|
||||||
- min_roll: 46
|
|
||||||
max-roll: 48
|
|
||||||
name: Knowledge enhancement
|
|
||||||
- min_roll: 49
|
|
||||||
max-roll: 51
|
|
||||||
name: Meditation aid
|
|
||||||
- min_roll: 52
|
|
||||||
max-roll: 54
|
|
||||||
name: Mind stabilizer
|
|
||||||
- min_roll: 55
|
|
||||||
max-roll: 57
|
|
||||||
name: Motion sensor
|
|
||||||
- min_roll: 58
|
|
||||||
max-roll: 60
|
|
||||||
name: Nutrition and hydration
|
|
||||||
- min_roll: 61
|
|
||||||
max-roll: 63
|
|
||||||
name: Perfect memory
|
|
||||||
- min_roll: 64
|
|
||||||
max-roll: 66
|
|
||||||
name: Perfection
|
|
||||||
- min_roll: 67
|
|
||||||
max-roll: 69
|
|
||||||
name: Reflex enhancer
|
|
||||||
- min_roll: 70
|
|
||||||
max-roll: 73
|
|
||||||
name: Rejuvenator
|
|
||||||
- min_roll: 74
|
|
||||||
max-roll: 76
|
|
||||||
name: Remembering
|
|
||||||
- min_roll: 77
|
|
||||||
max-roll: 79
|
|
||||||
name: Repel
|
|
||||||
- min_roll: 80
|
|
||||||
max-roll: 82
|
|
||||||
name: Secret
|
|
||||||
- min_roll: 83
|
|
||||||
max-roll: 85
|
|
||||||
name: Skill boost
|
|
||||||
- min_roll: 86
|
|
||||||
max-roll: 88
|
|
||||||
name: Speed boost
|
|
||||||
- min_roll: 89
|
|
||||||
max-roll: 91
|
|
||||||
name: Stim
|
|
||||||
- min_roll: 92
|
|
||||||
max-roll: 94
|
|
||||||
name: Strength boost
|
|
||||||
- min_roll: 95
|
|
||||||
max-roll: 97
|
|
||||||
name: Strength enhancer
|
|
||||||
- min_roll: 98
|
|
||||||
max-roll: 100
|
|
||||||
name: Tissue regeneration
|
|
||||||
fantasy:
|
|
||||||
- min_roll: 1
|
|
||||||
max-roll: 5
|
|
||||||
name: Acid resistance
|
|
||||||
- min_roll: 6
|
|
||||||
max-roll: 11
|
|
||||||
name: Animal control
|
|
||||||
- min_roll: 12
|
|
||||||
max-roll: 18
|
|
||||||
name: Beast shape
|
|
||||||
- min_roll: 19
|
|
||||||
max-roll: 27
|
|
||||||
name: Cold resistance
|
|
||||||
- min_roll: 28
|
|
||||||
max-roll: 34
|
|
||||||
name: Demon ward
|
|
||||||
- min_roll: 35
|
|
||||||
max-roll: 39
|
|
||||||
name: Dragon ward
|
|
||||||
- min_roll: 40
|
|
||||||
max-roll: 44
|
|
||||||
name: Electricity resistance
|
|
||||||
- min_roll: 45
|
|
||||||
max-roll: 48
|
|
||||||
name: Elemental conjuration
|
|
||||||
- min_roll: 49
|
|
||||||
max-roll: 57
|
|
||||||
name: Fire resistance
|
|
||||||
- min_roll: 58
|
|
||||||
max-roll: 61
|
|
||||||
name: Giant size
|
|
||||||
- min_roll: 62
|
|
||||||
max-roll: 65
|
|
||||||
name: Instant boat
|
|
||||||
- min_roll: 66
|
|
||||||
max-roll: 68
|
|
||||||
name: Instant tower
|
|
||||||
- min_roll: 69
|
|
||||||
max-roll: 72
|
|
||||||
name: Lycanthrope ward
|
|
||||||
- min_roll: 73
|
|
||||||
max-roll: 76
|
|
||||||
name: Penultimate key
|
|
||||||
- min_roll: 77
|
|
||||||
max-roll: 82
|
|
||||||
name: Poison resistance
|
|
||||||
- min_roll: 83
|
|
||||||
max-roll: 86
|
|
||||||
name: Restorative aura
|
|
||||||
- min_roll: 87
|
|
||||||
max-roll: 89
|
|
||||||
name: Thought listening
|
|
||||||
- min_roll: 90
|
|
||||||
max-roll: 93
|
|
||||||
name: Tiny size
|
|
||||||
- min_roll: 94
|
|
||||||
max-roll: 98
|
|
||||||
name: Undead ward
|
|
||||||
- min_roll: 99
|
|
||||||
max-roll: 00
|
|
||||||
name: Walking corpse
|
|
||||||
superhero:
|
|
||||||
- min_roll: 01
|
|
||||||
max-roll: 10
|
|
||||||
name: Area boost
|
|
||||||
- min_roll: 11
|
|
||||||
max-roll: 20
|
|
||||||
name: Burst boost
|
|
||||||
- min_roll: 21
|
|
||||||
max-roll: 30
|
|
||||||
name: Damage boost
|
|
||||||
- min_roll: 31
|
|
||||||
max-roll: 40
|
|
||||||
name: Efficacy boost
|
|
||||||
- min_roll: 41
|
|
||||||
max-roll: 50
|
|
||||||
name: Energy boost
|
|
||||||
- min_roll: 51
|
|
||||||
max-roll: 60
|
|
||||||
name: Range boost
|
|
||||||
- min_roll: 61
|
|
||||||
max-roll: 80
|
|
||||||
name: Shift boost
|
|
||||||
- min_roll: 81
|
|
||||||
max-roll: 90
|
|
||||||
name: Stunt boost
|
|
||||||
- min_roll: 91
|
|
||||||
max-roll: 00
|
|
||||||
name: Target boost
|
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -8,6 +8,7 @@ import random
|
|||||||
import re
|
import re
|
||||||
|
|
||||||
DICE_DESCRIPTOR_PATTERN = re.compile(r"^([0-9]*d[0-9]+)([+-]([0-9]+|[0-9]*d[0-9]+))*$")
|
DICE_DESCRIPTOR_PATTERN = re.compile(r"^([0-9]*d[0-9]+)([+-]([0-9]+|[0-9]*d[0-9]+))*$")
|
||||||
|
D666_COMBINATIONS = [(0, 1, 2), (0, 2, 1), (1, 0, 2), (1, 2, 0), (2, 0, 1), (2, 1, 0)]
|
||||||
|
|
||||||
|
|
||||||
class Die:
|
class Die:
|
||||||
@ -96,3 +97,26 @@ class Die:
|
|||||||
result += self.modifier
|
result += self.modifier
|
||||||
|
|
||||||
return result
|
return result
|
||||||
|
|
||||||
|
|
||||||
|
def d666(strict_order: bool = False) -> list[int]:
|
||||||
|
"""Roll three six sided dice and use them as separate digits
|
||||||
|
|
||||||
|
“d666” is a special die type often used in random tables; here you don’t roll one 666 sided die, but three 6-sided
|
||||||
|
ones, then use the three values of the three digits of the final result.
|
||||||
|
|
||||||
|
:param strict_order: if ``True``, use the dics in strict order. Otherwise, return all possible combinations.
|
||||||
|
:returns: the list of all valid combinations
|
||||||
|
"""
|
||||||
|
|
||||||
|
roll_values = [random.randint(1, 6) for _ in range(3)]
|
||||||
|
results = []
|
||||||
|
|
||||||
|
combinations = [(0, 1, 2)] if strict_order else D666_COMBINATIONS
|
||||||
|
|
||||||
|
for a, b, c in combinations:
|
||||||
|
result = roll_values[a] * 100 + roll_values[b] * 10 + roll_values[c]
|
||||||
|
if result not in results:
|
||||||
|
results.append(result)
|
||||||
|
|
||||||
|
return results
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
import pytest
|
import pytest
|
||||||
from pytest_mock import MockerFixture
|
from pytest_mock import MockerFixture
|
||||||
|
|
||||||
from gm_assistant.dice import Die
|
from gm_assistant.dice import Die, d666
|
||||||
|
|
||||||
|
|
||||||
def test_parse_empty() -> None:
|
def test_parse_empty() -> None:
|
||||||
@ -143,3 +143,45 @@ def test_roll_complex(mocker: MockerFixture) -> None:
|
|||||||
mocker.call(1, 4),
|
mocker.call(1, 4),
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def test_d666_strict_order(mocker: MockerFixture) -> None:
|
||||||
|
"""Test ``d666()`` with strict dice order"""
|
||||||
|
|
||||||
|
mocked_randint = mocker.patch("gm_assistant.dice.random.randint", side_effect=[2, 4, 6])
|
||||||
|
|
||||||
|
assert d666(strict_order=True) == [246]
|
||||||
|
assert mocked_randint.call_count == 3
|
||||||
|
mocked_randint.assert_has_calls([mocker.call(1, 6), mocker.call(1, 6), mocker.call(1, 6)])
|
||||||
|
|
||||||
|
|
||||||
|
def test_d666_any_order(mocker: MockerFixture) -> None:
|
||||||
|
"""Test ``d666()`` without strict order"""
|
||||||
|
|
||||||
|
mocked_randint = mocker.patch("gm_assistant.dice.random.randint", side_effect=[2, 4, 6])
|
||||||
|
|
||||||
|
assert d666(strict_order=False) == [246, 264, 426, 462, 624, 642]
|
||||||
|
assert mocked_randint.call_count == 3
|
||||||
|
mocked_randint.assert_has_calls([mocker.call(1, 6), mocker.call(1, 6), mocker.call(1, 6)])
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.mark.parametrize("dice_values", [pytest.param((1, 1, 2)), pytest.param((1, 2, 1)), pytest.param((2, 1, 1))])
|
||||||
|
def test_d666_equal_dice(dice_values: tuple[int, int, int], mocker: MockerFixture) -> None:
|
||||||
|
"""Test ``d666()`` when some dice are equal"""
|
||||||
|
|
||||||
|
mocked_randint = mocker.patch("gm_assistant.dice.random.randint", side_effect=dice_values)
|
||||||
|
|
||||||
|
assert set(d666()) == set((112, 121, 211))
|
||||||
|
assert mocked_randint.call_count == 3
|
||||||
|
mocked_randint.assert_has_calls([mocker.call(1, 6), mocker.call(1, 6), mocker.call(1, 6)])
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.mark.parametrize("strict_order", (True, False), ids=("strict", "any"))
|
||||||
|
def test_d666_all_equal(strict_order: bool, mocker: MockerFixture) -> None:
|
||||||
|
"""Test ``d666()`` when all dice are equal"""
|
||||||
|
|
||||||
|
mocked_randint = mocker.patch("gm_assistant.dice.random.randint", return_value=5)
|
||||||
|
|
||||||
|
assert d666(strict_order=strict_order) == [555]
|
||||||
|
assert mocked_randint.call_count == 3
|
||||||
|
mocked_randint.assert_has_calls([mocker.call(1, 6), mocker.call(1, 6), mocker.call(1, 6)])
|
||||||
|
Loading…
x
Reference in New Issue
Block a user