diff --git a/docs/rh-log.txt b/docs/rh-log.txt index 6148b72f1..4c01081d0 100644 --- a/docs/rh-log.txt +++ b/docs/rh-log.txt @@ -1,3 +1,17 @@ +July 28, 2008 +- Version bump to 2.1.4. +- Fixed: Friendlies would not turn to face you when you engaged them in + conversation, nor would they reliably return to their original facing when + you stopped talking to them. +- Added deprecation warnings for the DontHurtShooter, ExplosionRadius, and + ExplosionDamage actor "properties." They were considered deprecated before; + now this is explicitly stated when they are used. The problem with them is + that they are not really properties and do not behave like other properties + and cannot be inherited, because they are really just an alternate way of + specifying parameters for A_Explode. (Anything that currently prints a + deprecation warning will be removed completely in 2.2.0, which will be the + version where custom state labels make their debut.) + July 26, 2006 (Changes by Graf Zahl) - Changed player sprite translation for the menu so that it uses a regular translation table instead of a local custom buffer. diff --git a/src/p_conversation.cpp b/src/p_conversation.cpp index 3d2837612..55f887e70 100644 --- a/src/p_conversation.cpp +++ b/src/p_conversation.cpp @@ -79,6 +79,7 @@ static void ParseReplies (FStrifeDialogueReply **replyptr, Response *responses); static void DrawConversationMenu (); static void PickConversationReply (); static void CleanupConversationMenu (); +static void ConversationMenuEscaped (); static FStrifeDialogueNode *CurNode, *PrevNode; static brokenlines_t *DialogueLines; @@ -602,8 +603,9 @@ CUSTOM_CVAR(Float, dlg_musicvolume, 1.0f, CVAR_ARCHIVE) // //============================================================================ -void P_StartConversation (AActor *npc, AActor *pc, bool facetalker) +void P_StartConversation (AActor *npc, AActor *pc, bool facetalker, bool saveangle) { + AActor *oldtarget; FStrifeDialogueReply *reply; menuitem_t item; const char *toSay; @@ -626,17 +628,22 @@ void P_StartConversation (AActor *npc, AActor *pc, bool facetalker) } npc->reactiontime = 2; - if (!(npc->flags & MF_FRIENDLY) && !(npc->flags4 & MF4_NOHATEPLAYERS)) - { - npc->target = pc; - } ConversationFaceTalker = facetalker; - ConversationNPCAngle = npc->angle; + if (saveangle) + { + ConversationNPCAngle = npc->angle; + } + oldtarget = npc->target; + npc->target = pc; if (facetalker) { A_FaceTarget (npc); pc->angle = R_PointToAngle2 (pc->x, pc->y, npc->x, npc->y); } + if ((npc->flags & MF_FRIENDLY) || (npc->flags4 & MF4_NOHATEPLAYERS)) + { + npc->target = oldtarget; + } // Check if we should jump to another node while (CurNode->ItemCheck[0] != NULL) @@ -662,7 +669,7 @@ void P_StartConversation (AActor *npc, AActor *pc, bool facetalker) // Set up the menu ConversationMenu.PreDraw = DrawConversationMenu; - ConversationMenu.EscapeHandler = CleanupConversationMenu; + ConversationMenu.EscapeHandler = ConversationMenuEscaped; // Format the speaker's message. toSay = CurNode->Dialogue; @@ -747,7 +754,7 @@ void P_ResumeConversation () { if (ConversationPC != NULL && ConversationNPC != NULL) { - P_StartConversation (ConversationNPC, ConversationPC, ConversationFaceTalker); + P_StartConversation (ConversationNPC, ConversationPC, ConversationFaceTalker, false); } } @@ -866,6 +873,7 @@ static void PickConversationReply () CleanupConversationMenu (); if (reply == NULL) { + ConversationNPC->angle = ConversationNPCAngle; return; } @@ -880,6 +888,7 @@ static void PickConversationReply () Printf ("%s\n", reply->QuickNo); } ConversationNPC->ConversationAnimation (2); + ConversationNPC->angle = ConversationNPCAngle; return; } } @@ -967,7 +976,7 @@ static void PickConversationReply () ConversationNPC->Conversation = StrifeDialogues[rootnode - reply->NextNode - 1]; if (gameaction != ga_slideshow) { - P_StartConversation (ConversationNPC, players[consoleplayer].mo, ConversationFaceTalker); + P_StartConversation (ConversationNPC, players[consoleplayer].mo, ConversationFaceTalker, false); return; } else @@ -1018,3 +1027,16 @@ void CleanupConversationMenu () I_SetMusicVolume(1.f); } +//============================================================================ +// +// ConversationMenuEscaped +// +// Called when the user presses escape to leave tho conversation menu. +// +//============================================================================ + +void ConversationMenuEscaped () +{ + CleanupConversationMenu (); + ConversationNPC->angle = ConversationNPCAngle; +} diff --git a/src/p_conversation.h b/src/p_conversation.h index e57284d8b..09ee2dc4b 100644 --- a/src/p_conversation.h +++ b/src/p_conversation.h @@ -59,7 +59,7 @@ extern const PClass *StrifeTypes[1001]; void P_LoadStrifeConversations (const char *mapname); void P_FreeStrifeConversations (); -void P_StartConversation (AActor *npc, AActor *pc, bool facetalker); +void P_StartConversation (AActor *npc, AActor *pc, bool facetalker, bool saveangle); void P_ResumeConversation (); #endif diff --git a/src/p_lnspec.cpp b/src/p_lnspec.cpp index 834b255d8..3d96be31e 100644 --- a/src/p_lnspec.cpp +++ b/src/p_lnspec.cpp @@ -2664,7 +2664,7 @@ FUNC(LS_StartConversation) { // Give the NPC a chance to play a brief animation target->ConversationAnimation (0); - P_StartConversation (target, it, !!arg1); + P_StartConversation (target, it, !!arg1, true); return true; } return false; diff --git a/src/p_map.cpp b/src/p_map.cpp index e142232d1..593324867 100644 --- a/src/p_map.cpp +++ b/src/p_map.cpp @@ -3167,7 +3167,7 @@ BOOL PTR_UseTraverse (intercept_t *in) { // Give the NPC a chance to play a brief animation in->d.thing->ConversationAnimation (0); - P_StartConversation (in->d.thing, usething, true); + P_StartConversation (in->d.thing, usething, true, true); return false; } return true; diff --git a/src/r_draw.cpp b/src/r_draw.cpp index 2372901dd..1b213be5f 100644 --- a/src/r_draw.cpp +++ b/src/r_draw.cpp @@ -1418,7 +1418,7 @@ void R_InitTranslationTables () { static BYTE MainTranslationTables[256* (NUMCOLORMAPS*16 // Shaded - +MAXPLAYERS*2+1 // Players + PlayersExtra + +MAXPLAYERS*2+1 // Players + PlayersExtra + Menu player +8 // Standard (7 for Strife, 3 for the rest) +MAX_ACS_TRANSLATIONS // LevelScripted +BODYQUESIZE // PlayerCorpses diff --git a/src/thingdef.cpp b/src/thingdef.cpp index 10fabe0b9..247a0fed3 100644 --- a/src/thingdef.cpp +++ b/src/thingdef.cpp @@ -2223,7 +2223,7 @@ static void StatePropertyIsDeprecated (const char *actorname, const char *prop) { static bool warned = false; - Printf (TEXTCOLOR_YELLOW "In actor %s, the %s property is deprecated.\n", + Printf (TEXTCOLOR_YELLOW "In actor %s, the %s property is deprecated and will be removed in 2.2.0.\n", actorname, prop); if (!warned) { @@ -2739,6 +2739,8 @@ static void ActorHitObituary (AActor *defaults, Baggage &bag) //========================================================================== static void ActorDontHurtShooter (AActor *defaults, Baggage &bag) { + Printf (TEXTCOLOR_YELLOW "DontHurtShooter in %s is deprecated and will be removed in 2.2.0.\n", + bag.Info->Class->TypeName.GetChars()); bag.EParms.HurtShooter=false; } @@ -2747,6 +2749,8 @@ static void ActorDontHurtShooter (AActor *defaults, Baggage &bag) //========================================================================== static void ActorExplosionRadius (AActor *defaults, Baggage &bag) { + Printf (TEXTCOLOR_YELLOW "ExplosionRadius in %s is deprecated and will be removed in 2.2.0.\n", + bag.Info->Class->TypeName.GetChars()); SC_MustGetNumber(); bag.EParms.ExplosionRadius=sc_Number; } @@ -2756,6 +2760,8 @@ static void ActorExplosionRadius (AActor *defaults, Baggage &bag) //========================================================================== static void ActorExplosionDamage (AActor *defaults, Baggage &bag) { + Printf (TEXTCOLOR_YELLOW "ExplosionDamage in %s is deprecated and will be removed in 2.2.0.\n", + bag.Info->Class->TypeName.GetChars()); SC_MustGetNumber(); bag.EParms.ExplosionDamage=sc_Number; } diff --git a/src/version.h b/src/version.h index c8cd15e78..eb5b0d729 100644 --- a/src/version.h +++ b/src/version.h @@ -40,7 +40,7 @@ /** Lots of different version numbers **/ -#define DOTVERSIONSTR_NOREV "2.1.3" +#define DOTVERSIONSTR_NOREV "2.1.4" // The version string the user actually sees. #define DOTVERSIONSTR DOTVERSIONSTR_NOREV " (r" SVN_REVISION_STRING ")"