Пример #1
0
void do_gpeace( CHAR_DATA *ch, char *argument )
{
    if (IS_NPC(ch)) return;
    if (!IS_CLASS(ch, CLASS_ANGEL))
    {
        send_to_char("Huh?\n\r",ch);
        return;
    }
    if (ch->pcdata->powers[ANGEL_PEACE] < 1)
    {
        send_to_char("Your not peaceful enough.\n\r",ch);
        return;
    }
    if (has_timer(ch)) return;
    if (IS_AFFECTED(ch, AFF_PEACE))
    {
        REMOVE_BIT(ch->affected_by, AFF_PEACE);
        act("Time to punish the unbelievers.",  ch, NULL, NULL, TO_CHAR);
        act("$n looks wicked.",  ch, NULL, NULL, TO_ROOM);
        return;
    }
    SET_BIT(ch->affected_by, AFF_PEACE);
    act("The almighty hand of God protects you from further harm.", ch, NULL, NULL, TO_CHAR);
    act("$n smiles, seems God is on $s side.", ch, NULL, NULL, TO_ROOM);
    return;
}
Пример #2
0
void do_martyr( CHAR_DATA *ch, char *argument )
{
    CHAR_DATA *ich;

    if (IS_NPC(ch)) return;
    if (!IS_CLASS(ch, CLASS_ANGEL))
    {
        send_to_char("Huh?\n\r",ch);
        return;
    }
    if (ch->pcdata->powers[ANGEL_LOVE] < 5)
    {
        send_to_char("Your love for mortals are not strong enough.\n\r",ch);
        return;
    }
    if (ch->hit < ch->max_hit)
    {
        send_to_char("Your body cannot take the strain.\n\r",ch);
        return;
    }
    if (has_timer(ch)) return;
    ch->level = 12;
    act("You call for God to transfer the pain of these mortals to yourself.", ch, NULL, NULL, TO_CHAR);
    act("$n says '#yLet not these followers of God suffer, let their pain be mine instead#n'.", ch, NULL, NULL, TO_ROOM);
    for (ich = ch->in_room->people; ich != NULL; ich = ich->next_in_room)
        if (!IS_NPC(ich)) do_restore(ch,ich->pcdata->switchname);
    ch->level = 3;
    ch->hit = 1;
    ch->move = 1;
    ch->mana = 1;
    WAIT_STATE(ch,6);
    return;
}
Пример #3
0
void do_spiritform( CHAR_DATA *ch, char *argument )
{
    if (IS_NPC(ch)) return;
    if (!IS_CLASS(ch, CLASS_ANGEL))
    {
        send_to_char("Huh?\n\r",ch);
        return;
    }
    if (ch->pcdata->powers[ANGEL_PEACE] < 2)
    {
        send_to_char("Your not peaceful enough.\n\r",ch);
        return;
    }
    if (has_timer(ch)) return;
    if (IS_AFFECTED(ch, AFF_ETHEREAL))
    {
        REMOVE_BIT(ch->affected_by, AFF_ETHEREAL);
        act("You regain your form and become solid.",  ch, NULL, NULL, TO_CHAR);
        act("$n regains $s form and becomes solid again.",  ch, NULL, NULL, TO_ROOM);
        return;
    }
    SET_BIT(ch->affected_by, AFF_ETHEREAL);
    act("You transform into pure spiritual matter.", ch, NULL, NULL, TO_CHAR);
    act("$n glows and fades into a form of pure energy.", ch, NULL, NULL, TO_ROOM);
    return;
}
Пример #4
0
void do_houseofgod( CHAR_DATA *ch, char *argument )
{
    if (IS_NPC(ch)) return;
    if (!IS_CLASS(ch, CLASS_ANGEL))
    {
        send_to_char("Huh?\n\r",ch);
        return;
    }
    if (ch->pcdata->powers[ANGEL_PEACE] < 5)
    {
        send_to_char("Your not peaceful enough.\n\r",ch);
        return;
    }
    if (has_timer(ch)) return;
    if (ch->pcdata->powers[ANGEL_PEACE_COUNTER] > 0)
    {
        send_to_char("It is not the time for peace yet, God wants you to fight.\n\r",ch);
        return;
    }
    ch->pcdata->powers[ANGEL_PEACE_COUNTER] = 50;
    ch->level = 12;
    do_peace(ch,"");
    ch->level = 3;
    act("You call for God to transfer the pain of these mortals to yourself.", ch, NULL, NULL, TO_CHAR);
    act("$n says '#yLet not these followers of God suffer, let their pain be mine instead#n'.", ch, NULL, NULL, TO_ROOM);
    WAIT_STATE(ch, 24);
    return;
}
Пример #5
0
void do_shadowshift( CHAR_DATA *ch, char *argument )
{
    OBJ_DATA *obj;
    char      arg [MAX_INPUT_LENGTH];
    argument = one_argument( argument, arg );

    if (IS_NPC(ch)) return;
    if (!IS_CLASS(ch, CLASS_WIZARD))
    {
        send_to_char("Huh?\n\r",ch);
        return;
    }
    if (IS_CLASS(ch, CLASS_WIZARD) && ch->pcdata->powers[WL_SKILLS] < 3)
    {
        send_to_char("You need Level 3 in Wizard Skills.\n\r",ch);
        return;
    }
    if ( arg[0] == '\0' )
    {
        if (!IS_AFFECTED(ch, AFF_SHADOWPLANE))
        {
            if (has_timer(ch)) return;
            send_to_char("You fade into the plane of shadows.\n\r",ch);
            act("The shadows flicker and swallow up $n.",ch,NULL,NULL,TO_ROOM);
            SET_BIT(ch->affected_by, AFF_SHADOWPLANE);
            do_look(ch,"auto");
            return;
        }
        REMOVE_BIT(ch->affected_by, AFF_SHADOWPLANE);
        send_to_char("You fade back into the real world.\n\r",ch);
        act("The shadows flicker and $n fades into existance.",ch,NULL,NULL,TO_ROOM);
        do_look(ch,"auto");
        return;
    }

    if ( ( obj = get_obj_here( ch, arg ) ) == NULL )
    {
        send_to_char( "What do you wish to toss into the shadow plane?\n\r", ch );
        return;
    }

    if (IS_AFFECTED(ch, AFF_SHADOWPLANE))
        send_to_char( "You toss it to the ground and it vanishes.\n\r", ch );
    else
        send_to_char( "You toss it into a shadow and it vanishes.\n\r", ch );
    return;
}
Пример #6
0
/* Start writing a note */
static void do_nwrite (CHAR_DATA *ch, char *argument)
{
	char *strtime;
	char buf[200];
	
	if (IS_NPC(ch)) /* NPC cannot post notes */
		return;

        //if ((get_age(ch) - 17) < 2)
        //{
        //  send_to_char("Newbies cannot write notes.\n\r",ch);
        //  return;
       // }
        if (has_timer(ch)) return;
        if (IS_SET(ch->act, PLR_SILENCE) )
        {
          send_to_char("You are not allowed to write notes.\n\r",ch);
          return;
        }

	if (ch->pcdata->board == NULL) {
	send_to_char("You're not on a board.\n\r", ch );
	return;}

	if (get_trust(ch) < ch->pcdata->board->write_level)
	{
		send_to_char ("You cannot post notes on this board.\n\r",ch);
		return;
	}
	
        if (ch->position != POS_STANDING)
        {
          send_to_char("You can only write notes while standing.\n\r", ch);
          return;
        }
	
	/* continue previous note, if any text was written*/ 
	if (ch->pcdata->in_progress && (!ch->pcdata->in_progress->text))
	{
		send_to_char ("Note in progress cancelled because you did not manage to write any text \n\r"
		              "before losing link.\n\r\n\r",ch);
		free_note (ch->pcdata->in_progress);		              
		ch->pcdata->in_progress = NULL;
	}
	
	
	if (!ch->pcdata->in_progress)
	{
		ch->pcdata->in_progress = new_note();
		ch->pcdata->in_progress->sender = str_dup (ch->pcdata->switchname);

		/* convert to ascii. ctime returns a string which last character is \n, so remove that */	
		strtime = ctime (&current_time);
		strtime[strlen(strtime)-1] = '\0';
	
		ch->pcdata->in_progress->date = str_dup (strtime);
	}

  SET_BIT(ch->extra, EXTRA_AFK);
        if (ch->master) stop_follower(ch, FALSE);    
	act (BOLD GREEN "$n starts writing a note." NO_COLOR , ch, NULL, NULL, TO_ROOM);
	
	/* Begin writing the note ! */
	xprintf (buf, "You are now %s a new note on the " BOLD "%s" NO_COLOR " board.\n\r"
	              "If you are using tintin, type #verbose to turn off alias expansion!\n\r\n\r",
	               ch->pcdata->in_progress->text ? "continuing" : "posting",
	               ch->pcdata->board->short_name);
	send_to_char (buf,ch);
	
	xprintf (buf, BOLD YELLOW "From" NO_COLOR ":    %s\n\r\n\r", ch->pcdata->switchname);
	send_to_char (buf,ch);

	if (!ch->pcdata->in_progress->text) /* Are we continuing an old note or not? */
	{
		switch (ch->pcdata->board->force_type)
		{
		case DEF_NORMAL:
			xprintf (buf, "If you press Return, default recipient \"" BOLD "%s" NO_COLOR "\" will be chosen.\n\r",
					  ch->pcdata->board->names);
			break;
		case DEF_INCLUDE:
			xprintf (buf, "The recipient list MUST include \"" BOLD "%s" NO_COLOR "\". If not, it will be added automatically.\n\r",
						   ch->pcdata->board->names);
			break;
	
		case DEF_EXCLUDE:
			xprintf (buf, "The recipient of this note must NOT include: \"" BOLD "%s" NO_COLOR "\".",
						   ch->pcdata->board->names);
	
			break;
		}			
		
		send_to_char (buf,ch);
		send_to_char ("\n\r" BOLD YELLOW "To" NO_COLOR ":      ",ch);
	
		ch->desc->connected = CON_NOTE_TO;
		/* nanny takes over from here */
		
	}
	else /* we are continuing, print out all the fields and the note so far*/
	{
		xprintf (buf, BOLD YELLOW "To" NO_COLOR ":      %s\n\r"
		              BOLD YELLOW "Expires" NO_COLOR ": %s\n\r"
		              BOLD YELLOW "Subject" NO_COLOR ": %s\n\r", 
		               ch->pcdata->in_progress->to_list,
		               ctime(&ch->pcdata->in_progress->expire),
		               ch->pcdata->in_progress->subject);
		send_to_char (buf,ch);
		send_to_char (BOLD GREEN "Your note so far:\n\r" NO_COLOR,ch);
		if (ch->pcdata->in_progress != NULL)
		send_to_char (ch->pcdata->in_progress->text,ch);
		
		send_to_char ("\n\rEnter text. Type " BOLD "~" NO_COLOR " or " BOLD "END" NO_COLOR " on an empty line to end note.\n\r"
		                    "=======================================================\n\r",ch);
		

		ch->desc->connected = CON_NOTE_TEXT;		            

	}
	
}