patch for 3.08 to add new classes

From: The Mighty Spaz Twit (spaz@helix.net)
Date: 08/23/95


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