This is a simple fix to add a ATK field in the db and populate the atk value of a npc .   There is a value ATK in npc but presently it always 0 (you see it with the #showstats command) and this value is used in the IntervalAC calculation for damage mitigation .
Here the required SQL for the db
	Code:
	ALTER TABLE npc_types ADD COLUMN `ATK` mediumint(8) unsigned NOT NULL default '0';
 
And then in the zonedb.cpp file . In the ZoneDatabase::GetNPCType (uint32 id) function.
change the code 
	Code:
				"npc_types.see_invis_undead,"
            "npc_types.lastname,"
			"npc_types.qglobal,"
			"npc_types.AC,"
            "npc_types.npc_aggro,"
			"npc_types.spawn_limit,"
			"npc_types.see_hide,"
			"npc_types.see_improved_hide";
      if (id == 0)
         MakeAnyLenString(&query,
            "%s FROM npc_types,spawn2 WHERE spawn2.zone='%s'"
            " AND npc_types.id=spawn2.id",
            basic_query, zone->GetShortName());
 TO 
	Code:
				"npc_types.see_invis_undead,"
            "npc_types.lastname,"
			"npc_types.qglobal,"
			"npc_types.AC,"
            "npc_types.npc_aggro,"
			"npc_types.spawn_limit,"
			"npc_types.see_hide,"
			"npc_types.see_improved_hide,"
			"npc_types.ATK";
      if (id == 0)
         MakeAnyLenString(&query,
            "%s FROM npc_types,spawn2 WHERE spawn2.zone='%s'"
            " AND npc_types.id=spawn2.id",
            basic_query, zone->GetShortName());
 
And add the bold line in the following code:
	Code:
					tmpNPCType->qglobal = atoi(row[r++])==0?false:true;	// qglobal
				tmpNPCType->AC = atoi(row[r++]);
				tmpNPCType->npc_aggro = atoi(row[r++])==0?false:true;
				tmpNPCType->spawn_limit = atoi(row[r++]);
				tmpNPCType->see_hide = atoi(row[r++])==0?false:true;
				tmpNPCType->see_improved_hide = atoi(row[r++])==0?false:true;
				tmpNPCType->ATK = atoi(row[r++]);
 
This will give you the possiblity of adding a atk value to npc and give them more chance of passing thru player mitigation.
--
Pyronis / Kahel
Dev Jest 3 Server