// Container for utility functions used by ACS and FraggleScript. class ScriptUtil play { //========================================================================== // // // //========================================================================== static int SetWeapon(Actor activator, class 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 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()); } } }