- Fixed: POwered up weapons with a different ready state than their base

weapon didn't change back when the powerup expired.
- Fixed: The powered up version of Heretic's Gauntlets missed the proper
  state assignments for Ready, Lower and Raise.
- Fixed: The Strife player was missing its pain state.
- Fixed: Revenant missiles couldn't home in on targets with a height lower than
  40.
- Fixed: The code which checked for hitscan traces hitting actors from above
  and below must test whether the calculated hit position is actually inside 
  the actor being checked. If it crosses the top/bottom plane outside the
  bounding box there can't be a hit.
- Changed: State labels in code pointer calls must now be enclosed in quotation marks.
  This was done to ensure compatibility with parsers that will parse these as
  identifier-aware script code later.


SVN r554 (trunk)
This commit is contained in:
Christoph Oelckers 2007-10-19 08:49:02 +00:00
parent c81fe8d061
commit 3b477d7022
14 changed files with 66 additions and 12 deletions

View file

@ -1,3 +1,23 @@
October 19, 2007 (Changes by Graf Zahl)
- Fixed: POwered up weapons with a different ready state than their base
weapon didn't change back when the powerup expired.
- Fixed: The powered up version of Heretic's Gauntlets missed the proper
state assignments for Ready, Lower and Raise.
October 17, 2007 (Changes by Graf Zahl)
- Fixed: The Strife player was missing its pain state.
October 12, 2007 (Changes by Graf Zahl)
- Fixed: Revenant missiles couldn't home in on targets with a height lower than
40.
- Fixed: The code which checked for hitscan traces hitting actors from above
and below must test whether the calculated hit position is actually inside
the actor being checked. If it crosses the top/bottom plane outside the
bounding box there can't be a hit.
- Changed: State labels in code pointer calls must now be enclosed in quotation marks.
This was done to ensure compatibility with parsers that will parse these as
identifier-aware script code later.
October 8, 2007 (Changes by Graf Zahl)
- Fixed: The code that checked hitscans entering an actor from above and below
calculated the hit position wrong.

View file

@ -183,7 +183,7 @@ void DCajunMaster::ThinkForMove (AActor *actor, ticcmd_t *cmd)
}
//Strafing.
if (b->enemy->flags & MF3_ISMONSTER) //It's just a monster so take it down cool.
if (b->enemy->flags3 & MF3_ISMONSTER) //It's just a monster so take it down cool.
{
cmd->ucmd.sidemove = b->sleft ? -SIDEWALK : SIDEWALK;
}

View file

@ -104,7 +104,15 @@ void A_Tracer (AActor *self)
if (dist < 1)
dist = 1;
slope = (dest->z+40*FRACUNIT - self->z) / dist;
if (dest->height >= 56*FRACUNIT)
{
slope = (dest->z+40*FRACUNIT - self->z) / dist;
}
else
{
slope = (dest->z + self->height*2/3 - self->z) / dist;
}
if (slope < self->momz)
self->momz -= FRACUNIT/8;

View file

@ -1535,6 +1535,9 @@ END_DEFAULTS
IMPLEMENT_STATELESS_ACTOR (AGauntletsPowered, Heretic, -1, 0)
PROP_Weapon_Flags (WIF_WIMPY_WEAPON|WIF_POWERED_UP|WIF_BOT_MELEE)
PROP_Weapon_UpState (S_GAUNTLETUP2)
PROP_Weapon_DownState (S_GAUNTLETDOWN2)
PROP_Weapon_ReadyState (S_GAUNTLETREADY2)
PROP_Weapon_AtkState (S_GAUNTLETATK2)
PROP_Weapon_HoldAtkState (S_GAUNTLETATK2+2)
PROP_Weapon_SisterType ("Gauntlets")

View file

@ -498,7 +498,8 @@ void AWeapon::EndPowerup ()
{
if (GetReadyState() != SisterWeapon->GetReadyState())
{
if (Owner->player->PendingWeapon == NULL)
if (Owner->player->PendingWeapon == NULL ||
Owner->player->PendingWeapon == WP_NOCHANGE)
Owner->player->PendingWeapon = SisterWeapon;
}
else

View file

@ -350,7 +350,14 @@ void A_Tracer2 (AActor *self)
{
dist = 1;
}
slope = (dest->z + 40*FRACUNIT - self->z) / dist;
if (dest->height >= 56*FRACUNIT)
{
slope = (dest->z+40*FRACUNIT - self->z) / dist;
}
else
{
slope = (dest->z + self->height*2/3 - self->z) / dist;
}
if (slope < self->momz)
{
self->momz -= FRACUNIT/8;

View file

@ -1273,7 +1273,7 @@ FUNC(LS_Thing_Hate)
hatee == hater || // can't hate self
!(hatee->flags & MF_SHOOTABLE) || // can't hate nonshootable things
hatee->health <= 0 || // can't hate dead things
(hatee->flags & MF2_DORMANT)); // can't target dormant things
(hatee->flags2 & MF2_DORMANT));
}
if (hatee != NULL && hatee != hater && (arg2 == 0 || (hater->goal != NULL && hater->target != hater->goal)))

View file

@ -4314,7 +4314,7 @@ void PIT_CeilingRaise (AActor *thing)
}
P_CheckFakeFloorTriggers (thing, oldz);
}
else if ((thing->flags & MF2_PASSMOBJ) && !isgood && thing->z + thing->height < thing->ceilingz)
else if ((thing->flags2 & MF2_PASSMOBJ) && !isgood && thing->z + thing->height < thing->ceilingz)
{
if (!P_TestMobjZ (thing) && onmobj->z <= thing->z)
{

View file

@ -319,6 +319,10 @@ static bool PTR_TraceIterator (intercept_t *in)
hitx = trace.x + FixedMul (Vx, dist);
hity = trace.y + FixedMul (Vy, dist);
hitz = StartZ + FixedMul (Vz, dist);
// calculated coordinate is outside the actor's bounding box
if (abs(hitx - in->d.thing->x) > in->d.thing->radius ||
abs(hity - in->d.thing->y) > in->d.thing->radius) return true;
}
else if (hitz < in->d.thing->z)
{ // trace enters below actor
@ -332,6 +336,10 @@ static bool PTR_TraceIterator (intercept_t *in)
hitx = trace.x + FixedMul (Vx, dist);
hity = trace.y + FixedMul (Vy, dist);
hitz = StartZ + FixedMul (Vz, dist);
// calculated coordinate is outside the actor's bounding box
if (abs(hitx - in->d.thing->x) > in->d.thing->radius ||
abs(hity - in->d.thing->y) > in->d.thing->radius) return true;
}

View file

@ -772,6 +772,7 @@ FString SC_TokenName (int token, const char *string)
"'^='",
"'|='",
"'>>'",
"'>>>'",
"'<<'",
"'++'",
"'--'",

View file

@ -788,7 +788,9 @@ do_stop:
if (JumpParameters.Size()==0) JumpParameters.Push(NAME_None);
v = -(int)JumpParameters.Size();
FString statestring = ParseStateString();
// This forces quotation marks around the state name.
SC_MustGetToken(TK_StringConst);
FString statestring = sc_String; // ParseStateString();
const PClass *stype=NULL;
int scope = statestring.IndexOf("::");
if (scope >= 0)

View file

@ -37,14 +37,14 @@ ACTOR DoomPlayer : PlayerPawn
PLAY G 4 A_Pain
Goto Spawn
Death:
PLAY H 10 A_PlayerSkinCheck(AltSkinDeath)
PLAY H 10 A_PlayerSkinCheck("AltSkinDeath")
PLAY I 10 A_PlayerScream
PLAY J 10 A_NoBlocking
PLAY KLM 10
PLAY N -1
Stop
XDeath:
PLAY O 5 A_PlayerSkinCheck(AltSkinXDeath)
PLAY O 5 A_PlayerSkinCheck("AltSkinXDeath")
PLAY P 5 A_XScream
PLAY Q 5 A_NoBlocking
PLAY RSTUV 5

View file

@ -29,7 +29,7 @@ ACTOR HereticPlayer : PlayerPawn
PLAY G 4 A_Pain
Goto Spawn
Death:
PLAY H 6 A_PlayerSkinCheck(AltSkinDeath)
PLAY H 6 A_PlayerSkinCheck("AltSkinDeath")
PLAY I 6 A_PlayerScream
PLAY JK 6
PLAY L 6 A_NoBlocking
@ -37,7 +37,7 @@ ACTOR HereticPlayer : PlayerPawn
PLAY P -1
Stop
XDeath:
PLAY Q 0 A_PlayerSkinCheck(AltSkinXDeath)
PLAY Q 0 A_PlayerSkinCheck("AltSkinXDeath")
PLAY Q 5 A_PlayerScream
PLAY R 0 A_NoBlocking
PLAY R 5 A_SkullPop
@ -99,7 +99,7 @@ ACTOR BloodySkull : PlayerChunk
{
Spawn:
BSKL A 0
BSKL ABCDE 5 A_CheckFloor(Hit)
BSKL ABCDE 5 A_CheckFloor("Hit")
Goto Spawn+1
Hit:
BSKL F 16 A_CheckPlayerDone

View file

@ -31,6 +31,10 @@ ACTOR StrifePlayer : PlayerPawn
Melee:
PLAY F 6
goto Missile
Pain:
PLAY Q 4
PLAY Q 4 A_Pain
Goto Spawn
Death:
PLAY H 3
PLAY I 3 A_PlayerScream