From 06681ec72d7fc632872d84843de31a4577750018 Mon Sep 17 00:00:00 2001 From: Randy Heit Date: Sat, 29 Jul 2006 01:26:24 +0000 Subject: [PATCH] - 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.) SVN r272 (trunk) --- docs/rh-log.txt | 14 ++++++++++++++ src/p_conversation.cpp | 40 +++++++++++++++++++++++++++++++--------- src/p_conversation.h | 2 +- src/p_lnspec.cpp | 2 +- src/p_map.cpp | 2 +- src/r_draw.cpp | 2 +- src/thingdef.cpp | 8 +++++++- src/version.h | 2 +- 8 files changed, 57 insertions(+), 15 deletions(-) diff --git a/docs/rh-log.txt b/docs/rh-log.txt index 6148b72f15..4c01081d0f 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 3d2837612f..55f887e700 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 e57284d8bf..09ee2dc4b5 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 834b255d8d..3d96be31ee 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 e142232d13..593324867d 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 2372901ddf..1b213be5fe 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 10fabe0b98..247a0fed30 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 c8cd15e786..eb5b0d729f 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 ")"