From 61d39c64310875c94f0841952626d8a9e62cbe2e Mon Sep 17 00:00:00 2001 From: Juan Pablo Kaniefsky Date: Thu, 30 Apr 2015 17:31:54 -0300 Subject: [PATCH 1/2] fixed makefile.cyg for recent versions of gcc and added some stuff to gitignore that get created on compile and execution --- .gitignore | 2 ++ src/Makefile.cyg | 11 +++++------ 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/.gitignore b/.gitignore index 83bf48a..e346af5 100755 --- a/.gitignore +++ b/.gitignore @@ -7,3 +7,5 @@ lib/user/*.prf .new *~ *.DS_Store +sil.INI +src/sil.res diff --git a/src/Makefile.cyg b/src/Makefile.cyg index 3f92b89..3fff7f6 100755 --- a/src/Makefile.cyg +++ b/src/Makefile.cyg @@ -8,8 +8,8 @@ CC = gcc WRES = windres -LIBS = -s -mno-cygwin -mwindows -e _mainCRTStartup -lwinmm -CFLAGS = -Wall -mno-cygwin -O2 -fno-strength-reduce -DWINDOWS +LIBS = -s -mwindows -e _mainCRTStartup -lwinmm +CFLAGS = -Wall -O2 -fno-strength-reduce -DWINDOWS EXOBJS = \ sil.res \ @@ -158,7 +158,7 @@ generate.o: generate.c $(INCS) init1.o: init1.c $(INCS) init.h $(CC) $(CFLAGS) $(INCDIRS) -c -o $@ $< -init2.o: init2.c $(INCS) init.h +init2.o: init2.c $(INCS) init.h $(CC) $(CFLAGS) $(INCDIRS) -c -o $@ $< load.o: load.c $(INCS) init.h @@ -226,13 +226,13 @@ variable.o: variable.c $(INCS) wizard1.o: wizard1.c $(INCS) $(CC) $(CFLAGS) $(INCDIRS) -c -o $@ $< -wizard2.o: wizard2.c $(INCS) +wizard2.o: wizard2.c $(INCS) $(CC) $(CFLAGS) $(INCDIRS) -c -o $@ $< squelch.o: squelch.c $(INCS) $(CC) $(CFLAGS) $(INCDIRS) -c -o $@ $< -xtra1.o: xtra1.c $(INCS) +xtra1.o: xtra1.c $(INCS) $(CC) $(CFLAGS) $(INCDIRS) -c -o $@ $< xtra2.o: xtra2.c $(INCS) @@ -258,4 +258,3 @@ z-virt.o: z-virt.c $(HDRS) z-virt.h z-util.h .c.o: $(CC) $(CFLAGS) $(INCDIRS) -c -o $@ $< - From f1380bfbc60c9ee5c931be1393436cd05bc073d0 Mon Sep 17 00:00:00 2001 From: Juan Pablo Kaniefsky Date: Thu, 30 Apr 2015 20:27:28 -0300 Subject: [PATCH 2/2] rings of power, baby (rings and amulets as smithing wildcards). --- lib/edit/artefact.txt | 65 ++++++++++++++++++++++++------------------- src/cmd1.c | 37 ++++++++++++------------ src/cmd2.c | 37 +++++++++++------------- src/cmd4.c | 15 ++++++++-- src/obj-info.c | 14 +++++++--- src/types.h | 18 ++++++++++-- src/xtra1.c | 33 ++++++++++++++++++++-- 7 files changed, 139 insertions(+), 80 deletions(-) diff --git a/lib/edit/artefact.txt b/lib/edit/artefact.txt index 12b6dad..fdc716b 100755 --- a/lib/edit/artefact.txt +++ b/lib/edit/artefact.txt @@ -1668,34 +1668,43 @@ F:HAUNTED | FEAR | VUL_FIRE | VUL_COLD | VUL_POIS F:INSTA_ART -## The Ultimate TV_RING - -N:188:'Ultimate' -I:45:0:0 -F:STR | DEX | NEG_STR | NEG_DEX -F:ARCHERY | STEALTH | PERCEPTION -F:DAMAGE_SIDES -F:TUNNEL -F:SUST_STR | SUST_DEX -F:RES_FIRE | RES_COLD | RES_POIS -F:RES_FEAR | RES_BLIND | RES_CONFU | RES_STUN | RES_HALLU -F:SLOW_DIGEST | REGEN | SEE_INVIS | FREE_ACT | SPEED -F:HUNGER | DANGER | AGGRAVATE | LIGHT_CURSE -F:HAUNTED | FEAR | VUL_FIRE | VUL_COLD | VUL_POIS -F:INSTA_ART - - -## The Ultimate TV_AMULET - -N:189:'Ultimate' -I:40:0:0 -F:CON | GRA | NEG_CON | NEG_GRA -F:ARCHERY | STEALTH | PERCEPTION | WILL | SONG -F:SUST_CON | SUST_GRA -F:RES_FEAR | RES_BLIND | RES_CONFU | RES_STUN | RES_HALLU -F:SLOW_DIGEST | LIGHT | REGEN | SEE_INVIS | FREE_ACT -F:HUNGER | DARKNESS | DANGER | AGGRAVATE | LIGHT_CURSE -F:HAUNTED | FEAR | VUL_FIRE | VUL_COLD | VUL_POIS +## The Ultimate TV_RING + +N:188:'Ultimate' +I:45:0:0 +F:STR | DEX | CON | GRA | NEG_STR | NEG_DEX | NEG_CON | NEG_GRA +F:MELEE |ARCHERY | STEALTH | PERCEPTION | WILL | SMITHING | SONG +F:DAMAGE_SIDES +F:TUNNEL | VAMPIRIC | SHARPNESS +F:SLAY_ORC | SLAY_TROLL | SLAY_WOLF | SLAY_SPIDER +F:SLAY_UNDEAD | SLAY_RAUKO | SLAY_DRAGON +F:BRAND_ELEC | BRAND_FIRE | BRAND_COLD | BRAND_POIS +F:SUST_STR | SUST_DEX | SUST_CON | SUST_GRA +F:RES_FIRE | RES_COLD | RES_POIS +F:RES_FEAR | RES_BLIND | RES_CONFU | RES_STUN | RES_HALLU +F:RADIANCE | SLOW_DIGEST | LIGHT | REGEN | SEE_INVIS | FREE_ACT | SPEED +F:HUNGER | DARKNESS | SLOWNESS | DANGER | AGGRAVATE | LIGHT_CURSE | HAUNTED | FEAR +F:VUL_FIRE | VUL_COLD | VUL_POIS +F:INSTA_ART + + +## The Ultimate TV_AMULET + +N:189:'Ultimate' +I:40:0:0 +F:STR | DEX | CON | GRA | NEG_STR | NEG_DEX | NEG_CON | NEG_GRA +F:MELEE |ARCHERY | STEALTH | PERCEPTION | WILL | SMITHING | SONG +F:DAMAGE_SIDES +F:TUNNEL | VAMPIRIC | SHARPNESS +F:SLAY_ORC | SLAY_TROLL | SLAY_WOLF | SLAY_SPIDER +F:SLAY_UNDEAD | SLAY_RAUKO | SLAY_DRAGON +F:BRAND_ELEC | BRAND_FIRE | BRAND_COLD | BRAND_POIS +F:SUST_STR | SUST_DEX | SUST_CON | SUST_GRA +F:RES_FIRE | RES_COLD | RES_POIS +F:RES_FEAR | RES_BLIND | RES_CONFU | RES_STUN | RES_HALLU +F:RADIANCE | SLOW_DIGEST | LIGHT | REGEN | SEE_INVIS | FREE_ACT | SPEED +F:HUNGER | DARKNESS | SLOWNESS | DANGER | AGGRAVATE | LIGHT_CURSE | HAUNTED | FEAR +F:VUL_FIRE | VUL_COLD | VUL_POIS F:INSTA_ART diff --git a/src/cmd1.c b/src/cmd1.c index 6f02861..1bc8797 100755 --- a/src/cmd1.c +++ b/src/cmd1.c @@ -1907,9 +1907,9 @@ void ident_bow_arrow_by_use(object_type *j_ptr, object_type *i_ptr, object_type u32b maybe_notice_slay(const object_type *o_ptr, u32b flag) { - u32b noticed_flag = 0L; + u32b noticed_flag = 0L, f1, f2, f3; - if (!object_known_p(o_ptr)) + if ((f1 & flag) && !object_known_p(o_ptr)) { noticed_flag = flag; } @@ -1951,7 +1951,7 @@ int slay_bonus(const object_type *o_ptr, const monster_type *m_ptr, u32b *notice case TV_DIGGING: { /* Slay Wolf */ - if ((f1 & (TR1_SLAY_WOLF)) && + if ((p_ptr->slay_wolf) && (r_ptr->flags3 & (RF3_WOLF))) { if (m_ptr->ml) @@ -1965,7 +1965,7 @@ int slay_bonus(const object_type *o_ptr, const monster_type *m_ptr, u32b *notice } /* Slay Spider */ - if ((f1 & (TR1_SLAY_SPIDER)) && + if ((p_ptr->slay_spider) && (r_ptr->flags3 & (RF3_SPIDER))) { if (m_ptr->ml) @@ -1979,7 +1979,7 @@ int slay_bonus(const object_type *o_ptr, const monster_type *m_ptr, u32b *notice } /* Slay Undead */ - if ((f1 & (TR1_SLAY_UNDEAD)) && + if ((p_ptr->slay_undead) && (r_ptr->flags3 & (RF3_UNDEAD))) { if (m_ptr->ml) @@ -1993,7 +1993,7 @@ int slay_bonus(const object_type *o_ptr, const monster_type *m_ptr, u32b *notice } /* Slay Rauko */ - if ((f1 & (TR1_SLAY_RAUKO)) && + if ((p_ptr->slay_rauko) && (r_ptr->flags3 & (RF3_RAUKO))) { if (m_ptr->ml) @@ -2007,7 +2007,7 @@ int slay_bonus(const object_type *o_ptr, const monster_type *m_ptr, u32b *notice } /* Slay Orc */ - if ((f1 & (TR1_SLAY_ORC)) && + if ((p_ptr->slay_orc) && (r_ptr->flags3 & (RF3_ORC))) { if (m_ptr->ml) @@ -2021,7 +2021,7 @@ int slay_bonus(const object_type *o_ptr, const monster_type *m_ptr, u32b *notice } /* Slay Troll */ - if ((f1 & (TR1_SLAY_TROLL)) && + if ((p_ptr->slay_troll) && (r_ptr->flags3 & (RF3_TROLL))) { if (m_ptr->ml) @@ -2035,7 +2035,7 @@ int slay_bonus(const object_type *o_ptr, const monster_type *m_ptr, u32b *notice } /* Slay Dragon */ - if ((f1 & (TR1_SLAY_DRAGON)) && + if ((p_ptr->slay_dragon) && (r_ptr->flags3 & (RF3_DRAGON))) { if (m_ptr->ml) @@ -2070,7 +2070,7 @@ int slay_bonus(const object_type *o_ptr, const monster_type *m_ptr, u32b *notice } /* Brand (Fire) */ - if (f1 & (TR1_BRAND_FIRE)) + if (p_ptr->fire_branded) { /* Notice immunity */ if (r_ptr->flags3 & (RF3_RES_FIRE)) @@ -2101,7 +2101,7 @@ int slay_bonus(const object_type *o_ptr, const monster_type *m_ptr, u32b *notice } /* Brand (Cold) */ - if (f1 & (TR1_BRAND_COLD)) + if (p_ptr->cold_branded) { /* Notice immunity */ if (r_ptr->flags3 & (RF3_RES_COLD)) @@ -2131,7 +2131,7 @@ int slay_bonus(const object_type *o_ptr, const monster_type *m_ptr, u32b *notice } /* Brand (Poison) */ - if (f1 & (TR1_BRAND_POIS)) + if (p_ptr->poison_branded) { /* Notice immunity */ if (r_ptr->flags3 & (RF3_RES_POIS)) @@ -2177,14 +2177,14 @@ extern int prt_after_sharpness(const object_type *o_ptr, u32b *noticed_flag) object_flags(o_ptr, &f1, &f2, &f3); /* Sharpness */ - if (f1 & (TR1_SHARPNESS)) + if (p_ptr->sharp) { *noticed_flag = maybe_notice_slay(o_ptr, TR1_SHARPNESS); protection = 50; } /* Sharpness 2 */ - if (f1 & (TR1_SHARPNESS2)) + if (p_ptr->sharpest) { *noticed_flag = maybe_notice_slay(o_ptr, TR1_SHARPNESS2); protection = 0; @@ -3859,10 +3859,11 @@ void py_attack_aux(int y, int x, int attack_type) // deal with killing blows if (fatal_blow) { - // heal with a vampiric weapon - if ((f1 & (TR1_VAMPIRIC)) && !monster_nonliving(r_ptr)) + // heal when having the vampiric quality + if (p_ptr->vampiric && !monster_nonliving(r_ptr)) { - if (hp_player(7, FALSE, FALSE) && !object_known_p(o_ptr)) + //chance to identify the weapon if it was indeed the weapon the provider of the vampiric quality + if (hp_player(7, FALSE, FALSE) && (f1 & (TR1_VAMPIRIC)) && !object_known_p(o_ptr)) { ident_weapon_by_use(o_ptr, m_ptr, TR1_VAMPIRIC); } @@ -5360,5 +5361,3 @@ void run_step(int dir) /* Move the player */ move_player(p_ptr->run_cur_dir); } - - diff --git a/src/cmd2.c b/src/cmd2.c index 4aa34df..9f80d9d 100755 --- a/src/cmd2.c +++ b/src/cmd2.c @@ -1787,7 +1787,6 @@ static bool do_cmd_tunnel_aux(int y, int x) bool digger_choice = FALSE; int difficulty; int digging_score = 0; - char o_name[80]; char success_message[80]; char failure_message[80]; object_type *o_ptr; @@ -1798,15 +1797,15 @@ static bool do_cmd_tunnel_aux(int y, int x) /* Verify legality */ if (!do_cmd_tunnel_test(y, x)) return (FALSE); - // examine the wielded weapon - o_ptr = &inventory[INVEN_WIELD]; - object_flags(o_ptr, &f1, &f2, &f3); - - // if it is a digger, then use it - if (f1 & (TR1_TUNNEL)) + // check to see if some equipment is allowing us to tunnel + if (p_ptr->tunneling > 0) { - digging_score = o_ptr->pval; - digger_ptr = o_ptr; + digging_score = p_ptr->tunneling; + + // examine the wielded weapon to see if it was the equipment in question + o_ptr = &inventory[INVEN_WIELD]; + object_flags(o_ptr, &f1, &f2, &f3); + if (f1 & (TR1_TUNNEL)) digger_ptr = o_ptr; } else { @@ -1834,7 +1833,7 @@ static bool do_cmd_tunnel_aux(int y, int x) item_tester_hook = item_tester_hook_digger; /* Get an item */ - if (!get_item(&item, "Use which digger? ", "You are not carrying a shovel or mattock.", (USE_INVEN))) return (FALSE); + if (!get_item(&item, "Use which digger? ", "You are not carrying an item which lets you dig.", (USE_INVEN))) return (FALSE); else { /* Get the object */ @@ -1855,7 +1854,7 @@ static bool do_cmd_tunnel_aux(int y, int x) // abort if you have no digger if (digging_score == 0) { - msg_print("You are not carrying a shovel or mattock."); + msg_print("You are not carrying an item which lets you dig."); // reset the action type p_ptr->previous_action[0] = ACTION_NOTHING; @@ -1866,9 +1865,6 @@ static bool do_cmd_tunnel_aux(int y, int x) return (FALSE); } - // get the short name of the item - object_desc(o_name, sizeof(o_name), digger_ptr, FALSE, -1); - /* Granite */ if (cave_feat[y][x] >= FEAT_WALL_EXTRA) { @@ -1877,7 +1873,7 @@ static bool do_cmd_tunnel_aux(int y, int x) if (difficulty > digging_score) { - strnfmt(failure_message, sizeof(failure_message), "You are unable to break the granite with your %s.", o_name); + strnfmt(failure_message, sizeof(failure_message), "You are unable to break the granite."); } else { @@ -1892,7 +1888,7 @@ static bool do_cmd_tunnel_aux(int y, int x) if (difficulty > digging_score) { - strnfmt(failure_message, sizeof(failure_message), "You are unable to break the quartz with your %s.", o_name); + strnfmt(failure_message, sizeof(failure_message), "You are unable to break the quartz."); } else { @@ -1907,7 +1903,7 @@ static bool do_cmd_tunnel_aux(int y, int x) if (difficulty > digging_score) { - strnfmt(failure_message, sizeof(failure_message), "You are unable to shift the rubble with your %s.", o_name); + strnfmt(failure_message, sizeof(failure_message), "You are unable to shift the rubble."); } else { @@ -1922,7 +1918,7 @@ static bool do_cmd_tunnel_aux(int y, int x) if (difficulty > digging_score) { - strnfmt(failure_message, sizeof(failure_message), "You are unable to break the granite with your %s.", o_name); + strnfmt(failure_message, sizeof(failure_message), "You are unable to break the granite."); } else { @@ -1934,7 +1930,7 @@ static bool do_cmd_tunnel_aux(int y, int x) if ((difficulty <= digging_score) && (difficulty <= p_ptr->stat_use[A_STR])) { u32b f1, f2, f3; - object_flags(digger_ptr, &f1, &f2, &f3); + if (digger_ptr) object_flags(digger_ptr, &f1, &f2, &f3); /* Make a lot of noise */ monster_perception(TRUE, FALSE, -10); @@ -1943,7 +1939,7 @@ static bool do_cmd_tunnel_aux(int y, int x) msg_print(success_message); // Possibly identify the digger - if (!object_known_p(digger_ptr) && (f1 & (TR1_TUNNEL))) + if (digger_ptr && !object_known_p(digger_ptr) && (f1 & (TR1_TUNNEL))) { char o_short_name[80]; char o_full_name[80]; @@ -4427,4 +4423,3 @@ void do_cmd_throw(bool automatic) // Break the truce if creatures see break_truce(FALSE); } - diff --git a/src/cmd4.c b/src/cmd4.c index c9dd385..73689a5 100755 --- a/src/cmd4.c +++ b/src/cmd4.c @@ -1734,8 +1734,9 @@ int att_valid(void) } case TV_RING: + case TV_AMULET: { - if (smith_o_ptr->sval == SV_RING_ACCURACY) return (TRUE); + if (smith_o_ptr->sval == SV_RING_ACCURACY || smith_o_ptr->name1) return (TRUE); } } @@ -1950,8 +1951,9 @@ int evn_valid(void) } case TV_RING: + case TV_AMULET: { - if (smith_o_ptr->sval == SV_RING_EVASION) return (TRUE); + if (smith_o_ptr->sval == SV_RING_EVASION || smith_o_ptr->name1) return (TRUE); } } @@ -2073,8 +2075,9 @@ int ps_valid(void) } case TV_RING: + case TV_AMULET: { - if (smith_o_ptr->sval == SV_RING_PROTECTION) return (TRUE); + if (smith_o_ptr->sval == SV_RING_PROTECTION || smith_o_ptr->name1) return (TRUE); } } @@ -4297,6 +4300,12 @@ bool applicable_ability(ability_type *b_ptr, object_type *o_ptr) u32b f1, f2, f3; + // Everything is fair game for rings and amulets + if (o_ptr->tval == TV_RING || o_ptr->tval == TV_AMULET) + { + return TRUE; + } + /* Test if this is a legal item type for this ability */ for (j = 0; j < ABILITY_TVALS_MAX; j++) { diff --git a/src/obj-info.c b/src/obj-info.c index 1831e99..0397791 100755 --- a/src/obj-info.c +++ b/src/obj-info.c @@ -249,7 +249,12 @@ static bool describe_brand(const object_type *o_ptr, u32b f1) if (f1 & (TR1_BRAND_COLD)) descs[cnt++] = "frost"; if (f1 & (TR1_BRAND_POIS)) descs[cnt++] = "venom"; - if (o_ptr->number == 1) + if (o_ptr->tval == TV_RING || o_ptr->tval == TV_AMULET) + { + /* Describe brands */ + output_desc_list("It will brand your wielded weapon with ", descs, cnt); + } + else if (o_ptr->number == 1) { /* Describe brands */ output_desc_list("It is branded with ", descs, cnt); @@ -278,13 +283,15 @@ static bool describe_misc_weapon_attributes(const object_type *o_ptr, u32b f1) if (f1 & (TR1_SHARPNESS)) { - if (o_ptr->number == 1) p_text_out("It cuts easily through armour. "); + if (o_ptr->tval == TV_RING || o_ptr->tval == TV_AMULET) p_text_out("It allows you to cut easily through armour. "); + else if (o_ptr->number == 1) p_text_out("It cuts easily through armour. "); else p_text_out("They cut easily through armour. "); message = TRUE; } if (f1 & (TR1_SHARPNESS2)) { - p_text_out("It cuts very easily through armour. "); + if (o_ptr->tval == TV_RING || o_ptr->tval == TV_AMULET) p_text_out("It allows you to cut very easily through armour. "); + else p_text_out("It cuts very easily through armour. "); message = TRUE; } if (f1 & (TR1_VAMPIRIC)) @@ -934,4 +941,3 @@ void object_info_screen(const object_type *o_ptr) return; } - diff --git a/src/types.h b/src/types.h index fc461b6..c9c23fe 100755 --- a/src/types.h +++ b/src/types.h @@ -1050,6 +1050,22 @@ struct player_type int cowardice; /* Occasionally become afraid on taking damage */ int haunted; /* Occasionally attract wraiths to your level */ + int tunneling; /* Capacity for tunneling */ + + bool fire_branded; /* Fire-branded attacks */ + bool cold_branded; /* Cold-branded attacks */ + bool poison_branded; /* Poison-branded attacks */ + bool vampiric; /* Life-draining attacks */ + bool sharp; /* Attacks ignore some protection */ + bool sharpest; /* Attacks ignore all protection */ + bool slay_orc; /* Attacks slay orcs */ + bool slay_wolf; /* Attacks slay wolfs */ + bool slay_troll; /* Attacks slay trolls */ + bool slay_spider; /* Attacks slay spiders */ + bool slay_undead; /* Attacks slay undead */ + bool slay_rauko; /* Attacks slay rauko */ + bool slay_dragon; /* Attacks slay dragons */ + s16b to_mdd; /* Bonus to melee damage dice */ s16b mdd; /* Total melee damage dice */ s16b to_mds; /* Bonus to melee damage sides */ @@ -1210,5 +1226,3 @@ struct autoinscription s16b kindIdx; s16b inscriptionIdx; }; - - diff --git a/src/xtra1.c b/src/xtra1.c index e2f07ae..79dc92a 100755 --- a/src/xtra1.c +++ b/src/xtra1.c @@ -2172,6 +2172,20 @@ static void calc_bonuses(void) p_ptr->resist_confu = 0; p_ptr->resist_stun = 0; p_ptr->resist_hallu = 0; + p_ptr->tunneling = 0; + p_ptr->fire_branded = FALSE; + p_ptr->cold_branded = FALSE; + p_ptr->poison_branded = FALSE; + p_ptr->vampiric = FALSE; + p_ptr->sharp = FALSE; + p_ptr->sharpest = FALSE; + p_ptr->slay_orc = FALSE; + p_ptr->slay_wolf = FALSE; + p_ptr->slay_troll = FALSE; + p_ptr->slay_spider = FALSE; + p_ptr->slay_undead = FALSE; + p_ptr->slay_rauko = FALSE; + p_ptr->slay_dragon = FALSE; p_ptr->climbing = FALSE; @@ -2230,6 +2244,22 @@ static void calc_bonuses(void) if (f1 & (TR1_SMT)) p_ptr->skill_equip_mod[S_SMT] += o_ptr->pval; if (f1 & (TR1_SNG)) p_ptr->skill_equip_mod[S_SNG] += o_ptr->pval; + /* Affect attack properties */ + if (f1 & (TR1_SHARPNESS)) p_ptr->sharp = TRUE; + if (f1 & (TR1_SHARPNESS2)) p_ptr->sharpest = TRUE; + if (f1 & (TR1_BRAND_FIRE)) p_ptr->fire_branded = TRUE; + if (f1 & (TR1_BRAND_COLD)) p_ptr->cold_branded = TRUE; + if (f1 & (TR1_BRAND_POIS)) p_ptr->poison_branded = TRUE; + if (f1 & (TR1_SLAY_ORC)) p_ptr->slay_orc = TRUE; + if (f1 & (TR1_SLAY_TROLL)) p_ptr->slay_troll = TRUE; + if (f1 & (TR1_SLAY_WOLF)) p_ptr->slay_wolf = TRUE; + if (f1 & (TR1_SLAY_SPIDER)) p_ptr->slay_spider = TRUE; + if (f1 & (TR1_SLAY_UNDEAD)) p_ptr->slay_undead = TRUE; + if (f1 & (TR1_SLAY_RAUKO)) p_ptr->slay_rauko = TRUE; + if (f1 & (TR1_SLAY_DRAGON)) p_ptr->slay_dragon = TRUE; + + if (f1 & (TR1_TUNNEL)) p_ptr->tunneling += o_ptr->pval; + /* Affect Damage Sides */ if (f1 & (TR1_DAMAGE_SIDES)) { @@ -3354,6 +3384,3 @@ void handle_stuff(void) /* Window stuff */ if (p_ptr->window) window_stuff(); } - - -