Merge branch 'newspecials'

This commit is contained in:
Christoph Oelckers 2016-02-06 01:46:52 +01:00
commit 28aeaf0c11
4 changed files with 70 additions and 29 deletions

20
parse.c
View file

@ -1635,7 +1635,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)
@ -3513,8 +3527,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,19 +39,19 @@ 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),
41:Ceiling_RaiseByValue(3),
40:Ceiling_LowerByValue(3,4),
41:Ceiling_RaiseByValue(3,4),
42:Ceiling_CrushAndRaise(3,4),
43:Ceiling_LowerAndCrush(3,4),
44:Ceiling_CrushStop(1),
45:Ceiling_CrushRaiseAndStay(3,4),
46:Floor_CrushStop(1),
47:Ceiling_MoveToValue(3,4),
47:Ceiling_MoveToValue(3,5),
// 48:Sector_Attach3dMidtex
49:GlassBreak(0,1),
// 50:ExtraFloor_LightOnly
@ -70,10 +70,10 @@ 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),
69:Ceiling_MoveToValueTimes8(4),
66:Floor_LowerInstant(3,4),
67:Floor_RaiseInstant(3,5),
68:Floor_MoveToValueTimes8(4,5),
69:Ceiling_MoveToValueTimes8(4,5),
70:Teleport(1,3),
71:Teleport_NoFog(1,4),
72:ThrustThing(2,4),
@ -109,6 +109,8 @@ special
// 102:Scroll_Texture_Up
// 103:Scroll_Texture_Down
104:Ceiling_CrushAndRaiseSilentDist(4,5),
105:Door_WaitRaise(4,5),
106:Door_WaitClose(3,4),
109:Light_ForceLightning(1),
110:Light_RaiseByValue(2),
@ -177,14 +179,14 @@ special
188:Sector_SetCeilingScale(5),
189:Sector_SetFloorScale(5),
191:SetPlayerProperty(3),
192:Ceiling_LowerToHighestFloor(2),
193:Ceiling_LowerInstant(3),
194:Ceiling_RaiseInstant(3),
192:Ceiling_LowerToHighestFloor(2,4),
193:Ceiling_LowerInstant(3,5),
194:Ceiling_RaiseInstant(3,4),
195:Ceiling_CrushRaiseAndStayA(4,5),
196:Ceiling_CrushAndRaiseA(4,5),
197:Ceiling_CrushAndRaiseSilentA(4,5),
198:Ceiling_RaiseByValueTimes8(3),
199:Ceiling_LowerByValueTimes8(3),
198:Ceiling_RaiseByValueTimes8(3,4),
199:Ceiling_LowerByValueTimes8(3,4),
200:Generic_Floor(5),
201:Generic_Ceiling(5),
202:Generic_Door(5),
@ -223,9 +225,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),
@ -237,10 +239,31 @@ special
249:Door_CloseWaitOpen(3, 4),
250:Floor_Donut(3),
251:FloorAndCeiling_LowerRaise(3,4),
252:Ceiling_RaiseToNearest(2),
253:Ceiling_LowerToLowest(2),
254:Ceiling_LowerToFloor(2),
252:Ceiling_RaiseToNearest(2,3),
253:Ceiling_LowerToLowest(2,4),
254:Ceiling_LowerToFloor(2,4),
255:Ceiling_CrushRaiseAndStaySilA(4,5),
// These are specialized versions of the Generic_* specials which are defined for EE Extradata.
256:Floor_LowerToHighestEE(2, 3),
257:Floor_RaiseToLowest(2, 3),
258:Floor_LowerToLowestCeiling(2,3),
259:Floor_RaiseToCeiling(2, 4),
260:Floor_ToCeilingInstant(1, 3),
261:Floor_LowerByTexture(2, 3),
262:Ceiling_RaiseToHighest(2, 3),
263:Ceiling_ToHighestInstant(1, 3),
264:Ceiling_LowerToNearest(2, 4),
265:Ceiling_RaiseToLowest(2, 3),
266:Ceiling_RaiseToHighestFloor(2, 3),
267:Ceiling_ToFloorInstant(1, 3),
268:Ceiling_RaiseByTexture(2, 3),
269:Ceiling_LowerByTexture(2, 4),
270:Stairs_BuildDownDoom(5),
271:Stairs_BuildUpDoomSync(4),
272:Stairs_BuildDownDoomSync(4),
// internal functions have negative values
-1:GetLineUDMFInt(2),