Port v1 objects pt 6: Port 2.1 bosses
This commit is contained in:
parent
5d886b83ba
commit
af06da6560
9 changed files with 1910 additions and 363 deletions
|
|
@ -98,7 +98,6 @@ _(A_SetReactionTime, SETREACTIONTIME)
|
|||
_(A_Boss1Spikeballs, BOSS1SPIKEBALLS)
|
||||
_(A_Boss3TakeDamage, BOSS3TAKEDAMAGE)
|
||||
_(A_Boss3Path, BOSS3PATH)
|
||||
_(A_Boss3ShockThink, BOSS3SHOCKTHINK)
|
||||
_(A_LinedefExecute, LINEDEFEXECUTE)
|
||||
_(A_LinedefExecuteFromArg, LINEDEFEXECUTEFROMARG)
|
||||
_(A_PlaySeeSound, PLAYSEESOUND)
|
||||
|
|
|
|||
|
|
@ -46,7 +46,6 @@ _(BOSSFLYPOINT)
|
|||
_(EGGTRAP)
|
||||
_(BOSS3WAYPOINT)
|
||||
_(BOSS9GATHERPOINT)
|
||||
_(BOSSJUNK)
|
||||
|
||||
// Boss 1
|
||||
_(EGGMOBILE)
|
||||
|
|
@ -59,19 +58,16 @@ _(EGGMOBILE_FIRE)
|
|||
_(EGGMOBILE2)
|
||||
_(EGGMOBILE2_POGO)
|
||||
_(GOOP)
|
||||
_(GOOPTRAIL)
|
||||
|
||||
// Boss 3
|
||||
_(EGGMOBILE3)
|
||||
_(PROPELLER)
|
||||
_(FAKEMOBILE)
|
||||
_(SHOCKWAVE)
|
||||
|
||||
// Boss 4
|
||||
_(EGGMOBILE4)
|
||||
_(EGGMOBILE4_MACE)
|
||||
_(JETFLAME)
|
||||
_(EGGROBO1)
|
||||
_(EGGROBO1JET)
|
||||
|
||||
// Black Eggman (Boss 7)
|
||||
_(BLACKEGGMAN)
|
||||
|
|
|
|||
|
|
@ -58,18 +58,9 @@ _(SHCK) // Boss 3 Shockwave
|
|||
// Boss 4 (Castle Eggman)
|
||||
_(EGGP)
|
||||
_(EFIR) // Boss 4 jet flame
|
||||
_(EGR1) // Boss 4 Spectator Eggrobo
|
||||
|
||||
// Boss 5 (Arid Canyon)
|
||||
_(FANG) // replaces EGGQ
|
||||
_(BRKN)
|
||||
_(WHAT)
|
||||
_(VWRE)
|
||||
_(PROJ) // projector light
|
||||
_(FBOM)
|
||||
_(FSGN)
|
||||
_(BARX) // bomb explosion (also used by barrel)
|
||||
_(BARD) // bomb dust (also used by barrel)
|
||||
_(EGGQ)
|
||||
|
||||
// Boss 6 (Red Volcano)
|
||||
_(EGGR)
|
||||
|
|
|
|||
|
|
@ -323,10 +323,10 @@ _(SONIC3KBOSSEXPLOSION5)
|
|||
_(SONIC3KBOSSEXPLOSION6)
|
||||
|
||||
_(JETFUME1)
|
||||
_(JETFUME2)
|
||||
|
||||
// Boss 1
|
||||
_(EGGMOBILE_STND)
|
||||
_(EGGMOBILE_ROFL)
|
||||
_(EGGMOBILE_LATK1)
|
||||
_(EGGMOBILE_LATK2)
|
||||
_(EGGMOBILE_LATK3)
|
||||
|
|
@ -336,6 +336,7 @@ _(EGGMOBILE_LATK6)
|
|||
_(EGGMOBILE_LATK7)
|
||||
_(EGGMOBILE_LATK8)
|
||||
_(EGGMOBILE_LATK9)
|
||||
_(EGGMOBILE_LATK10)
|
||||
_(EGGMOBILE_RATK1)
|
||||
_(EGGMOBILE_RATK2)
|
||||
_(EGGMOBILE_RATK3)
|
||||
|
|
@ -345,6 +346,7 @@ _(EGGMOBILE_RATK6)
|
|||
_(EGGMOBILE_RATK7)
|
||||
_(EGGMOBILE_RATK8)
|
||||
_(EGGMOBILE_RATK9)
|
||||
_(EGGMOBILE_RATK10)
|
||||
_(EGGMOBILE_PANIC1)
|
||||
_(EGGMOBILE_PANIC2)
|
||||
_(EGGMOBILE_PANIC3)
|
||||
|
|
@ -355,25 +357,27 @@ _(EGGMOBILE_PANIC7)
|
|||
_(EGGMOBILE_PANIC8)
|
||||
_(EGGMOBILE_PANIC9)
|
||||
_(EGGMOBILE_PANIC10)
|
||||
_(EGGMOBILE_PANIC11)
|
||||
_(EGGMOBILE_PANIC12)
|
||||
_(EGGMOBILE_PANIC13)
|
||||
_(EGGMOBILE_PANIC14)
|
||||
_(EGGMOBILE_PANIC15)
|
||||
_(EGGMOBILE_PAIN)
|
||||
_(EGGMOBILE_PAIN2)
|
||||
_(EGGMOBILE_DIE1)
|
||||
_(EGGMOBILE_DIE2)
|
||||
_(EGGMOBILE_DIE3)
|
||||
_(EGGMOBILE_DIE4)
|
||||
_(EGGMOBILE_DIE5)
|
||||
_(EGGMOBILE_DIE6)
|
||||
_(EGGMOBILE_DIE7)
|
||||
_(EGGMOBILE_DIE8)
|
||||
_(EGGMOBILE_DIE9)
|
||||
_(EGGMOBILE_DIE10)
|
||||
_(EGGMOBILE_DIE11)
|
||||
_(EGGMOBILE_DIE12)
|
||||
_(EGGMOBILE_DIE13)
|
||||
_(EGGMOBILE_DIE14)
|
||||
_(EGGMOBILE_FLEE1)
|
||||
_(EGGMOBILE_FLEE2)
|
||||
_(EGGMOBILE_BALL)
|
||||
_(EGGMOBILE_TARGET)
|
||||
|
||||
_(BOSSEGLZ1)
|
||||
_(BOSSEGLZ2)
|
||||
|
||||
// Boss 2
|
||||
_(EGGMOBILE2_STND)
|
||||
_(EGGMOBILE2_POGO1)
|
||||
|
|
@ -389,6 +393,16 @@ _(EGGMOBILE2_DIE1)
|
|||
_(EGGMOBILE2_DIE2)
|
||||
_(EGGMOBILE2_DIE3)
|
||||
_(EGGMOBILE2_DIE4)
|
||||
_(EGGMOBILE2_DIE5)
|
||||
_(EGGMOBILE2_DIE6)
|
||||
_(EGGMOBILE2_DIE7)
|
||||
_(EGGMOBILE2_DIE8)
|
||||
_(EGGMOBILE2_DIE9)
|
||||
_(EGGMOBILE2_DIE10)
|
||||
_(EGGMOBILE2_DIE11)
|
||||
_(EGGMOBILE2_DIE12)
|
||||
_(EGGMOBILE2_DIE13)
|
||||
_(EGGMOBILE2_DIE14)
|
||||
_(EGGMOBILE2_FLEE1)
|
||||
_(EGGMOBILE2_FLEE2)
|
||||
|
||||
|
|
@ -400,11 +414,9 @@ _(BOSSSPIGOT)
|
|||
_(GOOP1)
|
||||
_(GOOP2)
|
||||
_(GOOP3)
|
||||
_(GOOPTRAIL)
|
||||
|
||||
// Boss 3
|
||||
_(EGGMOBILE3_STND)
|
||||
_(EGGMOBILE3_SHOCK)
|
||||
_(EGGMOBILE3_ATK1)
|
||||
_(EGGMOBILE3_ATK2)
|
||||
_(EGGMOBILE3_ATK3A)
|
||||
|
|
@ -413,16 +425,54 @@ _(EGGMOBILE3_ATK3C)
|
|||
_(EGGMOBILE3_ATK3D)
|
||||
_(EGGMOBILE3_ATK4)
|
||||
_(EGGMOBILE3_ATK5)
|
||||
_(EGGMOBILE3_ROFL)
|
||||
_(EGGMOBILE3_LAUGH1)
|
||||
_(EGGMOBILE3_LAUGH2)
|
||||
_(EGGMOBILE3_LAUGH3)
|
||||
_(EGGMOBILE3_LAUGH4)
|
||||
_(EGGMOBILE3_LAUGH5)
|
||||
_(EGGMOBILE3_LAUGH6)
|
||||
_(EGGMOBILE3_LAUGH7)
|
||||
_(EGGMOBILE3_LAUGH8)
|
||||
_(EGGMOBILE3_LAUGH9)
|
||||
_(EGGMOBILE3_LAUGH10)
|
||||
_(EGGMOBILE3_LAUGH11)
|
||||
_(EGGMOBILE3_LAUGH12)
|
||||
_(EGGMOBILE3_LAUGH13)
|
||||
_(EGGMOBILE3_LAUGH14)
|
||||
_(EGGMOBILE3_LAUGH15)
|
||||
_(EGGMOBILE3_LAUGH16)
|
||||
_(EGGMOBILE3_LAUGH17)
|
||||
_(EGGMOBILE3_LAUGH18)
|
||||
_(EGGMOBILE3_LAUGH19)
|
||||
_(EGGMOBILE3_LAUGH20)
|
||||
_(EGGMOBILE3_PAIN)
|
||||
_(EGGMOBILE3_PAIN2)
|
||||
_(EGGMOBILE3_DIE1)
|
||||
_(EGGMOBILE3_DIE2)
|
||||
_(EGGMOBILE3_DIE3)
|
||||
_(EGGMOBILE3_DIE4)
|
||||
_(EGGMOBILE3_DIE5)
|
||||
_(EGGMOBILE3_DIE6)
|
||||
_(EGGMOBILE3_DIE7)
|
||||
_(EGGMOBILE3_DIE8)
|
||||
_(EGGMOBILE3_DIE9)
|
||||
_(EGGMOBILE3_DIE10)
|
||||
_(EGGMOBILE3_DIE11)
|
||||
_(EGGMOBILE3_DIE12)
|
||||
_(EGGMOBILE3_DIE13)
|
||||
_(EGGMOBILE3_DIE14)
|
||||
_(EGGMOBILE3_FLEE1)
|
||||
_(EGGMOBILE3_FLEE2)
|
||||
|
||||
// Boss 3 Propeller
|
||||
_(PROPELLER1)
|
||||
_(PROPELLER2)
|
||||
_(PROPELLER3)
|
||||
_(PROPELLER4)
|
||||
_(PROPELLER5)
|
||||
_(PROPELLER6)
|
||||
_(PROPELLER7)
|
||||
|
||||
// Boss 3 Pinch
|
||||
_(FAKEMOBILE_INIT)
|
||||
_(FAKEMOBILE)
|
||||
|
|
@ -432,15 +482,8 @@ _(FAKEMOBILE_ATK3A)
|
|||
_(FAKEMOBILE_ATK3B)
|
||||
_(FAKEMOBILE_ATK3C)
|
||||
_(FAKEMOBILE_ATK3D)
|
||||
_(FAKEMOBILE_DIE1)
|
||||
_(FAKEMOBILE_DIE2)
|
||||
|
||||
_(BOSSSEBH1)
|
||||
_(BOSSSEBH2)
|
||||
|
||||
// Boss 3 Shockwave
|
||||
_(SHOCKWAVE1)
|
||||
_(SHOCKWAVE2)
|
||||
_(FAKEMOBILE_ATK4)
|
||||
_(FAKEMOBILE_ATK5)
|
||||
|
||||
// Boss 4
|
||||
_(EGGMOBILE4_STND)
|
||||
|
|
@ -458,30 +501,36 @@ _(EGGMOBILE4_RATK5)
|
|||
_(EGGMOBILE4_RATK6)
|
||||
_(EGGMOBILE4_RAISE1)
|
||||
_(EGGMOBILE4_RAISE2)
|
||||
_(EGGMOBILE4_PAIN1)
|
||||
_(EGGMOBILE4_PAIN2)
|
||||
_(EGGMOBILE4_RAISE3)
|
||||
_(EGGMOBILE4_RAISE4)
|
||||
_(EGGMOBILE4_RAISE5)
|
||||
_(EGGMOBILE4_RAISE6)
|
||||
_(EGGMOBILE4_RAISE7)
|
||||
_(EGGMOBILE4_RAISE8)
|
||||
_(EGGMOBILE4_RAISE9)
|
||||
_(EGGMOBILE4_RAISE10)
|
||||
_(EGGMOBILE4_PAIN)
|
||||
_(EGGMOBILE4_DIE1)
|
||||
_(EGGMOBILE4_DIE2)
|
||||
_(EGGMOBILE4_DIE3)
|
||||
_(EGGMOBILE4_DIE4)
|
||||
_(EGGMOBILE4_DIE5)
|
||||
_(EGGMOBILE4_DIE6)
|
||||
_(EGGMOBILE4_DIE7)
|
||||
_(EGGMOBILE4_DIE8)
|
||||
_(EGGMOBILE4_DIE9)
|
||||
_(EGGMOBILE4_DIE10)
|
||||
_(EGGMOBILE4_DIE11)
|
||||
_(EGGMOBILE4_DIE12)
|
||||
_(EGGMOBILE4_DIE13)
|
||||
_(EGGMOBILE4_DIE14)
|
||||
_(EGGMOBILE4_FLEE1)
|
||||
_(EGGMOBILE4_FLEE2)
|
||||
_(EGGMOBILE4_MACE)
|
||||
_(EGGMOBILE4_MACE_DIE1)
|
||||
_(EGGMOBILE4_MACE_DIE2)
|
||||
_(EGGMOBILE4_MACE_DIE3)
|
||||
|
||||
// Boss 4 jet flame
|
||||
_(JETFLAME)
|
||||
|
||||
// Boss 4 Spectator Eggrobo
|
||||
_(EGGROBO1_STND)
|
||||
_(EGGROBO1_BSLAP1)
|
||||
_(EGGROBO1_BSLAP2)
|
||||
_(EGGROBO1_PISSED)
|
||||
|
||||
// Boss 4 Spectator Eggrobo jet flame
|
||||
_(EGGROBOJET)
|
||||
_(JETFLAME1)
|
||||
_(JETFLAME2)
|
||||
|
||||
// Black Eggman (Boss 7)
|
||||
_(BLACKEGG_STND)
|
||||
|
|
@ -714,27 +763,54 @@ _(CYBRAKDEMONVILEEXPLOSION2)
|
|||
_(CYBRAKDEMONVILEEXPLOSION3)
|
||||
|
||||
// Metal Sonic (Race)
|
||||
_(METALSONIC_RACE)
|
||||
// S_PLAY_STND
|
||||
_(METALSONIC_STAND)
|
||||
// S_PLAY_TAP1
|
||||
_(METALSONIC_WAIT1)
|
||||
_(METALSONIC_WAIT2)
|
||||
// S_PLAY_RUN1
|
||||
_(METALSONIC_WALK1)
|
||||
_(METALSONIC_WALK2)
|
||||
_(METALSONIC_WALK3)
|
||||
_(METALSONIC_WALK4)
|
||||
_(METALSONIC_WALK5)
|
||||
_(METALSONIC_WALK6)
|
||||
_(METALSONIC_WALK7)
|
||||
_(METALSONIC_WALK8)
|
||||
// S_PLAY_SPD1
|
||||
_(METALSONIC_RUN1)
|
||||
_(METALSONIC_RUN2)
|
||||
_(METALSONIC_RUN3)
|
||||
_(METALSONIC_RUN4)
|
||||
// Metal Sonic (Battle)
|
||||
_(METALSONIC_FLOAT)
|
||||
_(METALSONIC_VECTOR)
|
||||
_(METALSONIC_STUN)
|
||||
_(METALSONIC_BLOCK)
|
||||
_(METALSONIC_RAISE)
|
||||
_(METALSONIC_GATHER)
|
||||
_(METALSONIC_DASH)
|
||||
_(METALSONIC_BOUNCE)
|
||||
_(METALSONIC_BADBOUNCE)
|
||||
_(METALSONIC_SHOOT)
|
||||
_(METALSONIC_PAIN)
|
||||
_(METALSONIC_DEATH1)
|
||||
_(METALSONIC_DEATH2)
|
||||
_(METALSONIC_DEATH3)
|
||||
_(METALSONIC_DEATH4)
|
||||
_(METALSONIC_DEATH)
|
||||
_(METALSONIC_FLEE1)
|
||||
_(METALSONIC_FLEE2)
|
||||
_(METALSONIC_FLEE3)
|
||||
_(METALSONIC_FLEE4)
|
||||
|
||||
_(MSSHIELD_F1)
|
||||
_(MSSHIELD_F2)
|
||||
_(MSSHIELD_F3)
|
||||
_(MSSHIELD_F4)
|
||||
_(MSSHIELD_F5)
|
||||
_(MSSHIELD_F6)
|
||||
_(MSSHIELD_F7)
|
||||
_(MSSHIELD_F8)
|
||||
_(MSSHIELD_F9)
|
||||
_(MSSHIELD_F10)
|
||||
_(MSSHIELD_F11)
|
||||
_(MSSHIELD_F12)
|
||||
|
||||
// Ring
|
||||
_(RING)
|
||||
|
|
@ -1128,14 +1204,6 @@ _(BLUEMONITOREXPLOSION2)
|
|||
_(ROCKET)
|
||||
|
||||
_(LASER)
|
||||
_(LASER2)
|
||||
_(LASERFLASH)
|
||||
|
||||
_(LASERFLAME1)
|
||||
_(LASERFLAME2)
|
||||
_(LASERFLAME3)
|
||||
_(LASERFLAME4)
|
||||
_(LASERFLAME5)
|
||||
|
||||
_(TORPEDO)
|
||||
|
||||
|
|
|
|||
349
src/p_enemy.c
349
src/p_enemy.c
|
|
@ -2094,29 +2094,23 @@ void A_Boss7FireMissiles(mobj_t *actor)
|
|||
// 3 - Boss 1 Middle
|
||||
// >=3 - Generic middle
|
||||
//
|
||||
// Function: A_Boss1Laser
|
||||
//
|
||||
// Description: Shoot an object at your target ala Bosses:
|
||||
//
|
||||
// var1 = object # to shoot
|
||||
// var2:
|
||||
// 0 - Boss 1 Left side
|
||||
// 1 - Boss 1 Right side
|
||||
//
|
||||
void A_Boss1Laser(mobj_t *actor)
|
||||
{
|
||||
fixed_t x, y, z, floorz, speed;
|
||||
INT32 locvar1 = var1;
|
||||
INT32 locvar2 = (var2 & 65535);
|
||||
INT32 upperend = (var2>>16);
|
||||
INT32 locvar2 = var2;
|
||||
INT32 i;
|
||||
angle_t angle;
|
||||
mobj_t *point;
|
||||
tic_t dur;
|
||||
static const UINT8 LASERCOLORS[] =
|
||||
{
|
||||
SKINCOLOR_KSUPER3,
|
||||
SKINCOLOR_KSUPER4,
|
||||
SKINCOLOR_KSUPER5,
|
||||
SKINCOLOR_KETCHUP,
|
||||
SKINCOLOR_RED,
|
||||
SKINCOLOR_RED,
|
||||
SKINCOLOR_KETCHUP,
|
||||
SKINCOLOR_KSUPER5,
|
||||
SKINCOLOR_KSUPER4,
|
||||
SKINCOLOR_KSUPER3,
|
||||
};
|
||||
|
||||
if (LUA_CallAction(A_BOSS1LASER, actor))
|
||||
return;
|
||||
|
|
@ -2124,48 +2118,24 @@ void A_Boss1Laser(mobj_t *actor)
|
|||
if (!actor->target)
|
||||
return;
|
||||
|
||||
if (actor->state->tics > 1)
|
||||
dur = actor->tics;
|
||||
else
|
||||
{
|
||||
if ((upperend & 1) && (actor->extravalue2 > 1))
|
||||
actor->extravalue2--;
|
||||
|
||||
dur = actor->extravalue2;
|
||||
}
|
||||
|
||||
switch (locvar2)
|
||||
{
|
||||
case 0:
|
||||
x = actor->x + P_ReturnThrustX(actor, actor->angle+ANGLE_90, FixedMul(44*FRACUNIT, actor->scale));
|
||||
y = actor->y + P_ReturnThrustY(actor, actor->angle+ANGLE_90, FixedMul(44*FRACUNIT, actor->scale));
|
||||
x = actor->x + P_ReturnThrustX(actor, actor->angle+ANGLE_90, FixedMul(43*FRACUNIT, actor->scale));
|
||||
y = actor->y + P_ReturnThrustY(actor, actor->angle+ANGLE_90, FixedMul(43*FRACUNIT, actor->scale));
|
||||
if (actor->eflags & MFE_VERTICALFLIP)
|
||||
z = actor->z + actor->height - FixedMul(56*FRACUNIT, actor->scale) - mobjinfo[locvar1].height;
|
||||
else
|
||||
z = actor->z + FixedMul(56*FRACUNIT, actor->scale);
|
||||
break;
|
||||
case 1:
|
||||
x = actor->x + P_ReturnThrustX(actor, actor->angle-ANGLE_90, FixedMul(44*FRACUNIT, actor->scale));
|
||||
y = actor->y + P_ReturnThrustY(actor, actor->angle-ANGLE_90, FixedMul(44*FRACUNIT, actor->scale));
|
||||
x = actor->x + P_ReturnThrustX(actor, actor->angle-ANGLE_90, FixedMul(43*FRACUNIT, actor->scale));
|
||||
y = actor->y + P_ReturnThrustY(actor, actor->angle-ANGLE_90, FixedMul(43*FRACUNIT, actor->scale));
|
||||
if (actor->eflags & MFE_VERTICALFLIP)
|
||||
z = actor->z + actor->height - FixedMul(56*FRACUNIT, actor->scale) - mobjinfo[locvar1].height;
|
||||
else
|
||||
z = actor->z + FixedMul(56*FRACUNIT, actor->scale);
|
||||
break;
|
||||
case 2:
|
||||
var1 = locvar1; var2 = 3; // Fire middle laser
|
||||
A_Boss1Laser(actor);
|
||||
var1 = locvar1; var2 = 0; // Fire left laser
|
||||
A_Boss1Laser(actor);
|
||||
var1 = locvar1; var2 = 1; // Fire right laser
|
||||
A_Boss1Laser(actor);
|
||||
return;
|
||||
break;
|
||||
case 3:
|
||||
x = actor->x + P_ReturnThrustX(actor, actor->angle, FixedMul(42*FRACUNIT, actor->scale));
|
||||
y = actor->y + P_ReturnThrustY(actor, actor->angle, FixedMul(42*FRACUNIT, actor->scale));
|
||||
z = actor->z + actor->height/2;
|
||||
break;
|
||||
default:
|
||||
x = actor->x;
|
||||
y = actor->y;
|
||||
|
|
@ -2173,25 +2143,30 @@ void A_Boss1Laser(mobj_t *actor)
|
|||
break;
|
||||
}
|
||||
|
||||
if (!(actor->flags2 & MF2_FIRING) && dur > 1)
|
||||
if (!(actor->flags2 & MF2_FIRING))
|
||||
{
|
||||
actor->angle = R_PointToAngle2(x, y, actor->target->x, actor->target->y);
|
||||
if (mobjinfo[locvar1].seesound)
|
||||
S_StartSound(actor, mobjinfo[locvar1].seesound);
|
||||
|
||||
point = P_SpawnMobj(x + P_ReturnThrustX(actor, actor->angle, actor->radius), y + P_ReturnThrustY(actor, actor->angle, actor->radius), actor->z - actor->height / 2, MT_EGGMOBILE_TARGET);
|
||||
point->angle = actor->angle;
|
||||
point->fuse = dur+1;
|
||||
P_SetTarget(&point->target, actor->target);
|
||||
P_SetTarget(&actor->target, point);
|
||||
if (!(actor->spawnpoint && actor->spawnpoint->options & MTF_AMBUSH))
|
||||
{
|
||||
point = P_SpawnMobj(x + P_ReturnThrustX(actor, actor->angle, actor->radius), y + P_ReturnThrustY(actor, actor->angle, actor->radius), actor->z - actor->height / 2, MT_EGGMOBILE_TARGET);
|
||||
point->fuse = actor->tics+1;
|
||||
P_SetTarget(&point->target, actor->target);
|
||||
P_SetTarget(&actor->target, point);
|
||||
}
|
||||
}
|
||||
else if (actor->target && !(actor->spawnpoint && actor->spawnpoint->options & MTF_AMBUSH))
|
||||
actor->angle = R_PointToAngle2(x, y, actor->target->x, actor->target->y);
|
||||
|
||||
angle = R_PointToAngle2(z + (mobjinfo[locvar1].height>>1), 0, actor->target->z, R_PointToDist2(x, y, actor->target->x, actor->target->y));
|
||||
|
||||
if (actor->spawnpoint && actor->spawnpoint->options & MTF_AMBUSH)
|
||||
angle = FixedAngle(FixedDiv(actor->tics*160*FRACUNIT, actor->state->tics*FRACUNIT) + 10*FRACUNIT);
|
||||
else
|
||||
angle = R_PointToAngle2(z + (mobjinfo[locvar1].height>>1), 0, actor->target->z, R_PointToDist2(x, y, actor->target->x, actor->target->y));
|
||||
point = P_SpawnMobj(x, y, z, locvar1);
|
||||
P_SetTarget(&point->target, actor);
|
||||
point->angle = actor->angle;
|
||||
speed = point->radius;
|
||||
speed = point->radius*2;
|
||||
point->momz = FixedMul(FINECOSINE(angle>>ANGLETOFINESHIFT), speed);
|
||||
point->momx = FixedMul(FINESINE(angle>>ANGLETOFINESHIFT), FixedMul(FINECOSINE(point->angle>>ANGLETOFINESHIFT), speed));
|
||||
point->momy = FixedMul(FINESINE(angle>>ANGLETOFINESHIFT), FixedMul(FINESINE(point->angle>>ANGLETOFINESHIFT), speed));
|
||||
|
|
@ -2200,72 +2175,26 @@ void A_Boss1Laser(mobj_t *actor)
|
|||
{
|
||||
mobj_t *mo = P_SpawnMobj(point->x, point->y, point->z, point->type);
|
||||
mo->angle = point->angle;
|
||||
mo->color = LASERCOLORS[((UINT8)(i + 3*dur) >> 2) % sizeof(LASERCOLORS)]; // codeing
|
||||
P_UnsetThingPosition(mo);
|
||||
mo->flags = MF_NOCLIP|MF_NOCLIPHEIGHT|MF_NOGRAVITY|MF_SCENERY;
|
||||
mo->flags = MF_NOBLOCKMAP|MF_NOCLIP|MF_NOCLIPHEIGHT|MF_NOGRAVITY|MF_SCENERY;
|
||||
P_SetThingPosition(mo);
|
||||
|
||||
if (dur & 1 && mo->info->missilestate)
|
||||
{
|
||||
P_SetMobjState(mo, mo->info->missilestate);
|
||||
if (mo->info->meleestate)
|
||||
{
|
||||
mobj_t *mo2 = P_SpawnMobjFromMobj(mo, 0, 0, 0, MT_PARTICLE);
|
||||
mo2->flags2 |= MF2_LINKDRAW;
|
||||
P_SetTarget(&mo2->tracer, actor);
|
||||
P_SetMobjState(mo2, mo->info->meleestate);
|
||||
}
|
||||
}
|
||||
|
||||
if (dur == 1)
|
||||
P_SpawnGhostMobj(mo);
|
||||
|
||||
x = point->x, y = point->y, z = point->z;
|
||||
if (P_RailThinker(point))
|
||||
break;
|
||||
}
|
||||
|
||||
x += point->momx;
|
||||
y += point->momy;
|
||||
floorz = P_FloorzAtPos(x, y, z, mobjinfo[MT_EGGMOBILE_FIRE].height);
|
||||
if (z - floorz < mobjinfo[MT_EGGMOBILE_FIRE].height>>1 && dur & 1)
|
||||
if (z - floorz < mobjinfo[MT_EGGMOBILE_FIRE].height>>1)
|
||||
{
|
||||
point = P_SpawnMobj(x, y, floorz, MT_EGGMOBILE_FIRE);
|
||||
point->angle = actor->angle;
|
||||
point->destscale = actor->scale;
|
||||
P_SetScale(point, point->destscale);
|
||||
point = P_SpawnMobj(x, y, floorz+1, MT_EGGMOBILE_FIRE);
|
||||
P_SetTarget(&point->target, actor);
|
||||
P_MobjCheckWater(point);
|
||||
if (point->eflags & (MFE_UNDERWATER|MFE_TOUCHWATER))
|
||||
{
|
||||
for (i = 0; i < 2; i++)
|
||||
{
|
||||
UINT8 size = 3;
|
||||
mobj_t *steam = P_SpawnMobj(x, y, point->watertop - size*mobjinfo[MT_DUST].height, MT_DUST);
|
||||
P_SetScale(steam, size*actor->scale);
|
||||
P_SetObjectMomZ(steam, FRACUNIT + 2*P_RandomFixed(), true);
|
||||
P_InstaThrust(steam, FixedAngle(P_RandomKey(360)*FRACUNIT), 2*P_RandomFixed());
|
||||
if (point->info->painsound)
|
||||
S_StartSound(steam, point->info->painsound);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
fixed_t distx = P_ReturnThrustX(point, point->angle, point->radius);
|
||||
fixed_t disty = P_ReturnThrustY(point, point->angle, point->radius);
|
||||
if (P_TryMove(point, point->x + distx, point->y + disty, false, NULL) // prevents the sprite from clipping into the wall or dangling off ledges
|
||||
&& P_TryMove(point, point->x - 2*distx, point->y - 2*disty, false, NULL)
|
||||
&& P_TryMove(point, point->x + distx, point->y + disty, false, NULL))
|
||||
{
|
||||
if (point->info->seesound)
|
||||
S_StartSound(point, point->info->seesound);
|
||||
}
|
||||
else
|
||||
P_RemoveMobj(point);
|
||||
}
|
||||
point->destscale = 3*FRACUNIT;
|
||||
point->scalespeed = FRACUNIT>>2;
|
||||
point->fuse = TICRATE;
|
||||
}
|
||||
|
||||
if (dur > 1)
|
||||
if (actor->tics > 1)
|
||||
actor->flags2 |= MF2_FIRING;
|
||||
else
|
||||
actor->flags2 &= ~MF2_FIRING;
|
||||
|
|
@ -2278,16 +2207,11 @@ void A_Boss1Laser(mobj_t *actor)
|
|||
// var1:
|
||||
// 0 - accelerative focus with friction
|
||||
// 1 - steady focus with fixed movement speed
|
||||
// anything else - don't move
|
||||
// var2:
|
||||
// 0 - don't trace target, just move forwards
|
||||
// & 1 - change horizontal angle
|
||||
// & 2 - change vertical angle
|
||||
// var2 = unused
|
||||
//
|
||||
void A_FocusTarget(mobj_t *actor)
|
||||
{
|
||||
INT32 locvar1 = var1;
|
||||
INT32 locvar2 = var2;
|
||||
|
||||
if (LUA_CallAction(A_FOCUSTARGET, actor))
|
||||
return;
|
||||
|
|
@ -2295,9 +2219,9 @@ void A_FocusTarget(mobj_t *actor)
|
|||
if (actor->target)
|
||||
{
|
||||
fixed_t speed = FixedMul(actor->info->speed, actor->scale);
|
||||
fixed_t dist = (locvar2 ? R_PointToDist2(actor->x, actor->y, actor->target->x, actor->target->y) : speed+1);
|
||||
angle_t hangle = ((locvar2 & 1) ? R_PointToAngle2(actor->x, actor->y, actor->target->x, actor->target->y) : actor->angle);
|
||||
angle_t vangle = ((locvar2 & 2) ? R_PointToAngle2(actor->z , 0, actor->target->z + (actor->target->height>>1), dist) : ANGLE_90);
|
||||
fixed_t dist = R_PointToDist2(actor->x, actor->y, actor->target->x, actor->target->y);
|
||||
angle_t vangle = R_PointToAngle2(actor->z , 0, actor->target->z + (actor->target->height>>1), dist);
|
||||
angle_t hangle = R_PointToAngle2(actor->x, actor->y, actor->target->x, actor->target->y);
|
||||
switch(locvar1)
|
||||
{
|
||||
case 0:
|
||||
|
|
@ -6143,7 +6067,9 @@ void A_Boss3TakeDamage(mobj_t *actor)
|
|||
return;
|
||||
|
||||
actor->movecount = var1;
|
||||
actor->movefactor = -512*FRACUNIT;
|
||||
|
||||
if (actor->target && actor->target->spawnpoint)
|
||||
actor->threshold = actor->target->spawnpoint->extrainfo;
|
||||
}
|
||||
|
||||
// Function: A_Boss3Path
|
||||
|
|
@ -6178,28 +6104,24 @@ void A_Boss3Path(mobj_t *actor)
|
|||
}
|
||||
else if (actor->threshold >= 0) // Traveling mode
|
||||
{
|
||||
fixed_t dist = 0;
|
||||
thinker_t *th;
|
||||
mobj_t *mo2;
|
||||
fixed_t dist, dist2;
|
||||
fixed_t speed;
|
||||
|
||||
if (!(actor->flags2 & MF2_STRONGBOX))
|
||||
P_SetTarget(&actor->target, NULL);
|
||||
|
||||
// scan the thinkers
|
||||
// to find a point that matches
|
||||
// the number
|
||||
for (th = thlist[THINK_MOBJ].next; th != &thlist[THINK_MOBJ]; th = th->next)
|
||||
{
|
||||
mobj_t *mo2;
|
||||
INT32 i;
|
||||
if (th->function.acp1 == (actionf_p1)P_RemoveThinkerDelayed)
|
||||
continue;
|
||||
|
||||
P_SetTarget(&actor->target, NULL);
|
||||
|
||||
// Find waypoint
|
||||
TAG_ITER_THINGS(actor->cusval, i)
|
||||
mo2 = (mobj_t *)th;
|
||||
if (mo2->type == MT_BOSS3WAYPOINT && mo2->spawnpoint && mo2->spawnpoint->angle == actor->threshold)
|
||||
{
|
||||
mo2 = mapthings[i].mobj;
|
||||
|
||||
if (!mo2)
|
||||
continue;
|
||||
if (mo2->type != MT_BOSS3WAYPOINT)
|
||||
continue;
|
||||
if (mapthings[i].args[0] != actor->threshold)
|
||||
continue;
|
||||
|
||||
P_SetTarget(&actor->target, mo2);
|
||||
break;
|
||||
}
|
||||
|
|
@ -6207,117 +6129,67 @@ void A_Boss3Path(mobj_t *actor)
|
|||
|
||||
if (!actor->target) // Should NEVER happen
|
||||
{
|
||||
CONS_Debug(DBG_GAMELOGIC, "Error: Boss 3 Dummy was unable to find specified waypoint: %d, %d\n", actor->threshold, actor->cusval);
|
||||
CONS_Debug(DBG_GAMELOGIC, "Error: Boss 3 Dummy was unable to find specified waypoint: %d\n", actor->threshold);
|
||||
return;
|
||||
}
|
||||
|
||||
dist = P_AproxDistance(P_AproxDistance(actor->target->x - actor->x, actor->target->y - actor->y), actor->target->z - actor->z);
|
||||
|
||||
if (dist < 1)
|
||||
dist = 1;
|
||||
|
||||
if (actor->tracer && ((actor->tracer->movedir)
|
||||
|| (actor->tracer->health <= actor->tracer->info->damage)))
|
||||
speed = actor->info->speed * 2;
|
||||
else
|
||||
speed = actor->info->speed;
|
||||
|
||||
if (actor->target->x == actor->x && actor->target->y == actor->y)
|
||||
{
|
||||
dist = P_AproxDistance(P_AproxDistance(actor->target->x - actor->x, actor->target->y - actor->y), actor->target->z + actor->movefactor - actor->z);
|
||||
actor->momx = FixedMul(FixedDiv(actor->target->x - actor->x, dist), speed);
|
||||
actor->momy = FixedMul(FixedDiv(actor->target->y - actor->y, dist), speed);
|
||||
actor->momz = FixedMul(FixedDiv(actor->target->z - actor->z, dist), speed);
|
||||
|
||||
if (dist < 1)
|
||||
dist = 1;
|
||||
if (actor->momx != 0 || actor->momy != 0)
|
||||
actor->angle = R_PointToAngle2(0, 0, actor->momx, actor->momy);
|
||||
|
||||
actor->momx = FixedMul(FixedDiv(actor->target->x - actor->x, dist), speed);
|
||||
actor->momy = FixedMul(FixedDiv(actor->target->y - actor->y, dist), speed);
|
||||
actor->momz = FixedMul(FixedDiv(actor->target->z + actor->movefactor - actor->z, dist), speed);
|
||||
dist2 = P_AproxDistance(P_AproxDistance(actor->target->x - (actor->x + actor->momx), actor->target->y - (actor->y + actor->momy)), actor->target->z - (actor->z + actor->momz));
|
||||
|
||||
if (actor->momx != 0 || actor->momy != 0)
|
||||
actor->angle = R_PointToAngle2(0, 0, actor->momx, actor->momy);
|
||||
}
|
||||
if (dist2 < 1)
|
||||
dist2 = 1;
|
||||
|
||||
if (dist <= speed)
|
||||
if ((dist >> FRACBITS) <= (dist2 >> FRACBITS))
|
||||
{
|
||||
// If further away, set XYZ of mobj to waypoint location
|
||||
P_UnsetThingPosition(actor);
|
||||
actor->x = actor->target->x;
|
||||
actor->y = actor->target->y;
|
||||
actor->z = actor->target->z + actor->movefactor;
|
||||
actor->z = actor->target->z;
|
||||
actor->momx = actor->momy = actor->momz = 0;
|
||||
P_SetThingPosition(actor);
|
||||
|
||||
if (!actor->movefactor) // firing mode
|
||||
{
|
||||
actor->movecount |= 2;
|
||||
actor->movefactor = -512*FRACUNIT;
|
||||
actor->flags2 &= ~MF2_STRONGBOX;
|
||||
}
|
||||
else if (!(actor->flags2 & MF2_STRONGBOX)) // just spawned or going down
|
||||
{
|
||||
actor->flags2 |= MF2_STRONGBOX;
|
||||
actor->movefactor = -512*FRACUNIT;
|
||||
}
|
||||
else if (!(actor->flags2 & MF2_AMBUSH)) // just shifted tube
|
||||
{
|
||||
actor->flags2 |= MF2_AMBUSH;
|
||||
actor->movefactor = 0;
|
||||
}
|
||||
else // just hit the bottom of your tube
|
||||
if (actor->threshold == 0)
|
||||
{
|
||||
P_RemoveMobj(actor); // Cycle completed. Dummy removed.
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Function: A_Boss3ShockThink
|
||||
//
|
||||
// Description: Inserts new interstitial shockwave objects when the space between others spreads too much.
|
||||
//
|
||||
// var1 = unused
|
||||
// var2 = unused
|
||||
//
|
||||
void A_Boss3ShockThink(mobj_t *actor)
|
||||
{
|
||||
if (LUA_CallAction(A_BOSS3SHOCKTHINK, actor))
|
||||
return;
|
||||
// Set to next waypoint in sequence
|
||||
if (actor->target->spawnpoint)
|
||||
{
|
||||
// From the center point, choose one of the five paths
|
||||
if (actor->target->spawnpoint->angle == 0)
|
||||
{
|
||||
P_RemoveMobj(actor); // Cycle completed. Dummy removed.
|
||||
return;
|
||||
}
|
||||
else
|
||||
actor->threshold = actor->target->spawnpoint->extrainfo;
|
||||
|
||||
if (actor->momx || actor->momy)
|
||||
actor->angle = R_PointToAngle2(0, 0, actor->momx, actor->momy) + ANGLE_90;
|
||||
|
||||
if (actor->hnext && !P_MobjWasRemoved(actor->hnext))
|
||||
{
|
||||
mobj_t *snext = actor->hnext;
|
||||
mobj_t *snew;
|
||||
fixed_t x0, y0, x1, y1;
|
||||
|
||||
// Break the link if movements are too different
|
||||
if (R_PointToDist2(0, 0, snext->momx - actor->momx, snext->momy - actor->momy) > 12*actor->scale)
|
||||
{
|
||||
P_SetTarget(&actor->hnext, NULL);
|
||||
return;
|
||||
}
|
||||
|
||||
// Check distance between shockwave objects to determine whether interstitial ones should be spawned
|
||||
x0 = actor->x;
|
||||
y0 = actor->y;
|
||||
x1 = snext->x;
|
||||
y1 = snext->y;
|
||||
if (R_PointToDist2(0, 0, x1 - x0, y1 - y0) > 2*actor->radius)
|
||||
{
|
||||
snew = P_SpawnMobj((x0 >> 1) + (x1 >> 1),
|
||||
(y0 >> 1) + (y1 >> 1),
|
||||
(actor->z >> 1) + (snext->z >> 1), actor->type);
|
||||
snew->momx = (actor->momx + snext->momx) >> 1;
|
||||
snew->momy = (actor->momy + snext->momy) >> 1;
|
||||
snew->momz = (actor->momz + snext->momz) >> 1; // is this really needed?
|
||||
snew->angle = (actor->angle + snext->angle) >> 1;
|
||||
P_SetTarget(&snew->target, actor->target);
|
||||
snew->fuse = actor->fuse;
|
||||
|
||||
P_SetScale(snew, actor->scale);
|
||||
snew->destscale = actor->destscale;
|
||||
snew->scalespeed = actor->scalespeed;
|
||||
|
||||
P_SetTarget(&actor->hnext, snew);
|
||||
P_SetTarget(&snew->hnext, snext);
|
||||
// If the deaf flag is set, go into firing mode
|
||||
if (actor->target->spawnpoint->options & MTF_AMBUSH)
|
||||
actor->movecount |= 2;
|
||||
}
|
||||
else // This should never happen, as well
|
||||
CONS_Debug(DBG_GAMELOGIC, "Error: Boss 3 Dummy waypoint has no spawnpoint associated with it.\n");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -7167,7 +7039,7 @@ void A_SetObjectFlags2(mobj_t *actor)
|
|||
//
|
||||
// var1:
|
||||
// 0 - Triple jet fume pattern
|
||||
// 1 - Unused (formerly Boss 3's propeller)
|
||||
// 1 - Boss 3's propeller
|
||||
// 2 - Metal Sonic jet fume
|
||||
// 3 - Boss 4 jet flame
|
||||
// var2 = unused
|
||||
|
|
@ -7226,12 +7098,12 @@ void A_BossJetFume(mobj_t *actor)
|
|||
|
||||
P_SetTarget(&actor->tracer, filler);
|
||||
}
|
||||
/*else if (locvar1 == 1) // Boss 3 propeller
|
||||
else if (locvar1 == 1) // Boss 3 propeller
|
||||
{
|
||||
fixed_t jetx, jety, jetz;
|
||||
|
||||
jetx = actor->x + P_ReturnThrustX(actor, actor->angle, -60*actor->scale);
|
||||
jety = actor->y + P_ReturnThrustY(actor, actor->angle, -60*actor->scale);
|
||||
jetx = actor->x + P_ReturnThrustX(actor, actor->angle, -FixedMul(60*FRACUNIT, actor->scale));
|
||||
jety = actor->y + P_ReturnThrustY(actor, actor->angle, -FixedMul(60*FRACUNIT, actor->scale));
|
||||
if (actor->eflags & MFE_VERTICALFLIP)
|
||||
jetz = actor->z + actor->height - FixedMul(17*FRACUNIT + mobjinfo[MT_PROPELLER].height, actor->scale);
|
||||
else
|
||||
|
|
@ -7246,18 +7118,17 @@ void A_BossJetFume(mobj_t *actor)
|
|||
filler->angle = actor->angle - ANGLE_180;
|
||||
|
||||
P_SetTarget(&actor->tracer, filler);
|
||||
}*/
|
||||
}
|
||||
else if (locvar1 == 2) // Metal Sonic jet fumes
|
||||
{
|
||||
filler = P_SpawnMobj(actor->x, actor->y, actor->z, MT_JETFUME1);
|
||||
P_SetTarget(&filler->target, actor);
|
||||
filler->fuse = 59;
|
||||
P_SetTarget(&actor->tracer, filler);
|
||||
P_SetScale(filler, (filler->destscale = actor->scale/3));
|
||||
filler->destscale = actor->scale/2;
|
||||
P_SetScale(filler, filler->destscale);
|
||||
if (actor->eflags & MFE_VERTICALFLIP)
|
||||
filler->flags2 |= MF2_OBJECTFLIP;
|
||||
filler->color = SKINCOLOR_CYAN;
|
||||
filler->colorized = true;
|
||||
}
|
||||
else if (locvar1 == 3) // Boss 4 jet flame
|
||||
{
|
||||
|
|
@ -7265,7 +7136,7 @@ void A_BossJetFume(mobj_t *actor)
|
|||
if (actor->eflags & MFE_VERTICALFLIP)
|
||||
jetz = actor->z + actor->height + FixedMul(50*FRACUNIT - mobjinfo[MT_JETFLAME].height, actor->scale);
|
||||
else
|
||||
jetz = actor->z - 50*actor->scale;
|
||||
jetz = actor->z - FixedMul(50*FRACUNIT, actor->scale);
|
||||
filler = P_SpawnMobj(actor->x, actor->y, jetz, MT_JETFLAME);
|
||||
P_SetTarget(&filler->target, actor);
|
||||
// Boss 4 already uses its tracer for other things
|
||||
|
|
@ -7274,30 +7145,6 @@ void A_BossJetFume(mobj_t *actor)
|
|||
if (actor->eflags & MFE_VERTICALFLIP)
|
||||
filler->flags2 |= MF2_OBJECTFLIP;
|
||||
}
|
||||
else if (locvar1 == 4) // Boss 4 Spectator Eggrobo jet flame
|
||||
{
|
||||
fixed_t jetx, jety, jetz, movefactor = 12;
|
||||
|
||||
jetz = actor->z;
|
||||
if (actor->eflags & MFE_VERTICALFLIP)
|
||||
jetz += (actor->height - FixedMul(mobjinfo[MT_EGGROBO1JET].height, actor->scale));
|
||||
|
||||
while (true)
|
||||
{
|
||||
jetx = actor->x + P_ReturnThrustX(actor, actor->angle+ANGLE_90, movefactor*actor->scale) - P_ReturnThrustX(actor, actor->angle, 19*actor->scale);
|
||||
jety = actor->y + P_ReturnThrustY(actor, actor->angle+ANGLE_90, movefactor*actor->scale) - P_ReturnThrustY(actor, actor->angle, 19*actor->scale);
|
||||
filler = P_SpawnMobj(jetx, jety, jetz, MT_EGGROBO1JET);
|
||||
filler->movefactor = movefactor;
|
||||
P_SetTarget(&filler->target, actor);
|
||||
filler->destscale = actor->scale;
|
||||
P_SetScale(filler, filler->destscale);
|
||||
if (actor->eflags & MFE_VERTICALFLIP)
|
||||
filler->flags2 |= MF2_OBJECTFLIP;
|
||||
if (movefactor <= 0)
|
||||
break;
|
||||
movefactor = -movefactor;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Function: A_RandomState
|
||||
|
|
|
|||
|
|
@ -1498,7 +1498,6 @@ void P_KillMobj(mobj_t *target, mobj_t *inflictor, mobj_t *source, UINT8 damaget
|
|||
|
||||
case MT_EGGMOBILE3:
|
||||
{
|
||||
mobj_t *mo2;
|
||||
thinker_t *th;
|
||||
UINT32 i = 0; // to check how many clones we've removed
|
||||
|
||||
|
|
@ -1514,20 +1513,10 @@ void P_KillMobj(mobj_t *target, mobj_t *inflictor, mobj_t *source, UINT8 damaget
|
|||
if (mo->tracer != target)
|
||||
continue;
|
||||
|
||||
P_KillMobj(mo, inflictor, source, damagetype);
|
||||
mo->destscale = mo->scale/8;
|
||||
mo->scalespeed = (mo->scale - mo->destscale)/(2*TICRATE);
|
||||
mo->momz = mo->info->speed;
|
||||
mo->angle = FixedAngle((P_RandomKey(36)*10)<<FRACBITS);
|
||||
|
||||
mo2 = P_SpawnMobjFromMobj(mo, 0, 0, 0, MT_BOSSJUNK);
|
||||
mo2->angle = mo->angle;
|
||||
P_SetMobjState(mo2, S_BOSSSEBH2);
|
||||
P_RemoveMobj(mo);
|
||||
|
||||
if (++i == 2) // we've already removed 2 of these, let's stop now
|
||||
break;
|
||||
else
|
||||
S_StartSound(mo, mo->info->deathsound); // done once to prevent sound stacking
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
|
|
|||
1705
src/p_mobj.c
1705
src/p_mobj.c
File diff suppressed because it is too large
Load diff
|
|
@ -7355,25 +7355,12 @@ static void P_ConvertBinaryThingTypes(void)
|
|||
}
|
||||
break;
|
||||
}
|
||||
case 1101: //Torch
|
||||
case 1119: //Candle
|
||||
case 1120: //Candle pricket
|
||||
mapthings[i].args[0] = !!(mapthings[i].options & MTF_EXTRA);
|
||||
break;
|
||||
case 1121: //Flame holder
|
||||
if (mapthings[i].options & MTF_OBJECTSPECIAL)
|
||||
mapthings[i].args[0] |= TMFH_NOFLAME;
|
||||
if (mapthings[i].options & MTF_EXTRA)
|
||||
mapthings[i].args[0] |= TMFH_CORONA;
|
||||
break;
|
||||
case 1127: //Spectator EggRobo
|
||||
if (mapthings[i].options & MTF_AMBUSH)
|
||||
mapthings[i].args[0] = TMED_LEFT;
|
||||
else if (mapthings[i].options & MTF_OBJECTSPECIAL)
|
||||
mapthings[i].args[0] = TMED_RIGHT;
|
||||
else
|
||||
mapthings[i].args[0] = TMED_NONE;
|
||||
break;
|
||||
case 1200: //Tumbleweed (Big)
|
||||
case 1201: //Tumbleweed (Small)
|
||||
mapthings[i].args[0] = !!(mapthings[i].options & MTF_AMBUSH);
|
||||
|
|
|
|||
|
|
@ -111,13 +111,6 @@ typedef enum
|
|||
TMP_CLASSIC = 3,
|
||||
} textmappushabletype_t;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
TMED_NONE = 0,
|
||||
TMED_RIGHT = 1,
|
||||
TMED_LEFT = 2,
|
||||
} textmapeggrobodirection_t;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
TMMR_SAME = 0,
|
||||
|
|
|
|||
Loading…
Reference in a new issue