diff --git a/docs/rh-log.txt b/docs/rh-log.txt index d765f1372..b069981e2 100644 --- a/docs/rh-log.txt +++ b/docs/rh-log.txt @@ -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. diff --git a/src/b_think.cpp b/src/b_think.cpp index 77d2940c0..059876c08 100644 --- a/src/b_think.cpp +++ b/src/b_think.cpp @@ -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; } diff --git a/src/g_doom/a_revenant.cpp b/src/g_doom/a_revenant.cpp index ad4000e4f..0ce16f927 100644 --- a/src/g_doom/a_revenant.cpp +++ b/src/g_doom/a_revenant.cpp @@ -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; diff --git a/src/g_heretic/a_hereticweaps.cpp b/src/g_heretic/a_hereticweaps.cpp index e1285afa7..3c23368ee 100644 --- a/src/g_heretic/a_hereticweaps.cpp +++ b/src/g_heretic/a_hereticweaps.cpp @@ -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") diff --git a/src/g_shared/a_weapons.cpp b/src/g_shared/a_weapons.cpp index de59ee222..b3deed82b 100644 --- a/src/g_shared/a_weapons.cpp +++ b/src/g_shared/a_weapons.cpp @@ -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 diff --git a/src/g_strife/a_spectral.cpp b/src/g_strife/a_spectral.cpp index 4d024771f..248d6f1cf 100644 --- a/src/g_strife/a_spectral.cpp +++ b/src/g_strife/a_spectral.cpp @@ -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; diff --git a/src/p_lnspec.cpp b/src/p_lnspec.cpp index abcf2aaba..f2da090be 100644 --- a/src/p_lnspec.cpp +++ b/src/p_lnspec.cpp @@ -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))) diff --git a/src/p_map.cpp b/src/p_map.cpp index faa7c5c37..d82a3014e 100644 --- a/src/p_map.cpp +++ b/src/p_map.cpp @@ -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) { diff --git a/src/p_trace.cpp b/src/p_trace.cpp index eba70c36a..6cfcf6bbb 100644 --- a/src/p_trace.cpp +++ b/src/p_trace.cpp @@ -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; } diff --git a/src/sc_man.cpp b/src/sc_man.cpp index b309e9be3..4ed641758 100644 --- a/src/sc_man.cpp +++ b/src/sc_man.cpp @@ -772,6 +772,7 @@ FString SC_TokenName (int token, const char *string) "'^='", "'|='", "'>>'", + "'>>>'", "'<<'", "'++'", "'--'", diff --git a/src/thingdef/thingdef_states.cpp b/src/thingdef/thingdef_states.cpp index 92f0a1f95..9ab6b8a94 100644 --- a/src/thingdef/thingdef_states.cpp +++ b/src/thingdef/thingdef_states.cpp @@ -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) diff --git a/wadsrc/decorate/doom/doomplayer.txt b/wadsrc/decorate/doom/doomplayer.txt index ace1356b2..fcdc1d396 100644 --- a/wadsrc/decorate/doom/doomplayer.txt +++ b/wadsrc/decorate/doom/doomplayer.txt @@ -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 diff --git a/wadsrc/decorate/heretic/hereticplayer.txt b/wadsrc/decorate/heretic/hereticplayer.txt index f3c0ab3ee..fa7dc96e8 100644 --- a/wadsrc/decorate/heretic/hereticplayer.txt +++ b/wadsrc/decorate/heretic/hereticplayer.txt @@ -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 diff --git a/wadsrc/decorate/strife/strifeplayer.txt b/wadsrc/decorate/strife/strifeplayer.txt index 6048e8ade..e93c68043 100644 --- a/wadsrc/decorate/strife/strifeplayer.txt +++ b/wadsrc/decorate/strife/strifeplayer.txt @@ -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