- Added ACS function LineAttack via Ryan Cordell.

SVN r4304 (trunk)
This commit is contained in:
Randy Heit 2013-06-01 02:19:18 +00:00
parent 53b284fb5d
commit 2191b4bfa6
1 changed files with 28 additions and 0 deletions

View File

@ -4112,6 +4112,7 @@ enum EACSFunctions
ACSF_SetCVarString,
ACSF_GetUserCVarString,
ACSF_SetUserCVarString,
ACSF_LineAttack,
// ZDaemon
ACSF_GetTeamScore = 19620, // (int team)
@ -4853,6 +4854,33 @@ int DLevelScript::CallFunction(int argCount, int funcIndex, SDWORD *args)
}
break;
//[RC] A bullet firing function for ACS. Thanks to DavidPH.
case ACSF_LineAttack:
{
fixed_t angle = args[1] << FRACBITS;
fixed_t pitch = args[2] << FRACBITS;
int damage = args[3];
FName pufftype = argCount > 4 && args[4]? FName(FBehavior::StaticLookupString(args[4])) : NAME_BulletPuff;
FName damagetype = argCount > 5 && args[5]? FName(FBehavior::StaticLookupString(args[5])) : NAME_None;
fixed_t range = argCount > 6 && args[6]? args[6] : 0x7FFFFFFF;
if (args[0] == 0)
{
P_LineAttack(activator, angle, range, pitch, damage, damagetype, pufftype);
}
else
{
AActor *source;
FActorIterator it(args[0]);
while ((source = it.Next()) != NULL)
{
P_LineAttack(activator, angle, range, pitch, damage, damagetype, pufftype);
}
}
}
break;
default:
break;
}