summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--changes.txt8
-rw-r--r--src/spells1.c29
2 files changed, 23 insertions, 14 deletions
diff --git a/changes.txt b/changes.txt
index 9e90e2ec..6bd3d630 100644
--- a/changes.txt
+++ b/changes.txt
@@ -1,3 +1,11 @@
+T.o.M.E 2.3.9 (ah)
+
+Game:
+
+- Fixes and tweaks for Thaumaturgy to make view/area spells less
+ overpowered and to make bolt/ball spells more useful. (Credit
+ goes to Lord Estraven.)
+
T.o.M.E 2.3.8 (ah)
Game:
diff --git a/src/spells1.c b/src/spells1.c
index 4d088f6c..a7b0ad41 100644
--- a/src/spells1.c
+++ b/src/spells1.c
@@ -9237,20 +9237,18 @@ void generate_spell(int plev)
power = rand_int(15);
dice = plev / 5;
- sides = plev * 2;
+ sides = plev;
mana = plev;
/* Make the spell more or less powerful. */
- dice += power / 5;
- sides += power / 2;
- mana += (plev * power) / 8;
+ dice += power;
+ sides += power;
+ mana += (plev * power) / 15;
/* Stay within reasonable bounds. */
if (dice < 1) dice = 1;
- if (dice > 10) dice = 10;
if (sides < 5) sides = 5;
- if (sides > 100) sides = 100;
if (mana < 1) mana = 1;
@@ -9267,8 +9265,9 @@ void generate_spell(int plev)
if (plev == 1 || chance < 25)
{
rspell->proj_flags |= PROJECT_STOP;
- rspell->dam_dice = dice;
- rspell->dam_sides = sides;
+ /* Swap dice and sides for better damage */
+ rspell->dam_dice = sides;
+ rspell->dam_sides = dice;
rspell->radius = 0;
}
else if (chance < 50)
@@ -9281,9 +9280,9 @@ void generate_spell(int plev)
else if (chance < 76)
{
rspell->proj_flags |= PROJECT_STOP;
- rspell->radius = dice;
- rspell->dam_dice = sides;
- rspell->dam_sides = 1;
+ rspell->radius = dice / 3;
+ rspell->dam_dice = dice;
+ rspell->dam_sides = sides;
ball_desc = TRUE;
}
else if (chance < 83)
@@ -9299,8 +9298,9 @@ void generate_spell(int plev)
else if (chance < 90)
{
rspell->proj_flags |= PROJECT_METEOR_SHOWER;
- rspell->dam_dice = dice;
- rspell->dam_sides = sides;
+ /* Area effect spells do way less damage "per shot" */
+ rspell->dam_dice = dice / 5;
+ rspell->dam_sides = sides / 5;
rspell->radius = sides / 3;
if (rspell->radius < 4) rspell->radius = 4;
@@ -9309,8 +9309,9 @@ void generate_spell(int plev)
else
{
rspell->proj_flags |= PROJECT_VIEWABLE;
+ /* View spells do less damage */
rspell->dam_dice = dice;
- rspell->dam_sides = sides;
+ rspell->dam_sides = sides / 2;
}
/* Both a destructive and a simple spell requested --