#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 "recycle.h"
char *show_res(CHAR_DATA * ch, int resist);
/*
* Resistance improvement system.
*/
static char *const attack_types[] = {
"unarmed", "longsword", "spear", "broadsword", "whip", "staff",
"knife", "warhammer", "mace", "axe", "two-handed longsword", "shortsword",
"bastardsword", "flail", "morningstar", "polearm", "club", "sickle",
"dagger"
};
static char *const magic_types[] = {
"body", "mind", "fire", "ice", "electric", "acid", "voodoo", "drain"
};
char *show_res(CHAR_DATA * ch, int resist)
{
int x, howmany = .1; //How many stars to show
static char buffer[MSL];
howmany = (resist * 0.2) / 2; //Showing 50 stars
sprintf(buffer, "#D[#b");
for (x = 1; x <= 50; x++)
{
if (x <= howmany)
sprintf(buffer, "#G*#n");
else
sprintf(buffer, "#r-#n");
}
sprintf(buffer, "#D]#n\n\r");
return buffer;
}
void do_resistance(CHAR_DATA * ch, char *argument)
{
char arg[MAX_INPUT_LENGTH];
char skill[13];
one_argument(argument, arg);
if (IS_NPC(ch))
return;
send_to_char
("---------------------------=[#6Weapon Resistance#n]=--------------------------------\n\r",
ch);
sprintf(skill, "Slice : %s", show_res(ch, ch->wpn_res[1]));
send_to_char(skill, ch);
sprintf(skill, "Stab : %s", show_res(ch, ch->wpn_res[2]));
send_to_char(skill, ch);
sprintf(skill, "Slash : %s", show_res(ch, ch->wpn_res[3]));
send_to_char(skill, ch);
sprintf(skill, "Whip : %s", show_res(ch, ch->wpn_res[4]));
send_to_char(skill, ch);
sprintf(skill, "Claw : %s", show_res(ch, ch->wpn_res[5]));
send_to_char(skill, ch);
sprintf(skill, "Blast : %s", show_res(ch, ch->wpn_res[6]));
send_to_char(skill, ch);
sprintf(skill, "Pound : %s", show_res(ch, ch->wpn_res[7]));
send_to_char(skill, ch);
sprintf(skill, "Crush : %s", show_res(ch, ch->wpn_res[8]));
send_to_char(skill, ch);
sprintf(skill, "Grep : %s", show_res(ch, ch->wpn_res[9]));
send_to_char(skill, ch);
sprintf(skill, "Bite : %s", show_res(ch, ch->wpn_res[10]));
send_to_char(skill, ch);
sprintf(skill, "Pierce : %s", show_res(ch, ch->wpn_res[11]));
send_to_char(skill, ch);
sprintf(skill, "Suck : %s", show_res(ch, ch->wpn_res[12]));
send_to_char(skill, ch);
sprintf(skill, "Unarmed: %s\r\n", show_res(ch, ch->wpn_res[0]));
send_to_char(skill, ch);
send_to_char
("---------------------------=[#6Magic Resistance#n]=--------------------------------\n\r",
ch);
sprintf(skill, "Mind : %-4d", ch->magic_res[MAGIC_MIND]);
send_to_char(skill, ch);
sprintf(skill, " Body : %-4d", ch->magic_res[MAGIC_BODY]);
send_to_char(skill, ch);
sprintf(skill, " Fire : %-4d", ch->magic_res[MAGIC_FIRE]);
send_to_char(skill, ch);
sprintf(skill, " Ice : %-4d\n", ch->magic_res[MAGIC_ICE]);
send_to_char(skill, ch);
sprintf(skill, "Electric: %-4d", ch->magic_res[MAGIC_ELEC]);
send_to_char(skill, ch);
sprintf(skill, " Voodoo : %-4d", ch->magic_res[MAGIC_VOODOO]);
send_to_char(skill, ch);
sprintf(skill, " Drain : %-4d", ch->magic_res[MAGIC_DRAIN]);
send_to_char(skill, ch);
sprintf(skill, " Acid : %-4d\n\r\n", ch->magic_res[MAGIC_ACID]);
send_to_char(skill, ch);
send_to_char
("---------------------------=[#6**************#n]=--------------------------------\n\r",
ch);
return;
}
void improve_weapon_res(CHAR_DATA * ch, int dtype)
{
char bufskill[20];
char buf[MAX_INPUT_LENGTH];
int dice1;
int dice2;
int max_skl = 500;
dice1 = number_percent();
dice2 = number_percent();
if (IS_NPC(ch))
return;
if (dtype < 1000 || dtype > 1012)
return;
dtype -= 1000;
if (ch->wpn_res[dtype] > max_skl)
return;
if ((dice1 > 89) || (dice2 > 89))
ch->wpn_res[dtype] += 1;
else
return;
if (ch->wpn_res[dtype] == 1)
sprintf(bufskill, "slightly resistant");
else if (ch->wpn_res[dtype] == 50)
sprintf(bufskill, "reasonably resistant");
else if (ch->wpn_res[dtype] == 100)
sprintf(bufskill, "fairly resistant");
else if (ch->wpn_res[dtype] == 150)
sprintf(bufskill, "highly resistant");
else if (ch->wpn_res[dtype] == 175)
sprintf(bufskill, "very resistant");
else if (ch->wpn_res[dtype] == 200)
sprintf(bufskill, "extremely resistant");
else if (ch->wpn_res[dtype] == 251)
sprintf(bufskill, "slightly immune");
else if (ch->wpn_res[dtype] == 300)
sprintf(bufskill, "reasonably immune");
else if (ch->wpn_res[dtype] == 350)
sprintf(bufskill, "fairly immune");
else if (ch->wpn_res[dtype] == 400)
sprintf(bufskill, "highly immune");
else if (ch->wpn_res[dtype] == 500)
sprintf(bufskill, "virtually immune");
else
return;
sprintf(buf, "#cYou are now %s against %s attacks.\n\r#n", bufskill,
attack_types[dtype]);
send_to_char(buf, ch);
return;
}
int check_weapon_res(CHAR_DATA * ch, int dtype)
{
int x;
x = .0018 * ch->wpn_res[dtype];
if (x == 0)
x = 1;
return x;
}
int check_magic_res(CHAR_DATA * ch, int mtype)
{
int x;
x = .0018 * ch->magic_res[mtype];
if (x == 0) //
x = 1;
return x;
}
void improve_magic_res(CHAR_DATA * ch, int mtype)
{
int dice1, dice2;
int max_skl = 500;
char bufskill[20];
char buf[MAX_INPUT_LENGTH];
dice1 = number_percent();
dice2 = number_percent();
if (mtype >= MAX_MAGIC || mtype < 0)
return; /* Invalid Magic type */
if (IS_NPC(ch))
return;
if (max_skl <= ch->magic_res[mtype])
return;
if (ch->magic_res[mtype] == 1)
sprintf(bufskill, "slightly resistant");
else if (ch->magic_res[mtype] == 50)
sprintf(bufskill, "reasonably resistant");
else if (ch->magic_res[mtype] == 100)
sprintf(bufskill, "fairly resistant");
else if (ch->magic_res[mtype] == 150)
sprintf(bufskill, "highly resistant");
else if (ch->magic_res[mtype] == 175)
sprintf(bufskill, "very resistant");
else if (ch->magic_res[mtype] == 200)
sprintf(bufskill, "extremely resistant");
else if (ch->magic_res[mtype] == 251)
sprintf(bufskill, "slightly immune");
else if (ch->magic_res[mtype] == 300)
sprintf(bufskill, "reasonably immune");
else if (ch->magic_res[mtype] == 350)
sprintf(bufskill, "fairly immune");
else if (ch->magic_res[mtype] == 400)
sprintf(bufskill, "highly immune");
else if (ch->magic_res[mtype] == 500)
sprintf(bufskill, "virtually immune");
else
return;
if (dice1 > 89 || dice2 > 89)
{
ch->magic_res[mtype] += 1;
sprintf(buf,
"#mYou are now #7%s #magainst #7%s #mattacks.#n\n\r#n",
bufskill, magic_types[mtype]);
send_to_char(buf, ch);
return;
}
return;
}