mirror of
https://git.do.srb2.org/STJr/SRB2.git
synced 2025-03-20 01:43:50 +00:00
* Hive Elementals and Bumblebores, plus associated useful action functions.
* Made Facestabbers take two hits and have associated pain/death animations. No other changes, just wanted to make sure THIS was done. * Move Bubblebuzz-related stuff to go alongside the secret badniks and etc. * MF2_INVERTAIMABLE. Inverts whether P_LookForEnemies can get at; replaces a hardcoded thingy.
This commit is contained in:
parent
8f71e93cee
commit
d0575f7fb0
10 changed files with 640 additions and 337 deletions
459
src/dehacked.c
459
src/dehacked.c
|
@ -1618,206 +1618,209 @@ typedef struct
|
|||
*/
|
||||
static actionpointer_t actionpointers[] =
|
||||
{
|
||||
{{A_Explode}, "A_EXPLODE"},
|
||||
{{A_Pain}, "A_PAIN"},
|
||||
{{A_Fall}, "A_FALL"},
|
||||
{{A_MonitorPop}, "A_MONITORPOP"},
|
||||
{{A_GoldMonitorPop}, "A_GOLDMONITORPOP"},
|
||||
{{A_GoldMonitorRestore}, "A_GOLDMONITORRESTORE"},
|
||||
{{A_GoldMonitorSparkle}, "A_GOLDMONITORSPARKLE"},
|
||||
{{A_Look}, "A_LOOK"},
|
||||
{{A_Chase}, "A_CHASE"},
|
||||
{{A_FaceStabChase}, "A_FACESTABCHASE"},
|
||||
{{A_FaceTarget}, "A_FACETARGET"},
|
||||
{{A_FaceTracer}, "A_FACETRACER"},
|
||||
{{A_Scream}, "A_SCREAM"},
|
||||
{{A_BossDeath}, "A_BOSSDEATH"},
|
||||
{{A_CustomPower}, "A_CUSTOMPOWER"},
|
||||
{{A_GiveWeapon}, "A_GIVEWEAPON"},
|
||||
{{A_RingBox}, "A_RINGBOX"},
|
||||
{{A_Invincibility}, "A_INVINCIBILITY"},
|
||||
{{A_SuperSneakers}, "A_SUPERSNEAKERS"},
|
||||
{{A_BunnyHop}, "A_BUNNYHOP"},
|
||||
{{A_BubbleSpawn}, "A_BUBBLESPAWN"},
|
||||
{{A_FanBubbleSpawn}, "A_FANBUBBLESPAWN"},
|
||||
{{A_BubbleRise}, "A_BUBBLERISE"},
|
||||
{{A_BubbleCheck}, "A_BUBBLECHECK"},
|
||||
{{A_AwardScore}, "A_AWARDSCORE"},
|
||||
{{A_ExtraLife}, "A_EXTRALIFE"},
|
||||
{{A_GiveShield}, "A_GIVESHIELD"},
|
||||
{{A_GravityBox}, "A_GRAVITYBOX"},
|
||||
{{A_ScoreRise}, "A_SCORERISE"},
|
||||
{{A_ParticleSpawn}, "A_PARTICLESPAWN"},
|
||||
{{A_AttractChase}, "A_ATTRACTCHASE"},
|
||||
{{A_DropMine}, "A_DROPMINE"},
|
||||
{{A_FishJump}, "A_FISHJUMP"},
|
||||
{{A_ThrownRing}, "A_THROWNRING"},
|
||||
{{A_SetSolidSteam}, "A_SETSOLIDSTEAM"},
|
||||
{{A_UnsetSolidSteam}, "A_UNSETSOLIDSTEAM"},
|
||||
{{A_SignPlayer}, "A_SIGNPLAYER"},
|
||||
{{A_OverlayThink}, "A_OVERLAYTHINK"},
|
||||
{{A_JetChase}, "A_JETCHASE"},
|
||||
{{A_JetbThink}, "A_JETBTHINK"},
|
||||
{{A_JetgThink}, "A_JETGTHINK"},
|
||||
{{A_JetgShoot}, "A_JETGSHOOT"},
|
||||
{{A_ShootBullet}, "A_SHOOTBULLET"},
|
||||
{{A_MinusDigging}, "A_MINUSDIGGING"},
|
||||
{{A_MinusPopup}, "A_MINUSPOPUP"},
|
||||
{{A_MinusCheck}, "A_MINUSCHECK"},
|
||||
{{A_ChickenCheck}, "A_CHICKENCHECK"},
|
||||
{{A_MouseThink}, "A_MOUSETHINK"},
|
||||
{{A_DetonChase}, "A_DETONCHASE"},
|
||||
{{A_CapeChase}, "A_CAPECHASE"},
|
||||
{{A_RotateSpikeBall}, "A_ROTATESPIKEBALL"},
|
||||
{{A_SlingAppear}, "A_SLINGAPPEAR"},
|
||||
{{A_UnidusBall}, "A_UNIDUSBALL"},
|
||||
{{A_RockSpawn}, "A_ROCKSPAWN"},
|
||||
{{A_SetFuse}, "A_SETFUSE"},
|
||||
{{A_CrawlaCommanderThink}, "A_CRAWLACOMMANDERTHINK"},
|
||||
{{A_SmokeTrailer}, "A_SMOKETRAILER"},
|
||||
{{A_RingExplode}, "A_RINGEXPLODE"},
|
||||
{{A_OldRingExplode}, "A_OLDRINGEXPLODE"},
|
||||
{{A_MixUp}, "A_MIXUP"},
|
||||
{{A_RecyclePowers}, "A_RECYCLEPOWERS"},
|
||||
{{A_Boss1Chase}, "A_BOSS1CHASE"},
|
||||
{{A_FocusTarget}, "A_FOCUSTARGET"},
|
||||
{{A_Boss2Chase}, "A_BOSS2CHASE"},
|
||||
{{A_Boss2Pogo}, "A_BOSS2POGO"},
|
||||
{{A_BossZoom}, "A_BOSSZOOM"},
|
||||
{{A_BossScream}, "A_BOSSSCREAM"},
|
||||
{{A_Boss2TakeDamage}, "A_BOSS2TAKEDAMAGE"},
|
||||
{{A_Boss7Chase}, "A_BOSS7CHASE"},
|
||||
{{A_GoopSplat}, "A_GOOPSPLAT"},
|
||||
{{A_Boss2PogoSFX}, "A_BOSS2POGOSFX"},
|
||||
{{A_Boss2PogoTarget}, "A_BOSS2POGOTARGET"},
|
||||
{{A_BossJetFume}, "A_BOSSJETFUME"},
|
||||
{{A_EggmanBox}, "A_EGGMANBOX"},
|
||||
{{A_TurretFire}, "A_TURRETFIRE"},
|
||||
{{A_SuperTurretFire}, "A_SUPERTURRETFIRE"},
|
||||
{{A_TurretStop}, "A_TURRETSTOP"},
|
||||
{{A_JetJawRoam}, "A_JETJAWROAM"},
|
||||
{{A_JetJawChomp}, "A_JETJAWCHOMP"},
|
||||
{{A_PointyThink}, "A_POINTYTHINK"},
|
||||
{{A_CheckBuddy}, "A_CHECKBUDDY"},
|
||||
{{A_HoodThink}, "A_HOODTHINK"},
|
||||
{{A_ArrowCheck}, "A_ARROWCHECK"},
|
||||
{{A_SnailerThink}, "A_SNAILERTHINK"},
|
||||
{{A_SharpChase}, "A_SHARPCHASE"},
|
||||
{{A_SharpSpin}, "A_SHARPSPIN"},
|
||||
{{A_VultureVtol}, "A_VULTUREVTOL"},
|
||||
{{A_VultureCheck}, "A_VULTURECHECK"},
|
||||
{{A_SkimChase}, "A_SKIMCHASE"},
|
||||
{{A_1upThinker}, "A_1UPTHINKER"},
|
||||
{{A_SkullAttack}, "A_SKULLATTACK"},
|
||||
{{A_LobShot}, "A_LOBSHOT"},
|
||||
{{A_FireShot}, "A_FIRESHOT"},
|
||||
{{A_SuperFireShot}, "A_SUPERFIRESHOT"},
|
||||
{{A_BossFireShot}, "A_BOSSFIRESHOT"},
|
||||
{{A_Boss7FireMissiles}, "A_BOSS7FIREMISSILES"},
|
||||
{{A_Boss1Laser}, "A_BOSS1LASER"},
|
||||
{{A_Boss4Reverse}, "A_BOSS4REVERSE"},
|
||||
{{A_Boss4SpeedUp}, "A_BOSS4SPEEDUP"},
|
||||
{{A_Boss4Raise}, "A_BOSS4RAISE"},
|
||||
{{A_SparkFollow}, "A_SPARKFOLLOW"},
|
||||
{{A_BuzzFly}, "A_BUZZFLY"},
|
||||
{{A_GuardChase}, "A_GUARDCHASE"},
|
||||
{{A_EggShield}, "A_EGGSHIELD"},
|
||||
{{A_SetReactionTime}, "A_SETREACTIONTIME"},
|
||||
{{A_Boss1Spikeballs}, "A_BOSS1SPIKEBALLS"},
|
||||
{{A_Boss3TakeDamage}, "A_BOSS3TAKEDAMAGE"},
|
||||
{{A_Boss3Path}, "A_BOSS3PATH"},
|
||||
{{A_LinedefExecute}, "A_LINEDEFEXECUTE"},
|
||||
{{A_PlaySeeSound}, "A_PLAYSEESOUND"},
|
||||
{{A_PlayAttackSound}, "A_PLAYATTACKSOUND"},
|
||||
{{A_PlayActiveSound}, "A_PLAYACTIVESOUND"},
|
||||
{{A_SpawnObjectAbsolute}, "A_SPAWNOBJECTABSOLUTE"},
|
||||
{{A_SpawnObjectRelative}, "A_SPAWNOBJECTRELATIVE"},
|
||||
{{A_ChangeAngleRelative}, "A_CHANGEANGLERELATIVE"},
|
||||
{{A_ChangeAngleAbsolute}, "A_CHANGEANGLEABSOLUTE"},
|
||||
{{A_PlaySound}, "A_PLAYSOUND"},
|
||||
{{A_FindTarget}, "A_FINDTARGET"},
|
||||
{{A_FindTracer}, "A_FINDTRACER"},
|
||||
{{A_SetTics}, "A_SETTICS"},
|
||||
{{A_SetRandomTics}, "A_SETRANDOMTICS"},
|
||||
{{A_ChangeColorRelative}, "A_CHANGECOLORRELATIVE"},
|
||||
{{A_ChangeColorAbsolute}, "A_CHANGECOLORABSOLUTE"},
|
||||
{{A_MoveRelative}, "A_MOVERELATIVE"},
|
||||
{{A_MoveAbsolute}, "A_MOVEABSOLUTE"},
|
||||
{{A_Thrust}, "A_THRUST"},
|
||||
{{A_ZThrust}, "A_ZTHRUST"},
|
||||
{{A_SetTargetsTarget}, "A_SETTARGETSTARGET"},
|
||||
{{A_SetObjectFlags}, "A_SETOBJECTFLAGS"},
|
||||
{{A_SetObjectFlags2}, "A_SETOBJECTFLAGS2"},
|
||||
{{A_RandomState}, "A_RANDOMSTATE"},
|
||||
{{A_RandomStateRange}, "A_RANDOMSTATERANGE"},
|
||||
{{A_DualAction}, "A_DUALACTION"},
|
||||
{{A_RemoteAction}, "A_REMOTEACTION"},
|
||||
{{A_ToggleFlameJet}, "A_TOGGLEFLAMEJET"},
|
||||
{{A_OrbitNights}, "A_ORBITNIGHTS"},
|
||||
{{A_GhostMe}, "A_GHOSTME"},
|
||||
{{A_SetObjectState}, "A_SETOBJECTSTATE"},
|
||||
{{A_SetObjectTypeState}, "A_SETOBJECTTYPESTATE"},
|
||||
{{A_KnockBack}, "A_KNOCKBACK"},
|
||||
{{A_PushAway}, "A_PUSHAWAY"},
|
||||
{{A_RingDrain}, "A_RINGDRAIN"},
|
||||
{{A_SplitShot}, "A_SPLITSHOT"},
|
||||
{{A_MissileSplit}, "A_MISSILESPLIT"},
|
||||
{{A_MultiShot}, "A_MULTISHOT"},
|
||||
{{A_InstaLoop}, "A_INSTALOOP"},
|
||||
{{A_Custom3DRotate}, "A_CUSTOM3DROTATE"},
|
||||
{{A_SearchForPlayers}, "A_SEARCHFORPLAYERS"},
|
||||
{{A_CheckRandom}, "A_CHECKRANDOM"},
|
||||
{{A_CheckTargetRings}, "A_CHECKTARGETRINGS"},
|
||||
{{A_CheckRings}, "A_CHECKRINGS"},
|
||||
{{A_CheckTotalRings}, "A_CHECKTOTALRINGS"},
|
||||
{{A_CheckHealth}, "A_CHECKHEALTH"},
|
||||
{{A_CheckRange}, "A_CHECKRANGE"},
|
||||
{{A_CheckHeight}, "A_CHECKHEIGHT"},
|
||||
{{A_CheckTrueRange}, "A_CHECKTRUERANGE"},
|
||||
{{A_CheckThingCount}, "A_CHECKTHINGCOUNT"},
|
||||
{{A_CheckAmbush}, "A_CHECKAMBUSH"},
|
||||
{{A_CheckCustomValue}, "A_CHECKCUSTOMVALUE"},
|
||||
{{A_CheckCusValMemo}, "A_CHECKCUSVALMEMO"},
|
||||
{{A_SetCustomValue}, "A_SETCUSTOMVALUE"},
|
||||
{{A_UseCusValMemo}, "A_USECUSVALMEMO"},
|
||||
{{A_RelayCustomValue}, "A_RELAYCUSTOMVALUE"},
|
||||
{{A_CusValAction}, "A_CUSVALACTION"},
|
||||
{{A_ForceStop}, "A_FORCESTOP"},
|
||||
{{A_ForceWin}, "A_FORCEWIN"},
|
||||
{{A_SpikeRetract}, "A_SPIKERETRACT"},
|
||||
{{A_InfoState}, "A_INFOSTATE"},
|
||||
{{A_Repeat}, "A_REPEAT"},
|
||||
{{A_SetScale}, "A_SETSCALE"},
|
||||
{{A_RemoteDamage}, "A_REMOTEDAMAGE"},
|
||||
{{A_HomingChase}, "A_HOMINGCHASE"},
|
||||
{{A_TrapShot}, "A_TRAPSHOT"},
|
||||
{{A_VileTarget}, "A_VILETARGET"},
|
||||
{{A_VileAttack}, "A_VILEATTACK"},
|
||||
{{A_VileFire}, "A_VILEFIRE"},
|
||||
{{A_BrakChase}, "A_BRAKCHASE"},
|
||||
{{A_BrakFireShot}, "A_BRAKFIRESHOT"},
|
||||
{{A_BrakLobShot}, "A_BRAKLOBSHOT"},
|
||||
{{A_NapalmScatter}, "A_NAPALMSCATTER"},
|
||||
{{A_SpawnFreshCopy}, "A_SPAWNFRESHCOPY"},
|
||||
{{A_FlickySpawn}, "A_FLICKYSPAWN"},
|
||||
{{A_FlickyAim}, "A_FLICKYAIM"},
|
||||
{{A_FlickyFly}, "A_FLICKYFLY"},
|
||||
{{A_FlickySoar}, "A_FLICKYSOAR"},
|
||||
{{A_FlickyCoast}, "A_FLICKYCOAST"},
|
||||
{{A_FlickyHop}, "A_FLICKYHOP"},
|
||||
{{A_FlickyFlounder}, "A_FLICKYFLOUNDER"},
|
||||
{{A_FlickyCheck}, "A_FLICKYCHECK"},
|
||||
{{A_FlickyHeightCheck}, "A_FLICKYHEIGHTCHECK"},
|
||||
{{A_FlickyFlutter}, "A_FLICKYFLUTTER"},
|
||||
{{A_FlameParticle}, "A_FLAMEPARTICLE"},
|
||||
{{A_FadeOverlay}, "A_FADEOVERLAY"},
|
||||
{{A_Boss5Jump}, "A_BOSS5JUMP"},
|
||||
{{A_LightBeamReset}, "A_LIGHTBEAMRESET"},
|
||||
{{A_MineExplode}, "A_MINEEXPLODE"},
|
||||
{{A_MineRange}, "A_MINERANGE"},
|
||||
{{A_ConnectToGround}, "A_CONNECTTOGROUND"},
|
||||
{{A_SpawnParticleRelative},"A_SPAWNPARTICLERELATIVE"},
|
||||
{{A_MultiShotDist}, "A_MULTISHOTDIST"},
|
||||
{{A_Explode}, "A_EXPLODE"},
|
||||
{{A_Pain}, "A_PAIN"},
|
||||
{{A_Fall}, "A_FALL"},
|
||||
{{A_MonitorPop}, "A_MONITORPOP"},
|
||||
{{A_GoldMonitorPop}, "A_GOLDMONITORPOP"},
|
||||
{{A_GoldMonitorRestore}, "A_GOLDMONITORRESTORE"},
|
||||
{{A_GoldMonitorSparkle}, "A_GOLDMONITORSPARKLE"},
|
||||
{{A_Look}, "A_LOOK"},
|
||||
{{A_Chase}, "A_CHASE"},
|
||||
{{A_FaceStabChase}, "A_FACESTABCHASE"},
|
||||
{{A_FaceTarget}, "A_FACETARGET"},
|
||||
{{A_FaceTracer}, "A_FACETRACER"},
|
||||
{{A_Scream}, "A_SCREAM"},
|
||||
{{A_BossDeath}, "A_BOSSDEATH"},
|
||||
{{A_CustomPower}, "A_CUSTOMPOWER"},
|
||||
{{A_GiveWeapon}, "A_GIVEWEAPON"},
|
||||
{{A_RingBox}, "A_RINGBOX"},
|
||||
{{A_Invincibility}, "A_INVINCIBILITY"},
|
||||
{{A_SuperSneakers}, "A_SUPERSNEAKERS"},
|
||||
{{A_BunnyHop}, "A_BUNNYHOP"},
|
||||
{{A_BubbleSpawn}, "A_BUBBLESPAWN"},
|
||||
{{A_FanBubbleSpawn}, "A_FANBUBBLESPAWN"},
|
||||
{{A_BubbleRise}, "A_BUBBLERISE"},
|
||||
{{A_BubbleCheck}, "A_BUBBLECHECK"},
|
||||
{{A_AwardScore}, "A_AWARDSCORE"},
|
||||
{{A_ExtraLife}, "A_EXTRALIFE"},
|
||||
{{A_GiveShield}, "A_GIVESHIELD"},
|
||||
{{A_GravityBox}, "A_GRAVITYBOX"},
|
||||
{{A_ScoreRise}, "A_SCORERISE"},
|
||||
{{A_ParticleSpawn}, "A_PARTICLESPAWN"},
|
||||
{{A_AttractChase}, "A_ATTRACTCHASE"},
|
||||
{{A_DropMine}, "A_DROPMINE"},
|
||||
{{A_FishJump}, "A_FISHJUMP"},
|
||||
{{A_ThrownRing}, "A_THROWNRING"},
|
||||
{{A_SetSolidSteam}, "A_SETSOLIDSTEAM"},
|
||||
{{A_UnsetSolidSteam}, "A_UNSETSOLIDSTEAM"},
|
||||
{{A_SignPlayer}, "A_SIGNPLAYER"},
|
||||
{{A_OverlayThink}, "A_OVERLAYTHINK"},
|
||||
{{A_JetChase}, "A_JETCHASE"},
|
||||
{{A_JetbThink}, "A_JETBTHINK"},
|
||||
{{A_JetgThink}, "A_JETGTHINK"},
|
||||
{{A_JetgShoot}, "A_JETGSHOOT"},
|
||||
{{A_ShootBullet}, "A_SHOOTBULLET"},
|
||||
{{A_MinusDigging}, "A_MINUSDIGGING"},
|
||||
{{A_MinusPopup}, "A_MINUSPOPUP"},
|
||||
{{A_MinusCheck}, "A_MINUSCHECK"},
|
||||
{{A_ChickenCheck}, "A_CHICKENCHECK"},
|
||||
{{A_MouseThink}, "A_MOUSETHINK"},
|
||||
{{A_DetonChase}, "A_DETONCHASE"},
|
||||
{{A_CapeChase}, "A_CAPECHASE"},
|
||||
{{A_RotateSpikeBall}, "A_ROTATESPIKEBALL"},
|
||||
{{A_SlingAppear}, "A_SLINGAPPEAR"},
|
||||
{{A_UnidusBall}, "A_UNIDUSBALL"},
|
||||
{{A_RockSpawn}, "A_ROCKSPAWN"},
|
||||
{{A_SetFuse}, "A_SETFUSE"},
|
||||
{{A_CrawlaCommanderThink}, "A_CRAWLACOMMANDERTHINK"},
|
||||
{{A_SmokeTrailer}, "A_SMOKETRAILER"},
|
||||
{{A_RingExplode}, "A_RINGEXPLODE"},
|
||||
{{A_OldRingExplode}, "A_OLDRINGEXPLODE"},
|
||||
{{A_MixUp}, "A_MIXUP"},
|
||||
{{A_RecyclePowers}, "A_RECYCLEPOWERS"},
|
||||
{{A_Boss1Chase}, "A_BOSS1CHASE"},
|
||||
{{A_FocusTarget}, "A_FOCUSTARGET"},
|
||||
{{A_Boss2Chase}, "A_BOSS2CHASE"},
|
||||
{{A_Boss2Pogo}, "A_BOSS2POGO"},
|
||||
{{A_BossZoom}, "A_BOSSZOOM"},
|
||||
{{A_BossScream}, "A_BOSSSCREAM"},
|
||||
{{A_Boss2TakeDamage}, "A_BOSS2TAKEDAMAGE"},
|
||||
{{A_Boss7Chase}, "A_BOSS7CHASE"},
|
||||
{{A_GoopSplat}, "A_GOOPSPLAT"},
|
||||
{{A_Boss2PogoSFX}, "A_BOSS2POGOSFX"},
|
||||
{{A_Boss2PogoTarget}, "A_BOSS2POGOTARGET"},
|
||||
{{A_BossJetFume}, "A_BOSSJETFUME"},
|
||||
{{A_EggmanBox}, "A_EGGMANBOX"},
|
||||
{{A_TurretFire}, "A_TURRETFIRE"},
|
||||
{{A_SuperTurretFire}, "A_SUPERTURRETFIRE"},
|
||||
{{A_TurretStop}, "A_TURRETSTOP"},
|
||||
{{A_JetJawRoam}, "A_JETJAWROAM"},
|
||||
{{A_JetJawChomp}, "A_JETJAWCHOMP"},
|
||||
{{A_PointyThink}, "A_POINTYTHINK"},
|
||||
{{A_CheckBuddy}, "A_CHECKBUDDY"},
|
||||
{{A_HoodThink}, "A_HOODTHINK"},
|
||||
{{A_ArrowCheck}, "A_ARROWCHECK"},
|
||||
{{A_SnailerThink}, "A_SNAILERTHINK"},
|
||||
{{A_SharpChase}, "A_SHARPCHASE"},
|
||||
{{A_SharpSpin}, "A_SHARPSPIN"},
|
||||
{{A_VultureVtol}, "A_VULTUREVTOL"},
|
||||
{{A_VultureCheck}, "A_VULTURECHECK"},
|
||||
{{A_SkimChase}, "A_SKIMCHASE"},
|
||||
{{A_1upThinker}, "A_1UPTHINKER"},
|
||||
{{A_SkullAttack}, "A_SKULLATTACK"},
|
||||
{{A_LobShot}, "A_LOBSHOT"},
|
||||
{{A_FireShot}, "A_FIRESHOT"},
|
||||
{{A_SuperFireShot}, "A_SUPERFIRESHOT"},
|
||||
{{A_BossFireShot}, "A_BOSSFIRESHOT"},
|
||||
{{A_Boss7FireMissiles}, "A_BOSS7FIREMISSILES"},
|
||||
{{A_Boss1Laser}, "A_BOSS1LASER"},
|
||||
{{A_Boss4Reverse}, "A_BOSS4REVERSE"},
|
||||
{{A_Boss4SpeedUp}, "A_BOSS4SPEEDUP"},
|
||||
{{A_Boss4Raise}, "A_BOSS4RAISE"},
|
||||
{{A_SparkFollow}, "A_SPARKFOLLOW"},
|
||||
{{A_BuzzFly}, "A_BUZZFLY"},
|
||||
{{A_GuardChase}, "A_GUARDCHASE"},
|
||||
{{A_EggShield}, "A_EGGSHIELD"},
|
||||
{{A_SetReactionTime}, "A_SETREACTIONTIME"},
|
||||
{{A_Boss1Spikeballs}, "A_BOSS1SPIKEBALLS"},
|
||||
{{A_Boss3TakeDamage}, "A_BOSS3TAKEDAMAGE"},
|
||||
{{A_Boss3Path}, "A_BOSS3PATH"},
|
||||
{{A_LinedefExecute}, "A_LINEDEFEXECUTE"},
|
||||
{{A_PlaySeeSound}, "A_PLAYSEESOUND"},
|
||||
{{A_PlayAttackSound}, "A_PLAYATTACKSOUND"},
|
||||
{{A_PlayActiveSound}, "A_PLAYACTIVESOUND"},
|
||||
{{A_SpawnObjectAbsolute}, "A_SPAWNOBJECTABSOLUTE"},
|
||||
{{A_SpawnObjectRelative}, "A_SPAWNOBJECTRELATIVE"},
|
||||
{{A_ChangeAngleRelative}, "A_CHANGEANGLERELATIVE"},
|
||||
{{A_ChangeAngleAbsolute}, "A_CHANGEANGLEABSOLUTE"},
|
||||
{{A_PlaySound}, "A_PLAYSOUND"},
|
||||
{{A_FindTarget}, "A_FINDTARGET"},
|
||||
{{A_FindTracer}, "A_FINDTRACER"},
|
||||
{{A_SetTics}, "A_SETTICS"},
|
||||
{{A_SetRandomTics}, "A_SETRANDOMTICS"},
|
||||
{{A_ChangeColorRelative}, "A_CHANGECOLORRELATIVE"},
|
||||
{{A_ChangeColorAbsolute}, "A_CHANGECOLORABSOLUTE"},
|
||||
{{A_MoveRelative}, "A_MOVERELATIVE"},
|
||||
{{A_MoveAbsolute}, "A_MOVEABSOLUTE"},
|
||||
{{A_Thrust}, "A_THRUST"},
|
||||
{{A_ZThrust}, "A_ZTHRUST"},
|
||||
{{A_SetTargetsTarget}, "A_SETTARGETSTARGET"},
|
||||
{{A_SetObjectFlags}, "A_SETOBJECTFLAGS"},
|
||||
{{A_SetObjectFlags2}, "A_SETOBJECTFLAGS2"},
|
||||
{{A_RandomState}, "A_RANDOMSTATE"},
|
||||
{{A_RandomStateRange}, "A_RANDOMSTATERANGE"},
|
||||
{{A_DualAction}, "A_DUALACTION"},
|
||||
{{A_RemoteAction}, "A_REMOTEACTION"},
|
||||
{{A_ToggleFlameJet}, "A_TOGGLEFLAMEJET"},
|
||||
{{A_OrbitNights}, "A_ORBITNIGHTS"},
|
||||
{{A_GhostMe}, "A_GHOSTME"},
|
||||
{{A_SetObjectState}, "A_SETOBJECTSTATE"},
|
||||
{{A_SetObjectTypeState}, "A_SETOBJECTTYPESTATE"},
|
||||
{{A_KnockBack}, "A_KNOCKBACK"},
|
||||
{{A_PushAway}, "A_PUSHAWAY"},
|
||||
{{A_RingDrain}, "A_RINGDRAIN"},
|
||||
{{A_SplitShot}, "A_SPLITSHOT"},
|
||||
{{A_MissileSplit}, "A_MISSILESPLIT"},
|
||||
{{A_MultiShot}, "A_MULTISHOT"},
|
||||
{{A_InstaLoop}, "A_INSTALOOP"},
|
||||
{{A_Custom3DRotate}, "A_CUSTOM3DROTATE"},
|
||||
{{A_SearchForPlayers}, "A_SEARCHFORPLAYERS"},
|
||||
{{A_CheckRandom}, "A_CHECKRANDOM"},
|
||||
{{A_CheckTargetRings}, "A_CHECKTARGETRINGS"},
|
||||
{{A_CheckRings}, "A_CHECKRINGS"},
|
||||
{{A_CheckTotalRings}, "A_CHECKTOTALRINGS"},
|
||||
{{A_CheckHealth}, "A_CHECKHEALTH"},
|
||||
{{A_CheckRange}, "A_CHECKRANGE"},
|
||||
{{A_CheckHeight}, "A_CHECKHEIGHT"},
|
||||
{{A_CheckTrueRange}, "A_CHECKTRUERANGE"},
|
||||
{{A_CheckThingCount}, "A_CHECKTHINGCOUNT"},
|
||||
{{A_CheckAmbush}, "A_CHECKAMBUSH"},
|
||||
{{A_CheckCustomValue}, "A_CHECKCUSTOMVALUE"},
|
||||
{{A_CheckCusValMemo}, "A_CHECKCUSVALMEMO"},
|
||||
{{A_SetCustomValue}, "A_SETCUSTOMVALUE"},
|
||||
{{A_UseCusValMemo}, "A_USECUSVALMEMO"},
|
||||
{{A_RelayCustomValue}, "A_RELAYCUSTOMVALUE"},
|
||||
{{A_CusValAction}, "A_CUSVALACTION"},
|
||||
{{A_ForceStop}, "A_FORCESTOP"},
|
||||
{{A_ForceWin}, "A_FORCEWIN"},
|
||||
{{A_SpikeRetract}, "A_SPIKERETRACT"},
|
||||
{{A_InfoState}, "A_INFOSTATE"},
|
||||
{{A_Repeat}, "A_REPEAT"},
|
||||
{{A_SetScale}, "A_SETSCALE"},
|
||||
{{A_RemoteDamage}, "A_REMOTEDAMAGE"},
|
||||
{{A_HomingChase}, "A_HOMINGCHASE"},
|
||||
{{A_TrapShot}, "A_TRAPSHOT"},
|
||||
{{A_VileTarget}, "A_VILETARGET"},
|
||||
{{A_VileAttack}, "A_VILEATTACK"},
|
||||
{{A_VileFire}, "A_VILEFIRE"},
|
||||
{{A_BrakChase}, "A_BRAKCHASE"},
|
||||
{{A_BrakFireShot}, "A_BRAKFIRESHOT"},
|
||||
{{A_BrakLobShot}, "A_BRAKLOBSHOT"},
|
||||
{{A_NapalmScatter}, "A_NAPALMSCATTER"},
|
||||
{{A_SpawnFreshCopy}, "A_SPAWNFRESHCOPY"},
|
||||
{{A_FlickySpawn}, "A_FLICKYSPAWN"},
|
||||
{{A_FlickyAim}, "A_FLICKYAIM"},
|
||||
{{A_FlickyFly}, "A_FLICKYFLY"},
|
||||
{{A_FlickySoar}, "A_FLICKYSOAR"},
|
||||
{{A_FlickyCoast}, "A_FLICKYCOAST"},
|
||||
{{A_FlickyHop}, "A_FLICKYHOP"},
|
||||
{{A_FlickyFlounder}, "A_FLICKYFLOUNDER"},
|
||||
{{A_FlickyCheck}, "A_FLICKYCHECK"},
|
||||
{{A_FlickyHeightCheck}, "A_FLICKYHEIGHTCHECK"},
|
||||
{{A_FlickyFlutter}, "A_FLICKYFLUTTER"},
|
||||
{{A_FlameParticle}, "A_FLAMEPARTICLE"},
|
||||
{{A_FadeOverlay}, "A_FADEOVERLAY"},
|
||||
{{A_Boss5Jump}, "A_BOSS5JUMP"},
|
||||
{{A_LightBeamReset}, "A_LIGHTBEAMRESET"},
|
||||
{{A_MineExplode}, "A_MINEEXPLODE"},
|
||||
{{A_MineRange}, "A_MINERANGE"},
|
||||
{{A_ConnectToGround}, "A_CONNECTTOGROUND"},
|
||||
{{A_SpawnParticleRelative}, "A_SPAWNPARTICLERELATIVE"},
|
||||
{{A_MultiShotDist}, "A_MULTISHOTDIST"},
|
||||
{{A_WhoCaresIfYourSonIsABee},"A_WHOCARESIFYOURSONISABEE"},
|
||||
{{A_ParentTriesToSleep}, "A_PARENTTRIESTOSLEEP"},
|
||||
{{A_CryingToMomma}, "A_CRYINGTOMOMMA"},
|
||||
|
||||
{{NULL}, "NONE"},
|
||||
|
||||
|
@ -3585,10 +3588,6 @@ static const char *const STATE_LIST[] = { // array length left dynamic for sanit
|
|||
"S_RBUZZFLY1",
|
||||
"S_RBUZZFLY2",
|
||||
|
||||
// AquaBuzz
|
||||
"S_BBUZZFLY1",
|
||||
"S_BBUZZFLY2",
|
||||
|
||||
// Jetty-Syn Bomber
|
||||
"S_JETBLOOK1",
|
||||
"S_JETBLOOK2",
|
||||
|
@ -3740,6 +3739,10 @@ static const char *const STATE_LIST[] = { // array length left dynamic for sanit
|
|||
"S_FACESTABBER_CHARGE2",
|
||||
"S_FACESTABBER_CHARGE3",
|
||||
"S_FACESTABBER_CHARGE4",
|
||||
"S_FACESTABBER_PAIN",
|
||||
"S_FACESTABBER_DIE1",
|
||||
"S_FACESTABBER_DIE2",
|
||||
"S_FACESTABBER_DIE3",
|
||||
|
||||
// Egg Guard
|
||||
"S_EGGGUARD_STND",
|
||||
|
@ -5967,6 +5970,32 @@ static const char *const STATE_LIST[] = { // array length left dynamic for sanit
|
|||
"S_NIGHTOPIANHELPER9",
|
||||
|
||||
// Secret badniks and hazards, shhhh
|
||||
"S_HIVEELEMENTAL_LOOK",
|
||||
"S_HIVEELEMENTAL_PREPARE1",
|
||||
"S_HIVEELEMENTAL_PREPARE2",
|
||||
"S_HIVEELEMENTAL_SHOOT1",
|
||||
"S_HIVEELEMENTAL_SHOOT2",
|
||||
"S_HIVEELEMENTAL_DORMANT",
|
||||
"S_HIVEELEMENTAL_PAIN",
|
||||
"S_HIVEELEMENTAL_DIE1",
|
||||
"S_HIVEELEMENTAL_DIE2",
|
||||
"S_HIVEELEMENTAL_DIE3",
|
||||
|
||||
"S_BUMBLEBORE_SPAWN",
|
||||
"S_BUMBLEBORE_LOOK1",
|
||||
"S_BUMBLEBORE_LOOK2",
|
||||
"S_BUMBLEBORE_FLY1",
|
||||
"S_BUMBLEBORE_FLY2",
|
||||
"S_BUMBLEBORE_RAISE",
|
||||
"S_BUMBLEBORE_FALL1",
|
||||
"S_BUMBLEBORE_FALL2",
|
||||
"S_BUMBLEBORE_STUCK1",
|
||||
"S_BUMBLEBORE_STUCK2",
|
||||
"S_BUMBLEBORE_DIE",
|
||||
|
||||
"S_BBUZZFLY1",
|
||||
"S_BBUZZFLY2",
|
||||
|
||||
"S_SMASHSPIKE_FLOAT",
|
||||
"S_SMASHSPIKE_EASE1",
|
||||
"S_SMASHSPIKE_EASE2",
|
||||
|
@ -5976,11 +6005,6 @@ static const char *const STATE_LIST[] = { // array length left dynamic for sanit
|
|||
"S_SMASHSPIKE_RISE1",
|
||||
"S_SMASHSPIKE_RISE2",
|
||||
|
||||
"S_HHZDUST1",
|
||||
"S_HHZDUST2",
|
||||
"S_HHZDUST3",
|
||||
"S_HHZDUST4",
|
||||
|
||||
"S_CACO_LOOK",
|
||||
"S_CACO_WAKE1",
|
||||
"S_CACO_WAKE2",
|
||||
|
@ -6084,6 +6108,11 @@ static const char *const STATE_LIST[] = { // array length left dynamic for sanit
|
|||
"S_WPLD5",
|
||||
"S_WPLD6",
|
||||
|
||||
"S_DUST1",
|
||||
"S_DUST2",
|
||||
"S_DUST3",
|
||||
"S_DUST4",
|
||||
|
||||
"S_ROCKSPAWN",
|
||||
|
||||
"S_ROCKCRUMBLEA",
|
||||
|
@ -6125,7 +6154,6 @@ static const char *const MOBJTYPE_LIST[] = { // array length left dynamic for s
|
|||
"MT_GFZFISH", // Greenflower Fish
|
||||
"MT_GOLDBUZZ",
|
||||
"MT_REDBUZZ",
|
||||
"MT_AQUABUZZ",
|
||||
"MT_JETTBOMBER", // Jetty-Syn Bomber
|
||||
"MT_JETTGUNNER", // Jetty-Syn Gunner
|
||||
"MT_CRAWLACOMMANDER", // Crawla Commander
|
||||
|
@ -6658,8 +6686,12 @@ static const char *const MOBJTYPE_LIST[] = { // array length left dynamic for s
|
|||
"MT_NIGHTOPIANHELPER", // the actual helper object that orbits you
|
||||
|
||||
// Secret badniks and hazards, shhhh
|
||||
"MT_HIVEELEMENTAL",
|
||||
"MT_BUMBLEBORE",
|
||||
|
||||
"MT_BUBBLEBUZZ",
|
||||
|
||||
"MT_SMASHINGSPIKEBALL",
|
||||
"MT_HHZDUST",
|
||||
"MT_CACOLANTERN",
|
||||
"MT_CACOSHARD",
|
||||
"MT_CACOFIRE",
|
||||
|
@ -6688,6 +6720,7 @@ static const char *const MOBJTYPE_LIST[] = { // array length left dynamic for s
|
|||
"MT_SPARK", //spark
|
||||
"MT_EXPLODE", // Robot Explosion
|
||||
"MT_UWEXPLODE", // Underwater Explosion
|
||||
"MT_DUST",
|
||||
"MT_ROCKSPAWNER",
|
||||
"MT_FALLINGROCK",
|
||||
"MT_ROCKCRUMBLE1",
|
||||
|
@ -6759,8 +6792,8 @@ static const char *const MOBJFLAG2_LIST[] = {
|
|||
"SCATTER", // Thrown ring has scatter properties
|
||||
"BEYONDTHEGRAVE", // Source of this missile has died and has since respawned.
|
||||
"SLIDEPUSH", // MF_PUSHABLE that pushes continuously.
|
||||
"CLASSICPUSH", // Drops straight down when object has negative Z.
|
||||
"STANDONME", // While not pushable, stand on me anyway.
|
||||
"CLASSICPUSH", // Drops straight down when object has negative momz.
|
||||
"INVERTAIMABLE", // Flips whether it's targetable by A_LookForEnemies (enemies no, decoys yes)
|
||||
"INFLOAT", // Floating to a height for a move, don't auto float to target's height.
|
||||
"DEBRIS", // Splash ring from explosion ring
|
||||
"NIGHTSPULL", // Attracted from a paraloop
|
||||
|
|
|
@ -174,7 +174,6 @@ light_t *t_lspr[NUMSPRITES] =
|
|||
&lspr[NOLIGHT], // SPR_MNUS
|
||||
&lspr[NOLIGHT], // SPR_SSHL
|
||||
&lspr[NOLIGHT], // SPR_UNID
|
||||
&lspr[NOLIGHT], // SPR_BBUZ
|
||||
|
||||
// Generic Boos Items
|
||||
&lspr[JETLIGHT_L], // SPR_JETF // Boss jet fumes
|
||||
|
@ -489,14 +488,17 @@ light_t *t_lspr[NUMSPRITES] =
|
|||
&lspr[NOLIGHT], // SPR_CAPS
|
||||
|
||||
// Secret badniks and hazards, shhhh
|
||||
&lspr[NOLIGHT], // SPR_FMCE",
|
||||
&lspr[NOLIGHT], // SPR_HMCE",
|
||||
&lspr[NOLIGHT], // SPR_CACO",
|
||||
&lspr[BLUEBALL_L], // SPR_BAL2",
|
||||
&lspr[NOLIGHT], // SPR_SBOB",
|
||||
&lspr[BLUEBALL_L], // SPR_SBFL",
|
||||
&lspr[BLUEBALL_L], // SPR_SBSK",
|
||||
&lspr[NOLIGHT], // SPR_BATT",
|
||||
&lspr[NOLIGHT], // SPR_HIVE
|
||||
&lspr[NOLIGHT], // SPR_BUMB,
|
||||
&lspr[NOLIGHT], // SPR_BBUZ
|
||||
&lspr[NOLIGHT], // SPR_FMCE,
|
||||
&lspr[NOLIGHT], // SPR_HMCE,
|
||||
&lspr[NOLIGHT], // SPR_CACO,
|
||||
&lspr[BLUEBALL_L], // SPR_BAL2,
|
||||
&lspr[NOLIGHT], // SPR_SBOB,
|
||||
&lspr[BLUEBALL_L], // SPR_SBFL,
|
||||
&lspr[BLUEBALL_L], // SPR_SBSK,
|
||||
&lspr[NOLIGHT], // SPR_BATT,
|
||||
|
||||
// Debris
|
||||
&lspr[RINGSPARK_L], // SPR_SPRK
|
||||
|
|
226
src/info.c
226
src/info.c
|
@ -62,7 +62,6 @@ char sprnames[NUMSPRITES + 1][5] =
|
|||
"MNUS", // Minus
|
||||
"SSHL", // Spring Shell
|
||||
"UNID", // Unidus
|
||||
"BBUZ", // AquaBuzz, for Azure Temple
|
||||
|
||||
// Generic Boss Items
|
||||
"JETF", // Boss jet fumes
|
||||
|
@ -383,6 +382,9 @@ char sprnames[NUMSPRITES + 1][5] =
|
|||
"CAPS", // Capsule thingy for NiGHTS
|
||||
|
||||
// Secret badniks and hazards, shhhh
|
||||
"HIVE",
|
||||
"BUMB",
|
||||
"BBUZ",
|
||||
"FMCE",
|
||||
"HMCE",
|
||||
"CACO",
|
||||
|
@ -807,10 +809,6 @@ state_t states[NUMSTATES] =
|
|||
{SPR_RBUZ, 0, 2, {A_BuzzFly}, sfx_buzz4, 0, S_RBUZZFLY2}, // S_RBUZZFLY1
|
||||
{SPR_RBUZ, 1, 2, {A_BuzzFly}, 0, 0, S_RBUZZFLY1}, // S_RBUZZFLY2
|
||||
|
||||
// AquaBuzz
|
||||
{SPR_BBUZ, 0, 2, {NULL}, 0, 0, S_BBUZZFLY2}, // S_BBUZZFLY1
|
||||
{SPR_BBUZ, 1, 2, {NULL}, 0, 0, S_BBUZZFLY1}, // S_BBUZZFLY2
|
||||
|
||||
// Jetty-Syn Bomber
|
||||
{SPR_JETB, 0, 4, {A_Look}, 0, 0, S_JETBLOOK2}, // S_JETBLOOK1
|
||||
{SPR_JETB, 1, 4, {A_Look}, 0, 0, S_JETBLOOK1}, // S_JETBLOOK2
|
||||
|
@ -963,6 +961,10 @@ state_t states[NUMSTATES] =
|
|||
{SPR_CBFS, 6, 0, {A_PlayAttackSound}, 0, 0, S_FACESTABBER_CHARGE3}, // S_FACESTABBER_CHARGE2
|
||||
{SPR_CBFS, 6, 0, {A_FaceTarget}, 0, 0, S_FACESTABBER_CHARGE4}, // S_FACESTABBER_CHARGE3
|
||||
{SPR_CBFS, 7, 35, {A_Thrust}, 20, 1, S_FACESTABBER_STND1}, // S_FACESTABBER_CHARGE4
|
||||
{SPR_CBFS, 0, 35, {A_Pain}, 0, 0, S_FACESTABBER_STND1}, // S_FACESTABBER_PAIN
|
||||
{SPR_CBFS, 0, 2, {A_BossScream}, 1, MT_SONIC3KBOSSEXPLODE, S_FACESTABBER_DIE2}, // S_FACESTABBER_DIE1
|
||||
{SPR_NULL, 0, 2, {A_BossScream}, 1, MT_SONIC3KBOSSEXPLODE, S_FACESTABBER_DIE3}, // S_FACESTABBER_DIE2
|
||||
{SPR_NULL, 0, 0, {A_Repeat}, 7, S_FACESTABBER_DIE1, S_XPLD_FLICKY}, // S_FACESTABBER_DIE3
|
||||
|
||||
// Egg Guard
|
||||
{SPR_SPSH, 0, 1, {A_Look}, 0, 0, S_EGGGUARD_STND}, // S_EGGGUARD_STND
|
||||
|
@ -3257,22 +3259,43 @@ state_t states[NUMSTATES] =
|
|||
{SPR_FL01, 3, 1, {A_OrbitNights}, ANG2*2, 180 | 0x10000, S_NIGHTOPIANHELPER1}, // S_NIGHTOPIANHELPER9
|
||||
|
||||
// Secret badniks and hazards, shhhh
|
||||
{SPR_HIVE, 0, 5, {A_Look}, 1, 1, S_HIVEELEMENTAL_LOOK}, // S_HIVEELEMENTAL_LOOK
|
||||
{SPR_HIVE, 0, 14, {A_PlaySound}, sfx_s3k76, 1, S_HIVEELEMENTAL_PREPARE2}, // S_HIVEELEMENTAL_PREPARE1
|
||||
{SPR_HIVE, 0, 6, {A_PlaySound}, sfx_s3k8c, 1, S_HIVEELEMENTAL_SHOOT1}, // S_HIVEELEMENTAL_PREPARE2
|
||||
{SPR_HIVE, 1, 4, {A_WhoCaresIfYourSonIsABee}, (MT_BUMBLEBORE<<16)|4, (1<<16)|32, S_HIVEELEMENTAL_SHOOT2}, // S_HIVEELEMENTAL_SHOOT1
|
||||
{SPR_HIVE, 2, 2, {NULL}, 0, 0, S_HIVEELEMENTAL_DORMANT}, // S_HIVEELEMENTAL_SHOOT2
|
||||
{SPR_HIVE, 0, 5, {A_ParentTriesToSleep}, S_HIVEELEMENTAL_PREPARE1, 0, S_HIVEELEMENTAL_DORMANT}, // S_HIVEELEMENTAL_DORMANT
|
||||
{SPR_HIVE, 3, 35, {A_Pain}, 0, 0, S_HIVEELEMENTAL_LOOK}, // S_HIVEELEMENTAL_PAIN
|
||||
{SPR_HIVE, 3, 2, {A_BossScream}, 1, MT_SONIC3KBOSSEXPLODE, S_HIVEELEMENTAL_DIE2}, // S_HIVEELEMENTAL_DIE1
|
||||
{SPR_NULL, 0, 2, {A_BossScream}, 1, MT_SONIC3KBOSSEXPLODE, S_HIVEELEMENTAL_DIE3}, // S_HIVEELEMENTAL_DIE2
|
||||
{SPR_NULL, 0, 0, {A_Repeat}, 7, S_HIVEELEMENTAL_DIE1, S_XPLD_FLICKY}, // S_HIVEELEMENTAL_DIE3
|
||||
|
||||
{SPR_BUMB, 1, 10, {NULL}, 0, 0, S_BUMBLEBORE_LOOK1}, // S_BUMBLEBORE_SPAWN
|
||||
{SPR_BUMB, 0, 4, {A_Look}, 1, 1, S_BUMBLEBORE_LOOK2}, // S_BUMBLEBORE_LOOK1
|
||||
{SPR_BUMB, 1, 4, {A_Look}, 1, 1, S_BUMBLEBORE_LOOK1}, // S_BUMBLEBORE_LOOK2
|
||||
{SPR_BUMB, 0, 4, {A_JetbThink}, 0, 0, S_BUMBLEBORE_FLY2}, // S_BUMBLEBORE_FLY1
|
||||
{SPR_BUMB, 1, 4, {A_JetbThink}, 0, 0, S_BUMBLEBORE_FLY1}, // S_BUMBLEBORE_FLY2
|
||||
{SPR_BUMB, 2|FF_FULLBRIGHT, 12, {A_ZThrust}, 4, (1<<16)|1, S_BUMBLEBORE_FALL1}, // S_BUMBLEBORE_RAISE
|
||||
{SPR_BUMB, 2|FF_FULLBRIGHT, 0, {A_ZThrust}, -8, (1<<16)|1, S_BUMBLEBORE_FALL2}, // S_BUMBLEBORE_FALL1
|
||||
{SPR_BUMB, 2|FF_FULLBRIGHT, 300, {NULL}, 0, 0, S_BUMBLEBORE_DIE}, // S_BUMBLEBORE_FALL2
|
||||
{SPR_BUMB, 4, 3, {A_MultiShotDist}, (MT_DUST<<16)|6, -40, S_BUMBLEBORE_STUCK2}, // S_BUMBLEBORE_STUCK1
|
||||
{SPR_BUMB, 5, 120, {NULL}, 0, 0, S_BUMBLEBORE_DIE}, // S_BUMBLEBORE_STUCK2
|
||||
{SPR_BUMB, 5, 0, {A_CryingToMomma}, 0, 0, S_XPLD1}, // S_BUMBLEBORE_DIE
|
||||
|
||||
{SPR_BBUZ, 0, 2, {NULL}, 0, 0, S_BBUZZFLY2}, // S_BBUZZFLY1
|
||||
{SPR_BBUZ, 1, 2, {NULL}, 0, 0, S_BBUZZFLY1}, // S_BBUZZFLY2
|
||||
|
||||
{SPR_FMCE, 0, 20, {NULL}, 0, 0, S_SMASHSPIKE_EASE1}, // S_SMASHSPIKE_FLOAT
|
||||
{SPR_FMCE, 0, 4, {A_ZThrust}, 4, (1<<16)|1, S_SMASHSPIKE_EASE2}, // S_SMASHSPIKE_EASE1
|
||||
{SPR_FMCE, 0, 4, {A_ZThrust}, 0, (1<<16)|1, S_SMASHSPIKE_FALL}, // S_SMASHSPIKE_EASE1
|
||||
{SPR_FMCE, 0, 2, {A_ZThrust}, -6, (1<<16)|1, S_SMASHSPIKE_FALL}, // S_SMASHSPIKE_FALL
|
||||
{SPR_FMCE, 1, 2, {A_MultiShotDist}, (MT_HHZDUST<<16)|10, -48, S_SMASHSPIKE_STOMP2}, // S_SMASHSPIKE_STOMP1
|
||||
{SPR_FMCE, 1, 2, {A_MultiShotDist}, (MT_DUST<<16)|10, -48, S_SMASHSPIKE_STOMP2}, // S_SMASHSPIKE_STOMP1
|
||||
{SPR_FMCE, 2, 14, {NULL}, 0, 0, S_SMASHSPIKE_RISE1}, // S_SMASHSPIKE_STOMP2
|
||||
{SPR_FMCE, 1, 2, {NULL}, 0, 0, S_SMASHSPIKE_RISE2}, // S_SMASHSPIKE_RISE1
|
||||
{SPR_FMCE, 0, 2, {A_ZThrust}, 6, (1<<16)|1, S_SMASHSPIKE_RISE2}, // S_SMASHSPIKE_RISE2
|
||||
|
||||
{SPR_DUST, FF_TRANS40, 4, {NULL}, 0, 0, S_HHZDUST2}, // S_HHZDUST1
|
||||
{SPR_DUST, 1|FF_TRANS50, 5, {NULL}, 0, 0, S_HHZDUST3}, // S_HHZDUST2
|
||||
{SPR_DUST, 2|FF_TRANS60, 3, {NULL}, 0, 0, S_HHZDUST4}, // S_HHZDUST3
|
||||
{SPR_DUST, 3|FF_TRANS70, 2, {NULL}, 0, 0, S_NULL}, // S_HHZDUST4
|
||||
|
||||
{SPR_CACO, 0, 5, {A_Look}, (1100<<16)|1, 0, S_CACO_LOOK}, // S_CACO_LOOK
|
||||
{SPR_CACO, 1, 0, {A_MultiShotDist}, (MT_HHZDUST<<16)|7, -48, S_CACO_WAKE2}, // S_CACO_WAKE1
|
||||
{SPR_CACO, 1, 0, {A_MultiShotDist}, (MT_DUST<<16)|7, -48, S_CACO_WAKE2}, // S_CACO_WAKE1
|
||||
{SPR_CACO, 1, 10, {A_ZThrust}, 4, (1<<16)|1, S_CACO_WAKE3}, // S_CACO_WAKE2
|
||||
{SPR_CACO, 2, 8, {A_ZThrust}, 2, (1<<16)|1, S_CACO_WAKE4}, // S_CACO_WAKE3
|
||||
{SPR_CACO, 2, 4, {A_ZThrust}, 0, (1<<16)|1, S_CACO_ROAR}, // S_CACO_WAKE4
|
||||
|
@ -3319,7 +3342,7 @@ state_t states[NUMSTATES] =
|
|||
{SPR_SBFL, FF_FULLBRIGHT, 2, {NULL}, 0, 0, S_NULL}, // S_SPINBOBERT_FIRE_TRAIL3
|
||||
|
||||
{SPR_HBAT, 0, 5, {A_Look}, (900<<16)|1, 0, S_HANGSTER_LOOK}, // S_HANGSTER_LOOK
|
||||
{SPR_HBAT, 1, 0, {A_MultiShotDist}, (MT_HHZDUST<<16)|10, -34, S_HANGSTER_SWOOP2}, // S_HANGSTER_SWOOP1
|
||||
{SPR_HBAT, 1, 0, {A_MultiShotDist}, (MT_DUST<<16)|10, -34, S_HANGSTER_SWOOP2}, // S_HANGSTER_SWOOP1
|
||||
{SPR_HBAT, 1, 2, {A_ZThrust}, -8, (1<<16)|1, S_HANGSTER_SWOOP2}, // S_HANGSTER_SWOOP2
|
||||
{SPR_HBAT, 1, 6, {A_ZThrust}, -5, (1<<16), S_HANGSTER_ARC2}, // S_HANGSTER_ARC1
|
||||
{SPR_HBAT, 1, 5, {A_ZThrust}, -2, (1<<16), S_HANGSTER_ARC3}, // S_HANGSTER_ARC2
|
||||
|
@ -3376,6 +3399,11 @@ state_t states[NUMSTATES] =
|
|||
{SPR_BOM4, 4, 3, {NULL}, 0, 0, S_WPLD6}, // S_WPLD5
|
||||
{SPR_BOM4, 5, 3, {NULL}, 0, 0, S_NULL}, // S_WPLD6
|
||||
|
||||
{SPR_DUST, FF_TRANS40, 4, {NULL}, 0, 0, S_DUST2}, // S_DUST1
|
||||
{SPR_DUST, 1|FF_TRANS50, 5, {NULL}, 0, 0, S_DUST3}, // S_DUST2
|
||||
{SPR_DUST, 2|FF_TRANS60, 3, {NULL}, 0, 0, S_DUST4}, // S_DUST3
|
||||
{SPR_DUST, 3|FF_TRANS70, 2, {NULL}, 0, 0, S_NULL}, // S_DUST4
|
||||
|
||||
{SPR_NULL, 0, 1, {A_RockSpawn}, 0, 0, S_ROCKSPAWN}, // S_ROCKSPAWN
|
||||
|
||||
{SPR_ROIA, FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 4, 2, S_ROCKCRUMBLEA}, // S_ROCKCRUMBLEA
|
||||
|
@ -3672,33 +3700,6 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
|||
S_NULL // raisestate
|
||||
},
|
||||
|
||||
{ // MT_AQUABUZZ
|
||||
124, // doomednum
|
||||
S_BBUZZFLY1, // spawnstate
|
||||
1, // spawnhealth
|
||||
S_BBUZZFLY1, // seestate
|
||||
sfx_None, // seesound
|
||||
2, // reactiontime
|
||||
sfx_None, // attacksound
|
||||
S_NULL, // painstate
|
||||
TICRATE, // painchance
|
||||
sfx_None, // painsound
|
||||
S_NULL, // meleestate
|
||||
S_NULL, // missilestate
|
||||
S_XPLD_FLICKY, // deathstate
|
||||
S_NULL, // xdeathstate
|
||||
sfx_pop, // deathsound
|
||||
6*FRACUNIT, // speed
|
||||
20*FRACUNIT, // radius
|
||||
24*FRACUNIT, // height
|
||||
0, // display offset
|
||||
100, // mass
|
||||
0, // damage
|
||||
sfx_gbeep, // activesound
|
||||
MF_SLIDEME|MF_ENEMY|MF_SPECIAL|MF_SHOOTABLE|MF_NOGRAVITY, // flags
|
||||
S_NULL // raisestate
|
||||
},
|
||||
|
||||
{ // MT_JETTBOMBER
|
||||
105, // doomednum
|
||||
S_JETBLOOK1, // spawnstate
|
||||
|
@ -4080,19 +4081,19 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
|||
{ // MT_FACESTABBER
|
||||
118, // doomednum
|
||||
S_FACESTABBER_STND1, // spawnstate
|
||||
1, // spawnhealth
|
||||
2, // spawnhealth
|
||||
S_FACESTABBER_STND1, // seestate
|
||||
sfx_None, // seesound
|
||||
35, // reactiontime
|
||||
sfx_None, // attacksound
|
||||
S_NULL, // painstate
|
||||
S_FACESTABBER_PAIN, // painstate
|
||||
0, // painchance
|
||||
sfx_None, // painsound
|
||||
sfx_dmpain, // painsound
|
||||
S_FACESTABBER_CHARGE1, // meleestate
|
||||
S_NULL, // missilestate
|
||||
S_XPLD_FLICKY, // deathstate
|
||||
S_FACESTABBER_DIE1, // deathstate
|
||||
S_NULL, // xdeathstate
|
||||
sfx_pop, // deathsound
|
||||
sfx_cybdth, // deathsound
|
||||
3, // speed
|
||||
32*FRACUNIT, // radius
|
||||
64*FRACUNIT, // height
|
||||
|
@ -15642,6 +15643,87 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
|||
S_NULL // raisestate
|
||||
},
|
||||
|
||||
{ // MT_HIVEELEMENTAL
|
||||
3190, // doomednum
|
||||
S_HIVEELEMENTAL_LOOK, // spawnstate
|
||||
2, // spawnhealth
|
||||
S_HIVEELEMENTAL_PREPARE1, // seestate
|
||||
sfx_s3k74, // seesound
|
||||
0, // reactiontime
|
||||
sfx_s3k91, // attacksound
|
||||
S_HIVEELEMENTAL_PAIN, // painstate
|
||||
0, // painchance
|
||||
sfx_dmpain, // painsound
|
||||
S_NULL, // meleestate
|
||||
S_NULL, // missilestate
|
||||
S_HIVEELEMENTAL_DIE1, // deathstate
|
||||
S_NULL, // xdeathstate
|
||||
sfx_cybdth, // deathsound
|
||||
6*FRACUNIT, // speed
|
||||
30*FRACUNIT, // radius
|
||||
80*FRACUNIT, // height
|
||||
0, // display offset
|
||||
100, // mass
|
||||
0, // damage
|
||||
sfx_s3k72, // activesound
|
||||
MF_SPECIAL|MF_SHOOTABLE|MF_ENEMY, // flags
|
||||
S_NULL // raisestate
|
||||
},
|
||||
|
||||
{ // MT_BUMBLEBORE
|
||||
3191, // doomednum
|
||||
S_BUMBLEBORE_SPAWN, // spawnstate
|
||||
0, // spawnhealth -- this is how you do drones...
|
||||
S_BUMBLEBORE_FLY1, // seestate
|
||||
sfx_s3k8e, // seesound
|
||||
2, // reactiontime
|
||||
sfx_s3k9e, // attacksound
|
||||
S_BUMBLEBORE_STUCK1, // painstate
|
||||
0, // painchance
|
||||
sfx_None, // painsound
|
||||
S_BUMBLEBORE_RAISE, // meleestate
|
||||
S_NULL, // missilestate
|
||||
S_BUMBLEBORE_DIE, // deathstate
|
||||
S_NULL, // xdeathstate
|
||||
sfx_pop, // deathsound
|
||||
4*FRACUNIT, // speed
|
||||
16*FRACUNIT, // radius
|
||||
32*FRACUNIT, // height
|
||||
0, // display offset
|
||||
100, // mass
|
||||
0, // damage
|
||||
sfx_None, // activesound
|
||||
MF_SPECIAL|MF_SHOOTABLE|MF_ENEMY|MF_NOGRAVITY|MF_SLIDEME, // flags
|
||||
S_NULL // raisestate
|
||||
},
|
||||
|
||||
{ // MT_BUBBLEBUZZ
|
||||
124, // doomednum
|
||||
S_BBUZZFLY1, // spawnstate
|
||||
1, // spawnhealth
|
||||
S_BBUZZFLY1, // seestate
|
||||
sfx_None, // seesound
|
||||
2, // reactiontime
|
||||
sfx_None, // attacksound
|
||||
S_NULL, // painstate
|
||||
TICRATE, // painchance
|
||||
sfx_None, // painsound
|
||||
S_NULL, // meleestate
|
||||
S_NULL, // missilestate
|
||||
S_XPLD_FLICKY, // deathstate
|
||||
S_NULL, // xdeathstate
|
||||
sfx_pop, // deathsound
|
||||
6*FRACUNIT, // speed
|
||||
20*FRACUNIT, // radius
|
||||
24*FRACUNIT, // height
|
||||
0, // display offset
|
||||
100, // mass
|
||||
0, // damage
|
||||
sfx_gbeep, // activesound
|
||||
MF_SLIDEME|MF_ENEMY|MF_SPECIAL|MF_SHOOTABLE|MF_NOGRAVITY, // flags
|
||||
S_NULL // raisestate
|
||||
},
|
||||
|
||||
{ // MT_SMASHINGSPIKEBALL
|
||||
3001, // doomednum
|
||||
S_SMASHSPIKE_FLOAT, // spawnstate
|
||||
|
@ -15669,33 +15751,6 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
|||
S_NULL // raisestate
|
||||
},
|
||||
|
||||
{ // MT_HHZDUST
|
||||
-1, // doomednum
|
||||
S_HHZDUST1, // spawnstate
|
||||
1000, // spawnhealth
|
||||
S_NULL, // seestate
|
||||
sfx_None, // seesound
|
||||
8, // reactiontime
|
||||
sfx_None, // attacksound
|
||||
S_NULL, // painstate
|
||||
0, // painchance
|
||||
sfx_None, // painsound
|
||||
S_NULL, // meleestate
|
||||
S_NULL, // missilestate
|
||||
S_NULL, // deathstate
|
||||
S_NULL, // xdeathstate
|
||||
sfx_None, // deathsound
|
||||
3*FRACUNIT, // speed
|
||||
FRACUNIT, // radius
|
||||
FRACUNIT, // height
|
||||
0, // display offset
|
||||
4, // mass
|
||||
0, // damage
|
||||
sfx_None, // activesound
|
||||
MF_NOBLOCKMAP|MF_NOGRAVITY|MF_NOCLIPHEIGHT|MF_NOCLIP, // flags
|
||||
S_NULL // raisestate
|
||||
},
|
||||
|
||||
{ // MT_CACOLANTERN
|
||||
3102, // doomednum
|
||||
S_CACO_LOOK, // spawnstate
|
||||
|
@ -16293,6 +16348,33 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
|||
S_NULL // raisestate
|
||||
},
|
||||
|
||||
{ // MT_DUST
|
||||
-1, // doomednum
|
||||
S_DUST1, // spawnstate
|
||||
1000, // spawnhealth
|
||||
S_NULL, // seestate
|
||||
sfx_None, // seesound
|
||||
8, // reactiontime
|
||||
sfx_None, // attacksound
|
||||
S_NULL, // painstate
|
||||
0, // painchance
|
||||
sfx_None, // painsound
|
||||
S_NULL, // meleestate
|
||||
S_NULL, // missilestate
|
||||
S_NULL, // deathstate
|
||||
S_NULL, // xdeathstate
|
||||
sfx_None, // deathsound
|
||||
3*FRACUNIT, // speed
|
||||
FRACUNIT, // radius
|
||||
FRACUNIT, // height
|
||||
0, // display offset
|
||||
4, // mass
|
||||
0, // damage
|
||||
sfx_None, // activesound
|
||||
MF_NOBLOCKMAP|MF_NOGRAVITY|MF_NOCLIPHEIGHT|MF_NOCLIP, // flags
|
||||
S_NULL // raisestate
|
||||
},
|
||||
|
||||
{ // MT_ROCKSPAWNER
|
||||
1202, // doomednum
|
||||
S_ROCKSPAWN, // spawnstate
|
||||
|
|
62
src/info.h
62
src/info.h
|
@ -224,6 +224,9 @@ void A_MineRange();
|
|||
void A_ConnectToGround();
|
||||
void A_SpawnParticleRelative();
|
||||
void A_MultiShotDist();
|
||||
void A_WhoCaresIfYourSonIsABee();
|
||||
void A_ParentTriesToSleep();
|
||||
void A_CryingToMomma();
|
||||
|
||||
// ratio of states to sprites to mobj types is roughly 6 : 1 : 1
|
||||
#define NUMMOBJFREESLOTS 256
|
||||
|
@ -266,7 +269,6 @@ typedef enum sprite
|
|||
SPR_MNUS, // Minus
|
||||
SPR_SSHL, // Spring Shell
|
||||
SPR_UNID, // Unidus
|
||||
SPR_BBUZ, // AquaBuzz, for Azure Temple
|
||||
|
||||
// Generic Boss Items
|
||||
SPR_JETF, // Boss jet fumes
|
||||
|
@ -587,6 +589,9 @@ typedef enum sprite
|
|||
SPR_CAPS, // Capsule thingy for NiGHTS
|
||||
|
||||
// Secret badniks and hazards, shhhh
|
||||
SPR_HIVE,
|
||||
SPR_BUMB,
|
||||
SPR_BBUZ,
|
||||
SPR_FMCE,
|
||||
SPR_HMCE,
|
||||
SPR_CACO,
|
||||
|
@ -920,10 +925,6 @@ typedef enum state
|
|||
S_RBUZZFLY1,
|
||||
S_RBUZZFLY2,
|
||||
|
||||
// AquaBuzz
|
||||
S_BBUZZFLY1,
|
||||
S_BBUZZFLY2,
|
||||
|
||||
// Jetty-Syn Bomber
|
||||
S_JETBLOOK1,
|
||||
S_JETBLOOK2,
|
||||
|
@ -1075,6 +1076,10 @@ typedef enum state
|
|||
S_FACESTABBER_CHARGE2,
|
||||
S_FACESTABBER_CHARGE3,
|
||||
S_FACESTABBER_CHARGE4,
|
||||
S_FACESTABBER_PAIN,
|
||||
S_FACESTABBER_DIE1,
|
||||
S_FACESTABBER_DIE2,
|
||||
S_FACESTABBER_DIE3,
|
||||
|
||||
// Egg Guard
|
||||
S_EGGGUARD_STND,
|
||||
|
@ -3304,6 +3309,32 @@ typedef enum state
|
|||
S_NIGHTOPIANHELPER9,
|
||||
|
||||
// Secret badniks and hazards, shhhh
|
||||
S_HIVEELEMENTAL_LOOK,
|
||||
S_HIVEELEMENTAL_PREPARE1,
|
||||
S_HIVEELEMENTAL_PREPARE2,
|
||||
S_HIVEELEMENTAL_SHOOT1,
|
||||
S_HIVEELEMENTAL_SHOOT2,
|
||||
S_HIVEELEMENTAL_DORMANT,
|
||||
S_HIVEELEMENTAL_PAIN,
|
||||
S_HIVEELEMENTAL_DIE1,
|
||||
S_HIVEELEMENTAL_DIE2,
|
||||
S_HIVEELEMENTAL_DIE3,
|
||||
|
||||
S_BUMBLEBORE_SPAWN,
|
||||
S_BUMBLEBORE_LOOK1,
|
||||
S_BUMBLEBORE_LOOK2,
|
||||
S_BUMBLEBORE_FLY1,
|
||||
S_BUMBLEBORE_FLY2,
|
||||
S_BUMBLEBORE_RAISE,
|
||||
S_BUMBLEBORE_FALL1,
|
||||
S_BUMBLEBORE_FALL2,
|
||||
S_BUMBLEBORE_STUCK1,
|
||||
S_BUMBLEBORE_STUCK2,
|
||||
S_BUMBLEBORE_DIE,
|
||||
|
||||
S_BBUZZFLY1,
|
||||
S_BBUZZFLY2,
|
||||
|
||||
S_SMASHSPIKE_FLOAT,
|
||||
S_SMASHSPIKE_EASE1,
|
||||
S_SMASHSPIKE_EASE2,
|
||||
|
@ -3313,11 +3344,6 @@ typedef enum state
|
|||
S_SMASHSPIKE_RISE1,
|
||||
S_SMASHSPIKE_RISE2,
|
||||
|
||||
S_HHZDUST1,
|
||||
S_HHZDUST2,
|
||||
S_HHZDUST3,
|
||||
S_HHZDUST4,
|
||||
|
||||
S_CACO_LOOK,
|
||||
S_CACO_WAKE1,
|
||||
S_CACO_WAKE2,
|
||||
|
@ -3421,6 +3447,11 @@ typedef enum state
|
|||
S_WPLD5,
|
||||
S_WPLD6,
|
||||
|
||||
S_DUST1,
|
||||
S_DUST2,
|
||||
S_DUST3,
|
||||
S_DUST4,
|
||||
|
||||
S_ROCKSPAWN,
|
||||
|
||||
S_ROCKCRUMBLEA,
|
||||
|
@ -3482,7 +3513,6 @@ typedef enum mobj_type
|
|||
MT_GFZFISH, // Greenflower Fish
|
||||
MT_GOLDBUZZ,
|
||||
MT_REDBUZZ,
|
||||
MT_AQUABUZZ, // AquaBuzz for ATZ
|
||||
MT_JETTBOMBER, // Jetty-Syn Bomber
|
||||
MT_JETTGUNNER, // Jetty-Syn Gunner
|
||||
MT_CRAWLACOMMANDER, // Crawla Commander
|
||||
|
@ -4015,17 +4045,18 @@ typedef enum mobj_type
|
|||
MT_NIGHTOPIANHELPER, // the actual helper object that orbits you
|
||||
|
||||
// Secret badniks and hazards, shhhh
|
||||
MT_SMASHINGSPIKEBALL,
|
||||
MT_HHZDUST,
|
||||
MT_HIVEELEMENTAL,
|
||||
MT_BUMBLEBORE,
|
||||
|
||||
MT_BUBBLEBUZZ,
|
||||
|
||||
MT_SMASHINGSPIKEBALL,
|
||||
MT_CACOLANTERN,
|
||||
MT_CACOSHARD,
|
||||
MT_CACOFIRE,
|
||||
|
||||
MT_SPINBOBERT,
|
||||
MT_SPINBOBERT_FIRE1,
|
||||
MT_SPINBOBERT_FIRE2,
|
||||
|
||||
MT_HANGSTER,
|
||||
|
||||
// Utility Objects
|
||||
|
@ -4048,6 +4079,7 @@ typedef enum mobj_type
|
|||
MT_SPARK, //spark
|
||||
MT_EXPLODE, // Robot Explosion
|
||||
MT_UWEXPLODE, // Underwater Explosion
|
||||
MT_DUST,
|
||||
MT_ROCKSPAWNER,
|
||||
MT_FALLINGROCK,
|
||||
MT_ROCKCRUMBLE1,
|
||||
|
|
120
src/p_enemy.c
120
src/p_enemy.c
|
@ -252,6 +252,9 @@ void A_MineRange(mobj_t *actor);
|
|||
void A_ConnectToGround(mobj_t *actor);
|
||||
void A_SpawnParticleRelative(mobj_t *actor);
|
||||
void A_MultiShotDist(mobj_t *actor);
|
||||
void A_WhoCaresIfYourSonIsABee(mobj_t *actor);
|
||||
void A_ParentTriesToSleep(mobj_t *actor);
|
||||
void A_CryingToMomma(mobj_t *actor);
|
||||
|
||||
//
|
||||
// ENEMY THINKING
|
||||
|
@ -4153,7 +4156,8 @@ void A_JetbThink(mobj_t *actor)
|
|||
{
|
||||
A_JetChase(actor);
|
||||
// check for melee attack
|
||||
if ((actor->z > (actor->floorz + FixedMul((32<<FRACBITS), actor->scale)))
|
||||
if (actor->info->raisestate
|
||||
&& (actor->z > (actor->floorz + FixedMul((32<<FRACBITS), actor->scale)))
|
||||
&& P_JetbCheckMeleeRange(actor) && !actor->reactiontime
|
||||
&& (actor->target->z >= actor->floorz))
|
||||
{
|
||||
|
@ -10851,7 +10855,7 @@ void A_SpawnParticleRelative(mobj_t *actor)
|
|||
x = (INT16)(locvar1>>16);
|
||||
y = (INT16)(locvar1&65535);
|
||||
z = (INT16)(locvar2>>16);
|
||||
state = (mobjtype_t)(locvar2&65535);
|
||||
state = (statenum_t)(locvar2&65535);
|
||||
|
||||
// Spawn objects correctly in reverse gravity.
|
||||
// NOTE: Doing actor->z + actor->height is the bottom of the object while the object has reverse gravity. - Flame
|
||||
|
@ -10872,10 +10876,8 @@ void A_SpawnParticleRelative(mobj_t *actor)
|
|||
//
|
||||
// Description: Spawns multiple shots based on player proximity
|
||||
//
|
||||
// var1:
|
||||
// same as A_MultiShot
|
||||
// var2:
|
||||
// same as A_MultiShot
|
||||
// var1 = same as A_MultiShot
|
||||
// var2 = same as A_MultiShot
|
||||
//
|
||||
void A_MultiShotDist(mobj_t *actor)
|
||||
{
|
||||
|
@ -10902,3 +10904,109 @@ void A_MultiShotDist(mobj_t *actor)
|
|||
var2 = locvar2;
|
||||
A_MultiShot(actor);
|
||||
}
|
||||
|
||||
// Function: A_WhoCaresIfYourSonIsABee
|
||||
//
|
||||
// Description: Makes a child object, storing the number of created children in the parent's extravalue1.
|
||||
//
|
||||
// var1 = mobjtype of child
|
||||
// var2 >> 16 = mobjtype of child
|
||||
// var2 & 65535 = vertical momentum
|
||||
// var2:
|
||||
// var2 >> 16 = forward offset
|
||||
// var2 & 65535 = vertical offset
|
||||
//
|
||||
void A_WhoCaresIfYourSonIsABee(mobj_t *actor)
|
||||
{
|
||||
INT32 locvar1 = var1;
|
||||
INT32 locvar2 = var2;
|
||||
fixed_t foffsetx;
|
||||
fixed_t foffsety;
|
||||
mobj_t *son;
|
||||
#ifdef HAVE_BLUA
|
||||
if (LUA_CallAction("A_WhoCaresIfYourSonIsABee", actor))
|
||||
return;
|
||||
#endif
|
||||
|
||||
A_FaceTarget(actor);
|
||||
|
||||
if (actor->extravalue1)
|
||||
actor->extravalue1--;
|
||||
|
||||
if (actor->info->attacksound)
|
||||
S_StartSound(actor, actor->info->attacksound);
|
||||
|
||||
foffsetx = P_ReturnThrustX(actor, actor->angle, FixedMul((locvar2 >> 16)*FRACUNIT, actor->scale));
|
||||
foffsety = P_ReturnThrustY(actor, actor->angle, FixedMul((locvar2 >> 16)*FRACUNIT, actor->scale));
|
||||
|
||||
if (!(son = P_SpawnMobjFromMobj(actor, foffsetx, foffsety, (locvar2&65535)*FRACUNIT, (mobjtype_t)(locvar1 >> 16))))
|
||||
return;
|
||||
|
||||
P_SetObjectMomZ(son, (locvar1 & 65535)<<FRACBITS, true);
|
||||
|
||||
P_SetTarget(&son->tracer, actor);
|
||||
P_SetTarget(&son->target, actor->target);
|
||||
}
|
||||
|
||||
// Function: A_ParentTriesToSleep
|
||||
//
|
||||
// Description: If extravalue1 is less than or equal to var1, go to var2.
|
||||
//
|
||||
// var1 = state to go to when extravalue1
|
||||
// var2 = unused
|
||||
//
|
||||
void A_ParentTriesToSleep(mobj_t *actor)
|
||||
{
|
||||
INT32 locvar1 = var1;
|
||||
//INT32 locvar2 = var2;
|
||||
#ifdef HAVE_BLUA
|
||||
if (LUA_CallAction("A_ParentTriesToSleep", actor))
|
||||
return;
|
||||
#endif
|
||||
|
||||
if (actor->extravalue1)
|
||||
{
|
||||
if (actor->info->seesound)
|
||||
S_StartSound(actor, actor->info->seesound);
|
||||
actor->reactiontime = 0;
|
||||
P_SetMobjState(actor, locvar1);
|
||||
}
|
||||
else if (!actor->reactiontime)
|
||||
{
|
||||
actor->reactiontime = 1;
|
||||
if (actor->info->activesound) // more like INactivesound doy hoy hoy
|
||||
S_StartSound(actor, actor->info->activesound);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Function: A_CryingToMomma
|
||||
//
|
||||
// Description: If you're a child, let your parent know something's happened to you through extravalue1. Also, prepare to die.
|
||||
//
|
||||
// var1 = unused
|
||||
// var2 = unused
|
||||
//
|
||||
void A_CryingToMomma(mobj_t *actor)
|
||||
{
|
||||
//INT32 locvar1 = var1;
|
||||
//INT32 locvar2 = var2;
|
||||
#ifdef HAVE_BLUA
|
||||
if (LUA_CallAction("A_CryingToMomma", actor))
|
||||
return;
|
||||
#endif
|
||||
|
||||
if (actor->tracer)
|
||||
actor->tracer->extravalue1++;
|
||||
|
||||
actor->momx = actor->momy = actor->momz = 0;
|
||||
|
||||
P_UnsetThingPosition(actor);
|
||||
if (sector_list)
|
||||
{
|
||||
P_DelSeclist(sector_list);
|
||||
sector_list = NULL;
|
||||
}
|
||||
actor->flags = MF_NOBLOCKMAP|MF_NOCLIPTHING;
|
||||
P_SetThingPosition(actor);
|
||||
}
|
||||
|
|
|
@ -2334,7 +2334,7 @@ void P_KillMobj(mobj_t *target, mobj_t *inflictor, mobj_t *source, UINT8 damaget
|
|||
target->fuse = target->info->damage;
|
||||
break;
|
||||
|
||||
case MT_AQUABUZZ:
|
||||
case MT_BUBBLEBUZZ:
|
||||
if (inflictor && inflictor->player // did a player kill you? Spawn relative to the player so they're bound to get it
|
||||
&& P_AproxDistance(inflictor->x - target->x, inflictor->y - target->y) <= inflictor->radius + target->radius + FixedMul(8*FRACUNIT, inflictor->scale) // close enough?
|
||||
&& inflictor->z <= target->z + target->height + FixedMul(8*FRACUNIT, inflictor->scale)
|
||||
|
@ -3278,20 +3278,14 @@ boolean P_DamageMobj(mobj_t *target, mobj_t *inflictor, mobj_t *source, INT32 da
|
|||
|
||||
if (player)
|
||||
P_ResetPlayer(target->player);
|
||||
else if ((target->type == MT_EGGMOBILE2) // egg slimer
|
||||
&& (target->health < target->info->damage)) // in pinch phase
|
||||
P_SetMobjState(target, target->info->meleestate); // go to pinch pain state
|
||||
else
|
||||
switch (target->type)
|
||||
{
|
||||
case MT_EGGMOBILE2: // egg slimer
|
||||
if (target->health < target->info->damage) // in pinch phase
|
||||
{
|
||||
P_SetMobjState(target, target->info->meleestate); // go to pinch pain state
|
||||
break;
|
||||
}
|
||||
/* FALLTHRU */
|
||||
default:
|
||||
P_SetMobjState(target, target->info->painstate);
|
||||
break;
|
||||
}
|
||||
P_SetMobjState(target, target->info->painstate);
|
||||
|
||||
if (target->type == MT_HIVEELEMENTAL)
|
||||
target->extravalue1 += 3;
|
||||
|
||||
target->reactiontime = 0; // we're awake now...
|
||||
|
||||
|
|
56
src/p_mobj.c
56
src/p_mobj.c
|
@ -7364,7 +7364,7 @@ void P_MobjThinker(mobj_t *mobj)
|
|||
}
|
||||
}
|
||||
break;
|
||||
case MT_AQUABUZZ:
|
||||
case MT_BUBBLEBUZZ:
|
||||
mobj->eflags |= MFE_UNDERWATER; //P_MobjCheckWater(mobj); // solely for MFE_UNDERWATER for A_FlickySpawn
|
||||
{
|
||||
if (mobj->tracer && mobj->tracer->player && mobj->tracer->health > 0
|
||||
|
@ -7389,6 +7389,49 @@ void P_MobjThinker(mobj_t *mobj)
|
|||
}
|
||||
}
|
||||
break;
|
||||
case MT_BUMBLEBORE:
|
||||
{
|
||||
statenum_t st = mobj->state-states;
|
||||
if (st == S_BUMBLEBORE_FLY1 || st == S_BUMBLEBORE_FLY2)
|
||||
{
|
||||
if (!mobj->target)
|
||||
P_SetMobjState(mobj, mobj->info->spawnstate);
|
||||
else if (P_MobjFlip(mobj)*((mobj->z + (mobj->height>>1)) - (mobj->target->z + (mobj->target->height>>1))) > 0
|
||||
&& R_PointToDist2(mobj->x, mobj->y, mobj->target->x, mobj->target->y) <= 32*FRACUNIT)
|
||||
{
|
||||
mobj->momx >>= 1;
|
||||
mobj->momy >>= 1;
|
||||
if (++mobj->movefactor == 4)
|
||||
{
|
||||
S_StartSound(mobj, mobj->info->seesound);
|
||||
mobj->momx = mobj->momy = mobj->momz = 0;
|
||||
mobj->flags = (mobj->flags|MF_PAIN) & ~MF_NOGRAVITY;
|
||||
P_SetMobjState(mobj, mobj->info->meleestate);
|
||||
}
|
||||
}
|
||||
else
|
||||
mobj->movefactor = 0;
|
||||
}
|
||||
else if (st == S_BUMBLEBORE_RAISE || st == S_BUMBLEBORE_FALL2) // no _FALL1 because it's an 0-tic
|
||||
{
|
||||
if (P_IsObjectOnGround(mobj))
|
||||
{
|
||||
S_StopSound(mobj);
|
||||
S_StartSound(mobj, mobj->info->attacksound);
|
||||
mobj->flags = (mobj->flags|MF_NOGRAVITY) & ~MF_PAIN;
|
||||
mobj->momx = mobj->momy = mobj->momz = 0;
|
||||
P_SetMobjState(mobj, mobj->info->painstate);
|
||||
}
|
||||
else
|
||||
{
|
||||
mobj->angle += ANGLE_22h;
|
||||
mobj->frame = mobj->state->frame + ((mobj->tics & 2)>>1);
|
||||
}
|
||||
}
|
||||
else if (st == S_BUMBLEBORE_STUCK2 && mobj->tics < TICRATE)
|
||||
mobj->frame = mobj->state->frame + ((mobj->tics & 2)>>1);
|
||||
}
|
||||
break;
|
||||
case MT_BIGMINE:
|
||||
mobj->extravalue1 += 3;
|
||||
mobj->extravalue1 %= 360;
|
||||
|
@ -8450,6 +8493,10 @@ mobj_t *P_SpawnMobj(fixed_t x, fixed_t y, fixed_t z, mobjtype_t type)
|
|||
P_SetTarget(&spawn->target, mobj);
|
||||
}
|
||||
break;
|
||||
case MT_FAKEMOBILE:
|
||||
case MT_EGGSHIELD:
|
||||
mobj->flags2 |= MF2_INVERTAIMABLE;
|
||||
break;
|
||||
case MT_DETON:
|
||||
mobj->movedir = 0;
|
||||
break;
|
||||
|
@ -8508,6 +8555,9 @@ mobj_t *P_SpawnMobj(fixed_t x, fixed_t y, fixed_t z, mobjtype_t type)
|
|||
case MT_FLICKY_08:
|
||||
mobj->color = (P_RandomChance(FRACUNIT/2) ? SKINCOLOR_RED : SKINCOLOR_AQUA);
|
||||
break;
|
||||
case MT_HIVEELEMENTAL:
|
||||
mobj->extravalue1 = 5;
|
||||
break;
|
||||
case MT_SMASHINGSPIKEBALL:
|
||||
mobj->movecount = mobj->z;
|
||||
break;
|
||||
|
@ -10232,6 +10282,10 @@ ML_EFFECT4 : Don't clip inside the ground
|
|||
if (mthing->angle > 0)
|
||||
mobj->health = mthing->angle;
|
||||
break;
|
||||
case MT_HIVEELEMENTAL:
|
||||
if (mthing->extrainfo)
|
||||
mobj->extravalue1 = mthing->extrainfo;
|
||||
break;
|
||||
case MT_TRAPGOYLE:
|
||||
case MT_TRAPGOYLEUP:
|
||||
case MT_TRAPGOYLEDOWN:
|
||||
|
|
|
@ -175,8 +175,8 @@ typedef enum
|
|||
MF2_SCATTER = 1<<8, // Thrown ring has scatter properties
|
||||
MF2_BEYONDTHEGRAVE = 1<<9, // Source of this missile has died and has since respawned.
|
||||
MF2_SLIDEPUSH = 1<<10, // MF_PUSHABLE that pushes continuously.
|
||||
MF2_CLASSICPUSH = 1<<11, // Drops straight down when object has negative Z.
|
||||
MF2_STANDONME = 1<<12, // While not pushable, stand on me anyway.
|
||||
MF2_CLASSICPUSH = 1<<11, // Drops straight down when object has negative momz.
|
||||
MF2_INVERTAIMABLE = 1<<12, // Flips whether it's targetable by A_LookForEnemies (enemies no, decoys yes)
|
||||
MF2_INFLOAT = 1<<13, // Floating to a height for a move, don't auto float to target's height.
|
||||
MF2_DEBRIS = 1<<14, // Splash ring from explosion ring
|
||||
MF2_NIGHTSPULL = 1<<15, // Attracted from a paraloop
|
||||
|
|
|
@ -8174,9 +8174,7 @@ mobj_t *P_LookForEnemies(player_t *player, boolean nonenemies, boolean bullet)
|
|||
continue; // not a mobj thinker
|
||||
|
||||
mo = (mobj_t *)think;
|
||||
if (!(mo->flags & targetmask
|
||||
|| mo->type == MT_FAKEMOBILE // hehehehe
|
||||
|| mo->type == MT_EGGSHIELD))
|
||||
if (!(mo->flags & targetmask) == !(mo->flags2 & MF2_INVERTAIMABLE)) // allows if it has the flags desired XOR it has the invert aimable flag
|
||||
continue; // not a valid target
|
||||
|
||||
if (mo->health <= 0) // dead
|
||||
|
|
|
@ -371,9 +371,9 @@ sfxinfo_t S_sfx[NUMSFX] =
|
|||
{"s3k89", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Advanced technology"},
|
||||
{"s3k8a", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Boing"},
|
||||
{"s3k8b", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Powerful hit"},
|
||||
{"s3k8c", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""},
|
||||
{"s3k8c", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Humming power"},
|
||||
{"s3k8d", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""},
|
||||
{"s3k8e", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""},
|
||||
{"s3k8e", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Accelerating"},
|
||||
{"s3k8f", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Opening"},
|
||||
{"s3k90", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Impact"},
|
||||
{"s3k91", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Closed"},
|
||||
|
|
Loading…
Reference in a new issue