ok, this will need to be modified slightly, to fit the classes you have + would like to add, but it should work ok. more or less... =) Spaz diff -c src2/class.c src/class.c *** src2/class.c Fri Aug 4 10:48:58 1995 --- src/class.c Tue Aug 22 10:08:17 1995 *************** *** 35,40 **** --- 35,41 ---- "Th", "Wa", "Jd", + "Sa", "\n" }; *************** *** 54,59 **** --- 55,61 ---- "Thief", "Warrior", "Jedi Knight", + "Samurai", "\n" }; *************** *** 75,81 **** " [T]hief\r\n" " [W]arrior\r\n" " [M]agic-user\r\n" ! " [J]edi Knight\r\n"; /* The menu for choosing a race in interpreter.c: */ const char *race_menu = --- 77,84 ---- " [T]hief\r\n" " [W]arrior\r\n" " [M]agic-user\r\n" ! " [J]edi Knight\r\n" ! " [S]amurai\r\n"; /* The menu for choosing a race in interpreter.c: */ const char *race_menu = *************** *** 114,119 **** --- 117,125 ---- case 'j': return CLASS_JEDI; break; + case 's': + return CLASS_SAMURAI; + break; default: return CLASS_UNDEFINED; break; *************** *** 180,185 **** --- 186,194 ---- case 'j': return (1 << 4); break; + case 's': + return (1 << 5); + break; default: return 0; break; *************** *** 249,259 **** /* #define PRAC_TYPE 3 should it say 'spell' or 'skill'? */ int prac_params[4][NUM_CLASSES] = { ! /* MAG CLE THE WAR JEDI*/ ! {95, 95, 85, 80, 85}, /* learned level */ ! {100, 100, 12, 12, 20}, /* max per prac */ ! {25, 25, 0, 0, 5}, /* min per pac */ ! {SPELL, SPELL, SKILL, SKILL, SKILL} /* prac name */ }; --- 258,268 ---- /* #define PRAC_TYPE 3 should it say 'spell' or 'skill'? */ int prac_params[4][NUM_CLASSES] = { ! /* MAG CLE THE WAR JEDI SAMMY*/ ! {95, 95, 85, 80, 85, 85}, /* learned level */ ! {100, 100, 12, 12, 20, 20}, /* max per prac */ ! {25, 25, 0, 0, 5, 5}, /* min per pac */ ! {SPELL, SPELL, SKILL, SKILL, SKILL, SKILL} /* prac name */ }; *************** *** 271,276 **** --- 280,287 ---- {CLASS_THIEF, 3027, SCMD_EAST}, {CLASS_WARRIOR, 3021, SCMD_EAST}, + /* none for new classes - need rooms for them */ + /* Brass Dragon */ {-999 /* all */ , 5065, SCMD_WEST}, *************** *** 318,325 **** /* JEDI */ /* 0 5 10 15 */ {100, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, ! 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1} /* 20 25 30 */ }; --- 329,340 ---- /* JEDI */ /* 0 5 10 15 */ {100, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, ! 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, /* 20 25 30 */ + + /* SAMURAI */ + {100, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, + 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1} }; *************** *** 459,464 **** --- 474,480 ---- if (ch->real_abils.str >= 18) ch->real_abils.str_add += number(0, 100); break; + case CLASS_SAMURAI: case CLASS_JEDI: ch->real_abils.dex += table[0]; ch->real_abils.str += table[1]; *************** *** 520,525 **** --- 539,545 ---- break; case CLASS_JEDI: + case CLASS_SAMURAI: SET_SKILL(ch, SKILL_KICK, 15); break; *************** *** 583,588 **** --- 603,609 ---- break; case CLASS_JEDI: + case CLASS_SAMURAI: add_hp += number(8, 12); add_mana = number(1, 10); add_move = number(2, 5); *************** *** 626,632 **** (IS_OBJ_STAT(obj, ITEM_ANTI_CLERIC) && IS_CLERIC(ch)) || (IS_OBJ_STAT(obj, ITEM_ANTI_WARRIOR) && IS_WARRIOR(ch)) || (IS_OBJ_STAT(obj, ITEM_ANTI_THIEF) && IS_THIEF(ch)) || ! (IS_OBJ_STAT(obj, ITEM_ANTI_JEDI) && IS_JEDI(ch))) return 1; else --- 647,654 ---- (IS_OBJ_STAT(obj, ITEM_ANTI_CLERIC) && IS_CLERIC(ch)) || (IS_OBJ_STAT(obj, ITEM_ANTI_WARRIOR) && IS_WARRIOR(ch)) || (IS_OBJ_STAT(obj, ITEM_ANTI_THIEF) && IS_THIEF(ch)) || ! (IS_OBJ_STAT(obj, ITEM_ANTI_JEDI) && IS_JEDI(ch)) || ! (IS_OBJ_STAT(obj, ITEM_ANTI_SAMURAI) && IS_SAMURAI(ch))) return 1; else *************** *** 817,824 **** {"the Entity Of The Force", "the Entity Of The Force", 9000000}, {"the God of The Force", "the Goddess of The Force",9500000}, {"the Implementor", "the Implementress", 10000000} } - }; --- 839,881 ---- {"the Entity Of The Force", "the Entity Of The Force", 9000000}, {"the God of The Force", "the Goddess of The Force",9500000}, {"the Implementor", "the Implementress", 10000000} + }, /* need to change these names... */ + {{"the Man", "the Woman", 0}, + {"the Trainee", "the Trainee", 1}, + {"the Apprentice Jedi", "the Apprentice Jedi", 1250}, + {"the Young Jedi", "the Young Jedi", 2500}, + {"the Inexperienced Jedi", "the Inexperienced Jedi", 5000}, + {"the Traveling Jedi", "the Traveling Jedi", 10000}, + {"the Telekinetic Warrior", "the Telekinetic Warrior", 20000}, + {"the Watchful Warrior", "the Watchful Warrior", 30000}, + {"the Proud Warrior", "the Proud Warrior", 70000}, + {"the Strong Warrior", "the Strong Warrior", 110000}, + {"the Strong Warrior", "the Strong Warrior", 160000}, + {"the Jedi", "the Jedi", 220000}, + {"the Jedi", "the Jedi", 440000}, + {"the Protector", "the Protector", 660000}, + {"the Protector", "the Protector", 880000}, + {"the Ranking Jedi", "the Ranking Jedi", 1100000}, + {"the Ranking Jedi", "the Ranking Jedi", 1500000}, + {"the Mind Master", "the Mind Master", 2000000}, + {"the Mind Master", "the Mind Master", 2500000}, + {"the Jedi Knight", "the Jedi Knight", 3000000}, + {"the Jedi Knight", "the Jedi Knight", 3500000}, + {"the Great Jedi", "the Great Jedi", 3650000}, + {"the Great Jedi", "the Great Jedi", 3800000}, + {"the Jedi Protector", "the Jedi Protector", 4100000}, + {"the Jedi Protector", "the Jedi Protector", 4400000}, + {"the Jedi Master", "the Jedi Master", 4700000}, + {"the Jedi Master", "the Jedi Master", 5100000}, + {"the Jedi Lord", "the Jedi Lord", 5500000}, + {"the Jedi Lord", "the Jedi Lord", 5900000}, + {"the Jedi Commander", "the Jedi Commander", 6300000}, + {"the Supreme Jedi Commander", "the Supreme Jedi Commander", 6650000}, + {"the Immortal Jedi Knight", "the Immortal Jedi Knight", 7000000}, + {"the Entity Of The Force", "the Entity Of The Force", 9000000}, + {"the God of The Force", "the Goddess of The Force",9500000}, + {"the Implementor", "the Implementress", 10000000} } }; diff -c src2/constants.c src/constants.c *** src2/constants.c Fri Aug 4 00:00:49 1995 --- src/constants.c Tue Aug 22 09:12:48 1995 *************** *** 350,355 **** --- 350,356 ---- "!WARRIOR", "!SELL", "!JEDI", + "!SAMURAI", "\n" }; diff -c src2/shop.c src/shop.c *** src2/shop.c Mon Jul 24 21:29:03 1995 --- src/shop.c Tue Aug 22 10:10:25 1995 *************** *** 75,81 **** (IS_CLERIC(ch) && NOTRADE_CLERIC(shop_nr)) || (IS_THIEF(ch) && NOTRADE_THIEF(shop_nr)) || (IS_JEDI(ch) && NOTRADE_JEDI(shop_nr)) || ! (IS_WARRIOR(ch) && NOTRADE_WARRIOR(shop_nr))) { sprintf(buf, "%s %s", GET_NAME(ch), MSG_NO_SELL_CLASS); do_tell(keeper, buf, cmd_tell, 0); return (FALSE); --- 75,83 ---- (IS_CLERIC(ch) && NOTRADE_CLERIC(shop_nr)) || (IS_THIEF(ch) && NOTRADE_THIEF(shop_nr)) || (IS_JEDI(ch) && NOTRADE_JEDI(shop_nr)) || ! (IS_WARRIOR(ch) && NOTRADE_WARRIOR(shop_nr)) || ! (IS_SAMURAI(ch) && NOTRADE_SAMURAI(shop_nr))) { ! sprintf(buf, "%s %s", GET_NAME(ch), MSG_NO_SELL_CLASS); do_tell(keeper, buf, cmd_tell, 0); return (FALSE); diff -c src2/shop.h src/shop.h *** src2/shop.h Mon Jul 24 21:48:36 1995 --- src/shop.h Sun Aug 20 20:34:30 1995 *************** *** 67,73 **** #define TRADE_NOTHIEF 32 #define TRADE_NOWARRIOR 64 #define TRADE_NOJEDI 128 ! struct stack_data { int data[100]; int len; --- 67,73 ---- #define TRADE_NOTHIEF 32 #define TRADE_NOWARRIOR 64 #define TRADE_NOJEDI 128 ! #define TRADE_NOSAMURAI 256 struct stack_data { int data[100]; int len; *************** *** 122,127 **** --- 122,128 ---- #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_JEDI(i) (IS_SET(SHOP_TRADE_WITH((i)), TRADE_NOJEDI)) + #define NOTRADE_SAMURAI(i) (IS_SET(SHOP_TRADE_WITH((i)), TRADE_NOSAMURAI)) /* Constant list for printing out who we sell to */ *************** *** 134,139 **** --- 135,141 ---- "Thief", "Warrior", "Jedi", + "Samurai", "\n" } ; diff -c src2/spell_parser.c src/spell_parser.c *** src2/spell_parser.c Fri Jul 28 16:31:05 1995 --- src/spell_parser.c Tue Aug 22 10:30:12 1995 *************** *** 710,716 **** /* Assign the spells on boot up */ ! void spello(int spl, int mlev, int clev, int tlev, int wlev, int jlev, int max_mana, int min_mana, int mana_change, int minpos, int targets, int violent, int routines) { --- 710,716 ---- /* Assign the spells on boot up */ ! void spello(int spl, int mlev, int clev, int tlev, int wlev, int jlev,int slev, int max_mana, int min_mana, int mana_change, int minpos, int targets, int violent, int routines) { *************** *** 719,724 **** --- 719,725 ---- spell_info[spl].min_level[CLASS_THIEF] = tlev; spell_info[spl].min_level[CLASS_WARRIOR] = wlev; spell_info[spl].min_level[CLASS_JEDI] = jlev; + spell_info[spl].min_level[CLASS_SAMURAI] = slev; spell_info[spl].mana_max = max_mana; spell_info[spl].mana_min = min_mana; spell_info[spl].mana_change = mana_change; *************** *** 731,737 **** /* * Arguments for spello calls: * ! * spellnum, levels (MCTWJ), maxmana, minmana, manachng, minpos, targets, * violent?, routines. * * spellnum: Number of the spell. Usually the symbolic name as defined in --- 732,738 ---- /* * Arguments for spello calls: * ! * spellnum, levels (MCTWJS), maxmana, minmana, manachng, minpos, targets, * violent?, routines. * * spellnum: Number of the spell. Usually the symbolic name as defined in *************** *** 756,762 **** */ #define UU (LVL_IMPL+1) ! #define UNUSED UU,UU,UU,UU,UU,0,0,0,0,0,0,0 #define X LVL_IMMORT --- 757,763 ---- */ #define UU (LVL_IMPL+1) ! #define UNUSED UU,UU,UU,UU,UU,UU,0,0,0,0,0,0,0 #define X LVL_IMMORT *************** *** 767,915 **** for (i = 1; i <= TOP_SPELL_DEFINE; i++) spello(i, UNUSED); /* C L A S S E S M A N A */ ! /* Ma Cl Th Wa Jd Max Min Chn */ ! spello(SPELL_ARMOR, 4, 1, X, X, X, 30, 15, 3, POS_FIGHTING, TAR_CHAR_ROOM, FALSE, MAG_AFFECTS); ! spello(SPELL_BLESS, X, 5, X, X,10, 35, 5, 3, POS_STANDING, TAR_CHAR_ROOM | TAR_OBJ_INV, FALSE, MAG_AFFECTS | MAG_ALTER_OBJS); ! spello(SPELL_BLINDNESS, 9, 6, X, X,15, 35, 25, 1, POS_STANDING, TAR_CHAR_ROOM | TAR_NOT_SELF, FALSE, MAG_AFFECTS); ! spello(SPELL_BURNING_HANDS, 5, X, X,X, X, 30, 10, 3, POS_FIGHTING, TAR_CHAR_ROOM | TAR_FIGHT_VICT, TRUE, MAG_DAMAGE); ! spello(SPELL_CALL_LIGHTNING, X, 15, X, X,25, 40, 25, 3, POS_FIGHTING, TAR_CHAR_ROOM | TAR_FIGHT_VICT, TRUE, MAG_DAMAGE); ! spello(SPELL_CHARM, 16, X, X, X, 7,75, 50, 2, POS_FIGHTING, TAR_CHAR_ROOM | TAR_NOT_SELF, TRUE, MAG_MANUAL); ! spello(SPELL_CHILL_TOUCH, 3, X, X, X,X, 30, 10, 3, POS_FIGHTING, TAR_CHAR_ROOM | TAR_FIGHT_VICT, TRUE, MAG_DAMAGE | MAG_AFFECTS); /* C L A S S E S M A N A */ /* Ma Cl Th Wa Jd Max Min Chn */ ! spello(SPELL_CLONE, X, X, X, X, X, 80, 65, 5, POS_STANDING, TAR_CHAR_ROOM | TAR_SELF_ONLY, FALSE, MAG_MANUAL); ! spello(SPELL_COLOR_SPRAY, 11, X, X, X,X, 30, 15, 3, POS_FIGHTING, TAR_CHAR_ROOM | TAR_FIGHT_VICT, TRUE, MAG_DAMAGE); ! spello(SPELL_CONTROL_WEATHER, X, 17, X, X,X, 75, 25, 5, POS_STANDING, TAR_IGNORE, FALSE, MAG_MANUAL); ! spello(SPELL_CREATE_FOOD, X, 2, X, X,X, 30, 5, 4, POS_STANDING, TAR_IGNORE, FALSE, MAG_CREATIONS); ! spello(SPELL_CREATE_WATER, X, 2, X, X,X, 30, 5, 4, POS_STANDING, TAR_OBJ_INV | TAR_OBJ_EQUIP, FALSE, MAG_CREATIONS); ! spello(SPELL_CURE_BLIND, X, 4, X, X,16, 30, 5, 2, POS_STANDING, TAR_CHAR_ROOM, FALSE, MAG_UNAFFECTS); ! spello(SPELL_CURE_CRITIC, X, 9, X, X,X, 30, 10, 2, POS_FIGHTING, TAR_CHAR_ROOM, FALSE, MAG_POINTS); /* C L A S S E S M A N A */ /* Ma Cl Th Wa Jd Max Min Chn */ ! spello(SPELL_CURE_LIGHT, X, 1, X, X, 3,30, 10, 2, POS_FIGHTING, TAR_CHAR_ROOM, FALSE, MAG_POINTS); ! spello(SPELL_CURSE, 14, X, X, X, 10,80, 50, 2, POS_STANDING, TAR_CHAR_ROOM | TAR_OBJ_INV, TRUE, MAG_AFFECTS | MAG_ALTER_OBJS); ! spello(SPELL_DETECT_ALIGN, X, 4, X, X,1, 20, 10, 2, POS_STANDING, TAR_CHAR_ROOM | TAR_SELF_ONLY, FALSE, MAG_AFFECTS); ! spello(SPELL_DETECT_INVIS, 2, 6, X, X,1, 20, 10, 2, POS_STANDING, TAR_CHAR_ROOM | TAR_SELF_ONLY, FALSE, MAG_AFFECTS); ! spello(SPELL_DETECT_MAGIC, 2, X, X, X,1, 20, 10, 2, POS_STANDING, TAR_CHAR_ROOM | TAR_SELF_ONLY, FALSE, MAG_AFFECTS); /* C L A S S E S M A N A */ /* Ma Cl Th Wa Jd Max Min Chn */ ! spello(SPELL_DETECT_POISON, 10, 3, X, X,1, 15, 5, 1, POS_STANDING, TAR_CHAR_ROOM | TAR_OBJ_INV | TAR_OBJ_ROOM, FALSE, MAG_MANUAL); ! spello(SPELL_DISPEL_EVIL, X, 14, X, X,20, 40, 25, 3, POS_FIGHTING, TAR_CHAR_ROOM | TAR_FIGHT_VICT, TRUE, MAG_DAMAGE); ! spello(SPELL_DISPEL_GOOD, X, 14, X, X,20, 40, 25, 3, POS_FIGHTING, TAR_CHAR_ROOM | TAR_FIGHT_VICT, TRUE, MAG_DAMAGE); ! spello(SPELL_EARTHQUAKE, X, 12, X, X, X,40, 25, 3, POS_FIGHTING, TAR_IGNORE, TRUE, MAG_AREAS); ! spello(SPELL_ENCHANT_WEAPON, 26, X, X, X,X, 150, 100, 10, POS_STANDING, TAR_OBJ_INV | TAR_OBJ_EQUIP, FALSE, MAG_MANUAL); ! spello(SPELL_ENERGY_DRAIN, 13, X, X, X, 17,40, 25, 1, POS_FIGHTING, TAR_CHAR_ROOM | TAR_FIGHT_VICT, TRUE, MAG_DAMAGE | MAG_MANUAL); ! spello(SPELL_GROUP_ARMOR, X, 9, X, X, X,50, 30, 2, POS_STANDING, TAR_IGNORE, FALSE, MAG_GROUPS); /* C L A S S E S M A N A */ /* Ma Cl Th Wa Jd Max Min Chn */ ! spello(SPELL_FIREBALL, 15, X, X, X, X,40, 30, 2, POS_FIGHTING, TAR_CHAR_ROOM | TAR_FIGHT_VICT, TRUE, MAG_DAMAGE); ! spello(SPELL_GROUP_HEAL, X, 22, X, X, X,80, 60, 5, POS_STANDING, TAR_IGNORE, FALSE, MAG_GROUPS); ! spello(SPELL_HARM, X, 19, X, X, X,75, 45, 3, POS_FIGHTING, TAR_CHAR_ROOM | TAR_FIGHT_VICT, TRUE, MAG_DAMAGE); ! spello(SPELL_HEAL, X, 16, X, X, X,60, 40, 3, POS_FIGHTING, TAR_CHAR_ROOM, FALSE, MAG_POINTS | MAG_AFFECTS | MAG_UNAFFECTS); ! spello(SPELL_INFRAVISION, 3, 7, X, X, 4,25, 10, 1, POS_STANDING, TAR_CHAR_ROOM | TAR_SELF_ONLY, FALSE, MAG_AFFECTS); ! spello(SPELL_INVISIBLE, 4, X, X, X, 5,35, 25, 1, POS_STANDING, TAR_CHAR_ROOM | TAR_OBJ_INV | TAR_OBJ_ROOM, FALSE, MAG_AFFECTS | MAG_ALTER_OBJS); ! spello(SPELL_LIGHTNING_BOLT, 9, X, X, X, 11,30, 15, 1, POS_FIGHTING, TAR_CHAR_ROOM | TAR_FIGHT_VICT, TRUE, MAG_DAMAGE); /* C L A S S E S M A N A */ /* Ma Cl Th Wa Jd Max Min Chn */ ! spello(SPELL_LOCATE_OBJECT, 6, X, X, X, 14,25, 20, 1, POS_STANDING, TAR_OBJ_WORLD, FALSE, MAG_MANUAL); ! spello(SPELL_MAGIC_MISSILE, 1, X, X, X, 5,25, 10, 3, POS_FIGHTING, TAR_CHAR_ROOM | TAR_FIGHT_VICT, TRUE, MAG_DAMAGE); ! spello(SPELL_POISON, X, X, X, X, X,50, 20, 3, POS_STANDING, TAR_CHAR_ROOM | TAR_NOT_SELF | TAR_OBJ_INV, TRUE, MAG_AFFECTS | MAG_ALTER_OBJS); ! spello(SPELL_PROT_FROM_EVIL, X, 8, X, X, 13,40, 10, 3, POS_STANDING, TAR_CHAR_ROOM | TAR_SELF_ONLY, FALSE, MAG_AFFECTS); ! spello(SPELL_REMOVE_CURSE, X, 26, X, X, X,45, 25, 5, POS_STANDING, TAR_CHAR_ROOM | TAR_OBJ_INV, FALSE, MAG_UNAFFECTS | MAG_ALTER_OBJS); ! spello(SPELL_SANCTUARY, X, 15, X, X, 22, 110, 85, 5, POS_STANDING, TAR_CHAR_ROOM, FALSE, MAG_AFFECTS); ! spello(SPELL_SHOCKING_GRASP, 7, X, X, X, X,30, 15, 3, POS_FIGHTING, TAR_CHAR_ROOM | TAR_FIGHT_VICT, TRUE, MAG_DAMAGE); /* C L A S S E S M A N A */ /* Ma Cl Th Wa Jd Max Min Chn */ ! spello(SPELL_SLEEP, 8, X, X, X, 16,40, 25, 5, POS_STANDING, TAR_CHAR_ROOM, TRUE, MAG_AFFECTS); ! spello(SPELL_STRENGTH, 6, X, X, X, X,35, 30, 1, POS_STANDING, TAR_CHAR_ROOM, FALSE, MAG_AFFECTS); ! spello(SPELL_SUMMON, X, 10, X, X, X,75, 50, 3, POS_STANDING, TAR_CHAR_WORLD | TAR_NOT_SELF, FALSE, MAG_MANUAL); ! spello(SPELL_WORD_OF_RECALL, X, 12, X, X,X, 20, 10, 2, POS_FIGHTING, TAR_CHAR_ROOM, FALSE, MAG_MANUAL); ! spello(SPELL_REMOVE_POISON, X, 10, X, X, X,40, 8, 4, POS_STANDING, TAR_CHAR_ROOM | TAR_OBJ_INV | TAR_OBJ_ROOM, FALSE, MAG_UNAFFECTS | MAG_ALTER_OBJS); ! spello(SPELL_SENSE_LIFE, X, X, X, X, 18,20, 10, 2, POS_STANDING, TAR_CHAR_ROOM | TAR_SELF_ONLY, FALSE, MAG_AFFECTS); /* --- 768,916 ---- for (i = 1; i <= TOP_SPELL_DEFINE; i++) spello(i, UNUSED); /* C L A S S E S M A N A */ ! /* Ma Cl Th Wa Jd Sa Max Min Chn */ ! spello(SPELL_ARMOR, 4, 1, X, X, X, 8, 30, 15, 3, POS_FIGHTING, TAR_CHAR_ROOM, FALSE, MAG_AFFECTS); ! spello(SPELL_BLESS, X, 5, X, X, 10, 10, 35, 5, 3, POS_STANDING, TAR_CHAR_ROOM | TAR_OBJ_INV, FALSE, MAG_AFFECTS | MAG_ALTER_OBJS); ! spello(SPELL_BLINDNESS, 9, 6, X, X, 15, 15, 35, 25, 1, POS_STANDING, TAR_CHAR_ROOM | TAR_NOT_SELF, FALSE, MAG_AFFECTS); ! spello(SPELL_BURNING_HANDS, 5, X, X,X, X, X,30, 10, 3, POS_FIGHTING, TAR_CHAR_ROOM | TAR_FIGHT_VICT, TRUE, MAG_DAMAGE); ! spello(SPELL_CALL_LIGHTNING, X, 15, X, X,25,25, 40, 25, 3, POS_FIGHTING, TAR_CHAR_ROOM | TAR_FIGHT_VICT, TRUE, MAG_DAMAGE); ! spello(SPELL_CHARM, 16, X, X, X, 7, X,75, 50, 2, POS_FIGHTING, TAR_CHAR_ROOM | TAR_NOT_SELF, TRUE, MAG_MANUAL); ! spello(SPELL_CHILL_TOUCH, 3, X, X, X, X, X, 30, 10, 3, POS_FIGHTING, TAR_CHAR_ROOM | TAR_FIGHT_VICT, TRUE, MAG_DAMAGE | MAG_AFFECTS); /* C L A S S E S M A N A */ /* Ma Cl Th Wa Jd Max Min Chn */ ! spello(SPELL_CLONE, X, X, X, X, X, X, 80, 65, 5, POS_STANDING, TAR_CHAR_ROOM | TAR_SELF_ONLY, FALSE, MAG_MANUAL); ! spello(SPELL_COLOR_SPRAY, 11, X, X, X,X,X, 30, 15, 3, POS_FIGHTING, TAR_CHAR_ROOM | TAR_FIGHT_VICT, TRUE, MAG_DAMAGE); ! spello(SPELL_CONTROL_WEATHER, X, 17, X, X,X,X, 75, 25, 5, POS_STANDING, TAR_IGNORE, FALSE, MAG_MANUAL); ! spello(SPELL_CREATE_FOOD, X, 2, X, X,X,X, 30, 5, 4, POS_STANDING, TAR_IGNORE, FALSE, MAG_CREATIONS); ! spello(SPELL_CREATE_WATER, X, 2, X, X,X,X, 30, 5, 4, POS_STANDING, TAR_OBJ_INV | TAR_OBJ_EQUIP, FALSE, MAG_CREATIONS); ! spello(SPELL_CURE_BLIND, X, 4, X, X,16,X, 30, 5, 2, POS_STANDING, TAR_CHAR_ROOM, FALSE, MAG_UNAFFECTS); ! spello(SPELL_CURE_CRITIC, X, 9, X, X,X, 25,30, 10, 2, POS_FIGHTING, TAR_CHAR_ROOM, FALSE, MAG_POINTS); /* C L A S S E S M A N A */ /* Ma Cl Th Wa Jd Max Min Chn */ ! spello(SPELL_CURE_LIGHT, X, 1, X, X, 3,3,30, 10, 2, POS_FIGHTING, TAR_CHAR_ROOM, FALSE, MAG_POINTS); ! spello(SPELL_CURSE, 14, X, X, X, 10,10,80, 50, 2, POS_STANDING, TAR_CHAR_ROOM | TAR_OBJ_INV, TRUE, MAG_AFFECTS | MAG_ALTER_OBJS); ! spello(SPELL_DETECT_ALIGN, X, 4, X, X,1,1, 20, 10, 2, POS_STANDING, TAR_CHAR_ROOM | TAR_SELF_ONLY, FALSE, MAG_AFFECTS); ! spello(SPELL_DETECT_INVIS, 2, 6, X, X,1,1, 20, 10, 2, POS_STANDING, TAR_CHAR_ROOM | TAR_SELF_ONLY, FALSE, MAG_AFFECTS); ! spello(SPELL_DETECT_MAGIC, 2, X, X, X,1,1, 20, 10, 2, POS_STANDING, TAR_CHAR_ROOM | TAR_SELF_ONLY, FALSE, MAG_AFFECTS); /* C L A S S E S M A N A */ /* Ma Cl Th Wa Jd Max Min Chn */ ! spello(SPELL_DETECT_POISON, 10, 3, X, X,1,1, 15, 5, 1, POS_STANDING, TAR_CHAR_ROOM | TAR_OBJ_INV | TAR_OBJ_ROOM, FALSE, MAG_MANUAL); ! spello(SPELL_DISPEL_EVIL, X, 14, X, X,20,20, 40, 25, 3, POS_FIGHTING, TAR_CHAR_ROOM | TAR_FIGHT_VICT, TRUE, MAG_DAMAGE); ! spello(SPELL_DISPEL_GOOD, X, 14, X, X,20,20, 40, 25, 3, POS_FIGHTING, TAR_CHAR_ROOM | TAR_FIGHT_VICT, TRUE, MAG_DAMAGE); ! spello(SPELL_EARTHQUAKE, X, 12, X, X, X, X,40, 25, 3, POS_FIGHTING, TAR_IGNORE, TRUE, MAG_AREAS); ! spello(SPELL_ENCHANT_WEAPON, 26, X, X, X,X,X, 150, 100, 10, POS_STANDING, TAR_OBJ_INV | TAR_OBJ_EQUIP, FALSE, MAG_MANUAL); ! spello(SPELL_ENERGY_DRAIN, 13, X, X, X, 17,17,40, 25, 1, POS_FIGHTING, TAR_CHAR_ROOM | TAR_FIGHT_VICT, TRUE, MAG_DAMAGE | MAG_MANUAL); ! spello(SPELL_GROUP_ARMOR, X, 9, X, X, X,X,50, 30, 2, POS_STANDING, TAR_IGNORE, FALSE, MAG_GROUPS); /* C L A S S E S M A N A */ /* Ma Cl Th Wa Jd Max Min Chn */ ! spello(SPELL_FIREBALL, 15, X, X, X, X,X,40, 30, 2, POS_FIGHTING, TAR_CHAR_ROOM | TAR_FIGHT_VICT, TRUE, MAG_DAMAGE); ! spello(SPELL_GROUP_HEAL, X, 22, X, X, X,28,80, 60, 5, POS_STANDING, TAR_IGNORE, FALSE, MAG_GROUPS); ! spello(SPELL_HARM, X, 19, X, X, X,X,75, 45, 3, POS_FIGHTING, TAR_CHAR_ROOM | TAR_FIGHT_VICT, TRUE, MAG_DAMAGE); ! spello(SPELL_HEAL, X, 16, X, X, X,25,60, 40, 3, POS_FIGHTING, TAR_CHAR_ROOM, FALSE, MAG_POINTS | MAG_AFFECTS | MAG_UNAFFECTS); ! spello(SPELL_INFRAVISION, 3, 7, X, X, 4,4, 25, 10, 1, POS_STANDING, TAR_CHAR_ROOM | TAR_SELF_ONLY, FALSE, MAG_AFFECTS); ! spello(SPELL_INVISIBLE, 4, X, X, X, 5,X,35, 25, 1, POS_STANDING, TAR_CHAR_ROOM | TAR_OBJ_INV | TAR_OBJ_ROOM, FALSE, MAG_AFFECTS | MAG_ALTER_OBJS); ! spello(SPELL_LIGHTNING_BOLT, 9, X, X, X, 11,11,30, 15, 1, POS_FIGHTING, TAR_CHAR_ROOM | TAR_FIGHT_VICT, TRUE, MAG_DAMAGE); /* C L A S S E S M A N A */ /* Ma Cl Th Wa Jd Max Min Chn */ ! spello(SPELL_LOCATE_OBJECT, 6, X, X, X, 14,X,25, 20, 1, POS_STANDING, TAR_OBJ_WORLD, FALSE, MAG_MANUAL); ! spello(SPELL_MAGIC_MISSILE, 1, X, X, X, 5,5,25, 10, 3, POS_FIGHTING, TAR_CHAR_ROOM | TAR_FIGHT_VICT, TRUE, MAG_DAMAGE); ! spello(SPELL_POISON, X, X, X, X, X,X,50, 20, 3, POS_STANDING, TAR_CHAR_ROOM | TAR_NOT_SELF | TAR_OBJ_INV, TRUE, MAG_AFFECTS | MAG_ALTER_OBJS); ! spello(SPELL_PROT_FROM_EVIL, X, 8, X, X, 13,13,40, 10, 3, POS_STANDING, TAR_CHAR_ROOM | TAR_SELF_ONLY, FALSE, MAG_AFFECTS); ! spello(SPELL_REMOVE_CURSE, X, 26, X, X, X,30,45, 25, 5, POS_STANDING, TAR_CHAR_ROOM | TAR_OBJ_INV, FALSE, MAG_UNAFFECTS | MAG_ALTER_OBJS); ! spello(SPELL_SANCTUARY, X, 15, X, X, 22, 22,110, 85, 5, POS_STANDING, TAR_CHAR_ROOM, FALSE, MAG_AFFECTS); ! spello(SPELL_SHOCKING_GRASP, 7, X, X, X, X,X,30, 15, 3, POS_FIGHTING, TAR_CHAR_ROOM | TAR_FIGHT_VICT, TRUE, MAG_DAMAGE); /* C L A S S E S M A N A */ /* Ma Cl Th Wa Jd Max Min Chn */ ! spello(SPELL_SLEEP, 8, X, X, X, 16, 16, 40, 25, 5, POS_STANDING, TAR_CHAR_ROOM, TRUE, MAG_AFFECTS); ! spello(SPELL_STRENGTH, 6, X, X, X, X,11,35, 30, 1, POS_STANDING, TAR_CHAR_ROOM, FALSE, MAG_AFFECTS); ! spello(SPELL_SUMMON, X, 10, X, X, X,10,75, 50, 3, POS_STANDING, TAR_CHAR_WORLD | TAR_NOT_SELF, FALSE, MAG_MANUAL); ! spello(SPELL_WORD_OF_RECALL, X, 12, X, X,X,19, 20, 10, 2, POS_FIGHTING, TAR_CHAR_ROOM, FALSE, MAG_MANUAL); ! spello(SPELL_REMOVE_POISON, X, 10, X, X, X,14,40, 8, 4, POS_STANDING, TAR_CHAR_ROOM | TAR_OBJ_INV | TAR_OBJ_ROOM, FALSE, MAG_UNAFFECTS | MAG_ALTER_OBJS); ! spello(SPELL_SENSE_LIFE, X, X, X, X, 18,18,20, 10, 2, POS_STANDING, TAR_CHAR_ROOM | TAR_SELF_ONLY, FALSE, MAG_AFFECTS); /* *************** *** 920,959 **** * 0's. */ ! /* Ma Cl Th Wa Jd*/ ! spello(SKILL_BACKSTAB, X, X, 3, X, X, 0, 0, 0, 0, 0, 0, 0); ! spello(SKILL_BASH, X, X, X, 12, X, 0, 0, 0, 0, 0, 0, 0); ! spello(SKILL_HIDE, X, X, 5, X, 7, 0, 0, 0, 0, 0, 0, 0); ! spello(SKILL_KICK, X, X, X, 1, 1, 0, 0, 0, 0, 0, 0, 0); ! spello(SKILL_PICK_LOCK, X, X, 2, X, X, 0, 0, 0, 0, 0, 0, 0); ! spello(SKILL_RESCUE, X, X, X, 3, 4, 0, 0, 0, 0, 0, 0, 0); ! spello(SKILL_SHOOT, X, X, 12, 8, 12, 0, 0, 0, 0, 0, 0, 0); ! spello(SKILL_SNEAK, X, X, 1, X, 17, 0, 0, 0, 0, 0, 0, 0); ! spello(SKILL_STEAL, X, X, 4, X, X, 0, 0, 0, 0, 0, 0, 0); /* Ma Cl Th Wa Jd*/ ! spello(SKILL_TRACK, X, X, 6, 9, 9, 0, 0, 0, 0, 0, 0, 0); ! spello(SKILL_SWORDSMANSHIP, X, X, X, 25, 20, 0 ,0 ,0 ,0 ,0 ,0, 0); ! ! spello(SPELL_IDENTIFY, 0, 0, 0, 0, 0, 0, 0, 0, 0, TAR_CHAR_ROOM | TAR_OBJ_INV | TAR_OBJ_ROOM, FALSE, MAG_MANUAL); } --- 921,960 ---- * 0's. */ ! /* Ma Cl Th Wa Jd Sa*/ ! spello(SKILL_BACKSTAB, X, X, 3, X, X, 5, 0, 0, 0, 0, 0, 0, 0); ! spello(SKILL_BASH, X, X, X,12, X, X, 0, 0, 0, 0, 0, 0, 0); ! spello(SKILL_HIDE, X, X, 5, X, 7, 7, 0, 0, 0, 0, 0, 0, 0); ! spello(SKILL_KICK, X, X, X, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0); ! spello(SKILL_PICK_LOCK,X, X, 2, X, X, X, 0, 0, 0, 0, 0, 0, 0); ! spello(SKILL_RESCUE, X, X, X, 3, 4, 5, 0, 0, 0, 0, 0, 0, 0); ! spello(SKILL_SHOOT, X, X,12, 8,12,15, 0, 0, 0, 0, 0, 0, 0); ! spello(SKILL_SNEAK, X, X, 1, X,17, 9, 0, 0, 0, 0, 0, 0, 0); ! spello(SKILL_STEAL, X, X, 4, X, X, X, 0, 0, 0, 0, 0, 0, 0); /* Ma Cl Th Wa Jd*/ ! spello(SKILL_TRACK, X, X, 6, 9, 9, 5, 0, 0, 0, 0, 0, 0, 0); ! spello(SKILL_SWORDSMANSHIP, X, X, X, 25, 20, 10, 0 ,0 ,0 ,0 ,0 ,0, 0); ! /* Ma Cl Th Wa Jd Sa Max Min */ ! spello(SPELL_IDENTIFY,10, X, X, X,20,20, 140, 100, 2, POS_STANDING, TAR_CHAR_ROOM | TAR_OBJ_INV | TAR_OBJ_ROOM, FALSE, MAG_MANUAL); } diff -c src2/structs.h src/structs.h *** src2/structs.h Mon Aug 7 18:19:44 1995 --- src/structs.h Sun Aug 20 20:36:28 1995 *************** *** 84,91 **** #define CLASS_THIEF 2 #define CLASS_WARRIOR 3 #define CLASS_JEDI 4 ! #define NUM_CLASSES 5 /* This must be the number of classes!! */ /* NPC classes (currently unused - feel free to implement!) */ #define CLASS_OTHER 0 --- 84,92 ---- #define CLASS_THIEF 2 #define CLASS_WARRIOR 3 #define CLASS_JEDI 4 + #define CLASS_SAMURAI 5 ! #define NUM_CLASSES 6 /* This must be the number of classes!! */ /* NPC classes (currently unused - feel free to implement!) */ #define CLASS_OTHER 0 *************** *** 333,338 **** --- 334,340 ---- #define ITEM_ANTI_WOLFEN (1 << 21) /* Not for those stinkin' wolfen! */ #define ITEM_ANTI_TROGLODYTE (1 << 22)/* Not for those stinkin' trogs! */ #define ITEM_ANTI_ELF (1 << 23) /* Not for those stinkin' elves! */ + #define ITEM_ANTI_SAMURAI (1 << 24) /* Not usable by sammies */ /* Modifier constants used with obj affects ('A' fields) */ Common subdirectories: src2/util and src/util diff -c src2/utils.h src/utils.h *** src2/utils.h Fri Aug 4 12:01:36 1995 --- src/utils.h Sun Aug 20 20:37:18 1995 *************** *** 413,418 **** --- 413,420 ---- (GET_CLASS(ch) == CLASS_WARRIOR)) #define IS_JEDI(ch) (!IS_NPC(ch) && \ (GET_CLASS(ch) == CLASS_JEDI)) + #define IS_SAMURAI(ch) (!IS_NPC(ch) && \ + (GET_CLASS(ch) == CLASS_SAMURAI)) /* IS for races */ #define RACE_ABBR(ch) (IS_NPC(ch) ? "---" : race_abbrevs[(int)GET_RACE(ch)])
This archive was generated by hypermail 2b30 : 12/18/00 PST