Rename classes

This commit is contained in:
kinther 2025-09-30 07:39:45 -07:00
parent cb59bf0315
commit 05a2dfce9f
14 changed files with 146 additions and 126 deletions

View file

@ -3156,10 +3156,10 @@ ACMD(do_show)
for (i = 1; i < LVL_IMMORT; i++) {
nlen = snprintf(buf + len, sizeof(buf) - len, "%-3d - %-6d %-6d %-6d %-6d %-6d %-6d %-6d %-6d\r\n", i,
level_exp(CLASS_MAGIC_USER, i) - level_exp(CLASS_MAGIC_USER, i - 1),
level_exp(CLASS_SORCEROR, i) - level_exp(CLASS_SORCEROR, i - 1),
level_exp(CLASS_CLERIC, i) - level_exp(CLASS_CLERIC, i - 1),
level_exp(CLASS_THIEF, i) - level_exp(CLASS_THIEF, i - 1),
level_exp(CLASS_WARRIOR, i) - level_exp(CLASS_WARRIOR, i - 1),
level_exp(CLASS_FIGHTER, i) - level_exp(CLASS_FIGHTER, i - 1),
level_exp(CLASS_BARBARIAN, i) - level_exp(CLASS_BARBARIAN, i - 1),
level_exp(CLASS_RANGER, i) - level_exp(CLASS_RANGER, i - 1),
level_exp(CLASS_BARD, i) - level_exp(CLASS_BARD, i - 1),

View file

@ -38,10 +38,10 @@ const char *class_abbrevs[] = {
};
const char *pc_class_types[] = {
"Magic User",
"Sorceror",
"Cleric",
"Thief",
"Warrior",
"Fighter",
"Barbarian",
"Ranger",
"Bard",
@ -55,8 +55,8 @@ const char *class_menu =
"Select a class:\r\n"
" [\t(C\t)]leric\r\n"
" [\t(T\t)]hief\r\n"
" [\t(W\t)]arrior\r\n"
" [\t(M\t)]agic-user\r\n"
" [\t(F\t)]ighter\r\n"
" [\t(S\t)]orceror\r\n"
" [\t(B\t)]arbarian\r\n"
" [\t(R\t)]anger\r\n"
" B[\t(A\t)]rd\r\n"
@ -69,9 +69,9 @@ int parse_class(char arg)
arg = LOWER(arg);
switch (arg) {
case 'm': return CLASS_MAGIC_USER;
case 's': return CLASS_SORCEROR;
case 'c': return CLASS_CLERIC;
case 'w': return CLASS_WARRIOR;
case 'f': return CLASS_FIGHTER;
case 't': return CLASS_THIEF;
case 'b': return CLASS_BARBARIAN;
case 'r': return CLASS_RANGER;
@ -122,7 +122,7 @@ bitvector_t find_class_bitvector(const char *arg)
/* #define PRAC_TYPE 3 should it say 'spell' or 'skill'? */
int prac_params[4][NUM_CLASSES] = {
/* MAG CLE THE WAR BAR RAN BARD DRU */
/* SOR CLE THE FIG BAR RAN BARD DRU */
{ 95, 95, 85, 80, 75, 85, 85, 95 }, /* learned level */
{ 100, 100, 12, 12, 11, 12, 13, 90 }, /* max per practice */
{ 25, 25, 0, 0, 0, 0, 25, 25 }, /* min per practice */
@ -131,7 +131,7 @@ int prac_params[4][NUM_CLASSES] = {
/* The appropriate rooms for each guildmaster/guildguard; controls which types
* of people the various guildguards let through. i.e., the first line shows
* that from room 3017, only MAGIC_USERS are allowed to go south. Don't forget
* that from room 3017, only SORCERORS are allowed to go south. Don't forget
* to visit spec_assign.c if you create any new mobiles that should be a guild
* master or guard so they can act appropriately. If you "recycle" the
* existing mobs that are used in other guilds for your new guild, then you
@ -141,10 +141,10 @@ int prac_params[4][NUM_CLASSES] = {
struct guild_info_type guild_info[] = {
/* Midgaard */
{ CLASS_MAGIC_USER, 3017, SOUTH },
{ CLASS_SORCEROR, 3017, SOUTH },
{ CLASS_CLERIC, 3004, NORTH },
{ CLASS_THIEF, 3027, EAST },
{ CLASS_WARRIOR, 3021, EAST },
{ CLASS_FIGHTER, 3021, EAST },
{ CLASS_BARBARIAN, 3021, EAST },
{ CLASS_RANGER, 3021, EAST },
{ CLASS_BARD, 3021, EAST },
@ -162,7 +162,7 @@ struct guild_info_type guild_info[] = {
byte saving_throws(int class_num, int type, int level)
{
switch (class_num) {
case CLASS_MAGIC_USER:
case CLASS_SORCEROR:
switch (type) {
case SAVING_PARA: /* Paralyzation */
switch (level) {
@ -363,7 +363,7 @@ byte saving_throws(int class_num, int type, int level)
break;
}
break;
case CLASS_WARRIOR:
case CLASS_FIGHTER:
switch (type) {
case SAVING_PARA: /* Paralyzation */
switch (level) {
@ -374,7 +374,7 @@ byte saving_throws(int class_num, int type, int level)
case 4: return 0;
case 5: return 0;
default:
log("SYSERR: Missing level for warrior paralyzation saving throw.");
log("SYSERR: Missing level for fighter paralyzation saving throw.");
break;
}
case SAVING_ROD: /* Rods */
@ -386,7 +386,7 @@ byte saving_throws(int class_num, int type, int level)
case 4: return 0;
case 5: return 0;
default:
log("SYSERR: Missing level for warrior rod saving throw.");
log("SYSERR: Missing level for fighter rod saving throw.");
break;
}
case SAVING_PETRI: /* Petrification */
@ -398,7 +398,7 @@ byte saving_throws(int class_num, int type, int level)
case 4: return 0;
case 5: return 0;
default:
log("SYSERR: Missing level for warrior petrification saving throw.");
log("SYSERR: Missing level for fighter petrification saving throw.");
break;
}
case SAVING_BREATH: /* Breath weapons */
@ -410,7 +410,7 @@ byte saving_throws(int class_num, int type, int level)
case 4: return 0;
case 5: return 0;
default:
log("SYSERR: Missing level for warrior breath saving throw.");
log("SYSERR: Missing level for fighter breath saving throw.");
break;
}
case SAVING_SPELL: /* Generic spells */
@ -422,7 +422,7 @@ byte saving_throws(int class_num, int type, int level)
case 4: return 0;
case 5: return 0;
default:
log("SYSERR: Missing level for warrior spell saving throw.");
log("SYSERR: Missing level for fighter spell saving throw.");
break;
}
default:
@ -734,7 +734,7 @@ void roll_real_abils(struct char_data *ch)
ch->real_abils.str_add = 0;
switch (GET_CLASS(ch)) {
case CLASS_MAGIC_USER:
case CLASS_SORCEROR:
ch->real_abils.intel = table[0];
ch->real_abils.wis = table[1];
ch->real_abils.dex = table[2];
@ -758,7 +758,7 @@ void roll_real_abils(struct char_data *ch)
ch->real_abils.wis = table[4];
ch->real_abils.cha = table[5];
break;
case CLASS_WARRIOR:
case CLASS_FIGHTER:
ch->real_abils.str = table[0];
ch->real_abils.dex = table[1];
ch->real_abils.con = table[2];
@ -819,7 +819,7 @@ void do_start(struct char_data *ch)
switch (GET_CLASS(ch)) {
case CLASS_MAGIC_USER:
case CLASS_SORCEROR:
SET_SKILL(ch, SPELL_MAGIC_MISSILE, 5);
SET_SKILL(ch, SPELL_DETECT_INVIS, 5);
SET_SKILL(ch, SPELL_DETECT_MAGIC, 5);
@ -896,7 +896,7 @@ void do_start(struct char_data *ch)
SET_SKILL(ch, SKILL_PERCEPTION, 5);
break;
case CLASS_WARRIOR:
case CLASS_FIGHTER:
SET_SKILL(ch, SKILL_KICK, 5);
SET_SKILL(ch, SKILL_RESCUE, 5);
SET_SKILL(ch, SKILL_BANDAGE, 5);
@ -982,7 +982,7 @@ void advance_level(struct char_data *ch)
switch (GET_CLASS(ch)) {
case CLASS_MAGIC_USER:
case CLASS_SORCEROR:
add_hp += rand_number(3, 8);
add_mana = rand_number(GET_LEVEL(ch), (int)(1.5 * GET_LEVEL(ch)));
add_mana = MIN(add_mana, 10);
@ -1002,7 +1002,7 @@ void advance_level(struct char_data *ch)
add_move = rand_number(1, 3);
break;
case CLASS_WARRIOR:
case CLASS_FIGHTER:
add_hp += rand_number(10, 15);
add_mana = 0;
add_move = rand_number(1, 3);
@ -1067,13 +1067,13 @@ int backstab_mult(int level)
* usable by a particular class, based on the ITEM_ANTI_{class} bitvectors. */
int invalid_class(struct char_data *ch, struct obj_data *obj)
{
if (OBJ_FLAGGED(obj, ITEM_ANTI_MAGIC_USER) && IS_MAGIC_USER(ch))
if (OBJ_FLAGGED(obj, ITEM_ANTI_SORCEROR) && IS_SORCEROR(ch))
return TRUE;
if (OBJ_FLAGGED(obj, ITEM_ANTI_CLERIC) && IS_CLERIC(ch))
return TRUE;
if (OBJ_FLAGGED(obj, ITEM_ANTI_WARRIOR) && IS_WARRIOR(ch))
if (OBJ_FLAGGED(obj, ITEM_ANTI_FIGHTER) && IS_FIGHTER(ch))
return TRUE;
if (OBJ_FLAGGED(obj, ITEM_ANTI_THIEF) && IS_THIEF(ch))
@ -1099,33 +1099,33 @@ int invalid_class(struct char_data *ch, struct obj_data *obj)
* skill. */
void init_spell_levels(void)
{
/* MAGES */
spell_level(SPELL_MAGIC_MISSILE, CLASS_MAGIC_USER, 1);
spell_level(SPELL_DETECT_INVIS, CLASS_MAGIC_USER, 1);
spell_level(SPELL_DETECT_MAGIC, CLASS_MAGIC_USER, 1);
spell_level(SPELL_CHILL_TOUCH, CLASS_MAGIC_USER, 1);
spell_level(SPELL_INFRAVISION, CLASS_MAGIC_USER, 1);
spell_level(SPELL_INVISIBLE, CLASS_MAGIC_USER, 1);
spell_level(SPELL_ARMOR, CLASS_MAGIC_USER, 1);
spell_level(SPELL_BURNING_HANDS, CLASS_MAGIC_USER, 1);
spell_level(SPELL_LOCATE_OBJECT, CLASS_MAGIC_USER, 1);
spell_level(SPELL_STRENGTH, CLASS_MAGIC_USER, 1);
spell_level(SPELL_SHOCKING_GRASP, CLASS_MAGIC_USER, 1);
spell_level(SPELL_SLEEP, CLASS_MAGIC_USER, 1);
spell_level(SPELL_LIGHTNING_BOLT, CLASS_MAGIC_USER, 1);
spell_level(SPELL_BLINDNESS, CLASS_MAGIC_USER, 1);
spell_level(SPELL_DETECT_POISON, CLASS_MAGIC_USER, 1);
spell_level(SPELL_COLOR_SPRAY, CLASS_MAGIC_USER, 1);
spell_level(SPELL_ENERGY_DRAIN, CLASS_MAGIC_USER, 1);
spell_level(SPELL_CURSE, CLASS_MAGIC_USER, 1);
spell_level(SPELL_POISON, CLASS_MAGIC_USER, 1);
spell_level(SPELL_FIREBALL, CLASS_MAGIC_USER, 1);
spell_level(SPELL_CHARM, CLASS_MAGIC_USER, 1);
spell_level(SPELL_IDENTIFY, CLASS_MAGIC_USER, 1);
spell_level(SPELL_FLY, CLASS_MAGIC_USER, 1);
spell_level(SPELL_ENCHANT_WEAPON, CLASS_MAGIC_USER, 1);
spell_level(SPELL_CLONE, CLASS_MAGIC_USER, 1);
spell_level(SKILL_UNARMED, CLASS_MAGIC_USER, 1);
/* SORCERORS */
spell_level(SPELL_MAGIC_MISSILE, CLASS_SORCEROR, 1);
spell_level(SPELL_DETECT_INVIS, CLASS_SORCEROR, 1);
spell_level(SPELL_DETECT_MAGIC, CLASS_SORCEROR, 1);
spell_level(SPELL_CHILL_TOUCH, CLASS_SORCEROR, 1);
spell_level(SPELL_INFRAVISION, CLASS_SORCEROR, 1);
spell_level(SPELL_INVISIBLE, CLASS_SORCEROR, 1);
spell_level(SPELL_ARMOR, CLASS_SORCEROR, 1);
spell_level(SPELL_BURNING_HANDS, CLASS_SORCEROR, 1);
spell_level(SPELL_LOCATE_OBJECT, CLASS_SORCEROR, 1);
spell_level(SPELL_STRENGTH, CLASS_SORCEROR, 1);
spell_level(SPELL_SHOCKING_GRASP, CLASS_SORCEROR, 1);
spell_level(SPELL_SLEEP, CLASS_SORCEROR, 1);
spell_level(SPELL_LIGHTNING_BOLT, CLASS_SORCEROR, 1);
spell_level(SPELL_BLINDNESS, CLASS_SORCEROR, 1);
spell_level(SPELL_DETECT_POISON, CLASS_SORCEROR, 1);
spell_level(SPELL_COLOR_SPRAY, CLASS_SORCEROR, 1);
spell_level(SPELL_ENERGY_DRAIN, CLASS_SORCEROR, 1);
spell_level(SPELL_CURSE, CLASS_SORCEROR, 1);
spell_level(SPELL_POISON, CLASS_SORCEROR, 1);
spell_level(SPELL_FIREBALL, CLASS_SORCEROR, 1);
spell_level(SPELL_CHARM, CLASS_SORCEROR, 1);
spell_level(SPELL_IDENTIFY, CLASS_SORCEROR, 1);
spell_level(SPELL_FLY, CLASS_SORCEROR, 1);
spell_level(SPELL_ENCHANT_WEAPON, CLASS_SORCEROR, 1);
spell_level(SPELL_CLONE, CLASS_SORCEROR, 1);
spell_level(SKILL_UNARMED, CLASS_SORCEROR, 1);
/* CLERICS */
spell_level(SPELL_CURE_LIGHT, CLASS_CLERIC, 1);
@ -1173,17 +1173,17 @@ void init_spell_levels(void)
spell_level(SKILL_SHIELD_USE, CLASS_THIEF, 1);
spell_level(SKILL_PERCEPTION, CLASS_THIEF, 1);
/* WARRIORS */
spell_level(SKILL_KICK, CLASS_WARRIOR, 1);
spell_level(SKILL_RESCUE, CLASS_WARRIOR, 1);
spell_level(SKILL_BANDAGE, CLASS_WARRIOR, 1);
spell_level(SKILL_BASH, CLASS_WARRIOR, 1);
spell_level(SKILL_UNARMED, CLASS_WARRIOR, 1);
spell_level(SKILL_SLASHING_WEAPONS, CLASS_WARRIOR, 1);
spell_level(SKILL_PIERCING_WEAPONS, CLASS_WARRIOR, 1);
spell_level(SKILL_BLUDGEONING_WEAPONS, CLASS_WARRIOR, 1);
spell_level(SKILL_SHIELD_USE, CLASS_WARRIOR, 1);
spell_level(SKILL_PERCEPTION, CLASS_WARRIOR, 1);
/* FIGHTERS */
spell_level(SKILL_KICK, CLASS_FIGHTER, 1);
spell_level(SKILL_RESCUE, CLASS_FIGHTER, 1);
spell_level(SKILL_BANDAGE, CLASS_FIGHTER, 1);
spell_level(SKILL_BASH, CLASS_FIGHTER, 1);
spell_level(SKILL_UNARMED, CLASS_FIGHTER, 1);
spell_level(SKILL_SLASHING_WEAPONS, CLASS_FIGHTER, 1);
spell_level(SKILL_PIERCING_WEAPONS, CLASS_FIGHTER, 1);
spell_level(SKILL_BLUDGEONING_WEAPONS, CLASS_FIGHTER, 1);
spell_level(SKILL_SHIELD_USE, CLASS_FIGHTER, 1);
spell_level(SKILL_PERCEPTION, CLASS_FIGHTER, 1);
/* BARBARIANS */
spell_level(SKILL_KICK, CLASS_BARBARIAN, 1);
@ -1251,7 +1251,7 @@ int level_exp(int chclass, int level)
/* Exp required for normal mortals is below */
switch (chclass) {
case CLASS_MAGIC_USER:
case CLASS_SORCEROR:
switch (level) {
case 0: return 0;
case 1: return 1;
@ -1275,7 +1275,7 @@ int level_exp(int chclass, int level)
}
break;
case CLASS_WARRIOR:
case CLASS_FIGHTER:
switch (level) {
case 0: return 0;
case 1: return 1;
@ -1333,13 +1333,13 @@ const char *title_male(int chclass, int level)
switch (chclass) {
case CLASS_MAGIC_USER:
case CLASS_SORCEROR:
switch (level) {
case 1: return "the Apprentice of Magic";
case LVL_IMMORT: return "the Immortal Warlock";
case LVL_GOD: return "the Avatar of Magic";
case LVL_GRGOD: return "the God of Magic";
default: return "the Mage";
default: return "the Sorceror";
}
case CLASS_CLERIC:
@ -1360,13 +1360,13 @@ const char *title_male(int chclass, int level)
default: return "the Thief";
}
case CLASS_WARRIOR:
case CLASS_FIGHTER:
switch(level) {
case 1: return "the Swordpupil";
case LVL_IMMORT: return "the Immortal Warlord";
case LVL_GOD: return "the Extirpator";
case LVL_GRGOD: return "the God of War";
default: return "the Warrior";
default: return "the Fighter";
}
case CLASS_BARBARIAN:
@ -1420,7 +1420,7 @@ const char *title_female(int chclass, int level)
switch (chclass) {
case CLASS_MAGIC_USER:
case CLASS_SORCEROR:
switch (level) {
case 1: return "the Apprentice of Magic";
case LVL_IMMORT: return "the Immortal Enchantress";
@ -1447,13 +1447,13 @@ const char *title_female(int chclass, int level)
default: return "the Thief";
}
case CLASS_WARRIOR:
case CLASS_FIGHTER:
switch(level) {
case 1: return "the Swordpupil";
case LVL_IMMORT: return "the Immortal Lady of War";
case LVL_GOD: return "the Queen of Destruction";
case LVL_GRGOD: return "the Goddess of War";
default: return "the Warrior";
default: return "the Fighter";
}
case CLASS_BARBARIAN:

View file

@ -475,10 +475,14 @@ const char *extra_bits[] = {
"ANTI_GOOD",
"ANTI_EVIL",
"ANTI_NEUTRAL",
"ANTI_MAGE",
"ANTI_SORCEROR",
"ANTI_CLERIC",
"ANTI_THIEF",
"ANTI_WARRIOR",
"ANTI_FIGHTER",
"ANTI_BARBARIAN",
"ANTI_RANGER",
"ANTI_BARD",
"ANTI_DRUID",
"NO_SELL",
"QUEST_ITEM",
"\n"

View file

@ -1594,7 +1594,7 @@ static void parse_simple_mob(FILE *mob_f, int i, int nr)
GET_HEIGHT(mob_proto + i) = 198;
/* These are now save applies; base save numbers for MOBs are now from the
* warrior save table. */
* fighter save table. */
for (j = 0; j < NUM_OF_SAVING_THROWS; j++)
GET_SAVE(mob_proto + i, j) = 0;
}

View file

@ -88,7 +88,7 @@ int mana_gain(struct char_data *ch)
break;
}
if (IS_MAGIC_USER(ch) || IS_CLERIC(ch))
if (IS_SORCEROR(ch) || IS_CLERIC(ch))
gain *= 2;
if ((GET_COND(ch, HUNGER) == 0) || (GET_COND(ch, THIRST) == 0))
@ -129,7 +129,7 @@ int hit_gain(struct char_data *ch)
break;
}
if (IS_MAGIC_USER(ch) || IS_CLERIC(ch))
if (IS_SORCEROR(ch) || IS_CLERIC(ch))
gain /= 2; /* Ouch. */
if ((GET_COND(ch, HUNGER) == 0) || (GET_COND(ch, THIRST) == 0))

View file

@ -35,8 +35,8 @@ static void perform_mag_groups(int level, struct char_data *ch, struct char_data
* random number of the character as in some other systems. */
int mag_savingthrow(struct char_data *ch, int type, int modifier)
{
/* NPCs use warrior tables according to some book */
int class_sav = CLASS_WARRIOR;
/* NPCs use fighter tables according to some book */
int class_sav = CLASS_FIGHTER;
int save;
if (!IS_NPC(ch))
@ -204,37 +204,37 @@ int mag_damage(int level, struct char_data *ch, struct char_data *victim,
/* Mostly mages */
case SPELL_MAGIC_MISSILE:
case SPELL_CHILL_TOUCH: /* chill touch also has an affect */
if (IS_MAGIC_USER(ch))
if (IS_SORCEROR(ch))
dam = dice(1, 8) + 1;
else
dam = dice(1, 6) + 1;
break;
case SPELL_BURNING_HANDS:
if (IS_MAGIC_USER(ch))
if (IS_SORCEROR(ch))
dam = dice(3, 8) + 3;
else
dam = dice(3, 6) + 3;
break;
case SPELL_SHOCKING_GRASP:
if (IS_MAGIC_USER(ch))
if (IS_SORCEROR(ch))
dam = dice(5, 8) + 5;
else
dam = dice(5, 6) + 5;
break;
case SPELL_LIGHTNING_BOLT:
if (IS_MAGIC_USER(ch))
if (IS_SORCEROR(ch))
dam = dice(7, 8) + 7;
else
dam = dice(7, 6) + 7;
break;
case SPELL_COLOR_SPRAY:
if (IS_MAGIC_USER(ch))
if (IS_SORCEROR(ch))
dam = dice(9, 8) + 9;
else
dam = dice(9, 6) + 9;
break;
case SPELL_FIREBALL:
if (IS_MAGIC_USER(ch))
if (IS_SORCEROR(ch))
dam = dice(11, 8) + 11;
else
dam = dice(11, 6) + 11;

View file

@ -219,7 +219,7 @@ static void auto_equip(struct char_data *ch, struct obj_data *obj, int location)
case WEAR_HOLD:
if (CAN_WEAR(obj, ITEM_WEAR_HOLD))
break;
if (IS_WARRIOR(ch) && CAN_WEAR(obj, ITEM_WEAR_WIELD) && GET_OBJ_TYPE(obj) == ITEM_WEAPON)
if (IS_FIGHTER(ch) && CAN_WEAR(obj, ITEM_WEAR_WIELD) && GET_OBJ_TYPE(obj) == ITEM_WEAPON)
break;
location = LOC_INVENTORY;
break;

View file

@ -32,10 +32,14 @@ const char *trade_letters[] = {
"Good", /* First, the alignment based ones */
"Evil",
"Neutral",
"Magic User", /* Then the class based ones */
"Sorceror", /* Then the class based ones */
"Cleric",
"Thief",
"Warrior",
"Fighter",
"Barbarian",
"Ranger",
"Bard",
"Druid",
"\n"
};
@ -126,10 +130,14 @@ static int is_ok_char(struct char_data *keeper, struct char_data *ch, int shop_n
if (IS_NPC(ch))
return (TRUE);
if ((IS_MAGIC_USER(ch) && NOTRADE_MAGIC_USER(shop_nr)) ||
if ((IS_SORCEROR(ch) && NOTRADE_SORCEROR(shop_nr)) ||
(IS_CLERIC(ch) && NOTRADE_CLERIC(shop_nr)) ||
(IS_THIEF(ch) && NOTRADE_THIEF(shop_nr)) ||
(IS_WARRIOR(ch) && NOTRADE_WARRIOR(shop_nr))) {
(IS_FIGHTER(ch) && NOTRADE_FIGHTER(shop_nr)) ||
(IS_BARBARIAN(ch) && NOTRADE_BARBARIAN(shop_nr)) ||
(IS_RANGER(ch) && NOTRADE_RANGER(shop_nr)) ||
(IS_BARD(ch) && NOTRADE_BARD(shop_nr)) ||
(IS_DRUID(ch) && NOTRADE_DRUID(shop_nr))) {
snprintf(buf, sizeof(buf), "%s %s", GET_NAME(ch), MSG_NO_SELL_CLASS);
do_tell(keeper, buf, cmd_tell, 0);
return (FALSE);

View file

@ -74,15 +74,19 @@ struct shop_data {
#define LIST_ROOM 2
/* Whom will we not trade with (bitvector for SHOP_TRADE_WITH()) */
#define TRADE_NOGOOD (1 << 0)
#define TRADE_NOEVIL (1 << 1)
#define TRADE_NONEUTRAL (1 << 2)
#define TRADE_NOMAGIC_USER (1 << 3)
#define TRADE_NOCLERIC (1 << 4)
#define TRADE_NOTHIEF (1 << 5)
#define TRADE_NOWARRIOR (1 << 6)
#define TRADE_NOGOOD (1 << 0)
#define TRADE_NOEVIL (1 << 1)
#define TRADE_NONEUTRAL (1 << 2)
#define TRADE_NOSORCEROR (1 << 3)
#define TRADE_NOCLERIC (1 << 4)
#define TRADE_NOTHIEF (1 << 5)
#define TRADE_NOFIGHTER (1 << 6)
#define TRADE_NOBARBARIAN (1 << 7)
#define TRADE_NORANGER (1 << 8)
#define TRADE_NOBARD (1 << 9)
#define TRADE_NODRUID (1 << 10)
/** Total number of trade types */
#define NUM_TRADERS 7
#define NUM_TRADERS 11
struct stack_data {
int data[100];
@ -119,13 +123,17 @@ struct stack_data {
#define SHOP_SELLPROFIT(i) (shop_index[(i)].profit_sell)
#define SHOP_FUNC(i) (shop_index[(i)].func)
#define NOTRADE_GOOD(i) (IS_SET(SHOP_TRADE_WITH((i)), TRADE_NOGOOD))
#define NOTRADE_EVIL(i) (IS_SET(SHOP_TRADE_WITH((i)), TRADE_NOEVIL))
#define NOTRADE_NEUTRAL(i) (IS_SET(SHOP_TRADE_WITH((i)), TRADE_NONEUTRAL))
#define NOTRADE_MAGIC_USER(i) (IS_SET(SHOP_TRADE_WITH((i)), TRADE_NOMAGIC_USER))
#define NOTRADE_CLERIC(i) (IS_SET(SHOP_TRADE_WITH((i)), TRADE_NOCLERIC))
#define NOTRADE_THIEF(i) (IS_SET(SHOP_TRADE_WITH((i)), TRADE_NOTHIEF))
#define NOTRADE_WARRIOR(i) (IS_SET(SHOP_TRADE_WITH((i)), TRADE_NOWARRIOR))
#define NOTRADE_GOOD(i) (IS_SET(SHOP_TRADE_WITH((i)), TRADE_NOGOOD))
#define NOTRADE_EVIL(i) (IS_SET(SHOP_TRADE_WITH((i)), TRADE_NOEVIL))
#define NOTRADE_NEUTRAL(i) (IS_SET(SHOP_TRADE_WITH((i)), TRADE_NONEUTRAL))
#define NOTRADE_SORCEROR(i) (IS_SET(SHOP_TRADE_WITH((i)), TRADE_NOSORCEROR))
#define NOTRADE_CLERIC(i) (IS_SET(SHOP_TRADE_WITH((i)), TRADE_NOCLERIC))
#define NOTRADE_THIEF(i) (IS_SET(SHOP_TRADE_WITH((i)), TRADE_NOTHIEF))
#define NOTRADE_FIGHTER(i) (IS_SET(SHOP_TRADE_WITH((i)), TRADE_NOFIGHTER))
#define NOTRADE_BARBARIAN(i) (IS_SET(SHOP_TRADE_WITH((i)), TRADE_NOBARBARIAN))
#define NOTRADE_RANGER(i) (IS_SET(SHOP_TRADE_WITH((i)), TRADE_NORANGER))
#define NOTRADE_BARD(i) (IS_SET(SHOP_TRADE_WITH((i)), TRADE_NOBARD))
#define NOTRADE_DRUID(i) (IS_SET(SHOP_TRADE_WITH((i)), TRADE_NODRUID))
/* Shop flags */
#define WILL_START_FIGHT (1 << 0)

View file

@ -59,7 +59,7 @@ static void ASSIGNROOM(room_vnum room, SPECIAL(fname))
}
/* Assignments */
/* assign special procedures to mobiles. Guildguards, snake, thief, magic user,
/* assign special procedures to mobiles. Guildguards, snake, thief, sorceror,
* puff, fido, janitor, and cityguards are now implemented via triggers. */
void assign_mobiles(void)
{
@ -100,7 +100,7 @@ static struct spec_func_data spec_func_list[] = {
{"Mayor", mayor },
{"Snake", snake },
{"Thief", thief },
{"Magic User", magic_user },
{"Sorceror", sorceror },
{"Puff", puff },
{"Fido", fido },
{"Janitor", janitor },

View file

@ -293,7 +293,7 @@ SPECIAL(thief)
return (FALSE);
}
SPECIAL(magic_user)
SPECIAL(sorceror)
{
struct char_data *vict;

View file

@ -42,7 +42,7 @@ SPECIAL(dump);
SPECIAL(mayor);
SPECIAL(snake);
SPECIAL(thief);
SPECIAL(magic_user);
SPECIAL(sorceror);
SPECIAL(guild_guard);
SPECIAL(puff);
SPECIAL(fido);

View file

@ -153,10 +153,10 @@
/* PC classes */
#define CLASS_UNDEFINED (-1) /**< PC Class undefined */
#define CLASS_MAGIC_USER 0 /**< PC Class Magic User */
#define CLASS_SORCEROR 0 /**< PC Class Sorceror */
#define CLASS_CLERIC 1 /**< PC Class Cleric */
#define CLASS_THIEF 2 /**< PC Class Thief */
#define CLASS_WARRIOR 3 /**< PC Class Warrior */
#define CLASS_FIGHTER 3 /**< PC Class Fighter */
#define CLASS_BARBARIAN 4 /**< PC Class Barbarian */
#define CLASS_RANGER 5 /**< PC Class Ranger */
#define CLASS_BARD 6 /**< PC Class Bard */
@ -431,10 +431,10 @@
#define ITEM_ANTI_GOOD 9 /**< Not usable by good people */
#define ITEM_ANTI_EVIL 10 /**< Not usable by evil people */
#define ITEM_ANTI_NEUTRAL 11 /**< Not usable by neutral people */
#define ITEM_ANTI_MAGIC_USER 12 /**< Not usable by mages */
#define ITEM_ANTI_SORCEROR 12 /**< Not usable by sorcerors */
#define ITEM_ANTI_CLERIC 13 /**< Not usable by clerics */
#define ITEM_ANTI_THIEF 14 /**< Not usable by thieves */
#define ITEM_ANTI_WARRIOR 15 /**< Not usable by warriors */
#define ITEM_ANTI_FIGHTER 15 /**< Not usable by fighters */
#define ITEM_ANTI_BARBARIAN 16 /**< Not usable by barbarians */
#define ITEM_ANTI_RANGER 17 /**< Not usable by rangers */
#define ITEM_ANTI_BARD 18 /**< Not usable by bards */

View file

@ -890,28 +890,28 @@ do \
/** Return the class abbreviation for ch. */
#define CLASS_ABBR(ch) (IS_NPC(ch) ? "--" : class_abbrevs[(int)GET_CLASS(ch)])
/** 1 if ch is magic user class, 0 if not. */
#define IS_MAGIC_USER(ch) (!IS_NPC(ch) && \
(GET_CLASS(ch) == CLASS_MAGIC_USER))
/** 1 if ch is sorceror class, 0 if not. */
#define IS_SORCEROR(ch) (!IS_NPC(ch) && \
(GET_CLASS(ch) == CLASS_SORCEROR))
/** 1 if ch is cleric class, 0 if not. */
#define IS_CLERIC(ch) (!IS_NPC(ch) && \
(GET_CLASS(ch) == CLASS_CLERIC))
/** 1 if ch is thief class, 0 if not. */
#define IS_THIEF(ch) (!IS_NPC(ch) && \
(GET_CLASS(ch) == CLASS_THIEF))
/** 1 if ch is warrior class, 0 if not. */
#define IS_WARRIOR(ch) (!IS_NPC(ch) && \
(GET_CLASS(ch) == CLASS_WARRIOR))
/** 1 if ch is warrior class, 0 if not. */
/** 1 if ch is fighter class, 0 if not. */
#define IS_FIGHTER(ch) (!IS_NPC(ch) && \
(GET_CLASS(ch) == CLASS_FIGHTER))
/** 1 if ch is barbarian class, 0 if not. */
#define IS_BARBARIAN(ch) (!IS_NPC(ch) && \
(GET_CLASS(ch) == CLASS_BARBARIAN))
/** 1 if ch is warrior class, 0 if not. */
/** 1 if ch is ranger class, 0 if not. */
#define IS_RANGER(ch) (!IS_NPC(ch) && \
(GET_CLASS(ch) == CLASS_RANGER))
/** 1 if ch is warrior class, 0 if not. */
/** 1 if ch is bard class, 0 if not. */
#define IS_BARD(ch) (!IS_NPC(ch) && \
(GET_CLASS(ch) == CLASS_BARD))
/** 1 if ch is warrior class, 0 if not. */
/** 1 if ch is druid class, 0 if not. */
#define IS_DRUID(ch) (!IS_NPC(ch) && \
(GET_CLASS(ch) == CLASS_DRUID))
@ -1120,7 +1120,7 @@ static inline int GET_CASTER_PROF_FOR_SPELL(struct char_data *ch, int spellnum)
/* Similar to 5e mods */
static inline int GET_SPELL_ABILITY_MOD(struct char_data *ch) {
switch (GET_CLASS(ch)) {
case CLASS_MAGIC_USER:
case CLASS_SORCEROR:
return GET_ABILITY_MOD(GET_INT(ch));
case CLASS_CLERIC:
return GET_ABILITY_MOD(GET_WIS(ch));