diff options
author | Stefan O'Rear <stefanor@cox.net> | 2009-11-04 23:28:20 -0800 |
---|---|---|
committer | Stefan O'Rear <stefanor@cox.net> | 2009-11-04 23:29:00 -0800 |
commit | 1b5fee7b01fd027a5873f692139a19abea8e6946 (patch) | |
tree | a7269e56dcd9a65738ddc550a5db781d01c8d0bd | |
parent | 22dcda95ae7c2bed364484fa130e78da9d96275d (diff) | |
download | crawl-ref-1b5fee7b01fd027a5873f692139a19abea8e6946.tar.gz crawl-ref-1b5fee7b01fd027a5873f692139a19abea8e6946.zip |
Rebalance dancing weapon stats
They now depend a great deal on the weapon and your skill; see the
comments for details.
-rw-r--r-- | crawl-ref/source/ghost.cc | 70 | ||||
-rw-r--r-- | crawl-ref/source/mon-data.h | 2 | ||||
-rw-r--r-- | crawl-ref/source/monplace.cc | 5 |
3 files changed, 60 insertions, 17 deletions
diff --git a/crawl-ref/source/ghost.cc b/crawl-ref/source/ghost.cc index 2f4825dc52..80aa765101 100644 --- a/crawl-ref/source/ghost.cc +++ b/crawl-ref/source/ghost.cc @@ -601,33 +601,73 @@ void ghost_demon::ugly_thing_add_resistance(bool very_ugly, } } -void ghost_demon::init_dancing_weapon(const item_def& weapon, int) +void ghost_demon::init_dancing_weapon(const item_def& weapon, int power) { - speed = 15; + int mass = item_mass(weapon); + int delay = property(weapon, PWPN_SPEED); + int damg = property(weapon, PWPN_DAMAGE); - ev = 20; + if (power > 200) + power = 200; - ac = 10; + reset(); + + att_type = AT_HIT; + colour = weapon.colour; + att_flav = AF_PLAIN; + fly = FL_LEVITATE; + + // We want Tukima to reward characters who invest heavily in both + // carrying capacity and enchantments skill. Therefore, heavy + // weapons are a bit stronger when animated, and benefit much more + // from very high skill. - damage = 30; + // First set up what the monsters will look like at very high skill. + // Daggers are weak here! + + // Giant spiked club: speed 12, 44+22 damage, 35 AC, 70 HP, 16 EV + // Bardiche: speed 10, 40+20 damage, 20 AC, 40 HP, 15 EV + // Katana: speed 17, 26+13 damage, 16 AC, 32 HP, 18 EV + // Dagger: Speed 20, 8+4 damage, 2 AC, 4 HP, 20 EV + // Quick blade: Speed 23, 10+5 damage, 5 AC, 10 HP, 22 EV + // Sabre: Speed 18, 14+7 damage, 9 AC, 18 HP, 19 EV xl = 15; - max_hp = 15; + speed = 30 - delay; + ev = 25 - delay / 2; + ac = mass / 10; + damage = 2 * damg; + max_hp = mass / 5; - att_type = AT_HIT; + // If you aren't an awesome spellcaster, nerf the weapons. Do it in + // a way that lays most of the penalty on heavy weapons. - colour = weapon.colour; + speed = std::max(3, speed - (10 - power / 20)); + ev = std::max(3, ev - (10 - power / 20)); - att_flav = AF_PLAIN; + ac = ac * power / 200; + max_hp = std::max(5, max_hp * power / 200); + damage = std::max(1, damage * power / 200); - fly = FL_LEVITATE; + // For a spellpower 100 character (typical late midgame mage with no Ench + // focus), we have: + + // Giant spiked club: speed 7, 22+22 damage, 17 AC, 35 HP, 11 EV + // Bardiche: speed 5, 20+20 damage, 10 AC, 20 HP, 10 EV + // Katana: speed 12, 13+13 damage, 8 AC, 16 HP, 13 EV + // Dagger: Speed 15, 4+4 damage, 1 AC, 5 HP, 15 EV + // Quick blade: Speed 18, 5+5 damage, 2 AC, 5 HP, 17 EV + // Sabre: Speed 13, 7+7 damage, 4 AC, 9 HP, 14 EV + + // At spellpower 50 (early game character with focus on Ench): - resists.hellfire = 3; - resists.fire = 3; - resists.cold = 3; - resists.poison = 3; - resists.elec = 1; + // Giant spiked club: speed 5, 11+22 damage, 8 AC, 17 HP, 9 EV + // Bardiche: speed 3, 10+20 damage, 5 AC, 10 HP, 8 EV + // Katana: speed 10, 6+13 damage, 4 AC, 8 HP, 11 EV + // Dagger: Speed 13, 2+4 damage, 0 AC, 5 HP, 13 EV + // Quick blade: Speed 16, 2+5 damage, 1 AC, 5 HP, 15 EV + // Sabre: Speed 11, 3+7 damage, 2 AC, 5 HP, 12 EV } static spell_type search_first_list(int ignore_spell) diff --git a/crawl-ref/source/mon-data.h b/crawl-ref/source/mon-data.h index 45514ccb4b..1fdb1710b7 100644 --- a/crawl-ref/source/mon-data.h +++ b/crawl-ref/source/mon-data.h @@ -3263,7 +3263,7 @@ static monsterentry mondata[] = { { MONS_DANCING_WEAPON, '(', BLACK, "dancing weapon", M_FIGHTER | M_LEVITATE, - mrd(MR_RES_POISON | MR_RES_HELLFIRE | MR_RES_COLD, 3) | MR_RES_ELEC, + mrd(MR_RES_POISON | MR_RES_FIRE | MR_RES_COLD, 1) | MR_RES_ELEC, 0, 10, MONS_DANCING_WEAPON, MONS_DANCING_WEAPON, MH_NONLIVING, MAG_IMMUNE, { {AT_HIT, AF_PLAIN, 30}, AT_NO_ATK, AT_NO_ATK, AT_NO_ATK }, { 15, 0, 0, 15 }, diff --git a/crawl-ref/source/monplace.cc b/crawl-ref/source/monplace.cc index b703147753..3a08420791 100644 --- a/crawl-ref/source/monplace.cc +++ b/crawl-ref/source/monplace.cc @@ -1290,7 +1290,10 @@ static int _place_monster_aux(const mgen_data &mg, // at attack types, which are in the ghost structure we're // building. ASSERT( mons.mslot_item(MSLOT_WEAPON) ); - ghost.init_dancing_weapon(*(mons.mslot_item(MSLOT_WEAPON)), 100); + // Dancing weapons are placed at pretty high power. Remember, the + // player is fighting them one-on-one, while he will often summon + // several. + ghost.init_dancing_weapon(*(mons.mslot_item(MSLOT_WEAPON)), 180); mons.set_ghost(ghost); mons.dancing_weapon_init(); } |