diff options
Diffstat (limited to 'crawl-ref')
-rw-r--r-- | crawl-ref/source/acr.cc | 3 | ||||
-rw-r--r-- | crawl-ref/source/beam.cc | 7 | ||||
-rw-r--r-- | crawl-ref/source/item_use.cc | 118 | ||||
-rw-r--r-- | crawl-ref/source/itemname.cc | 2 | ||||
-rw-r--r-- | crawl-ref/source/items.cc | 6 | ||||
-rw-r--r-- | crawl-ref/source/mon-util.cc | 2 | ||||
-rw-r--r-- | crawl-ref/source/mstuff2.cc | 15 | ||||
-rw-r--r-- | crawl-ref/source/tile1.cc | 29 |
8 files changed, 88 insertions, 94 deletions
diff --git a/crawl-ref/source/acr.cc b/crawl-ref/source/acr.cc index 02b2083931..1248faf706 100644 --- a/crawl-ref/source/acr.cc +++ b/crawl-ref/source/acr.cc @@ -1964,6 +1964,7 @@ void process_command( command_type cmd ) case CMD_TOGGLE_FRIENDLY_PICKUP: { +#ifndef WIZARD if (!god_gives_permanent_followers(you.religion)) { mpr("I'm sorry, your allies won't ever be able to pick up items."); @@ -1977,7 +1978,7 @@ void process_command( command_type cmd ) } break; } - +#endif // Toggle pickup mode for friendlies. _print_friendly_pickup_setting(false); mpr("Change to (d)efault, (n)othing, (f)riend-dropped, or (a)ll? ", diff --git a/crawl-ref/source/beam.cc b/crawl-ref/source/beam.cc index d8c7fafd58..5ace0228a4 100644 --- a/crawl-ref/source/beam.cc +++ b/crawl-ref/source/beam.cc @@ -214,6 +214,7 @@ static void _ench_animation( int flavour, const monsters *mon, bool force ) || flavour == BEAM_BANISH || flavour == BEAM_BLINK) ? EC_WARP : EC_ENCHANT; + zap_animation( element_colour( elem ), mon, force ); } @@ -1761,7 +1762,7 @@ void fire_beam(bolt &pbolt, item_def *item, bool drop_item) #ifdef USE_TILE int tile_beam = -1; - if (item && !pbolt.is_tracer) + if (item && !pbolt.is_tracer && pbolt.flavour == BEAM_MISSILE) { tile_beam = tileidx_item_throw(*item, pbolt.target_x - pbolt.source_x, @@ -4358,7 +4359,7 @@ static int _affect_monster(bolt &beam, monsters *mon, item_def *item) if (beam.fr_count == 1 && !beam.dont_stop_fr) beam.dont_stop_fr = true; else - beam.dont_stop_foe = true; + beam.dont_stop_foe = true; } } @@ -4520,7 +4521,7 @@ static int _affect_monster(bolt &beam, monsters *mon, item_def *item) if (beam.fr_count == 1 && !beam.dont_stop_fr) beam.dont_stop_fr = true; else - beam.dont_stop_foe = true; + beam.dont_stop_foe = true; } } diff --git a/crawl-ref/source/item_use.cc b/crawl-ref/source/item_use.cc index b13cb3aa24..d8a59d1aa1 100644 --- a/crawl-ref/source/item_use.cc +++ b/crawl-ref/source/item_use.cc @@ -364,10 +364,10 @@ static const char *shield_base_name(const item_def *shield) static const char *shield_impact_degree(int impact) { - return (impact > 160? "severely " : - impact > 130? "significantly " : - impact > 110? "" : - NULL); + return (impact > 160 ? "severely " : + impact > 130 ? "significantly " : + impact > 110 ? "" + : NULL); } static void warn_rod_shield_interference(const item_def &) @@ -605,7 +605,7 @@ void wield_effects(int item_wield_2, bool showMsgs) break; case SPWPN_FLAME: - mpr("It glows red for a moment."); + mpr("It bursts into flame!"); break; case SPWPN_FROST: @@ -1719,12 +1719,14 @@ int launcher_final_speed(const item_def &launcher, const item_def *shield) // Determines if the end result of the combined launcher + ammo brands a // fire/frost beam. +// positive: frost, negative: flame, zero: neither bool elemental_missile_beam(int launcher_brand, int ammo_brand) { - int element = (launcher_brand == SPWPN_FROST) - + (ammo_brand == SPMSL_ICE) - - (launcher_brand == SPWPN_FLAME) - - (ammo_brand == SPMSL_FLAME); + int element = (launcher_brand == SPWPN_FROST + + ammo_brand == SPMSL_ICE + - launcher_brand == SPWPN_FLAME + - ammo_brand == SPMSL_FLAME); + return (element); } @@ -2008,7 +2010,7 @@ bool throw_it(bolt &pbolt, int throw_2, bool teleport, int acc_bonus, if (projected == LRET_LAUNCHED) { const item_def &launcher = you.inv[you.equip[EQ_WEAPON]]; - const int bow_brand = get_weapon_brand( launcher ); + const int bow_brand = get_weapon_brand( launcher ); const int ammo_brand = get_ammo_brand( item ); bool poisoned = (ammo_brand == SPMSL_POISONED); @@ -2234,66 +2236,42 @@ bool throw_it(bolt &pbolt, int throw_2, bool teleport, int acc_bonus, } // Note that bow_brand is known since the bow is equipped. - if (bow_brand == SPWPN_FLAME || ammo_brand == SPMSL_FLAME) + if ((bow_brand == SPWPN_FLAME || ammo_brand == SPMSL_FLAME) + && ammo_brand != SPMSL_ICE && bow_brand != SPWPN_FROST) { - if (ammo_brand != SPMSL_ICE && bow_brand != SPWPN_FROST) - { -#ifdef USE_TILE - // Mark brand for tile output. - if (ammo_brand != SPMSL_FLAME) - set_item_ego_type( item, OBJ_MISSILES, SPMSL_FLAME ); -#endif - - // [dshaligram] Branded arrows are much stronger. - dice_mult = (dice_mult * 150) / 100; + // [dshaligram] Branded arrows are much stronger. + dice_mult = (dice_mult * 150) / 100; - pbolt.flavour = BEAM_FIRE; - pbolt.name = "bolt of "; + pbolt.flavour = BEAM_FIRE; + pbolt.name = "bolt of "; - if (poisoned) - pbolt.name += "poison "; + if (poisoned) + pbolt.name += "poison "; - pbolt.name += "flame"; - pbolt.colour = RED; - pbolt.type = dchar_glyph(DCHAR_FIRED_BOLT); - pbolt.thrower = KILL_YOU_MISSILE; - pbolt.aux_source.clear(); - } -#ifdef USE_TILE - else - set_item_ego_type( item, OBJ_MISSILES, SPMSL_NORMAL ); -#endif + pbolt.name += "flame"; + pbolt.colour = RED; + pbolt.type = dchar_glyph(DCHAR_FIRED_BOLT); + pbolt.thrower = KILL_YOU_MISSILE; + pbolt.aux_source.clear(); } - if (bow_brand == SPWPN_FROST || ammo_brand == SPMSL_ICE) + if ((bow_brand == SPWPN_FROST || ammo_brand == SPMSL_ICE) + && ammo_brand != SPMSL_FLAME && bow_brand != SPWPN_FLAME) { - if (ammo_brand != SPMSL_FLAME && bow_brand != SPWPN_FLAME) - { -#ifdef USE_TILE - // Mark brand for tile output. - if (ammo_brand != SPMSL_ICE) - set_item_ego_type( item, OBJ_MISSILES, SPMSL_ICE ); -#endif + // [dshaligram] Branded arrows are much stronger. + dice_mult = (dice_mult * 150) / 100; - // [dshaligram] Branded arrows are much stronger. - dice_mult = (dice_mult * 150) / 100; + pbolt.flavour = BEAM_COLD; + pbolt.name = "bolt of "; - pbolt.flavour = BEAM_COLD; - pbolt.name = "bolt of "; + if (poisoned) + pbolt.name += "poison "; - if (poisoned) - pbolt.name += "poison "; - - pbolt.name += "frost"; - pbolt.colour = WHITE; - pbolt.type = dchar_glyph(DCHAR_FIRED_BOLT); - pbolt.thrower = KILL_YOU_MISSILE; - pbolt.aux_source.clear(); - } -#ifdef USE_TILE - else - set_item_ego_type( item, OBJ_MISSILES, SPMSL_NORMAL ); -#endif + pbolt.name += "frost"; + pbolt.colour = WHITE; + pbolt.type = dchar_glyph(DCHAR_FIRED_BOLT); + pbolt.thrower = KILL_YOU_MISSILE; + pbolt.aux_source.clear(); } // The chief advantage here is the extra damage this does @@ -2565,12 +2543,30 @@ bool throw_it(bolt &pbolt, int throw_2, bool teleport, int acc_bonus, pbolt.hit, pbolt.damage.num, pbolt.damage.size ); #endif + // Print type of item as influenced by launcher. + item_def ammo = item; + if (pbolt.flavour == BEAM_FIRE) + { + if (ammo.special != SPMSL_FLAME) + ammo.special = SPMSL_FLAME; + } + else if (pbolt.flavour == BEAM_COLD) + { + if (ammo.special != SPMSL_ICE) + ammo.special = SPMSL_ICE; + } + else + { + if (ammo.special != SPMSL_NORMAL && ammo.special != SPMSL_POISONED) + ammo.special = SPMSL_NORMAL; + } + // Create message. mprf( "%s %s%s %s.", teleport ? "Magically, you" : "You", projected ? "" : "awkwardly ", projected == LRET_LAUNCHED ? "shoot" : "throw", - item.name(DESC_NOCAP_A).c_str() ); + ammo.name(DESC_NOCAP_A).c_str() ); // Ensure we're firing a 'missile'-type beam. pbolt.is_beam = false; diff --git a/crawl-ref/source/itemname.cc b/crawl-ref/source/itemname.cc index 1e0c1310d9..6cd8e97e04 100644 --- a/crawl-ref/source/itemname.cc +++ b/crawl-ref/source/itemname.cc @@ -1700,7 +1700,7 @@ bool item_type_known( const item_def& item ) } const item_type_id_type idt = objtype_to_idtype(item.base_type); - if ( idt != NUM_IDTYPE && item.sub_type < 50 ) + if (idt != NUM_IDTYPE && item.sub_type < 50 ) return (type_ids[idt][item.sub_type] == ID_KNOWN_TYPE); else return (false); diff --git a/crawl-ref/source/items.cc b/crawl-ref/source/items.cc index 38ba9d2681..18ffb6224f 100644 --- a/crawl-ref/source/items.cc +++ b/crawl-ref/source/items.cc @@ -1195,8 +1195,8 @@ void pickup() } else if (mitm[o].link == NON_ITEM) // just one item? { - // deliberately allowing the player to pick up - // a killed item here + // Deliberately allowing the player to pick up + // a killed item here. pickup_single_item(o, mitm[o].quantity); } else if (Options.pickup_mode != -1 @@ -1213,7 +1213,7 @@ void pickup() // Must save this because pickup can destroy the item. next = mitm[o].link; - if ( num_nonsquelched && _invisible_to_player(mitm[o]) ) + if (num_nonsquelched && _invisible_to_player(mitm[o])) { o = next; continue; diff --git a/crawl-ref/source/mon-util.cc b/crawl-ref/source/mon-util.cc index 92fa662ddd..e6f118a6ef 100644 --- a/crawl-ref/source/mon-util.cc +++ b/crawl-ref/source/mon-util.cc @@ -3319,7 +3319,7 @@ void monsters::equip_weapon(item_def &item, int near, bool msg) mpr("You sense an unholy aura."); break; case SPWPN_FLAME: - mpr("It glows red for a moment."); + mpr("It bursts into flame!"); break; case SPWPN_FROST: mpr("It is covered in frost."); diff --git a/crawl-ref/source/mstuff2.cc b/crawl-ref/source/mstuff2.cc index 52be635898..909e09d6ff 100644 --- a/crawl-ref/source/mstuff2.cc +++ b/crawl-ref/source/mstuff2.cc @@ -1192,10 +1192,10 @@ bool mons_throw(struct monsters *monster, struct bolt &pbolt, int hand_used) int diceMult = 100; // Some initial convenience & initializations. - int wepClass = mitm[hand_used].base_type; - int wepType = mitm[hand_used].sub_type; + int wepClass = mitm[hand_used].base_type; + int wepType = mitm[hand_used].sub_type; - int weapon = monster->inv[MSLOT_WEAPON]; + int weapon = monster->inv[MSLOT_WEAPON]; int lnchType = (weapon != NON_ITEM) ? mitm[weapon].sub_type : 0; const bool skilled = mons_class_flag(monster->type, M_FIGHTER); @@ -1450,9 +1450,18 @@ bool mons_throw(struct monsters *monster, struct bolt &pbolt, int hand_used) pbolt.name = item.name(DESC_PLAIN, false, false, false); } msg += "."; + if (monster->visible()) + { mpr(msg.c_str()); + if (projected == LRET_LAUNCHED + && item_type_known(mitm[monster->inv[MSLOT_WEAPON]])) + { + set_ident_flags(mitm[hand_used], ISFLAG_KNOW_TYPE); + } + } + // [dshaligram] When changing bolt names here, you must edit // hiscores.cc (scorefile_entry::terse_missile_cause()) to match. if (projected == LRET_LAUNCHED) diff --git a/crawl-ref/source/tile1.cc b/crawl-ref/source/tile1.cc index c5ecc5384b..5dcea8891f 100644 --- a/crawl-ref/source/tile1.cc +++ b/crawl-ref/source/tile1.cc @@ -1892,17 +1892,14 @@ int tileidx_item(const item_def &item) } } -/* - Determine Octant of missile direction - ---> X+ - | - | 701 - Y 6O2 - + 543 - - the octant boundary slope tan(pi/8)=sqrt(2)-1 = 0.414 is approximated by 2/5 - -*/ +// Determine Octant of missile direction +// .---> X+ +// | +// | 701 +// Y 6O2 +// + 543 +// +// The octant boundary slope tan(pi/8)=sqrt(2)-1 = 0.414 is approximated by 2/5. static int _tile_bolt_dir(int dx, int dy) { int ax = abs(dx); @@ -1925,16 +1922,6 @@ int tileidx_item_throw(const item_def &item, int dx, int dy) int ch = -1; int dir = _tile_bolt_dir(dx, dy); - switch (get_ammo_brand(item)) - { - case SPMSL_FLAME: - return (tileidx_zap(RED)); - case SPMSL_ICE: - return (tileidx_zap(WHITE)); - default: - break; - } - // Thrown items with multiple directions switch (item.sub_type) { |