Git Product home page Git Product logo

theoracle's Introduction

About

TheOracle2 is a complete rework of TheOracle using new discord bot features, and more integrated data features.

Joining the bot to your discord server

To add TheOracle to a discord server click this link and then select the server you wish to add the bot to.

If you need a discord server for your game you can use this link to get started with a preexisting discord server template.

Getting started with bot commands

  1. If you want to get content for a game other than Ironsworn (Starforged or Sundering Isles) set your game with /set-game
  2. Create a character with /player-character create
  3. Add some assets with /asset
  4. Roll some actions with /roll pc-action
  5. Get the results from an oracle with /oracle
  6. View all the commands available in the bot by typing / and scrolling though the options (if you have a lot of bots joined to your server you can click TheOracle bot's icon to show only its commands)

Other features

Recreate message:

You can recreate a message, similar to the old โฌ reaction method by right clicking a bot message and selecting recreate message from the apps menu.

image

Running the bot yourself

note: This is for people that want to change the source code and run their own instance of the bot. It's not something most users will want/need to do.

  • Install PostgreSQL Server
  • Create a new database and db user for the bot to use
  • Create a database settings file named dbSettings.json so the bot knows how to connect. It should have a structure similar to this:
{
    "dbConnectionString":"Host=localhost;Port=5432;Database=NameOfDbYouCreated;Username=BotDbUser",
    "dbConnectionStringWithPort":"host=127.0.0.1 port=5432 dbname=NameOfDbYouCreated connect_timeout=10 user=BotDbUser",
    "dbConnectionStringOff":"postgresql://BotDbUser@localhost:5432/NameOfDbYouCreated",
    "dbPassword":"YourDbUserPassword"
}
  • Get a discord bot token from the discord developer portal
  • Start the bot server, paste your token when prompted. (If you need to change the token it's stored in the token.json file in your server's folder)

Privacy

TheOracle bot doesn't store any user data of any kind, except for commands that are explicitly handled by the bot. Any data collected will not be sold or used for anything other than further developing and improvement of the bot.

theoracle's People

Contributors

rsek avatar xenotropicdev avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

theoracle's Issues

support for Threats (Delve)

ref: p. 151, Ironsworn: Delve

information needed: Threat name, threat's goal, 10-box track (boxes are either filled or empty, not ticked like progress boxes are), associated vow

i think the best way to track this would be to integrate it into the progress track module. having it consist of three fields means it would line up nicely with the progress track (on desktop, anyways).

Screen Shot 2020-11-13 at 12 49 26 PM

this prototype uses ๐ŸŸฉ :green_square and โŽ :negative_squared_cross_mark: like the prototype for scene challenges (#30), but under normal rules a scene challenge can't also have a Threat attached to it anyways (since they only attach to Vows), so we ought to be fine.

like the countdown track proposal in #30, menace might be incremented/decremented with the same emoji used for the boxes' off/on states.

these threat fields should probably remain hidden until a specific command or emoji react is used. some candidates:

  • โณ :hourglass_flowing_sand: (has conceptual overlap with scene challenges (#30), though, which would be an emoji react on the same embed, so we might want something more obviously, er, threatening)
  • โš ๏ธ :warning: (logical enough, but this is a candidate as a react for rolling theme/domain dangers, so we might want to avoid overlap)
  • ๐Ÿ†š :vs:
  • ๐Ÿ’ฃ :bomb: (in the sense of a ticking time bomb)
  • ๐Ÿฆน :supervillain: (perhaps a bit silly, but i have to admit the emoji does give off villain energy)
  • ๐Ÿ‘ฟ :imp:, ๐Ÿ˜ˆ :smiling_imp:(ditto)

alternately/additionally, !progress might include arguments for the threat and its parameters.

rolling against the progress track could include some reminder text when a threat is active (ref: p. 159)

Screen Shot 2020-11-13 at 1 25 31 PM

Screen Shot 2020-11-13 at 1 31 20 PM

Screen Shot 2020-11-13 at 1 29 26 PM

this reminder text is longer than most of the similar text that the bot outputs, but it might warrant it in this case. rationale:

  • it will only appear occasionally, so it's unlikely to clutter chat too much
  • there's no current in-bot reference for this info, which isn't included in the move text (though that won't be a problem once a more complete rules reference is implemented)
  • narratively speaking, resolving a threat is probably a big deal, and i suspect 'big deal' situations encourage people to take care with their resolution... which means they're more likely to want to look up precisely what's supposed to happen instead of taking their best guess and moving along. if this is the case, we'd be saving people a step in many use-cases

Alternately, it could be compressed down to something like The threat achieves their goal! See p. 159 of Ironsworn: Delve for more information on resolving a threat., or including the equivalent command once rules reference is expanded.

planet embeds: roll planetside complication/opportunity

analogous to danger/feature on delve site embeds. suggested emoji reacts: ๐Ÿ€ for opportunity, and โš ๏ธ for complication.

the logic could probably go something like:

  • if the planet's Life is unset, generate a Life result and set it (or return an appropriate error message)
  • if Life is "None" or "Extinct", use the Lifeless Planetside Opportunity/Lifeless Planetside Complication oracles
  • if Life is "Simple", "Sparse", "Diverse", "Bountiful", or "Overrun", use the Lifebearing Planetside Opportunity / Lifebearing Planetside Complication oracles.
  • if Life is some other value (maybe due to someone editing the field, or some typo ive left in the json), return an appropriate error message

add theme/domain info to !ref command

useful to have in general; also provides some delve support in the mean time, while remaining useful even after more full-featured delve embeds are implemented

mockups with two approaches to output:

Screen Shot 2020-11-11 at 5 59 50 AM

Screen Shot 2020-11-11 at 6 00 06 AM

on one hand, the long form description could be a bit much. on the other hand, maybe it'd be possible to gate it behind a ๐Ÿ” react or something (and perhaps add a react that does the reverse to collapse the description back to the one-liner from the card)? personally, i'd find it useful (if i'm looking for ideas i often go to the long-form descriptions to see what they offer), but i'm not sure how often others would refer to them.

but, then again, if referring to it was as easy as typing a command (and possibly clicking an emoji), maybe more people would refer to the long description? like, that's definitely quicker than paging through the book, or even pulling up the right page via bookmarks in the pdf. i reckon the bot has a lot of potential as a reference tool on those grounds alone!

anyways. i don't think i included the long-form description in the data (and i'm not 100% sure i included the page references, for that matter), but that wouldn't take very long to fix.

Request: Glossary/add'l rules lookup

concise explanation of rules elements not covered in the moves, with page references for easier lookup of more detailed information, whether as some sort of glossary or folded into the reference command.

Ironsworn's index and glossary are probably good places to start with deciding what email to compile.

challenges (w/r/t the rules data)

  • 2000 character limit (use content from Lodestar, which is already concise for use as quick reference?)
  • deciding on logical search terms, aliases
  • structuring categories, relationships between rules terms (e.g. "see also...")

creature card - initial field population + add'l first look results

currently there's no emoji react to add additional 'first look' results if there's fewer than 3, and the revealed aspects don't seem to be capped at 3.

my current opinion after playing the game with the bot more is that first look should be initially populated to the minimum (2), rather than the bot picking 2-3 for me, because the 'discovery experience' with oracles that's so central to starforged feels better to me if i'm making a decision to roll that third first look (and, sometimes, two is more than enough). other people might vary on that, though.

initial: the number of results that are automatically populated.
max: the maximum number of fields of this type

  • First Look ๐Ÿ‘€ :eyes: (initial = 2, max = 3)
  • Revealed Aspect ๐Ÿฆ‹ :butterfly: (initial = 0, max = 3)
    • there's probably a good case for making the emoji ๐Ÿ” :mag:, following the precedent of "closer look"-type results for NPCs, planets, etc.

ironsworn foe data for foe reference

here's the basic format i'm using:

{
  "Foes": [
    {
      "Category": "Ironlanders",
      "Description": "Ironlanders are the human inhabitants of these lands. Unless your story emphasizes adventures well outside of the settled regions, the majority of your interactions will be with fellow Ironlanders.\nThis section covers a few broad categories of Ironlanders. They are not representative of the variety of people and cultures in these lands. When you are forced to fight an Ironlander and need to determine their rank, you can _Ask the Oracle_, or follow these guidelines:\nโ€ข A common citizen or brute is **troublesome**.\nโ€ข A trained warrior is **dangerous**.\nโ€ข A powerful or veteran warrior is **formidable**.",
      "Foes": [{
          "Name": "Raider",
          "Rank": "Dangerous",
          "Source": "Ironsworn",
          "Page": "140",
          "Features": [
            "Geared for war",
            "Battle fervor"
          ],
          "Drives": [
            "What is theirs will be ours",
            "Stand with my kin",
            "Die a glorious death"
          ],
          "Tactics": [
            "Intimidate",
            "Shield Wall",
            "Burn it Down"
          ],
          "Description": "Raiders survive by seizing what they need from others. Our grain. Our meat. Our animals. Our iron. Theyโ€™ll take it all, and leave us facing the long winter with nothing to sustain us but prayers to indifferent gods.",
          "Quest": "You were raised as a raider, born to battle, but long ago left that life. Troubled by your past, you vow to wipe this powerful clan from the Ironlands. How can you defeat them? What will happen when you must face your former shield-kin?",
          "Truth": "A large raider clan is known and feared throughout the Ironlands. What is it called? Who leads it?"
        }
      ]
    }
  ]
}

i'm not sure we have a need for Quest or Truth, but it could be useful for someone else once i get around to putting together a generic ironsworn data repo, and it's not that much more work to add. heck, Quest might be useful to pull from to as a broad quest prompt feature

Player cards: Remove previous stat selection when a new stat is selected

If I select multiple Player Card stats and use one of the arrow reactions it gives me an error message ("Too many stats are active, please disable all but one.")

It would be cleaner for it to remove the previous selection. For example, selecting Health then Spirit would remove the user's Health reaction so only Spirit remains.

Request: Asset Lookup

it'd be handy to be able to reference Asset text. i'll happily volunteer to put the asset data together.

the most polished version of this feature would include the icons, but that's inessential, and i'd probably want to figure out a way to extract them from the pdf en masse first.

screencap of Xeno's mockup of the Asset lookup

!asset command sometimes parses asset name in unexpected ways

in this example it seems to be grabbing the 'ace' from 'Space' rather than assuming 'Devotant' is the name asset in question. haven't had a chance to look for other examples yet.

maybe it should favour the first word (or the first 2-3 words) when trying to resolve multiple possible names?

Screen Shot 2020-12-28 at 1 13 10 AM

Screen Shot 2020-12-28 at 1 12 21 AM

Request: interactivity/emoji reacts for NPC posts

For Starforged:

  • NPC First Look suggests generating 2-3, so throw a second First Look in there by default
  • emoji reacts to add add'l First Look (max 3), Character Aspect (max 3)
  • Character Goal behind spoiler tag (since it may or may not be known at first)
  • Disposition behind spoiler tag (since it's analogous to Settlement Initial Contact)

For Ironsworn:

  • emoji react to add add'l Descriptor
    • minimum number: might be worth polling the channel about. my gut feeling here would be 2.
    • maximum number: 4ish? more? between first look and character aspect, starforged npcs cap out at 6 descriptors!
  • Character Goal behind spoiler tag (as above)
  • Disposition behind spoiler tag (as above)
  • Character Activity (from Delve), probably as spoiler text (if only because selecting an emoji to represent 'activity' may not be possible)
  • would it be possible to add additional arguments (or interactivity) to get an elf/varou/etc NPC? on the other hand, it's only one extra command to generate a name then specify it as the new NPC

planet cards: give user feedback of vital world Diversity level

Screen Shot 2020-12-16 at 1 14 28 PM

to make text searching this easier:

  • the "Diversity" result should populate a field automatically when a Vital planet is generated, and display the full text of the result so it's clear what's going on, e.g. "Simple (two biomes)", "Diverse (three biomes)", "Complex (four biomes)", "Garden world (five+ biomes)"
  • the maximum number of Biome fields addable via emoji should then be set much as it is currently, though no Biomes should be populated by default
    • for "Garden Worlds" specifically, it probably makes sense to just leave them uncapped (or, well, capped at 20, which is how many things are on the biomes table) in case people really want to dig in to that "five+"

Request: page numbers for Move reference

presumably this would take the form of another property in the json file.

i might word the embed's footer output as something like: "More information: p. ###", if only so the bot subtly reminds people there's much more detailed guidance available if needed; i figure if that can slip my mind when looking at a hardcopy move sheet, the same could happen to someone using the digital equivalent.

move categories might also warrant having page references. e.g. the combat category having a page reference number for the start of that section.

cards: make rerolling duplicates the default behaviour

my understanding is this is the designer intent of the oracle tables for planets, creatures, etc is to reroll duplicate results (i can dig up the discord messages from shawn to this effect if needed), so the default for cards (or perhaps just new/unset channels) should be to reroll duplicates.

rolled Action Score should be capped at 10

discussed on the SF playtest discord, but noting it here on the off chance someone else comes looking for it

page 8, IS core book:
Screen Shot 2020-12-27 at 4 45 44 PM

page 18, SF playtest rules (Chapter-1-The-Basics-Ironsworn-Starforged-121320.pdf):
Screen Shot 2020-12-27 at 4 49 32 PM

pref with some kind of feedback message so it's clear to ppl that this is what's happening, and that it's supposed to happen.

legacy/xp tracking for Starforged PC embed

Screen Shot 2020-12-26 at 6 57 37 PM

this is another "would be convenient but not immediately necessary" one, similar to #43 . it might also create enough differences between the IS/SF to justify having, say, an interactive post to ask which profile the user wants: ironsworn or starforged.

effectively legacy tracks are epic tracks; their rank doesn't need to be specified, which lets us cut down on some clutter:

Screen Shot 2020-12-26 at 7 11 30 PM

next to a fully generated planet card, that's not too bad, honestly.

as far as tracking XP...

the current SF rules give a flat 2xp per filled box on the legacy tracks (or 1xp per filled box for those PCs progressing past the initial 10 boxes).

Screen Shot 2020-12-26 at 7 01 29 PM

from that, the PC's total earned XP could be derived and displayed, perhaps with an indicator of the XP they've spent, too.

Screen Shot 2020-12-26 at 7 31 33 PM

a tickbox labelled with +10 is used on the SF character sheet to indicate the track has been filled previously, so i've used something similar here. when rolling the challenge dice against a progress track that has exceeded 10, the action score is treated as though it were 10 (probably similar to the similar rule capping rolled action scores)

and all that seems straightforward, but actual interacting with them is another problem.

if we were still marking 1-5 ticks on legacy tracks at once, it'd probably be fine just to have them use the single increment/decrement arrows used for other stats... but the current iteration of starforged (which reminds me, i gotta update the move/asset data to reflect it ๐Ÿ˜… ) changes the amount of Legacy track progress marked per completed vow/bond/expedition:

Screen Shot 2020-12-26 at 7 50 25 PM

Screen Shot 2020-12-26 at 7 50 57 PM

Screen Shot 2020-12-26 at 7 53 18 PM

which means a total of 8/12 clicks on a resolving an Extreme/Epic task. oof.

admittedly, marking a legacy track is way less common than manipulating any other PC stat, and i'd wager that the majority of tasks are Troublesome, Dangerous, or Formidable, so it probably won't come up that often. and perhaps there's something satisfying about marking that many ticks at once when you finally overcome that Epic vow... but it could still really suck for ppl for whom repetitive clicking is difficult due to mobility concerns, or people who get distracted and lose count with some frequency (like me).

if that seems like it'd clutter things up with too many emoji reacts, it might be possible to make incrementing a legacy track an interactive post of some kind. perhaps a single emoji react that, when selected, prompts the user for the rank/number of ticks (there's a couple assets that add ticks - not progress - to an additional track, e.g. Diplomat). this level of interactivity would be onerous for adjusting something like health or momentum, but legacy tracks come up much less frequency.

legacy tracks + automatic xp calculation for PCs

i'd like to take a crack at these, building on the Progress classes established in my Clocks PR. Starforged's only source of XP is via legacies, so total XP earned could be calculated from that.

interactivity required per track (buttons/menu options):

  • progress roll vs. legacy track
  • 5 Mark Legacy elements (to cover each challenge rank)
  • (optional) "Epic+" mark legacy, to cover the various assets that allow a player to mark a reward 1 rank higher
  • at least one way to clear progress. i'm thinking two amounts: 1 box and 1 tick.

that means there needs to be at least 21 interactive elements to cover all standard legacy functions. for incrementing/decrementing, that could be handled by using a select menu to pick which legacy track to manipulate + how to manipulate it, then an ephemeral follow-up with buttons to pick the amount.

questions to answer:

  • how should it be noted in the database? all that would really be necessary is the number of ticks on a track; unlike regular progress tracks, legacy can accumulate more than 40 ticks.
  • how should they be displayed on the character widget? would some sort of "paging" mechanism make sense?
  • how should Legacy over 10 boxes be conveyed?

Empath asset always has the second option checked.

Steps to Reproduce

  • With the bot in server, run !Asset Empath
  • Take a look at the result

Expected behaviour
The first option only is checked, with reacts for parts 2 and 3.

Current behaviour
Option 1 and 2 are checked, and there's only a react for 3.

Tried deleting the response and re-running the command, got the same result.

image

Request: Ironsworn settlement generation

Ironsworn has much looser guidelines for settlement generation and fewer oracles to do it with, but i reckon something like:

  • name
  • location descriptor (i'd say 2 of them to start? this may just be because after starforged settlements, one descriptor doesn't seem like much!)
  • settlement trouble (behind a spoiler tag)
  • emoji reacts to add oracle results from: Location Descriptor, definitely; maybe even one for Oracle 4: Location (rationale: most settlements are going to be built near a feature of some kind, be it a conveyance, body of water, natural resource, etc)

looking at this i start to wonder wonder what oracles could be backported from starforged (Authority in particular - maybe it'd work as an emoji react? hm), but that's definitely a nonstandard use and probably beyond the scope of this project, haha.

delve site embeds: emoji reacts for rolling the "Delve the Depths" weak hit table by attribute

for reference:
Screen Shot 2020-12-27 at 8 05 58 PM

the oracles in question are currently aliased as delve edge, delve shadow, and delve wits

as far as which emoji to use, i'm liking :regional_indicator_e: :regional_indicator_s: :regional_indicator_w:, respectively

the shared shape/color signals these reacts as both separate from the other emoji reacts, and as related to each other, which might make their purpose more discoverable w/o recourse to documentation.

the downside is that they probably wouldn't localize well (unless localization strings were added for emoji, assuming they're not already in the works).

that said, it's entirely possible that more symbolic emoji won't translate well either, as the nuances of some emoji can vary wildly from language to language. but that's probably a point in favour of localizable emoji than any recommendation against the symbolic approach.

  • edge - :runner:
  • shadow - :spy:
  • wits -:brain:

my concern would be that more concrete imagery creates a narrower notion of what those stats mean than something more abstract would, but admittedly, i may just be overthinking it. also, they might be trickier to 'read' at a glance than the initials above.

request: interactive posts for delve sites

from the sounds of things this isn't in the immediate future, but here's some notes on the topic for when the time comes

steps to creating a delve site:

  1. theme selection (with option to randomize)

Screen Shot 2020-11-11 at 4 49 21 AM

  1. domain selection (with option to randomize)
  • there's 12 of these, so it couldn't be done with number emoji alone. it might be possible to give domains representative emoji, though some are more difficult than others to represent
  • ๐Ÿชฆ and ๐Ÿปโ€โ„๏ธ exist on live, just not in the mockup tool

Screen Shot 2020-11-11 at 4 50 11 AM

  1. site name generation as per the site name oracles, which is its own nested table with several components. (even without an interactive post, this might be worth making an embed for - maybe i should open a separate feature request for this specifically)
  2. set site objective
  3. set site rank (with option to randomize)

the delve worksheet includes the following information:

  • site name
  • objective
  • theme
  • domain
  • site rank and progress, plus indicators (light/medium/dark boxes) for the Risk Zones optional rule (p. 54)
    • convey risk zone with text output of suggested risk level, based on site rank + delve progress?
  • denizen matrix
    • this is pretty much ad hoc by the player, as-written; it's useful to have a place to write them down. ultimately it may be best left to the player. i'm not sure there's a way the bot can meaningfully assist in that sort of note-taking
    • that said... i suspect it would be helpful to many people to have the matrix filled out for them. there's a reason i spent so much time building a web-based denizen matrix generator for the purpose, haha. but i suspect that falls outside the scope of the bot.
    • as-is, that generator provides markdown output that can be copy-pasted into discord, and so long as the bot can roll d100 on its own, that's probably not too onerous?
    • if the ability for users to add custom oracles is implemented at some point, i could potentially add bot-friendly output to my matrix generator. i assume that's pretty far down the road, though.
      • that or wait for Perchance to get a proper API and just pull the results directly, but to my knowledge that's TBA and has been for a while ๐Ÿคท
  • a map/notes section (pretty clearly outside the bot's scope)

Screen Shot 2020-11-11 at 4 46 49 AM

possible interactivity for delve site's embed once generated:

  • standard progress functions (mark, roll, etc)
  • roll Feature, ๐Ÿ€ :four_leaf_clover: or ๐Ÿ”ฎ :crystal_ball: (though the latter might be better used on some other function, because it'd be a fun way to evoke the oracle theme)
  • roll Danger, โš ๏ธ :warning:
  • change Theme (occurs on certain Feature results) :regional_indicator_t: :regional_indicator_t:
    • how should this interact with double-theme sites?
  • change Domain (occurs on certain Feature results) :regional_indicator_d: :regional_indicator_d:
    • how should this interact with double-domain sites?
  • "If you are returning to a previously explored site, roll both challenge dice, take the lowest value, and clear that number of progress boxes." doing this manually wouldn't be the end of the world, though.

other concerns:

  • double theme/double domain support (p. 69-70): optional rule and delve recommends against doubling up on both: e.g. ppl should have either 2 domains and 1 theme OR 1 domain and 2 themes)
    • probably not essential, but cool to have; even if it's not implemented until much later, may be worth keeping in mind when working out how single themes/domains function to save some grief on implementing doubles down the road

elective, integrated progress track for NPCs (to track SF bond progress)

obviously this isn't an especially pressing need, since people can just use a normal progress track for this, but i think there's a case to be made for the convenience of tracks being bundled with their relevant embeds.

Screen Shot 2020-12-26 at 6 19 17 PM

alternate version with compact (single field) progress display:

Screen Shot 2020-12-26 at 6 20 42 PM

i figure this should only be displayed after a specific emoji react is hit (:handshake: :handshake:, perhaps), triggering an interactive post for selecting the rank of the bonded NPC in question and adding the progress track to the post.

one complication: a miss on Forge a Bond can mean clearing all but one box of progress and increase the rank of the track (a mechanic it shares with several other progress moves). theOracle's current approach to this is to have the user create a brand new progress track, which isn't too onerous in most cases, but given the number of generated attributes for NPCs,

it'd also be useful to be able to note it as a connection so that searching (connection) with discord's search tool turns up all generated connection NPCs. so maybe a parenthetical subtype to "Non-Player Character", like this:

Screen Shot 2020-12-26 at 6 24 33 PM

with it changing to (bond) upon completing the track or some other user input.

Player card/ship card: debility/impact tracker

i remember this coming up, and it sounded like it wasn't in the cards for the time being; still, i reckon it's worth posting here to have a record of it in case it comes up again. feel free to label it wontfix or something. :)

perhaps unsurprisingly, i made a bunch of notes too.

Ironsworn, p. 36:

  • Each marked debility reduces your max momentum by 1.
  • If you have one marked debility, your momentum reset is +1 instead of +2.
  • If you have more than one marked debility, your momentum reset is 0.
  • at its most basic this could be a field that shows the number of debilities someone has. probably left hidden unless debilities > 0, and it could be incremented/decremented similar to health/spirit/supply.
  • a more elaborate version would display debilities by name (useful since debilities have different conditions for removal, and some are permanent)
  • ideally the burn momentum react would take this into account, but even if it doesn't, i think there's value in having a place to note the fact that the debilities are present so the player is less likely to forget.
  • each game has 8 standard debilities (Ironsworn: Wounded, Shaken, Unprepared, Encumbered, Maimed, Corrupted, Cursed, Tormented; Starforged: Wounded, Shaken, Unprepared, Disabled, Troubled, Doomed, Tormented, Indebted), plus a few assets (certain rituals, voidborn in SF, etc) that add their own unique debilities.
    • since there's so many, it might just be simpler to do some sort of user input for the debility name than try to manage it with reacts... unless it was an interactive post or something, but that feels like overkill
  • i like ๐Ÿ’ซ :dizzy:, ๐Ÿ’” :broken_heart:, and ๐Ÿฉธ :drop_of_blood: as candidates for the emoji react for managing debilities because they're more abstract/symbolic (and so they'd be the least obtrusive on the game's mood, if that makes sense? it's quite possible i'm overthinking this, ha), but there's no shortage of smiley-type emoji to depict various state of distress: ๐Ÿ˜ต ๐Ÿ˜ฑ ๐Ÿค• ๐Ÿ˜ฌ โ˜น๏ธ ๐Ÿ˜– ๐Ÿ˜ฃ
    • if, mechanically speaking, debilities are working against momentum, then maybe this is an emoji that could be selected in opposition to whatever symbol we're using for momentum? heck, that could inform the choice of emoji for momentum should you want to change it
  • starforged also has two debilities that can be attached to vehicles, so the ship card might need to track this, too. hm. even if it's not possible to have the player card check whether the vehicle in question has a debility that might effect the PC's momentum reset, it still helps to have a place to note it

meta: project-specific labels for github issues

now that i'm flooding the issues tab ๐Ÿ˜… it might be a good idea to add some labels. i'm certain the list below isn't exhaustive but it'd be a good start.

game type

  • Ironsworn
  • Starforged

module

  • Oracle
  • Rules Reference
  • Action
  • Initiative Tracker
  • Progress Tracker
  • Creature (would probably include ironsworn monstrosity?)
  • NPC (for both systems)
  • Planet
  • Settlement (for both systems)
  • Starship

other

  • Documentation

user-editable name fields for cards

since exploration, discovery, and 'playing to find out' are a big part of the game, i think it'd be on-theme to have some way of setting the name of the npc/creature/ship/planet cards after they've been generated. this would also make it easier to locate them in the chat log using discord's search function, too, rather than approaching the search 'sideways' by trying to remember the contents of the fields or something. as well as covering those situations where there's a typo or maybe interference from autocorrect, haha.

โœ๏ธ :pencil2: is a pretty common metaphor for this sort of thing, so i think it'd be a solid choice for a react. i figure using that react could trigger the kind of text-based interaction currently used in Delve Site posts?

the 'dream'/expanded version of this feature would be being able to set/remove any field after the fact, but that's probably a separate feature request.

Request: improve readability of oracle list

at this point i often resort to copy-pasting the !oraclelist output to a text editor to find the entry i'm looking for. i'm not sure what the solution here is, honestly; it's a lot of text in the first place because ironsworn/starforged has a lot of oracles, and there's only so much that can be done to compress that.

one way to approach it might be: accept that it's going to be long no matter what, and just make it as readable as possible even if it takes up more space to do so (and it almost certainly will). as it is, the post already takes up about half the vertical space on my 15" laptop screen, and it'll probably only expand as i get around to adding better aliases and as starforged adds more oracles. maybe automatically populate the "delete post" โŒ emoji react to remind people that they can dismiss the humongous post when they're done looking at it.

support for rarities from Delve

i have a few ideas on how this could work. really, this is almost entirely reminder text. but since rarities are essentially a form of situational bonus, it's easy for play to get bogged down as you go to look up the move to double check the mechanics (which i guess we've obviated some with the move lookup, but i think there's value in having a way to automate it a little bit), or to simply forget to use them.

the !action command

  • add the "rarity" argument (or just including it in the command text anywhere? there can't be many places where the word 'rarity' would be used in the context of action fluff outside those involving actual capital-R Rarities, right?) to the the !action command
  • it'd be good to include to the cancelled move result as well. partly for informational purposes, but mostly because i think seeing that "Miss" crossed out would feel satisfying!
  • probably a good idea include feedback indicating that Wield a Rarity is being used, regardless of whether the rarity effect triggers or not

Screen Shot 2020-11-12 at 2 14 36 AM

Prototype output

Wield a Rarity

When you make a move aided by an augmented asset, roll your rarity die in place of your action die.
On any result with 6 showing on the rarity die, the power of the rarity manifests in a dramatic and obvious way. You score an automatic strong hit and take +1 momentum.

Screen Shot 2020-11-12 at 2 17 03 AM

On a hit with 5 showing on the rarity die, the power of the rarity manifests in a subtle way. Take +1 momentum.

Screen Shot 2020-11-12 at 2 17 57 AM

On a miss with 1 showing on the rarity die, the rarityโ€™s power fails or works against you.

Screen Shot 2020-11-12 at 2 18 41 AM

player tracker

  • probably inessential, but i think it'd handy to note rarities there and the PC tracker seems like the most logical/consistent place to do it
  • add rarity with an emoji react e.g. ๐Ÿ’ :ring:, ๐Ÿ’Ž :gem:, ๐Ÿ‘‘ :crown:?
  • a field on the tracker showing the rarity's name and the asset it's attached to?
    • i don't think i've seen any emoji reacts that add user text input to cards after. i mean, presumably it's possible somehow, but would it end up feeling awkward?
  • then again if you're planning to include some sort of asset display on the card anyways, maybe this would be best handled by marking the relevant asset with the rarity emoji

Request - Ironsworn: Delve monstrosities

the procedure outlined in Delve (p. 214):

  • Monstrosity: Size
  • Monstrosity: Primary Form
  • roll up to 4 times on Monstrosity: Characteristics, and choose up to 3 of those results.
  • roll up to 4 times on Monstrosity: Abilities, and choose up to 3 of those results.
  • choose a rank appropriate to the monstrosity's features, or use the Challenge Rank oracle
    • functionally this feels like it ought to be an emoji react, but hell if i know what that would be for something so abstract as "how dangerous/challenging this monster is". would the presence of the challenge rank as spoiler text meaningfully alter the player experience?

i suspect emulating the roll/pick of characteristics/abilities to its full extent (the final selections made by the player) wouldn't be worth the effort.

maybe starting them off with a 1 each of Characteristics and Abilities and have emoji reacts to add more, up to a maximum of 4. it might also be worth including brief text note on the embed template, that reminds users pick up to three of those generated characteristics/abilities. not especially elegant, but it'd probably work, at least.

(this is another situation where i'd be tempted to bolt these together with starforged's creature oracles, but again, that's probably outside the scope of the bot, ha)

request: scene challenge tracker

ref: ironsworn, p. 234.

  • pretty much a progress track with the countdown track bolted on. the countdown track is 4 boxes, and unlike normal progress boxes it's either filled or not. it'd also be good to make the visually distinct from normal progress boxes. i reckon ๐ŸŸฉ :green_square: and โŽ :negative_squared_cross_mark: would work for that.
  • scene challenges default to the Dangerous rank, and the text strongly recommends keeping them there unless there's a very compelling reason it should be otherwise. so i think it would make sense for the command to default to Dangerous in the absence of a specified rank
  • emoji reacts as per progress tracks, with the addition of โŽ :negative_squared_cross_mark: to mark the countdown track, and perhaps ๐ŸŸฉ :green_square: to remove it (to my knowledge there's no mechanic that removes marks from the countdown track, but it's probably a good idea to make it reversible in case someone misclicks)

Screen Shot 2020-11-10 at 4 30 18 PM

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.