mirror of
https://github.com/ZDoom/gzdoom-last-svn.git
synced 2025-05-30 17:00:48 +00:00
* Updated to ZDoom r3340:
- Play "misc/secret" as a UI sound. - Fixed: LIGHT2SHADE would overflow with light values larger than 10 bits. - Remove an int->bool conversion warning. - Added missing newline characters to [BSP rebuilding] messages in p_glnodes.cpp. - Fixed: Hexen's ACS implementation truncates all line specials to bytes, so we need to do the same for maps defined with Hexen-style MAPINFOs. - Fixed: Setting an actor's score with ACS also modified its nametag. git-svn-id: http://mancubus.net/svn/hosted/gzdoom/trunk@1282 b0f79afe-0144-0410-b225-9a4edf0717df
This commit is contained in:
parent
a691a5dc46
commit
e90377ae9a
6 changed files with 54 additions and 28 deletions
|
@ -2771,6 +2771,7 @@ void DLevelScript::DoSetActorProperty (AActor *actor, int property, int value)
|
|||
|
||||
case APROP_Score:
|
||||
actor->Score = value;
|
||||
break;
|
||||
|
||||
case APROP_NameTag:
|
||||
actor->SetTag(FBehavior::StaticLookupString(value));
|
||||
|
@ -3675,6 +3676,9 @@ int DLevelScript::RunScript ()
|
|||
FRemapTable *translation = 0;
|
||||
int resultValue = 1;
|
||||
|
||||
// Hexen truncates all special arguments to bytes.
|
||||
const int specialargmask = (level.flags2 & LEVEL2_HEXENHACK) ? 255 : ~0;
|
||||
|
||||
switch (state)
|
||||
{
|
||||
case SCRIPT_Delayed:
|
||||
|
@ -3844,78 +3848,100 @@ int DLevelScript::RunScript ()
|
|||
|
||||
case PCD_LSPEC1:
|
||||
P_ExecuteSpecial(NEXTBYTE, activationline, activator, backSide,
|
||||
STACK(1), 0, 0, 0, 0);
|
||||
STACK(1) & specialargmask, 0, 0, 0, 0);
|
||||
sp -= 1;
|
||||
break;
|
||||
|
||||
case PCD_LSPEC2:
|
||||
P_ExecuteSpecial(NEXTBYTE, activationline, activator, backSide,
|
||||
STACK(2), STACK(1), 0, 0, 0);
|
||||
STACK(2) & specialargmask,
|
||||
STACK(1) & specialargmask, 0, 0, 0);
|
||||
sp -= 2;
|
||||
break;
|
||||
|
||||
case PCD_LSPEC3:
|
||||
P_ExecuteSpecial(NEXTBYTE, activationline, activator, backSide,
|
||||
STACK(3), STACK(2), STACK(1), 0, 0);
|
||||
STACK(3) & specialargmask,
|
||||
STACK(2) & specialargmask,
|
||||
STACK(1) & specialargmask, 0, 0);
|
||||
sp -= 3;
|
||||
break;
|
||||
|
||||
case PCD_LSPEC4:
|
||||
P_ExecuteSpecial(NEXTBYTE, activationline, activator, backSide,
|
||||
STACK(4), STACK(3), STACK(2),
|
||||
STACK(1), 0);
|
||||
STACK(4) & specialargmask,
|
||||
STACK(3) & specialargmask,
|
||||
STACK(2) & specialargmask,
|
||||
STACK(1) & specialargmask, 0);
|
||||
sp -= 4;
|
||||
break;
|
||||
|
||||
case PCD_LSPEC5:
|
||||
P_ExecuteSpecial(NEXTBYTE, activationline, activator, backSide,
|
||||
STACK(5), STACK(4), STACK(3),
|
||||
STACK(2), STACK(1));
|
||||
STACK(5) & specialargmask,
|
||||
STACK(4) & specialargmask,
|
||||
STACK(3) & specialargmask,
|
||||
STACK(2) & specialargmask,
|
||||
STACK(1) & specialargmask);
|
||||
sp -= 5;
|
||||
break;
|
||||
|
||||
case PCD_LSPEC5RESULT:
|
||||
STACK(5) = P_ExecuteSpecial(NEXTBYTE, activationline, activator, backSide,
|
||||
STACK(5), STACK(4), STACK(3),
|
||||
STACK(2), STACK(1));
|
||||
STACK(5) & specialargmask,
|
||||
STACK(4) & specialargmask,
|
||||
STACK(3) & specialargmask,
|
||||
STACK(2) & specialargmask,
|
||||
STACK(1) & specialargmask);
|
||||
sp -= 4;
|
||||
break;
|
||||
|
||||
case PCD_LSPEC1DIRECT:
|
||||
temp = NEXTBYTE;
|
||||
P_ExecuteSpecial(temp, activationline, activator, backSide,
|
||||
uallong(pc[0]), 0, 0, 0, 0);
|
||||
uallong(pc[0]) & specialargmask ,0, 0, 0, 0);
|
||||
pc += 1;
|
||||
break;
|
||||
|
||||
case PCD_LSPEC2DIRECT:
|
||||
temp = NEXTBYTE;
|
||||
P_ExecuteSpecial(temp, activationline, activator, backSide,
|
||||
uallong(pc[0]), uallong(pc[1]), 0, 0, 0);
|
||||
uallong(pc[0]) & specialargmask,
|
||||
uallong(pc[1]) & specialargmask, 0, 0, 0);
|
||||
pc += 2;
|
||||
break;
|
||||
|
||||
case PCD_LSPEC3DIRECT:
|
||||
temp = NEXTBYTE;
|
||||
P_ExecuteSpecial(temp, activationline, activator, backSide,
|
||||
uallong(pc[0]), uallong(pc[1]), uallong(pc[2]), 0, 0);
|
||||
uallong(pc[0]) & specialargmask,
|
||||
uallong(pc[1]) & specialargmask,
|
||||
uallong(pc[2]) & specialargmask, 0, 0);
|
||||
pc += 3;
|
||||
break;
|
||||
|
||||
case PCD_LSPEC4DIRECT:
|
||||
temp = NEXTBYTE;
|
||||
P_ExecuteSpecial(temp, activationline, activator, backSide,
|
||||
uallong(pc[0]), uallong(pc[1]), uallong(pc[2]), uallong(pc[3]), 0);
|
||||
uallong(pc[0]) & specialargmask,
|
||||
uallong(pc[1]) & specialargmask,
|
||||
uallong(pc[2]) & specialargmask,
|
||||
uallong(pc[3]) & specialargmask, 0);
|
||||
pc += 4;
|
||||
break;
|
||||
|
||||
case PCD_LSPEC5DIRECT:
|
||||
temp = NEXTBYTE;
|
||||
P_ExecuteSpecial(temp, activationline, activator, backSide,
|
||||
uallong(pc[0]), uallong(pc[1]), uallong(pc[2]), uallong(pc[3]), uallong(pc[4]));
|
||||
uallong(pc[0]) & specialargmask,
|
||||
uallong(pc[1]) & specialargmask,
|
||||
uallong(pc[2]) & specialargmask,
|
||||
uallong(pc[3]) & specialargmask,
|
||||
uallong(pc[4]) & specialargmask);
|
||||
pc += 5;
|
||||
break;
|
||||
|
||||
// Parameters for PCD_LSPEC?DIRECTB are by definition bytes so never need and-ing.
|
||||
case PCD_LSPEC1DIRECTB:
|
||||
P_ExecuteSpecial(((BYTE *)pc)[0], activationline, activator, backSide,
|
||||
((BYTE *)pc)[1], 0, 0, 0, 0);
|
||||
|
|
|
@ -208,7 +208,7 @@ bool P_CheckForGLNodes()
|
|||
int missing = CheckForMissingSegs();
|
||||
if (missing > 0)
|
||||
{
|
||||
Printf("%d missing segs counted\nThe BSP needs to be rebuilt", missing);
|
||||
Printf("%d missing segs counted\nThe BSP needs to be rebuilt.\n", missing);
|
||||
}
|
||||
return missing == 0;
|
||||
}
|
||||
|
@ -718,7 +718,7 @@ static bool DoLoadGLNodes(FileReader * f, wadlump_t * lumps)
|
|||
int missing = CheckForMissingSegs();
|
||||
if (missing > 0)
|
||||
{
|
||||
Printf("%d missing segs counted in GL nodes.\nThe BSP has to be rebuilt", missing);
|
||||
Printf("%d missing segs counted in GL nodes.\nThe BSP has to be rebuilt.\n", missing);
|
||||
}
|
||||
return missing == 0;
|
||||
}
|
||||
|
|
|
@ -236,7 +236,7 @@ bool P_ActivateLine (line_t *line, AActor *mo, int side, int activationType)
|
|||
{
|
||||
return false;
|
||||
}
|
||||
bool remote = (line->special != 7 && line->special != 8 && (line->special < 11 || line->special > 14));
|
||||
bool remote = (line->special != 7 && line->special != 8 && (line->special < 11 || line->special > 14));
|
||||
if (line->locknumber > 0 && !P_CheckKeys (mo, line->locknumber, remote)) return false;
|
||||
lineActivation = line->activation;
|
||||
repeat = line->flags & ML_REPEAT_SPECIAL;
|
||||
|
@ -603,7 +603,7 @@ void P_GiveSecret(AActor *actor, bool printmessage, bool playsound)
|
|||
if (actor->CheckLocalView (consoleplayer))
|
||||
{
|
||||
if (printmessage) C_MidPrint (SmallFont, secretmessage);
|
||||
if (playsound) S_Sound (CHAN_AUTO, "misc/secret", 1, ATTN_NORM);
|
||||
if (playsound) S_Sound (CHAN_AUTO | CHAN_UI, "misc/secret", 1, ATTN_NORM);
|
||||
}
|
||||
}
|
||||
level.found_secrets++;
|
||||
|
|
14
src/r_defs.h
14
src/r_defs.h
|
@ -985,13 +985,13 @@ struct line_t
|
|||
side_t *sidedef[2];
|
||||
//DWORD sidenum[2]; // sidenum[1] will be NO_SIDE if one sided
|
||||
fixed_t bbox[4]; // bounding box, for the extent of the LineDef.
|
||||
slopetype_t slopetype; // To aid move clipping.
|
||||
sector_t *frontsector, *backsector;
|
||||
int validcount; // if == validcount, already checked
|
||||
int locknumber; // [Dusk] lock number for special
|
||||
};
|
||||
|
||||
// phares 3/14/98
|
||||
slopetype_t slopetype; // To aid move clipping.
|
||||
sector_t *frontsector, *backsector;
|
||||
int validcount; // if == validcount, already checked
|
||||
int locknumber; // [Dusk] lock number for special
|
||||
};
|
||||
|
||||
// phares 3/14/98
|
||||
//
|
||||
// Sector list node showing all sectors an object appears in.
|
||||
//
|
||||
|
|
|
@ -74,7 +74,7 @@ extern bool r_dontmaplines;
|
|||
// Convert a light level into an unbounded colormap index (shade). Result is
|
||||
// fixed point. Why the +12? I wish I knew, but experimentation indicates it
|
||||
// is necessary in order to best reproduce Doom's original lighting.
|
||||
#define LIGHT2SHADE(l) ((NUMCOLORMAPS*2*FRACUNIT)-(((l)+12)*FRACUNIT*NUMCOLORMAPS/128))
|
||||
#define LIGHT2SHADE(l) ((NUMCOLORMAPS*2*FRACUNIT)-(((l)+12)*(FRACUNIT*NUMCOLORMAPS/128)))
|
||||
|
||||
// MAXLIGHTSCALE from original DOOM, divided by 2.
|
||||
#define MAXLIGHTVIS (24*FRACUNIT)
|
||||
|
|
|
@ -3,5 +3,5 @@
|
|||
// This file was automatically generated by the
|
||||
// updaterevision tool. Do not edit by hand.
|
||||
|
||||
#define ZD_SVN_REVISION_STRING "3334"
|
||||
#define ZD_SVN_REVISION_NUMBER 3334
|
||||
#define ZD_SVN_REVISION_STRING "3340"
|
||||
#define ZD_SVN_REVISION_NUMBER 3340
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue