EmlenMud2005-2006LOC/
EmlenMud2005-2006LOC/world/
#include <sys/types.h>
#include <ctype.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include "emlen.h"



char *
rNAME (CHAR_DATA * to, CHAR_DATA * ch)
{
  char tmprace[150];
  static char ret[500];
  bool a_an = FALSE;
  ret[0] = '\0';
  tmprace[0] = '\0';
  if (IS_PLAYER (ch) && IS_PLAYER (to) && DIFF_ALIGN(ch, to) && LEVEL(to) < IMM_LEVEL && LEVEL(ch) < IMM_LEVEL && (can_see_nextdoor (ch, to) || can_see (ch, to)))
    {
		// ARC: show neutral race as any other mob
      if( ALIGN (to) == 0 )
	  	  {
                    if (to->pcdata->remort_times == 0)			
                      sprintf(tmprace, "%s", race_info[to->pcdata->race].name);
                   /* else if (to->pcdata->remort_times < 3)
	  	      sprintf(tmprace, "%s %s", PLAYERSIZE2, race_info[to->pcdata->race].name);
                    else if (to->pcdata->remort_times < 6)
      	              sprintf(tmprace, "%s %s", PLAYERSIZE3, race_info[to->pcdata->race].name);
                    else if (to->pcdata->remort_times < 8 && to->pcdata->sex == SEX_FEMALE)
                      sprintf(tmprace, "%s %s", PLAYERSIZE4F, race_info[to->pcdata->race].name);
                    else if (to->pcdata->remort_times < 8)
                      sprintf(tmprace, "%s %s", PLAYERSIZE4, race_info[to->pcdata->race].name);
                    else if (to->pcdata->remort_times == 8 && to->pcdata->sex == SEX_FEMALE)
	              sprintf(tmprace, "%s %s", PLAYERSIZE5F, race_info[to->pcdata->race].name);
                    else if (to->pcdata->remort_times == 8)
	              sprintf(tmprace, "%s %s", PLAYERSIZE5, race_info[to->pcdata->race].name);
*/
			if (!is_first_letter_vowel(race_info[to->pcdata->race].name))
	  			sprintf(tmprace, "A %s", race_info[to->pcdata->race].name);
	  		else
	  			sprintf(tmprace, "An %s", race_info[to->pcdata->race].name);

	  	  }

	  	  else
                    if (to->pcdata->remort_times >= 0)			
				sprintf(tmprace, "+* %s %s *+", PLAYERSIZE1, race_info[to->pcdata->race].name);
                    /*else if (to->pcdata->remort_times < 3)
				sprintf(tmprace, "+* %s %s *+", PLAYERSIZE2, race_info[to->pcdata->race].name);
                    else if (to->pcdata->remort_times < 6)
				sprintf(tmprace, "+* %s %s *+", PLAYERSIZE3, race_info[to->pcdata->race].name);
                    else if (to->pcdata->remort_times < 8 && to->pcdata->sex == SEX_FEMALE)
				sprintf(tmprace, "+* %s %s *+", PLAYERSIZE4F, race_info[to->pcdata->race].name);
                    else if (to->pcdata->remort_times < 8)
				sprintf(tmprace, "+* %s %s *+", PLAYERSIZE4, race_info[to->pcdata->race].name);
                    else if (to->pcdata->remort_times == 8 && to->pcdata->sex == SEX_FEMALE)
				sprintf(tmprace, "+* %s %s *+", PLAYERSIZE5F, race_info[to->pcdata->race].name);
                    else if (to->pcdata->remort_times == 8)
				sprintf(tmprace, "+* %s %s *+", PLAYERSIZE5, race_info[to->pcdata->race].name);

	  	 */ {
			if (!is_first_letter_vowel(race_info[to->pcdata->race].name))
				sprintf(tmprace, "+* A %s *+", race_info[to->pcdata->race].name);
			else
				sprintf(tmprace, "+* An %s *+", race_info[to->pcdata->race].name);

	  	  }

      strcpy (ret, tmprace);
    }
  else
    strcpy (ret, PERS (to, ch));
  return ret;
}

void
replace (CHAR_DATA * ch, char *argy)
{
  DEFINE_COMMAND ("replace", replace, POSITION_DEAD, 0, LOG_ALWAYS, "This command allows you to replace 1 learn for 10 practices or 10 practices for 1 learn.")

    if (!argy || argy[0] == '\0' || (str_cmp (argy, "learns") && str_cmp (argy, "practices")))
    {
      send_to_char ("Format is 'replace <learns>' to convert 1 learn to 10 practices.\n\r", ch);
      send_to_char ("Format is 'replace <practices>' to convert 10 practices to 1 learn.\n\r", ch);
      return;
    }
  if (!str_cmp (argy, "learns"))
    {
      if (ch->pcdata->learn < 1)
	{
	  send_to_char ("You don't have any learns to convert.\n\r", ch);
	  return;
	}
      ch->pcdata->learn--;
      ch->pcdata->practice += 10;
      send_to_char ("Done.\n\r", ch);
      return;
    }
  if (!str_cmp (argy, "practices"))
    {
      if (ch->pcdata->practice < 10)
	{
	  send_to_char ("You don't have 10 practices to convert.\n\r", ch);
	  return;
	}
      ch->pcdata->learn++;
      ch->pcdata->practice -= 10;
      send_to_char ("Done.\n\r", ch);
      return;
    }
  return;
}

/* NOT USED ATM
void do_towers (CHAR_DATA * ch, char *argy)
{
  char buf[100];
  char buff[100];
  DEFINE_COMMAND ("towers", do_towers, POSITION_STANDING, 1, LOG_NORMAL, "This command lists the Tower align bonuses.")
  if (IS_MOB(ch)) return;
  send_to_char("\x1b[1;37m Status of the Towers \n\r", ch);
  send_to_char("\x1b[0;37m----------------------\n\r", ch);
  send_to_char("\x1b[1;37mAttribute        Align\n\n\r", ch);
  sprintf(buf, "\x1b[0;37m   Str             %d\n\r", str_tower);
  send_to_char(buf, ch);
  sprintf(buf, "   Dex             %d\n\r", dex_tower);
  send_to_char(buf, ch);
  sprintf(buf, "   Con             %d\n\r", con_tower);
  send_to_char(buf, ch);
  sprintf(buf, "   Int             %d\n\r", int_tower);
  send_to_char(buf, ch);
  sprintf(buf, "   Wis             %d\n\r", wis_tower);
  send_to_char(buf, ch);
  return;
} */


void do_alliance (CHAR_DATA * ch, char *argy)
{
  char arg1[SML_LENGTH];
  char arg2[SML_LENGTH];
  char buf[500];
  char buff[100];
  int num1 = -1;
  int num2 = -1;

  DEFINE_COMMAND ("alliance", do_alliance, POSITION_STANDING, 1, LOG_NORMAL, "This command lists all of the current alliances and lets imms set alliances.")
    if (IS_MOB(ch)) return;

  if (argy[0] == '\0' || argy == "" || LEVEL(ch) < MAX_LEVEL)
    {
      int i;
      int j;
      buf[0] = '\0';
      send_to_char("This chart tells which sides are allied with which. \n\n\r", ch);
      sprintf (buf, "                    ");
      for (j = 0; j < NUM_ALIGN; j ++)
	{
	  sprintf(buff, "%2d   ", j);
	  strcat(buf, buff);
	}
      strcat(buf, "\n\r");
      send_to_char(buf, ch);
      for (i = 0; i < NUM_ALIGN; i++)
	{
	  sprintf(buf, "\x1b[0;37m%2d. %-15s  ", i, align_info[i].name);
	  for (j = 0; j < NUM_ALIGN; j++)
	    {
	      if (alliance[i][j] == TRUE)
		strcat(buf, "\x1b[1;37mY    ");
	      else
		strcat(buf, "\x1b[1;30mN    ");
	    }
	  strcat(buf, "\n\r");
	  send_to_char(buf, ch);
	}
      return;
    }
  argy = one_argy(argy, arg1);
  argy = one_argy(argy, arg2);
  if (!is_number(arg1) || !is_number(arg2))
    {
      send_to_char ("Syntax: alliance <num1> <num2>\n\r", ch);
      return;
    }
  num1 = atoi(arg1);
  num2 = atoi(arg2);
  if (num1 < 0 || num1 >= NUM_ALIGN || num2 <0 || num2 >= NUM_ALIGN)
    {
      send_to_char("The numbers you pick for the alignments must be at least 0 and less than the number of alignments.\n\r", ch);
      return;
    }
  if (num1 == num2)
    {
      send_to_char("A side cannot be set against itself\n\r", ch);
      alliance[num1][num2] = TRUE;
      fwrite_alliance_data();
    }
  if (alliance[num1][num2] && alliance[num2][num1])
    {
      sprintf(buf, "Ok, ending the alliance between the %s and the %s\n\r", align_info[num1].name, align_info[num2].name);
      send_to_char(buf, ch);
      alliance[num1][num2] = FALSE;
      alliance[num2][num1] = FALSE;
      fwrite_alliance_data();
      return;
    }
  else
    {
       sprintf(buf, "Ok, creating an alliance between the %s and the %s\n\r", align_info[num1].name, align_info[num2].name);
      send_to_char(buf, ch);
      alliance[num1][num2] = TRUE;
      alliance[num2][num1] = TRUE;
      fwrite_alliance_data();
      return;
    }
  return;
}

/* ARC:
	Included this utility for better english.
 */

bool is_first_letter_vowel ( char* sample )
{
	if( sample[0] == 'a' ||
		sample[0] == 'A' ||
		sample[0] == 'e' ||
		sample[0] == 'E' ||
		sample[0] == 'i' ||
		sample[0] == 'I' ||
		sample[0] == 'o' ||
		sample[0] == 'O' ||
		sample[0] == 'u' ||
		sample[0] == 'U' )

		return true;

	return false;

}