#include <sys/types.h>
#include <stdio.h>
#include <string.h>
#include <time.h>
#include "merc.h"
void do_moonbeam( CHAR_DATA *ch, char *argument )
{
CHAR_DATA *victim;
char arg1 [MAX_INPUT_LENGTH];
argument = one_argument( argument, arg1 );
if ( IS_NPC(ch) )
return;
if (!IS_SPHERE(ch, SPHERE_MOON))
{
send_to_char("#0This is a moon Sphere Ability#n\n\r", ch);
return;
}
if (ch->mana < 500)
{
send_to_char("You do not have enough energy to summon a Moonbeam.\n\r",ch);
return;
}
if ( arg1[0] == '\0' )
{
send_to_char( "Who do you wish to strike?\n\r", ch );
return;
}
if ( ( victim = get_char_room( ch, arg1 ) ) == NULL )
{
send_to_char( "They aren't here.\n\r", ch );
return;
}
if (ch == victim) return;
if (is_safe(ch,victim) == TRUE) return;
if (ch->fighting == NULL)
set_fighting(ch,victim);
update_pos(victim);
act("$N is struck by a huge moonbeam.", ch, NULL, victim,TO_CHAR);
act("$N is struck by a deadly beam of moonlight from $n.", ch, NULL, victim,TO_NOTVICT);
act("You are struck by a deadly beam of moonlight!", ch, NULL, victim,TO_VICT);
if (IS_GOOD(victim))
hurt_person(ch,victim, 500);
if (IS_EVIL(victim))
hurt_person(ch,victim, 1000);
if (IS_NEUTRAL(victim))
hurt_person(ch,victim, 750);
ch->mana -= 500;
WAIT_STATE(ch,12);
return;
}
void do_moongate(CHAR_DATA *ch, char *argument)
{
CHAR_DATA *victim;
OBJ_DATA *obj;
char arg [MAX_INPUT_LENGTH];
one_argument( argument, arg );
if (IS_NPC(ch)) return;
if (!IS_SPHERE(ch, SPHERE_MOON))
{
send_to_char("#0This is a moon Sphere Ability#n\n\r", ch);
return;
}
if ( arg[0] == '\0')
{
send_to_char( "Who do you wish to gate to?\n\r", ch );
return;
}
if ( (victim = get_char_world( ch, arg ) ) == NULL )
{
send_to_char("They arent here.\n\r",ch);
return;
}
if( IS_SET(victim->in_room->room_flags, ROOM_ASTRAL))
{
stc( "You can't find it's room.\n\r",ch);
return;
}
if( IS_SET(ch->in_room->room_flags, ROOM_ASTRAL))
{
stc( "Your room is not connected to the astral plane.\n\r",ch);
return;
}
if ( (victim == ch)
|| victim->in_room == NULL
|| (!IS_NPC(victim) && !IS_IMMUNE(victim, IMM_SUMMON) )
|| IS_SET(ch->in_room->room_flags, ROOM_PRIVATE)
// || IS_SET(ch->in_room->room_flags, ROOM_SOLITARY)
|| IS_SET(ch->in_room->room_flags, ROOM_NO_RECALL)
|| IS_SET(victim->in_room->room_flags, ROOM_PRIVATE)
// || IS_SET(victim->in_room->room_flags, ROOM_SOLITARY)
|| IS_SET(victim->in_room->room_flags, ROOM_NO_RECALL)
|| victim->in_room->vnum == ch->in_room->vnum)
{
send_to_char( "You failed.\n\r", ch );
return;
}
// obj = create_object( get_obj_index( OBJ_VNUM_GATE2 ), 0 );
obj->value[0] = victim->in_room->vnum;
obj->value[3] = ch->in_room->vnum;
obj->timer = 5;
if (IS_AFFECTED(ch,AFF_SHADOWPLANE))
obj->extra_flags = ITEM_SHADOWPLANE;
obj_to_room( obj, ch->in_room );
// obj = create_object( get_obj_index( OBJ_VNUM_GATE2 ), 0 );
obj->value[0] = ch->in_room->vnum;
obj->value[3] = victim->in_room->vnum;
obj->timer = 5;
if (IS_AFFECTED(victim,AFF_SHADOWPLANE))
obj->extra_flags = ITEM_SHADOWPLANE;
obj_to_room( obj, victim->in_room );
act( "A look of concentration passes over $n's face.", ch, NULL,NULL, TO_ROOM );
send_to_char("A look of concentration passes over your face.\n\r",ch);
act( "$p appears in front of $n in a beam of moonlight.", ch, obj, NULL, TO_ROOM );
act( "$p appears in front of you in a beam of moonlight.", ch, obj, NULL, TO_CHAR );
act( "$p appears in front of $n in a beam of moonlight.", victim, obj, NULL, TO_ROOM );
act( "$p appears in front of you in a beam of moonlight.", ch, obj, victim, TO_VICT );
return;
}