nightmare4_fluffos_v1/
nightmare4_fluffos_v1/bin/
nightmare4_fluffos_v1/fluffos-2.9-ds2.14/
nightmare4_fluffos_v1/fluffos-2.9-ds2.14/ChangeLog.old/
nightmare4_fluffos_v1/fluffos-2.9-ds2.14/Win32/
nightmare4_fluffos_v1/fluffos-2.9-ds2.14/compat/
nightmare4_fluffos_v1/fluffos-2.9-ds2.14/compat/simuls/
nightmare4_fluffos_v1/fluffos-2.9-ds2.14/include/
nightmare4_fluffos_v1/fluffos-2.9-ds2.14/testsuite/
nightmare4_fluffos_v1/fluffos-2.9-ds2.14/testsuite/clone/
nightmare4_fluffos_v1/fluffos-2.9-ds2.14/testsuite/command/
nightmare4_fluffos_v1/fluffos-2.9-ds2.14/testsuite/data/
nightmare4_fluffos_v1/fluffos-2.9-ds2.14/testsuite/etc/
nightmare4_fluffos_v1/fluffos-2.9-ds2.14/testsuite/include/
nightmare4_fluffos_v1/fluffos-2.9-ds2.14/testsuite/inherit/
nightmare4_fluffos_v1/fluffos-2.9-ds2.14/testsuite/inherit/master/
nightmare4_fluffos_v1/fluffos-2.9-ds2.14/testsuite/log/
nightmare4_fluffos_v1/fluffos-2.9-ds2.14/testsuite/single/
nightmare4_fluffos_v1/fluffos-2.9-ds2.14/testsuite/single/tests/compiler/
nightmare4_fluffos_v1/fluffos-2.9-ds2.14/testsuite/single/tests/efuns/
nightmare4_fluffos_v1/fluffos-2.9-ds2.14/testsuite/single/tests/operators/
nightmare4_fluffos_v1/fluffos-2.9-ds2.14/testsuite/u/
nightmare4_fluffos_v1/fluffos-2.9-ds2.14/tmp/
nightmare4_fluffos_v1/fluffos-2.9-ds2.14/windows/
nightmare4_fluffos_v1/lib/cfg/
nightmare4_fluffos_v1/lib/cmds/admins/
nightmare4_fluffos_v1/lib/cmds/common/
nightmare4_fluffos_v1/lib/cmds/creators/include/
nightmare4_fluffos_v1/lib/cmds/creators/include/SCCS/
nightmare4_fluffos_v1/lib/cmds/hm/
nightmare4_fluffos_v1/lib/daemon/services/
nightmare4_fluffos_v1/lib/doc/
nightmare4_fluffos_v1/lib/doc/faq/
nightmare4_fluffos_v1/lib/doc/help/classes/
nightmare4_fluffos_v1/lib/doc/help/creators/
nightmare4_fluffos_v1/lib/doc/help/hm/
nightmare4_fluffos_v1/lib/doc/help/players/
nightmare4_fluffos_v1/lib/doc/help/races/
nightmare4_fluffos_v1/lib/doc/help/religion/
nightmare4_fluffos_v1/lib/doc/mudlib/
nightmare4_fluffos_v1/lib/doc/mudlib/cfg/
nightmare4_fluffos_v1/lib/domains/Ylsrim/
nightmare4_fluffos_v1/lib/domains/Ylsrim/adm/
nightmare4_fluffos_v1/lib/domains/Ylsrim/armour/
nightmare4_fluffos_v1/lib/domains/Ylsrim/fish/
nightmare4_fluffos_v1/lib/domains/Ylsrim/meal/
nightmare4_fluffos_v1/lib/domains/Ylsrim/npc/
nightmare4_fluffos_v1/lib/domains/Ylsrim/virtual/
nightmare4_fluffos_v1/lib/domains/Ylsrim/weapon/
nightmare4_fluffos_v1/lib/domains/Ylsrim/xtra/
nightmare4_fluffos_v1/lib/lib/comp/
nightmare4_fluffos_v1/lib/lib/lvs/
nightmare4_fluffos_v1/lib/lib/std/
nightmare4_fluffos_v1/lib/lib/user/
nightmare4_fluffos_v1/lib/news/
nightmare4_fluffos_v1/lib/obj/
nightmare4_fluffos_v1/lib/obj/include/
nightmare4_fluffos_v1/lib/save/
nightmare4_fluffos_v1/lib/save/kills/a/
nightmare4_fluffos_v1/lib/save/kills/b/
nightmare4_fluffos_v1/lib/save/kills/f/
nightmare4_fluffos_v1/lib/save/kills/m/
nightmare4_fluffos_v1/lib/save/kills/q/
nightmare4_fluffos_v1/lib/save/kills/r/
nightmare4_fluffos_v1/lib/secure/cfg/
nightmare4_fluffos_v1/lib/secure/cfg/classes/
nightmare4_fluffos_v1/lib/secure/cfg/races/SCCS/
nightmare4_fluffos_v1/lib/secure/cmds/creators/include/
nightmare4_fluffos_v1/lib/secure/cmds/players/
nightmare4_fluffos_v1/lib/secure/cmds/players/include/
nightmare4_fluffos_v1/lib/secure/daemon/include/
nightmare4_fluffos_v1/lib/secure/lib/
nightmare4_fluffos_v1/lib/secure/lib/include/
nightmare4_fluffos_v1/lib/secure/lib/net/
nightmare4_fluffos_v1/lib/secure/lib/std/
nightmare4_fluffos_v1/lib/secure/obj/
nightmare4_fluffos_v1/lib/secure/obj/include/
nightmare4_fluffos_v1/lib/secure/save/
nightmare4_fluffos_v1/lib/secure/save/boards/
nightmare4_fluffos_v1/lib/secure/save/votes/
nightmare4_fluffos_v1/lib/spells/
nightmare4_fluffos_v1/lib/verbs/admins/include/
nightmare4_fluffos_v1/lib/verbs/common/
nightmare4_fluffos_v1/lib/verbs/common/include/
nightmare4_fluffos_v1/lib/verbs/creators/
nightmare4_fluffos_v1/lib/verbs/creators/include/
nightmare4_fluffos_v1/lib/verbs/players/include/SCCS/
nightmare4_fluffos_v1/lib/verbs/rooms/
nightmare4_fluffos_v1/lib/verbs/rooms/include/
nightmare4_fluffos_v1/lib/www/
nightmare4_fluffos_v1/old/
nightmare4_fluffos_v1/old/tools/
nightmare4_fluffos_v1/win32/
/*   sconvert.c
 *   A utility which reduces or raises SetSkill and SetStat lines
 *   in a file by a specified percentage.
 *   created by Blitz@Nightmare
 */
 
void GetHelp(string str);
 
string ConvertLine(string str, int change, int line, string search)
{
  string s1, s2, cut, n, tmp;
  int a, b, val;
 
  while( (a = strsrch(str, search)) > -1 ) {
    tmp = str[a..];
    b = strsrch(tmp, ")");
    if( b < 0) break;
    cut = tmp[0..b];
    if( sscanf(cut, "%s,%s", s1, s2) != 2 ) break;
    s2 = replace_string(s2, " ", "");
    sscanf(s2, "%s)", s2);
    val = to_int(s2);
    if( !val ) break;
    val = val - (val / (100 / change));
    n = sprintf("%s, %d)", s1[0] + "@@@" + s1[1..], val);
    str = replace_string(str, cut, n);
    write("Line "+line+": "+cut+" -> "+val+".");
  }
  str = replace_string(str, search[0] + "@@@" + search[1..], search);
  return str;
}
 
void Convert(string s, int change) {
  string args, file, str;
  string *files, *tmp;
  int i, skill;
 
  if( !sizeof(s) ) args = "*.c";
  else args = s;
  files = (string *)this_player()->wild_card(args);
  if( !i = sizeof(files) ) {
    message("info", "No file(s) found: "+implode(files, " "),
            this_player() );
    return;
  }
  foreach(file in files) {
    string line;
    int    changed = 0;
 
    str = read_file(file);
    if( !sizeof(str) ) continue;
    i = sizeof(tmp = explode(str, "\n"));
    write("Checking: "+file);
    while(i--) {
      line = tmp[i];
      line = ConvertLine(line, change, i, "SetSkill");
      line = ConvertLine(line, change, i, "SetStat");
      if( tmp[i] != line ) changed = 1;
      if( changed ) tmp[i] = line;
    }
    if( changed ) {
      rename(file, file+"~");
      write(file+": Writing new file...");
      write_file(file, implode(tmp, "\n"));
    }
  }
}
 
mixed cmd(string str) {
  string files;
  int change;
  if( !sizeof(str) || (sscanf(str, "%s %d", files, change) != 2) || !change) {
    GetHelp(0);
    return 1;
  }
  files = absolute_path((string)this_player()->query_cwd(), files);
  Convert(files, change);
  return 1;
}
 
 
void GetHelp(string str) {
  message("info",
    "Syntax: sconvert <filename | wild card> <percentage>\n\n"
    "This command searches through the specified file(s) and lowers "
    "all occurrences of SetSkill and SetStat by a <percentage> "
    "amount.\n\n"
    "Example: sconvert *.c 10\n"
    "  - Searches all .c files in your currenct path, and reduces\n"
    "    all skill and stat settings by 10%\n\n"
    "Note: It is possible to raise settings by passing a negative number.",
  this_player() );
}