Jump to content

Home

Qui-Gon's Script Shack


Qui-Gon Glenn

Recommended Posts

  • Replies 352
  • Created
  • Last Reply
Show spoiler
(hidden content - requires Javascript to show)
So, I have a strange problem. The script compiles fine. The beginning of it executes fine. But then at some point it just stops recognizing two of my variables, causing all other parts of the script to fail to execute. What's stranger still is the script is almost identical to one I wrote for K2 with no such problems.
Show spoiler
(hidden content - requires Javascript to show)
#include "jc_inc_clone"

void main() {

object oTarget = OBJECT_SELF;
int iFaction = 2;

if( oTarget == OBJECT_INVALID ) {
JC_DLG("jc_clo1");
}

else {

string sTemp = JC_Template(oTarget);

object oClone = CreateObject(OBJECT_TYPE_CREATURE, sTemp, GetLocation(OBJECT_SELF), FALSE);

int iI;

// Copy ALIGNMENT
AdjustAlignment(oClone, GetAlignmentGoodEvil(oTarget), abs(GetGoodEvilValue(oTarget) - GetGoodEvilValue(oClone)), FALSE);

// Clear INVENTORY
 for( iI = 0; iI <= 17; iI++ ) {
ActionUnequipItem(GetItemInSlot(iI, oClone), TRUE);
}

// Copy INVENTORY

 for( iI = 0; iI <= 17; iI++ ) {
if( GetIsObjectValid(GetItemInSlot(iI, oTarget)) ){
	DelayCommand(0.1, AssignCommand(oClone, ActionEquipItem(CreateItemOnObject(GetStringLowerCase(GetTag(GetItemInSlot(iI, oTarget))), oClone, 1, 1), iI, TRUE)));
	}
}

// Copy APPEARANCE
ApplyEffectToObject(2, EffectDisguise(GetAppearanceType(oTarget)), oClone, 0.0);

// Set FACTION
ChangeToStandardFaction(oClone, iFaction);

// Heal up the clone (just in case)
ApplyEffectToObject(0, EffectHeal(GetMaxHitPoints(oClone) - GetCurrentHitPoints(oClone)), oClone, 0.0);
ApplyEffectToObject(0, EffectHealForcePoints(GetMaxForcePoints(oClone) - GetCurrentForcePoints(oClone)), oClone, 0.0);

 }

}


It works consistently up to and including the creation of oClone. After that, it seems like oTarget and oClone work once each, and after that they never work again. I'm able to shift parts of the code around to get that part to work, but at the expense of all the others. It's rather frustrating.

Any ideas?



I don't know. Could you post the contents of jc_inc_clone? That might help us out a bit.
Link to comment
Share on other sites

Try adding oClone at the top but blank, so

 

void main() {

object oTarget = OBJECT_SELF;
object oClone = "";
int iFaction = 2;

if( 

 

Not sure if it'll fix it, but it might help...

I tried defining everything outside of the if... no luck.

I don't know. Could you post the contents of jc_inc_clone? That might help us out a bit.

Ah, well, I knew that part is working, but I've updated the code so jc_inc_clone takes up the bulk of it anyway, so here's the entire updated code:

void JC_DLG(string sDLG) {

SetPartyLeader(-1);
DelayCommand(0.2, AssignCommand(OBJECT_SELF, ActionStartConversation(GetFirstPC(), sDLG, 0, 0, 1, "", "", "", "", "", "", 0, -1, -1, 1)));

}


int JC_Get_Class(object oObject) {

int iClass1 = GetClassByPosition(1, oObject);
int iClass2 = GetClassByPosition(2, oObject);
int iClass3 = GetClassByPosition(3, oObject);

if( iClass3 != 255 ) return iClass3;
if( iClass2 != 255 ) return iClass2;
return iClass1;

}


string JC_Class_To_String(int iClass) {

if( iClass == 0 ) return "soldier";
if( iClass == 1 ) return "scout";
if( iClass == 2 ) return "scoundrel";
if( iClass == 3 ) return "guardian";
if( iClass == 4 ) return "consular";
if( iClass == 5 ) return "sentinel";
if( iClass == 6 ) return "combat";
if( iClass == 7 ) return "expert";
if( iClass == 8 ) return "minion";
return "minion";

}


string JC_Class_To_Letter(int iClass) {

if( iClass == 0 ) return "r";
if( iClass == 1 ) return "t";
if( iClass == 2 ) return "l";
if( iClass == 3 ) return "g";
if( iClass == 4 ) return "c";
if( iClass == 5 ) return "s";
return "";

}


string JC_Gender_To_String(object oObject) {

if( GetGender(oObject) == 1 ) return "f";
return "";

}


int JC_Get_Level(object oObject) {

int iLevel = (	GetLevelByPosition(1, oObject) +
		GetLevelByPosition(2, oObject) +
		GetLevelByPosition(3, oObject) );
return iLevel;

}


string JC_Level_To_String(object oObject) {

return IntToString(JC_Get_Level(oObject));

}


string JC_Object_To_JC_Temp(object oObject) {

if( oObject == GetFirstPC() ) return JC_Class_To_Letter(JC_Get_Class(oObject)) + "pc" + JC_Gender_To_String(oObject);
if( GetTag(oObject) == "Bastila" ) return "bastila";
if( GetTag(oObject) == "Cand" ) return "canderous";
if( GetTag(oObject) == "Carth" ) return "carth";
if( GetTag(oObject) == "HK47" ) return "hk47";
if( GetTag(oObject) == "Jolee" ) return "jolee";
if( GetTag(oObject) == "Juhani" ) return "juhani";
if( GetTag(oObject) == "Mission" ) return "mission";
if( GetTag(oObject) == "T3M4" ) return "t3m4";
if( GetTag(oObject) == "Zaalbar" ) return "zaalbar";
return JC_Class_To_String(JC_Get_Class(oObject)) + JC_Gender_To_String(oObject);

}


string JC_Template(object oObject) {

return "jc_" + JC_Object_To_JC_Temp(oObject) + JC_Level_To_String(oObject);

}


void JC_CLONE(object oTarget, int iFaction) {

object oClone;
string sTemp;
int iI;

if( oTarget == OBJECT_INVALID ) {
JC_DLG("jc_clo1");
}

else {

string sTemp = JC_Template(oTarget);

object oClone = CreateObject(OBJECT_TYPE_CREATURE, sTemp, GetLocation(OBJECT_SELF), FALSE);

// Copy ALIGNMENT
AdjustAlignment(oClone, GetAlignmentGoodEvil(oTarget), abs(GetGoodEvilValue(oTarget) - GetGoodEvilValue(oClone)), FALSE);

// Clear INVENTORY
 for( iI = 0; iI <= 17; iI++ ) {
ActionUnequipItem(GetItemInSlot(iI, oClone), TRUE);
}

// Copy INVENTORY

 for( iI = 0; iI <= 17; iI++ ) {
if( GetIsObjectValid(GetItemInSlot(iI, oTarget)) ){
	DelayCommand(0.1, AssignCommand(oClone, ActionEquipItem(CreateItemOnObject(GetStringLowerCase(GetTag(GetItemInSlot(iI, oTarget))), oClone, 1, 1), iI, TRUE)));
	}
}

// Copy APPEARANCE
ApplyEffectToObject(2, EffectDisguise(GetAppearanceType(oTarget)), oClone, 0.0);

// Set FACTION
ChangeToStandardFaction(oClone, iFaction);

// Heal up the clone (just in case)
ApplyEffectToObject(0, EffectHeal(GetMaxHitPoints(oClone) - GetCurrentHitPoints(oClone)), oClone, 0.0);
ApplyEffectToObject(0, EffectHealForcePoints(GetMaxForcePoints(oClone) - GetCurrentForcePoints(oClone)), oClone, 0.0);

 }

}


void main() {

}

 

And then this is executed through either:

#include "jc_inc_clone"

void main() {

JC_CLONE(OBJECT_SELF, 2);

}

or:

#include "jc_inc_clone"

void main() {

JC_CLONE(GetNearestObject(OBJECT_TYPE_CREATURE, OBJECT_SELF, 1), 2);

}

 

EDIT: I have someone breathing down my neck, waiting impatiently for me to finish this, so to prove that it's not my fault I took the scripts and all the support files and moved them into K2, not changing a damn thing. AND IT WORKS. So what's up? I'm officially lost at this point.

Link to comment
Share on other sites

  • 1 month later...

Apologies if I could have found this somewhere else, but I'm rather new to modding, and can't seem to find a particular piece of script code anywhere. I'm trying to write a conditional script to check class in K1 before a specific dialogue option becomes available, but I've searched and searched and can't find the specific code I need.

Link to comment
Share on other sites

// 341: A creature can have up to three classes.  This function determines the
// creature's class (CLASS_TYPE_*) based on nClassPosition.
// - nClassPosition: 1, 2 or 3
// - oCreature
// * Returns CLASS_TYPE_INVALID if the oCreature does not have a class in
//   nClassPosition (i.e. a single-class creature will only have a value in
//   nClassLocation=1) or if oCreature is not a valid creature.
int GetClassByPosition(int nClassPosition, object oCreature=OBJECT_SELF);

So, if you want to check if a creature has any particular class:

int StartingConditional(){

object oCreature = [whatever];
int iClass = [whatever];
int iC1 = GetClassByPosition(1, oCreature);
int iC2 = GetClassByPosition(2, oCreature);
int iC3 = GetClassByPosition(3, oCreature);

if(	iC1 == iClass ||
iC2 == iClass ||
iC3 == iClass ){
return TRUE;
}
return FALSE;

}

I'm not sure how the class positions get assigned, so depending on what you need it could be trickier than just that.

Link to comment
Share on other sites

// 341: A creature can have up to three classes.  This function determines the
// creature's class (CLASS_TYPE_*) based on nClassPosition.
// - nClassPosition: 1, 2 or 3
// - oCreature
// * Returns CLASS_TYPE_INVALID if the oCreature does not have a class in
//   nClassPosition (i.e. a single-class creature will only have a value in
//   nClassLocation=1) or if oCreature is not a valid creature.
int GetClassByPosition(int nClassPosition, object oCreature=OBJECT_SELF);

So, if you want to check if a creature has any particular class:

int StartingConditional(){

object oCreature = [whatever];
int iClass = [whatever];
int iC1 = GetClassByPosition(1, oCreature);
int iC2 = GetClassByPosition(2, oCreature);
int iC3 = GetClassByPosition(3, oCreature);

if(	iC1 == iClass ||
iC2 == iClass ||
iC3 == iClass ){
return TRUE;
}
return FALSE;

}

I'm not sure how the class positions get assigned, so depending on what you need it could be trickier than just that.

 

Thanks very much, combining some of that with code from another script that had another bit of what I needed allowed me to write the necessary script, and I've tested it ingame, so I know it works :)

 

Thanks again

Link to comment
Share on other sites

I know this probably seems like a really wierd question but I assure you there is good reason for it. Now to the question: would it be possible to make a force power (buff) never go away after you cast it? And if that is possible would it be possible to remove the blue arrow it makes?

 

Thanks in advance

Link to comment
Share on other sites

I know this probably seems like a really wierd question but I assure you there is good reason for it. Now to the question: would it be possible to make a force power (buff) never go away after you cast it? And if that is possible would it be possible to remove the blue arrow it makes?

 

Thanks in advance

 

You might experiment with the "DURATION_TYPE_PERMANENT" option in the ApplyEffect function. Though I would have to assume that it is gone when dispelled and/or you change areas. Still, experimentation may prove me wrong. Hope you have a good run and remember:

 

Show spoiler
(hidden content - requires Javascript to show)
"Scripting is fun!"~~ said some random modder as others attacked him for his insanity.
Link to comment
Share on other sites

"Scripting is fun!"~~ said some random modder as others attacked him for his insanity.

 

 

Well it would be easier if one could program such things in one contiguous file. Kinda stinks having so many separate files to go through. Sure, you could include a lot of scripts that define functions.

 

Actually that sounds like it would be a lot of fun!

Link to comment
Share on other sites

Well it would be easier if one could program such things in one contiguous file. Kinda stinks having so many separate files to go through. Sure, you could include a lot of scripts that define functions.

 

Actually that sounds like it would be a lot of fun!

 

"Ahhh! He's insane! Aaatttttaaaccckkkk!!!"~~the mob continues to assault programmers everywhere...

Link to comment
Share on other sites

  • 3 weeks later...

Hello there! Hope it's alright to post this here:

 

I’m looking to create dialogs with fight sequences for K1 like these:

 

 

The CutsceneAttack function is often mentioned and works, but I run into the problem that was also discussed here without a solution coming up, which is that it works for only one attack. For that reason, I don’t think this function is used in the scenes above; I can clearly see an NPC attack more than once in a single dialog node.

 

So, my question is, what other method is there to create these fight sequences? I’d like them to be identical every time. Should I use the ActionPlayAnimation or PlayAnimation functions? In that case, would I have to “manually” call the attacker’s and defender’s animation, plus any effects like sparks or lasers from blasters?

Link to comment
Share on other sites

Hello there! Hope it's alright to post this here:

 

I’m looking to create dialogs with fight sequences for K1 like these:

 

 

The CutsceneAttack function is often mentioned and works, but I run into the problem that was also discussed here without a solution coming up, which is that it works for only one attack. For that reason, I don’t think this function is used in the scenes above; I can clearly see an NPC attack more than once in a single dialog node.

 

So, my question is, what other method is there to create these fight sequences? I’d like them to be identical every time. Should I use the ActionPlayAnimation or PlayAnimation functions? In that case, would I have to “manually” call the attacker’s and defender’s animation, plus any effects like sparks or lasers from blasters?

 

Have you tried putting the CutsceneAttack function in a for loop? Like this:

 

Show spoiler
(hidden content - requires Javascript to show)
void main()
{
int iTest = 0;
for(iTest, iTest <= <number of attacks you want>, iTest++)
   {
        CutsceneAttack();
   }
}

 

Don't forget to insert the arguments for the CutsceneAttack function.

Link to comment
Share on other sites

You could probably just call CutsceneAttack over and over again, sort of like this:

 

void main()
{

object oOne = GetObjectByTag("one");
object oTwo = GetObjectByTag("two");

AssignCommand(oOne, CutsceneAttack();
AssignCommand(oTwo, CutsceneAttack();
AssignCommand(oOne, CutsceneAttack();
AssignCommand(oTwo, CutsceneAttack();
AssignCommand(oOne, CutsceneAttack();
AssignCommand(oTwo, CutsceneAttack();

}

 

(I'm pretty sure this script won't compile, it's just an example of what you could do.)

 

I remember when I made a cutscene I just used the attack function, made two NPC's attack each other and then let them have it for a few seconds. Then I would end it did with the use talent feat function. I don't know if these function names are correct, I'm on my phone at the moment. I'll check back later when I'm on my computer.

Link to comment
Share on other sites

Fallen Guardian, your code makes calls for one attacker, then the other, then the first one again and so on. This is how fighting in-game works as well; it's turn based. I think that's why making a call for the attacker to repeatedly attack doesn't work (which is what I was trying to do), it's waiting for the victim to fight back, which it doesn't, because I've not programmed it to do so.

 

After some more tinkering I think I've found the solution, which is to use:

 

ChangeToStandardFaction(oVictim, STANDARD_FACTION_PREY);
ChangeToStandardFaction(oAttacker, STANDARD_FACTION_PREDATOR);

 

This, apparently, makes the attacker ignore the turn-taking rules.

 

There's one weird caveat with this, however. If I use something like this:

 

AssignCommand(oAttacker, CutsceneAttack(oVictim, 197, ATTACK_RESULT_MISS, 0));
AssignCommand(oAttacker, CutsceneAttack(oVictim, 197, ATTACK_RESULT_CRITICAL_HIT, 1000));

 

The animation of the first attack will play, but not the second time. The attack does succeed, because the victim dies. The animation for any attacks after the first one will only play if the CutsceneAttack call is made after the previous attack has already finished. So, it needs to be something like this:

 

AssignCommand(oAttacker, CutsceneAttack(oVictim, 197, ATTACK_RESULT_MISS, 0));
DelayCommand(3.5, AssignCommand(oAttacker, CutsceneAttack(oVictim, 197, ATTACK_RESULT_CRITICAL_HIT, 1000)));

 

I just tested this myself and it works!

Still, it seems rather... curious.

Link to comment
Share on other sites

Show spoiler
(hidden content - requires Javascript to show)
Fallen Guardian, your code makes calls for one attacker, then the other, then the first one again and so on. This is how fighting in-game works as well; it's turn based. I think that's why making a call for the attacker to repeatedly attack doesn't work (which is what I was trying to do), it's waiting for the victim to fight back, which it doesn't, because I've not programmed it to do so.

After some more tinkering I think I've found the solution, which is to use:

ChangeToStandardFaction(oVictim, STANDARD_FACTION_PREY);
ChangeToStandardFaction(oAttacker, STANDARD_FACTION_PREDATOR);



This, apparently, makes the attacker ignore the turn-taking rules.

There's one weird caveat with this, however. If I use something like this:

AssignCommand(oAttacker, CutsceneAttack(oVictim, 197, ATTACK_RESULT_MISS, 0));
AssignCommand(oAttacker, CutsceneAttack(oVictim, 197, ATTACK_RESULT_CRITICAL_HIT, 1000));



The animation of the first attack will play, but not the second time. The attack does succeed, because the victim dies. The animation for any attacks after the first one will only play if the CutsceneAttack call is made after the previous attack has already finished. So, it needs to be something like this:

AssignCommand(oAttacker, CutsceneAttack(oVictim, 197, ATTACK_RESULT_MISS, 0));
DelayCommand(3.5, AssignCommand(oAttacker, CutsceneAttack(oVictim, 197, ATTACK_RESULT_CRITICAL_HIT, 1000)));



I just tested this myself and it works!
Still, it seems rather... curious.



Could someone put that into a tutorial for cutscene combat, please?
Link to comment
Share on other sites

Here is an example how TSLRCM does it;

 

//{[Handmaiden attacks, Kreia barely moves, deftly avoiding every blow, then gets bored, and grabs the Handmaiden by the throat, or in a Force Crush.]}
                    case 5:
                          {
                          SetMinOneHP(oHandmaiden, TRUE);
                          SetMinOneHP(oKreia, TRUE);
                          AssignCommand(oHandmaiden , ActionAttack(oKreia));
                          DelayCommand(3.0, AssignCommand(oHandmaiden , ActionAttack(oKreia)));
                          DelayCommand(6.0, AssignCommand(oHandmaiden , ActionAttack(oKreia)));
                          DelayCommand(8.0, AssignCommand(oHandmaiden , ActionAttack(oKreia)));
                          DelayCommand(10.0, SetMinOneHP(oKreia, FALSE));
                          DelayCommand(10.0, SetMinOneHP(oHandmaiden , FALSE));
                          DelayCommand(10.0, AssignCommand(oKreia, ActionPlayAnimation(10063, 1.0, 3.5)));
                          DelayCommand(10.1, AssignCommand(oHandmaiden , ClearAllActions()));
                          DelayCommand(10.2, ApplyEffectToObject(DURATION_TYPE_TEMPORARY, EffectChoke(), oHandmaiden, 3.0));
                          DelayCommand(13.3, AssignCommand(oHandmaiden , ClearAllActions()));
                          DelayCommand(13.5, AssignCommand(oHandmaiden, SetIsDestroyable(0, 1, 0)));
                          effect efDeath = EffectDeath(0, 0, 1);
                          DelayCommand(13.5, ApplyEffectToObject(2, efDeath, oHandmaiden, 0.0));
                          }
                          break;

Link to comment
Share on other sites

Show spoiler
(hidden content - requires Javascript to show)
Here is an example how TSLRCM does it;

//{[Handmaiden attacks, Kreia barely moves, deftly avoiding every blow, then gets bored, and grabs the Handmaiden by the throat, or in a Force Crush.]}
                    case 5:
                          {
                          SetMinOneHP(oHandmaiden, TRUE);
                          SetMinOneHP(oKreia, TRUE);
                          AssignCommand(oHandmaiden , ActionAttack(oKreia));
                          DelayCommand(3.0, AssignCommand(oHandmaiden , ActionAttack(oKreia)));
                          DelayCommand(6.0, AssignCommand(oHandmaiden , ActionAttack(oKreia)));
                          DelayCommand(8.0, AssignCommand(oHandmaiden , ActionAttack(oKreia)));
                          DelayCommand(10.0, SetMinOneHP(oKreia, FALSE));
                          DelayCommand(10.0, SetMinOneHP(oHandmaiden , FALSE));
                          DelayCommand(10.0, AssignCommand(oKreia, ActionPlayAnimation(10063, 1.0, 3.5)));
                          DelayCommand(10.1, AssignCommand(oHandmaiden , ClearAllActions()));
                          DelayCommand(10.2, ApplyEffectToObject(DURATION_TYPE_TEMPORARY, EffectChoke(), oHandmaiden, 3.0));
                          DelayCommand(13.3, AssignCommand(oHandmaiden , ClearAllActions()));
                          DelayCommand(13.5, AssignCommand(oHandmaiden, SetIsDestroyable(0, 1, 0)));
                          effect efDeath = EffectDeath(0, 0, 1);
                          DelayCommand(13.5, ApplyEffectToObject(2, efDeath, oHandmaiden, 0.0));
                          }
                          break;



Did you also have to set them to specific factions?
Link to comment
Share on other sites

No.

She's neutral by default though.

 

When not, yeah, it has to be done. Here for example Kreia vs. Hanharr in the Jekk Jekk Tar. One solution actually has him attack, the other version uses animations to 'fake' it. Had to be done that way considering it works differently if he's a teammate, and damage will break the cutscene.

 

if ((nParam1 == 5)) {
	object oKreia = GetObjectByTag("Kreia", 0);
	object oHanharr = GetObjectByTag("Hanharr", 0);
	ChangeToStandardFaction(oHanharr, STANDARD_FACTION_GIZKA_1);
	ChangeToStandardFaction(oKreia, STANDARD_FACTION_GIZKA_2);
       DelayCommand(0.2, AssignCommand(oHanharr, ActionAttack(oKreia)));
	DelayCommand(1.0, ChangeToStandardFaction(oHanharr, STANDARD_FACTION_FRIENDLY_1));
	DelayCommand(1.0, ChangeToStandardFaction(oKreia, STANDARD_FACTION_FRIENDLY_1));
	DelayCommand(2.2, AssignCommand(oKreia, ActionPlayAnimation(10063, 1.0, 3.5)));
       DelayCommand(2.3, AssignCommand(oHanharr, ClearAllActions()));
       DelayCommand(2.5, ApplyEffectToObject(DURATION_TYPE_TEMPORARY, EffectChoke(), oHanharr, 2.3));
       DelayCommand(4.9, AssignCommand(oHanharr, ClearAllActions()));
}
if ((nParam1 == 6)) {
	object oKreia = GetObjectByTag("Kreia", 0);
	object oHanharr = GetObjectByTag("Hanharr", 0);
       DelayCommand(0.2, AssignCommand(oHanharr, ActionPlayAnimation(10098, 1.0, 3.5)));
	DelayCommand(2.2, AssignCommand(oKreia, ActionPlayAnimation(10063, 1.0, 3.5)));
       DelayCommand(2.3, AssignCommand(oHanharr, ClearAllActions()));
       DelayCommand(2.5, ApplyEffectToObject(DURATION_TYPE_TEMPORARY, EffectChoke(), oHanharr, 2.3));
	SetFakeCombatState(oHanharr, 0);
	SetFakeCombatState(oKreia, 0);
       DelayCommand(4.9, AssignCommand(oHanharr, ClearAllActions()));
}

Link to comment
Share on other sites

  • 2 weeks later...

Need some help. Here's a script to make Atton and the PC get Pazaak cards in their hand. All good, and it works... but the PC's cards are invisible. Atton works fine, just not the PC.

If the convo ends I find the cards in my hand, still invisible. Swapping with other weapon and back makes visible, so tried unequipping and re-equipping... didn't work. Tried adding a specific "render" to the pazaak cards, didn't work. Not quite sure what more to try.

I'd rather use the real player than a fake dummy, as that complicates things down the road for what I want... so, anyone got a clue what to do?

void main () {
object oPC = GetFirstPC();
object oAtton = GetObjectByTag("Atton");
int nParam1 = GetScriptParameter(1);
if ((nParam1 == 0)) {
	SetGlobalFadeOut(0.0, 0.0, 0.0, 0.0, 0.0);
	SetGlobalFadeIn(1.0, 1.0, 0.0, 0.0, 0.0);
	GiveItem(GetItemInSlot(4, oPC), oPC);
	GiveItem(GetItemInSlot(5, oPC), oPC);
	GiveItem(GetItemInSlot(4, oAtton), oPC);
	GiveItem(GetItemInSlot(5, oAtton), oPC);
	CreateItemOnObject("w_pazaak_01", oPC, 1, 1);
	CreateItemOnObject("w_pazaak_01", oAtton, 1, 1);
	DelayCommand(0.5, AssignCommand(oPC, ActionEquipItem(GetObjectByTag("w_pazaak_01"), 4, TRUE)));
	DelayCommand(0.5, AssignCommand(oAtton, ActionEquipItem(GetObjectByTag("w_pazaak_01"), 4, TRUE)));
	AssignCommand(oPC, ActionJumpToLocation(Location(Vector(54.15430,45.80115,1.80000),260.0f)));
	AssignCommand(oAtton, ActionJumpToLocation(Location(Vector(54.26917,43.75487,1.80000),60.0f)));
	DelayCommand(0.8, AssignCommand(oPC, ActionPlayAnimation(38, 1.0, (-1.0))));
	DelayCommand(0.8, AssignCommand(oAtton, ActionPlayAnimation(38, 1.0, (-1.0))));
}
}

Link to comment
Share on other sites

Hmmm, yes, once I dropped the cutscene I got the pazaak cards in hand. Annoying is Atton immediately does his Ebon Hawk routine though, which makes him not getting his cards.

 

Going to try dropping out real fast then rebooting the convo and have Atton get his cards then... hope that works.

 

EDIT: After all that effort, nope. Once the action comes back on the PC loses his hand :/.

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.


×
×
  • Create New...