Only in new2: angband.exe
Only in new2: birth.o
Only in new2: cave.o
Only in new2: cmd1.o
Only in new2: cmd2.o
Only in new2: cmd3.o
Only in new2: cmd4.o
Only in new2: cmd5.o
Only in new2: cmd6.o
diff -u3 new1/defines.h new2/defines.h
--- new1/defines.h	Fri Nov 30 17:51:16 2001
+++ new2/defines.h	Fri Nov 30 17:45:04 2001
@@ -1982,7 +1982,7 @@
 #define TR3_FREE_ACT        0x00000040L /* Free action */
 #define TR3_HOLD_LIFE       0x00000080L /* Hold life */
 #define TR3_MANA_CURSE      0x00000100L /* Mana curse */
-#define TR3_XXX2            0x00000200L
+#define TR3_MANA_SHIELD     0x00000200L /* Mana shield */
 #define TR3_XXX3            0x00000400L
 #define TR3_XXX4            0x00000800L
 #define TR3_IMPACT          0x00001000L /* Earthquake blows */
Only in new2: dungeon.o
Only in new2: files.o
Only in new2: generate.o
diff -u3 new1/init1.c new2/init1.c
--- new1/init1.c	Fri Nov 30 16:08:06 2001
+++ new2/init1.c	Fri Nov 30 17:29:18 2001
@@ -449,7 +449,7 @@
 	"FREE_ACT",
 	"HOLD_LIFE",
         "MANA_CURSE",
-	"XXX2",
+        "MANA_SHIELD",
 	"XXX3",
 	"XXX4",
 	"IMPACT",
Only in new2: init1.o
Only in new2: init2.o
Only in new2: l-misc.o
Only in new2: l-monst.o
diff -u3 new1/l-object.c new2/l-object.c
--- new1/l-object.c	Fri Nov 30 16:13:20 2001
+++ new2/l-object.c	Fri Nov 30 17:30:52 2001
@@ -4854,7 +4854,7 @@
  tolua_constant(tolua_S,NULL,"TR3_FREE_ACT",TR3_FREE_ACT);
  tolua_constant(tolua_S,NULL,"TR3_HOLD_LIFE",TR3_HOLD_LIFE);
  tolua_constant(tolua_S,NULL,"TR3_MANA_CURSE",TR3_MANA_CURSE);
- tolua_constant(tolua_S,NULL,"TR3_XXX2",TR3_XXX2);
+ tolua_constant(tolua_S,NULL,"TR3_MANA_SHIELD",TR3_MANA_SHIELD);
  tolua_constant(tolua_S,NULL,"TR3_XXX3",TR3_XXX3);
  tolua_constant(tolua_S,NULL,"TR3_XXX4",TR3_XXX4);
  tolua_constant(tolua_S,NULL,"TR3_IMPACT",TR3_IMPACT);
@@ -5771,8 +5771,8 @@
  lua_pushnil(tolua_S); lua_setglobal(tolua_S,"TR3_SEE_INVIS");
  lua_pushnil(tolua_S); lua_setglobal(tolua_S,"TR3_FREE_ACT");
  lua_pushnil(tolua_S); lua_setglobal(tolua_S,"TR3_HOLD_LIFE");
- lua_pushnil(tolua_S); lua_setglobal(tolua_S,"TR3_XXX1");
- lua_pushnil(tolua_S); lua_setglobal(tolua_S,"TR3_XXX2");
+ lua_pushnil(tolua_S); lua_setglobal(tolua_S,"TR3_MANA_CURSE");
+ lua_pushnil(tolua_S); lua_setglobal(tolua_S,"TR3_MANA_SHIELD");
  lua_pushnil(tolua_S); lua_setglobal(tolua_S,"TR3_XXX3");
  lua_pushnil(tolua_S); lua_setglobal(tolua_S,"TR3_XXX4");
  lua_pushnil(tolua_S); lua_setglobal(tolua_S,"TR3_IMPACT");
Only in new2: l-object.o
Only in new2: l-player.o
Only in new2: l-random.o
Only in new2: l-spell.o
Only in new2: l-ui.o
Only in new2: load.o
Common subdirectories: new1/lua and new2/lua
Only in new2: main-dos.o
Only in new2: main-ibm.o
Only in new2: main.o
Only in new2: makefile
Only in new2: melee1.o
Only in new2: melee2.o
Only in new2: monster1.o
Only in new2: monster2.o
diff -u3 new1/object1.c new2/object1.c
--- new1/object1.c	Fri Nov 30 16:50:44 2001
+++ new2/object1.c	Fri Nov 30 17:31:50 2001
@@ -2193,6 +2193,12 @@
                 known = TRUE;
         }
 
+        if (f3 & (TR3_MANA_SHIELD))
+        {
+                text_out("It generates a mana shield.\n");
+                known = TRUE;
+        }
+
 	if (f3 & (TR3_DRAIN_EXP))
 	{
 		text_out("It drains experience.\n");
Only in new2: object1.o
Only in new2: object2.o
Only in new2: randart.o
Only in new2: save.o
Only in new2: script.o
diff -u3 new1/spells1.c new2/spells1.c
--- new1/spells1.c	Fri Nov 30 16:59:16 2001
+++ new2/spells1.c	Fri Nov 30 17:40:36 2001
@@ -461,10 +461,25 @@
                 else
                 {
                         p_ptr->csp -= dam;
-                        /* Display de mana */
+                        /* Display the mana */
                         p_ptr->redraw |= (PR_MANA);
                 }
-        else
+        /* if the player has mana shield, reduce sp when hp gets to 0 */
+        else if (p_ptr->mana_shield && dam>p_ptr->chp)
+        {
+                dam-=p_ptr->chp;
+                p_ptr->chp = 0;
+                if (dam>p_ptr->csp)
+                {
+                        p_ptr->chp = p_ptr->csp-dam;
+                        p_ptr->csp = 0;
+                }
+                else
+                        p_ptr->csp -= dam;
+                /* Display the mana */
+                p_ptr->redraw |= (PR_MANA);
+        }
+        else         
                 p_ptr->chp -= dam;
 
 	/* Display the hitpoints */
Only in new2: spells1.o
diff -u3 new1/spells2.c new2/spells2.c
--- new1/spells2.c	Fri Nov 30 16:42:06 2001
+++ new2/spells2.c	Fri Nov 30 17:41:34 2001
@@ -468,6 +468,10 @@
         {
                 info[i++] = "You are mana cursed.";
         }
+        if (p_ptr->mana_shield)
+        {
+                info[i++] = "A shield of mana protects you.";
+        }
 	if (p_ptr->teleport)
 	{
 		info[i++] = "Your position is very uncertain.";
Only in new2: spells2.o
Only in new2: store.o
Only in new2: tables.o
diff -u3 new1/types.h new2/types.h
--- new1/types.h	Fri Nov 30 16:40:32 2001
+++ new2/types.h	Fri Nov 30 17:42:36 2001
@@ -1045,6 +1045,7 @@
 
 	bool impact;		/* Earthquake blows */
         bool mana_curse;        /* Mana curse */
+        bool mana_shield;       /* Mana shield */
 	bool aggravate;		/* Aggravate monsters */
 	bool teleport;		/* Random teleporting */
 	bool exp_drain;		/* Experience draining */
Only in new2: use-obj.o
Only in new2: util.o
Only in new2: variable.o
Only in new2: wizard1.o
Only in new2: wizard2.o
diff -u3 new1/xtra1.c new2/xtra1.c
--- new1/xtra1.c	Fri Nov 30 16:36:04 2001
+++ new2/xtra1.c	Fri Nov 30 17:42:06 2001
@@ -1784,6 +1784,7 @@
 
 	/* Clear all the flags */
         p_ptr->mana_curse = FALSE;
+        p_ptr->mana_shield = FALSE;
 	p_ptr->aggravate = FALSE;
 	p_ptr->teleport = FALSE;
 	p_ptr->exp_drain = FALSE;
@@ -1874,6 +1875,7 @@
 	if (f3 & (TR3_SEE_INVIS)) p_ptr->see_inv = TRUE;
 	if (f3 & (TR3_FREE_ACT)) p_ptr->free_act = TRUE;
 	if (f3 & (TR3_HOLD_LIFE)) p_ptr->hold_life = TRUE;
+        if (f3 & (TR3_MANA_SHIELD)) p_ptr->mana_shield = TRUE;
 
 	/* Weird flags */
 	if (f3 & (TR3_BLESSED)) p_ptr->bless_blade = TRUE;
@@ -1974,6 +1976,7 @@
 		if (f3 & (TR3_SEE_INVIS)) p_ptr->see_inv = TRUE;
 		if (f3 & (TR3_FREE_ACT)) p_ptr->free_act = TRUE;
 		if (f3 & (TR3_HOLD_LIFE)) p_ptr->hold_life = TRUE;
+                if (f3 & (TR3_MANA_SHIELD)) p_ptr->mana_shield = TRUE;
 
 		/* Weird flags */
 		if (f3 & (TR3_BLESSED)) p_ptr->bless_blade = TRUE;
Only in new2: xtra1.o
Only in new2: xtra2.o
Only in new2: z-form.o
Only in new2: z-rand.o
Only in new2: z-term.o
Only in new2: z-util.o
Only in new2: z-virt.o
