// contains all global Blood definitions struct Blood native { // POWERUPS ///////////////////////////////////////////////////// enum EPowerupType { kPwUpFeatherFall = 12, kPwUpShadowCloak = 13, kPwUpDeathMask = 14, kPwUpJumpBoots = 15, kPwUpTwoGuns = 17, kPwUpDivingSuit = 18, kPwUpGasMask = 19, kPwUpCrystalBall = 21, kPwUpDoppleganger = 23, kPwUpReflectShots = 24, kPwUpBeastVision = 25, kPwUpShadowCloakUseless = 26, kPwUpDeliriumShroom = 28, kPwUpGrowShroom = 29, kPwUpShrinkShroom = 30, kPwUpDeathMaskUseless = 31, kPwUpAsbestArmor = 39, kMaxPowerUps = 51, }; native static void PlayIntroMusic(); native static bool OriginalLoadScreen(); // doing it generically would necessitate exporting the tile manage which we do not want. native static void sndStartSample(int resid, int volume, int channel, bool loop = false, int chanflags = 0); native static void sndStartSampleNamed(String sname, int volume, int channel); native static TextureID PowerupIcon(int pwup); native static BloodPlayer GetViewPlayer(); // These are just dummies to make the MP statusbar code compile. static void GetPlayers(Array players) { players.Clear(); players.Push(GetViewPlayer()); } static int getGameType() { return 0; } } struct PACKINFO // not native! { bool isActive; int curAmount; } struct BloodPlayer native { native int GetHealth(); // health is stored in the XSPRITE which cannot be safely exported to scripting at the moment due to pending refactoring. native int powerupCheck(int pwup); //spritetype* pSprite; //XSPRITE* pXSprite; //DUDEINFO* pDudeInfo; //PlayerHorizon horizon; //PlayerAngle angle; native uint8 newWeapon; native int weaponQav; native int qavCallback; native bool isRunning; native int posture; // stand, crouch, swim native int sceneQav; // by NoOne: used to keep qav id native int bobPhase; native int bobAmp; native int bobHeight; native int bobWidth; native int swayPhase; native int swayAmp; native int swayHeight; native int swayWidth; native int nPlayer; // Connect id native int nSprite; native int lifeMode; native int zView; native int zViewVel; native int zWeapon; native int zWeaponVel; native int slope; native bool isUnderwater; native bool hasKey[8]; native int8 hasFlag; native int damageControl[7]; native int8 curWeapon; native int8 nextWeapon; native int weaponTimer; native int weaponState; native int weaponAmmo; //rename native bool hasWeapon[14]; native int weaponMode[14]; native int weaponOrder[2][14]; native int ammoCount[12]; native bool qavLoop; native int fuseTime; native int throwTime; native int throwPower; //native Aim aim; // world native int aimTarget; // aim target sprite native int aimTargetsCount; native short aimTargets[16]; native int deathTime; native int pwUpTime[51]; // kMaxPowerUps native int fragCount; native int fragInfo[8]; native int teamId; native int underwaterTime; native int bubbleTime; native int restTime; native int kickPower; native int laughCount; native bool godMode; native bool fallScream; native bool cantJump; native int packItemTime; // pack timer native int packItemId; // pack id 1: diving suit, 2: crystal ball, 3: beast vision 4: jump boots native PACKINFO packSlots[5]; // at325 [1]: diving suit, [2]: crystal ball, [3]: beast vision [4]: jump boots native int armor[3]; // armor native int voodooTarget; native int flickerEffect; native int tiltEffect; native int visibility; native int painEffect; native int blindEffect; native int chokeEffect; native int handTime; native bool hand; // if true, there is hand start choking the player native int pickupEffect; native bool flashEffect; // if true, reduce pPlayer->visibility counter native int quakeEffect; native int player_par; native int nWaterPal; //POSTURE pPosture[kModeMax][kPostureMax]; };