*/
#define H_VER_MAJOR 2
#define H_VER_MINOR 1
-#define H_VER_PATCH 1
+#define H_VER_PATCH 2
#define H_VER_EXTRA 0
if (cont)
{
project_hack(GF_PSI, damroll(dice, sides));
+ energy_use += 10;
}
}
if (cont)
{
confuse_monsters(power);
+ energy_use += 10;
}
}
if (cont)
{
project_hack(GF_SOUND, damroll(dice, sides));
+ energy_use += 10;
}
}
{
dispel_monsters(randint1(m_sides));
dispel_evil(randint1(e_sides));
+ energy_use += 10;
}
}
break;
{
slow_monsters(plev);
sleep_monsters(plev);
+ energy_use += 10;
}
}
if (cont)
{
stasis_monsters(power);
+ energy_use += 10;
}
}
if (cont)
{
dispel_monsters(damroll(dice, sides));
+ energy_use += 10;
}
}
break;
if (cast || cont)
{
project_hack(GF_POIS, randint1(power));
+ if(cont)
+ {
+ energy_use += 10;
+ }
}
break;
if (cast || cont)
{
project_hack(GF_OLD_DRAIN, randint1(power));
+ if(cont)
+ {
+ energy_use += 10;
+ }
}
break;
if (cast || cont)
{
stun_monsters(power);
+ if(cont)
+ {
+ energy_use += 10;
+ }
}
break;
}
}
+/*
+ * process the effects per 100 energy at player speed.
+ */
+static void process_upkeep_with_speed(void)
+{
+ /* Give the player some energy */
+ if (!load && p_ptr->enchant_energy_need > 0 && !p_ptr->leaving)
+ {
+ p_ptr->enchant_energy_need -= SPEED_TO_ENERGY(p_ptr->pspeed);
+ }
+
+ /* No turn yet */
+ if (p_ptr->enchant_energy_need > 0) return;
+
+ while (p_ptr->enchant_energy_need <= 0)
+ {
+ /* Handle the player song */
+ if (!load) check_music();
+
+ /* Hex - Handle the hex spells */
+ if (!load) check_hex();
+ if (!load) revenge_spell();
+
+ /* There is some randomness of needed energy */
+ p_ptr->enchant_energy_need += ENERGY_NEED();
+ }
+}
+
/*
* Process the player
/* Handle "p_ptr->update" and "p_ptr->redraw" and "p_ptr->window" */
handle_stuff();
}
-
- /* Handle the player song */
- if (!load) check_music();
-
- /* Hex - Handle the hex spells */
- if (!load) check_hex();
- if (!load) revenge_spell();
-
+
load = FALSE;
/* Fast */
/* Hack -- Compress the object list occasionally */
if (o_cnt + 32 < o_max) compact_objects(0);
-
+
/* Process the player */
process_player();
+
+ process_upkeep_with_speed();
/* Handle "p_ptr->notice" */
notice_stuff();
rd_s16b(&p_ptr->energy_need);
if (z_older_than(11, 0, 13))
p_ptr->energy_need = 100 - p_ptr->energy_need;
+ if (z_older_than(12, 1, 20))
+ p_ptr->enchant_energy_need = 0;
+ else
+ rd_s16b(&p_ptr->enchant_energy_need);
rd_s16b(&p_ptr->fast);
rd_s16b(&p_ptr->slow);
wr_s16b(0); /* old "food_digested" */
wr_s16b(0); /* old "protection" */
wr_s16b(p_ptr->energy_need);
+ wr_s16b(p_ptr->enchant_energy_need);
wr_s16b(p_ptr->fast);
wr_s16b(p_ptr->slow);
wr_s16b(p_ptr->afraid);
byte recall_dungeon; /* Dungeon set to be recalled */
s16b energy_need; /* Energy needed for next move */
+ s16b enchant_energy_need; /* Energy needed for next upkeep effect */
s16b food; /* Current nutrition */