Here is the change for your scrutiny: New function friendly_fire in attack.c: int friendly_fire(object *op, object *hitter){ int friendlyfire; if (hitter->head) hitter=hitter->head; friendlyfire = 0; if(op->type == PLAYER){ if(hitter->type == PLAYER && hitter->contr->peaceful == 1) friendlyfire = 1; if(get_owner(hitter) && hitter->owner->type == PLAYER && hitter->owner->contr->peaceful == 1){ friendlyfire = 2; if(hitter->type == CONE || hitter->type == FBALL || hitter->type == FIREWALL || hitter->type == SWARM_SPELL || hitter->type == POISONCLOUD || hitter->type == POISONING || hitter->type == DISEASE || hitter->type == RUNE) friendlyfire = 0; } } return friendlyfire; } Added to hit_player: > if (type & attacktype) { > ndam=hit_player_attacktype(op,hitter,dam,attacknum,magic); > /* the >= causes us to prefer messages from special attacks, if > * the damage is equal. > */ > if (ndam >= maxdam) { > maxdam = ndam; > maxattacktype = 1<<attacknum; > } /* if this is friendly fire then do a little bit of damage only */ friendlyfire = friendly_fire(op, hitter); if (friendlyfire) maxdam = 1; > } _______________________________________________ crossfire-devel mailing list crossfire-devel at lists.real-time.com https://mailman.real-time.com/mailman/listinfo/crossfire-devel