I was thinking it might be neat to have a bit of story-telling in my stand-alone happen from a different character's perspective. I know it would be possible with cutscenes, but would it even be possible to make them playable for a while? The actual PC would have to be teleported to wherever they are, I imagine, and the new "PC" made some sort of companion, perhaps?
It would probably be a nightmare to make work, but I'm curious if it's even possible with the tools we have.
Odd question - Possible to switch to a different PC?
Débuté par
madsabroo
, janv. 30 2011 07:28
#1
Posté 30 janvier 2011 - 07:28
#2
Posté 31 janvier 2011 - 07:14
Yes, it's very possible. For example, in the OC Arl Eamon story, someone has to go into the Fade to free Connor from a demon, but that someone doesn't have to be the player or even a follower (without posting a spoiler here). Have a look at how Bioware did it.
#3
Posté 01 février 2011 - 03:03
Oh, good point! I didn't even think of that example. I usually have Morrigan go so I was thinking of party members in that instance. I'll take a look at their scripts. Thanks again for good advice.
#4
Posté 01 février 2011 - 03:56
Hmm, I found the script and it actually doesn't look too complicated. The weird thing is, I'm not seeing where they actually do the area transition to the Fade. Here's a snippet of the code, it has the usual opening and then this (some spoilers for those not at this part yet):
case ARL_FADE_FADE_ENTERED:
{
//This is triggered once when the player enters the fade.
int bMorriganActive = WR_GetPlotFlag(PLT_ARL300PT_FADE, ARL_FADE_MORRIGAN_IN_FADE);
int bWynneActive = WR_GetPlotFlag(PLT_ARL300PT_FADE, ARL_FADE_WYNNE_IN_FADE);
int bJowanActive = WR_GetPlotFlag(PLT_ARL300PT_FADE, ARL_FADE_JOWAN_IN_FADE);
int bIrvingActive = WR_GetPlotFlag(PLT_ARL300PT_FADE, ARL_FADE_IRVING_IN_FADE);
object oMorrigan = UT_GetNearestCreatureByTag(oPC, GEN_FL_MORRIGAN);
object oWynne = UT_GetNearestCreatureByTag(oPC, GEN_FL_WYNNE);
object oJowan = UT_GetNearestCreatureByTag(oPC, ARL_CR_JOWAN);
object oIrving = UT_GetNearestCreatureByTag(oPC, ARL_CR_IRVING);
object oPartyInventoryStorage = UT_GetNearestObjectByTag(oPC, ARL_IP_FADE_PARTY_INVENTORY_STORAGE);
object [] arParty = GetPartyList(GetHero());
int nSize = GetArraySize(arParty);
int nIndex;
object oCurrent;
//Remove all party members from the party and store them to be added later.
UT_PartyStore();
//set all (former) party members other than the hero, Wynne and Morrigan to inactive.
for(nIndex = 0; nIndex < nSize; nIndex++)
{
oCurrent = arParty[nIndex];
if ((IsHero(oCurrent) == FALSE) && (oCurrent != oWynne) && (oCurrent != oMorrigan))
{
WR_SetObjectActive(oCurrent, FALSE);
}
}
I mean, I see this "//This is triggered once when the player enters the fade" but there's no actual area transition call. Am I not seeing something? I checked the constants and functions and I didn't see anything there that looks like it sends you to the Fade either. Help.
case ARL_FADE_FADE_ENTERED:
{
//This is triggered once when the player enters the fade.
int bMorriganActive = WR_GetPlotFlag(PLT_ARL300PT_FADE, ARL_FADE_MORRIGAN_IN_FADE);
int bWynneActive = WR_GetPlotFlag(PLT_ARL300PT_FADE, ARL_FADE_WYNNE_IN_FADE);
int bJowanActive = WR_GetPlotFlag(PLT_ARL300PT_FADE, ARL_FADE_JOWAN_IN_FADE);
int bIrvingActive = WR_GetPlotFlag(PLT_ARL300PT_FADE, ARL_FADE_IRVING_IN_FADE);
object oMorrigan = UT_GetNearestCreatureByTag(oPC, GEN_FL_MORRIGAN);
object oWynne = UT_GetNearestCreatureByTag(oPC, GEN_FL_WYNNE);
object oJowan = UT_GetNearestCreatureByTag(oPC, ARL_CR_JOWAN);
object oIrving = UT_GetNearestCreatureByTag(oPC, ARL_CR_IRVING);
object oPartyInventoryStorage = UT_GetNearestObjectByTag(oPC, ARL_IP_FADE_PARTY_INVENTORY_STORAGE);
object [] arParty = GetPartyList(GetHero());
int nSize = GetArraySize(arParty);
int nIndex;
object oCurrent;
//Remove all party members from the party and store them to be added later.
UT_PartyStore();
//set all (former) party members other than the hero, Wynne and Morrigan to inactive.
for(nIndex = 0; nIndex < nSize; nIndex++)
{
oCurrent = arParty[nIndex];
if ((IsHero(oCurrent) == FALSE) && (oCurrent != oWynne) && (oCurrent != oMorrigan))
{
WR_SetObjectActive(oCurrent, FALSE);
}
}
I mean, I see this "//This is triggered once when the player enters the fade" but there's no actual area transition call. Am I not seeing something? I checked the constants and functions and I didn't see anything there that looks like it sends you to the Fade either. Help.
#5
Posté 02 février 2011 - 07:34
The area transition occurs when plot flag ARL_REMOVE_DEMON_JUMP_TO_FADE is set in the plot script arl200pt_remove_demon.
That happens in the next two cases of that script.
On entry to the fade, the area script arl300ar_fade sets the flag you mentioned.
That happens in the next two cases of that script.
On entry to the fade, the area script arl300ar_fade sets the flag you mentioned.
Modifié par Proleric1, 02 février 2011 - 07:36 .
#6
Posté 02 février 2011 - 03:14
Ahh, thank you! I'll check it out.





Retour en haut






