A character/one-shot generator for KOBOLDS IN SPACE!
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900
  1. import random as r
  2. def rinterp(s1, l1, s2):
  3. def rfunc():
  4. return f"{s1}{r.choice(l1)}{s2}"
  5. return rfunc
  6. gadgets = [
  7. {
  8. "id": 0,
  9. "name": "Awesome Dagger of Sneak(?) Attacks",
  10. "description": "Yell 'Sneak Attack!' to count a mixed-success Body attack as a success.",
  11. "reusable": True, # boolean
  12. "cursed": False # boolean
  13. },
  14. {
  15. "id": 1,
  16. "name": "Button of Uselessness",
  17. "description": rinterp("This large, red button can be stuck onto any flat surface, horizontal, vertical, or otherwise. A short time after it has been placed, any character (friend or foe) nearby must succeed a Brains roll to avoid pressing the button. Pressing the button does nothing, but this action takes the place of anything that might otherwise be done during an Event if the Brains roll is failed. The button can be pressed", list(range(1,7)), "times before it breaks and no longer compels others to press it."),
  18. "reusable": False, # boolean
  19. "cursed": False # boolean
  20. },
  21. {
  22. "id": 2,
  23. "name": "Marwyse's Encyclopedia of Stuff I Totally Knew",
  24. "description": "Add 2 points to the target number of any uncontested Brains roll, or 1 point to the target number of a contested Brains roll.",
  25. "reusable": True, # boolean
  26. "cursed": False # boolean
  27. },
  28. {
  29. "id": 3,
  30. "name": "Medkit",
  31. "description": "Make a Brains/Order roll to restore 2 lost Body points, or 1 on a Mixed Success. If the character has medical training, restored Body points may be doubled.",
  32. "reusable": False, # boolean
  33. "cursed": False # boolean
  34. },
  35. {
  36. "id": 4,
  37. "name": "Potion of Healing",
  38. "description": "Restore 1 lost Body point. Using counts as an Event but no roll is needed unless it's contested.",
  39. "reusable": False, # boolean
  40. "cursed": False # boolean
  41. },
  42. {
  43. "id": 5,
  44. "name": "Tinfoil Helm of Shielding",
  45. "description": "Count any Brains damage as a mixed success. If you take Body damage, roll 1d6; on a 6, the Helm is useless until you take a nap.",
  46. "reusable": True, # boolean
  47. "cursed": False # boolean
  48. },
  49. {
  50. "id": 6,
  51. "name": "Handy Toothbrush",
  52. "description": "Scrub the Space Gunk off whatever object you're interacting with to turn a mixed Order success to make that object work into a full success.",
  53. "reusable": True, # boolean
  54. "cursed": False # boolean
  55. },
  56. {
  57. "id": 7,
  58. "name": "Jar of ... Something",
  59. "description": "Throw it (Body/Chaos) at another character to make them spend an Event cleaning it off, or throw it at the floor to make a ten-foot circle of difficult terrain.",
  60. "reusable": False, # boolean
  61. "cursed": False # boolean
  62. },
  63. {
  64. "id": 8,
  65. "name": "Pocket Sand!",
  66. "description": "Yell 'Pocket Sand!' to count a successful Body attack against you as a mixed success.",
  67. "reusable": False, # boolean
  68. "cursed": False # boolean
  69. },
  70. {
  71. "id": 9,
  72. "name": "The Fabulous Grappling Hook",
  73. "description": "As an Event, instantly move 50 feet in any direction. (Make sure you have 50 feet available to move in or take 1 Body damage when you arrive short of that.)",
  74. "reusable": True, # boolean
  75. "cursed": False # boolean
  76. },
  77. {
  78. "id": 10,
  79. "name": "Pocket Accordion",
  80. "description": "Make a Brains/Order or Brains/Chaos roll. On a success, any nearby opponent has -1 Brains during their next event. On a failure, everybody nearby, including you, has -1 Brains on their next event.",
  81. "reusable": True, # boolean
  82. "cursed": False # boolean
  83. },
  84. {
  85. "id": 11,
  86. "name": "Cloak of Adsorption",
  87. "description": "The cloak starts out white. Whenever you are the target of a successful attack, the cloak becomes the color of whatever hit you. If your cloak is already the same color as whatever hit you, the attack becomes a mixed success and the cloak turns black and can no longer absorb colors. The cloak becomes white again after a nap.",
  88. "reusable": True, # boolean
  89. "cursed": False # boolean
  90. },
  91. {
  92. "id": 12,
  93. "name": "Cloak of Absorption",
  94. "description": "The cloak starts out white. You can remove the cloak and lay it over difficult terrain to make it easy terrain; if the terrain is difficult because the ground is wet, the cloak becomes wet and the ground in that area becomes dry. The cloak dries out after a nap.",
  95. "reusable": True, # boolean
  96. "cursed": False # boolean
  97. },
  98. {
  99. "id": 13,
  100. "name": "Cloak of Desorption",
  101. "description": "The cloak starts out black. As an Event, you can cause a gas to evaporate from the cloak, leaving it a dingy gray and healing 1 Body to anyone within ten feet of you. The cloak becomes black again after a nap.",
  102. "reusable": True, # boolean
  103. "cursed": False # boolean
  104. },
  105. {
  106. "id": 14,
  107. "name": "Cloak of Food Portions",
  108. "description": "Wearing this cloak causes it to flare out at the base, making the wearer resemble a pyramid. In conversations regarding food the wearer can add +2 to Brains rolls when trying to convince others to alter their diets. This can be done once per nap. Considering how many large things tend to snack on kobolds, this has been found to actually be quite useful.",
  109. "reusable": True, # boolean
  110. "cursed": False # boolean
  111. },
  112. {
  113. "id": 15,
  114. "name": "Huge Goggles",
  115. "description": "If you take Body damage, roll 1d6; on a 6, the lenses of the Goggles break until you take a nap.",
  116. "reusable": True, # boolean
  117. "cursed": False # boolean
  118. },
  119. {
  120. "id": 16, # int
  121. "name": "Potion of Atmosphere Creation", # (f)string
  122. "description": "A character that consumes this extremely carbonated beverage will begin to burp uncontrollably. While little more than a juvenile pastime in many cases, this also surrounds the character in a breathable atmosphere that clings to their body until their next nap or until they encounter a stiff breeze. This regurgitated air smells foul but provides protection against hard vacuum and poisonous gasses.", # (f)string
  123. "reusable": False, # boolean
  124. "cursed": False # boolean
  125. },
  126. {
  127. "id": 17, # int
  128. "name": "Potion of Reality Rejection", # (f)string
  129. "description": "Taking this potion allows the character to impose their sense of order upon their immediate surroundings. The character's Order score is temporarily increased by one (1) until they take a nap.", # (f)string
  130. "reusable": False, # boolean
  131. "cursed": False # boolean
  132. },
  133. {
  134. "id": 18, # int
  135. "name": "Potion of Study Breaks", # (f)string
  136. "description": "Temporarily adds one (1) to the character's Brains Stat, even if it's already at maximum. This effect ends when the character takes Brains damage or a nap.", # (f)string
  137. "reusable": False, # boolean
  138. "cursed": False # boolean
  139. },
  140. {
  141. "id": 19, # int
  142. "name": "Potion of Hangovers", # (f)string
  143. "description": "If used in conjunction with a Chaos roll meant to do damage, a Mixed Result or better will do a point of Brains damage in addition to any other results.", # (f)string
  144. "reusable": False, # boolean
  145. "cursed": False # boolean
  146. },
  147. {
  148. "id": 20, # int
  149. "name": "Potion of Healing Transference", # (f)string
  150. "description": "Restores one (1) lost Body point to anyone within 15 feet. If no one is healed, the drinker takes 1 point of Body damage instead.", # (f)string
  151. "reusable": False, # boolean
  152. "cursed": False # boolean
  153. },
  154. {
  155. "id": 21, # int
  156. "name": "Potion of Deception", # (f)string
  157. "description": "Resembles another potion (GM may roll or choose). When used, the drinker will believe they are under the effects of the potion for one minute or until the believed effects were expected to end. No one else will be fooled.", # (f)string
  158. "reusable": False, # boolean
  159. "cursed": False # boolean
  160. },
  161. {
  162. "id": 22, # int
  163. "name": "Potion of Caffeine!", # (f)string
  164. "description": "Restores one (1) lost Brains point.", # (f)string
  165. "reusable": False, # boolean
  166. "cursed": False # boolean
  167. },
  168. {
  169. "id": 23, # int
  170. "name": "Potion of Gut Punches", # (f)string
  171. "description": "If used in conjunction with a Chaos roll meant to do damage, a Mixed Result or better will do a point of Body damage in addition to any other results.", # (f)string
  172. "reusable": False, # boolean
  173. "cursed": False # boolean
  174. },
  175. {
  176. "id": 24, # int
  177. "name": "Potion of Gym Membership", # (f)string
  178. "description": "Temporarily adds one (1) to the character's Body Stat, even if it's already at maximum. This effect ends when the character takes Body damage or a nap.", # (f)string
  179. "reusable": False, # boolean
  180. "cursed": False # boolean
  181. },
  182. {
  183. "id": 25, # int
  184. "name": "Potion of Random Probability", # (f)string
  185. "description": "Anything can happen when this potion is taken! Anything! More specifically, the character's Chaos Stat is temporarily increased by one (1) until they take a nap. The character and GM are encouraged to describe the most unusual situations whenever the player makes a Chaos roll.", # (f)string
  186. "reusable": False, # boolean
  187. "cursed": False # boolean
  188. },
  189. {
  190. "id": 26, # int
  191. "name": "Potion of Freeze Drying", # (f)string
  192. "description": "An organic character that drinks this potion will shrink to 20\% of their original size while expelling all of the water in their body. Clothing and equipment are not affected. The character enters a state of suspended animation that can be reversed by soaking their body in water for a few seconds. While in this state the character does not need to eat, drink, or breathe. Any beneficial or detrimental effects on the character are 'paused' until the effect is reversed.", # (f)string
  193. "reusable": False, # boolean
  194. "cursed": False # boolean
  195. },
  196. {
  197. "id": 27, # int
  198. "name": "Book of Convoluted and often Contradictory Regulations", # (f)string
  199. "description": "This staple of lawyermancy can be used to confuse a being into believing they need to comply with the wielder's demands for one event. This does nothing if they are ordered to harm (or commit actions that will lead to harm, like stepping into an airlock...) themselves or an ally. After this time they become resentful that they were ordered around and are likely to retaliate.", # (f)string
  200. "reusable": True, # boolean
  201. "cursed": False # boolean
  202. },
  203. {
  204. "id": 28, # int
  205. "name": "Zeeli's Guide to Responsible Pyromania", # (f)string
  206. "description": "While this book does not enable fire based attacks on its own, it does allow the wielder to take fire themed damage that would hit ally and have it instead be applied to an opponent. The book itself is highly flammable and is consumed in the process.", # (f)string
  207. "reusable": False, # boolean
  208. "cursed": False # boolean
  209. },
  210. {
  211. "id": 29, # int
  212. "name": "\"The Book\"", # (f)string
  213. "description": "If thrown at a being that is in violation of an applicable law or regulation (player picks, GM decides after \"The Book\" is thrown whether it works), throwing \"The Book\" at that being does 1 Brains damage. This counts as an event but no roll is needed. Regardless of the results, \"The Book\" is not sturdy enough to be thrown twice.", # (f)string
  214. "reusable": False, # boolean
  215. "cursed": False # boolean
  216. },
  217. {
  218. "id": 30, # int
  219. "name": "Marwyse's Overdue Library Book", # (f)string
  220. "description": "The wielder can use this book to subtract 1 from a Brains based roll once per nap, but each time they do so they take 1 point of Brains damage over the guilt of having not yet returned the book. This damage occurs after the results of the Brains roll are resolved.", # (f)string
  221. "reusable": True, # boolean
  222. "cursed": False # boolean
  223. },
  224. {
  225. "id": 31, # int
  226. "name": "Guide to Scenic Vistas That Certainly Won't Kill You", # (f)string
  227. "description": "This booklet us published by a local tourist board and paints an image of the kobolds' destination as seen through rose colored glasses. It may be used to subtract 1 from any uncontested roll once per nap, but is completely useless after the mission has ended and the kobolds return home.", # (f)string
  228. "reusable": False, # boolean
  229. "cursed": False # boolean
  230. },
  231. {
  232. "id": 32, # int
  233. "name": "Chroma's Abridged Guide to Ship Operations", # (f)string
  234. "description": "This book contains a single, oddly specific how-to for repairing, maintaining, or operating a spaceship. The wielder may use this book to replace a failed roll involving the ship with a Mixed Success, or to replace a Mixed Success with a Success.", # (f)string
  235. "reusable": False, # boolean
  236. "cursed": False # boolean
  237. },
  238. {
  239. "id": 33, # int
  240. "name": "Niwri's Survivalist's Handbook", # (f)string
  241. "description": "This book may be used to reduce damage from environmental threats (earthquakes, volcanoes, floods, etc.) by half, rounded down. Somehow, the act of using a Survivalist's Handbook always results in it being destroyed by that same environmental threat.", # (f)string
  242. "reusable": False, # boolean
  243. "cursed": False # boolean
  244. },
  245. {
  246. "id": 34, # int
  247. "name": "Daldain's Permit of Permissions", # (f)string
  248. "description": "If told by another being that the wielder may or cannot do something, they may display this permit to temporarily confuse that being. Word spreads quickly about this event and future attempts to use this permit do not affect anyone.", # (f)string
  249. "reusable": False, # boolean
  250. "cursed": False # boolean
  251. },
  252. {
  253. "id": 35, # int
  254. "name": "Chroma's Out of Date Science Journal", # (f)string
  255. "description": "The wielder cites this journal by explaining an outdated theory on how the laws of physics were once thought to work. This \"theory\" can be 100\% fictional and the player is encouraged to make it up on the spot. For one event the laws of the universe conform to this outdated theory, after which the Science Journal's publisher issues a retraction. No damage or repairs caused by this journal persist after the event has been resolved, but anything avoided during that event is still avoided.", # (f)string
  256. "reusable": False, # boolean
  257. "cursed": False # boolean
  258. },
  259. {
  260. "id": 36, # int
  261. "name": "Gox's Illustrated Manual of Physical Exertions", # (f)string
  262. "description": "Once per nap, the wielder of this book may add 2 points to the target number of any uncontested Body roll, or 1 point to the target number of a contested Body roll. If given to another character, that character must take a nap before this item can be used.", # (f)string
  263. "reusable": True, # boolean
  264. "cursed": False # boolean
  265. },
  266. # {
  267. # "id": 37, # int
  268. # "name": "", # (f)string
  269. # "description": "", # (f)string
  270. # "reusable": False, # boolean
  271. # "cursed": False # boolean
  272. # },
  273. # {
  274. # "id": 38, # int
  275. # "name": "", # (f)string
  276. # "description": "", # (f)string
  277. # "reusable": False, # boolean
  278. # "cursed": False # boolean
  279. # },
  280. # {
  281. # "id": 39, # int
  282. # "name": "", # (f)string
  283. # "description": "", # (f)string
  284. # "reusable": False, # boolean
  285. # "cursed": False # boolean
  286. # },
  287. # {
  288. # "id": 40, # int
  289. # "name": "", # (f)string
  290. # "description": "", # (f)string
  291. # "reusable": False, # boolean
  292. # "cursed": False # boolean
  293. # },
  294. # {
  295. # "id": 41, # int
  296. # "name": "", # (f)string
  297. # "description": "", # (f)string
  298. # "reusable": False, # boolean
  299. # "cursed": False # boolean
  300. # },
  301. # {
  302. # "id": 42, # int
  303. # "name": "", # (f)string
  304. # "description": "", # (f)string
  305. # "reusable": False, # boolean
  306. # "cursed": False # boolean
  307. # },
  308. # {
  309. # "id": 43, # int
  310. # "name": "", # (f)string
  311. # "description": "", # (f)string
  312. # "reusable": False, # boolean
  313. # "cursed": False # boolean
  314. # },
  315. # {
  316. # "id": 44, # int
  317. # "name": "", # (f)string
  318. # "description": "", # (f)string
  319. # "reusable": False, # boolean
  320. # "cursed": False # boolean
  321. # },
  322. # {
  323. # "id": 45, # int
  324. # "name": "", # (f)string
  325. # "description": "", # (f)string
  326. # "reusable": False, # boolean
  327. # "cursed": False # boolean
  328. # },
  329. # {
  330. # "id": 46, # int
  331. # "name": "", # (f)string
  332. # "description": "", # (f)string
  333. # "reusable": False, # boolean
  334. # "cursed": False # boolean
  335. # },
  336. # {
  337. # "id": 47, # int
  338. # "name": "", # (f)string
  339. # "description": "", # (f)string
  340. # "reusable": False, # boolean
  341. # "cursed": False # boolean
  342. # },
  343. # {
  344. # "id": 48, # int
  345. # "name": "", # (f)string
  346. # "description": "", # (f)string
  347. # "reusable": False, # boolean
  348. # "cursed": False # boolean
  349. # },
  350. # {
  351. # "id": 49, # int
  352. # "name": "", # (f)string
  353. # "description": "", # (f)string
  354. # "reusable": False, # boolean
  355. # "cursed": False # boolean
  356. # },
  357. # {
  358. # "id": 50, # int
  359. # "name": "", # (f)string
  360. # "description": "", # (f)string
  361. # "reusable": False, # boolean
  362. # "cursed": False # boolean
  363. # },
  364. # {
  365. # "id": 51, # int
  366. # "name": "", # (f)string
  367. # "description": "", # (f)string
  368. # "reusable": False, # boolean
  369. # "cursed": False # boolean
  370. # },
  371. # {
  372. # "id": 52, # int
  373. # "name": "", # (f)string
  374. # "description": "", # (f)string
  375. # "reusable": False, # boolean
  376. # "cursed": False # boolean
  377. # },
  378. # {
  379. # "id": 53, # int
  380. # "name": "", # (f)string
  381. # "description": "", # (f)string
  382. # "reusable": False, # boolean
  383. # "cursed": False # boolean
  384. # },
  385. # {
  386. # "id": 54, # int
  387. # "name": "", # (f)string
  388. # "description": "", # (f)string
  389. # "reusable": False, # boolean
  390. # "cursed": False # boolean
  391. # },
  392. # {
  393. # "id": 55, # int
  394. # "name": "", # (f)string
  395. # "description": "", # (f)string
  396. # "reusable": False, # boolean
  397. # "cursed": False # boolean
  398. # },
  399. # {
  400. # "id": 56, # int
  401. # "name": "", # (f)string
  402. # "description": "", # (f)string
  403. # "reusable": False, # boolean
  404. # "cursed": False # boolean
  405. # },
  406. # {
  407. # "id": 57, # int
  408. # "name": "", # (f)string
  409. # "description": "", # (f)string
  410. # "reusable": False, # boolean
  411. # "cursed": False # boolean
  412. # },
  413. # {
  414. # "id": 58, # int
  415. # "name": "", # (f)string
  416. # "description": "", # (f)string
  417. # "reusable": False, # boolean
  418. # "cursed": False # boolean
  419. # },
  420. # {
  421. # "id": 59, # int
  422. # "name": "", # (f)string
  423. # "description": "", # (f)string
  424. # "reusable": False, # boolean
  425. # "cursed": False # boolean
  426. # },
  427. # {
  428. # "id": 60, # int
  429. # "name": "", # (f)string
  430. # "description": "", # (f)string
  431. # "reusable": False, # boolean
  432. # "cursed": False # boolean
  433. # },
  434. # {
  435. # "id": 61, # int
  436. # "name": "", # (f)string
  437. # "description": "", # (f)string
  438. # "reusable": False, # boolean
  439. # "cursed": False # boolean
  440. # },
  441. # {
  442. # "id": 62, # int
  443. # "name": "", # (f)string
  444. # "description": "", # (f)string
  445. # "reusable": False, # boolean
  446. # "cursed": False # boolean
  447. # },
  448. # {
  449. # "id": 63, # int
  450. # "name": "", # (f)string
  451. # "description": "", # (f)string
  452. # "reusable": False, # boolean
  453. # "cursed": False # boolean
  454. # },
  455. # {
  456. # "id": 64, # int
  457. # "name": "", # (f)string
  458. # "description": "", # (f)string
  459. # "reusable": False, # boolean
  460. # "cursed": False # boolean
  461. # },
  462. # {
  463. # "id": 65, # int
  464. # "name": "", # (f)string
  465. # "description": "", # (f)string
  466. # "reusable": False, # boolean
  467. # "cursed": False # boolean
  468. # },
  469. # {
  470. # "id": 66, # int
  471. # "name": "", # (f)string
  472. # "description": "", # (f)string
  473. # "reusable": False, # boolean
  474. # "cursed": False # boolean
  475. # },
  476. # {
  477. # "id": 67, # int
  478. # "name": "", # (f)string
  479. # "description": "", # (f)string
  480. # "reusable": False, # boolean
  481. # "cursed": False # boolean
  482. # },
  483. # {
  484. # "id": 68, # int
  485. # "name": "", # (f)string
  486. # "description": "", # (f)string
  487. # "reusable": False, # boolean
  488. # "cursed": False # boolean
  489. # },
  490. # {
  491. # "id": 69, # int
  492. # "name": "", # (f)string
  493. # "description": "", # (f)string
  494. # "reusable": False, # boolean
  495. # "cursed": False # boolean
  496. # },
  497. # {
  498. # "id": 70, # int
  499. # "name": "", # (f)string
  500. # "description": "", # (f)string
  501. # "reusable": False, # boolean
  502. # "cursed": False # boolean
  503. # },
  504. # {
  505. # "id": 71, # int
  506. # "name": "", # (f)string
  507. # "description": "", # (f)string
  508. # "reusable": False, # boolean
  509. # "cursed": False # boolean
  510. # },
  511. # {
  512. # "id": 72, # int
  513. # "name": "", # (f)string
  514. # "description": "", # (f)string
  515. # "reusable": False, # boolean
  516. # "cursed": False # boolean
  517. # },
  518. # {
  519. # "id": 73, # int
  520. # "name": "", # (f)string
  521. # "description": "", # (f)string
  522. # "reusable": False, # boolean
  523. # "cursed": False # boolean
  524. # },
  525. # {
  526. # "id": 74, # int
  527. # "name": "", # (f)string
  528. # "description": "", # (f)string
  529. # "reusable": False, # boolean
  530. # "cursed": False # boolean
  531. # },
  532. # {
  533. # "id": 75, # int
  534. # "name": "", # (f)string
  535. # "description": "", # (f)string
  536. # "reusable": False, # boolean
  537. # "cursed": False # boolean
  538. # },
  539. # {
  540. # "id": 76, # int
  541. # "name": "", # (f)string
  542. # "description": "", # (f)string
  543. # "reusable": False, # boolean
  544. # "cursed": False # boolean
  545. # },
  546. # {
  547. # "id": 77, # int
  548. # "name": "", # (f)string
  549. # "description": "", # (f)string
  550. # "reusable": False, # boolean
  551. # "cursed": False # boolean
  552. # },
  553. # {
  554. # "id": 78, # int
  555. # "name": "", # (f)string
  556. # "description": "", # (f)string
  557. # "reusable": False, # boolean
  558. # "cursed": False # boolean
  559. # },
  560. # {
  561. # "id": 79, # int
  562. # "name": "", # (f)string
  563. # "description": "", # (f)string
  564. # "reusable": False, # boolean
  565. # "cursed": False # boolean
  566. # },
  567. # {
  568. # "id": 80, # int
  569. # "name": "", # (f)string
  570. # "description": "", # (f)string
  571. # "reusable": False, # boolean
  572. # "cursed": False # boolean
  573. # },
  574. # {
  575. # "id": 81, # int
  576. # "name": "", # (f)string
  577. # "description": "", # (f)string
  578. # "reusable": False, # boolean
  579. # "cursed": False # boolean
  580. # },
  581. # {
  582. # "id": 82, # int
  583. # "name": "", # (f)string
  584. # "description": "", # (f)string
  585. # "reusable": False, # boolean
  586. # "cursed": False # boolean
  587. # },
  588. # {
  589. # "id": 83, # int
  590. # "name": "", # (f)string
  591. # "description": "", # (f)string
  592. # "reusable": False, # boolean
  593. # "cursed": False # boolean
  594. # },
  595. # {
  596. # "id": 84, # int
  597. # "name": "", # (f)string
  598. # "description": "", # (f)string
  599. # "reusable": False, # boolean
  600. # "cursed": False # boolean
  601. # },
  602. # {
  603. # "id": 85, # int
  604. # "name": "", # (f)string
  605. # "description": "", # (f)string
  606. # "reusable": False, # boolean
  607. # "cursed": False # boolean
  608. # },
  609. # {
  610. # "id": 86, # int
  611. # "name": "", # (f)string
  612. # "description": "", # (f)string
  613. # "reusable": False, # boolean
  614. # "cursed": False # boolean
  615. # },
  616. # {
  617. # "id": 87, # int
  618. # "name": "", # (f)string
  619. # "description": "", # (f)string
  620. # "reusable": False, # boolean
  621. # "cursed": False # boolean
  622. # },
  623. # {
  624. # "id": 88, # int
  625. # "name": "", # (f)string
  626. # "description": "", # (f)string
  627. # "reusable": False, # boolean
  628. # "cursed": False # boolean
  629. # },
  630. # {
  631. # "id": 89, # int
  632. # "name": "", # (f)string
  633. # "description": "", # (f)string
  634. # "reusable": False, # boolean
  635. # "cursed": False # boolean
  636. # },
  637. # {
  638. # "id": 90, # int
  639. # "name": "", # (f)string
  640. # "description": "", # (f)string
  641. # "reusable": False, # boolean
  642. # "cursed": False # boolean
  643. # },
  644. # {
  645. # "id": 91, # int
  646. # "name": "", # (f)string
  647. # "description": "", # (f)string
  648. # "reusable": False, # boolean
  649. # "cursed": False # boolean
  650. # },
  651. # {
  652. # "id": 92, # int
  653. # "name": "", # (f)string
  654. # "description": "", # (f)string
  655. # "reusable": False, # boolean
  656. # "cursed": False # boolean
  657. # },
  658. # {
  659. # "id": 93, # int
  660. # "name": "", # (f)string
  661. # "description": "", # (f)string
  662. # "reusable": False, # boolean
  663. # "cursed": False # boolean
  664. # },
  665. # {
  666. # "id": 94, # int
  667. # "name": "", # (f)string
  668. # "description": "", # (f)string
  669. # "reusable": False, # boolean
  670. # "cursed": False # boolean
  671. # },
  672. # {
  673. # "id": 95, # int
  674. # "name": "", # (f)string
  675. # "description": "", # (f)string
  676. # "reusable": False, # boolean
  677. # "cursed": False # boolean
  678. # },
  679. # {
  680. # "id": 96, # int
  681. # "name": "", # (f)string
  682. # "description": "", # (f)string
  683. # "reusable": False, # boolean
  684. # "cursed": False # boolean
  685. # },
  686. # {
  687. # "id": 97, # int
  688. # "name": "", # (f)string
  689. # "description": "", # (f)string
  690. # "reusable": False, # boolean
  691. # "cursed": False # boolean
  692. # },
  693. # {
  694. # "id": 98, # int
  695. # "name": "", # (f)string
  696. # "description": "", # (f)string
  697. # "reusable": False, # boolean
  698. # "cursed": False # boolean
  699. # },
  700. # {
  701. # "id": 99, # int
  702. # "name": "", # (f)string
  703. # "description": "", # (f)string
  704. # "reusable": False, # boolean
  705. # "cursed": False # boolean
  706. # },
  707. # {
  708. # "id": 100, # int
  709. # "name": "", # (f)string
  710. # "description": "", # (f)string
  711. # "reusable": False, # boolean
  712. # "cursed": False # boolean
  713. # },
  714. # {
  715. # "id": 101, # int
  716. # "name": "", # (f)string
  717. # "description": "", # (f)string
  718. # "reusable": False, # boolean
  719. # "cursed": False # boolean
  720. # },
  721. # {
  722. # "id": 102, # int
  723. # "name": "", # (f)string
  724. # "description": "", # (f)string
  725. # "reusable": False, # boolean
  726. # "cursed": False # boolean
  727. # },
  728. # {
  729. # "id": 103, # int
  730. # "name": "", # (f)string
  731. # "description": "", # (f)string
  732. # "reusable": False, # boolean
  733. # "cursed": False # boolean
  734. # },
  735. # {
  736. # "id": 104, # int
  737. # "name": "", # (f)string
  738. # "description": "", # (f)string
  739. # "reusable": False, # boolean
  740. # "cursed": False # boolean
  741. # },
  742. # {
  743. # "id": 105, # int
  744. # "name": "", # (f)string
  745. # "description": "", # (f)string
  746. # "reusable": False, # boolean
  747. # "cursed": False # boolean
  748. # },
  749. # {
  750. # "id": 106, # int
  751. # "name": "", # (f)string
  752. # "description": "", # (f)string
  753. # "reusable": False, # boolean
  754. # "cursed": False # boolean
  755. # },
  756. # {
  757. # "id": 107, # int
  758. # "name": "", # (f)string
  759. # "description": "", # (f)string
  760. # "reusable": False, # boolean
  761. # "cursed": False # boolean
  762. # },
  763. # {
  764. # "id": 108, # int
  765. # "name": "", # (f)string
  766. # "description": "", # (f)string
  767. # "reusable": False, # boolean
  768. # "cursed": False # boolean
  769. # },
  770. # {
  771. # "id": 109, # int
  772. # "name": "", # (f)string
  773. # "description": "", # (f)string
  774. # "reusable": False, # boolean
  775. # "cursed": False # boolean
  776. # },
  777. # {
  778. # "id": 110, # int
  779. # "name": "", # (f)string
  780. # "description": "", # (f)string
  781. # "reusable": False, # boolean
  782. # "cursed": False # boolean
  783. # },
  784. # {
  785. # "id": 111, # int
  786. # "name": "", # (f)string
  787. # "description": "", # (f)string
  788. # "reusable": False, # boolean
  789. # "cursed": False # boolean
  790. # },
  791. # {
  792. # "id": 112, # int
  793. # "name": "", # (f)string
  794. # "description": "", # (f)string
  795. # "reusable": False, # boolean
  796. # "cursed": False # boolean
  797. # },
  798. # {
  799. # "id": 113, # int
  800. # "name": "", # (f)string
  801. # "description": "", # (f)string
  802. # "reusable": False, # boolean
  803. # "cursed": False # boolean
  804. # },
  805. {
  806. "id": 114, # int
  807. "name": "Bard's Lute", # (f)string
  808. "description": "Once per nap, you can use the Lute to grant yourself either flying or invisibility for one minute.", # (f)string
  809. "reusable": True, # boolean
  810. "cursed": False # boolean
  811. },
  812. {
  813. "id": 115, # int
  814. "name": "Barbarian's Axe", # (f)string
  815. "description": "You get +1 Body damage to any successful or mixed-success attack while wielding this weapon.", # (f)string
  816. "reusable": True, # boolean
  817. "cursed": False # boolean
  818. },
  819. {
  820. "id": 116, # int
  821. "name": "Evasive Ring", # (f)string
  822. "description": "You can reduce any successful Body attack against you to a mixed success while you wear this ring.", # (f)string
  823. "reusable": True, # boolean
  824. "cursed": False # boolean
  825. },
  826. {
  827. "id": 117, # int
  828. "name": "Seven-League Boots", # (f)string
  829. "description": "While wearing these boots, you can move twice as far as you normally could.", # (f)string
  830. "reusable": True, # boolean
  831. "cursed": False # boolean
  832. },
  833. {
  834. "id": 118, # int
  835. "name": "Bard's Lyre", # (f)string
  836. "description": "Twice per nap, you can use the Lyre to grant yourself either flying or invisibility for one minute, or you can create a wall of fire or of wind that lasts for one minute and extends 30 feet in whatever straight line you choose.", # (f)string
  837. "reusable": True, # boolean
  838. "cursed": False # boolean
  839. },
  840. {
  841. "id": 119, # int
  842. "name": "Dragon Scale Mail", # (f)string
  843. "description": "Once per nap, you can reduce any successful Body attack against you to a failure, OR three times per nap, you can reduce a mixed success to a failure. If you use this to reduce a mixed success to a failure, you can't use the first feature until you've taken a nap.", # (f)string
  844. "reusable": True, # boolean
  845. "cursed": False # boolean
  846. },
  847. {
  848. "id": 120, # int
  849. "name": "Shifting Cloak", # (f)string
  850. "description": "Once per nap, you can reduce any successful Body attack against you to a failure. In addition, whether or not you've used this ability, you subtract 1 from any roll you make to avoid a Body attack.", # (f)string
  851. "reusable": True, # boolean
  852. "cursed": False # boolean
  853. },
  854. {
  855. "id": 121, # int
  856. "name": "Holy Mace", # (f)string
  857. "description": "You deal 1 additional Body damage when you wield this weapon. Once per nap, if you strike an undead with this weapon, they must immediately make an Order+Body check - after they take the damage! - or immediately be destroyed.", # (f)string
  858. "reusable": False, # boolean
  859. "cursed": False # boolean
  860. },
  861. {
  862. "id": 122, # int
  863. "name": "Winged Cloak", # (f)string
  864. "description": "While wearing this cloak, you move half again as far as you normally could, and twice per nap, you can grant yourself the ability to fly for one minute.", # (f)string
  865. "reusable": False, # boolean
  866. "cursed": False # boolean
  867. },
  868. {
  869. "id": 123,
  870. "name": "Shortbow of the Watch",
  871. "description": "Choose a single target. You get +1 to Body damage against that target and +1 to Brain rolls to track that target. Activating this is not an Event.",
  872. "reusable": True
  873. },
  874. {
  875. "id": 124,
  876. "name": "Hammer of Thunderbolts",
  877. "description": "You get +1 Body damage on any successful or partially successful attack with this weapon. As an Event, you can also throw it at a target or surface, which will stun any creature within 30 feet of the impact for 1d6 Events.",
  878. "reusable": True
  879. },
  880. {
  881. "id": 125,
  882. "name": "Eldritch Cannon",
  883. "description": "You conjure a small, semi-autonomous and semi-intelligent cannon that can produce a single spell effect of your choice as an Event.",
  884. "reusable": True
  885. },
  886. {
  887. "id": 126,
  888. "name": "Staff of Lightning",
  889. "description": "As an Event, create a lightning bolt from the tip of the staff that travels 30 feet in a straight line and deals 2 Body damage to any target in its path.",
  890. "reusable": True
  891. },
  892. {
  893. "id": 127,
  894. "name": "Voyager Staff",
  895. "description": "Any spell you cast has +1 damage. In addition, as an Event, you can move up to 50 feet in any direction - even through walls and other solid surfaces.",
  896. "reusable": True
  897. }]