swrots/.slog/
swrots/doc/mudprogs/
swrots/gods/
swrots/html/profiles/
swrots/log/
swrots/planets/
swrots/player/
swrots/player/u/
#include <stdio.h>
#include <string.h>
#include <time.h>
#include <unistd.h>
#include <ctype.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <errno.h>
#include "mud.h"

void do_marry( CHAR_DATA *ch, char *argument)
{
  char arg1[MAX_INPUT_LENGTH];
  char arg2[MAX_INPUT_LENGTH];
  char buf[MAX_INPUT_LENGTH];
  CHAR_DATA *vic1;
  CHAR_DATA *vic2;
  
  argument = one_argument(argument, arg1);
  argument = one_argument(argument, arg2);
  
  if (arg1[0] == '\0' || arg2[0] == '\0')
    {
    	send_to_char("Syntax: Marry <victim1> <victim2>\n\r", ch);
    	return;
    }
  
  if ( ( vic1 = get_char_room( ch, arg1 ) ) == NULL )
   {
      sprintf(buf, "%s doesn't appear to be here.\n\r", arg1);
      send_to_char(buf, ch);
      return;
   }

  if ( ( vic2 = get_char_room( ch, arg2 ) ) == NULL )
   {
      sprintf(buf, "%s doesn't appear to be here.\n\r", arg2);
      send_to_char(buf, ch);
      return;
   }  
  
  if(IS_NPC(vic1))
   {
     sprintf(buf, "%s appears to be a mob. Why marry it off to anyone?\n\r", vic1->name);
     send_to_char(buf, ch);
     return;
   }

  if(IS_NPC(vic2))
   {
     sprintf(buf, "%s appears to be a mob. Why marry it off to anyone?\n\r", vic2->name);
     send_to_char(buf, ch);
     return;
   }

  if (!vic1->pcdata->fiance || vic1->pcdata->fiance == NULL || vic1->pcdata->fiance != vic2->name)
   {
      sprintf(buf, "%s is not engaged to %s. Perhaps a proposal would be a good first step.\n\r", vic1->name, vic2->name);
      send_to_char(buf, ch);
      return;
   }
  
  if (!vic2->pcdata->fiance || vic2->pcdata->fiance == NULL || vic2->pcdata->fiance != vic1->name)
   {
      sprintf(buf, "%s is not engaged to %s. Perhaps a proposal would be a good first step.\n\r", vic2->name, vic1->name);
      send_to_char(buf, ch);
      return;
   }
   
  if(vic1->top_level < 5)
   {
     sprintf(buf, "%s is to low a level to get married.\n\r", vic1->name);
     send_to_char(buf, ch);
     return;
   }
   
  if(vic2->top_level < 5)
   {
     sprintf(buf, "%s is to low a level to get married.\n\r", vic2->name);
     send_to_char(buf, ch);
     return;
   }
  if (vic1->sex == SEX_MALE && vic2->sex == SEX_MALE)
    act(AT_WHITE, "Then by the power invested in me by the Republic I now pronounce you Husband and Husband. You may kiss your husband.", ch, NULL, NULL, TO_ROOM);
  else if (vic1->sex == SEX_FEMALE && vic2->sex == SEX_FEMALE)
    act(AT_WHITE, "Then by the power invested in me by the Republic I now pronounce you Wife and Wife. You may kiss your wife.", ch, NULL, NULL, TO_ROOM);
  else if (vic1->sex == SEX_MALE && vic2->sex == SEX_FEMALE)
    act(AT_WHITE, "Then by the power invested in me by the Republic I now pronounce you Husband and Wife. You may kiss your wife.", ch, NULL, NULL, TO_ROOM);
  else
    act(AT_WHITE, "Then by the power invested in me by the Republic I now pronounce you Wife and Husband. You may kiss your husband.", ch, NULL, NULL, TO_ROOM);
  
  vic1->pcdata->spouse = vic2->name;
  vic2->pcdata->spouse = vic1->name;
  /*if (vic1->sex == SEX_MALE && vic2->sex == SEX_FEMALE)
    vic2->pcdata->last_name = vic1->pcdata->last_name;
  else if (vic1->sex == SEX_FEMALE && vic2->sex == SEX_MALE)
    vic1->pcdata->last_name = vic2->pcdata->last_name;
  */ 
  sprintf(buf, "&R(&WMarriage&R} &W%s: I am very pleased to announce that %s and %s are now married.", ch->name, vic1->name, vic2->name);
  echo_to_all(AT_YELLOW, buf, ECHOTAR_ALL);
  return;
}

void do_divorce( CHAR_DATA *ch, char *argument )
{
  CHAR_DATA *vic1;
  CHAR_DATA *vic2;
  char arg1[MAX_INPUT_LENGTH];
  char arg2[MAX_INPUT_LENGTH];
  char buf[MAX_INPUT_LENGTH];
  
  argument = one_argument(argument, arg1);
  argument = one_argument(argument, arg2);
  
  if (arg1[0] == '\0' && arg2[0] == '\0')
   {
     send_to_char("Syntax: Divorce <victim1> <victim2>\n\r", ch);
     return;
   }
  
  if ((vic1 = get_char_room(ch, arg1)) == NULL)
   {
     sprintf(buf, "%s doesn't appear to be here. You should wait for them.\n\r", arg1);
     send_to_char(buf, ch);
     return;
   }
  
  if ((vic2 = get_char_room(ch, arg2)) == NULL)
   {
     sprintf(buf, "%s doesn't appear to be here. You should wait for then.\n\r", arg2);
     send_to_char(buf, ch);
     return;
   }
  
  if (!vic1->pcdata->spouse || vic1->pcdata->spouse == NULL)
   {
     sprintf(buf, "%s doesn't appear to be married.\n\r", vic1->name);
     send_to_char(buf, ch);
     return;
   }

  if (!vic2->pcdata->spouse || vic2->pcdata->spouse == NULL)
   {
     sprintf(buf, "%s doesn't appear to be married.\n\r", vic2->name);
     send_to_char(buf, ch);
     return;
   }
  
  if (vic1->pcdata->spouse != vic2->pcdata->spouse)
   {
     sprintf(buf, "%s is not married to %s\n\r", vic1->name, vic2->name);
     send_to_char(buf, ch);
     return;
   }
  
  vic1->pcdata->spouse = NULL;
  vic2->pcdata->spouse = NULL;
  do_say(ch, "500 credits each please.");
  do_say(ch, "Thank you.");
  ch->gold += 1000;
  vic1->gold -= 500;
  vic2->gold -= 500;
    sprintf(buf, "&R(&WMarriage&R} &W%s: It is my sad duty to anounce that %s and %s are now divorced.", ch->name, vic1->name, vic2->name);
}   

void do_propose( CHAR_DATA *ch, char *argument )
{
  CHAR_DATA *victim;
  char arg[MAX_INPUT_LENGTH];
  char buf[MAX_INPUT_LENGTH];
  
  argument = one_argument(argument, arg);
  
  if (arg[0] == '\0'){
    send_to_char("Syntax: Propose <victim>\n\r", ch);
    return;
  }
  
  if (( victim = get_char_room(ch, arg)) == NULL){
    send_to_char("They aren't here.\n\r", ch);
    return;
  }
  
  if ( ch == victim ){
    send_to_char("Why would you want to propose to yourself?\n\r", ch);
    if (ch->sex == SEX_MALE)
    sprintf(buf, "What a moron. %s proposed to himself.", ch->name);
    else if (ch->sex == SEX_FEMALE)
    sprintf(buf, "What a moron. %s proposed to herself.", ch->name);
    else
    sprintf(buf, "What a moron. %s proposed to itself.", ch->name);
    
    echo_to_all( AT_WHITE, buf, ECHOTAR_ALL );
    return;
  }
  
  
  if ( IS_NPC(victim) ){
    send_to_char("Why would you propose to a mob?\n\r", ch);
    return;
  }
  
  if ( IS_NPC(ch) ){
    send_to_char("Why would a mob propose to someone?\n\r", ch);
    return;
  }
  
  if (victim->pcdata->fiance && victim->pcdata->fiance != NULL){
    send_to_char("They are already engaged.\n\r", ch);
    return;
  }
  
  if (victim->pcdata->spouse && victim->pcdata->spouse != NULL){
    send_to_char("They are already married.\n\r", ch);
  }
  if (victim->pcdata->proposed && victim->pcdata->proposed != NULL){ 
    sprintf(buf, "They have already been proposed to by %s.\n\r", victim->pcdata->proposed);
    return;
  }
  
  if (victim->pcdata->propose && victim->pcdata->propose != NULL){ 
    sprintf(buf, "They have already been proposed to %s.\n\r", victim->pcdata->propose);
    return;
  }
  
  ch->pcdata->propose = victim->name;
  victim->pcdata->proposed = ch->name;
  act(AT_WHITE, "$n gets down on one knee and asks your hand in marriage.", ch, NULL, victim, TO_VICT);
  act(AT_WHITE, "You get down on one knee and ask $N's hand in marriage.", ch, NULL, victim, TO_CHAR);
  act(AT_WHITE, "$n gets down on one knee and asks for $N's hand in marriage.", ch, NULL, victim, TO_NOTVICT);
  return;
}

void do_accept( CHAR_DATA *ch, char *argument ){
  
  CHAR_DATA *victim;
  char arg[MAX_INPUT_LENGTH];
  char buf[MAX_INPUT_LENGTH];
  
  argument = one_argument(argument, arg);
  
  if (arg[0] == '\0'){
    send_to_char("Syntax: Accept <victim>\n\r", ch);
    return;
  }
  
  if (( victim = get_char_room(ch, arg)) == NULL){
    send_to_char("They aren't here.\n\r", ch);
    return;
  }
  
  if (IS_NPC(victim) ){
    send_to_char("You can't accept a mobs proposel cause they can't propose.\n\r", ch);
    return;
  }
  
  if (IS_NPC(ch) ){
    send_to_char("Why would someone propose to you? Your a mob.\n\r", ch);
    return;
  }
  
  
  if (victim->name != ch->pcdata->proposed){
    send_to_char("But they haven't proposed to you.\n\r", ch);
    return;
  }
  
  if (victim->pcdata->propose != ch->name){
    send_to_char("So sad they must have proposed to someone else.\n\r", ch);
    return;
  }
  
  sprintf(buf, "%s has accepted %s's hand in marriage. They will soon be wed.", ch->name, victim->name);
  echo_to_all( AT_WHITE, buf, ECHOTAR_ALL ); 
  ch->pcdata->propose = NULL;
  victim->pcdata->proposed = NULL;
  ch->pcdata->fiance = victim->name;
  victim->pcdata->fiance = ch->name;
  return;
}
 
 
void do_decline( CHAR_DATA *ch, char *argument ){
  
  CHAR_DATA *victim;
  char arg[MAX_INPUT_LENGTH];
  char buf[MAX_INPUT_LENGTH];
  
  argument = one_argument(argument, arg);
  
  if (arg[0] == '\0'){
    send_to_char("Syntax: Accept <victim>\n\r", ch);
    return;
  }
  
  if (( victim = get_char_room(ch, arg)) == NULL){
    send_to_char("They aren't here.\n\r", ch);
    return;
  }
  
  if (IS_NPC(victim) ){
    send_to_char("You can't accept a mobs proposel cause they can't propose.\n\r", ch);
    return;
  }
  
  if (IS_NPC(ch) ){
    send_to_char("Why would someone propose to you? Your a mob.\n\r", ch);
    return;
  }
  
  
  if (victim->name != ch->pcdata->proposed){
    send_to_char("But they haven't proposed to you.\n\r", ch);
    return;
  }
  
  if (victim->pcdata->propose != ch->name){
    send_to_char("So sad they must have proposed to someone else.\n\r", ch);
    return;
  }
  
  sprintf(buf, "%s has declined %s's hand in marriage.", ch->name, victim->name);
  echo_to_all( AT_WHITE, buf, ECHOTAR_ALL ); 
  ch->pcdata->propose = NULL;
  ch->pcdata->proposed = NULL;
  return;
}

void do_spousetalk (CHAR_DATA * ch, char *argument)
{
  char buf[MAX_STRING_LENGTH];
  CHAR_DATA *victim;

  if(!argument || argument[0] == '\0')
    {
      send_to_char ("What would you like to send to your spouse?\n\r", ch);
      return;
    }
  

  if ( ch->position == POS_SLEEPING)
    {
      send_to_char ("In your dreams or what?\n\r", ch);
      return;
    }

if ( ch->position == POS_FIGHTING)
  {
    send_to_char("You should finish what your doing first!\n\r", ch);
    return;
  }
    
  if ( IS_NPC( ch ) )
    {
	send_to_char( "your a mob....thats just wrong!\n\r", ch );
	return;	  
    }
  
  if (!ch->pcdata->spouse)
    {
      send_to_char ("But you are not married!\n\r", ch);
      return;
    }

  if ((victim = get_char_world (ch, ch->pcdata->spouse)) == NULL)
    {
      sprintf (buf, "%s is not connected.\n\r", ch->pcdata->spouse);
      send_to_char (buf, ch);
      return;
    }
    
    sprintf(buf, "&G[&PSpouse&G] &Pto %s: &W%s\n\r", victim->name, argument);
    send_to_char(buf, ch); 
    sprintf(buf, "&G[&PSpouse&G] &P%s Spouse talks: &W%s\n\r", ch->name, argument); 
    send_to_char(buf, victim); 
}