- 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_TokenMustBe(TK_RPAREN, ERR_MISSING_RPAREN);
TK_NextTokenMustBe(TK_SEMICOLON, ERR_MISSING_SEMICOLON); 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)); PC_AppendCmd(PCD_LSPEC1+(argCount-1));
if(pc_NoShrink) if(pc_NoShrink)
@ -3502,8 +3516,8 @@ static void ExprLineSpecial(void)
} }
TK_TokenMustBe(TK_RPAREN, ERR_MISSING_RPAREN); TK_TokenMustBe(TK_RPAREN, ERR_MISSING_RPAREN);
TK_NextToken(); TK_NextToken();
PC_AppendCmd(PCD_LSPEC5RESULT); PC_AppendCmd(specialValue <= 255? PCD_LSPEC5RESULT : PCD_LSPEC5EXRESULT);
if(pc_NoShrink) if(pc_NoShrink || specialValue > 255)
{ {
PC_AppendInt(specialValue); PC_AppendInt(specialValue);
} }

View file

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

View file

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

View file

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