Aller au contenu

Photo

New companions in the Fade [solved]


  • Veuillez vous connecter pour répondre
9 réponses à ce sujet

#1
Karma

Karma
  • Members
  • 391 messages
I'm still working on getting my custom companions to show up in the Fade during the Broken Circle quest. As of right now, the map pins for the "nightmares" of my new companions will unlock, but clicking on the map pin doesn't transport the player to the nightmare area. The map acts as if the new followers aren't in the party.

There are (at least) three scripts that seem to set this up:
1) cir300pt_x sets the "sleep" plot flag and updates the journal. (This seems to be working properly for my new companions.)
2) cir300pt_fade_portal transitions the player to the companion's dream area once the map pin opens up. (I can't tell if this is working or not. It works for original companions but not new companions.)
3) cir300pt_fade sets the companions as unavailable, sets the module variables that associate the map pin to the follower's area, makes the awakened party members join the party for the sloth demon fight, and return them to the tower once the demon is defeated. (This doesn't seem to be working. However, both original and new party members awake when the fight is over.)

The functions CIR_SetInFade and/or CIR_JumpToFadeFollower (defined in cir_functions_h) seem to be where the hangup is. CIR_SetInFade sets a module variable that is associated with the companion's nightmare area. CIR_JumpToFadeFollower transitions the player to the nightmare area. [I made a custom version of CIR_JumpToFadeFollower that includes my new companions, which works for original companions; so I assume it's the CIR_SetInFade function that is causing issues.]

Does anyone know any reason why the map pin would not be properly functioning? If not, could someone tell me (1) how I could set up a print to log scriptlet that would tell me if the module variable is actually being set OR (2) how to use the EVENT_TYPE_BEGIN_TRAVEL/EVENT_TYPE_WORLDMAP_PRETRANSITION to transport the player to the proper nightmare area?

Modifié par satans_karma, 05 novembre 2010 - 01:44 .


#2
Karma

Karma
  • Members
  • 391 messages
UPDATE #1:
- The followers' integers are in fact being set into the module variables, so the CIR_SetInFade function is working properly (I believe).
- I found another instance where CIR_JumpToFadeFollower function is used (in map_events_h) and changed that to my custom function.

However, I still can't get the map pin to transport me to the proper companion's nightmare area. Does anyone know of any other scripts that would use CIR_JumpToFadeFollower?

UPDATE #2:
I added the script below to my module script, and something different happened. Instead of not going anywhere when I click on one of the companion map pins, now I get to an infinite loading screen (though the screen no longer has the fade map interface). I don't know if that's progess or not. Anyone have any suggestions?

UPDATE #3:
Yay! Progress. The script below will now transport the player to the companion area, but the companion is missing, the pedestal won't let me exit, and the fade map interface still disappears when I click on the map pin. I can probably fix the first two issues, but how do I get the interface back to normal?

EDIT: Is there any way to specify which of the three Fade_Follower areas I want? sArea only spits out "Fade_Follower," but there's three of them with that same area tag. Having it set up in that order without the exact tag for the area causes some map problems that are work-around-able but still very annoying. 
Nevermind - figured it out.

UPDATE #4:
The fade map is now working properly, but I still need two questions answered: (1) What function makes the area transition loading screen show up after clicking a map pin (or which function in the script below causes it not to show up)? and (2) Are the CIR_FADE_FOLLOWER_1/2/3 variables used elsewhere in the game for anything?



[dascript]
      case EVENT_TYPE_BEGIN_TRAVEL:
        {
            string sSource = GetEventString(ev, 0); //area tag source location
            string sTarget = GetEventString(ev, 1); // area tag target location
            string sWPOverride = GetEventString(ev, 2); // waypoint tag override
           
            object oTarget = GetEventObject(ev, 1);
           
            string sArea = GetLocalString(GetModule(), WM_STORED_AREA);
            string sWP   = GetLocalString(GetModule(), WM_STORED_WP);        
                   
            //object oMap = GetObjectByTag(WM_FAD_TAG);
            //GetMapPinState(oMapPin);           
         
            if(sArea == "Fade_Follower" && GetLocalInt(GetModule(), CIR_FADE_FOLLOWER_1) == 690032)
            {
                SetLocalString(GetModule(), "WM_STORED_AREA", CIR_AR_GORIM);
                SetLocalString(GetModule(), "WM_STORED_WP", CIR_WP_FADE_GORIM);
            }
            if(sArea == "Fade_Follower" && GetLocalInt(GetModule(), CIR_FADE_FOLLOWER_1) == 690033)
            {
                SetLocalString(GetModule(), "WM_STORED_AREA", CIR_AR_GILMORE);
                SetLocalString(GetModule(), "WM_STORED_WP", CIR_WP_FADE_GILMORE);
            }
            if(sArea == "Fade_Follower" && GetLocalInt(GetModule(), CIR_FADE_FOLLOWER_2) == 690032)
            {
                SetLocalString(GetModule(), "WM_STORED_AREA", CIR_AR_GORIM);
                SetLocalString(GetModule(), "WM_STORED_WP", CIR_WP_FADE_GORIM);
            }
            if(sArea == "Fade_Follower" && GetLocalInt(GetModule(), CIR_FADE_FOLLOWER_2) == 690033)
            {
                SetLocalString(GetModule(), "WM_STORED_AREA", CIR_AR_GILMORE);
                SetLocalString(GetModule(), "WM_STORED_WP", CIR_WP_FADE_GILMORE);
            }
            if(sArea == "Fade_Follower" && GetLocalInt(GetModule(), CIR_FADE_FOLLOWER_3) == 690032)
            {
                SetLocalString(GetModule(), "WM_STORED_AREA", CIR_AR_GORIM);
                SetLocalString(GetModule(), "WM_STORED_WP", CIR_WP_FADE_GORIM);
            }
            if(sArea == "Fade_Follower" && GetLocalInt(GetModule(), CIR_FADE_FOLLOWER_3) == 690033)
            {
                SetLocalString(GetModule(), "WM_STORED_AREA", CIR_AR_GILMORE);
                SetLocalString(GetModule(), "WM_STORED_WP", CIR_WP_FADE_GILMORE);
            }
           
            PrintToLog("********************************" + GetLocalString(GetModule(), WM_STORED_AREA)  + "***************************************");
            PrintToLog("********************************" + GetLocalString(GetModule(), WM_STORED_WP)  + "***************************************");
            WorldMapStartTravelling();
            break;
        }
[/dascript]

Modifié par satans_karma, 02 novembre 2010 - 12:23 .


#3
Karma

Karma
  • Members
  • 391 messages
I still need to know why the map loading screen rather than the regular loading screen is showing up when I click on any of the map pins on the fade map. Anyone?

#4
jackkel dragon

jackkel dragon
  • Members
  • 2 047 messages

satans_karma wrote...

I still need to know why the map loading screen rather than the regular loading screen is showing up when I click on any of the map pins on the fade map. Anyone?


Are the new Nightmare areas part of the same area list as the originals?

#5
TimelordDC

TimelordDC
  • Members
  • 923 messages
I don't remember the regular loading screen for the Fade - is it a line going one from map pin to another?

Edit : About the CIR_FADE_FOLLOWER_1 question, you can download the DAToolChest and do a search for those constants in the Single Player scripts (it won't work on Win 7 x64 so if you are on that, you are out of luck)

Modifié par TimelordDC, 05 novembre 2010 - 02:03 .


#6
Karma

Karma
  • Members
  • 391 messages
@Jackkel Dragon
None of the nightmares (not even the ones for the original companions) are part of an area list.

@Timelord
When you click on a fade map pin, the normal loading screen (the one with the blood, the play tips, and the rotating Celtic-looking design) is supposed to pop up. Whatever I did (or didn't do) in the EVENT_TYPE_BEGIN_TRAVEL event is causing the map loading screen (the open book with the map pins on it) to pop up instead. It's acting as if I'm clicking on the map pins on the world map instead of the fade map; it's trying to do the map trail animation without any map trails.

(I tried taking a screen shot to post, but apparently it won't capture the loading screen. Sorry.)

Modifié par satans_karma, 05 novembre 2010 - 03:02 .


#7
jackkel dragon

jackkel dragon
  • Members
  • 2 047 messages
Hm... you've edited the worldmap 2das, right? If you have, (or if it's not relevant to the Fade sequence) there may be some sort of variable/flag that needs to be set somewhere... (check the area variables for original and new areas?)

#8
Karma

Karma
  • Members
  • 391 messages
I'm not sure why I would need to. The companion areas aren't listed in the worldmap 2das, and I'm reusing existing pins. It seems like a scripting issue. When I comment out the EVENT_TYPE_BEGIN_TRAVEL section, the correct loading screen shows up. The areas load now, so it's not game-breaking. It's just using an area loading interface that is not meant to be used.

I've checked every script relating to the fade that I can find. (Though I could very well have missed one.) The only seemingly relevant script to the map is sp_module_travel (and possibly map_events_h and cir_mapgui_h).

I guess my question is - during which event does the loading screen fire or which function fires the loading screen? Perhaps I need to intercept another event?

#9
TimelordDC

TimelordDC
  • Members
  • 923 messages
satans_karma, can you do the following changes and check if everything works:

case EVENT_TYPE_BEGIN_TRAVEL:
{
    string sSource = GetEventString(ev, 0); //area tag source location
    string sTarget = GetEventString(ev, 1); // area tag target location
    string sWPOverride = GetEventString(ev, 2); // waypoint tag override

    object oTarget = GetEventObject(ev, 1);

    string sArea = GetLocalString(GetModule(), WM_STORED_AREA);
    string sWP   = GetLocalString(GetModule(), WM_STORED_WP);
    object oMap = GetObjectByTag(WM_FAD_TAG);

    object oWMLoc;

    if(sArea == "Fade_Follower" && GetLocalInt(GetModule(), CIR_FADE_FOLLOWER_1) == 690032)
    {
        SetLocalString(GetModule(), "WM_STORED_AREA", CIR_AR_GORIM);
        SetLocalString(GetModule(), "WM_STORED_WP", CIR_WP_FADE_GORIM);
        oWMLoc = GetObjectByTag("wml_fad_comp_a");
        SetWorldMapPlayerLocation(oMap, oWMLoc);
        UT_PCJumpOrAreaTransition(CIR_AR_GORIM, CIR_WP_FADE_GORIM);
        break;
    }
}

For CIR_FADE_FOLLOWER_2, the oWMLoc should be "wml_fad_comp_b" and for CIR_FADE_FOLLOWER_3, it should be "wml_fad_comp_c".

Basically, the problem is you are calling WorldMapStartTraveling() which is not used for the fade map.

#10
Karma

Karma
  • Members
  • 391 messages
I originally figured that function (WorldMapStartTraveling()) was the problem because none of the fade travel scripts use it, but when I tried UT_PCJumpOrAreaTransition(sArea, sWP), I wasn't able to travel without WorldMapStartTraveling(). I guess I just needed to specify the sArea and sWP explicitly. I had to make a couple other slight alterations to the script, but now the script works in-game as it should. Again, I'm much obliged to you both for your help.

Modifié par satans_karma, 05 novembre 2010 - 01:26 .