예제 #1
0
HS_BOOL8 CHSInterface::LinkExits(HS_DBREF sexit, HS_DBREF dexit)
{
    if (!sexit || !dexit)
        return false;

#ifdef PENNMUSH
    if (!IsExit(sexit) || !IsExit(dexit))
        return false;

    Location(dexit) = Home(sexit);
    Location(sexit) = Home(dexit);
#endif

#if defined(TM3) || defined(MUX)
    if (!isExit(sexit) || !isExit(dexit))
        return false;
    s_Location(dexit, where_is(sexit));
    s_Location(sexit, where_is(dexit));
#endif

#ifdef TM3
    s_Modified(dexit);
    s_Modified(sexit);
#endif

    return true;
}
예제 #2
0
파일: powers.c 프로젝트: TinyMUSH/TinyMUSH
void power_set(dbref target, dbref player, char *power, int key)
{
    POWERENT *fp;
    int negate, result;
    /*
     * Trim spaces, and handle the negation character
     */
    negate = 0;

    while (*power && isspace(*power)) {
	power++;
    }

    if (*power == '!') {
	negate = 1;
	power++;
    }

    while (*power && isspace(*power)) {
	power++;
    }

    /*
     * Make sure a power name was specified
     */

    if (*power == '\0') {
	if (negate) {
	    notify(player, "You must specify a power to clear.");
	} else {
	    notify(player, "You must specify a power to set.");
	}

	return;
    }

    fp = find_power(target, power);

    if (fp == NULL) {
	notify(player, "I don't understand that power.");
	return;
    }

    /*
     * Invoke the power handler, and print feedback
     */
    result = fp->handler(target, player, fp->powervalue, fp->powerpower, negate);

    if (!result) {
	notify(player, NOPERM_MESSAGE);
    } else if (!(key & SET_QUIET) && !Quiet(player)) {
	notify(player, (negate ? "Cleared." : "Set."));
	s_Modified(target);
    }

    return;
}
예제 #3
0
void flag_set( dbref target, dbref player, char *flag, int key ) {
    FLAGENT *fp;

    int negate, result;

    /*
     * Trim spaces, and handle the negation character
     */

    negate = 0;
    while( *flag && isspace( *flag ) ) {
        flag++;
    }
    if( *flag == '!' ) {
        negate = 1;
        flag++;
    }
    while( *flag && isspace( *flag ) ) {
        flag++;
    }

    /*
     * Make sure a flag name was specified
     */

    if( *flag == '\0' ) {
        if( negate ) {
            notify( player, "You must specify a flag to clear." );
        } else {
            notify( player, "You must specify a flag to set." );
        }
        return;
    }
    fp = find_flag( target, flag );
    if( fp == NULL ) {
        notify( player, "I don't understand that flag." );
        return;
    }
    /*
     * Invoke the flag handler, and print feedback
     */

    result = fp->handler( target, player, fp->flagvalue,
                          fp->flagflag, negate );
    if( !result ) {
        notify( player, NOPERM_MESSAGE );
    } else if( !( key & SET_QUIET ) && !Quiet( player ) ) {
        notify( player, ( negate ? "Cleared." : "Set." ) );
        s_Modified( target );
    }
    return;
}