foundation2_fluffos_v1/
foundation2_fluffos_v1/bin/
foundation2_fluffos_v1/fluffos-2.9-ds2.13/
foundation2_fluffos_v1/fluffos-2.9-ds2.13/ChangeLog.old/
foundation2_fluffos_v1/fluffos-2.9-ds2.13/Win32/
foundation2_fluffos_v1/fluffos-2.9-ds2.13/compat/
foundation2_fluffos_v1/fluffos-2.9-ds2.13/compat/simuls/
foundation2_fluffos_v1/fluffos-2.9-ds2.13/include/
foundation2_fluffos_v1/fluffos-2.9-ds2.13/testsuite/
foundation2_fluffos_v1/fluffos-2.9-ds2.13/testsuite/clone/
foundation2_fluffos_v1/fluffos-2.9-ds2.13/testsuite/command/
foundation2_fluffos_v1/fluffos-2.9-ds2.13/testsuite/data/
foundation2_fluffos_v1/fluffos-2.9-ds2.13/testsuite/etc/
foundation2_fluffos_v1/fluffos-2.9-ds2.13/testsuite/include/
foundation2_fluffos_v1/fluffos-2.9-ds2.13/testsuite/inherit/
foundation2_fluffos_v1/fluffos-2.9-ds2.13/testsuite/inherit/master/
foundation2_fluffos_v1/fluffos-2.9-ds2.13/testsuite/log/
foundation2_fluffos_v1/fluffos-2.9-ds2.13/testsuite/single/
foundation2_fluffos_v1/fluffos-2.9-ds2.13/testsuite/single/tests/compiler/
foundation2_fluffos_v1/fluffos-2.9-ds2.13/testsuite/single/tests/efuns/
foundation2_fluffos_v1/fluffos-2.9-ds2.13/testsuite/single/tests/operators/
foundation2_fluffos_v1/fluffos-2.9-ds2.13/testsuite/u/
foundation2_fluffos_v1/fluffos-2.9-ds2.13/tmp/
foundation2_fluffos_v1/fluffos-2.9-ds2.13/windows/
foundation2_fluffos_v1/lib/cfg/
foundation2_fluffos_v1/lib/cmds/adm/
foundation2_fluffos_v1/lib/daemon/save/
foundation2_fluffos_v1/lib/daemon/services/
foundation2_fluffos_v1/lib/daemon/soul/
foundation2_fluffos_v1/lib/doc/build/
foundation2_fluffos_v1/lib/doc/classes/
foundation2_fluffos_v1/lib/doc/driver/
foundation2_fluffos_v1/lib/doc/driver/applies/
foundation2_fluffos_v1/lib/doc/driver/applies/interactive/
foundation2_fluffos_v1/lib/doc/driver/concepts/
foundation2_fluffos_v1/lib/doc/driver/driver/
foundation2_fluffos_v1/lib/doc/driver/efuns/arrays/
foundation2_fluffos_v1/lib/doc/driver/efuns/buffers/
foundation2_fluffos_v1/lib/doc/driver/efuns/calls/
foundation2_fluffos_v1/lib/doc/driver/efuns/compile/
foundation2_fluffos_v1/lib/doc/driver/efuns/filesystem/
foundation2_fluffos_v1/lib/doc/driver/efuns/floats/
foundation2_fluffos_v1/lib/doc/driver/efuns/functions/
foundation2_fluffos_v1/lib/doc/driver/efuns/general/
foundation2_fluffos_v1/lib/doc/driver/efuns/mappings/
foundation2_fluffos_v1/lib/doc/driver/efuns/numbers/
foundation2_fluffos_v1/lib/doc/driver/efuns/parsing/
foundation2_fluffos_v1/lib/doc/driver/lpc/constructs/
foundation2_fluffos_v1/lib/doc/driver/lpc/types/
foundation2_fluffos_v1/lib/doc/driver/platforms/
foundation2_fluffos_v1/lib/doc/efun/
foundation2_fluffos_v1/lib/doc/etc/
foundation2_fluffos_v1/lib/doc/faq/
foundation2_fluffos_v1/lib/doc/help/creator/
foundation2_fluffos_v1/lib/doc/help/player/
foundation2_fluffos_v1/lib/doc/lpc/basic/
foundation2_fluffos_v1/lib/doc/lpc/data_types/
foundation2_fluffos_v1/lib/doc/lpc/etc/
foundation2_fluffos_v1/lib/doc/lpc/intermediate/
foundation2_fluffos_v1/lib/doc/lpc/types/
foundation2_fluffos_v1/lib/doc/mudlib/
foundation2_fluffos_v1/lib/doc/mudlib/Features/
foundation2_fluffos_v1/lib/domains/Examples/armour/
foundation2_fluffos_v1/lib/domains/Examples/etc/
foundation2_fluffos_v1/lib/domains/Examples/npc/
foundation2_fluffos_v1/lib/domains/Examples/room/
foundation2_fluffos_v1/lib/domains/Examples/virtual/
foundation2_fluffos_v1/lib/domains/Examples/virtual/exaA/
foundation2_fluffos_v1/lib/domains/Examples/virtual/exaB/
foundation2_fluffos_v1/lib/domains/Examples/weapon/
foundation2_fluffos_v1/lib/domains/School/doc/
foundation2_fluffos_v1/lib/domains/School/room/
foundation2_fluffos_v1/lib/domains/School/room/Classes/
foundation2_fluffos_v1/lib/domains/School/room/Offices/
foundation2_fluffos_v1/lib/domains/Standard/
foundation2_fluffos_v1/lib/domains/Standard/pools/
foundation2_fluffos_v1/lib/domains/Standard/std/
foundation2_fluffos_v1/lib/domains/Standard/xtra/
foundation2_fluffos_v1/lib/include/
foundation2_fluffos_v1/lib/lib/obj/
foundation2_fluffos_v1/lib/news/
foundation2_fluffos_v1/lib/save/
foundation2_fluffos_v1/lib/secure/cfg/
foundation2_fluffos_v1/lib/secure/cmds/player/
foundation2_fluffos_v1/lib/secure/lib/
foundation2_fluffos_v1/old/
foundation2_fluffos_v1/win32/
/*    A sub-unit of the central mud soul daemon
 *    This handles adverb maintenance and related functions
 *    created by Blitz@NM-IVD
 */
 
#include <save.h>
#define SaveFile "/daemon/soul/adverbs.o"
 
static mapping AdverbPool = ([
"a" : ({ "absently", "absentmindedly", "abso-bloody-lutely", "absolutely",
      "adamently", "affectionately", "again", "agreeably", "always",
      "aimlessly", "amusedly", "angelically", "angrily", "annoyingly",
      "appreciatively", "astonishedly", "audibly", "automatically",
      "awkwardly", }),
 
"b" : ({ "badly", "belatedly", "belligerently", "bemusedly", "benignly",
      "bitterly", "blandly", "blankly", "bluntly", "boldly", "boredly",
      "bravely", "briefly", "brightly", "briskly", "broadly", "brotherly",
      "busily", }),
 
"c" : ({ "calmly", "carefully", "carelessly", "casually", "cautiously",
      "chaoticly", "charmingly", "cheerfully", "childishly", "closely",
      "clumsily", "coldly", "comically", "completely", "comprehensively",
      "confidently", "confusedly", "consciensciously", "conspiratorially",
      "contemptuously", "contentedly", "courageously", "cowardly", "crazily",
      "critically", "cruelly", "cuddlingly", "crookedly", "cunningly",
      "curiously", "cutely", "cynically", }),
 
"d" : ({ "dangerously", "darkly", "deadly", "decliningly", "deeply",
      "defiantly", "definitely", "delightfully", "dementedly", "demonically",
      "depressively", "derisively", "desperately", "devilishly", "devotedly",
      "dirtily", "disappointedly", "disapprovingly", "disgustedly",
      "disgustingly", "disrespectfully", "doggily", "dopily", "doubtfully",
      "dramatically", "drastically", "dreamily", "dryly", "dumbly", }),
 
"e" : ({ "eagerly", "egocentrically", "egotistically", "embarrassedly",
      "emphatically", "endearingly", "enthusiastically", "erotically",
      "eternally", "evilly", "excellently", "excitedly", "exhaustedly",
      "expectantly", "extraneously", }),
 
"f" : ({ "faintly", "faithfully", "famously", "fanatically", "farewell",
      "fatherly","fearfully", "ferociously", "fervently", "fiendishly",
      "fiercefully", "firmly", "fitfully", "flatly", "fondly", "foolishly",
      "forcefully", "forever", "forgetfully", "forgivingly", "frankly",
      "frenetically", "frequently", "friendly", "frustratedly", "funnily",
      "furiously", }),
 
"g" : ({ "generously", "gently", "gleefully", "gloomily", "goodbye",
      "goodnight", "goofily", "gracefully", "grandfatherly", "grandmotherly",
      "gravely", "greedily", "grimly", }),
 
"h" : ({ "happily", "handsomely", "hard", "harmonically", "heartbrokenly",
         "heartily", "heavenly", "heavily", "helpfully", "helplessly",
         "heroically", "hesitantly", "honestly", "hopefully", "horribly",
         "hotly", "humbly", "humourlessly", "hungrily", "hurriedly",
         "hysterically", }),
 
"i" : ({ "idly", "ignorantly", "immediately", "impatiently", "impishly",
      "in frustration", "inanely", "incredulously", "indecently",
      "infamously", "innocently", "insanely", "instantly", "intelligently",
      "intently", "interestedly", "into space", "introspectively",
      "invitingly", "inwardly", "ironically", }),
 
"j" : ({ "jealously", "jeeringly", "jokingly", "jovially",
      "joyfully", }),
 
"k" : ({ "knowingly", "kindly", "kinkily", }),
 
"l" : ({ "laconically", "lamely", "lazily", "lecherously", "levelly",
         "lightly", "lively", "loftily", "longingly", "loudly",
         "lovingly", "lustfully", }),
 
"m" : ({ "madly", "magically", "manfully", "maniacally", "manically",
      "matter-of-factly", "meekly", "melancholically", "menacingly",
      "mercifully", "mercilessly", "merrily", "mildly", "mirthfully",
      "mischievously", "mockingly", "moodily", "morosely", "motherly",
      "mournfully", "musically", "mysteriously", "mystically", }),
 
"n" : ({ "nastily", "naughtily", "negatively", "nervously", "nicely",
      "nobly", "noddingly", "noggingly", "noisily", "normally",
      "nostalgically", "noticeably", }),
 
"o" : ({ "obnoxiously", "oddly", "officially", "often",
         "omniously", }),
 
"p" : ({ "painfully", "passionately", "pathetically", "patiently",
      "patronizingly", "perfectly", "personally", "physically", "pirately",
      "pitifully", "plainly", "playfully", "pleadingly", "pleasantly",
      "pointedly", "politely", "ponderously", "poorly", "positively",
      "probably", "professionally", "profoundly", "profusely", "prolly",
      "protectively", "proudly", "provocatively", "purplishy", }),
 
"q" : ({ "quackingly", "questioningly", "quickly", "quietly",
      "quizzically", }),
 
"r" : ({ "radiantly", "randomly", "rapidly", "rebelliously", "recklessly",
      "recursively", "regretfully", "reluctantly", "remotely", "repeatedly",
      "reproachfully", "resignedly", "reverently", "rigoriously",
      "romantically", "roughly", "royally", "rudely", "ruthlessly", }),
 
"s" : ({ "sadistically", "sadly", "sagely", "saintly", "sarcastically",
      "satanically", "sceptically", "scornfully", "searchingly", "secretively",
      "seductively", "sensually", "seriously", "sexily", "shamefully",
      "shamelessly", "sharply", "sheepishly", "shrewdly", "shrilly",
      "shyly", "sickly", "silently", "simultaneously", "sisterly",
      "skillfully", "sleepily", "slightly", "slowly", "slyly", "smilingly",
      "smoothly", "smugly", "sniffingly", "softly", "solemnly", "soothingly",
      "sorrowfully", "sort of", "sothingly", "sourly", "spontaneously",
      "sternly", "strangely", "strictly", "stubbornly", "stupidly", "suavely",
      "subtly", "suddenly", "sufferingly", "suggestively", "superciliously",
      "supportingly", "surprisingly", "surreally", "suspiciously",
      "sweetly", "swiftly", "sympathetically", }),
 
"t" : ({ "tearfully", "teasingly", "tenderly", "terribly", "testily",
      "thankfully", "theatrically", "theoretically", "thoughtfully",
      "tightly", "tiredly", "totally", "tragically", "triumphantly",
      "trustfully", "tunelessly", }),
 
"u" : ({ "unbearably", "unconditionally", "uncontrollably", "understandingly",
      "uneasily", "unexpectedly", "unhappily", "unlikely", "urgently",
      "utterly", }),
 
"v" : ({ "vaguely", "viciously", "victoriously", "vigorously",
      "violently", "virtually", "voluptuously", }),
 
"w" : ({ "warmly", "weakly", "wearily", "whimsically", "wholeheartedly",
      "wickedly", "wildly", "wisely", "wishfully", "wistfully", "wizardly",
      "wobbly", "wonderingly", "wryly", }),
 
"x" : ({ "xenophobly", }),
 
"y" : ({ "yearningly", "yellowishly", }),
 
"z" : ({ "zanily", "zen-likely", }),
]);
 
 
private void SaveAdverbs() {
  if( !archp(this_player()) ) return;
  unguarded( (: write_file, SaveFile, save_variable(AdverbPool), 1 :) );
}
 
private void RestoreAdverbs() {
  string tmp;
  if( !file_exists(SaveFile) ) return;
  tmp = read_file(SaveFile);
  if( !sizeof(tmp) ) return;
  AdverbPool = restore_variable(tmp);
}
 
static void create() {
  RestoreAdverbs();
}
 
string *GetAdverbs(string group) {
  string tmp;
  if( !sizeof(group) ) return ({});
  tmp = sprintf("%c", group[0]);
  return (AdverbPool[tmp] || ({}));
}
 
mapping GetAdverbPool() { return copy(AdverbPool); }
 
int AddAdverb(string adverb) {
  string tmp;
  if( !sizeof(adverb) ) return 0;
  if( !archp(this_player()) ) return 0;
  tmp = sprintf("%c", adverb[0]);
  if( !AdverbPool[tmp] ) AdverbPool[tmp] = ({ });
  if( member_array(adverb, AdverbPool[tmp]) > -1 ) return 0;
  AdverbPool[tmp] += ({ adverb });
  SaveAdverbs();
  return 1;
}
 
int RemoveAdverb(string adverb) {
  string tmp;
  if( !sizeof(adverb) ) return 0;
  if( !archp(this_player()) ) return 0;
  tmp = sprintf("%c", adverb[0]);
  if( !AdverbPool[tmp] ) return 0;
  AdverbPool[tmp] -= ({ adverb });
  SaveAdverbs();
  return 1;
}
 
varargs string GetRandomAdverb(string group) {
  string tmp, *key;
  int i;
  if( !sizeof(group) ) {
    i = sizeof(key = keys(AdverbPool));
    tmp = key[random(i)];
  } else tmp = group;
  if( !i = sizeof(AdverbPool[tmp]) ) return 0;
  return (AdverbPool[tmp][random(i)]);
}