gzdoom-gles/wadsrc/static/zscript/scriptutil/scriptutil.txt
Christoph Oelckers 4c7096ffac - started with a ScriptUtil class which will allow moving function implementations for ACS and FraggleScript to zscript.txt
So far 3 functions for testing implemented.

# Conflicts:
#	src/p_acs.cpp
2019-04-15 21:58:26 +02:00

105 lines
2.2 KiB
Text

// Container for utility functions used by ACS and FraggleScript.
class ScriptUtil play
{
//==========================================================================
//
//
//
//==========================================================================
static int SetWeapon(Actor activator, class<Inventory> cls)
{
if(activator != NULL && activator.player != NULL && cls != null)
{
let item = Weapon(activator.FindInventory(cls));
if(item != NULL)
{
if(activator.player.ReadyWeapon == item)
{
// The weapon is already selected, so setweapon succeeds by default,
// but make sure the player isn't switching away from it.
activator.player.PendingWeapon = WP_NOCHANGE;
return 1;
}
else
{
if(item.CheckAmmo(Weapon.EitherFire, false))
{
// There's enough ammo, so switch to it.
activator.player.PendingWeapon = item;
return 1;
}
}
}
}
return 0;
}
//==========================================================================
//
//
//
//==========================================================================
static void SetMarineWeapon(Actor activator, int tid, int marineweapontype)
{
if (tid != 0)
{
let it = ActorIterator.Create(tid, 'ScriptedMarine');
ScriptedMarine marine;
while ((marine = ScriptedMarine(it.Next())) != NULL)
{
marine.SetWeapon(marineweapontype);
}
}
else
{
let marine = ScriptedMarine(activator);
if (marine != null)
{
marine.SetWeapon(marineweapontype);
}
}
}
//==========================================================================
//
//
//
//==========================================================================
static void SetMarineSprite(Actor activator, int tid, class<Actor> type)
{
if (type != NULL)
{
if (tid != 0)
{
let it = ActorIterator.Create(tid, 'ScriptedMarine');
ScriptedMarine marine;
while ((marine = ScriptedMarine(it.Next())) != NULL)
{
marine.SetSprite(type);
}
}
else
{
let marine = ScriptedMarine(activator);
if (marine != null)
{
marine.SetSprite(type);
}
}
}
else
{
Console.Printf ("Unknown actor type: %s\n", type.GetClassName());
}
}
}