From 12ec4715196925cb313b3025498f5ac011b48789 Mon Sep 17 00:00:00 2001 From: dshaligram Date: Sat, 19 Aug 2006 18:08:57 +0000 Subject: r70@ODIN: dshaligram | 2006-08-19 23:40:12 +051800 - Fixed death drake breath attack. - Fixed broken launcher acquirement. - Fixed longbow being wieldable by small humanoids. - Fixed draconian caller summons. - Tweaked swamp drake breath attack from cloud to beam+cloud. git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/branches/stone_soup@24 c06c8d41-db1a-0410-9941-cceddc491573 --- crawl-ref/source/beam.cc | 3 +++ crawl-ref/source/effects.cc | 15 +++++++++------ crawl-ref/source/item_use.cc | 2 ++ crawl-ref/source/monstuff.cc | 3 ++- crawl-ref/source/mstuff2.cc | 11 ++++++----- crawl-ref/source/randart.cc | 4 +++- 6 files changed, 25 insertions(+), 13 deletions(-) diff --git a/crawl-ref/source/beam.cc b/crawl-ref/source/beam.cc index 2619de6658..544a82f032 100644 --- a/crawl-ref/source/beam.cc +++ b/crawl-ref/source/beam.cc @@ -2442,6 +2442,9 @@ static void beam_explodes(struct bolt &beam, int x, int y) if (strcmp(beam.beam_name, "foul vapour") == 0) { cloud_type = YOU_KILL(beam.thrower) ? CLOUD_STINK : CLOUD_STINK_MON; + if (beam.flavour == BEAM_MIASMA) + cloud_type = YOU_KILL(beam.thrower) ? + CLOUD_MIASMA : CLOUD_MIASMA_MON; big_cloud( cloud_type, x, y, 0, 9 ); return; } diff --git a/crawl-ref/source/effects.cc b/crawl-ref/source/effects.cc index 5e2d5fb0c6..c2c2db97a5 100644 --- a/crawl-ref/source/effects.cc +++ b/crawl-ref/source/effects.cc @@ -564,11 +564,7 @@ bool acquirement(unsigned char force_class, int agent) int weight = 0; - if (i < SK_SLINGS) - weight = you.skills[i] + 3; - else - weight = (you.skills[i] + 2) * 2 / 3; - + weight = you.skills[i] + 3; if (weight) { count += weight; @@ -605,7 +601,10 @@ bool acquirement(unsigned char force_class, int agent) // "rare" weapons are only considered some of the time... // still, the chance is higher than actual random creation - if (weapon_skill( OBJ_WEAPONS, i ) == skill + int wskill = range_skill(OBJ_WEAPONS, i); + if (wskill == SK_RANGED_COMBAT) + wskill = weapon_skill(OBJ_WEAPONS, i); + if (wskill == skill && (i < WPN_EVENINGSTAR || i > WPN_BROAD_AXE || (i >= WPN_HAMMER && i <= WPN_SABRE) || one_chance_in(4))) @@ -1250,6 +1249,10 @@ bool acquirement(unsigned char force_class, int agent) case SP_SPRIGGAN: switch (mitm[thing_created].sub_type) { + case WPN_LONGBOW: + mitm[thing_created].sub_type = WPN_BOW; + break; + case WPN_GREAT_SWORD: case WPN_TRIPLE_SWORD: mitm[thing_created].sub_type = diff --git a/crawl-ref/source/item_use.cc b/crawl-ref/source/item_use.cc index 3c342d7c95..65079d11f3 100644 --- a/crawl-ref/source/item_use.cc +++ b/crawl-ref/source/item_use.cc @@ -106,6 +106,7 @@ bool can_wield(const item_def& weapon) || weapon.sub_type == WPN_GLAIVE || weapon.sub_type == WPN_GIANT_CLUB || weapon.sub_type == WPN_GIANT_SPIKED_CLUB + || weapon.sub_type == WPN_LONGBOW || weapon.sub_type == WPN_SCYTHE)) return false; @@ -267,6 +268,7 @@ bool wield_weapon(bool auto_wield, int slot, bool show_weff_messages) || you.inv[item_slot].sub_type == WPN_GLAIVE || you.inv[item_slot].sub_type == WPN_GIANT_CLUB || you.inv[item_slot].sub_type == WPN_GIANT_SPIKED_CLUB + || you.inv[item_slot].sub_type == WPN_LONGBOW || you.inv[item_slot].sub_type == WPN_SCYTHE)) { mpr("That's too large for you to wield."); diff --git a/crawl-ref/source/monstuff.cc b/crawl-ref/source/monstuff.cc index 0bb43b9de2..9602023c15 100644 --- a/crawl-ref/source/monstuff.cc +++ b/crawl-ref/source/monstuff.cc @@ -4967,7 +4967,8 @@ static void mons_in_cloud(struct monsters *monster) case CLOUD_MIASMA_MON: simple_monster_message(monster, " is engulfed in a dark miasma!"); - if (mons_holiness(monster) != MH_NATURAL) + if (mons_holiness(monster) != MH_NATURAL + || monster->type == MONS_DEATH_DRAKE) return; poison_monster(monster, (env.cloud[wc].type == CLOUD_MIASMA)); diff --git a/crawl-ref/source/mstuff2.cc b/crawl-ref/source/mstuff2.cc index 2c2dc1d927..f514ab8ddd 100644 --- a/crawl-ref/source/mstuff2.cc +++ b/crawl-ref/source/mstuff2.cc @@ -559,9 +559,9 @@ void mons_cast(struct monsters *monster, struct bolt &pbolt, int spell_cast) sumcount2 = 1 + random2(3) + random2( monster->hit_dice / 5 + 1 ); - duration = 2 + monster->hit_dice / 5; - if (duration > 6) - duration = 6; + duration = ENCH_ABJ_II + monster->hit_dice / 10; + if (duration > ENCH_ABJ_VI) + duration = ENCH_ABJ_VI; for (sumcount = 0; sumcount < sumcount2; sumcount++) { @@ -1634,7 +1634,7 @@ bolt mons_spells( int spell_cast, int power ) beam.thrower = KILL_MON; beam.flavour = BEAM_POISON; beam.hit = 7 + random2(power) / 80; - beam.is_beam = false; + beam.is_beam = true; beam.is_big_cloud = true; break; @@ -1646,7 +1646,8 @@ bolt mons_spells( int spell_cast, int power ) beam.thrower = KILL_MON; beam.flavour = BEAM_MIASMA; beam.hit = 80 + power / 20; - beam.is_beam = false; + beam.is_beam = true; + beam.is_big_cloud = true; beam.range = beam.rangeMax = 8; break; diff --git a/crawl-ref/source/randart.cc b/crawl-ref/source/randart.cc index 57558ffeab..5d2ef93188 100644 --- a/crawl-ref/source/randart.cc +++ b/crawl-ref/source/randart.cc @@ -826,7 +826,9 @@ void randart_wpn_properties( const item_def &item, proprt[RAP_BRAND] = (tmp >= 18) ? SPWPN_SPEED : (tmp >= 14) ? SPWPN_PROTECTION : (tmp >= 10) ? SPWPN_VENOM - : SPWPN_FLAME + (tmp % 2); + : SPWPN_VORPAL + random2(3); + if (proprt[RAP_BRAND] == SPWPN_VORPAL && atype == WPN_BLOWGUN) + proprt[RAP_BRAND] = SPWPN_VENOM; } } -- cgit v1.2.3-54-g00ecf