summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authordshaligram <dshaligram@c06c8d41-db1a-0410-9941-cceddc491573>2006-09-26 08:27:43 +0000
committerdshaligram <dshaligram@c06c8d41-db1a-0410-9941-cceddc491573>2006-09-26 08:27:43 +0000
commit1f6a4f26c153e8d607afe939e1c2fadb648c1002 (patch)
tree05ac36b74643a469eac4ae6822ae6dd5adf15e9e
parent05b30356b41de3ea68884a6a4cd232efb0b2e66c (diff)
downloadcrawl-ref-1f6a4f26c153e8d607afe939e1c2fadb648c1002.tar.gz
crawl-ref-1f6a4f26c153e8d607afe939e1c2fadb648c1002.zip
Fine-tuned Sif Muna piety numbers a little more.
Moved Channel Energy from Vehumet to Sif Muna at 30 piety. Tweaked ammo destruction numbers. Needles are 1 in 6, stones 1 in 4, darts 1 in 3 and bolts 1 in 4. Changed salamander flame-brand check from check-for-bow to check-for-launcher. Vorpal launchers now work for monsters, launcher base damage is taken into account for monsters. Halved frequency of Okawaru ammo drops. git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/branches/stone_soup@125 c06c8d41-db1a-0410-9941-cceddc491573
-rw-r--r--crawl-ref/source/abl-show.cc25
-rw-r--r--crawl-ref/source/beam.cc8
-rw-r--r--crawl-ref/source/describe.cc10
-rw-r--r--crawl-ref/source/dungeon.cc2
-rw-r--r--crawl-ref/source/enum.h5
-rw-r--r--crawl-ref/source/mstuff2.cc13
-rw-r--r--crawl-ref/source/notes.cc8
-rw-r--r--crawl-ref/source/religion.cc19
8 files changed, 46 insertions, 44 deletions
diff --git a/crawl-ref/source/abl-show.cc b/crawl-ref/source/abl-show.cc
index ae7c89fa59..56b0f7f11f 100644
--- a/crawl-ref/source/abl-show.cc
+++ b/crawl-ref/source/abl-show.cc
@@ -175,9 +175,6 @@ static const struct ability_def Ability_List[] =
{ ABIL_YRED_DRAIN_LIFE, "Drain Life", 6, 0, 200, 2, ABFLAG_NONE },
{ ABIL_YRED_CONTROL_UNDEAD, "Control Undead", 5, 0, 150, 2, ABFLAG_NONE },
- // Vehumet
- { ABIL_VEHUMET_CHANNEL_ENERGY, "Channel Energy", 0, 0, 50, 0, ABFLAG_NONE },
-
// Okawaru
{ ABIL_OKAWARU_MIGHT, "Might", 2, 0, 50, 1, ABFLAG_NONE },
{ ABIL_OKAWARU_HEALING, "Healing", 2, 0, 75, 1, ABFLAG_NONE },
@@ -190,6 +187,7 @@ static const struct ability_def Ability_List[] =
{ ABIL_MAKHLEB_GREATER_SERVANT_OF_MAKHLEB, "Greater Servant of Makhleb", 6, 0, 100, 3, ABFLAG_NONE },
// Sif Muna
+ { ABIL_SIF_MUNA_CHANNEL_ENERGY, "Channel Energy", 0, 0, 100, 0, ABFLAG_NONE },
{ ABIL_SIF_MUNA_FORGET_SPELL, "Forget Spell", 5, 0, 0, 8, ABFLAG_NONE },
// Trog
@@ -943,7 +941,7 @@ bool activate_ability(void)
exercise(SK_INVOCATIONS, 3 + random2(4));
break;
- case ABIL_VEHUMET_CHANNEL_ENERGY:
+ case ABIL_SIF_MUNA_CHANNEL_ENERGY:
mpr("You channel some magical energy.");
inc_mp(1 + random2(you.skills[SK_INVOCATIONS] / 4 + 2), false);
@@ -1588,15 +1586,12 @@ bool generate_abilities( void )
break;
case GOD_SIF_MUNA:
+ if (you.piety >= 30)
+ insert_ability( ABIL_SIF_MUNA_CHANNEL_ENERGY );
if (you.piety >= 50)
insert_ability( ABIL_SIF_MUNA_FORGET_SPELL );
break;
- case GOD_VEHUMET:
- if (you.piety >= 100)
- insert_ability( ABIL_VEHUMET_CHANNEL_ENERGY );
- break;
-
default:
break;
}
@@ -1740,11 +1735,6 @@ void set_god_ability_slots( void )
num_abil = 5;
break;
- case GOD_VEHUMET:
- abil_start = ABIL_VEHUMET_CHANNEL_ENERGY;
- num_abil = 1;
- break;
-
case GOD_OKAWARU:
abil_start = ABIL_OKAWARU_MIGHT;
num_abil = 3;
@@ -1756,8 +1746,8 @@ void set_god_ability_slots( void )
break;
case GOD_SIF_MUNA:
- abil_start = ABIL_SIF_MUNA_FORGET_SPELL;
- num_abil = 1;
+ abil_start = ABIL_SIF_MUNA_CHANNEL_ENERGY;
+ num_abil = 2;
break;
case GOD_TROG:
@@ -1770,6 +1760,7 @@ void set_god_ability_slots( void )
num_abil = 5;
break;
+ case GOD_VEHUMET:
case GOD_NEMELEX_XOBEH:
case GOD_XOM:
default:
@@ -2076,7 +2067,7 @@ static bool insert_ability( int which_ability )
failure = 40 - (you.piety / 20) - (5 * you.skills[SK_INVOCATIONS]);
break;
- case ABIL_VEHUMET_CHANNEL_ENERGY:
+ case ABIL_SIF_MUNA_CHANNEL_ENERGY:
invoc = true;
failure = 40 - you.intel - you.skills[SK_INVOCATIONS];
break;
diff --git a/crawl-ref/source/beam.cc b/crawl-ref/source/beam.cc
index db87bde832..029ee173d8 100644
--- a/crawl-ref/source/beam.cc
+++ b/crawl-ref/source/beam.cc
@@ -2515,11 +2515,11 @@ static void beam_drop_object( struct bolt &beam, item_def *item, int x, int y )
// The effect is nigh impossible to perceive.
switch (item->sub_type)
{
- case MI_NEEDLE: chance = 7; break;
- case MI_STONE: chance = 6; break;
- case MI_DART: chance = 4; break;
+ case MI_NEEDLE: chance = 6; break;
+ case MI_STONE: chance = 4; break;
+ case MI_DART: chance = 3; break;
case MI_ARROW: chance = 4; break;
- case MI_BOLT: chance = 5; break;
+ case MI_BOLT: chance = 4; break;
case MI_LARGE_ROCK:
default:
diff --git a/crawl-ref/source/describe.cc b/crawl-ref/source/describe.cc
index 81b8b97fc0..157fd8e490 100644
--- a/crawl-ref/source/describe.cc
+++ b/crawl-ref/source/describe.cc
@@ -6709,9 +6709,6 @@ void describe_god( int which_god, bool give_title )
if (you.piety >= 75)
cprintf( "During prayer you have some protection from summoned creatures." EOL );
-
- if (you.piety >= 100)
- print_god_abil_desc( ABIL_VEHUMET_CHANNEL_ENERGY );
break;
@@ -6751,11 +6748,14 @@ void describe_god( int which_god, bool give_title )
break;
case GOD_SIF_MUNA:
- if (you.piety >= 50)
- print_god_abil_desc( ABIL_SIF_MUNA_FORGET_SPELL );
+ if (you.piety >= 30)
+ print_god_abil_desc( ABIL_SIF_MUNA_CHANNEL_ENERGY );
else
cprintf( "None." EOL );
+ if (you.piety >= 50)
+ print_god_abil_desc( ABIL_SIF_MUNA_FORGET_SPELL );
+
if (you.piety >= 100)
cprintf( "You are protected from some side-effects of spellcasting." EOL );
break;
diff --git a/crawl-ref/source/dungeon.cc b/crawl-ref/source/dungeon.cc
index f30e09ecab..399c9b58ff 100644
--- a/crawl-ref/source/dungeon.cc
+++ b/crawl-ref/source/dungeon.cc
@@ -3124,7 +3124,7 @@ void give_item(int mid, int level_number) //mv: cleanup+minor changes
(temp_rand == 1) ? WPN_BOW
: WPN_HALBERD);
- if (mitm[bp].sub_type == WPN_BOW)
+ if (is_range_weapon(mitm[bp]))
set_item_ego_type( mitm[bp], OBJ_WEAPONS, SPWPN_FLAME );
else
set_item_ego_type( mitm[bp], OBJ_WEAPONS, SPWPN_FLAMING );
diff --git a/crawl-ref/source/enum.h b/crawl-ref/source/enum.h
index 46cc1c8c74..b07df97f61 100644
--- a/crawl-ref/source/enum.h
+++ b/crawl-ref/source/enum.h
@@ -91,7 +91,7 @@ enum ability_type
ABIL_YRED_ANIMATE_DEAD,
ABIL_YRED_DRAIN_LIFE,
ABIL_YRED_CONTROL_UNDEAD, // 144
- ABIL_VEHUMET_CHANNEL_ENERGY = 160, // 160
+ // 160 - reserved for Vehumet
ABIL_OKAWARU_MIGHT = 170, // 170
ABIL_OKAWARU_HEALING,
ABIL_OKAWARU_HASTE, // 172
@@ -99,7 +99,8 @@ enum ability_type
ABIL_MAKHLEB_LESSER_SERVANT_OF_MAKHLEB,
ABIL_MAKHLEB_MAJOR_DESTRUCTION,
ABIL_MAKHLEB_GREATER_SERVANT_OF_MAKHLEB, // 183
- ABIL_SIF_MUNA_FORGET_SPELL = 190, // 190
+ ABIL_SIF_MUNA_CHANNEL_ENERGY = 190, // 190
+ ABIL_SIF_MUNA_FORGET_SPELL,
ABIL_TROG_BERSERK = 200, // 200
ABIL_TROG_MIGHT,
ABIL_TROG_HASTE_SELF, // 202
diff --git a/crawl-ref/source/mstuff2.cc b/crawl-ref/source/mstuff2.cc
index 7014752199..2b2fbf508c 100644
--- a/crawl-ref/source/mstuff2.cc
+++ b/crawl-ref/source/mstuff2.cc
@@ -901,9 +901,11 @@ bool mons_throw(struct monsters *monster, struct bolt &pbolt, int hand_used)
int ammoHitBonus = 0, ammoDamBonus = 0; // from thrown or ammo
int lnchHitBonus = 0, lnchDamBonus = 0; // special add from launcher
int exHitBonus = 0, exDamBonus = 0; // 'extra' bonus from skill/dex/str
+ int lnchBaseDam = 0;
int hitMult = 0;
int damMult = 0;
+ int diceMult = 100;
bool launched = false; // item is launched
bool thrown = false; // item is sensible thrown item
@@ -937,6 +939,7 @@ bool mons_throw(struct monsters *monster, struct bolt &pbolt, int hand_used)
{
lnchHitBonus = mitm[ weapon ].plus;
lnchDamBonus = mitm[ weapon ].plus2;
+ lnchBaseDam = property(mitm[weapon], PWPN_DAMAGE);
}
// extract weapon/ammo bonuses due to magic
@@ -1010,7 +1013,10 @@ bool mons_throw(struct monsters *monster, struct bolt &pbolt, int hand_used)
break;
}
- baseDam = property( item, PWPN_DAMAGE );
+ // Launcher is now more important than ammo for base damage.
+ baseDam = property(item, PWPN_DAMAGE);
+ if (lnchBaseDam)
+ baseDam = lnchBaseDam + random2(1 + baseDam);
// missiles don't have pluses2; use hit bonus
ammoDamBonus = ammoHitBonus;
@@ -1043,6 +1049,9 @@ bool mons_throw(struct monsters *monster, struct bolt &pbolt, int hand_used)
if (bow_brand == SPWPN_VENOM && ammo_brand == SPMSL_NORMAL)
set_item_ego_type( item, OBJ_MISSILES, SPMSL_POISONED );
+ // Vorpal brand increases damage dice size.
+ if (bow_brand == SPWPN_VORPAL)
+ diceMult = diceMult * 130 / 100;
// WEAPON or AMMO of FIRE
if ((bow_brand == SPWPN_FLAME || ammo_brand == SPMSL_FLAME)
@@ -1140,6 +1149,8 @@ bool mons_throw(struct monsters *monster, struct bolt &pbolt, int hand_used)
pbolt.damage.size += lnchDamBonus;
pbolt.hit += lnchHitBonus;
}
+
+ pbolt.damage.size = diceMult * pbolt.damage.size / 100;
scale_dice(pbolt.damage);
// decrease inventory
diff --git a/crawl-ref/source/notes.cc b/crawl-ref/source/notes.cc
index 91900bcdb3..744661acf8 100644
--- a/crawl-ref/source/notes.cc
+++ b/crawl-ref/source/notes.cc
@@ -37,7 +37,7 @@ static int real_god_power( int religion, int idx ) {
return -1;
return idx-1;
case GOD_VEHUMET:
- return ( idx == 4 ? -1 : idx );
+ return ( idx > 3 ? -1 : idx );
case GOD_OKAWARU:
if ( idx < 2 )
return idx;
@@ -45,9 +45,9 @@ static int real_god_power( int religion, int idx ) {
return -1;
return idx - 2;
case GOD_SIF_MUNA:
- if ( idx == 0 || idx == 2 || idx == 4 ) return -1;
- if ( idx == 1 ) return 0;
- if ( idx == 3 ) return 1;
+ if ( idx == 2 || idx == 4 ) return -1;
+ if ( idx < 2 ) return idx;
+ if ( idx == 3 ) return 2;
case GOD_TROG:
if ( idx == 2 || idx == 4 ) return -1;
if ( idx < 2 ) return idx;
diff --git a/crawl-ref/source/religion.cc b/crawl-ref/source/religion.cc
index 755b14a8ce..2aa663dacd 100644
--- a/crawl-ref/source/religion.cc
+++ b/crawl-ref/source/religion.cc
@@ -349,7 +349,7 @@ void pray(void)
&& you.piety > 80
&& random2( you.piety ) > 70
&& !grid_destroys_items( grd[you.x_pos][you.y_pos] )
- && one_chance_in(4)
+ && one_chance_in(8)
&& you.skills[ best_skill(SK_SLINGS, SK_RANGED_COMBAT) ] >= 7)
{
success = acquirement( OBJ_MISSILES, you.religion );
@@ -1272,7 +1272,7 @@ bool did_god_conduct( int thing_done, int level )
// magical kills tend to do both at the same time (unlike melee).
// This means high level spells probably work pretty much like
// they used to (use spell, get piety).
- piety_change = div_rand_round( level + 10, 60 );
+ piety_change = div_rand_round( level + 10, 80 );
#ifdef DEBUG_DIAGNOSTICS
mprf(MSGCH_DIAGNOSTICS, "Spell practise, level: %d, dpiety: %d",
level, piety_change);
@@ -1404,14 +1404,14 @@ void gain_piety(char pgn)
case GOD_NO_GOD:
case GOD_XOM:
case GOD_NEMELEX_XOBEH:
- case GOD_SIF_MUNA:
break;
default:
strcpy(info, "You can now ");
strcat(info,
(you.religion == GOD_ZIN || you.religion == GOD_SHINING_ONE)
? "repel the undead" :
-
+ (you.religion == GOD_SIF_MUNA)
+ ? "tap ambient magical fields" :
(you.religion == GOD_KIKUBAAQUDGHA)
? "recall your undead slaves" :
(you.religion == GOD_YREDELEMNUL)
@@ -1530,6 +1530,7 @@ void gain_piety(char pgn)
case GOD_OKAWARU:
case GOD_NEMELEX_XOBEH:
case GOD_KIKUBAAQUDGHA:
+ case GOD_VEHUMET:
break;
case GOD_SIF_MUNA:
simple_god_message
@@ -1546,8 +1547,6 @@ void gain_piety(char pgn)
? "hurl bolts of divine anger" :
(you.religion == GOD_YREDELEMNUL)
? "drain ambient lifeforce" :
- (you.religion == GOD_VEHUMET)
- ? "tap ambient magical fields" :
(you.religion == GOD_MAKHLEB)
? "hurl Makhleb's greater destruction" :
(you.religion == GOD_TROG)
@@ -1664,6 +1663,7 @@ void lose_piety(char pgn)
case GOD_OKAWARU:
case GOD_NEMELEX_XOBEH:
case GOD_KIKUBAAQUDGHA:
+ case GOD_VEHUMET:
break;
case GOD_SIF_MUNA:
god_speaks(you.religion,"Sif Muna is no longer protecting you from miscast magic.");
@@ -1679,8 +1679,6 @@ void lose_piety(char pgn)
? "hurl bolts of divine anger" :
(you.religion == GOD_YREDELEMNUL)
? "drain ambient life force" :
- (you.religion == GOD_VEHUMET)
- ? "tap ambient magical fields" :
(you.religion == GOD_MAKHLEB)
? "direct Makhleb's greater destructive powers" :
(you.religion == GOD_TROG)
@@ -1784,7 +1782,6 @@ void lose_piety(char pgn)
case GOD_NO_GOD:
case GOD_XOM:
case GOD_NEMELEX_XOBEH:
- case GOD_SIF_MUNA:
break;
default:
strcpy(info, "You can no longer ");
@@ -1796,6 +1793,8 @@ void lose_piety(char pgn)
? "recall your undead slaves" :
(you.religion == GOD_YREDELEMNUL)
? "animate corpses" :
+ (you.religion == GOD_SIF_MUNA)
+ ? "tap ambient magical fields" :
(you.religion == GOD_VEHUMET)
? "gain power from killing in Vehumet's name" :
(you.religion == GOD_MAKHLEB)
@@ -2747,7 +2746,7 @@ void handle_god_time(void)
// [dshaligram] Sif Muna is now very patient - has to be
// to make up for the new spell training requirements, else
// it's practically impossible to get Master of Arcane status.
- if (one_chance_in(60))
+ if (one_chance_in(50))
lose_piety(1);
if (you.piety < 1)
excommunication();