Ejemplo n.º 1
0
/*
  Calculate the spodlist
 */
void
calc_spodlist(void)
{
    UR_OBJECT u;
    UD_OBJECT entry;

    /* Delete the whole list */
    delete_spodlist();

    /* Save all players so times are accurate */
    for (u = user_first; u; u = u->next) {
#ifdef NETLINKS
        if (u->type == REMOTE_TYPE) {
            continue;
        }
#endif
        if (u->type == CLONE_TYPE || u->login) {
            continue;
        }
        save_user_details(u, 1);
    }

    /* Create spod list */
    for (entry = first_user_entry; entry; entry = entry->next) {
        u = retrieve_user(NULL, entry->name);
        if (!u) {
            continue;
        }
        add_name_to_spodlist(u->name, u->total_login);
        done_retrieve(u);
    }
}
Ejemplo n.º 2
0
/*
 * Unmuzzle the bastard now he has apologised and grovelled enough via email
 */
void
unmuzzle(UR_OBJECT user)
{
    UR_OBJECT u;
    int on;

    if (word_count < 2) {
        write_user(user, "Usage: unmuzzle <user>\n");
        return;
    }
    u = retrieve_user(user, word[1]);
    if (!u) {
        return;
    }
    on = retrieve_user_type == 1;
    /* error checks */
    if (u == user) {
        write_user(user,
                "Trying to unmuzzle yourself is the tenth sign of madness.\n");
        done_retrieve(u);
        return;
    }
    /* FIXME: Use sentinel other JAILED */
    if (u->muzzled == JAILED) {
        vwrite_user(user, "%s~RS is not muzzled.\n", u->recap);
        done_retrieve(u);
        return;
    }
    if (u->muzzled > user->level) {
        vwrite_user(user,
                "%s~RS's muzzle is set to level %s, you do not have the power to remove it.\n",
                u->recap, user_level[u->muzzled].name);
        done_retrieve(u);
        return;
    }
    /* do the unmuzzle */
    u->muzzled = JAILED; /* FIXME: Use sentinel other JAILED */
    vwrite_user(user, "~FG~OLYou remove %s~RS's muzzle.\n", u->recap);
    write_syslog(SYSLOG, 1, "%s unmuzzled %s.\n", user->name, u->name);
    add_history(u->name, 0, "~FGUnmuzzled~RS by %s, level %d (%s).\n",
            user->name, user->level, user_level[user->level].name);
    sprintf(text, "~FG~OLYou have been unmuzzled!\n");
    if (!on) {
        send_mail(user, u->name, text, 0);
    } else {
        write_user(u, text);
    }
    /* finish up */
    if (!on) {
        strcpy(u->site, u->last_site);
        u->socket = -2;
    }
    save_user_details(u, on);
    done_retrieve(u);
}
Ejemplo n.º 3
0
/*
 * clean up the user object created by the above function
 */
void
done_retrieve(UR_OBJECT user)
{
  switch (retrieve_user_type) {
  case 0:
    /* not supposed to happen */
    break;
  case 1:
    /* online user, do not do anything */
    break;
  case 2:
    /* offline user, save and have fun */
    user->socket = -2;
    strcpy(user->site, user->last_site);
    save_user_details(user, 0);
    destruct_user(user);
    destructed = 0;
    break;
  }
  return;
}
Ejemplo n.º 4
0
/*
 * Unarrest a user who is currently under arrest and in jail
 */
void
unarrest(UR_OBJECT user)
{
    UR_OBJECT u;
    RM_OBJECT rm;
    int on;

    if (word_count < 2) {
        write_user(user, "Usage: unarrest <user>\n");
        return;
    }
    u = retrieve_user(user, word[1]);
    if (!u) {
        return;
    }
    on = retrieve_user_type == 1;
    /* error checks */
    if (u == user) {
        write_user(user, "You cannot unarrest yourself.\n");
        return;
    }
    if (u->level != JAILED) {
        vwrite_user(user, "%s~RS is not under arrest!\n", u->recap);
        done_retrieve(u);
        return;
    }
    if (user->level < u->arrestby) {
        vwrite_user(user, "%s~RS can only be unarrested by a %s or higher.\n",
                u->recap, user_level[u->arrestby].name);
        done_retrieve(u);
        return;
    }
    /* do it */
    u->level = u->unarrest;
    u->real_level = u->level;
    u->arrestby = JAILED; /* FIXME: Use sentinel other JAILED */
    user_list_level(u->name, u->level);
    strcpy(u->date, (long_date(1)));
    sprintf(text, "~FG~OLYou have been unarrested...  Now try to behave!\n");
    if (!on) {
        send_mail(user, u->name, text, 0);
        vwrite_user(user, "%s has been unarrested.\n", u->name);
    } else {
        write_user(u, text);
        vwrite_user(user, "%s has been unarrested.\n", u->name);
        write_room(NULL, "The Hand of Justice reaches through the air...\n");
        rm = get_room_full(amsys->default_warp);
        if (!rm) {
            vwrite_user(user,
                    "Cannot find a room for ex-cons, so %s~RS is still in the %s!\n",
                    u->recap, u->room->name);
        } else {
            move_user(u, rm, 2);
        }
    }
    write_syslog(SYSLOG, 1, "%s UNARRESTED %s\n", user->name, u->name);
    add_history(u->name, 1, "Was ~FGunarrested~RS by %s.\n", user->name);
    if (!on) {
        u->socket = -2;
        strcpy(u->site, u->last_site);
    }
    save_user_details(u, on);
    done_retrieve(u);
}
Ejemplo n.º 5
0
/*
 * Put annoying user in jail
 */
void
arrest(UR_OBJECT user)
{
    UR_OBJECT u;
    RM_OBJECT rm;
    int on;

    if (word_count < 2) {
        write_user(user, "Usage: arrest <user>\n");
        return;
    }
    u = retrieve_user(user, word[1]);
    if (!u) {
        return;
    }
    on = retrieve_user_type == 1;
    /* error checks */
    if (u == user) {
        write_user(user, "You cannot arrest yourself.\n");
        return;
    }
    if (u->level >= user->level) {
        write_user(user,
                "You cannot arrest anyone of the same or higher level than yourself.\n");
        done_retrieve(u);
        return;
    }
    if (u->level == JAILED) {
        vwrite_user(user, "%s~RS has already been arrested.\n", u->recap);
        done_retrieve(u);
        return;
    }
    /* do it */
    u->vis = 1;
    u->unarrest = u->level;
    u->arrestby = user->level;
    u->level = JAILED;
    u->real_level = u->level;
    user_list_level(u->name, u->level);
    strcpy(u->date, (long_date(1)));
    sprintf(text, "~FR~OLYou have been placed under arrest.\n");
    if (!on) {
        send_mail(user, u->name, text, 0);
        vwrite_user(user, "%s has been placed under arrest.\n", u->name);
    } else {
        write_user(u, text);
        vwrite_user(user, "%s has been placed under arrest.\n", u->name);
        write_room(NULL, "The Hand of Justice reaches through the air...\n");
        rm = get_room_full(amsys->default_jail);
        if (!rm) {
            vwrite_user(user,
                    "Cannot find the jail, so %s~RS is arrested but still in the %s.\n",
                    u->recap, u->room->name);
        } else {
            move_user(u, rm, 2);
        }
        vwrite_room_except_both(NULL, user, u,
                "%s~RS has been placed under arrest...\n",
                u->recap);
    }
    write_syslog(SYSLOG, 1, "%s ARRESTED %s (at level %s)\n", user->name,
            u->name, user_level[u->arrestby].name);
    add_history(u->name, 1, "Was ~FRarrested~RS by %s (at level ~OL%s~RS).\n",
            user->name, user_level[u->arrestby].name);
    if (!on) {
        u->socket = -2;
        strcpy(u->site, u->last_site);
    }
    save_user_details(u, on);
    done_retrieve(u);
}