/*************************************************************************** * God Wars Mud copyright (C) 1994, 1995, 1996 by Richard Woolcock * * * * Legend of Chrystancia copyright (C) 1999, 2000, 2001 by Matthew Little * * This mud is NOT to be copied in whole or in part, or to be run without * * the permission of Matthew Little. Nobody else has permission to * * authorise the use of this code. * ***************************************************************************/ /* Bastet code for Legend of Chrystancia written by Graham Caisley */ #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 "bastet.h" bool is_bastet (CHAR_DATA * ch) { if (IS_NPC (ch)) return FALSE; if (IS_CLASS (ch, CLASS_BASTET)) return TRUE; else return FALSE; } void do_bgifts (CHAR_DATA * ch, char *argument) { char arg1[MAX_INPUT_LENGTH]; char arg2[MAX_INPUT_LENGTH]; char buf[MAX_STRING_LENGTH]; char lin[MAX_STRING_LENGTH]; argument = one_argument (argument, arg1); argument = one_argument (argument, arg2); if (IS_NPC (ch)) return; if (!IS_CLASS (ch, CLASS_BASTET)) { send_to_char ("Huh?\n\r", ch); return; } if (arg1[0] == '\0' && arg2[0] == '\0') { sprintf (lin, "#G================================================================================#n\n\r"); stc (lin, ch); stc (" Breed Gifts\n\r", ch); stc (lin, ch); sprintf (buf, "#o Homid #w[ #c%d #w]#o Metis #w[ #c%d #w]#o Feline #w[ #c%d #w]#n\n\r", ch->bgifts[BHOMID], ch->bgifts[BMETIS], ch->bgifts[BFELINE]); stc (buf, ch); stc (lin, ch); stc (" Tribal Gifts\n\r", ch); stc (lin, ch); sprintf (buf, "#o Bagheera #w[ #c%d #w]#o Balam #w[ #c%d #w]#o Bubasti #w[ #c%d #w]#n\n\r", ch->bgifts[BBAGHEERA], ch->bgifts[BBALAM], ch->bgifts[BBUBASTI]); stc (buf, ch); sprintf (buf, "#o Ceilican #w[ #c%d #w]#o Khan #w[ #c%d #w]#o Pumonca #w[ #c%d #w]#n\n\r", ch->bgifts[BCEILICAN], ch->bgifts[BKHAN], ch->bgifts[BPUMONCA]); stc (buf, ch); sprintf (buf, "#o Qualmi #w[ #c%d #w]#o Simba #w[ #c%d #w]#o Swara #w[ #c%d #w]#n\n\r", ch->bgifts[BQUALMI], ch->bgifts[BSIMBA], ch->bgifts[BSWARA]); stc (buf, ch); stc (lin, ch); stc ("To learn powers type bgifts <giftname> learn.\n\r", ch); stc ("Type bastetpowers to see the commands you have learned.\n\r", ch); return; } if (!str_cmp (arg2, "learn") || !str_cmp (arg2, "improve")) { int improve; int cost; int max = 5; if (!str_cmp (arg1, "homid")) improve = BHOMID; else if (!str_cmp (arg1, "metis")) improve = BMETIS; else if (!str_cmp (arg1, "feline")) improve = BFELINE; else if (!str_cmp (arg1, "bagheera")) improve = BBAGHEERA; else if (!str_cmp (arg1, "balam")) improve = BBALAM; else if (!str_cmp (arg1, "bubasti")) improve = BBUBASTI; else if (!str_cmp (arg1, "ceilican")) improve = BCEILICAN; else if (!str_cmp (arg1, "khan")) improve = BKHAN; else if (!str_cmp (arg1, "pumonca")) improve = BPUMONCA; else if (!str_cmp (arg1, "qualmi")) improve = BQUALMI; else if (!str_cmp (arg1, "simba")) improve = BSIMBA; else if (!str_cmp (arg1, "swara")) improve = BSWARA; else { do_bgifts (ch, ""); return; } cost = (ch->bgifts[improve] + 1) * 10; arg1[0] = UPPER (arg1[0]); if (ch->bgifts[improve] >= max) { sprintf (buf, "You have already gained all of the %s gifts.\n\r", arg1); send_to_char (buf, ch); return; } if (cost > ch->practice) { sprintf (buf, "It costs you %d primal to learn a new %s gift.\n\r", cost, arg1); send_to_char (buf, ch); return; } ch->bgifts[improve] += 1; ch->practice -= cost; sprintf (buf, "You have learned a new %s gift.\n\r", arg1); send_to_char (buf, ch); return; } else send_to_char ("To learn a new gift, type: bgifts '<name>' learn.\n\r", ch); return; } void do_pride (CHAR_DATA * ch, char *argument) { char buf[MAX_STRING_LENGTH]; char arg[MAX_INPUT_LENGTH]; CHAR_DATA *gch; one_argument (argument, arg); if (IS_NPC (ch)) return; if (!IS_CLASS (ch, CLASS_BASTET)) { do_rand_typo (ch); return; } stc ("The Pride:\n\r", ch); send_to_char ("[ Name ] [ Hits % ] [ Mana % ] [ Move % ] [ Exp ]\n\r", ch); for (gch = char_list; gch != NULL; gch = gch->next) { if (IS_NPC (gch)) continue; if (!IS_CLASS (gch, CLASS_BASTET)) continue; if (IS_IMMORTAL (gch) && !can_see (ch, gch)) continue; sprintf (buf, "[%-16s] [%-7d%3d] [%-7d%3d] [%-7d%3d] [%10lli]\n\r", capitalize (gch->name), gch->hit, (gch->hit * 100 / gch->max_hit), gch->mana, (gch->mana * 100 / gch->max_mana), gch->move, (gch->move * 100 / gch->max_move), gch->exp); send_to_char (buf, ch); } return; } void do_purrr (CHAR_DATA * ch, char *argument) { char buf[MSL]; CHAR_DATA *vch; if (!IS_CLASS (ch, CLASS_BASTET) && !IS_IMMORTAL (ch)) { do_huh (ch, ""); return; } if (argument[0] == '\0') { stc ("Purr what??\n\r", ch); return; } if (!IS_NPC (ch) && IS_SET (ch->act, PLR_SILENCE)) { sprintf (buf, "You can't purr because you are silenced.\n\r"); send_to_char (buf, ch); return; } for (vch = char_list; vch; vch = vch->next) { if (IS_NPC (vch) || !vch->desc || (!IS_IMMORTAL (vch) && !IS_CLASS (vch, CLASS_BASTET))) continue; sprintf (buf, "#w-#o(#w%s#o)#w- #o'#w%s#o'.#n\n\r", PERS (ch, vch), bash_color (argument)); stc (buf, vch); } } void bhomid_gift (CHAR_DATA * ch) { if (IS_NPC (ch)) return; if (ch->bgifts[BHOMID] == 0) { stc ("#w Homid: #rNone.#n\n\r", ch); return; } if (ch->bgifts[BHOMID] >= 1) stc ("#w Homid: #rCat Claws#w, #rSweet Hunter's Smile#n", ch); if (ch->bgifts[BHOMID] >= 2) stc ("#w, #rJam Technology#w,#r Eavesdropper's Ear#w,#n", ch); if (ch->bgifts[BHOMID] >= 3) stc ("#r\n\r Craft of the Maker#w,#r Babel's Cure#n", ch); if (ch->bgifts[BHOMID] >= 4) stc ("#w, #rWhat's the Password?#w,#r Monkeys Uncle#w,#n", ch); if (ch->bgifts[BHOMID] >= 5) stc ("#r\n\r Black Friday#w, #rDeny the Hungry#n", ch); stc ("\n\r", ch); return; } void bmetis_gift (CHAR_DATA * ch) { if (IS_NPC (ch)) return; if (ch->bgifts[BMETIS] == 0) { stc ("#w Metis: #rNone.#n\n\r", ch); return; } if (ch->bgifts[BMETIS] >= 1) stc ("#w Metis: #rCreate Element#w, #rSense Primal Nature#n", ch); if (ch->bgifts[BMETIS] >= 2) stc ("#w, #rBlinding Moonbeam Gaze#w,#r \n\r Whisker Sight#n", ch); if (ch->bgifts[BMETIS] >= 3) stc ("#w, #rSpirit-Touch#w, #rFist of Cahlash#n", ch); if (ch->bgifts[BMETIS] >= 4) stc ("#w, #rMoon's Gateway#w,#r \n\r Redeem the Waste#n", ch); if (ch->bgifts[BMETIS] >= 5) stc ("#w, #rMoon Sense#w, #rWrath of Nala#n", ch); stc ("\n\r", ch); return; } void bfeline_gift (CHAR_DATA * ch) { if (IS_NPC (ch)) return; if (ch->bgifts[BFELINE] == 0) { stc ("#w Feline: #rNone.#n\n\r", ch); return; } if (ch->bgifts[BFELINE] >= 1) stc ("#w Feline: #rKitten's Cry#w,#r Mark as Mine#n", ch); if (ch->bgifts[BFELINE] >= 2) stc ("#r#w,#r Killer's Leap#w,#r Perfect Cover#n", ch); if (ch->bgifts[BFELINE] >= 3) stc ("#r#w,#r Underbelly#w,#r\n\r Whisker Sight#n", ch); if (ch->bgifts[BFELINE] >= 4) stc ("#r#w,#r Ghosts at Play#w,#r Hand of Will#n", ch); if (ch->bgifts[BFELINE] >= 5) stc ("#r#w,#r Judgment of Pestilence#w,#r\n\r Revolt of the Land#n", ch); stc ("\n\r", ch); return; } void bbagheera_gift (CHAR_DATA * ch) { if (IS_NPC (ch)) return; if (ch->bgifts[BBAGHEERA] == 0) { stc ("#wBagheera: #rNone.#n\n\r", ch); return; } if (ch->bgifts[BBAGHEERA] >= 1) stc ("#wBhageera: #rHumbaba's Escape#w,#r Treeclimber#n", ch); if (ch->bgifts[BBAGHEERA] >= 2) stc ("#r#w,#r Lawgiver's Legacy#w,#r Ojas Surge#n", ch); if (ch->bgifts[BBAGHEERA] >= 3) stc ("#r#w,#r\n\r Cobra's Dance#w,#r Traveler's Tongues#n", ch); if (ch->bgifts[BBAGHEERA] >= 4) stc ("#r#w,#r Paradox of Time#w,#r Potter's Clay#n", ch); if (ch->bgifts[BBAGHEERA] >= 5) stc ("#r#w,#r\n\r Part the Curtain#w,#r Shiva's Might#n", ch); stc ("\n\r", ch); return; } void bbalam_gift (CHAR_DATA * ch) { if (IS_NPC (ch)) return; if (ch->bgifts[BBALAM] == 0) { stc ("#w Balam: #rNone.#n\n\r", ch); return; } if (ch->bgifts[BBALAM] >= 1) stc ("#w Balam: #rHunter's Mists#w,#r Storm of Pests#n", ch); if (ch->bgifts[BBALAM] >= 2) stc ("#r#w,#r Ancestral Wings#w,#r Smoking Mirror#n", ch); if (ch->bgifts[BBALAM] >= 3) stc ("#r#w,#r\n\r Touch of the Tree-Frog#w,#r Wantering Forest#n", ch); if (ch->bgifts[BBALAM] >= 4) stc ("#r#w,#r Vision Cloud#w,#r\n\r Jungle's Vengeance#n", ch); if (ch->bgifts[BBALAM] >= 5) stc ("#r#w,#r Feed the Gods#w,#r Heal the Wounded Land#n", ch); stc ("\n\r", ch); return; } void bbubasti_gift (CHAR_DATA * ch) { if (IS_NPC (ch)) return; if (ch->bgifts[BBUBASTI] == 0) { stc ("#w Bubasti: #rNone.#n\n\r", ch); return; } if (ch->bgifts[BBUBASTI] >= 1) stc ("#w Bubasti: #rAlms to the Poor#w,#r Scholar's Friend#n", ch); if (ch->bgifts[BBUBASTI] >= 2) stc ("#r#w,#r Mousemaze#w,#r Spirit Ward#n", ch); if (ch->bgifts[BBUBASTI] >= 3) stc ("#r#w,#r\n\r Banish Cahlash's Brood#w,#r The Many Tongues of Ptah#n", ch); if (ch->bgifts[BBUBASTI] >= 4) stc ("#r#w,#r The Scarab's Flight#w,#r\n\r Shadowplay#n", ch); if (ch->bgifts[BBUBASTI] >= 5) stc ("#r#w,#r Deny the Hungry#w,#r Spirit Wall#w,#r The Fleeing Scarab#n", ch); stc ("\n\r", ch); return; } void bceilican_gift (CHAR_DATA * ch) { if (IS_NPC (ch)) return; if (ch->bgifts[BCEILICAN] == 0) { stc ("#wCeilican: #rNone.#n\n\r", ch); return; } if (ch->bgifts[BCEILICAN] >= 1) stc ("#wCeilican: #rMother's Blessing/Curse#w,#r Satyr's Wisdom#n", ch); if (ch->bgifts[BCEILICAN] >= 2) stc ("#r#w,#r Banish Burning#w,#r\n\r Sorcerer's Blade#n", ch); if (ch->bgifts[BCEILICAN] >= 3) stc ("#r#w,#r Data Flow#w,#r Phantasm#n", ch); if (ch->bgifts[BCEILICAN] >= 4) stc ("#r#w,#r Monkey's Uncle#w,#r Small Cousin#n", ch); if (ch->bgifts[BCEILICAN] >= 5) stc ("#r#w,#r\n\r Chariot of Lions#w,#r The Madness of Crowds#n", ch); stc ("\n\r", ch); return; } void bkhan_gift (CHAR_DATA * ch) { if (IS_NPC (ch)) return; if (ch->bgifts[BKHAN] == 0) { stc ("#w Khan: #rNone.#n\n\r", ch); return; } if (ch->bgifts[BKHAN] >= 1) stc ("#w Khan: #rRhino's Favor#w,#r Skin of Jade#n", ch); if (ch->bgifts[BKHAN] >= 2) stc ("#r#w,#r Heart of Fury#w,#r Ricepaper Walk#n", ch); if (ch->bgifts[BKHAN] >= 3) stc ("#r#w,#r\n\r Maker's Charm#w,#r Paws of the Raging Spirit Tiger#n", ch); if (ch->bgifts[BKHAN] >= 4) stc ("#r#w,#r Asuras' Bane#w,#r\n\r Dragonroar#n", ch); if (ch->bgifts[BKHAN] >= 5) stc ("#r#w,#r Call to Battle#w,#r Thousand-Thunder Strike#n", ch); stc ("\n\r", ch); return; } void bpumonca_gift (CHAR_DATA * ch) { if (IS_NPC (ch)) return; if (ch->bgifts[BPUMONCA] == 0) { stc ("#w Pumonca: #rNone.#n\n\r", ch); return; } if (ch->bgifts[BPUMONCA] >= 1) stc ("#w Pumonca: #rMockingbird's Mirror#w,#r Wanderer's Boon#n", ch); if (ch->bgifts[BPUMONCA] >= 2) stc ("#r#w,#r Raincalling#w,#r Stonework#n", ch); if (ch->bgifts[BPUMONCA] >= 3) stc ("#r#w,#r\n\r Bayou Shambler#w,#r Thunderbolt#n", ch); if (ch->bgifts[BPUMONCA] >= 4) stc ("#r#w,#r Element-Folk Favor#w,#r The Hungry Earth#n", ch); if (ch->bgifts[BPUMONCA] >= 5) stc ("#r#w,#r\n\r Earthspeaking#w,#r Thunderbird's Cry#w,#r Earthquake#n", ch); //note - earthquake is actually lev 6 stc ("\n\r", ch); return; } void bqualmi_gift (CHAR_DATA * ch) { if (IS_NPC (ch)) return; if (ch->bgifts[BQUALMI] == 0) { stc ("#w Qualmi: #rNone.#n\n\r", ch); return; } if (ch->bgifts[BQUALMI] >= 1) stc ("#w Qualmi: #rBreakfast of Stones#w,#r Turned Fur#n", ch); if (ch->bgifts[BQUALMI] >= 2) stc ("#r#w,#r No Hidden Thing#w,#r Wind from the West#n", ch); if (ch->bgifts[BQUALMI] >= 3) stc ("#r#w,#r\n\r Drop of Sea#w,#r Nighttime Web#n", ch); if (ch->bgifts[BQUALMI] >= 4) stc ("#r#w,#r Dancing on Air#w,#r Still Breeze Blowing#n", ch); if (ch->bgifts[BQUALMI] >= 5) stc ("#r#w,#r\n\r Call down the Stars#w,#r Water's Vision#n", ch); stc ("\n\r", ch); return; } void bsimba_gift (CHAR_DATA * ch) { if (IS_NPC (ch)) return; if (ch->bgifts[BSIMBA] == 0) { stc ("#w Simba: #rNone.#n\n\r", ch); return; } if (ch->bgifts[BSIMBA] >= 1) stc ("#w Simba: #rMajesty#w,#r Submit#n", ch); if (ch->bgifts[BSIMBA] >= 2) stc ("#r#w,#r Armor if Kings#w,#r Rallying Challenge#n", ch); if (ch->bgifts[BSIMBA] >= 3) stc ("#r#w,#r Fireroar#w,#r\n\r Shadow the Moon's Light#n", ch); if (ch->bgifts[BSIMBA] >= 4) stc ("#r#w,#r The Bountiful Dominion#w,#r King of Beasts#n", ch); if (ch->bgifts[BSIMBA] >= 5) stc ("#r#w,#r\n\r Command the Multitude#w,#r Rising Sun#w,#r Royal Privilege#n", ch); //note - royal privilege is lev 6 stc ("\n\r", ch); return; } void bswara_gift (CHAR_DATA * ch) { if (IS_NPC (ch)) return; if (ch->bgifts[BSWARA] == 0) { stc ("#w Swara: #rNone.#n\n\r", ch); return; } if (ch->bgifts[BSWARA] >= 1) stc ("#w Swara: #rDiamond Claws#w,#r Impala's Flight#n", ch); if (ch->bgifts[BSWARA] >= 2) stc ("#r#w,#r Walking Between Worlds#w,#r\n\r Weight of a Heart#n", ch); if (ch->bgifts[BSWARA] >= 3) stc ("#r#w,#r Clearwater Passage#w,#r Dance of the Chaya#n", ch); if (ch->bgifts[BSWARA] >= 4) stc ("#r#w,#r\n\r Ghost Caress#w,#r Judgement of Pestilence#n", ch); if (ch->bgifts[BSWARA] >= 5) stc ("#r#w,#r All Beasts Under the Sun#w,#r\n\r River of Blood#n", ch); stc ("\n\r", ch); return; } void do_bastetpowers (CHAR_DATA * ch, char *argument) { if (IS_NPC (ch)) return; if (!IS_CLASS (ch, CLASS_BASTET)) { do_rand_typo (ch); return; } stc ("#G================================================================================#n\n\r", ch); cent_to_char ("#w-[ Bastet Powers ]-#n", ch); stc ("#G================================================================================#n\n\r", ch); bhomid_gift (ch); bmetis_gift (ch); bfeline_gift (ch); bbagheera_gift (ch); bbalam_gift (ch); bbubasti_gift (ch); bceilican_gift (ch); bkhan_gift (ch); bpumonca_gift (ch); bqualmi_gift (ch); bsimba_gift (ch); bswara_gift (ch); stc ("#G================================================================================#n\n\r", ch); return; }