/*************************************************************************** * God Wars Mud originally written by KaVir aka Richard Woolcock. * * Changes done to the code done by Sage aka Walter Howard, this mud is * * for the public, however if you run this code it means you agree * * to the license.low, license.gw, and license.merc have fun. :) * ***************************************************************************/ #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 "dragon.h" const char * dcolor [10] = { "", "Red", "Green", "Blue", "Yellow", "Silver", "White", "Black", "Gold", "Shadow" }; const char * dcolor2 [10] = { "", "{RRed{x", "{GGreen{x","{BBlue{x", "{YYellow{x","Silver", "White", "Black", "Gold", "Shadow" }; const char * transformation_message[7] = { "You resume your human form.\n\r", "You become a Hatchling..\n\r", "You become a Juvenile..\n\r", "You become a Young Adult..\n\r", "You become an Adult..\n\r", "You become a Wyrm..\n\r", "You become the Supreme Dragon..\n\r" }; const struct form_type form_data [MAX_FORMS] = { // Short Long Claws? Fangs? Tail? Wings? +hit +dam { "", "", FALSE, FALSE, FALSE, FALSE, 0, 0 }, // Hatchling { "A small %s dragon hatchling is here.", "the %s hatchling", FALSE, FALSE, FALSE, FALSE, 5, 5 }, // Juvenile { "A juvenile %s dragon stands here.", "the %s dragon", TRUE, FALSE, FALSE, FALSE, 25, 25 }, // Young Adult { "A medium sized %s dragon stands here.", "the %s dragon", TRUE, TRUE, FALSE, FALSE, 50, 50 }, // Adult { "A large, adult %s dragon stands here.", "the adult %s dragon", TRUE, TRUE, FALSE, TRUE, 100, 100 }, // Wyrm { "A giant %s wyrm is here, towering over you.", "the %s wyrm", TRUE, TRUE, TRUE, TRUE, 200, 200 }, // Supreme Dragon { "A colossal Supreme %s Dragon towers over you.", "the Supreme %s Dragon", TRUE, TRUE, TRUE, TRUE, 350, 350 } }; void add_dragon_bonuses( CHAR_DATA *ch ) { ch->max_hit += ( ch->pcdata->disc_a[DRAGON_FORM] * 400 ); ch->hit += ( ch->pcdata->disc_a[DRAGON_FORM] * 400 ); return; } void remove_dragon_bonuses( CHAR_DATA *ch ) { ch->max_hit -= ( ch->pcdata->disc_a[DRAGON_FORM] * 400 ); if ( ch->hit > 2500 ) ch->hit -= ( ch->pcdata->disc_a[DRAGON_FORM] * 400 ); return; } void set_dragon_form( CHAR_DATA *ch ) { char buf[MSL]; char buf2[MSL]; int gen, chcolor; gen = ch->pcdata->disc_a[DRAGON_AGE]; chcolor = ch->pcdata->disc_a[DRAGON_COLOR]; if ( chcolor == 0 ) chcolor = 3; sprintf(buf,"%s ",ch->name); sprintf(buf2, form_data[gen].name, dcolor2[chcolor]); strcat( buf, buf2 ); ch->morph = str_dup(buf); SET_BIT(ch->affected_by, AFF_POLYMORPH); sprintf(buf,transformation_message[gen]); stc(buf,ch); ch->pcdata->disc_a[DRAGON_FORM] = gen; add_dragon_bonuses(ch); return; } void remove_dragon_form( CHAR_DATA *ch ) { char buf[MSL]; free_string(ch->morph); REMOVE_BIT(ch->affected_by, AFF_POLYMORPH); ch->morph = str_dup(""); sprintf(buf, transformation_message[0]); stc(buf,ch); remove_dragon_bonuses(ch); ch->pcdata->disc_a[DRAGON_FORM] = 0; return; } void do_testdragon( CHAR_DATA *ch, char *argument ) { if ( IS_NPC(ch) ) return; if (!IS_CLASS(ch,CLASS_DRAGON)) { send_to_char("Huh?\n\r",ch); return; } /* if (!str_cmp(ch->name,"Sage") || !str_cmp(ch->name,"Dunkirk")) { stc("Huh?\n\r",ch); return; } */ if ( ch->pcdata->disc_a[DRAGON_FORM] > 0 ) { remove_dragon_form(ch); return; } else { set_dragon_form(ch); return; } return; }