diff options
-rw-r--r-- | crawl-ref/source/decks.cc | 2 | ||||
-rw-r--r-- | crawl-ref/source/item_use.cc | 86 | ||||
-rw-r--r-- | crawl-ref/source/religion.cc | 7 | ||||
-rw-r--r-- | crawl-ref/source/rltiles/dc-urand.txt | 2 | ||||
-rw-r--r-- | crawl-ref/source/rltiles/item/amulet/urand_air.bmp | bin | 0 -> 2102 bytes | |||
-rw-r--r-- | crawl-ref/source/tile1.cc | 4 | ||||
-rw-r--r-- | crawl-ref/source/unrand.h | 18 |
7 files changed, 70 insertions, 49 deletions
diff --git a/crawl-ref/source/decks.cc b/crawl-ref/source/decks.cc index 05129c6cf5..7e6daee812 100644 --- a/crawl-ref/source/decks.cc +++ b/crawl-ref/source/decks.cc @@ -1880,7 +1880,7 @@ static void _focus_card(int power, deck_rarity_type rarity) if (which_god == GOD_XOM) cause = "the capriciousness of Xom"; else - cause = "the 'helpfullness' of " + god_name(which_god); + cause = "the 'helpfulness' of " + god_name(which_god); } } diff --git a/crawl-ref/source/item_use.cc b/crawl-ref/source/item_use.cc index fce561faac..dda2346e03 100644 --- a/crawl-ref/source/item_use.cc +++ b/crawl-ref/source/item_use.cc @@ -483,11 +483,12 @@ void wield_effects(int item_wield_2, bool showMsgs) unsigned char i_dam = 0; const bool known_cursed = item_known_cursed(you.inv[item_wield_2]); + item_def &item = you.inv[item_wield_2]; // and here we finally get to the special effects of wielding {dlb} - if (you.inv[item_wield_2].base_type == OBJ_MISCELLANY) + if (item.base_type == OBJ_MISCELLANY) { - if (you.inv[item_wield_2].sub_type == MISC_LANTERN_OF_SHADOWS) + if (item.sub_type == MISC_LANTERN_OF_SHADOWS) { if (showMsgs) mpr("The area is filled with flickering shadows."); @@ -498,47 +499,47 @@ void wield_effects(int item_wield_2, bool showMsgs) } } - if (you.inv[item_wield_2].base_type == OBJ_STAVES) + if (item.base_type == OBJ_STAVES) { - if (you.inv[item_wield_2].sub_type == STAFF_POWER) + if (item.sub_type == STAFF_POWER) { // inc_max_mp(13); calc_mp(); - set_ident_flags( you.inv[item_wield_2], ISFLAG_EQ_WEAPON_MASK ); + set_ident_flags( item, ISFLAG_EQ_WEAPON_MASK ); mpr("You feel your mana capacity increase."); } else { // Most staves only give curse status when wielded and // right now that's always "uncursed". -- bwr - set_ident_flags( you.inv[item_wield_2], ISFLAG_KNOW_CURSE ); + set_ident_flags( item, ISFLAG_KNOW_CURSE ); } } - if (you.inv[item_wield_2].base_type == OBJ_WEAPONS) + if (item.base_type == OBJ_WEAPONS) { - if (is_evil_item(you.inv[item_wield_2]) - && (you.religion == GOD_ZIN || you.religion == GOD_SHINING_ONE - || you.religion == GOD_ELYVILON)) + if (is_evil_item(item) && is_good_god(you.religion)) { if (showMsgs) mpr("You really shouldn't be using a nasty item like this."); } - // only used for Singing Sword introduction - const bool was_known = item_type_known(you.inv[item_wield_2]); - const char *old_desc = you.inv[item_wield_2].name(DESC_CAP_THE).c_str(); + const bool was_known = item_type_known(item); - set_ident_flags( you.inv[item_wield_2], ISFLAG_EQ_WEAPON_MASK ); + // only used for Singing Sword introducing itself + // (could be extended to other talking weapons...) + const char *old_desc = item.name(DESC_CAP_THE).c_str(); - if (is_random_artefact( you.inv[item_wield_2] )) + set_ident_flags( item, ISFLAG_EQ_WEAPON_MASK ); + + if (is_random_artefact( item )) { - i_dam = randart_wpn_property(you.inv[item_wield_2], RAP_BRAND); + i_dam = randart_wpn_property(item, RAP_BRAND); use_randart(item_wield_2); } else { - i_dam = you.inv[item_wield_2].special; + i_dam = item.special; } if (i_dam != SPWPN_NORMAL) @@ -563,8 +564,10 @@ void wield_effects(int item_wield_2, bool showMsgs) case SPWPN_ELECTROCUTION: if (!silenced(you.x_pos, you.y_pos)) + { mpr("You hear the crackle of electricity.", MSGCH_SOUND); + } else mpr("You see sparks fly."); break; @@ -623,7 +626,10 @@ void wield_effects(int item_wield_2, bool showMsgs) case SPWPN_SINGING_SWORD: if (!was_known) - mprf(MSGCH_TALK, "%s says, \"Hi! I'm the Singing Sword!\"", old_desc); + { + mprf(MSGCH_TALK, "%s says, " + "\"Hi! I'm the Singing Sword!\"", old_desc); + } else mpr("The Singing Sword hums in delight!", MSGCH_TALK); break; @@ -662,7 +668,10 @@ void wield_effects(int item_wield_2, bool showMsgs) case SPWPN_VAMPIRES_TOOTH: // mummies cannot smell, and do not hunger {dlb} if (!you.is_undead) - mpr("You feel a strange hunger, and smell blood on the air..."); + { + mpr("You feel a strange hunger, and smell blood on the " + "air..."); + } else mpr("You feel strangely empty."); break; @@ -696,8 +705,15 @@ void wield_effects(int item_wield_2, bool showMsgs) case SPWPN_SCYTHE_OF_CURSES: you.special_wield = SPWLD_CURSE; - if (one_chance_in(5)) - do_curse_item( you.inv[item_wield_2] ); + if (!item_cursed(item) && one_chance_in(5)) + { + if (was_known) + { + mprf("%s glows black for a moment.", + item.name(DESC_CAP_YOUR).c_str()); + } + do_curse_item( item ); + } break; case SPWPN_MACE_OF_VARIABILITY: @@ -721,18 +737,18 @@ void wield_effects(int item_wield_2, bool showMsgs) break; case SPWPN_STAFF_OF_OLGREB: - // josh declares mummies cannot smell {dlb} you.special_wield = SPWLD_OLGREB; break; case SPWPN_STAFF_OF_WUCAD_MU: - miscast_effect( SPTYP_DIVINATION, 9, 90, 100, "the Staff of Wucad Mu" ); + miscast_effect( SPTYP_DIVINATION, 9, 90, 100, + "the Staff of Wucad Mu" ); you.special_wield = SPWLD_WUCAD_MU; break; } } - if (item_cursed( you.inv[item_wield_2] )) + if (item_cursed( item )) { mpr("It sticks to your hand!"); if (known_cursed) @@ -808,7 +824,7 @@ void wear_armour( int slot ) // slot is for tiles else if (!armour_prompt("Wear which item?", &armour_wear_2, OPER_WEAR)) return; - if (safe_to_remove_or_wear(you.inv[armour_wear_2], false)) + if (safe_to_remove_or_wear( you.inv[armour_wear_2], wearing_slot(slot) )) do_wear_armour( armour_wear_2, false ); } @@ -1008,7 +1024,7 @@ bool do_wear_armour( int item, bool quiet ) if (!can_wear_armour(you.inv[item], !quiet, false)) return (false); - const item_def &invitem = you.inv[item]; + const item_def &invitem = you.inv[item]; const equipment_type slot = get_armour_slot(invitem); if (item == you.equip[EQ_WEAPON]) @@ -1019,7 +1035,7 @@ bool do_wear_armour( int item, bool quiet ) return (false); } - if (wearing_slot(item) ) + if (wearing_slot(item)) return (!takeoff_armour(item)); // if you're wielding something, @@ -2881,11 +2897,7 @@ bool puton_item(int item_slot, bool prompt_finger) || item_slot == you.equip[EQ_RIGHT_RING] || item_slot == you.equip[EQ_AMULET]) { -// if (Options.easy_unequip) - return (!remove_ring(item_slot)); - -// mpr("You've already put that on!"); -// return (true); + return (!remove_ring(item_slot)); } if (item_slot == you.equip[EQ_WEAPON]) @@ -4469,7 +4481,7 @@ void use_randart(item_def &item) ASSERT( is_random_artefact( item ) ); const bool alreadyknown = item_type_known(item); - const bool dangerous = player_in_a_dangerous_place(); + const bool dangerous = player_in_a_dangerous_place(); randart_properties_t proprt; randart_known_props_t known; @@ -4552,6 +4564,14 @@ void use_randart(item_def &item) randart_wpn_learn_prop(item, RAP_BERSERK); } + if (!item_cursed(item) && proprt[RAP_CURSED] && one_chance_in(3)) + { + mprf("%s glows black for a moment.", + item.name(DESC_CAP_YOUR).c_str()); + do_curse_item( item ); + randart_wpn_learn_prop(item, RAP_CURSED); + } + if (proprt[RAP_NOISES]) you.special_wield = SPWLD_NOISE; diff --git a/crawl-ref/source/religion.cc b/crawl-ref/source/religion.cc index fbb588ddfd..201a2b2e79 100644 --- a/crawl-ref/source/religion.cc +++ b/crawl-ref/source/religion.cc @@ -3126,7 +3126,12 @@ static bool _beogh_retribution() continue; item_def& item = mitm[slot]; - set_item_ego_type( item, OBJ_WEAPONS, SPWPN_ORC_SLAYING ); + // Need a species check in case this retribution is a result of + // drawing the Wrath card. + if (you.species == SP_HILL_ORC) + set_item_ego_type( item, OBJ_WEAPONS, SPWPN_ORC_SLAYING ); + else + set_item_ego_type( item, OBJ_WEAPONS, SPWPN_ELECTROCUTION ); // manually override plusses item.plus = random2(3); diff --git a/crawl-ref/source/rltiles/dc-urand.txt b/crawl-ref/source/rltiles/dc-urand.txt index d24b22149b..e177688dcb 100644 --- a/crawl-ref/source/rltiles/dc-urand.txt +++ b/crawl-ref/source/rltiles/dc-urand.txt @@ -30,7 +30,6 @@ weapon/urand_wyrmbane URAND_WYRMBANE weapon/urand_spriggans_knife URAND_SPRIGGANS_KNIFE %rim 0 armor/urand_ignorance URAND_IGNORANCE -armor/urand_zin URAND_ZIN armor/urand_augmentation URAND_AUGMENTATION armor/urand_thief URAND_THIEF armor/urand_bullseye URAND_BULLSEYE @@ -58,4 +57,5 @@ amulet/urand_cekugob URAND_CEKUGOB amulet/urand_four_winds URAND_FOUR_WINDS amulet/urand_bloodlust URAND_BLOODLUST amulet/urand_brooch_of_shielding URAND_BROOCH_OF_SHIELDING +amulet/urand_air URAND_AIR diff --git a/crawl-ref/source/rltiles/item/amulet/urand_air.bmp b/crawl-ref/source/rltiles/item/amulet/urand_air.bmp Binary files differnew file mode 100644 index 0000000000..c6ba3c557b --- /dev/null +++ b/crawl-ref/source/rltiles/item/amulet/urand_air.bmp diff --git a/crawl-ref/source/tile1.cc b/crawl-ref/source/tile1.cc index e3f0d6e52c..f4050e4dc2 100644 --- a/crawl-ref/source/tile1.cc +++ b/crawl-ref/source/tile1.cc @@ -864,7 +864,7 @@ static int _tileidx_unrand_artefact(int idx) case 2: return TILE_URAND_SHADOWS; case 3: return TILE_URAND_FLAMING_DEATH; case 4: return TILE_URAND_IGNORANCE; - case 5: return TILE_URAND_ZIN; + case 5: return TILE_URAND_AIR; case 6: return TILE_URAND_AUGMENTATION; case 7: return TILE_URAND_BRILLIANCE; case 8: return TILE_URAND_THIEF; @@ -3005,8 +3005,6 @@ int tilep_equ_armour(const item_def &item) { switch (find_unrandart_index(item) + 1) { - // Holy Armour of Zin - case 6: return TILEP_BODY_ARMOR_MUMMY; // robe of Augmentation case 7: return TILEP_BODY_ROBE_WHITE_BLUE; // robe of Misfortune diff --git a/crawl-ref/source/unrand.h b/crawl-ref/source/unrand.h index 1f8fb22b69..87154be150 100644 --- a/crawl-ref/source/unrand.h +++ b/crawl-ref/source/unrand.h @@ -37,9 +37,7 @@ But add 100 to make the item stickycursed. Note that the values for wpns and armr are +50. plus2: For wpns, plus to-dam. Curses are irrelevant here. Mostly unused - for armr and totally for rings. Armour: if boots, plus2 == 1 means - naga barding; 2 means centaur barding. If headgear, 1 means helmet, - 2 means helm, 3 means cap, 4 means wizard's hat. + for armr and totally for rings. colour: Obvious. Don't use BLACK, use DARKGREY instead. * Note * any exact combination of class, type, plus & plus2 must be unique, @@ -240,19 +238,19 @@ /* 6 */ { - "Holy Armour of Zin", "glowing golden plate mail", - OBJ_ARMOUR, ARM_PLATE_MAIL, +6, 0, YELLOW, + "amulet of the Air", "sky-blue amulet", + OBJ_JEWELLERY, AMU_CONTROLLED_FLIGHT, 0, 0, LIGHTCYAN, { - 0, 0, 0, 3, 0, 0, // str - 0, 0, 0, 0, 2, 50, // life prot, magic - 0, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, // EV + 0, 0, 1, 0, 0, 0, // resElec + 0, 0, 1, 0, 0, 0, // levitate 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 + 0, 50 // stealth } , "", - "A suit of mail and large plates of golden metal.", + "A sky-blue amulet.", "" } , |