The changes on this one:
- Minor displacement never produces void gates, only controlled teleport at high levels.
- Character Armor gives AC equivalent to plev (i.e. Mindcraft skill level) instead of a flat 50.
- Psychometry just identifies, that's all.
- Adrenaline now gives up plev * 5 HP, but the speed bonus is plev / 5, so it's less powerful at medium levels.
- Psychic Drain is now a bolt; it does more damage than before and does not drain the player's energy. (It formerly took an extra turn and a half at normal speed if successful.)
Those are all from the Mindcraft git branch, except for Psychic Drain, which is borrowed from my defunct TFork project. I'm not quite satisfied with the latter - ideally I want to give it limited range, but I'm not quite sure how - but I think it is an improvement.
Anyway here is the patch.
Code: Select all
--- cmd7-old.c 2010-12-09 14:05:36.000000000 -0500
+++ cmd7-new.c 2010-12-09 14:19:19.000000000 -0500
@@ -559,10 +559,8 @@
get_pos_player(10 + p_ptr->to_s / 2, &ij, &ii);
}
- cave_set_feat(p_ptr->py, p_ptr->px, FEAT_BETWEEN);
- cave_set_feat(ij, ii, FEAT_BETWEEN);
- cave[p_ptr->py][p_ptr->px].special = ii + (ij << 8);
- cave[ij][ii].special = p_ptr->px + (p_ptr->py << 8);
+ /* Just teleport the player */
+ teleport_player_to(ij,ii);
}
break;
@@ -606,7 +604,8 @@
/* Character Armour */
case 6:
{
- set_shield(p_ptr->shield + plev, 50, 0, 0, 0);
+ /* use plev AC instead of a flat bonus */
+ set_shield(p_ptr->shield + plev, plev, 0, 0, 0);
if (plev > 14) set_oppose_acid(p_ptr->oppose_acid + plev);
if (plev > 19) set_oppose_fire(p_ptr->oppose_fire + plev);
if (plev > 24) set_oppose_cold(p_ptr->oppose_cold + plev);
@@ -619,14 +618,8 @@
/* Psychometry */
case 7:
{
- if (plev < 40)
- {
- psychometry();
- }
- else
- {
- ident_spell();
- }
+ /* Pseudo-ID is now useless, just invoke ID */
+ ident_spell();
break;
}
@@ -653,7 +646,8 @@
{
set_afraid(0);
set_stun(0);
- hp_player(plev);
+ /* Give the player a decent amount of HP */
+ hp_player(plev * 5);
b = 10 + randint((plev * 3) / 2);
@@ -668,12 +662,12 @@
if (!p_ptr->fast)
{
- /* Haste */
- (void)set_fast(b, 10);
+ /* Give a speed bonus proportional to skill level */
+ (void)set_fast(b, plev / 5);
}
else
{
- (void)set_fast(p_ptr->fast + b, 10);
+ (void)set_fast(p_ptr->fast + b, plev / 5);
}
break;
@@ -684,12 +678,11 @@
{
if (!get_aim_dir(&dir)) return;
- b = damroll(plev / 2, 6);
+ /* Up to twice as much damage as before... */
+ b = damroll(plev, 6);
- if (fire_ball(GF_PSI_DRAIN, dir, b, 0 + (plev - 25) / 10))
- {
- p_ptr->energy -= randint(150);
- }
+ /* And no energy drain... But it's now a bolt. */
+ fire_bolt(GF_PSI_DRAIN, dir, b);
break;
}