All pastes #1855378 Raw Edit

AOHD

public cpp v1 · immutable
#1855378 ·published 2010-04-02 23:15 UTC
rendered paste body
///////////////////////////// The following section //// optimizes  the use of //// health items  on  the //// survivors to maximize //// their  health  bonus. /////////////////////////////new Float:fTemp[4];// Sort by ascending health bonus after healingfor (new i = 0; i < 4; i++){		for (new j = 0; j < 4; j++)	{		if (fHealth[iKitPriority[j]] + fTempHealth[iKitPriority[j]] > 100) fTemp[j] = fHealth[iKitPriority[j]] + (100 - fHealth[iKitPriority[j]]) / 2;		else fTemp[j] = fTempHealth[j];	}	if ((fHealth[i] + (100 - fHealth[i]) * g_fSM_HealPercent) < (fTemp[0]))	{		iKitPriority[3] = iKitPriority[2];		iKitPriority[2] = iKitPriority[1];		iKitPriority[1] = iKitPriority[0];		iKitPriority[0] = i;	}	else if ((fHealth[i] + (100 - fHealth[i]) * g_fSM_HealPercent) < (fTemp[1]))	{		iKitPriority[3] = iKitPriority[2];		iKitPriority[2] = iKitPriority[1];		iKitPriority[1] = i;	}	else if ((fHealth[i] + (100 - fHealth[i]) * g_fSM_HealPercent) < (fTemp[2]))	{		iKitPriority[3] = iKitPriority[2];		iKitPriority[2] = i;	}	else	{		iKitPriority[3] = i;	}}// Repeat optimization for each medkitfor (new k = 0; k < iTotalKits; k++){			// Move any	dead or incapped survivors to the end	for (new i = 0; i < 4; i++)	{		if (FloatCompare(fHealth[i], 0.0) < 1 && FloatCompare(fTempHealth[i], 0.0))		{			iKitPriority[3] = i;			iKitPriority[2] = iKitPriority[3];			iKitPriority[1] = iKitPriority[2];			iKitPriority[0] = iKitPriority[1];		}	}		// Apply a health kit	fHealth[iKitPriority[0]] = fHealth[iKitPriority[0]] + (100 - fHealth[iKitPriority[0]]) * g_fSM_HealPercent;	fTempHealth[iKitPriority[0]] = 0.0;		for (new j = 0; j < 4; j++)	{		if (fHealth[iKitPriority[j]] + fTempHealth[iKitPriority[j]] > 100) fTemp[j] = fHealth[iKitPriority[j]] + (100 - fHealth[iKitPriority[j]]) / 2;		else fTemp[j] = fTempHealth[j];	}		// Sort the healed survivor back into the priority	if ((fHealth[iKitPriority[0]] + (100 - fHealth[iKitPriority[0]]) * g_fSM_HealPercent) < (fTemp[1]))	{		iKitPriority[3] = iKitPriority[2];		iKitPriority[2] = iKitPriority[1];		iKitPriority[1] = iKitPriority[0];	}	else if ((fHealth[iKitPriority[0]] + (100 - fHealth[iKitPriority[0]]) * g_fSM_HealPercent) < (fTemp[2]))	{		iKitPriority[3] = iKitPriority[2];		iKitPriority[2] = iKitPriority[0];	}	else	{		iKitPriority[3] = iKitPriority[0];	}}// Calculate total health after medkits are appliedfor (new i = 0; i < 4; i++) fTotalHealth[i] = fHealth[i] + fTempHealth[i];// Sort by ascending temp healthfor (new i = 0; i < 4; i++){	if (fTotalHealth[i] < fTotalHealth[0])	{		iTempPriority[3] = iTempPriority[2];		iTempPriority[2] = iTempPriority[1];		iTempPriority[1] = iTempPriority[0];		iTempPriority[0] = i;	}	else if (fTotalHealth[i] < fTotalHealth[1])	{		iTempPriority[3] = iTempPriority[2];		iTempPriority[2] = iTempPriority[1];		iTempPriority[1] = i;	}	else if (fTotalHealth[i] < fTotalHealth[2])	{		iTempPriority[3] = iTempPriority[2];		iTempPriority[2] = i;	}	else	{		iTempPriority[3] = i;	}}// Move anyone with less than one set of pills worth of free health to the endfor (new i = 0; i < 4; i++){	if (fTotalHealth[iTempPriority[i]] > (g_iSM_PillPercent*100))	{		iTempPriority[3] = iTempPriority[0];		iTempPriority[2] = iTempPriority[3];		iTempPriority[1] = iTempPriority[2];		iTempPriority[0] = iTempPriority[1];	}}// Move any	dead or incapped survivors to the endfor (new i = 0; i < 4; i++){	if (FloatCompare(fHealth[i], 0.0) < 1 && FloatCompare(fTempHealth[i], 0.0) < 1)	{		iTempPriority[3] = i;		iTempPriority[2] = iTempPriority[3];		iTempPriority[1] = iTempPriority[2];		iTempPriority[0] = iTempPriority[1];	}}// Apply pain pills in order of priorityfor (new i = 0; i < iTotalPills; i++) if (iTotalPills > 0) fTempHealth[iTempPriority[i]] += g_iSM_PillPercent;// Calculate total health after pills are applied accounting for max health 100for (new i = 0; i < 4; i++){	fTotalHealth[i] = fHealth[i] + fTempHealth[i];	if (fTotalHealth[i] > 100)	{		fTotalHealth[i] = 100.0;		fTempHealth[i] = 100 - fHealth[i];	}}// Move anyone with less than one adrenaline worth of free health to the endfor (new i = 0; i < 4; i++){	if (fTotalHealth[iTempPriority[i]] > (g_iSM_AdrenPercent*100))	{		iTempPriority[3] = iTempPriority[0];		iTempPriority[2] = iTempPriority[3];		iTempPriority[1] = iTempPriority[2];		iTempPriority[0] = iTempPriority[1];	}}// Move any	dead or incapped survivors to the endfor (new i = 0; i < 4; i++){	if (FloatCompare(fHealth[i], 0.0) < 1 && FloatCompare(fTempHealth[i], 0.0) < 1)	{		iTempPriority[3] = i;		iTempPriority[2] = iTempPriority[3];		iTempPriority[1] = iTempPriority[2];		iTempPriority[0] = iTempPriority[1];	}}// Apply adrenaline in order of priorityfor (new i = 0; i < iTotalAdren; i++) if (iTotalAdren > 0) fTempHealth[iTempPriority[i]] += g_iSM_AdrenPercent;// Calculate total health after adrenaline is applied accounting for max health 100for (new i = 0; i < 4; i++){	fTotalHealth[i] = fHealth[i] + fTempHealth[i];	if (fTotalHealth[i] > 100)	{		fTotalHealth[i] = 100.0;		fTempHealth[i] = 100 - fHealth[i];	}}/////////////////////////// End of optimization ///////////////////////////