Will this snippet work as is with tba ?

  • JTP
  • Topic Author
  • Offline
  • Platinum Boarder
  • Platinum Boarder
More
4 years 5 months ago - 4 years 5 months ago #5730 by JTP
Will this work as is, and just change the send_to_char to match tba ? Or what more needs to be changed ??

Or do any of you have a Clan patch that Works with tba ?
in structs.h:

#define CLAN_RANK_INITIATE	1
#define CLAN_RANK_APPRENTICE	2
#define CLAN_RANK_MEMBER	3
#define CLAN_RANK_MASTER	4
#define CLAN_RANK_LEADER	5

#define GET_CLAN_NAME(ch)	((ch)->player_specials->saved.clan_name)
#define GET_CLAN_RANK(ch)	((ch)->player_specials->saved.clan_rank)

#define MAX_CLAN_LENGTH	8

-----------------------------------------------------------------------
in structs.h, struct player_special_data_saved:

	char clan_name[MAX_CLAN_LENGTH+1];	/* clan info to be saved, taerin 5/30/99 */
	int  clan_rank;			/* rank within the clan */

-----------------------------------------------------------------------
Save it in db.c, int load_char:

    strcpy(psds->clan_name, "");	/* taerin: initializing clan names */
    psds->clan_rank = 0;		/* taerin: initializing clan ranks */

-----------------------------------------------------------------------
in db.c, int load_char, case 'C':

	else if ( !strcmp(tag, "ClaN") )
	  strcpy( psds->clan_name, line );
	else if ( !strcmp(tag, "ClaR") )
	  psds->clan_rank = num;

-----------------------------------------------------------------------
in db.c, void save_char:

    if ( psds->clan_name )
        fprintf( outfile, "ClaN: %s\n", GET_CLAN_NAME(ch) );

    if ( psds->clan_rank )
        fprintf( outfile, "ClaR: %d\n", (int)psds->clan_rank );

-----------------------------------------------------------------------
in act.informative.c, ACMD(do_score):

char *get_rank_name(int rank);

  /* clan segment */
        if ( GET_CLAN_RANK(ch) > 0 )
        {
                sprintf( buf, "%s      %sYou are a member (%s) of the %s clan.%s\r\n\r\n",
                         buf, CCCYN(ch, C_NRM) ,get_rank_name(GET_CLAN_RANK(ch)),
                         GET_CLAN_NAME(ch), CCNRM(ch, C_NRM) );
        }

-----------------------------------------------------------------------
in act.informative.c, do_who:

    if ( GET_CLAN_RANK(wch) > 0 )
    {
	strcat( buf, CCCYN(ch, C_NRM) );
	strcat( buf, " [" );
	strcat( buf, GET_CLAN_NAME(wch) );
	strcat( buf, "]" );
	strcat( buf, CCNRM(ch, C_NRM) );
    }

-----------------------------------------------------------------------
in act.wizard.c, void do_stat_character:

	sprintf( buf, "Clan: [%s], Rank: [%s]\r\n",
			GET_CLAN_NAME(k), get_rank_name(GET_CLAN_RANK(k)) );
	send_to_char(buf, ch);

-----------------------------------------------------------------------
in interpreter.c:

ACMD(do_assign)
ACMD(do_clan);
ACMD(do_ctell);
ACMD(do_clan_tell);

  { "assign"   , POS_RESTING , do_assign   , LVL_IMPL, 0 },
  { "clan"     , POS_SLEEPING, do_clan     , 0, 0 },
  { "ctell"    , POS_SLEEPING, do_clan_tell, 0, 0 },

-----------------------------------------------------------------------
in Makefile:

OBJFILES list, add clan.o
CXREF_FILES list, add clan.c

clan.o  : clan.c conf.h sysdep.h structs.h utils.h comm.h db.h interpreter.h handler.h screen.h
        $(CC) -c $(CFLAGS) clan.c

-----------------------------------------------------------------------
and a new file, clan.c:

/*
    clan.c
    wintermute mud
    circlemud 3.0bpl12
    ascii pfile system
    taerin and riverwind 5/29/99
*/

#include "conf.h"
#include "sysdep.h"
#include "structs.h"
#include "utils.h"
#include "comm.h"
#include "db.h"
#include "interpreter.h"
#include "handler.h"
#include "screen.h"

void do_clan_who( struct char_data *ch );
void do_clan_tell( struct char_data *ch, char *msg );
void do_clan_dismiss( struct char_data *ch, struct char_data *victim );
void do_clan_enlist( struct char_data *ch, struct char_data *victim );
void do_clan_promote( struct char_data *ch, struct char_data *victim );
void do_clan_demote( struct char_data *ch, struct char_data *victim );

char *get_rank_name(int rank);

extern struct descriptor_data *descriptor_list;

/* to set up a new clan, implmentor needs to:

    assign <clan> <new_leader>

*/


ACMD(do_clan)
{
    struct char_data *victim = NULL;
    char arg1[MAX_INPUT_LENGTH];
    char arg2[MAX_INPUT_LENGTH];

    if ( !*GET_CLAN_NAME(ch) )
    {
        send_to_char( "You do not belong to any clan.\r\n", ch );
        return;
    }

    half_chop( argument, arg1, arg2 );

    if ( !*arg1 )
    {
        send_to_char( "Usage: clan [ who | tell | resign ]\r\n", ch );

        if ( GET_CLAN_RANK(ch) == CLAN_RANK_LEADER )
        {
            send_to_char( "Also:  clan [ enlist | dismiss | promote | demote ] victim\r\n", ch );
        }

        if ( GET_LEVEL(ch) == LVL_IMPL )
        {
            send_to_char( "Assign leaders: assign <clan> <new_leader>\r\n", ch );
        }

        return;
    }

    /* perform general level functions first */

    if ( is_abbrev( arg1, "who" ) )
    {
        do_clan_who( ch );
        return ;
    }

    if ( is_abbrev( arg1, "tell" ) )
    {
        do_clan_tell( ch, arg2 );
        return ;
    }

    if ( is_abbrev( arg1, "resign" ) )
    {
        do_clan_dismiss( ch, ch );
        return ;
    }

    /* now perform privileged functions */

    if ( GET_CLAN_RANK(ch) != CLAN_RANK_LEADER )
    {
        send_to_char( "You do not have the authority to reorganize the clan.\r\n", ch );
        return;
    }

    if ( !(victim = get_char_room_vis( ch, arg2 )) )
    {
        send_to_char( "That person is not available.\r\n", ch );
        return;
    }

    if ( GET_LEVEL(victim) > (LVL_IMMORT - 1) )
    {
        send_to_char( "Immortals cannot join clans!\r\n", ch );
        return;
    }

    if ( is_abbrev( arg1, "enlist" ) )
    {
        do_clan_enlist( ch, victim );
        return ;
    }

    if ( strcmp(GET_CLAN_NAME(victim), GET_CLAN_NAME(ch)) ) 
    {
        send_to_char( "That person is not in your clan!\r\n", ch );
        return;
    }

    if ( is_abbrev( arg1, "dismiss" ) )
    {
        do_clan_dismiss( ch, victim );
        return ;
    }

    if ( is_abbrev( arg1, "promote" ) )
    {
        do_clan_promote( ch, victim );
        return ;
    }

    if ( is_abbrev( arg1, "demote" ) )
    {
        do_clan_demote( ch, victim );
        return ;
    }
}

void do_clan_who( struct char_data *ch )
{
    struct descriptor_data *d;

    sprintf( buf, "\r\n%s%s clan members online\r\n====/=====================-%s\r\n",
            CCBLU(ch, C_NRM), GET_CLAN_NAME(ch), CCNRM(ch, C_NRM) );
    send_to_char( buf, ch );

    for ( d = descriptor_list; d; d = d->next )
    {
        if (d->connected)
        {
            continue;
        }

        if ( !strcmp(GET_CLAN_NAME(d->character), GET_CLAN_NAME(ch)) )
        {
            sprintf( buf, "%s\r\n", GET_NAME(d->character) );
            send_to_char( buf, ch );
        }
    }

    return;
}

void do_clan_tell( struct char_data *ch, char *msg )
{
    struct descriptor_data *d;

    if ( GET_CLAN_RANK( ch ) < 1 )
    {
        send_to_char( "You need to be an initiate or higher in a clan.\r\n", ch );
        return;
    }

    for ( d = descriptor_list; d; d = d->next )
    {
        if (d->connected)
        {
            continue;
        }

        if ( !strcmp(GET_CLAN_NAME(d->character), GET_CLAN_NAME(ch)) )
        {
            *buf = '\0';

            if ( GET_NAME(d->character) == GET_NAME(ch) )
            {
                sprintf( buf, "%sYou tell the clan, ' %s '%s\r\n",
                    CCCYN(ch, C_NRM), msg, CCNRM(ch, C_NRM) );
                send_to_char( buf, d->character );

            }
            else
            {
                sprintf( buf, "%s%s tells the clan, ' %s '%s\r\n",
                    CCCYN(ch, C_NRM), GET_NAME(ch), msg, CCNRM(ch, C_NRM) );
                send_to_char( buf, d->character );
            }
        }
    }

    return;

}

void do_clan_enlist( struct char_data *ch, struct char_data *victim )
{
    char lbuf[1024];

    if ( !GET_CLAN_RANK(victim) )
    {
        strcpy(GET_CLAN_NAME(victim), GET_CLAN_NAME(ch));
        GET_CLAN_RANK(victim) = CLAN_RANK_INITIATE;

        *lbuf = '\0';

        sprintf( lbuf, "%sWelcome the newest intitiate of %s, %s!%s",
             CCRED(ch, C_NRM), GET_CLAN_NAME(ch), GET_NAME(victim), CCNRM(ch, C_NRM) );
        do_clan_tell(ch, lbuf);
    }
    else
    {
        send_to_char( "That person already belongs to a clan..\r\n", ch );
    }
    return;
}

void do_clan_dismiss( struct char_data *ch, struct char_data *victim )
{
    char lbuf[1024];

    *lbuf = '\0';

    sprintf( lbuf, "%s%s has been dismissed from the clan!%s",
         CCRED(ch, C_NRM), GET_NAME(victim), CCNRM(ch, C_NRM) );
    do_clan_tell(ch, lbuf);

    strcpy(GET_CLAN_NAME(victim), "");
    GET_CLAN_RANK(victim) = 0;

    return;
}

void do_clan_promote( struct char_data *ch, struct char_data *victim )
{
    char lbuf[1024];

    if ( GET_CLAN_RANK(victim) < CLAN_RANK_MASTER )
    {
        GET_CLAN_RANK(victim)++;

        *lbuf = '\0';

        sprintf( lbuf, "%s%s has been promoted in rank to %s!%s",
             CCRED(ch, C_NRM), GET_NAME(victim),
             get_rank_name(GET_CLAN_RANK(victim)), CCNRM(ch, C_NRM) );
        do_clan_tell(ch, lbuf);
    }
    else
    {
        send_to_char( "You can not promote this person any further.\r\n", ch );
    }
    return;
}

void do_clan_demote( struct char_data *ch, struct char_data *victim )
{
    char lbuf[1024];

    if ( GET_CLAN_RANK(victim) > CLAN_RANK_INITIATE )
    {
        GET_CLAN_RANK(victim)--;

        *lbuf = '\0';

        sprintf( lbuf, "%s%s has been demoted in rank to %s!%s",
             CCRED(ch, C_NRM), GET_NAME(victim),
             get_rank_name(GET_CLAN_RANK(victim)), CCNRM(ch, C_NRM) );
        do_clan_tell(ch, lbuf);
    }
    else
    {
        send_to_char( "You can not demote this person any further!\r\n", ch );
    }
   
    return;
}

/* reserved for the implementor only */
ACMD(do_assign)
{
    struct char_data *victim = NULL;
    char arg1[MAX_INPUT_LENGTH];
    char arg2[MAX_INPUT_LENGTH];

    half_chop( argument, arg1, arg2 );

    if ( !*arg1 || !*arg2 )
    {
        send_to_char( "Usage: assign <clan> <leader>\r\n", ch);
        return;
    }

    if ( !(victim = get_char_room_vis( ch, arg2 )) )
    {
        send_to_char( "That person is not available.\r\n", ch );
        return;
    }

    if ( GET_CLAN_RANK(victim) )
    {
        send_to_char( "Can not designate someone already in a clan!\r\n", ch);
        return;
    }

    if ( strlen(arg1) < (MAX_CLAN_LENGTH + 1) )
    {
      strcpy(GET_CLAN_NAME(victim), arg1);
      GET_CLAN_RANK(victim) = 5;

      sprintf( buf, "Assigning clan %s to %s.\r\n", GET_CLAN_NAME(victim), GET_NAME(victim) );
      send_to_char( buf, ch );
    }
    else
    {
        send_to_char( "That clan name exceeds the maximum length allowed.\r\n", ch );
    }

}


char *get_rank_name(int rank)
{
    switch (rank)
    {
        case 1: return "Initiate"; break;
        case 2: return "Apprentice"; break;
        case 3: return "Member"; break;
        case 4: return "Master"; break;
        case 5: return "Leader"; break;
        default: return "Uninitiated"; break;
    }
}
Last edit: 4 years 5 months ago by JTP.

Please Log in or Create an account to join the conversation.

More
4 years 5 months ago #5734 by thomas
Replied by thomas on topic Will this snippet work as is with tba ?
Please login to view the answers

Please Log in or Create an account to join the conversation.

  • JTP
  • Topic Author
  • Offline
  • Platinum Boarder
  • Platinum Boarder
More
4 years 5 months ago - 4 years 5 months ago #5737 by JTP
Replied by JTP on topic Will this snippet work as is with tba ?
Please login to view the answers
Last edit: 4 years 5 months ago by JTP.

Please Log in or Create an account to join the conversation.

More
4 years 5 months ago #5738 by thomas
Replied by thomas on topic Will this snippet work as is with tba ?
Please login to view the answers

Please Log in or Create an account to join the conversation.

  • JTP
  • Topic Author
  • Offline
  • Platinum Boarder
  • Platinum Boarder
More
4 years 5 months ago #5739 by JTP
Replied by JTP on topic Will this snippet work as is with tba ?
Please login to view the answers

Please Log in or Create an account to join the conversation.

More
4 years 5 months ago #5740 by thomas
Replied by thomas on topic Will this snippet work as is with tba ?
Please login to view the answers

Please Log in or Create an account to join the conversation.

  • JTP
  • Topic Author
  • Offline
  • Platinum Boarder
  • Platinum Boarder
More
4 years 5 months ago #5741 by JTP
Replied by JTP on topic Will this snippet work as is with tba ?
Please login to view the answers

Please Log in or Create an account to join the conversation.

  • JTP
  • Topic Author
  • Offline
  • Platinum Boarder
  • Platinum Boarder
More
4 years 5 months ago - 4 years 5 months ago #5742 by JTP
Replied by JTP on topic Will this snippet work as is with tba ?
Please login to view the answers
Last edit: 4 years 5 months ago by JTP.

Please Log in or Create an account to join the conversation.

More
4 years 5 months ago #5743 by thomas
Replied by thomas on topic Will this snippet work as is with tba ?
Please login to view the answers

Please Log in or Create an account to join the conversation.

  • JTP
  • Topic Author
  • Offline
  • Platinum Boarder
  • Platinum Boarder
More
4 years 5 months ago #5745 by JTP
Replied by JTP on topic Will this snippet work as is with tba ?
Please login to view the answers

Please Log in or Create an account to join the conversation.

More
4 years 4 months ago #5842 by rudeboyrave
Replied by rudeboyrave on topic Will this snippet work as is with tba ?
Please login to view the answers

CyberASSAULT
www.cyberassault.org
cyberassault.org 11111
A post-apocalyptic, sci-fi MUD.

Please Log in or Create an account to join the conversation.

  • JTP
  • Topic Author
  • Offline
  • Platinum Boarder
  • Platinum Boarder
More
4 years 4 months ago - 4 years 4 months ago #5843 by JTP
Replied by JTP on topic Will this snippet work as is with tba ?
Please login to view the answers
Last edit: 4 years 4 months ago by JTP.

Please Log in or Create an account to join the conversation.

More
4 years 4 months ago - 4 years 4 months ago #5876 by rudeboyrave
Replied by rudeboyrave on topic Will this snippet work as is with tba ?
Please login to view the answers

CyberASSAULT
www.cyberassault.org
cyberassault.org 11111
A post-apocalyptic, sci-fi MUD.
Last edit: 4 years 4 months ago by rudeboyrave. Reason: cant upload patch???
The following user(s) said Thank You: WhiskyTest

Please Log in or Create an account to join the conversation.

  • JTP
  • Topic Author
  • Offline
  • Platinum Boarder
  • Platinum Boarder
More
4 years 4 months ago #5878 by JTP
Replied by JTP on topic Will this snippet work as is with tba ?
Please login to view the answers

Please Log in or Create an account to join the conversation.

  • JTP
  • Topic Author
  • Offline
  • Platinum Boarder
  • Platinum Boarder
More
4 years 4 months ago - 4 years 4 months ago #5911 by JTP
Replied by JTP on topic Will this snippet work as is with tba ?
Please login to view the answers
Last edit: 4 years 4 months ago by JTP.

Please Log in or Create an account to join the conversation.

More
2 years 8 months ago #7296 by Sascha
Replied by Sascha on topic Will this snippet work as is with tba ?
Please login to view the answers

Will you stand against the coming Storm? After the Breaking: STORMRIDERS MUD - atbmud.dune.net port 4000

Please Log in or Create an account to join the conversation.

More
2 years 8 months ago #7297 by rudeboyrave
Replied by rudeboyrave on topic Will this snippet work as is with tba ?
Please login to view the answers

CyberASSAULT
www.cyberassault.org
cyberassault.org 11111
A post-apocalyptic, sci-fi MUD.
The following user(s) said Thank You: Sascha

Please Log in or Create an account to join the conversation.

More
2 years 8 months ago #7298 by Sascha
Replied by Sascha on topic Will this snippet work as is with tba ?
Please login to view the answers

Will you stand against the coming Storm? After the Breaking: STORMRIDERS MUD - atbmud.dune.net port 4000

Please Log in or Create an account to join the conversation.

  • JTP
  • Topic Author
  • Offline
  • Platinum Boarder
  • Platinum Boarder
More
2 years 8 months ago #7302 by JTP
Replied by JTP on topic Will this snippet work as is with tba ?
Please login to view the answers

Please Log in or Create an account to join the conversation.

More
2 years 8 months ago #7315 by Sascha
Replied by Sascha on topic Will this snippet work as is with tba ?
Please login to view the answers

Will you stand against the coming Storm? After the Breaking: STORMRIDERS MUD - atbmud.dune.net port 4000

Please Log in or Create an account to join the conversation.

Time to create page: 0.254 seconds