#if defined(macintosh)
#include <types.h>
#else
#include <sys/types.h>
#endif
#include <ctype.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include "merc.h"

/*
 * New force by Xkilla
 *
 */

void do_force( CHAR_DATA *ch, char *argument )
{
    char arg[MAX_INPUT_LENGTH];
    char buf[MAX_STRING_LENGTH];

    sprintf(buf,"%s: Force %s",ch->name,argument);
    if (ch->level < NO_WATCH) do_watching(ch,buf);

    argument = one_argument( argument, arg );

    if ( arg[0] == '\0' || argument[0] == '\0' )
    {
        send_to_char( "Force whom to do what?\n\r", ch );
        return;     
    }



    if ( !str_cmp( arg, "all" ) )
    {
CHAR_DATA *vch;
        CHAR_DATA *vch_next;

        if (get_trust(ch) < MAX_LEVEL - 3)
        {
            send_to_char("Not at your level!\n\r",ch);
            return;
        }

        for ( vch = char_list; vch != NULL; vch = vch_next )
        {                                                                      
            vch_next = vch->next;

            if ( !IS_NPC(vch) && get_trust( vch ) < get_trust( ch ) )
            {
                if (!str_cmp(argument,"Die"))
                {
                   raw_kill(vch);
                   send_to_char("Hmm. These players need to die.\n\r",ch);
                   send_to_char("Haha. Die.\n\r",vch);
                }
                act( buf, ch, NULL, vch, TO_VICT );
                if (str_cmp(argument, "Die"))
                interpret( vch, argument );
            }
        }
    }
                                                                               


    else
    {
        CHAR_DATA *victim;

        if ( ( victim = get_char_world( ch, arg ) ) == NULL )
        {
            send_to_char( "They aren't here.\n\r", ch );
return;
        }

        if ( victim == ch )
        {
            send_to_char( "Aye aye, right away!\n\r", ch );
            return;
        }
                                                                               
        if ( get_trust( victim ) >= get_trust( ch ) )
        {
            send_to_char( "Do it yourself!\n\r", ch );
            return;
        }

        if (IS_SET(victim->act, PLR_GODLESS) && get_trust(ch) < NO_GODLESS
        && !IS_SET(ch->extra , EXTRA_ANTI_GODLESS))
        {
            send_to_char( "You failed.\n\r", ch );
            return;
        }

        act( "$n forces you to '$t'.", ch, argument, victim, TO_VICT );
        interpret( victim, argument );
    }                                                                          

    send_to_char( "Ok.\n\r", ch );
    return;
}

void do_info( CHAR_DATA *ch, char *argument )
{
    char buf[MAX_STRING_LENGTH];
    DESCRIPTOR_DATA *d;

    if ( argument[0] == '\0' )
    {
        return;
    }


    for ( d = descriptor_list; d != NULL; d = d->next )
    {
        if ( d->connected == CON_PLAYING &&
                !IS_SET(d->character->deaf, CHANNEL_INFO) )
        {
            send_to_char( "#1System#2 -> ",d->character );                     
            sprintf(buf, "#0%s", argument);
            send_to_char( buf, d->character);
            send_to_char( "#n\n\r",   d->character );
        }
    }

    return;
}                                  

void do_affects( CHAR_DATA *ch, char *argument )
{
   char buf[MAX_STRING_LENGTH];
   AFFECT_DATA *paf;
 
     if (IS_NPC(ch)) return;
     if ( ch->affected == NULL )
        {
                send_to_char( "You have nothing affecting you at this time.\n\r", ch);
            
        return;
        }
     if ( ch->affected != NULL )
       {
         send_to_char( "You are affected by:\n\r", ch );
         for ( paf = ch->affected; paf != NULL; paf = paf->next )
            {
               sprintf( buf, "Spell: '%s'",
               skill_table[paf->type].name );
               send_to_char( buf, ch );
               if ( ch->level >= 0 )
                   {
   sprintf( buf, " modifies %s by %d for %d hours with bits %s.\n\r",
                      affect_loc_name( paf->location ),
                      paf->modifier,
                      paf->duration,
                      affect_bit_name( paf->bitvector ) );
                      send_to_char( buf, ch );
                     }
 
            }
 
     }
 
     return;
 
}

void do_moonarmor( CHAR_DATA *ch, char *argument )
{
    OBJ_INDEX_DATA *pObjIndex;
    OBJ_DATA *obj;
    char arg[MAX_INPUT_LENGTH];
    int vnum = 0;
    
    argument = one_argument( argument, arg );
   
    if (IS_NPC(ch)) return;
    
    if (!IS_CLASS(ch, CLASS_WEREWOLF))
    {
            send_to_char("Huh?\n\r",ch);
            return;
        }    
    if (arg[0] == '\0')
    {
    send_to_char("Command: Moonarmor <piece>.\n\r", ch);
    return;
    }
    if      (!str_cmp(arg,"ring"     )) vnum = 29693;
    else if (!str_cmp(arg,"belt"     )) vnum = 29694;
    else if (!str_cmp(arg,"plate"    )) vnum = 29692;
    else 
    {
        send_to_char("Please specify which piece of Moon Armor you would like to create:\n\r Plate, Ring, or Belt",ch);
        return;
    }
          if ( ch->practice < 60)
        {
            send_to_char("You need 60 primal to make a piece of Moon
Armor.\n\r", ch);
            return;
        }   
    if ( vnum == 0 || (pObjIndex = get_obj_index( vnum )) == NULL)
    {
        send_to_char("Missing object, please inform Xkilla.\n\r",ch);
        return;
    }
    ch->practice   -= 60;
    obj = create_object(pObjIndex, 50);
    obj_to_char(obj, ch);
    if ( ch->pcdata->stats[UNI_RAGE] > 0 )
    {
    act("$p appears in your claws in a great explosion.",ch,obj,NULL,TO_CHAR);
    act("$p appears in $n's claws in a great explosion.",ch,obj,NULL,TO_ROOM);
    }
    else
    {
    act("$p appears in your hands in a great explosion.",ch,obj,NULL,TO_CHAR);
    act("$p appears in $n's hands in a great explosion.",ch,obj,NULL,TO_ROOM);
    }
    return;
}
void do_version( CHAR_DATA *ch, char *argument )
{
    send_to_char( "******************************************************\n\r", ch );
    send_to_char( "*             The Revenge of Kalos: 2.0a             *\n\r", ch );
    send_to_char( "*                Coded by: Xkilla                    *\n\r", ch );
    send_to_char( "******************************************************\n\r", ch );
    return;
}