From 32b9b82dc25fd8aff10cc594d571fb09bbbdd6ff Mon Sep 17 00:00:00 2001 From: NepDisk Date: Mon, 7 Apr 2025 17:20:26 -0400 Subject: [PATCH] Port v1 objects pt 3 --- src/info/actions.h | 18 - src/info/mobjs.h | 21 +- src/info/sprites.h | 13 +- src/info/states.h | 197 +-------- src/p_enemy.c | 1027 -------------------------------------------- src/p_inter.c | 23 - src/p_mobj.c | 44 +- src/p_setup.c | 10 - 8 files changed, 11 insertions(+), 1342 deletions(-) diff --git a/src/info/actions.h b/src/info/actions.h index 67e63d039..48cae73ca 100644 --- a/src/info/actions.h +++ b/src/info/actions.h @@ -191,35 +191,17 @@ _(A_FlickyHeightCheck, FLICKYHEIGHTCHECK) _(A_FlickyFlutter, FLICKYFLUTTER) _(A_FlameParticle, FLAMEPARTICLE) _(A_FadeOverlay, FADEOVERLAY) -_(A_Boss5Jump, BOSS5JUMP) -_(A_LightBeamReset, LIGHTBEAMRESET) _(A_MineExplode, MINEEXPLODE) _(A_MineRange, MINERANGE) _(A_ConnectToGround, CONNECTTOGROUND) _(A_SpawnParticleRelative, SPAWNPARTICLERELATIVE) _(A_ParticleSpawn, PARTICLESPAWN) _(A_MultiShotDist, MULTISHOTDIST) -_(A_WhoCaresIfYourSonIsABee,WHOCARESIFYOURSONISABEE) -_(A_ParentTriesToSleep, PARENTTRIESTOSLEEP) -_(A_CryingToMomma, CRYINGTOMOMMA) _(A_CheckFlags2, CHECKFLAGS2) -_(A_Boss5FindWaypoint, BOSS5FINDWAYPOINT) _(A_DoNPCSkid, DONPCSKID) _(A_DoNPCPain, DONPCPAIN) _(A_PrepareRepeat, PREPAREREPEAT) -_(A_Boss5ExtraRepeat, BOSS5EXTRAREPEAT) -_(A_Boss5Calm, BOSS5CALM) -_(A_Boss5CheckOnGround, BOSS5CHECKONGROUND) -_(A_Boss5CheckFalling, BOSS5CHECKFALLING) -_(A_Boss5PinchShot, BOSS5PINCHSHOT) -_(A_Boss5MakeItRain, BOSS5MAKEITRAIN) -_(A_Boss5MakeJunk, BOSS5MAKEJUNK) _(A_LookForBetter, LOOKFORBETTER) -_(A_Boss5BombExplode, BOSS5BOMBEXPLODE) -_(A_CanarivoreGas, CANARIVOREGAS) -_(A_KillSegments, KILLSEGMENTS) -_(A_SnapperSpawn, SNAPPERSPAWN) -_(A_SnapperThinker, SNAPPERTHINKER) _(A_ModuloToState, MODULOTOSTATE) _(A_ChangeHeight, CHANGEHEIGHT) diff --git a/src/info/mobjs.h b/src/info/mobjs.h index 79796d3df..156830034 100644 --- a/src/info/mobjs.h +++ b/src/info/mobjs.h @@ -21,12 +21,7 @@ _(DETON) // Deton _(SKIM) // Skim mine dropper _(TURRET) // Industrial Turret _(POPUPTURRET) // Pop-Up Turret -_(SPINCUSHION) // Spincushion -_(CRUSHSTACEAN) // Crushstacean -_(CRUSHCLAW) // Big meaty claw -_(CRUSHCHAIN) // Chain -_(BANPYURA) // Banpyura -_(BANPSPRING) // Banpyura spring +_(SHARP) // SHARP _(JETJAW) // Jet Jaw _(SNAILER) // Snailer _(VULTURE) // BASH @@ -37,8 +32,6 @@ _(FACESTABBER) // Castlebot Facestabber _(EGGGUARD) // Egg Guard _(EGGSHIELD) // Egg Guard's shield _(GSNAPPER) // Green Snapper -_(SNAPPER_LEG) // Green Snapper leg -_(SNAPPER_HEAD) // Green Snapper head _(MINUS) // Minus _(MINUSDIRT) // Minus dirt _(SPRINGSHELL) // Spring Shell @@ -80,18 +73,6 @@ _(JETFLAME) _(EGGROBO1) _(EGGROBO1JET) -// Boss 5 -_(FANG) -_(BROKENROBOT) -_(VWREF) -_(VWREB) -_(PROJECTORLIGHT) -_(FBOMB) -_(TNTDUST) // also used by barrel -_(FSGNA) -_(FSGNB) -_(FANGWAYPOINT) - // Black Eggman (Boss 7) _(BLACKEGGMAN) _(BLACKEGGMAN_HELPER) diff --git a/src/info/sprites.h b/src/info/sprites.h index 6726261f9..adf03818a 100644 --- a/src/info/sprites.h +++ b/src/info/sprites.h @@ -24,30 +24,19 @@ _(SKIM) // Skim mine dropper _(TRET) // Industrial Turret _(TURR) // Pop-Up Turret _(SHRP) // Sharp -//_(CRAB) // Crushstacean -_(CR2B) // Banpyura -_(CSPR) // Banpyura spring _(JJAW) // Jet Jaw _(SNLR) // Snailer _(VLTR) // BASH _(PNTY) // Pointy _(ARCH) // Robo-Hood _(CBFS) // Castlebot Facestabber -_(STAB) // Castlebot Facestabber spear aura _(SPSH) // Egg Guard _(ESHI) // Egg Guard's shield _(GSNP) // Green Snapper -_(GSNL) // Green Snapper leg -_(GSNH) // Green Snapper head _(MNUS) // Minus _(MNUD) // Minus dirt _(SSHL) // Spring Shell _(UNID) // Unidus -_(CANA) // Canarivore -_(CANG) // Canarivore gas -_(PYRE) // Pyre Fly -_(PTER) // Pterabyte -_(DRAB) // Dragonbomber // Generic Boss Items _(JETF) // Boss jet fumes @@ -588,7 +577,7 @@ _(CDMO) _(CDBU) // Daytona Speedway -_(DPIN) +_(PINE) // Egg Zeppelin _(PPLR) diff --git a/src/info/states.h b/src/info/states.h index b69dccda4..daa934a27 100644 --- a/src/info/states.h +++ b/src/info/states.h @@ -164,55 +164,14 @@ _(TURRETPOPDOWN6) _(TURRETPOPDOWN7) _(TURRETPOPDOWN8) -// Spincushion -_(SPINCUSHION_LOOK) -_(SPINCUSHION_CHASE1) -_(SPINCUSHION_CHASE2) -_(SPINCUSHION_CHASE3) -_(SPINCUSHION_CHASE4) -_(SPINCUSHION_AIM1) -_(SPINCUSHION_AIM2) -_(SPINCUSHION_AIM3) -_(SPINCUSHION_AIM4) -_(SPINCUSHION_AIM5) -_(SPINCUSHION_SPIN1) -_(SPINCUSHION_SPIN2) -_(SPINCUSHION_SPIN3) -_(SPINCUSHION_SPIN4) -_(SPINCUSHION_STOP1) -_(SPINCUSHION_STOP2) -_(SPINCUSHION_STOP3) -_(SPINCUSHION_STOP4) - -// Crushstacean -_(CRUSHSTACEAN_ROAM1) -_(CRUSHSTACEAN_ROAM2) -_(CRUSHSTACEAN_ROAM3) -_(CRUSHSTACEAN_ROAM4) -_(CRUSHSTACEAN_ROAMPAUSE) -_(CRUSHSTACEAN_PUNCH1) -_(CRUSHSTACEAN_PUNCH2) -_(CRUSHCLAW_AIM) -_(CRUSHCLAW_OUT) -_(CRUSHCLAW_STAY) -_(CRUSHCLAW_IN) -_(CRUSHCLAW_WAIT) -_(CRUSHCHAIN) - -// Banpyura -_(BANPYURA_ROAM1) -_(BANPYURA_ROAM2) -_(BANPYURA_ROAM3) -_(BANPYURA_ROAM4) -_(BANPYURA_ROAMPAUSE) -_(CDIAG1) -_(CDIAG2) -_(CDIAG3) -_(CDIAG4) -_(CDIAG5) -_(CDIAG6) -_(CDIAG7) -_(CDIAG8) +// Sharp +_(SHARP_ROAM1) +_(SHARP_ROAM2) +_(SHARP_AIM1) +_(SHARP_AIM2) +_(SHARP_AIM3) +_(SHARP_AIM4) +_(SHARP_SPIN) // Jet Jaw _(JETJAW_ROAM1) @@ -294,17 +253,11 @@ _(EGGGUARD_RUN4) _(EGGSHIELD) // Green Snapper -_(SNAPPER_SPAWN) -_(SNAPPER_SPAWN2) _(GSNAPPER_STND) _(GSNAPPER1) _(GSNAPPER2) _(GSNAPPER3) _(GSNAPPER4) -_(SNAPPER_XPLD) -_(SNAPPER_LEG) -_(SNAPPER_LEGRAISE) -_(SNAPPER_HEAD) // Minus _(MINUS_INIT) @@ -533,140 +486,6 @@ _(EGGROBO1_PISSED) // Boss 4 Spectator Eggrobo jet flame _(EGGROBOJET) -// Boss 5 -_(FANG_SETUP) -_(FANG_INTRO0) -_(FANG_INTRO1) -_(FANG_INTRO2) -_(FANG_INTRO3) -_(FANG_INTRO4) -_(FANG_INTRO5) -_(FANG_INTRO6) -_(FANG_INTRO7) -_(FANG_INTRO8) -_(FANG_INTRO9) -_(FANG_INTRO10) -_(FANG_INTRO11) -_(FANG_INTRO12) -_(FANG_CLONE1) -_(FANG_CLONE2) -_(FANG_CLONE3) -_(FANG_CLONE4) -_(FANG_IDLE0) -_(FANG_IDLE1) -_(FANG_IDLE2) -_(FANG_IDLE3) -_(FANG_IDLE4) -_(FANG_IDLE5) -_(FANG_IDLE6) -_(FANG_IDLE7) -_(FANG_IDLE8) -_(FANG_PAIN1) -_(FANG_PAIN2) -_(FANG_PATHINGSTART1) -_(FANG_PATHINGSTART2) -_(FANG_PATHING) -_(FANG_BOUNCE1) -_(FANG_BOUNCE2) -_(FANG_BOUNCE3) -_(FANG_BOUNCE4) -_(FANG_FALL1) -_(FANG_FALL2) -_(FANG_CHECKPATH1) -_(FANG_CHECKPATH2) -_(FANG_PATHINGCONT1) -_(FANG_PATHINGCONT2) -_(FANG_PATHINGCONT3) -_(FANG_SKID1) -_(FANG_SKID2) -_(FANG_SKID3) -_(FANG_CHOOSEATTACK) -_(FANG_FIRESTART1) -_(FANG_FIRESTART2) -_(FANG_FIRE1) -_(FANG_FIRE2) -_(FANG_FIRE3) -_(FANG_FIRE4) -_(FANG_FIREREPEAT) -_(FANG_LOBSHOT0) -_(FANG_LOBSHOT1) -_(FANG_LOBSHOT2) -_(FANG_WAIT1) -_(FANG_WAIT2) -_(FANG_WALLHIT) -_(FANG_PINCHPATHINGSTART1) -_(FANG_PINCHPATHINGSTART2) -_(FANG_PINCHPATHING) -_(FANG_PINCHBOUNCE0) -_(FANG_PINCHBOUNCE1) -_(FANG_PINCHBOUNCE2) -_(FANG_PINCHBOUNCE3) -_(FANG_PINCHBOUNCE4) -_(FANG_PINCHFALL0) -_(FANG_PINCHFALL1) -_(FANG_PINCHFALL2) -_(FANG_PINCHSKID1) -_(FANG_PINCHSKID2) -_(FANG_PINCHLOBSHOT0) -_(FANG_PINCHLOBSHOT1) -_(FANG_PINCHLOBSHOT2) -_(FANG_PINCHLOBSHOT3) -_(FANG_PINCHLOBSHOT4) -_(FANG_DIE1) -_(FANG_DIE2) -_(FANG_DIE3) -_(FANG_DIE4) -_(FANG_DIE5) -_(FANG_DIE6) -_(FANG_DIE7) -_(FANG_DIE8) -_(FANG_FLEEPATHING1) -_(FANG_FLEEPATHING2) -_(FANG_FLEEBOUNCE1) -_(FANG_FLEEBOUNCE2) -_(FANG_KO) - -_(BROKENROBOTRANDOM) -_(BROKENROBOTA) -_(BROKENROBOTB) -_(BROKENROBOTC) -_(BROKENROBOTD) -_(BROKENROBOTE) -_(BROKENROBOTF) - -_(ALART1) -_(ALART2) - -_(VWREF) -_(VWREB) - -_(PROJECTORLIGHT1) -_(PROJECTORLIGHT2) -_(PROJECTORLIGHT3) -_(PROJECTORLIGHT4) -_(PROJECTORLIGHT5) - -_(FBOMB1) -_(FBOMB2) -_(FBOMB_EXPL1) -_(FBOMB_EXPL2) -_(FBOMB_EXPL3) -_(FBOMB_EXPL4) -_(FBOMB_EXPL5) -_(FBOMB_EXPL6) -_(TNTDUST_1) -_(TNTDUST_2) -_(TNTDUST_3) -_(TNTDUST_4) -_(TNTDUST_5) -_(TNTDUST_6) -_(TNTDUST_7) -_(TNTDUST_8) -_(FSGNA) -_(FSGNB) -_(FSGNC) -_(FSGND) - // Black Eggman (Boss 7) _(BLACKEGG_STND) _(BLACKEGG_STND2) diff --git a/src/p_enemy.c b/src/p_enemy.c index 7d40a6cdb..9f9e2eefb 100644 --- a/src/p_enemy.c +++ b/src/p_enemy.c @@ -10237,122 +10237,6 @@ void A_FadeOverlay(mobj_t *actor) P_SetTarget(&actor->tracer, fade); } -// Function: A_Boss5Jump -// -// Description: Makes an object jump in an arc to land on their tracer precicely. -// Adapted from A_BrakLobShot, see there for explanation. -// -// var1 = unused -// var2 = unused -// -void A_Boss5Jump(mobj_t *actor) -{ - fixed_t v; // Velocity to jump at - fixed_t a1, a2, aToUse; // Velocity squared - fixed_t g; // Gravity - fixed_t x; // Horizontal difference - INT32 x_int; // x! But in integer form! - fixed_t y; // Vertical difference (yes that's normally z in SRB2 shut up) - INT32 y_int; // y! But in integer form! - INT32 intHypotenuse; // x^2 + y^2. Frequently overflows fixed point, hence why we need integers proper. - fixed_t fixedHypotenuse; // However, we can work around that and still get a fixed-point number. - angle_t theta; // Angle of attack - // INT32 locvar1 = var1; - // INT32 locvar2 = var2; - - if (LUA_CallAction(A_BOSS5JUMP, actor)) - return; - - if (!actor->tracer) - return; // Don't even bother if we've got nothing to aim at. - - // Look up actor's current gravity situation - g = FixedMul(gravity, P_GetSectorGravityFactor(actor->subsector->sector)); - - // Look up distance between actor and its tracer - x = FixedHypot(actor->tracer->x - actor->x, actor->tracer->y - actor->y); - // Look up height difference between actor and its tracer - y = actor->tracer->z - actor->z; - - // Get x^2 + y^2. Have to do it in a roundabout manner, because this overflows fixed_t way too easily otherwise. - x_int = x>>FRACBITS; - y_int = y>>FRACBITS; - intHypotenuse = (x_int*x_int) + (y_int*y_int); - fixedHypotenuse = FixedSqrt(intHypotenuse) *256; - - // a = g(y+/-sqrt(x^2+y^2)). a1 can be +, a2 can be -. - a1 = FixedMul(g,y+fixedHypotenuse); - a2 = FixedMul(g,y-fixedHypotenuse); - - // Determine which one isn't actually an imaginary number (or the smaller of the two, if both are real), and use that for v. - if (a1 < 0 || a2 < 0) - { - if (a1 < 0 && a2 < 0) - { - //Somehow, v^2 is negative in both cases. v is therefore imaginary and something is horribly wrong. Abort! - return; - } - // Just find which one's NOT negative, and use that - aToUse = max(a1,a2); - } - else - { - // Both are positive; use whichever's smaller so it can decay faster - aToUse = min(a1,a2); - } - v = FixedSqrt(aToUse); - // Okay, so we know the velocity. Let's actually find theta. - // We can cut the "+/- sqrt" part out entirely, since v was calculated specifically for it to equal zero. So: - //theta = tantoangle[FixedDiv(aToUse,FixedMul(g,x)) >> DBITS]; - theta = tantoangle[SlopeDiv(aToUse,FixedMul(g,x))]; - - // Okay, complicated math done. Let's make this object jump already. - A_FaceTracer(actor); - - if (actor->eflags & MFE_VERTICALFLIP) - actor->z--; - else - actor->z++; - - // Horizontal axes first. First parameter is initial horizontal impulse, second is to correct its angle. - fixedHypotenuse = FixedMul(v, FINECOSINE(theta >> ANGLETOFINESHIFT)); // variable reuse - actor->momx = FixedMul(fixedHypotenuse, FINECOSINE(actor->angle >> ANGLETOFINESHIFT)); - actor->momy = FixedMul(fixedHypotenuse, FINESINE(actor->angle >> ANGLETOFINESHIFT)); - // Then the vertical axis. No angle-correction needed here. - actor->momz = FixedMul(v, FINESINE(theta >> ANGLETOFINESHIFT)); - // I hope that's all that's needed, ugh -} - -// Function: A_LightBeamReset -// Description: Resets momentum and position for DSZ's projecting light beams -// -// var1 = unused -// var2 = unused -// -void A_LightBeamReset(mobj_t *actor) -{ - // INT32 locvar1 = var1; - // INT32 locvar2 = var2; - - if (LUA_CallAction(A_LIGHTBEAMRESET, actor)) - return; - - actor->destscale = FRACUNIT + P_SignedRandom()*FRACUNIT/256; - P_SetScale(actor, actor->destscale); - - if (!actor->spawnpoint) - return; // this can't work properly welp - - actor->momx = -(P_SignedRandom()*FINESINE(((actor->spawnpoint->angle*ANG1)>>ANGLETOFINESHIFT) & FINEMASK))/128; - actor->momy = (P_SignedRandom()*FINECOSINE(((actor->spawnpoint->angle*ANG1)>>ANGLETOFINESHIFT) & FINEMASK))/128; - actor->momz = (P_SignedRandom()*FRACUNIT)/128; - - P_SetOrigin(actor, - actor->spawnpoint->x*FRACUNIT - (P_SignedRandom()*FINESINE(((actor->spawnpoint->angle*ANG1)>>ANGLETOFINESHIFT) & FINEMASK))/2, - actor->spawnpoint->y*FRACUNIT + (P_SignedRandom()*FINECOSINE(((actor->spawnpoint->angle*ANG1)>>ANGLETOFINESHIFT) & FINEMASK))/2, - actor->spawnpoint->z*FRACUNIT + (P_SignedRandom()*FRACUNIT)/2); -} - // Function: A_MineExplode // Description: Handles the explosion of a DSZ mine. // @@ -10596,105 +10480,6 @@ void A_MultiShotDist(mobj_t *actor) 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; - - if (LUA_CallAction(A_WHOCARESIFYOURSONISABEE, actor)) - return; - - 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)<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; - - if (LUA_CallAction(A_PARENTTRIESTOSLEEP, actor)) - return; - - 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) -{ - if (LUA_CallAction(A_CRYINGTOMOMMA, actor)) - return; - - 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); -} - // Function: A_CheckFlags2 // // Description: If actor->flags2 & var1, goto var2. @@ -10714,196 +10499,6 @@ void A_CheckFlags2(mobj_t *actor) P_SetMobjState(actor, (statenum_t)locvar2); } -// Function: A_Boss5FindWaypoint -// -// Description: Finds the next waypoint in sequence and sets it as its tracer. -// -// var1 = if 1, always go to ambush-marked waypoint. if 2, go to MT_BOSSFLYPOINT. -// var2 = unused -// -void A_Boss5FindWaypoint(mobj_t *actor) -{ - INT32 locvar1 = var1; - boolean avoidcenter; - INT32 i; - INT32 bossid = actor->args[0]; - - if (LUA_CallAction(A_BOSS5FINDWAYPOINT, actor)) - return; - - avoidcenter = !actor->tracer || (actor->health == actor->info->damage+1); - - if (locvar1 == 2) // look for the boss flypoint - { - P_SetTarget(&actor->tracer, P_FindBossFlyPoint(actor, bossid)); - - if (!actor->tracer) - return; // no boss flypoints found - } - else if (locvar1 == 1) // always go to ambush-marked waypoint - { - boolean found = false; - - if (avoidcenter) - goto nowaypoints; // if we can't go the center, why on earth are we doing this? - - TAG_ITER_THINGS(bossid, i) - { - if (!mapthings[i].mobj) - continue; - if (mapthings[i].mobj->type != MT_FANGWAYPOINT) - continue; - if (!(mapthings[i].args[0])) - continue; - - P_SetTarget(&actor->tracer, mapthings[i].mobj); - found = true; - break; - } - - if (!found) - goto nowaypoints; - } - else // locvar1 == 0 - { - fixed_t hackoffset = P_MobjFlip(actor)*56*FRACUNIT; - INT32 numfangwaypoints = 0; - mobj_t **fangwaypoints; - INT32 key; - - actor->z += hackoffset; - - // first, count how many waypoints we have - TAG_ITER_THINGS(bossid, i) - { - if (!mapthings[i].mobj) - continue; - if (mapthings[i].mobj->type != MT_FANGWAYPOINT) - continue; - if (actor->tracer == mapthings[i].mobj) // this was your tracer last time - continue; - if (mapthings[i].args[0]) - { - if (avoidcenter) - continue; - } - else if (mapthings[i].mobj->reactiontime > 0) - continue; - if (!P_CheckSight(actor, mapthings[i].mobj)) - continue; - numfangwaypoints++; - } - - // players also count as waypoints apparently - if (actor->extravalue2 > 1) - { - for (i = 0; i < MAXPLAYERS; i++) - { - if (!playeringame[i]) - continue; - if (!players[i].mo) - continue; - if (players[i].spectator) - continue; - if (players[i].mo->health <= 0) - continue; - if (players[i].flashing) - continue; - if (actor->tracer == players[i].mo) // this was your tracer last time - continue; - if (!P_CheckSight(actor, players[i].mo)) - continue; - numfangwaypoints++; - } - } - - if (!numfangwaypoints) - { - // restore z position - actor->z -= hackoffset; - goto nowaypoints; // no waypoints :( - } - - // allocate the table and reset count to zero - fangwaypoints = Z_Calloc(sizeof(*tubewaypoints)*numfangwaypoints, PU_STATIC, NULL); - numfangwaypoints = 0; - - // now find them again and add them to the table! - TAG_ITER_THINGS(bossid, i) - { - if (!mapthings[i].mobj) - continue; - if (mapthings[i].mobj->type != MT_FANGWAYPOINT) - continue; - if (actor->tracer == mapthings[i].mobj) // this was your tracer last time - continue; - if (mapthings[i].args[0]) - { - if (avoidcenter) - continue; - } - else if (mapthings[i].mobj->reactiontime > 0) - { - mapthings[i].mobj->reactiontime--; - continue; - } - if (!P_CheckSight(actor, mapthings[i].mobj)) - continue; - fangwaypoints[numfangwaypoints++] = mapthings[i].mobj; - } - - if (actor->extravalue2 > 1) - { - for (i = 0; i < MAXPLAYERS; i++) - { - if (!playeringame[i]) - continue; - if (!players[i].mo) - continue; - if (players[i].spectator) - continue; - if (players[i].mo->health <= 0) - continue; - if (players[i].flashing) - continue; - if (actor->tracer == players[i].mo) // this was your tracer last time - continue; - if (!P_CheckSight(actor, players[i].mo)) - continue; - fangwaypoints[numfangwaypoints++] = players[i].mo; - } - } - - // restore z position - actor->z -= hackoffset; - - if (!numfangwaypoints) - { - Z_Free(fangwaypoints); // free table - goto nowaypoints; // ??? - } - - key = P_RandomKey(numfangwaypoints); - - P_SetTarget(&actor->tracer, fangwaypoints[key]); - if (actor->tracer->type == MT_FANGWAYPOINT) - actor->tracer->reactiontime = numfangwaypoints/4; // Monster Iestyn: is this how it should be? I count center waypoints as waypoints unlike the original Lua script - Z_Free(fangwaypoints); // free table - } - - // now face the tracer you just set! - A_FaceTracer(actor); - return; - -nowaypoints: - // no waypoints at all, guess the mobj has to disappear - if (actor->health) - P_KillMobj(actor, NULL, NULL, DMG_NORMAL); - else - P_RemoveMobj(actor); - return; -} - // Function: A_DoNPCSkid // // Description: Something that looks like a player is skidding. @@ -11027,281 +10622,6 @@ void A_PrepareRepeat(mobj_t *actor) actor->extravalue2 = locvar1; } -// Function: A_Boss5ExtraRepeat -// -// Description: Simple way to prepare A_Repeat. -// -// var1 = maximum value to setextravalue2 to (normally) -// var2 = pinch annoyance -// -void A_Boss5ExtraRepeat(mobj_t *actor) -{ - INT32 locvar1 = var1; - INT32 locvar2 = var2; - INT32 calc; - INT32 locspawn; - INT32 lochealth; - - if (LUA_CallAction(A_BOSS5EXTRAREPEAT, actor)) - return; - - if (actor->extravalue2 > 0 && !(actor->flags2 & MF2_FRET)) - return; - - locspawn = actor->info->spawnhealth - actor->info->damage; - lochealth = actor->health - actor->info->damage; - - if (locspawn <= 0 || lochealth <= 0) - calc = locvar1; - else - calc = (locvar1*(locspawn - lochealth))/locspawn; - - if (calc > 2) - actor->extravalue2 = 1 + calc/2 + P_RandomKey(calc/2); - else - actor->extravalue2 = 1 + calc; - - if (lochealth <= 0) - actor->extravalue2 += locvar2; -} - -// Function: A_Boss5Calm -// -// Description: Simple way to disable MF2_FRET (and enable MF_SHOOTABLE the first time it's called) -// -// var1 = unused -// var2 = unused -// -void A_Boss5Calm(mobj_t *actor) -{ - if (LUA_CallAction(A_BOSS5CALM, actor)) - return; - - actor->flags |= MF_SHOOTABLE; - actor->flags2 &= ~MF2_FRET; -} - -// Function: A_Boss5CheckOnGround -// -// Description: Ground checker. -// -// var1 = state to change to upon hitting ground. -// var2 = state to change to upon hitting ground if health == pinchhealth, assuming it exists -// -void A_Boss5CheckOnGround(mobj_t *actor) -{ - INT32 locvar1 = var1; - INT32 locvar2 = var2; - - if (LUA_CallAction(A_BOSS5CHECKONGROUND, actor)) - return; - - if ((!(actor->eflags & MFE_VERTICALFLIP) && actor->z <= actor->floorz) - || (actor->eflags & MFE_VERTICALFLIP && actor->z + actor->height >= actor->ceilingz)) - { - if (locvar2 && (!actor->health || (actor->health == actor->info->damage && !(actor->flags2 & MF2_STRONGBOX)))) - P_SetMobjState(actor, locvar2); - else - P_SetMobjState(actor, locvar1); - } - - if (actor->tracer && P_AproxDistance(actor->tracer->x - actor->x, actor->tracer->y - actor->y) < 2*actor->radius) - { - actor->momx = (4*actor->momx)/5; - actor->momy = (4*actor->momy)/5; - } -} - -// Function: A_Boss5CheckFalling -// -// Description: Falling checker. -// -// var1 = state to change to when hitting ground. -// var2 = state to change to when falling. -// -void A_Boss5CheckFalling(mobj_t *actor) -{ - INT32 locvar1 = var1; - INT32 locvar2 = var2; - - if (LUA_CallAction(A_BOSS5CHECKFALLING, actor)) - return; - - if (actor->health && actor->extravalue2 > 1) - { - var1 = locvar1; - var2 = 0; - A_Boss5CheckOnGround(actor); - return; - } - - if (P_MobjFlip(actor)*actor->momz <= 0) - P_SetMobjState(actor, locvar2); -} - -// Function: A_Boss5PinchShot -// -// Description: Fires a missile directly upwards if in pinch. -// -// var1 = object # to shoot -// var2 = height offset (from default of +48 FU) -// -void A_Boss5PinchShot(mobj_t *actor) -{ - INT32 locvar1 = var1; - INT32 locvar2 = var2; - fixed_t zoffset; - mobj_t *missile; - - if (LUA_CallAction(A_BOSS5PINCHSHOT, actor)) - return; - - if (actor->health > actor->info->damage) - return; - - if (actor->eflags & MFE_VERTICALFLIP) - zoffset = actor->z + actor->height - FixedMul((48 + locvar2)*FRACUNIT, actor->scale); - else - zoffset = actor->z + FixedMul((48 + locvar2)*FRACUNIT, actor->scale); - - missile = P_SpawnPointMissile(actor, actor->x, actor->y, zoffset, locvar1, - actor->x, actor->y, zoffset); - - if (!missile) - return; - - missile->momx = missile->momy = 0; - missile->momz = P_MobjFlip(actor)*missile->info->speed/2; -} - -// Function: A_Boss5MakeItRain -// -// Description: Pinch crisis. -// -// var1 = object # to shoot -// var2 = height offset (from default of +48 FU) -// -void A_Boss5MakeItRain(mobj_t *actor) -{ - INT32 locvar1 = var1; - INT32 locvar2 = var2; - INT32 offset = (48 + locvar2)<<16; // upper 16 bits, not fixed_t! - INT32 i; - - if (LUA_CallAction(A_BOSS5MAKEITRAIN, actor)) - return; - - actor->flags2 |= MF2_STRONGBOX; - - var1 = locvar1; - var2 = offset + 90; - A_TrapShot(actor); - - for (i = 0; i < 8; i++) - { - actor->angle += ANGLE_45; - - var1 = locvar1; - var2 = offset + (i & 1) ? 80 : 85; - A_TrapShot(actor); - } - - actor->extravalue2 = 0; -} - -// Function: A_Boss5MakeJunk -// -// Description: Make a mess. -// -// var1 = state # to set on MT_BROKENROBOT (if 0 do nothing, if -1 go to if colorized) -// var2 = mode (-1 = spin, 0 = make 1, & 1 make 8, & 2 alart mode) -// -void A_Boss5MakeJunk(mobj_t *actor) -{ - INT32 locvar1 = var1; - INT32 locvar2 = var2; - mobj_t *broked = NULL; - angle_t ang; - INT32 i = ((locvar2 & 1) ? 8 : 1); - - if (LUA_CallAction(A_BOSS5MAKEJUNK, actor)) - return; - - if (locvar1 < 0 && (actor->flags2 & MF2_SLIDEPUSH)) // this entire action is a hack, don't judge me - { - INT32 curextravalue2 = actor->extravalue2; - P_SpawnMobjFromMobj(actor, 0, 0, 0, MT_PROJECTORLIGHT); - actor->z += P_MobjFlip(actor)*actor->height; - actor->flags |= MF_NOGRAVITY; - S_StartSound(actor, sfx_vwre); - actor->extravalue2 = 49; - P_SetMobjState(actor, -locvar1); - actor->extravalue2 = curextravalue2; - actor->angle -= FixedAngle((49*45)<extravalue2)/50; - if (trans > 9) - trans = 9; - if (trans < 0) - trans = 0; - if (!(actor->extravalue2 & 1)) - { - if (actor->extravalue2 > 10) - { - mobj_t *front = P_SpawnMobjFromMobj(actor, 0, 0, 0, MT_VWREF); - broked = P_SpawnMobjFromMobj(front, 0, 0, 0, MT_VWREB); - front->z = broked->z = front->z - broked->height; - P_SetObjectMomZ(front, (4<momz = front->momz; - broked->fuse = front->fuse = (actor->height+(2*front->height))/front->momz; - } - if (!(actor->colorized = !actor->colorized)) - actor->frame |= FF_FULLBRIGHT; - } - actor->angle += ANGLE_45; - actor->frame = (actor->frame & ~FF_TRANSMASK)|(trans<fuse = TICRATE; - else - broked->fuse = (((locvar2 & 1) ? 4 : 2)*TICRATE)/3; - broked->angle = ang; - P_InstaThrust(broked, ang, ((locvar2 & 2) ? 8 : 5)*actor->scale); - P_SetObjectMomZ(broked, (((locvar2) ? 4 : 0) + P_RandomRange(2, 5))< 0) - P_SetMobjState(broked, locvar1); - if (!P_MobjWasRemoved(broked)) - P_MoveOrigin(broked, broked->x + broked->momx, broked->y + broked->momy, broked->z); - ang += ANGLE_45; - } - - if (locvar2 & 2) - { - broked = P_SpawnMobjFromMobj(actor, 0, 0, 64<fuse = states[S_FANG_INTRO12].tics+10; - P_SetMobjState(broked, S_ALART1); - } - else if (locvar2 & 1) - { - broked->z += broked->momz; - S_StartSound(actor, sfx_s3kccs); - actor->flags &= ~MF_NOCLIPTHING; - } - else - S_StartSound(actor, sfx_s3kd3s); -} - // Function: A_LookForBetter // // Description: A_Look, except it finds a better target in multiplayer, and doesn't lose the target in singleplayer. @@ -11321,353 +10641,6 @@ void A_LookForBetter(mobj_t *actor) A_FaceTarget(actor); } -/* * Spawns a dust ring. - * The dust ring behaves slightly randomly so it doesn't look too uniform. - * - * \param mobjtype Thing type to make a ring of. - * \param div Amount of things to spawn on the ring. - * \param x Center X coordinates. - * \param y Center Y coordinates. - * \param z Center Z coordinates. - * \param radius Radius. - * \param speed Additional thrust on particles. - * \param initscale Initial scale when spawning. - * \param scale "Default" scale. - */ -static void P_DustRing(mobjtype_t mobjtype, UINT32 div, fixed_t x, fixed_t y, fixed_t z, fixed_t radius, fixed_t speed, fixed_t initscale, fixed_t scale) -{ - angle_t ang = FixedAngle(FixedDiv(360*FRACUNIT, div*FRACUNIT)); //(ANGLE_180/div)*2; - UINT32 i; - - // it turned out the radius was effectively nullified thanks to errors in the original script - // BUT people preferred how it looked before I "fixed" it, so I got rid of the radius calculations altogether - // this was a bit of a mess to sort out, but at least it's probably somewhat fine now? - // -- Monster Iestyn (21/05/19) - (void)radius; - - for (i = 0; i < div; i++) - { - mobj_t *dust = P_SpawnMobj( - x, //+ FixedMul(radius, FINECOSINE((ang*i) >> ANGLETOFINESHIFT)), - y, //+ FixedMul(radius, FINESINE((ang*i) >> ANGLETOFINESHIFT)), - z, - mobjtype - ); - - dust->angle = ang*i + ANGLE_90; - P_SetScale(dust, FixedMul(initscale, scale)); - dust->destscale = FixedMul(4*FRACUNIT + P_RandomFixed(), scale); - dust->scalespeed = scale/24; - P_Thrust(dust, ang*i, speed + FixedMul(P_RandomFixed(), scale)); - dust->momz = P_SignedRandom()*scale/64; - } -} - -// Function: A_Boss5BombExplode -// -// Description: Boss 5's bomb exploding. -// -// var1 = Thing type to spawn as dust -// var2 = unused -// -void A_Boss5BombExplode(mobj_t *actor) -{ - INT32 locvar1 = var1; - - if (LUA_CallAction(A_BOSS5BOMBEXPLODE, actor)) - return; - - // The original Lua script did not use |= to add flags but just set these flags exactly apparently? - // (I may modify this later) - // -- Monster Iestyn (21/05/19) - actor->flags = MF_NOCLIP|MF_NOGRAVITY|MF_NOBLOCKMAP; - actor->flags2 = MF2_EXPLOSION; - - if (actor->target) - P_RadiusAttack(actor, actor->target, 7*actor->radius, 0, true); - - P_DustRing(locvar1, 4, actor->x, actor->y, actor->z+actor->height, 2*actor->radius, 0, FRACUNIT, actor->scale); - P_DustRing(locvar1, 6, actor->x, actor->y, actor->z+actor->height/2, 3*actor->radius, FRACUNIT, FRACUNIT, actor->scale); - //P_StartQuake(9*FRACUNIT, TICRATE/6, {actor->x, actor->y, actor->z}, 20*actor->radius); - // the above does not exist, so we set the quake values directly instead - quake.intensity = 9*FRACUNIT; - quake.time = TICRATE/6; - // the following quake values have no effect atm? ah well, may as well set them anyway - { - mappoint_t q_epicenter = {actor->x, actor->y, actor->z}; - quake.epicenter = &q_epicenter; - } - quake.radius = 20*actor->radius; -} - -// Function: A_CanarivoreGas -// -// Description: Releases gas clouds. Used by the Canarivore. -// -// var1 = Mobj type. -// var2 = Unused -// -void A_CanarivoreGas(mobj_t *actor) -{ - INT32 locvar1 = var1; - - if (LUA_CallAction(A_CANARIVOREGAS, actor)) - return; - - P_DustRing(locvar1, 4, actor->x, actor->y, actor->z + actor->height / 5, 18, 0, FRACUNIT/10, actor->scale); - P_DustRing(locvar1, 6, actor->x, actor->y, actor->z + actor->height / 5, 28, FRACUNIT, FRACUNIT/10, actor->scale); -} - -// -// Function: A_KillSegments -// -// Description: Causes segments attached via tracer chain to be killed. -// -// var1 = Fuse (if 0, default to TICRATE/2). -// var2 = Unused -// -void A_KillSegments(mobj_t *actor) -{ - INT32 locvar1 = var1; - mobj_t *seg = actor->tracer; - INT32 fuse = locvar1 ? locvar1 : TICRATE/2; - - if (LUA_CallAction(A_KILLSEGMENTS, actor)) - return; - - while (seg) - { - mobj_t *kseg = seg; - seg = seg->tracer; - - kseg->flags = MF_NOBLOCKMAP; - kseg->flags2 = 0; - kseg->fuse = fuse; - P_Thrust(kseg, R_PointToAngle2(actor->x, actor->y, kseg->x, kseg->y), 3*actor->scale); - kseg->momz = 3*actor->scale; - } -} - -static void P_SnapperLegPlace(mobj_t *mo) -{ - mobj_t *seg = mo->tracer; - angle_t a = mo->angle; - angle_t fa = (a >> ANGLETOFINESHIFT) & FINEMASK; - fixed_t c = FINECOSINE(fa); - fixed_t s = FINESINE(fa); - fixed_t x, y; - INT32 o1, o2; - INT32 woffset = mo->extravalue1; - INT32 side = mo->extravalue2; - INT32 alt; - - // Move head first. - fixed_t rad = mo->radius; - INT32 necklen = (32*(mo->info->reactiontime - mo->reactiontime))/mo->info->reactiontime; // Not in FU - - seg->z = mo->z + ((mo->eflags & MFE_VERTICALFLIP) ? (((mo->height<<1)/3) - seg->height) : mo->height/3); - P_TryMove(seg, mo->x + FixedMul(c, rad) + necklen*c, mo->y + FixedMul(s, rad) + necklen*s, true, NULL); - seg->angle = a; - - // Move as many legs as available. - seg = seg->tracer; - do - { - o1 = seg->extravalue1; - o2 = seg->extravalue2; - alt = seg->cusval; - - if (alt == 1) - o2 += woffset; - else - o2 -= woffset; - - if (alt != side) - { - x = c*o2 + s*o1; - y = s*o2 - c*o1; - seg->z = mo->z + (((mo->eflags & MFE_VERTICALFLIP) ? (mo->height - seg->height) : 0)); - P_TryMove(seg, mo->x + x, mo->y + y, true, NULL); - P_SetMobjState(seg, seg->info->raisestate); - } - else - P_SetMobjState(seg, seg->info->spawnstate); - - seg->angle = R_PointToAngle2(mo->x, mo->y, seg->x, seg->y); - - seg = seg->tracer; - } while (seg); -} - -// -// Function: A_SnapperSpawn -// -// Description: Sets up Green Snapper legs and head. -// -// var1 = Leg mobj type. -// var2 = Head mobj type. -// -void A_SnapperSpawn(mobj_t *actor) -{ - mobjtype_t legtype = (mobjtype_t)var1; - mobjtype_t headtype = (mobjtype_t)var2; - mobj_t *ptr = actor; - INT32 i; - mobj_t *seg; - - if (LUA_CallAction(A_SNAPPERSPAWN, actor)) - return; - - // It spawns 1 head. - seg = P_SpawnMobjFromMobj(actor, 0, 0, 0, headtype); - P_SetTarget(&ptr->tracer, seg); - ptr = seg; - - // It spawns 4 legs which will be handled in the thinker function. - for (i = 1; i <= 4; i++) - { - seg = P_SpawnMobjFromMobj(actor, 0, 0, 0, legtype); - P_SetTarget(&ptr->tracer, seg); - ptr = seg; - - // The legs' base offsets are stored as extravalues, as relative coordinates in xy space. - seg->extravalue1 = 28; - seg->extravalue2 = 28; - if (i % 2) - seg->extravalue1 = -seg->extravalue1; - - if ((i/2) % 2) - seg->extravalue2 = -seg->extravalue2; - - // Alternating motion stuff. - seg->cusval = ((i + 1)/2) % 2; - } - - actor->extravalue1 = 0; - actor->extravalue2 = 0; - P_SnapperLegPlace(actor); -} - -// -// Function: A_SnapperThinker -// -// Description: Thinker for Green Snapper. -// -// var1 = Unused -// var2 = Unused -// -void A_SnapperThinker(mobj_t *actor) -{ - fixed_t x0 = actor->x; - fixed_t y0 = actor->y; - fixed_t xs, ys; - fixed_t x1, y1; - fixed_t dist; - boolean chasing; - - if (LUA_CallAction(A_SNAPPERTHINKER, actor)) - return; - - // We make a check just in case there's no spawnpoint. - if (actor->spawnpoint) - { - xs = actor->spawnpoint->x*FRACUNIT; - ys = actor->spawnpoint->y*FRACUNIT; - } - else - { - xs = x0; - ys = y0; - } - - // Look for nearby, valid players to chase angrily at. - if ((actor->target || P_LookForPlayers(actor, true, false, 1024*FRACUNIT)) - && P_AproxDistance(actor->target->x - xs, actor->target->y - ys) < 2048*FRACUNIT - && abs(actor->target->z - actor->z) < 80*FRACUNIT - && P_CheckSight(actor, actor->target)) - { - chasing = true; - x1 = actor->target->x; - y1 = actor->target->y; - } - else - { - chasing = false; - x1 = xs; - y1 = ys; - } - - dist = P_AproxDistance(x1 - x0, y1 - y0); - - // The snapper either chases what it considers to be a nearby player, or instead decides to go back to its spawnpoint. - if (chasing || dist > 32*FRACUNIT) - { - INT32 speed = actor->info->speed + actor->info->reactiontime - actor->reactiontime; - - angle_t maxang = FixedAngle(speed*FRACUNIT/2); - angle_t ang = actor->angle; - angle_t realang = R_PointToAngle2(x0, y0, x1, y1); - angle_t dif = realang - ang; - angle_t fa; - fixed_t c, s; - - if (dif < ANGLE_180 && dif > maxang) - actor->angle += maxang; - else if (dif >= ANGLE_180 && dif < InvAngle(maxang)) - actor->angle -= maxang; - else - actor->angle = realang; - - fa = (actor->angle >> ANGLETOFINESHIFT) & FINEMASK; - c = FINECOSINE(fa); - s = FINESINE(fa); - - P_TryMove(actor, actor->x + c*speed, actor->y + s*speed, false, NULL); - - // The snapper spawns dust if going fast! - if (actor->reactiontime < 4) - { - mobj_t *dust = P_SpawnMobj(x0, y0, actor->z, MT_SPINDUST); - P_Thrust(dust, ang + ANGLE_180 + FixedAngle(P_RandomRange(-20, 20)*FRACUNIT), speed*FRACUNIT); - } - - if (actor->extravalue2 == 0) - { - if (actor->extravalue1 > 16) - { - A_PlayActiveSound(actor); - actor->extravalue2 = 1; - - // If the snapper is chasing, accelerate; otherwise, decelerate. - if (chasing) - actor->reactiontime = max(0, actor->reactiontime - 1); - else - actor->reactiontime = min(actor->info->reactiontime, actor->reactiontime + 1); - } - else - actor->extravalue1 += speed; - } - else - { - if (actor->extravalue1 < -16) - { - A_PlayActiveSound(actor); - actor->extravalue2 = 0; - - // If the snapper is chasing, accelerate; otherwise, decelerate. - if (chasing) - actor->reactiontime = max(0, actor->reactiontime - 1); - else - actor->reactiontime = min(actor->info->reactiontime, actor->reactiontime + 1); - } - else - actor->extravalue1 -= speed; - } - } - - P_SnapperLegPlace(actor); -} - // Function: A_ModuloToState // // Description: Modulo operation to state diff --git a/src/p_inter.c b/src/p_inter.c index 52172f940..3b4b14a57 100644 --- a/src/p_inter.c +++ b/src/p_inter.c @@ -1464,29 +1464,6 @@ void P_KillMobj(mobj_t *target, mobj_t *inflictor, mobj_t *source, UINT8 damaget target->momx = target->momy = target->momz = 0; break; - case MT_CRUSHSTACEAN: - if (target->tracer) - { - mobj_t *chain = target->tracer->target, *chainnext; - while (chain) - { - chainnext = chain->target; - P_RemoveMobj(chain); - chain = chainnext; - } - S_StopSound(target->tracer); - P_KillMobj(target->tracer, inflictor, source, damagetype); - } - break; - - case MT_BANPYURA: - if (target->tracer) - { - S_StopSound(target->tracer); - P_KillMobj(target->tracer, inflictor, source, damagetype); - } - break; - case MT_EGGSHIELD: P_SetObjectMomZ(target, 4*target->scale, false); P_InstaThrust(target, target->angle, 3*target->scale); diff --git a/src/p_mobj.c b/src/p_mobj.c index e2042870b..e8df336f2 100644 --- a/src/p_mobj.c +++ b/src/p_mobj.c @@ -5657,9 +5657,8 @@ static void P_MobjSceneryThink(mobj_t *mobj) case MT_ROCKCRUMBLE16: case MT_WOODDEBRIS: case MT_BRICKDEBRIS: - case MT_BROKENROBOT: if (mobj->z <= P_FloorzAtPos(mobj->x, mobj->y, mobj->z, mobj->height) - && mobj->state != &states[mobj->info->deathstate]) + && mobj->state != &states[mobj->info->deathstate]) { P_SetMobjState(mobj, mobj->info->deathstate); return; @@ -5669,10 +5668,6 @@ static void P_MobjSceneryThink(mobj_t *mobj) if (!P_ParticleGenSceneryThink(mobj)) return; break; - case MT_FSGNA: - if (mobj->movedir) - mobj->angle += mobj->movedir; - break; case MT_ORBINAUT_SHIELD: // Kart orbit/trail items case MT_JAWZ_SHIELD: case MT_BANANA_SHIELD: @@ -6231,16 +6226,6 @@ static void P_MobjSceneryThink(mobj_t *mobj) break; } - case MT_VWREF: - case MT_VWREB: - { - INT32 strength; - ++mobj->movedir; - mobj->frame &= ~FF_TRANSMASK; - strength = min(mobj->fuse, (INT32)mobj->movedir)*3; - if (strength < 10) - mobj->frame |= ((10 - strength) << (FF_TRANSSHIFT)); - } /* FALLTHRU */ default: if (mobj->fuse) @@ -8450,9 +8435,6 @@ for (i = ((mobj->flags2 & MF2_STRONGBOX) ? strongboxamt : weakboxamt); i; --i) s static boolean P_FuseThink(mobj_t *mobj) { - if (mobj->type == MT_SNAPPER_HEAD || mobj->type == MT_SNAPPER_LEG) - mobj->renderflags ^= RF_DONTDRAW; - if (mobj->fuse <= TICRATE && (mobj->type == MT_RANDOMITEM || mobj->type == MT_EGGMANITEM || mobj->type == MT_FALLINGROCK)) mobj->renderflags ^= RF_DONTDRAW; @@ -9302,24 +9284,6 @@ mobj_t *P_SpawnMobj(fixed_t x, fixed_t y, fixed_t z, mobjtype_t type) } } break; - case MT_CRUSHSTACEAN: - { - mobj_t *bigmeatyclaw = P_SpawnMobjFromMobj(mobj, 0, 0, 0, MT_CRUSHCLAW); - bigmeatyclaw->angle = mobj->angle + ((mobj->flags2 & MF2_AMBUSH) ? ANGLE_90 : ANGLE_270); - P_SetTarget(&mobj->tracer, bigmeatyclaw); - P_SetTarget(&bigmeatyclaw->tracer, mobj); - mobj->reactiontime >>= 1; - } - break; - case MT_BANPYURA: - { - mobj_t *bigmeatyclaw = P_SpawnMobjFromMobj(mobj, 0, 0, 0, MT_BANPSPRING); - bigmeatyclaw->angle = mobj->angle + ((mobj->flags2 & MF2_AMBUSH) ? ANGLE_90 : ANGLE_270); - P_SetTarget(&mobj->tracer, bigmeatyclaw); - P_SetTarget(&bigmeatyclaw->tracer, mobj); - mobj->reactiontime >>= 1; - } - break; case MT_BIGMINE: mobj->extravalue1 = FixedHypot(mobj->x, mobj->y)>>FRACBITS; break; @@ -9391,15 +9355,9 @@ mobj_t *P_SpawnMobj(fixed_t x, fixed_t y, fixed_t z, mobjtype_t type) mobj->color = skins[5].prefcolor; sc = 5; break; - case MT_FANG: - sc = 4; - break; case MT_CORK: mobj->flags2 |= MF2_SUPERFIRE; break; - case MT_FBOMB: - mobj->flags2 |= MF2_EXPLOSION; - break; // SRB2Kart case MT_ITEMCAPSULE: { diff --git a/src/p_setup.c b/src/p_setup.c index 3b7a3d3df..ec68f5bdd 100644 --- a/src/p_setup.c +++ b/src/p_setup.c @@ -7022,13 +7022,6 @@ static void P_ConvertBinaryThingTypes(void) case 203: //Egg Colosseum mapthings[i].args[5] = LE_BOSS4DROP + mapthings[i].extrainfo * LE_PARAMWIDTH; break; - case 204: //Fang - mapthings[i].args[4] = LE_BOSS4DROP + mapthings[i].extrainfo*LE_PARAMWIDTH; - if (mapthings[i].options & MTF_EXTRA) - mapthings[i].args[5] |= TMF_GRAYSCALE; - if (mapthings[i].options & MTF_AMBUSH) - mapthings[i].args[5] |= TMF_SKIPINTRO; - break; case 206: //Brak Eggman (Old) mapthings[i].args[5] = LE_BRAKPLATFORM + mapthings[i].extrainfo*LE_PARAMWIDTH; break; @@ -7050,9 +7043,6 @@ static void P_ConvertBinaryThingTypes(void) mapthings[i].args[0] = mapthings[i].angle; mapthings[i].args[1] = mapthings[i].options & 7; break; - case 294: //Fang waypoint - mapthings[i].args[0] = !!(mapthings[i].options & MTF_AMBUSH); - break; case 300: //Ring case 301: //Bounce ring case 302: //Rail ring