class Inventory : Actor native { Default { Inventory.Amount 1; Inventory.MaxAmount 1; Inventory.InterHubAmount 1; Inventory.UseSound "misc/invuse"; Inventory.PickupSound "misc/i_pkup"; Inventory.PickupMessage "$TXT_DEFAULTPICKUPMSG"; } // These are regular functions for the item itself. private native void A_RestoreSpecialDoomThing(); private native void A_RestoreSpecialThing1(); private native void A_RestoreSpecialThing2(); native bool, Actor CallTryPickup(Actor toucher); States(Actor, Overlay, Weapon, Item) { HideDoomish: TNT1 A 1050; TNT1 A 0 A_RestoreSpecialPosition; TNT1 A 1 A_RestoreSpecialDoomThing; Stop; HideSpecial: ACLO E 1400; ACLO A 0 A_RestoreSpecialPosition; ACLO A 4 A_RestoreSpecialThing1; ACLO BABCBCDC 4; ACLO D 4 A_RestoreSpecialThing2; Stop; Held: TNT1 A -1; Stop; HoldAndDestroy: TNT1 A 1; Stop; } } class StateProvider : Inventory native { action native state A_JumpIfNoAmmo(statelabel label); action native void A_CustomPunch(int damage, bool norandom = false, int flags = CPF_USEAMMO, class pufftype = "BulletPuff", double range = 0, double lifesteal = 0, int lifestealmax = 0, class armorbonustype = "ArmorBonus", sound MeleeSound = 0, sound MissSound = ""); action native void A_FireBullets(double spread_xy, double spread_z, int numbullets, int damageperbullet, class pufftype = "BulletPuff", int flags = 1, double range = 0, class missile = null, double Spawnheight = 32, double Spawnofs_xy = 0); action native void A_FireCustomMissile(class missiletype, double angle = 0, bool useammo = true, double spawnofs_xy = 0, double spawnheight = 0, int flags = 0, double pitch = 0); action native void A_RailAttack(int damage, int spawnofs_xy = 0, bool useammo = true, color color1 = 0, color color2 = 0, int flags = 0, double maxdiff = 0, class pufftype = "BulletPuff", double spread_xy = 0, double spread_z = 0, double range = 0, int duration = 0, double sparsity = 1.0, double driftspeed = 1.0, class spawnclass = "none", double spawnofs_z = 0, int spiraloffset = 270, int limit = 0); action native void A_WeaponReady(int flags = 0); action native void A_Lower(); action native void A_Raise(); action native void A_ReFire(statelabel flash = null); action native void A_ClearReFire(); action native void A_CheckReload(); action native void A_GunFlash(statelabel flash = null, int flags = 0); action native void A_FireAssaultGun(); action native state A_CheckForReload(int counter, statelabel label, bool dontincrement = false); action native void A_ResetReloadCounter(); } class ScoreItem : Inventory native { Default { Height 10; +COUNTITEM Inventory.Amount 1; +Inventory.ALWAYSPICKUP } } class Ammo : Inventory native { Default { +INVENTORY.KEEPDEPLETED Inventory.PickupSound "misc/ammo_pkup"; } } class BackpackItem : Inventory native { } class Armor : Inventory native { Default { Inventory.PickupSound "misc/armor_pkup"; } } class BasicArmor : Armor native { Default { +Inventory.KEEPDEPLETED } } class BasicArmorBonus : Armor native { Default { +Inventory.AUTOACTIVATE +Inventory.ALWAYSPICKUP Inventory.MaxAmount 0; Armor.SavePercent 33.335; } } class BasicArmorPickup : Armor native { Default { +Inventory.AUTOACTIVATE; Inventory.MaxAmount 0; } } class HexenArmor : Armor native { Default { +Inventory.KEEPDEPLETED +Inventory.UNDROPPABLE } } class DehackedPickup : Inventory native {} class FakeInventory : Inventory native {} class CustomInventory : StateProvider native { Default { DefaultStateUsage SUF_ACTOR|SUF_OVERLAY|SUF_ITEM; } } class Health : Inventory native { Default { Inventory.Amount 1; Inventory.MaxAmount 0; Inventory.PickupSound "misc/health_pkup"; } } class HealthPickup : Inventory native { Default { Inventory.DefMaxAmount; +INVENTORY.INVBAR } } class Key : Inventory native { Default { +DONTGIB; // Don't disappear due to a crusher Inventory.InterHubAmount 0; Inventory.PickupSound "misc/k_pkup"; } } class PowerupGiver : Inventory native { Default { Inventory.DefMaxAmount; +INVENTORY.INVBAR +INVENTORY.FANCYPICKUPSOUND Inventory.PickupSound "misc/p_pkup"; } } class Powerup : Inventory native {} class PowerInvulnerable : Powerup native { Default { Powerup.Duration -30; inventory.icon "SPSHLD0"; } } class PowerStrength : Powerup native { Default { Powerup.Duration 1; Powerup.Color "ff 00 00", 0.5; +INVENTORY.HUBPOWER } } class PowerInvisibility : Powerup native { Default { +SHADOW; Powerup.Duration -60; Powerup.Strength 80; Powerup.Mode "Fuzzy"; } } class PowerGhost : PowerInvisibility { Default { +GHOST; Powerup.Duration -60; Powerup.Strength 60; Powerup.Mode "None"; } } class PowerShadow : PowerInvisibility { Default { +INVENTORY.HUBPOWER Powerup.Duration -55; Powerup.Strength 75; Powerup.Mode "Cumulative"; } } class PowerIronFeet : Powerup native { Default { Powerup.Duration -60; Powerup.Color "00 ff 00", 0.125; } } class PowerMask : PowerIronFeet native { Default { Powerup.Duration -80; Powerup.Color "00 00 00", 0; +INVENTORY.HUBPOWER Inventory.Icon "I_MASK"; } } class PowerLightAmp : Powerup native { Default { Powerup.Duration -120; } } class PowerTorch : PowerLightAmp native {} class PowerFlight : Powerup native { Default { Powerup.Duration -60; +INVENTORY.HUBPOWER } } class PowerWeaponLevel2 : Powerup native { Default { Powerup.Duration -40; Inventory.Icon "SPINBK0"; +INVENTORY.NOTELEPORTFREEZE } } class PowerSpeed : Powerup native { Default { Powerup.Duration -45; Speed 1.5; Inventory.Icon "SPBOOT0"; +INVENTORY.NOTELEPORTFREEZE } } // Player Speed Trail (used by the Speed Powerup) ---------------------------- class PlayerSpeedTrail native { Default { +NOBLOCKMAP +NOGRAVITY Alpha 0.6; RenderStyle "Translucent"; } } class PowerMinotaur : Powerup native { Default { Powerup.Duration -25; Inventory.Icon "SPMINO0"; } } class PowerTargeter : Powerup native { Default { Powerup.Duration -160; +INVENTORY.HUBPOWER } States { Targeter: TRGT A -1; Stop; TRGT B -1; Stop; TRGT C -1; Stop; } } class PowerFrightener : Powerup native { Default { Powerup.Duration -60; } } class PowerBuddha : Powerup native { Default { Powerup.Duration -60; } } class PowerScanner : Powerup native { Default { Powerup.Duration -80; +INVENTORY.HUBPOWER } } class PowerTimeFreezer : Powerup native { Default { Powerup.Duration -12; } } class PowerDamage : Powerup native { Default { Powerup.Duration -25; } } class PowerProtection : Powerup native { Default { Powerup.Duration -25; } } class PowerDrain : Powerup native { Default { Powerup.Duration -60; } } class PowerRegeneration : Powerup native { Default { Powerup.Duration -120; Powerup.Strength 5; } } class PowerHighJump : Powerup native {} class PowerDoubleFiringSpeed : Powerup native {} class PowerMorph : Powerup native { Default { Powerup.Duration -40; } } class PowerInfiniteAmmo : Powerup native { Default { Powerup.Duration -30; } } class MapRevealer : Inventory native {} class PuzzleItem : Inventory native { Default { +NOGRAVITY +INVENTORY.INVBAR Inventory.DefMaxAmount; Inventory.UseSound "PuzzleSuccess"; Inventory.PickupSound "misc/i_pkup"; } } class Weapon : StateProvider native { Default { Inventory.PickupSound "misc/w_pkup"; Weapon.DefaultKickback; Weapon.BobSpeed 1.0; Weapon.BobRangeX 1.0; Weapon.BobRangeY 1.0; +WEAPONSPAWN DefaultStateUsage SUF_ACTOR|SUF_OVERLAY|SUF_WEAPON; } States { LightDone: SHTG E 0 A_Light0; Stop; } native bool DepleteAmmo(bool altFire, bool checkEnough = true, int ammouse = -1); virtual State GetReadyState () { return FindState('Ready'); } native action void A_ZoomFactor(double scale = 1, int flags = 0); native action void A_SetCrosshair(int xhair); const ZOOM_INSTANT = 1; const ZOOM_NOSCALETURNING = 2; } class WeaponGiver : Weapon native { Default { Weapon.AmmoGive1 -1; Weapon.AmmoGive2 -1; } } class WeaponHolder : Inventory native { Default { +NOBLOCKMAP +NOSECTOR +INVENTORY.UNDROPPABLE } } class WeaponPiece : Inventory native { Default { +WEAPONSPAWN; } }