mirror of
https://git.do.srb2.org/STJr/SRB2.git
synced 2025-01-18 15:32:33 +00:00
Implement linedef type 100-146
This commit is contained in:
parent
a9866f84ad
commit
1e306dc7b4
2 changed files with 39 additions and 84 deletions
|
@ -2839,6 +2839,45 @@ static void P_ConvertBinaryMap(void)
|
||||||
if (lines[i].special != 100 && (lines[i].special != 104 || !(lines[i].flags & ML_NOCLIMB)))
|
if (lines[i].special != 100 && (lines[i].special != 104 || !(lines[i].flags & ML_NOCLIMB)))
|
||||||
lines[i].args[4] = 1;
|
lines[i].args[4] = 1;
|
||||||
|
|
||||||
|
lines[i].special = 100;
|
||||||
|
break;
|
||||||
|
case 140: //FOF: intangible from bottom, opaque
|
||||||
|
case 141: //FOF: intangible from bottom, translucent
|
||||||
|
case 142: //FOF: intangible from bottom, translucent, no sides
|
||||||
|
case 143: //FOF: intangible from top, opaque
|
||||||
|
case 144: //FOF: intangible from top, translucent
|
||||||
|
case 145: //FOF: intangible from top, translucent, no sides
|
||||||
|
case 146: //FOF: only tangible from sides
|
||||||
|
lines[i].args[0] = lines[i].tag;
|
||||||
|
|
||||||
|
//Visibility
|
||||||
|
if (lines[i].special == 142 || lines[i].special == 145)
|
||||||
|
lines[i].args[1] = 2;
|
||||||
|
else if (lines[i].special == 146)
|
||||||
|
lines[i].args[1] = 1;
|
||||||
|
|
||||||
|
//Translucency
|
||||||
|
if (lines[i].special == 141 || lines[i].special == 142 || lines[i].special == 144 || lines[i].special == 145)
|
||||||
|
{
|
||||||
|
lines[i].args[2] = (lines[i].flags & ML_EFFECT2) ? 2 : 1;
|
||||||
|
if (sides[lines[i].sidenum[0]].toptexture > 0)
|
||||||
|
lines[i].alpha = (sides[lines[i].sidenum[0]].toptexture << FRACBITS)/255;
|
||||||
|
else
|
||||||
|
lines[i].alpha = FRACUNIT/2;
|
||||||
|
}
|
||||||
|
|
||||||
|
//Tangibility
|
||||||
|
if (lines[i].special <= 142)
|
||||||
|
lines[i].args[3] |= 2;
|
||||||
|
else if (lines[i].special <= 145)
|
||||||
|
lines[i].args[3] |= 1;
|
||||||
|
else
|
||||||
|
lines[i].args[3] |= 3;
|
||||||
|
|
||||||
|
//Shadow?
|
||||||
|
if (lines[i].special != 146 && (lines[i].flags & ML_NOCLIMB))
|
||||||
|
lines[i].args[4] = 1;
|
||||||
|
|
||||||
lines[i].special = 100;
|
lines[i].special = 100;
|
||||||
break;
|
break;
|
||||||
case 443: //Call Lua function
|
case 443: //Call Lua function
|
||||||
|
|
84
src/p_spec.c
84
src/p_spec.c
|
@ -6873,90 +6873,6 @@ void P_SpawnSpecials(boolean fromnetsave)
|
||||||
P_AddFakeFloorsByLine(i, ffloorflags, secthinkers);
|
P_AddFakeFloorsByLine(i, ffloorflags, secthinkers);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 140: // 'Platform' - You can jump up through it
|
|
||||||
// If line has no-climb set, don't give it shadows, otherwise do
|
|
||||||
ffloorflags = FF_EXISTS|FF_SOLID|FF_RENDERALL|FF_PLATFORM|FF_BOTHPLANES|FF_ALLSIDES;
|
|
||||||
if (lines[i].flags & ML_NOCLIMB)
|
|
||||||
ffloorflags |= FF_NOSHADE;
|
|
||||||
|
|
||||||
P_AddFakeFloorsByLine(i, ffloorflags, secthinkers);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 141: // Translucent "platform"
|
|
||||||
// If line has no-climb set, don't give it shadows, otherwise do
|
|
||||||
ffloorflags = FF_EXISTS|FF_SOLID|FF_RENDERALL|FF_PLATFORM|FF_TRANSLUCENT|FF_EXTRA|FF_CUTEXTRA;
|
|
||||||
if (lines[i].flags & ML_NOCLIMB)
|
|
||||||
ffloorflags |= FF_NOSHADE;
|
|
||||||
|
|
||||||
// Draw the 'insides' of the block too
|
|
||||||
if (lines[i].flags & ML_EFFECT2)
|
|
||||||
{
|
|
||||||
ffloorflags |= FF_CUTLEVEL|FF_BOTHPLANES|FF_ALLSIDES;
|
|
||||||
ffloorflags &= ~(FF_EXTRA|FF_CUTEXTRA);
|
|
||||||
}
|
|
||||||
|
|
||||||
P_AddFakeFloorsByLine(i, ffloorflags, secthinkers);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 142: // Translucent "platform" with no sides
|
|
||||||
ffloorflags = FF_EXISTS|FF_SOLID|FF_RENDERPLANES|FF_TRANSLUCENT|FF_PLATFORM|FF_EXTRA|FF_CUTEXTRA;
|
|
||||||
if (lines[i].flags & ML_NOCLIMB) // shade it unless no-climb
|
|
||||||
ffloorflags |= FF_NOSHADE;
|
|
||||||
|
|
||||||
// Draw the 'insides' of the block too
|
|
||||||
if (lines[i].flags & ML_EFFECT2)
|
|
||||||
{
|
|
||||||
ffloorflags |= FF_CUTLEVEL|FF_BOTHPLANES|FF_ALLSIDES;
|
|
||||||
ffloorflags &= ~(FF_EXTRA|FF_CUTEXTRA);
|
|
||||||
}
|
|
||||||
|
|
||||||
P_AddFakeFloorsByLine(i, ffloorflags, secthinkers);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 143: // 'Reverse platform' - You fall through it
|
|
||||||
// If line has no-climb set, don't give it shadows, otherwise do
|
|
||||||
ffloorflags = FF_EXISTS|FF_SOLID|FF_RENDERALL|FF_REVERSEPLATFORM|FF_BOTHPLANES|FF_ALLSIDES;
|
|
||||||
if (lines[i].flags & ML_NOCLIMB)
|
|
||||||
ffloorflags |= FF_NOSHADE;
|
|
||||||
|
|
||||||
P_AddFakeFloorsByLine(i, ffloorflags, secthinkers);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 144: // Translucent "reverse platform"
|
|
||||||
// If line has no-climb set, don't give it shadows, otherwise do
|
|
||||||
ffloorflags = FF_EXISTS|FF_SOLID|FF_RENDERALL|FF_REVERSEPLATFORM|FF_TRANSLUCENT|FF_EXTRA|FF_CUTEXTRA;
|
|
||||||
if (lines[i].flags & ML_NOCLIMB)
|
|
||||||
ffloorflags |= FF_NOSHADE;
|
|
||||||
|
|
||||||
// Draw the 'insides' of the block too
|
|
||||||
if (lines[i].flags & ML_EFFECT2)
|
|
||||||
{
|
|
||||||
ffloorflags |= FF_CUTLEVEL|FF_BOTHPLANES|FF_ALLSIDES;
|
|
||||||
ffloorflags &= ~(FF_EXTRA|FF_CUTEXTRA);
|
|
||||||
}
|
|
||||||
|
|
||||||
P_AddFakeFloorsByLine(i, ffloorflags, secthinkers);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 145: // Translucent "reverse platform" with no sides
|
|
||||||
ffloorflags = FF_EXISTS|FF_SOLID|FF_RENDERPLANES|FF_TRANSLUCENT|FF_REVERSEPLATFORM|FF_EXTRA|FF_CUTEXTRA;
|
|
||||||
if (lines[i].flags & ML_NOCLIMB) // shade it unless no-climb
|
|
||||||
ffloorflags |= FF_NOSHADE;
|
|
||||||
|
|
||||||
// Draw the 'insides' of the block too
|
|
||||||
if (lines[i].flags & ML_EFFECT2)
|
|
||||||
{
|
|
||||||
ffloorflags |= FF_CUTLEVEL|FF_BOTHPLANES|FF_ALLSIDES;
|
|
||||||
ffloorflags &= ~(FF_EXTRA|FF_CUTEXTRA);
|
|
||||||
}
|
|
||||||
|
|
||||||
P_AddFakeFloorsByLine(i, ffloorflags, secthinkers);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 146: // Intangible floor/ceiling with solid sides (fences/hoops maybe?)
|
|
||||||
P_AddFakeFloorsByLine(i, FF_EXISTS|FF_SOLID|FF_RENDERSIDES|FF_ALLSIDES|FF_INTANGIBLEFLATS, secthinkers);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 150: // Air bobbing platform
|
case 150: // Air bobbing platform
|
||||||
case 151: // Adjustable air bobbing platform
|
case 151: // Adjustable air bobbing platform
|
||||||
P_AddFakeFloorsByLine(i, FF_EXISTS|FF_SOLID|FF_RENDERALL|FF_CUTLEVEL, secthinkers);
|
P_AddFakeFloorsByLine(i, FF_EXISTS|FF_SOLID|FF_RENDERALL|FF_CUTLEVEL, secthinkers);
|
||||||
|
|
Loading…
Reference in a new issue