/*This snippet is one approach to instituting smaller hp, mana, and movement recovery times, while trying to regain about the same amount over a tick as would've been gained on a single check */
/* into update.c */
Proto(int mingain1, (CharData *));
Proto(int mingain2, (CharData *));
Proto(int mingain3, (CharData *));

/* These variables I had to define to compare them to the hit gain calculated later, as I can't directly compare an int with CharData */
int mingain1(CharData * ch)
{
	return 10;
}

int mingain2(CharData * ch)
{
	return 4;
}

int mingain3(CharData * ch)
{
	return 2;
}

/* This is the function that calls for recovery every 10th of a tick */
void micro_tenth(void)
{
	CharData *ch;
	CharData *ch_next;
	for (ch = char_first; ch != NULL; ch = ch_next)
	{
		AffectData *paf;
		AffectData *paf_next;
		ch_next = ch->next;
		if (ch->hit < ch->max_hit)
			ch->hit += (hit_gain(ch) / 10);
		else
			ch->hit = ch->max_hit;

		if (ch->mana < ch->max_mana)
			ch->mana += (mana_gain(ch) / 10);
		else
			ch->mana = ch->max_mana;

		if (ch->move < ch->max_move)
			ch->move += (move_gain(ch) / 10);
		else
			ch->move = ch->max_move;
		if (IsAffected(ch, AFF_POISON) && ch != NULL)
		{
			AffectData *poison;

			poison = affect_find(ch->affect_first, gsn_poison);

			if (poison != NULL)
			{
				act("$n shivers and suffers.", ch, NULL, NULL, TO_ROOM);
				chprintln(ch, "You shiver and suffer.");
				damage(ch, ch, poison->level / 100 + 1, gsn_poison, DAM_POISON,
					   false);
			}
		}
	}
}

/* This is called in the update handler void at the end of update.c */
	if (--pulse_tenth <= 0)
	{
		pulse_tenth = PULSE_TENTH;
		micro_tenth();
	}
/* To work, PULSE_TENTH and PULSE_FOURTH had to be defined in defines.h like so */
#define PULSE_TENTH        	        	  (4 * PULSE_PER_SECOND)
#define PULSE_FOURTH        	        	  (11 * PULSE_PER_SECOND)

/* I set up similar checks to micro_tenth at one fourth and one half of a tick, with one difference */
void micro_fourth(void)
{
	AffectData *paf;
	AffectData *paf_next;
	CharData *ch;
	CharData *ch_next;
	for (ch = char_first; ch != NULL; ch = ch_next)
	{
		ch_next = ch->next;
		/* Here, micro_fourth only recovers hit points IF the calculated hit_gain is less than 10 (mingain1's value), so as to not recover experience once every tenth of a tick AND every fourth */
		if (ch->hit < ch->max_hit && hit_gain(ch) < mingain1(ch))
			ch->hit = Min(ch->hit + (hit_gain(ch) / 4), ch->max_hit);
		
		/* The same check is made on mana and movement points */
		if (ch->mana < ch->max_mana && mana_gain(ch) < mingain1(ch))
			ch->mana = Min(ch->mana + (mana_gain(ch) / 4), ch->max_mana);
		
		if (ch->move < ch->max_move && move_gain(ch) < mingain1(ch))
			ch->move = Min(ch->move + (move_gain(ch) / 4), ch->max_move);
		if (IsAffected(ch, AFF_POISON) && ch != NULL)
		{
			AffectData *poison;

			poison = affect_find(ch->affect_first, gsn_poison);

			if (poison != NULL)
			{
				act("$n shivers and suffers.", ch, NULL, NULL, TO_ROOM);
				chprintln(ch, "You shiver and suffer.");
				damage(ch, ch, poison->level / 25 + 1, gsn_poison, DAM_POISON,
					   false);
			}
		}
	}
}
/* The hit point, mana, and movement recovery calls were removed from void char_update */