- added new PCodes to handle action specials > 255.

- added some new specials and parameters from EE.
This commit is contained in:
Christoph Oelckers 2016-01-25 13:06:36 +01:00
parent d5442ef4e6
commit ab65e882d0
4 changed files with 41 additions and 17 deletions

20
parse.c
View file

@ -1624,7 +1624,21 @@ static void LeadingLineSpecial(boolean executewait)
}
TK_TokenMustBe(TK_RPAREN, ERR_MISSING_RPAREN);
TK_NextTokenMustBe(TK_SEMICOLON, ERR_MISSING_SEMICOLON);
if(direct == NO)
if (specialValue > 255)
{
for(; argCount < 5; ++argCount)
{
PC_AppendPushVal(0);
}
PC_AppendCmd(PCD_LSPEC5EX);
PC_AppendInt(specialValue);
if(executewait)
{
PC_AppendCmd(PCD_SCRIPTWAITDIRECT);
PC_AppendInt(argSave[0]);
}
}
else if(direct == NO)
{
PC_AppendCmd(PCD_LSPEC1+(argCount-1));
if(pc_NoShrink)
@ -3502,8 +3516,8 @@ static void ExprLineSpecial(void)
}
TK_TokenMustBe(TK_RPAREN, ERR_MISSING_RPAREN);
TK_NextToken();
PC_AppendCmd(PCD_LSPEC5RESULT);
if(pc_NoShrink)
PC_AppendCmd(specialValue <= 255? PCD_LSPEC5RESULT : PCD_LSPEC5EXRESULT);
if(pc_NoShrink || specialValue > 255)
{
PC_AppendInt(specialValue);
}

View file

@ -499,6 +499,8 @@ static char *PCDNames[PCODE_COMMAND_COUNT] =
"PCD_PRINTSCRIPTCHARARRAY",
"PCD_PRINTSCRIPTCHRANGE",
"PCD_STRCPYTOSCRIPTCHRANGE",
"PCD_LSPEC5EX",
"PCD_LSPEC5EXRESULT",
};
// CODE --------------------------------------------------------------------

View file

@ -444,6 +444,8 @@ typedef enum
PCD_PRINTSCRIPTCHARARRAY,
PCD_PRINTSCRIPTCHRANGE,
PCD_STRCPYTOSCRIPTCHRANGE,
PCD_LSPEC5EX,
PCD_LSPEC5EXRESULT,
PCODE_COMMAND_COUNT
} pcd_t;

View file

@ -24,12 +24,12 @@ special
17:Thing_Raise(1),
18:StartConversation(1,2),
19:Thing_Stop(1),
20:Floor_LowerByValue(3),
21:Floor_LowerToLowest(2),
22:Floor_LowerToNearest(2),
23:Floor_RaiseByValue(3),
24:Floor_RaiseToHighest(2),
25:Floor_RaiseToNearest(2),
20:Floor_LowerByValue(3,4),
21:Floor_LowerToLowest(2,3),
22:Floor_LowerToNearest(2,3),
23:Floor_RaiseByValue(3,5),
24:Floor_RaiseToHighest(2,5),
25:Floor_RaiseToNearest(2,4),
26:Stairs_BuildDown(5),
27:Stairs_BuildUp(5),
28:Floor_RaiseAndCrush(3,4),
@ -39,9 +39,9 @@ special
32:Stairs_BuildUpSync(4),
33:ForceField(0),
34:ClearForceField(1),
35:Floor_RaiseByValueTimes8(3),
36:Floor_LowerByValueTimes8(3),
37:Floor_MoveToValue(3,4),
35:Floor_RaiseByValueTimes8(3,5),
36:Floor_LowerByValueTimes8(3,4),
37:Floor_MoveToValue(3,5),
38:Ceiling_Waggle(5),
39:Teleport_ZombieChanger(2),
40:Ceiling_LowerByValue(3),
@ -70,9 +70,9 @@ special
63:Plat_DownByValue(4),
64:Plat_UpWaitDownStay(3),
65:Plat_UpByValue(4),
66:Floor_LowerInstant(3),
67:Floor_RaiseInstant(3),
68:Floor_MoveToValueTimes8(4),
66:Floor_LowerInstant(3,4),
67:Floor_RaiseInstant(3,5),
68:Floor_MoveToValueTimes8(4,5),
69:Ceiling_MoveToValueTimes8(4),
70:Teleport(1,3),
71:Teleport_NoFog(1,4),
@ -109,6 +109,9 @@ special
// 102:Scroll_Texture_Up
// 103:Scroll_Texture_Down
104:Ceiling_CrushAndRaiseSilentDist(4,5),
105:Door_WaitRaise(4,5),
106:Door_WaitClose(3,4),
107:Floor_LowerToLowestCeiling(2,3),
109:Light_ForceLightning(1),
110:Light_RaiseByValue(2),
@ -223,9 +226,9 @@ special
235:Floor_TransferTrigger(1),
236:Floor_TransferNumeric(1),
237:ChangeCamera(3),
238:Floor_RaiseToLowestCeiling(2),
238:Floor_RaiseToLowestCeiling(2,4),
239:Floor_RaiseByValueTxTy(3),
240:Floor_RaiseByTexture(2),
240:Floor_RaiseByTexture(2,4),
241:Floor_LowerToLowestTxTy(2),
242:Floor_LowerToHighest(3,4),
243:Exit_Normal(1),
@ -242,6 +245,9 @@ special
254:Ceiling_LowerToFloor(2),
255:Ceiling_CrushRaiseAndStaySilA(4,5),
256:Floor_LowerToHighestEE(2, 3),
257:Floor_RaiseToLowest(2, 3),
// internal functions have negative values
-1:GetLineUDMFInt(2),
-2:GetLineUDMFFixed(2),