From a141fc03319b9a5c6c8b1c89c499c9715d58438f Mon Sep 17 00:00:00 2001 From: haranp Date: Sun, 22 Jul 2007 09:43:36 +0000 Subject: Fixed unnecessary bat-transformation ability when already in batform. Redid how bat durations are handled. (both by dolorous, 1757094, with a minor bugfix.) git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@1909 c06c8d41-db1a-0410-9941-cceddc491573 --- crawl-ref/source/abl-show.cc | 3 ++- crawl-ref/source/acr.cc | 28 ++++++++++------------------ 2 files changed, 12 insertions(+), 19 deletions(-) (limited to 'crawl-ref/source') diff --git a/crawl-ref/source/abl-show.cc b/crawl-ref/source/abl-show.cc index ff653e1ac8..5765404e8d 100644 --- a/crawl-ref/source/abl-show.cc +++ b/crawl-ref/source/abl-show.cc @@ -1867,7 +1867,8 @@ std::vector your_talents( bool check_confused ) } } - if (you.species == SP_VAMPIRE && you.experience_level >= 3) + if (you.species == SP_VAMPIRE && you.experience_level >= 3 && + you.attribute[ATTR_TRANSFORMATION] != TRAN_BAT) { add_talent(talents, ABIL_TRAN_BAT, check_confused ); } diff --git a/crawl-ref/source/acr.cc b/crawl-ref/source/acr.cc index 2cd7011704..cbe9a13471 100644 --- a/crawl-ref/source/acr.cc +++ b/crawl-ref/source/acr.cc @@ -1743,29 +1743,21 @@ static void decrement_durations() you.wield_change = true; } - if (you.duration[DUR_TRANSFORMATION] > 1) + // Vampire bat transformations are permanent (until ended.) + if ( you.species != SP_VAMPIRE || + you.attribute[ATTR_TRANSFORMATION] != TRAN_BAT || + you.duration[DUR_TRANSFORMATION] < 100 ) { - you.duration[DUR_TRANSFORMATION]--; - - if (you.species == SP_VAMPIRE - && you.attribute[ATTR_TRANSFORMATION] == TRAN_BAT - && you.duration[DUR_TRANSFORMATION] > 2) - { - you.duration[DUR_TRANSFORMATION] = 5; - } - - if (you.duration[DUR_TRANSFORMATION] == 10) + if ( decrement_a_duration(DUR_TRANSFORMATION, + NULL, 10, random2(3), + "Your transformation is almost over.") ) { - mpr("Your transformation is almost over.", MSGCH_DURATION); - you.duration[DUR_TRANSFORMATION] -= random2(3); + untransform(); + you.duration[DUR_BREATH_WEAPON] = 0; } } - else if (you.duration[DUR_TRANSFORMATION] == 1) - { - untransform(); - you.duration[DUR_BREATH_WEAPON] = 0; - } + // must come after transformation duration decrement_a_duration(DUR_BREATH_WEAPON, "You have got your breath back.", -1, 0, NULL, MSGCH_RECOVERY); -- cgit v1.2.3-54-g00ecf