I did put n_darthtraya001.utc in the override folder for the mod so that is almost for sure the problem. Do you perhaps know of a way to fix it? Thank you!
There are two ways of fixing that, which I can think of:
The easy way: Don't use the override folder for this. Put the modified n_darthtraya001.utc template back into the module it was extracted from, instead of putting it in the override folder.
The harder, override way: Rename the n_darthtraya001.utc template for Atris into something else, and then change the three scripts that spawn a character from this template into using your renamed template instead. Then put the recompiled modified scripts, along with the renamed UTC template, in the override folder.
The scripts that need to be changed (as far as I remember) are:
// ST: a_kreatris.nss (262TEL_s.rim)
void SwitchToHandmaiden() {
SwitchPlayerCharacter(NPC_HANDMAIDEN);
}
void StartHandmaidenScene() {
CreateObject(OBJECT_TYPE_CREATURE, "p_handmaiden012", GetLocation(GetWaypointByTag("sp_sis_sisend1")));
CreateObject(OBJECT_TYPE_CREATURE, "p_handmaiden013", GetLocation(GetWaypointByTag("sp_sis_sisend2")));
CreateObject(OBJECT_TYPE_CREATURE, "p_handmaiden014", GetLocation(GetWaypointByTag("sp_sis_sisend3")));
CreateObject(OBJECT_TYPE_CREATURE, "p_handmaiden014", GetLocation(GetWaypointByTag("sp_sis_sisend4")));
CreateObject(OBJECT_TYPE_CREATURE, "p_handmaiden014", GetLocation(GetWaypointByTag("sp_sis_sisend5")));
DelayCommand(0.2f, AssignCommand(GetPartyLeader(), ActionJumpToObject(GetWaypointByTag("sp_hand_sisend"))));
SetMinOneHP(GetPartyLeader(), TRUE);
AssignCommand(GetPartyLeader(), ClearAllActions());
AssignCommand(GetPartyLeader(), ActionStartConversation(GetPartyLeader(), "sisend"));
}
void SpawnFinalAtris() {
CreateObject(OBJECT_TYPE_CREATURE, "n_darthtraya001", GetLocation(GetWaypointByTag("sp_traya")));
}
void main() {
int nParam1 = GetScriptParameter(1);
object oAtris = GetObjectByTag("Atris");
object oKreia = GetObjectByTag("KreiaEvil");
object oDrone1 = GetObjectByTag("Sister1");
object oDrone2 = GetObjectByTag("Sister2");
switch (nParam1) {
case 0:
AssignCommand(oKreia, ActionMoveToObject(GetWaypointByTag("wp_kreia_end2")));
break;
case 1:
AssignCommand(oKreia, ActionMoveToLocation(GetLocation(GetWaypointByTag("wp_kreia_ending"))));
AssignCommand(oKreia, ActionDoCommand(SetFacing(GetFacing(GetWaypointByT ag("wp_kreia_ending")))));
break;
case 2:
AssignCommand(oKreia, SetFacing(90.0f));
break;
case 3:
AssignCommand(oKreia, ActionMoveToObject(GetWaypointByTag("wp_kreia_end")));
break;
case 4:
SetLockOrientationInDialog(oAtris, TRUE);
SetLockOrientationInDialog(oKreia, TRUE);
AssignCommand(oKreia, SetFacing(270.0f));
break;
case 5:
SetGlobalFadeOut(1.0f, 2.0f);
break;
case 6:
AssignCommand(oKreia, ActionJumpToObject(GetObjectByTag("wp_pc_end")));
CreateObject(OBJECT_TYPE_CREATURE, "p_handmaiden003", GetLocation(GetObjectByTag("sp_hand_kreia1")));
CreateObject(OBJECT_TYPE_CREATURE, "p_handmaiden004", GetLocation(GetObjectByTag("sp_hand_kreia2")));
DestroyObject(oAtris);
break;
case 7:
AssignCommand(oKreia, ActionMoveToObject(GetObjectByTag("wp_atris_2")));
SetGlobalFadeIn(0.1f, 2.0f);
break;
case 8:
AssignCommand(oDrone1, ActionMoveToObject(GetObjectByTag("wp_hand_kreia1"), TRUE));
AssignCommand(oDrone2, ActionMoveToObject(GetObjectByTag("wp_hand_kreia2"), TRUE));
AssignCommand(oKreia, ActionMoveToObject(GetObjectByTag("wp_atris_3")));
SetGlobalFadeOut(0.1f, 2.0f);
DelayCommand(4.0, DestroyObject(oDrone1));
DelayCommand(4.0, DestroyObject(oDrone2));
if (GetGlobalBoolean("000_PLAYER_GENDER")) {
SetNPCSelectability(NPC_HANDMAIDEN, TRUE);
DelayCommand(4.0, SwitchToHandmaiden());
DelayCommand(5.0, StartHandmaidenScene());
DelayCommand(5.5, SetGlobalFadeIn(0.1f, 2.0f));
DelayCommand(8.0, DestroyObject(oKreia));
}
else {
DelayCommand(5.0, SpawnFinalAtris());
DelayCommand(6.0, SetGlobalFadeIn(0.1f, 2.0f));
DelayCommand(10.0f, DestroyObject(oKreia));
}
break;
}
}
// ST: a_atrend2.nss (262TEL_s.rim)
#include "k_inc_generic"
void SpawnFinalAtris();
void main() {
int nParam = GetScriptParameter(1);
object oExile = GetFirstPC();
object oMaiden = GetObjectByTag("Handmaiden");
object oAtris = GetObjectByTag("Atris");
switch (nParam) {
case 0:
SetGlobalFadeIn(2.0, 2.0);
DelayCommand(0.5, AssignCommand(oAtris, ActionJumpToObject(GetWaypointByTag("wp_atris_atrend1"))));
break;
case 1: {
SetCommandable(TRUE, oAtris);
SetLocalBoolean(oAtris, SW_FLAG_AI_OFF, FALSE);
SetNPCSelectability(NPC_HANDMAIDEN, FALSE);
ChangeToStandardFaction( oAtris, STANDARD_FACTION_HOSTILE_1 );
AssignCommand(oAtris, DelayCommand(1.0, AssignCommand(oAtris, GN_DetermineCombatRound(GetFirstPC()))));
AssignCommand(oMaiden, SetIsDestroyable(FALSE, TRUE, FALSE));
effect eKill = EffectDeath(FALSE, FALSE, TRUE);
ApplyEffectToObject(DURATION_TYPE_PERMANENT, eKill, oMaiden);
break;
}
case 2:
AssignCommand(GetFirstPC(), ActionJumpToObject(GetWaypointByTag("wp_hand_sisend")));
SetLightsaberPowered(GetFirstPC(), TRUE);
break;
case 3:
break;
case 4: {
effect eBolt = EffectBeam(VFX_BEAM_LIGHTNING_DARK_L, oAtris, BODY_NODE_HAND);
effect eFry = EffectVisualEffect(VFX_PRO_LIGHTNING_L);
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eBolt, oMaiden, 1.4);
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eFry, oMaiden, 1.4);
AssignCommand(oAtris, PlayAnimation( ANIMATION_FIREFORGET_FORCE_CAST ));
}
break;
case 5:
SetGlobalFadeIn(0.3, 2.0);
DelayCommand(0.5, AssignCommand(oAtris, ActionJumpToObject(GetWaypointByTag("sp_traya_run"))));
DelayCommand(0.5, AssignCommand(oAtris, ActionMoveToObject(GetWaypointByTag("wp_traya_run"), TRUE)));
break;
case 6:
SetGlobalFadeOut(0.1, 2.0);
DelayCommand(3.0, SpawnFinalAtris());
AssignCommand(GetFirstPC(), DelayCommand(5.0, SetGlobalFadeIn(0.1, 2.0)));
DelayCommand(3.8, DestroyObject(oAtris));
break;
case 7: {
DestroyObject(GetObjectByTag("Atris"));
DestroyObject(GetObjectByTag("Handmaiden"));
object oFinAtris = CreateObject( OBJECT_TYPE_CREATURE, "n_darthtraya002", GetLocation(GetWaypointByTag("sp_traya")) );
AssignCommand(GetFirstPC(), ActionJumpToObject(GetWaypointByTag("sp_pc_atrend2")));
object oFinMaiden = SpawnAvailableNPC(NPC_HANDMAIDEN, GetLocation(GetWaypointByTag("sp_hand_atrend1")));
SetMinOneHP(oFinMaiden, FALSE);
SetMinOneHP(GetFirstPC(), FALSE);
SetLockOrientationInDialog(oFinMaiden, TRUE);
effect eHeal = EffectHeal(GetMaxHitPoints(GetFirstPC()));
ApplyEffectToObject(DURATION_TYPE_INSTANT, eHeal, GetFirstPC());
AssignCommand(oFinAtris, ActionStartConversation(GetFirstPC(), "atrend2"));
}
break;
}
}
void SpawnFinalAtris() {
CreateObject( OBJECT_TYPE_CREATURE, "n_darthtraya001", GetLocation(GetWaypointByTag("sp_traya")) );
}
// ST: a_atrend3.nss (262TEL_s.rim)
#include "k_inc_generic"
void AttackPlayer(object oAttacker) {
ChangeToStandardFaction(oAttacker, STANDARD_FACTION_HOSTILE_1);
GN_DetermineCombatRound(GetFirstPC());
}
void main() {
int iParam = GetScriptParameter(1);
object oAtris = GetObjectByTag("Atris");
switch (iParam) {
case 0: {
DelayCommand(1.0, SetLightsaberPowered(oAtris, TRUE, TRUE, TRUE));
DelayCommand(1.0, AttackPlayer(oAtris));
}
break;
case 1: {
object oDoor = GetObjectByTag("MedChamber");
SetLocked(oDoor, FALSE);
AssignCommand(oDoor, ActionOpenDoor(oDoor));
DelayCommand(2.0, SetLightsaberPowered(GetObjectByTag("Atris"), TRUE, FALSE, TRUE));
oDoor = GetObjectByTag("CouncilRoom");
SetLocked(oDoor, FALSE);
AssignCommand(oDoor, ActionOpenDoor(oDoor));
}
break;
case 2: {
DelayCommand(2.0, SetGlobalFadeOut());
CreatureFlourishWeapon(GetFirstPC());
}
break;
case 3: {
AssignCommand(GetObjectByTag("Atris"), ActionJumpToLocation( GetLocation(GetWaypointByTag("sp_traya")) ));
AssignCommand(GetFirstPC(), ActionJumpToLocation(GetLocation( GetWaypointByTag("WP_PC_Traya_Death") )));
DelayCommand(1.0, AssignCommand(GetObjectByTag("Atris"), ActionPlayAnimation(ANIMATION_LOOPING_DEAD_PRONE, 1.0, -1.0)));
}
break;
case 4: {
SetGlobalFadeIn(0.5, 2.0);
DelayCommand(2.0, SetLightsaberPowered(GetFirstPC(), TRUE, FALSE, TRUE));
AurPostString("Getting UP? Are we?", 5, 5, 5.0);
}
break;
case 5: {
object oDoor = GetObjectByTag("MedChamber");
AssignCommand(oDoor, ActionCloseDoor(oDoor));
SetLocked(oDoor, TRUE);
SetGlobalFadeOut(0.0, 3.0);
object oPC = GetFirstPC();
object oParty1 = GetNextPC();
object oParty2 = GetNextPC();
AssignCommand(oPC, ClearAllActions());
AssignCommand(oParty1, ClearAllActions());
AssignCommand(oParty2, ClearAllActions());
DelayCommand(4.0, AssignCommand(oPC, ActionJumpToObject( GetWaypointByTag("wp_pc_end") )));
DelayCommand(4.0, AssignCommand(oParty1, ActionJumpToObject( GetWaypointByTag("wp_npc1_end") )));
DelayCommand(4.0, AssignCommand(oParty2, ActionJumpToObject( GetWaypointByTag("wp_npc2_end") )));
DelayCommand(5.0, AssignCommand(oPC, SetFacing(90.0)));
}
break;
case 6: {
effect eLightning = EffectBeam(VFX_BEAM_LIGHTNING_DARK_L, GetFirstPC(), BODY_NODE_CHEST);
effect eVfx = EffectVisualEffect(VFX_PRO_LIGHTNING_L);
int iHolo = 0;
while ((iHolo < 10)) {
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLightning, GetObjectByTag("Holocron", iHolo), 4.0);
iHolo++;
}
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eVfx, GetFirstPC(), 4.0);
}
break;
case 7: {
SetGlobalFadeOut(1.0, 2.0);
object oPC = GetFirstPC();
object oParty1 = GetNextPC();
object oParty2 = GetNextPC();
AssignCommand(oPC, ClearAllActions());
AssignCommand(oParty1, ClearAllActions());
AssignCommand(oParty2, ClearAllActions());
DelayCommand(3.0, AssignCommand(oPC, ActionJumpToObject( GetWaypointByTag("wp_pc_end") )));
DelayCommand(3.0, AssignCommand(oParty1, ActionJumpToObject( GetWaypointByTag("wp_npc1_end") )));
DelayCommand(3.0, AssignCommand(oParty2, ActionJumpToObject( GetWaypointByTag("wp_npc2_end") )));
DelayCommand(3.0, AssignCommand(oPC, SetFacing(90.0)));
object oDoor = GetObjectByTag("MedChamber");
DelayCommand(5.0, AssignCommand(oDoor, ActionCloseDoor(oDoor)));
SetLocked(oDoor, TRUE);
}
break;
case 8: {
SetGlobalFadeIn(0.1, 2.0);
DelayCommand(0.1, AssignCommand(GetObjectByTag("Atris"), ActionStartConversation(GetObjectByTag("Kreia"), "Atrend4")));
}
break;
case 9: {
SetGlobalFadeOut(0.1, 2.0);
DelayCommand(4.0, SetGlobalFadeIn(0.1, 0.1));
}
break;
case 10: {
SetGlobalNumber("000_Jedi_Found", 4);
DestroyObject(GetObjectByTag("Atris"));
SetLocked(GetObjectByTag("MedChamber"), FALSE);
CreateObject(OBJECT_TYPE_CREATURE, "n_darthtraya001", GetLocation(GetWaypointByTag("sp_traya")));
}
break;
case 11: {
AssignCommand(GetFirstPC(), PlayAnimation(1077, 1.0, 4.0));
}
break;
}
}
Is there a file named n_darthtraya001.utc in your override folder? If so that's probably the cause of the problem, since a template with this name is used both for Atris at Telos and Darth Traya in the Trayus Core for some reason. Putting one of those files in the override folder will override both, causing problems at the other location.
this is easily understood. kreia in her dialog with atris right before this says "there must always be a darth traya." :lol:
seriously thou... ok, semi-serious, i could see some chuckling developer taking that line to heart and placing her everywhere... or at least in this area.
and full-serious, i could see them thinking about having some form of scene that had the image of darth traya in it and then thought better of it and forgot to take out the materials.
so... the scripting language for this is "c-like"?
Edit: btw, taking out that file from the override folder "fixed" things... is that all that needed to be done? as in... this won't break it else where... ?
---
another thing that i wanted to mention, since i have you both "listening" and you two are the source of the mods i am using. i am guessing that The Veridian Echo Mod accelerates leveling? i mean... i think when i played this unmodded, and i got to the end i was at most level 29... here i am fighting atris and am 34ish... and still have a lot left to go.
this accelerated leveling seems to exacerbate something i noticed when i played unmodded, that being that the hybrid characters can loose track of what level they should be with respect to the pc. it almost seems like it doesn't account for the time they were say a scout, and thus mira is a jedi 6 (i think it was) levels behind the pc...
a specific case that i distinctly remember, playing unmodded, is getting to the place in malacor v where mira has to fight hanhar (sp?) and she was maxed out at level 19ish and hanhar seemed to be at the level of the pc... ie: like 25ish... it took a lot of creative playing (imo, exploiting game flaws like npc getting hung up on edges... hard to do where they fight) so that mira could lay enough mines (good thing i had a lot :lol: ) so that hanhar died... and i could move on in the game.
currently, disciple and beo are out of sync on the negative side of things... i think disciple is the farthest atm, something like 31 (pc is 34ish, and it was worse a difference at one point) and visas (and kreia last i saw her) are actually ahead of the pc at 35ish.
i am not sure there is anything that you can do about this... since, as i said i saw this happen in the unmodded game... there is part of me that thinks this is related to holding back characters so you can turn them into jedi at the same level as when you first meet them. which i definitely did with mira when i played unmodded.... thus i got to fight hanhar both times with mira, at a serious level difference. %-) i seem to recall that, one thing that seemed to help rectify this was to always go through the supporting characters (after you converted them to jedi) every time you changed planet and level them whether you were going to use them there or not.
anyway, i just wanted you to be aware that it does happen....