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