Crossfire Mailing List Archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Tracking down the problem causing fireball/disease kills' exp




to go into tthe wrong experience category.

I've discovered the problem.

The problem isn't in the fireball or the disease code.  It is in
"hit_player".

Here is the problem (line 921 is the actual problem, some context is given.)

/* Pet killed something. */
	if(get_owner(hitter)!=NULL) {
	    (void) sprintf(buf,"%s killed %s with %s.",hitter->owner->name,
		query_name(op),query_name(hitter));
#ifdef ALLOW_SKILLS
	    old_hitter = hitter;
	    owner->exp_obj=hitter->exp_obj;
#endif
	    hitter=hitter->owner;


This doesn't apply to pets but to any known object.  It switches
the hitter from the pet or whatever to the owner of the object,
which in the case of a disease or a pet or fireball, is the player.

add_exp then sticks any kill into the players current chosen_skill,
allowing the widely noted abuse.

I think this code can be safely removed.

I'll try that and test it.

(but this isn't going into the repository quite yet.)

PeterM