Variables that live beyond an event handler must be stored in a widget. If you find it inconvenient to reference widgets on another card,
thatCard.widgets.has_knife.value thatCard.widgets.has_soap.value thatCard.widgets.has_corncob.value
You could write utility functions on the card script that aggregate information from widgets:
on get_inventory do ("knife","soap","corncob") dict (has_knife,has_soap,has_corncob)..value end
And then send events at that card from elsewhere:
thatCard.event["get_inventory"]
(Or as shorthand if the event handler doesn't take any arguments,)
thatCard.event.get_inventory
In this way you can give cards an "API" of sorts. You could also define helper functions in the deck-level script to reach into specific cards:
on items do thatCard.event.get_inventory end
And then call that helper function from anywhere in the deck:
items[]
(I think this is probably overkill unless you're accessing the same info in lots of places within a deck.)
You can absolutely use tables to keep track of dialog options. A grid widget stores a table in its "value" attribute. Aside from manually editing table contents as CSV or JSON, you can initialize one with a script:
myGrid.value:insert k v with "Tell me about Chickens" "They cool." "Tell me about Daffodils" "They flower." end
You could append a new row (or several rows) to the existing table in a grid like so:
myGrid.value:insert k v with "Tell me about Easter Eggs" "They rare." into myGrid.value
And you could then later retrieve that table and convert it into the dictionary form dd.chat[] wants by razing it (which turns the first two columns into dictionary keys and values, respectively):
dd.open[deck] dd.chat["Ask away." (raze myGrid.value)] dd.close[]
Note that if you plan on revisiting the same dialog tree over the course of a game many times but you don't want to repeat old selections you'll need to do additional bookkeeping; dd.chat[] only remembers/winnows selections within the course of one conversation.
For more information about tables and querying, see Lil, The Query Language.
Does that help point you in the right direction?