void read_guilds_dat()
{
    string guildsfile = config.world_data_path + "guilds.txt";

	if (!FileExists( guildsfile ))
        return;

    ConfigFile cf( guildsfile );
    ConfigSection sect_general( cf, "GENERAL", CST_UNIQUE );
    ConfigSection sect_guild( cf, "GUILD", CST_NORMAL );
    ConfigElem elem;
    while (cf.read( elem ))
    {
        if (sect_general.matches( elem ))
        {
            nextguildid = elem.remove_ulong( "NEXTGUILDID", 1 );
        }
        else if (sect_guild.matches( elem ))
        {
            Guild* guild = new Guild(elem);
            guilds[ guild->guildid() ].set( guild );
        }
    }

    register_guilds();
}
void read_combat_config()
{
	ConfigFile cf;
	ConfigElem elem;

    if (FileExists( "config/combat.cfg" ))
    {
		if ( config.loglevel > 1 ) {
			cout << "Loading combat.cfg options\n";
		}
        cf.open( "config/combat.cfg" );
        cf.readraw( elem );
    } else if ( config.loglevel > 1 ) {
		cout << "File config/combat.cfg not found, skipping.\n";
	}

	combat_config.display_parry_success_messages = elem.remove_bool("DisplayParrySuccessMessages", false);
	combat_config.warmode_inhibits_regen = elem.remove_bool("WarmodeInhibitsRegen", false);
	combat_config.attack_self = elem.remove_bool("SingleCombat", false);
	combat_config.warmode_delay = elem.remove_ulong("WarModeDelay", 1);
	combat_config.core_hit_sounds = elem.remove_bool("CoreHitSounds", false);
	combat_config.scripted_attack_checks = elem.remove_bool("ScriptedAttackChecks", false);
	combat_config.reset_swing_onturn = elem.remove_bool("ResetSwingOnTurn", false);
	combat_config.send_swing_packet = elem.remove_bool("SendSwingPacket", true);
    combat_config.send_damage_packet = elem.remove_bool("SendDamagePacket", false);		
	combat_config.core_attack_effects = elem.remove_bool("CoreAttackEffects", true);
}