If it's only doing it in the first room when it starts hunting, that's a long standing, easily fixed, bug.
Around line 900 in the version I'm look at, change:
Code:
loop {
while( (target = find_target(target, just_arrived)) && !should_rest? )
if( (Time.now.to_i - last_attack > 15) || just_arrived )
@followers.add_event(:ATTACK)
last_attack = Time.now.to_i
end
attack(target)
just_arrived = false
loot()
end
gather_ammo()
if(should_rest?)
break
else
prepare_for_movement()
target = bs_wander()
sleep 1
just_arrived = true
end
}
to
Code:
loop {
if(should_rest?)
break
else
prepare_for_movement()
target = bs_wander()
sleep 1
just_arrived = true
end
while( (target = find_target(target, just_arrived)) && !should_rest? )
if( (Time.now.to_i - last_attack > 15) || just_arrived )
@followers.add_event(:ATTACK)
last_attack = Time.now.to_i
end
attack(target)
just_arrived = false
loot()
end
gather_ammo()
}
If it's doing it all the time, it's probably because it's trying to ignore disks that belong to someone in your group, but it's sticking the group members name into a regex without checking if it's empty. The empty regex matches everything, and it assumes all disks belong to someone in your non-existent group.
Around line 1326 change:
Code:
next if GameObj.loot.find { |obj| (obj.noun == 'disk') and (obj.name !~ /#{group.join('|')}/) }
to
Code:
next if GameObj.loot.find { |obj| (obj.noun == 'disk') and (group.empty? or obj.name !~ /#{group.join('|')}/) }