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; }
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; }
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; }
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; }
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; }
/* 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 (¤t_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; } }