#if defined(macintosh) #include <types.h> #else #include <sys/types.h> #endif #include <stdio.h> #include <stdlib.h> #include <string.h> #include <time.h> #include "merc.h" #include "angel.h" #include "player.h" #include "commands.h" /* * Local Functions */ void do_angelgift( CHAR_DATA *ch, char *argument) { CHAR_DATA *victim; char arg1 [MAX_INPUT_LENGTH]; char arg2 [MAX_INPUT_LENGTH]; int gift = 0; int cost = 0; char *col; smash_tilde(argument); argument = one_argument( argument, arg1 ); argument = one_argument( argument, arg2 ); if (IS_NPC(ch)) return; if (!IS_CLASS(ch, CLASS_ANGEL)) { send_to_char("Huh?\n\r",ch); return; } if ( arg1[0] == '\0' || arg2[0] == '\0' ) { send_to_char("Syntax: angelgift (person) (gift)\n\r",ch); send_to_char("{C*{c---------------{C*{c-------{C*{c------------{C*{c-------------------------{C*{x\n\r",ch); send_to_char("{c|{W Gift: {c|{W Price {c|{W Command: {c|{W What it does {c|{x\n\r",ch); ch_printf(ch, "{C*{c---------------{C*{c-------{C*{c------------{C*{c-------------------------{C*{x\n\r"); col = "{D"; ch_printf(ch, "{c|%s Angfly {c|%s Free {c|%s angfly {c|%s travel command {c|{x\n\r", col, col, col,col); col = IS_ANGPOWER(ch,ANG_WINGS) ? "{D" : "{W"; ch_printf(ch, "{c|%s Wings {c|%s 2000 {c|%s angelwings {c|%s fly {c|{x\n\r", col, col, col,col ); col = IS_ANGPOWER(ch,ANG_TOUGHNESS) ? "{D" : "{W"; ch_printf(ch,"{c|%s Toughness {c|%s 9000 {c|%s automatic {c|%s toughness {c|{x\n\r", col, col, col,col); col = IS_ANGPOWER(ch,ANG_STRENGTH) ? "{D" : "{W"; ch_printf(ch,"{c|%s GodStrength {c|%s 9000 {c|%s automatic {c|%s extra damcap {c|{x\n\r", col, col, col,col); col = IS_ANGPOWER(ch,ANG_SCRY) ? "{D" : "{W"; ch_printf(ch,"{c|%s Scry {c|%s 7500 {c|%s scry {c|%s see location of someone {c|{x\n\r", col, col, col,col); col = IS_ANGPOWER(ch,ANG_READAURA) ? "{D" : "{W"; ch_printf(ch,"{c|%s Readaura {c|%s 7500 {c|%s readaura {c|%s read someones stats {c|{x\n\r", col, col, col,col); col = IS_ANGPOWER(ch,ANG_GODLYSIGHT) ? "{D" : "{W"; ch_printf(ch,"{c|%s Godlysight {c|%s 7500 {c|%s godlysight {c|%s truesight {c|{x\n\r", col, col, col,col); col = IS_ANGPOWER(ch,ANG_SPEED) ? "{D" : "{W"; ch_printf(ch,"{c|%s Speed {c|%s 9000 {c|%s automatic {c|%s dodge/hit more {c|{x\n\r", col, col, col,col); col = IS_ANGPOWER(ch,ANG_HALO) ? "{D" : "{W"; ch_printf(ch,"{c|%s Halo {c|%s 15000 {c|%s anghalo {c|%s hitroll/damroll + damcap{c|{x\n\r", col, col, col,col); col = IS_ANGPOWER(ch,ANG_SHIELD_OF_GOD) ? "{D" : "{W"; ch_printf(ch,"{c|%s Shield {c|%s 15000 {c|%s shield {c|%s shield your aura {c|{x\n\r", col, col, col,col); col = IS_ANGPOWER(ch,ANG_ETHERFORM) ? "{D" : "{W"; ch_printf(ch,"{c|%s Etherform {c|%s 25000 {c|%s etherform {c|%s etherform {c|{x\n\r", col, col, col,col); col = IS_ANGPOWER(ch,ANG_MULTIARM) ? "{D" : "{W"; ch_printf(ch,"{c|%s MultiArm {c|%s 50000 {c|%s multiarm {c|%s stun someone in a fight {c|{x\n\r", col, col, col,col); col = IS_ANGPOWER(ch,ANG_TRUEFORM) ? "{D" : "{W"; ch_printf(ch,"{c|%s Trueform {c|%s 50000 {c|%s trueform {c|%s like demonform {c|{x\n\r", col, col, col,col); col = IS_ANGPOWER(ch,ANG_TOUCH) ? "{D" : "{W"; ch_printf(ch,"{c|%s Touch {c|%s 50000 {c|%s touch {c|%s changes vict alignment {c|{x\n\r", col, col, col,col); col = IS_ANGPOWER(ch,ANG_WRAITH_OF_GOD) ? "{D" : "{W"; ch_printf(ch,"{c|%s Wraith of God {c|%s 75000 {c|%s wraith {c|%s ff/curse/web/etc. {c|{x\n\r", col, col, col,col); col = IS_ANGPOWER(ch,ANG_CHIMERA) ? "{D" : "{W"; ch_printf(ch,"{c|%s Chimera Form {c|%s 75000 {c|%s chimera {c|%s Turn into a Chimera {c|{x\n\r", col, col, col,col); send_to_char("{C*{c---------------{C*{c-------{C*{c------------{C*{c-------------------------{C*{x\n\r",ch); return; } if ( ( victim = get_char_room( ch, arg1) ) == NULL ) { send_to_char( "They aren't here.\n\r",ch); return; } if ( IS_NPC(victim) ) { send_to_char("Not on NPC's.\n\r",ch); return; } if (!str_cmp(arg2,"prince")) { if (victim == ch) { send_to_char("Not on yourself!\n\r",ch); return; } if (ch->pcdata->stats[UNI_GEN] < 2) { send_to_char("Only an Archangel has the power to make princes.\n\r",ch); return; } if (IS_SET(victim->special,SPC_PRINCE)) { send_to_char("You have lost your princehood!\n\r",victim); send_to_char("You remove their princehood.\n\r",ch); REMOVE_BIT(victim->special, SPC_PRINCE); } else { send_to_char("You have been made a prince!\n\r",victim); send_to_char("You make them a prince.\n\r",ch); SET_BIT(victim->special, SPC_PRINCE); } save_char_obj(victim); return; } if (!str_cmp(arg2,"wings")) {gift = ANG_WINGS; cost = 2000;} else if (!str_cmp(arg2,"toughness")) {gift = ANG_TOUGHNESS; cost = 9000;} else if (!str_cmp(arg2,"godstrength")) {gift = ANG_STRENGTH; cost = 9000;} else if (!str_cmp(arg2,"godlysight")) {gift = ANG_GODLYSIGHT; cost = 7500;} else if (!str_cmp(arg2,"scry")) {gift = ANG_SCRY; cost = 7500;} else if (!str_cmp(arg2,"readaura")) {gift = ANG_READAURA; cost = 7500;} else if (!str_cmp(arg2,"speed")) {gift = ANG_SPEED; cost = 9000;} else if (!str_cmp(arg2,"halo")) {gift = ANG_HALO; cost = 15000;} else if (!str_cmp(arg2,"multiarm")) {gift = ANG_MULTIARM; cost = 50000;} else if (!str_cmp(arg2,"wraith of god")) {gift = ANG_WRAITH_OF_GOD; cost = 75000;} else if (!str_cmp(arg2,"trueform")) {gift = ANG_TRUEFORM; cost = 50000;} else if (!str_cmp(arg2,"shield")) {gift = ANG_SHIELD_OF_GOD; cost = 15000;} else if (!str_cmp(arg2,"chimera")) {gift = ANG_CHIMERA; cost = 75000;} else if (!str_cmp(arg2,"etherform")) {gift = ANG_ETHERFORM; cost = 25000;} else if (!str_cmp(arg2,"touch")) {gift = ANG_TOUCH; cost = 50000;} else { send_to_char("Syntax: angelgift (person) (gift)\n\r",ch); send_to_char("{C*{c---------------{C*{c-------{C*{c------------{C*{c-------------------------{C*{x\n\r",ch); send_to_char("{c|{W Gift: {c|{W Price {c|{W Command: {c|{W What it does {c|{x\n\r",ch); send_to_char("{C*{c---------------{C*{c-------{C*{c------------{C*{c-------------------------{C*{x\n\r",ch); send_to_char("{c|{W Wings {c|{W 2000 {c|{W angelwings {c|{W fly {c|{x\n\r",ch); send_to_char("{c|{W Toughness {c|{W 9000 {c|{W automatic {c|{W toughness {c|{x\n\r",ch); send_to_char("{c|{W GodStrength {c|{W 9000 {c|{W automatic {c|{W extra damcap {c|{x\n\r",ch); send_to_char("{c|{W Scry {c|{W 7500 {c|{W scry {c|{W see location of someone {c|{x\n\r",ch); send_to_char("{c|{W Readaura {c|{W 7500 {c|{W readaura {c|{W read someones stats {c|{x\n\r",ch); send_to_char("{c|{W Godlysight {c|{W 7500 {c|{W godlysight {c|{W truesight {c|{x\n\r",ch); send_to_char("{c|{W Speed {c|{W 9000 {c|{W automatic {c|{W dodge/hit more {c|{x\n\r",ch); send_to_char("{c|{W Halo {c|{W 15000 {c|{W anghalo {c|{W hitroll/damroll + damcap{c|{x\n\r",ch); send_to_char("{c|{W MultiArm {c|{W 50000 {c|{W multiarm {c|{W stun someone in a fight {c|{x\n\r",ch); send_to_char("{c|{W Trueform {c|{W 50000 {c|{W trueform {c|{W like demonform {c|{x\n\r",ch); send_to_char("{c|{W Etherform {c|{W 25000 {c|{W etherform {c|{W etherform {c|{x\n\r",ch); send_to_char("{c|{W Shield {c|{W 15000 {c|{W shield {c|{W shield your aura {c|{x\n\r",ch); send_to_char("{c|{W Wraith of God {c|{W 75000 {c|{W wraith {c|{W ff/curse/web/etc. {c|{x\n\r",ch); send_to_char("{c|{W Angfly {c|{W 15000 {c|{W angfly {c|{W travel command {c|{x\n\r",ch); send_to_char("{c|{W Touch {c|{W 50000 {c|{W touch {c|{W changes vict alignment {c|{xx\n\r",ch); send_to_char("{C*{c---------------{C*{c-------{C*{c------------{C*{c-------------------------{C*{x\n\r",ch); /* send_to_char("Wraith of God [75000] \n\r",ch);*/ return; } if (IS_ANGPOWER(ch, gift)) { send_to_char("God has already given you that gift.\n\r",ch); return; } if (ch->pcdata->stats[DEMON_CURRENT] < cost) { send_to_char("You don't have enough cps to gift that.\n\r",ch); return; } SET_BIT(ch->pcdata->powers[APOWER_FLAGS], gift); ch->pcdata->stats[DEMON_CURRENT] -= cost; if (victim != ch) send_to_char("You have been granted a gift from god.\n\r",ch); send_to_char("Ok.\n\r",ch); save_char_obj(ch); return; } void do_angelwings( CHAR_DATA *ch, char *argument ) { char arg [MAX_INPUT_LENGTH]; argument = one_argument( argument, arg ); if (IS_NPC(ch)) return; if (!IS_CLASS(ch, CLASS_ANGEL)) { send_to_char("Huh?\n\r",ch); return; } if (!IS_ANGPOWER( ch, ANG_WINGS)) { send_to_char("God hasn't given you your wings.\n\r",ch); return; } if (arg[0] != '\0') { { send_to_char("\n\r",ch); } if (!str_cmp(arg,"spread") || !str_cmp(arg,"s")) { if (IS_ANGAFF(ch,ANG_SPREAD) ) { send_to_char("Your wings are already spread.\n\r",ch); return; } send_to_char("You spread your wings and start flying.\n\r",ch); act("$n spreads its wings and starts to fly.\n\r",ch,NULL,NULL,TO_ROOM); SET_BIT(ch->pcdata->powers[APOWER_CURRENT], ANG_SPREAD); return; } else if (!str_cmp(arg,"unspread") || !str_cmp(arg,"u")) { if (!IS_ANGAFF(ch,ANG_SPREAD) ) { send_to_char("Your wings aren't spread.\n\r",ch); return; } send_to_char("Your wings close up behind your back.\n\r",ch); act("$n's wings close up behind its back.",ch, NULL,NULL, TO_ROOM); REMOVE_BIT(ch->pcdata->powers[APOWER_CURRENT], ANG_SPREAD); return; } else { send_to_char("Do you want to SPREAD or CLOSE your wings?\n\r",ch); return; } } if (IS_ANGAFF(ch,ANG_WINGS) ) { if (IS_ANGAFF(ch,ANG_SPREAD) ) { send_to_char("Your wings close up behind your back.\n\r",ch); act("$n's wings close up behind its back.\n\r",ch,NULL,NULL,TO_ROOM); REMOVE_BIT(ch->pcdata->powers[APOWER_CURRENT], ANG_SPREAD); } send_to_char("Your wings dissapear behind your back.\n\r",ch); act("$n's wings disappear behind its back.",ch,NULL,NULL, TO_ROOM); REMOVE_BIT(ch->pcdata->powers[APOWER_CURRENT], ANG_WINGS); return; } send_to_char("Wings grow from your back.\n\r",ch); act("Wings grow from behind $n's back.",ch,NULL,NULL,TO_ROOM); SET_BIT(ch->pcdata->powers[APOWER_CURRENT], ANG_WINGS); if (!IS_SET(ch->affected_by,AFF_FLYING)) { SET_BIT(ch->affected_by,AFF_FLYING); } return; } void do_godlysight( 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 (!IS_ANGPOWER(ch, ANG_GODLYSIGHT) ) { send_to_char("God has not gifted you his sight.\n\r",ch); return; } if (IS_SET(ch->act, PLR_HOLYLIGHT) ) { REMOVE_BIT(ch->act, PLR_HOLYLIGHT); send_to_char("God stops assisting you with sight.\n\r",ch); } else { send_to_char("God answers your wishes and gives you his sight.\n\r",ch); SET_BIT(ch->act, PLR_HOLYLIGHT); } return; } void do_etherform( 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 (!IS_ANGPOWER(ch, ANG_ETHERFORM) ) { send_to_char("God has not given you the power to turn ethereal.\n\r",ch); return; } if (IS_AFFECTED(ch, AFF_ETHEREAL) ) { REMOVE_BIT(ch->affected_by, AFF_ETHEREAL); send_to_char("You shift back into the normal plane of existance.\n\r",ch); } else { send_to_char("You shift into the plane of angelic existance.\n\r",ch); SET_BIT(ch->affected_by, AFF_ETHEREAL); } return; } void do_wraithofgod( CHAR_DATA *ch, char *argument) { char arg[MAX_INPUT_LENGTH]; CHAR_DATA *victim; int dam; one_argument( argument, arg ); if (IS_NPC(ch)) return; if (!IS_CLASS(ch, CLASS_ANGEL)) { send_to_char("Huh?\n\r",ch); return; } if ( arg[0] == '\0' ) { send_to_char("Bestow the Wraith of god against whom?\n\r",ch); return; } if ( ( victim = get_char_room( ch, arg ) ) == NULL ) { send_to_char("You can't seem to find them here.\n\r",ch); return; } if ( victim == ch ) { send_to_char("God does not approve of suicide.\n\r",ch); return; } if ( !IS_ANGPOWER(ch, ANG_WRAITH_OF_GOD)) { send_to_char("You don't have the Wraith of God to assist you.\n\r",ch); return; } if ( is_safe( ch, victim )) return; if ( IS_CLASS(victim, CLASS_ANGEL)) { send_to_char("You cannot summon the Wraith of God on another angel!\n\r",ch); return; } /* if ( (ch->pcdata->stats[ANGEL_TOTAL] < 5000 )) { send_to_char("It costs 5000 angel points to use this power..\n\r",ch); return; } */ if ( IS_GOOD(victim)) { dam = number_range(2500, 7500); if ( dam <= 7500 ) { SET_BIT(victim->affected_by, AFF_CURSE); SET_BIT(victim->affected_by, AFF_FAERIE_FIRE); SET_BIT(victim->affected_by, AFF_WEBBED); } } if ( IS_EVIL(victim)) { dam = number_range(8501,15000); if ( dam <= 7500 ) { SET_BIT(victim->affected_by, AFF_CURSE); SET_BIT(victim->affected_by, AFF_FAERIE_FIRE); SET_BIT(victim->affected_by, AFF_WEBBED); } } else { dam = number_range(7501, 12000); if ( dam >= 7501); { SET_BIT(victim->affected_by, AFF_CURSE); SET_BIT(victim->affected_by, AFF_FAERIE_FIRE); SET_BIT(victim->affected_by, AFF_WEBBED); } } if (!IS_NPC(victim)) dam /= 3; ch_printf( ch, "{wYour #.Wraith of {WGod{w strikes %s {B[{w%d{B]{x", victim->name, dam ); ch_printf( victim, "{w%s's #.Wraith of {WGod{w strikes you! {B[{w%d{B]{x", ch->name, dam ); hurt_person( ch, victim, dam, FALSE ); multi_hit( ch, victim, TYPE_UNDEFINED ); WAIT_STATE(ch, 12); return; } void do_touch( CHAR_DATA *ch, char *argument ) { CHAR_DATA *victim; char arg[MAX_INPUT_LENGTH]; char buf[MAX_STRING_LENGTH]; if (IS_NPC(ch)) return; one_argument( argument, arg ); if (!IS_CLASS(ch, CLASS_ANGEL)) { send_to_char("Huh?\n\r",ch); return; } if ( arg[0] == '\0' ) { send_to_char("Angel Touch whom?\n\r",ch); return; } if ( ( victim = get_char_room( ch, arg ) ) == NULL ) { send_to_char("You can't seem to find them here.\n\r",ch); return; } if ( victim == ch ) { send_to_char("God does not approve of suicide.\n\r",ch); return; } if (!IS_ANGPOWER(ch, ANG_TOUCH)) { send_to_char("God has not given you the gift of touch.\n\r",ch); return; } if ( IS_EVIL(victim)) { send_to_char("They are already evil!\n\r",ch); return; } if ( IS_GOOD(victim)) { victim->alignment = -1000; } if (!IS_GOOD(victim) && (!IS_EVIL(victim))) { victim->alignment = -1000; } sprintf(buf,"You SCREAM as %s touches you.\n\rYour body and mind becomes more evil.\n\r",ch->name); send_to_char(buf,victim); sprintf(buf,"%s SCREAMS as you touch them.\n\rTheir body and mind becomes more evil.\n\r",victim->name); send_to_char(buf,ch); return; } /* void do_protect( 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 (!IS_ANGPOWER(ch, ANG_PROTECTION_OF_GOD)) { send_to_char("God has not given you the gift of his protection.\n\r",ch); return; } if ( IS_AFFECTED(ch, AFF_ANGELPROTECT)) { REMOVE_BIT(ch->affected_by, AFF_ANGELPROTECT); send_to_char("God stops protecting you from attacks.\n\r",ch); } else { send_to_char("God starts protecting you from attacks.\n\r",ch); SET_BIT(ch->affected_by, AFF_ANGELPROTECT); } return; } */ void do_trueform( CHAR_DATA *ch, char *argument ) { char buf [MAX_STRING_LENGTH]; if (IS_NPC(ch)) return; if (!IS_CLASS(ch, CLASS_ANGEL)) { send_to_char("Huh?\n\r",ch); return; } if (!IS_ANGPOWER( ch, ANG_TRUEFORM) && IS_CLASS(ch,CLASS_ANGEL)) { send_to_char("You are not gifted in trueform.\n\r",ch); return; } if (ch->mounted == IS_RIDING) do_dismount(ch,""); if ( IS_SET(ch->polyaff, POLY_ANGELFORM) ) { act( "You change back into human form.", ch, NULL, NULL, TO_CHAR ); act( "$n changes back into human form.", ch, NULL, NULL, TO_ROOM ); REMOVE_BIT(ch->affected_by, AFF_POLYMORPH); REMOVE_BIT(ch->polyaff, POLY_ANGELFORM); REMOVE_BIT(ch->pcdata->stats[UNI_AFF], VAM_CHANGED); clear_stats(ch); free_string( ch->morph ); ch->morph = str_dup( "" ); return; } else if ( !IS_SET(ch->polyaff, POLY_ANGELFORM) ) { act( "You are struck by holy light and turn into a true angel.", ch, NULL, NULL, TO_CHAR ); act( "$n is struck by holy light and turns into a true angel.", ch, NULL, NULL, TO_ROOM ); SET_BIT(ch->polyaff, POLY_ANGELFORM); SET_BIT(ch->affected_by, AFF_POLYMORPH); SET_BIT(ch->pcdata->stats[UNI_AFF], VAM_CHANGED); sprintf(buf, "%s, the radiant angel", ch->name); free_string( ch->morph ); ch->morph = str_dup( buf ); return; } else send_to_char( "ANGELFORM: The Power to show your true self.\n\r", ch ); return; } void do_angellist( CHAR_DATA *ch, char *argument ) { char buf[MAX_STRING_LENGTH]; char arg[MAX_INPUT_LENGTH]; char lord[MAX_INPUT_LENGTH]; CHAR_DATA *gch; one_argument( argument, arg ); if (IS_NPC(ch)) return; if (!IS_CLASS(ch, CLASS_ANGEL) ) { send_to_char("Huh?\n\r",ch); return; } if (IS_CLASS(ch, CLASS_ANGEL)) strcpy(lord,ch->name); else strcpy(lord,ch->lord); sprintf( buf, "The Angels of %s:\n\r", lord ); send_to_char( buf, ch ); send_to_char("[ Name ] [ Hits ] [ Mana ] [ Move ] [ Exp ] [ Angel Points ]\n\r", ch ); for ( gch = char_list; gch != NULL; gch = gch->next ) { if ( IS_NPC(gch) ) continue; if ( !IS_CLASS(gch, CLASS_ANGEL)) continue; if ( !str_cmp(ch->clan,gch->clan) ) { sprintf( buf, "[%-16s] [%-6ld] [%-6ld] [%-6ld] [%7d] [ %-9d%9d ]\n\r", capitalize( gch->name ), gch->hit,gch->mana,gch->move, gch->exp, gch->pcdata->stats[ANGEL_CURRENT], gch->pcdata->stats[ANGEL_TOTAL]); send_to_char( buf, ch ); } } return; } void do_multiarm( CHAR_DATA *ch, char *argument ) { CHAR_DATA *victim; int dam = number_range(100,200) + char_damroll(ch); if (dam < 10) dam = 10; if ( IS_NPC(ch) ) return; if (!IS_ANGPOWER( ch, ANG_MULTIARM) && IS_CLASS(ch,CLASS_ANGEL)) { send_to_char("God hasn't given you the gift of multiarm.\n\r",ch); return; } if ( !IS_CLASS(ch, CLASS_ANGEL) ) { send_to_char("Huh?\n\r", ch); return; } if ( ( victim = ch->fighting ) == NULL ) { send_to_char( "You aren't fighting anyone.\n\r", ch ); return; } if (is_safe(ch, victim)) return; special_move(ch,victim); special_move(ch,victim); special_move(ch,victim); special_move(ch,victim); return; } void do_purify( CHAR_DATA *ch, char *argument ) { CHAR_DATA *victim; char arg [MAX_INPUT_LENGTH]; argument = one_argument( argument, arg ); if (IS_NPC(ch)) return; if (!IS_CLASS(ch, CLASS_ANGEL)) { send_to_char("Huh?\n\r",ch); return; } if (ch->pcdata->stats[UNI_GEN] > 2 && !IS_SET(ch->special, SPC_PRINCE)) { send_to_char("You are not able to purify.\n\r",ch); return; } if ( arg[0] == '\0' ) { send_to_char( "Purify whom?\n\r", ch ); return; } if ( ( victim = get_char_room( ch, arg ) ) == NULL ) { send_to_char( "They aren't here.\n\r", ch ); return; } if ( IS_NPC(victim) ) { send_to_char( "Not on NPC's.\n\r", ch ); return; } if ( ch == victim ) { send_to_char( "You cannot purify with yourself.\n\r", ch ); return; } if ( victim->class != 0) { send_to_char("They are already classed.\n\r",ch); return; } if ( victim->level != LEVEL_AVATAR && !IS_IMMORTAL(victim) ) { send_to_char( "You can only purify avatars.\n\r", ch ); return; } if (!IS_GOOD(victim)) { send_to_char("They must be good!\n\r", ch ); return;} act("You make $N an angel!", ch, NULL, victim, TO_CHAR); act("$n makes $N an angel!", ch, NULL, victim, TO_NOTVICT); act("$n makes you an angel!", ch, NULL, victim, TO_VICT); victim->class=0; victim->class=CLASS_ANGEL; if (IS_CLASS(victim, CLASS_VAMPIRE)) do_mortalvamp(victim,""); REMOVE_BIT(victim->act, PLR_HOLYLIGHT); REMOVE_BIT(victim->act, PLR_WIZINVIS); REMOVE_BIT(victim->special, SPC_SIRE); REMOVE_BIT(victim->special, SPC_ANARCH); victim->pcdata->stats[UNI_RAGE] = 0; free_string(victim->lord); victim->clan=str_dup(ch->clan); if (IS_CLASS(ch,CLASS_ANGEL)) victim->lord=str_dup(ch->name); else victim->lord=str_dup(ch->lord); save_char_obj(ch); save_char_obj(victim); return; } void do_anghalo( CHAR_DATA *ch, char *argument ) { if (IS_NPC(ch)) return; if (!IS_ANGEL(ch) ) { send_to_char("Huh?\n\r",ch); return; } if (!IS_ANGPOWER( ch, ANG_HALO) && IS_CLASS(ch,CLASS_ANGEL)) { send_to_char("God hasn't granted you a halo.\n\r",ch); return; } if (IS_ITEMAFF(ch,ITEMA_ANGHALO) ) { send_to_char("The halo floating above your head disappears.\n\r",ch); act("The halo floating above $n's head disappears.", ch, NULL, NULL, TO_ROOM); REMOVE_BIT(ch->itemaffect, ITEMA_ANGHALO); ch->damroll -= 500; ch->hitroll -= 500; return; } send_to_char("A halo appears above your head.\n\r",ch); act("A halo appears above $n's head.", ch, NULL, NULL, TO_ROOM); SET_BIT(ch->itemaffect, ITEMA_ANGHALO); ch->damroll += 500; ch->hitroll += 500; return; } void do_angfly( CHAR_DATA *ch, char *argument ) { char arg [MAX_INPUT_LENGTH]; CHAR_DATA *victim; argument = one_argument( argument, arg ); if (IS_NPC(ch)) return; if ( ch->move < 2000) { stc("You don't have enough movement points!\n\r",ch); return; } if (IS_CLASS(ch, CLASS_ANGEL)) { if (!IS_ANGPOWER( ch, ANG_TRAVEL)) { send_to_char("You haven't been granted the gift of angfly.\n\r",ch); return; } } else { send_to_char("Huh?\n\r",ch); return; } if (!str_cmp( arg, "heaven" ) ) { send_to_char("You spread your wings and begin to fly away.\n\r",ch); act("$n spreads its wings and begins to fly away.\n\r",ch,NULL,NULL,TO_ROOM); char_from_room(ch); char_to_room(ch, get_room_index(ROOM_VNUM_HEAVEN)); do_look(ch,""); send_to_char("You slowly float to the ground after a long trip.\n\r",ch); act("$n slowly floats to the ground after a long trip.\n\r",ch,NULL,NULL,TO_ROOM); return; } if ( ( victim = get_char_world( ch, arg ) ) == NULL ) { send_to_char( "Nobody by that name.\n\r", ch ); return; } if (IS_IMMUNE(victim, IMM_TRAVEL)) { send_to_char("I don't think they want you to do that.\n\r",ch); return; } if (IS_IMMUNE(victim, IMM_SUMMON)) { send_to_char("I don't think they want you to do that.\n\r",ch); return; } if ( victim == ch ) { send_to_char( "Nothing happens.\n\r", ch); return; } if (victim->in_room == NULL) { send_to_char( "Nothing happens.\n\r", ch ); return; } send_to_char("You spread your wings and begin to fly away.\n\r",ch); act("$n spreads its wings and begins to fly away.",ch,NULL,NULL,TO_ROOM); char_from_room(ch); char_to_room(ch,victim->in_room); do_look(ch,""); send_to_char("You appear at your location and slowly float to the ground.\n\r",ch); act("You hear wings flapping as you see $n float the ground.",ch,NULL,NULL,TO_ROOM); ch->move -= 2000; return; } void do_chimera( CHAR_DATA *ch, char * argument ) { char buf [MIL]; if( !IS_CLASS(ch,CLASS_ANGEL) ) { stc("Huh?\n\r",ch); return; } if (!IS_ANGPOWER( ch, ANG_CHIMERA) && IS_CLASS(ch,CLASS_ANGEL)) { send_to_char("You are not gifted in trueform.\n\r",ch); return; } if( !IS_POLYAFF(ch,POLY_ANGELFORM)) { send_to_char("You must be a in trueform first.\n\r",ch); return; } if (ch->mounted == IS_RIDING) do_dismount(ch,""); if ( IS_SET(ch->polyaff, POLY_ZULO) ) { act( "You change back into true angel form.", ch, NULL, NULL, TO_CHAR); act( "$n changes back into true angel form.", ch, NULL, NULL, TO_ROOM); REMOVE_BIT(ch->polyaff, POLY_ZULO ); clear_stats(ch); sprintf( buf, "%s, the radiant angel.", ch->name ); free_string( ch->morph ); ch->morph = str_dup( buf ); return; } else if ( !IS_SET(ch->polyaff, POLY_ZULO) ) { SET_BIT(ch->polyaff, POLY_ZULO); sprintf( buf, "%s, the chimera", ch->name ); free_string( ch->morph ); ch->morph = str_dup( buf ); return; } else stc("CHIMERA: Holy warrior\n\r",ch); return; }