#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;
}