Basically XKCD's Bucket rewritten in C# with modularity out the wazoo.
- Clean code -- should be readable and maintainable
- Modularity -- the core should be as small as possible, with all features implemented as plugins
- Compatibility -- should be compatible with any Bucket database
Modules:
- Can define "magic variables" (such as $who, $giveitem, $someone) through
Variables
class - Can read/write its own configuration data through
Config
class - Can read/write its own SQL tables
- Can list other modules as dependencies and communicate with them (how??)
- Conjugation -- $verbed, $verbing, $nouns, etc.
- Genders -- Keeping track of the last person variable
- Probably doable if the $who/$to/$someone module can keep an internal reference to the last $who/$to/$someone reference and use that for further $he/$him/$his references
- Casing - $who/$Who/$WHO
- Variables are a part of the Gambot core, since almost all modules will make use of them
- While Bucket uses MySQL, Gambot will use SQLite. Ideally, the schemas will be compatible
- If we decide to break backwards compatibility, a migration script should be made