Well everybody I have been doing a lot of thinking lately about my mods and came to a conclusion... I never tell anybody about them till the absolute last minute and I am really sick of doing that. I want to be able to share the excitement that I get over making a cool new mod for you the humble users. So I am officially announcing this thread as my WIP thread from now on. Now all of my fans ( and I really hope I do have some) can see what I am doing when I am doing it instead of waiting and getting surprised at the last minute like I usually do to everybody. Okay now that we have that little announcement out of the way I want to... well... make another announcement... except this may be slightly larger.:D
Okay now to the announcement! Well I have been working on a project for about 2 months or so in my spare time and I have been really making some giant leaps towards finishing it. So with out further ado I would like to present the "TSL Common Clothes Fix/Revamp" mod.
So I bet you guys are sitting there asking yourselves... What is this? Why is SithRevan doing this? Well I am here to tell you that I do in fact have a reason... now if I could only remember what it was?:lol: Ahhhh yes... the reason for this mod is that the TSL clothing... stinks in my opinion. The clothes that they made for the PC really don't fit in with the storyline to well because you have to remember the Exile is a former Jedi and usually Jedi, even exiles, wear Jedi robes or at least a form of them. So what I did in order to fix that is I simply cut the regular clothing out all together and did my own thing... or BioWare's thing at least. What I did was replaced all of the default characters clothing models with the Jedi robe models from KotOR1. Now I know yet again what you are all thinking... That is impossible to do because one it is porting and two the models anims would not match and it would cause the model to not look right. Well in both cases you would be right except I did not get these models from the K1 game... I got them from the K2 game! It seems that OE at first might have tried to use those models for something and then scraped it because they wanted to go a different direction. In any case they did leave the models in the game with all of the right anims so I took that opportunity to snatch them up and use them to make new clothing. To some of you this may sound a bit easy and you would think I would be done by now and that is where you would be wrong because not only am I making a mod that will replace all 12 variations of the clothing in the game, I am making it so that you will be able to acquire all 12 variations of the clothing in the game! I have really had a rough time with it though so that is why it has taken me so long to get it done. Anyway though that is about all I can tell you about the mod at this point but don't worry I always think about different things so I always have room for change.:D
Also, another thing I do not have any screenies that the moment... but I will. I am going to take some most likely tomorrow and I will post them on here.
Oh yeah one more small thing. I was hoping you guys might be able to help me with a problem I have encountered. It seems that some of my scripts are not working as planned in the game and I am really stumped. Here are the ones I am talking about...
a_end_game.ncs from 506OND
void main() {
int nParam1 = GetScriptParameter(1);
object oTalia;
object oSw_exit1;
switch (nParam1) {
case 0:
SetGlobalFadeOut(0.0, 0.0, 0.0, 0.0, 0.0);
SetGlobalFadeIn(0.5, 2.0, 0.0, 0.0, 0.0);
oTalia = GetObjectByTag("kavar", 0);
oSw_exit1 = GetObjectByTag("wp_end_kavar", 0);
SetLocalBoolean(oTalia, 40, 0);
SetLocalBoolean(oTalia, 55, 1);
SetLocalBoolean(oTalia, 10, 1);
AssignCommand(oTalia, ClearAllActions());
AssignCommand(oTalia, ActionJumpToObject(oSw_exit1, 1));
DelayCommand(2.0, AssignCommand(oTalia, ActionMoveToObject(GetObjectByTag("wp_kavar_end_walk", 0), 0, 1.0)));
DelayCommand(2.0, AssignCommand(oTalia, ActionDoCommand(SetFacing(65.0))));
oTalia = GetObjectByTag("g_riiken", 0);
oSw_exit1 = GetObjectByTag("wp_end_riiken", 0);
SetLocalBoolean(oTalia, 53, 1);
SetLocalBoolean(oTalia, 10, 1);
AssignCommand(oTalia, ActionJumpToObject(oSw_exit1, 1));
{
object oKreia = GetObjectByTag("Kreia", 0);
AssignCommand(oKreia, ClearAllActions());
AssignCommand(oKreia, ActionJumpToObject(GetObjectByTag("sp_cnpc1_end", 0), 1));
}
break;
case 1:
SetGlobalFadeOut(0.0, 0.0, 0.0, 0.0, 0.0);
SetGlobalFadeIn(0.5, 1.5, 0.0, 0.0, 0.0);
oSw_exit1 = GetObjectByTag("wp_end_pc_2", 0);
AssignCommand(GetFirstPC(), ClearAllActions());
AssignCommand(GetFirstPC(), ActionJumpToObject(oSw_exit1, 1));
oTalia = GetObjectByTag("royal_corporal", 0);
oSw_exit1 = GetObjectByTag("wp_end_corp", 0);
AssignCommand(oTalia, ClearAllActions());
AssignCommand(oTalia, ActionJumpToObject(oSw_exit1, 1));
oSw_exit1 = GetObjectByTag("wp_end_talia_1", 0);
oTalia = CreateObject(1, "npc_talia", GetLocation(oSw_exit1), 0);
DelayCommand(0.3, AssignCommand(oTalia, ActionStartConversation(GetFirstPC(), "", 0, 0, 0, "", "", "", "", "", "", 0, 0xFFFFFFFF, 0xFFFFFFFF, 0)));
oTalia = GetObjectByTag("kavar", 0);
DelayCommand(0.4, DestroyObject(oTalia, 0.0, 1, 0.0, 0));
oTalia = GetObjectByTag("g_riiken", 0);
SetLocalBoolean(oTalia, 53, 0);
break;
case 2:
oTalia = GetObjectByTag("talia", 0);
oSw_exit1 = GetObjectByTag("wp_end_talia_2", 0);
if (GetIsObjectValid(GetObjectByTag("mu_treasure1", 0))) {
CreateItemOnObject("a_robe_21", GetFirstPC(), 1, 0);
}
if ((GetTag(OBJECT_SELF) == "mu_treasure1")) {
CreateItemOnObject("a_jediclothes03", GetFirstPC(), 1, 0);
}
if (GetIsObjectValid(GetObjectByTag("mu_treasure2", 0))) {
CreateItemOnObject("a_gloves_12", GetFirstPC(), 1, 0);
}
if (GetIsObjectValid(GetObjectByTag("mu_treasure3", 0))) {
CreateItemOnObject("u_l_crys_18", GetFirstPC(), 1, 0);
}
if (GetIsObjectValid(GetObjectByTag("mu_treasure4", 0))) {
CreateItemOnObject("u_l_colo_09", GetFirstPC(), 1, 0);
}
GiveGoldToCreature(GetFirstPC(), 10000);
DelayCommand(0.1, AssignCommand(oTalia, ActionMoveToObject(oSw_exit1, 0, 1.0)));
AddJournalQuestEntry("jedicloths",40);
SetGlobalNumber("JediCloths", 4);
break;
case 3:
break;
case 4:
oTalia = GetObjectByTag("royal_corporal", 0);
oSw_exit1 = GetObjectByTag("wp_meditation_pc", 0);
DelayCommand(0.2, AssignCommand(oTalia, ActionMoveToObject(oSw_exit1, 0, 1.0)));
AssignCommand(GetFirstPC(), ClearAllActions());
DelayCommand(0.2, AssignCommand(GetFirstPC(), ActionMoveToObject(GetObjectByTag("wp_end_pc_3", 0), 0, 1.0)));
SetGlobalNumber("506OND_End", 1);
DelayCommand(4.0, PlayMovie("OndMov06", 0));
DelayCommand(4.0, StartNewModule("401DXN", "From_506OND", "", "", "", "", "", ""));
break;
case 5:
oTalia = GetObjectByTag("kavar", 0);
ChangeToStandardFaction(oTalia, 1);
ExecuteScript("a_force_combat", oTalia, 0xFFFFFFFF);
break;
case 6:
SetGlobalNumber("506OND_End", 2);
GiveGoldToCreature(GetFirstPC(), 10000);
DelayCommand(0.5, SetGlobalFadeOut(0.0, 0.0, 0.0, 0.0, 0.0));
DelayCommand(0.5, PlayMovie("OndMov06", 0));
DelayCommand(0.5, StartNewModule("401DXN", "From_506OND", "", "", "", "", "", ""));
break;
case 7:
oTalia = GetObjectByTag("talia", 0);
oSw_exit1 = GetObjectByTag("sw_exit1", 0);
DelayCommand(0.1, AssignCommand(oTalia, ActionMoveToObject(oSw_exit1, 0, 1.0)));
break;
case 10:
{
object object45 = GetObjectByTag("kreia", 0);
AssignCommand(object45, ClearAllActions());
AssignCommand(object45, ActionJumpToObject(GetObjectByTag("sp_kreia_t", 0), 1));
DelayCommand(0.5, AssignCommand(object45, ActionMoveToObject(GetObjectByTag("wp_kreia_t", 0), 0, 1.0)));
SetLockOrientationInDialog(object45, 1);
}
break;
case 11:
{
object object49 = GetObjectByTag("kreia", 0);
SetLockOrientationInDialog(object49, 1);
}
break;
case 12:
ActionPauseConversation();
{
object oTobin = GetObjectByTag("tobin", 0);
SetCreatureAILevel(oTobin, 3);
AssignCommand(oTobin, ActionForceMoveToObject(GetObjectByTag("wp_bgone_pc", 0), 1, 1.0, 30.0));
DelayCommand(8.0, DestroyObject(oTobin, 0.0, 0, 0.0, 0));
DelayCommand(6.0, ActionResumeConversation());
}
break;
case 13:
SetGlobalFadeIn(1.5, 1.5, 0.0, 0.0, 0.0);
{
object oNpc_tobin = GetObjectByTag("tobin", 0);
DestroyObject(oNpc_tobin, 0.0, 1, 0.0, 0);
object oSp_kreia_t = GetObjectByTag("wp_tobin_dead", 0);
if (GetIsObjectValid(oNpc_tobin)) {
AurPostString("Tobin is still alive!", 5, 5, 5.0);
ApplyEffectToObject(0, EffectResurrection(1), oNpc_tobin, 0.0);
AssignCommand(oNpc_tobin, ClearAllActions());
AssignCommand(oNpc_tobin, ActionJumpToObject(oSp_kreia_t, 1));
}
else {
AurPostString("Tobin was killed!", 5, 5, 5.0);
oNpc_tobin = CreateObject(1, "npc_tobin", GetLocation(oSp_kreia_t), 0);
ApplyEffectToObject(0, EffectDamage((GetCurrentHitPoints(oNpc_tobin) - 1), 8, 0), oNpc_tobin, 0.0);
}
AssignCommand(oNpc_tobin, ActionPlayAnimation(30, 1.0, (-1.0)));
object object59 = GetObjectByTag("kreia", 0);
oSp_kreia_t = GetObjectByTag("sp_kreia_t", 0);
if (GetIsObjectValid(object59)) {
AssignCommand(object59, ClearAllActions());
AssignCommand(object59, ActionJumpToObject(oSp_kreia_t, 1));
}
else {
object59 = SpawnAvailableNPC(6, GetLocation(oSp_kreia_t));
}
AssignCommand(object59, ActionStartConversation(GetFirstPC(), "506kreia", 0, 0, 0, "", "", "", "", "", "", 0, 0xFFFFFFFF, 0xFFFFFFFF, 0));
}
break;
case 14:
{
object object64 = GetObjectByTag("tobin", 0);
AssignCommand(object64, ClearAllActions());
AssignCommand(object64, ActionPlayAnimation(19, 1.0, 1.0));
}
break;
}
}
This one here is the script that fires to tell Queen Talia to give you the royal treasury items. What I am trying to do is add an one of the clothing variants to it so when she gives you those items you will get mine as well. I am also trying to get a journal entry added and a global set through this code. So in anybody could help me with doing that in this code I would really appreciate it. Thanks everybody.:D
Also, the lines I have added to the script are in red.
Thanks for any help you can give me everybody and the support!:D
Time for an update!
I just thought I could give you all a little update on my progress with this mod. So far I have done a couple new things with the mod and got some things working in certain areas. I had a dialog or two that I edited and some journal entry editing.
I am pretty much almost done with eveything in the mod game-wise. Mostly what I still have to do is minor scripting, placement, and tweaking... oh and I still have to get it setup in the TSLPatcher.
Also, speaking of the TSLPatcher I have decided to spend a bit more time on this mod and make the journal entries I have made compatible with all global.jrl files so you all will not have to worry about any compatibility issues with that. Now other then that I do not have much more for you guys I will have a couple more screenshots though of the areas I am putting things in soon. Enjoy everybody!:D
Oh yeah one more thing, I am sort of having a bit of trouble with a script. I had it right once and everything was firing as planned then something happened. So now it is not working correctly. I was wondering if somebody could give me some tips on how to fix it. Anyway here is the script...
::my_clear_inv.ncs::
void main() {
object oLockerTSFINV = GetObjectByTag("LockerTSFINV", 0);
int int1 = 0;
object oPC = GetFirstPC();
object oKreia = GetObjectByTag("Kreia", 0);
object oAtton = GetObjectByTag("Atton", 0);
if (((!GetIsObjectValid(oKreia)) || (!GetIsObjectValid(oAtton)))) {
AurPostString("No NPC avaialable to remove items FROM", 5, 25, 30.0);
}
object object9 = GetObjectByTag("LockerTSFINV", 0);
object object11 = GetObjectByTag("LockerTSFINV", 1);
object object13 = GetObjectByTag("LockerTSFINV", 2);
object object15 = GetObjectByTag("LockerTSFINV", 3);
object oInvItem = GetFirstItemInInventory(oPC);
while ((oInvItem != OBJECT_INVALID)) {
switch ((int1 % 4)) {
case 0:
oLockerTSFINV = object9;
break;
case 1:
oLockerTSFINV = object11;
break;
case 2:
oLockerTSFINV = object13;
break;
case 3:
oLockerTSFINV = object15;
break;
}
if ((("SonicImprintSensor" == GetTag(oInvItem)) || ("comlink" == GetTag(oInvItem)))) {
oInvItem = GetNextItemInInventory(oPC);
}
else {
GiveItem(oInvItem, oLockerTSFINV);
oInvItem = GetFirstItemInInventory(oPC);
}
(int1++);
}
int int4;
oLockerTSFINV = GetObjectByTag("LockerTSFINV", 4);
int4 = (20 - 1);
while ((int4 >= 0)) {
GiveItem(GetItemInSlot(int4, oPC), oLockerTSFINV);
GiveItem(GetItemInSlot(int4, oAtton), oLockerTSFINV);
GiveItem(GetItemInSlot(int4, oKreia), oLockerTSFINV);
if ((int4 == 1)) {
AssignCommand(oPC, ActionEquipItem(CreateItemOnObject("a_jediclothes04", oPC, 1, 1), 1, 1));
AddJournalQuestEntry("jedicloths",20);
SetGlobalNumber("JediCloths", 2);
AssignCommand(oAtton, ActionEquipItem(CreateItemOnObject("g_a_clothes01", oAtton, 1, 1), 1, 1));
AssignCommand(oKreia, ActionEquipItem(CreateItemOnObject("g_a_clothes01", oKreia, 1, 1), 1, 1));
}
(int4--);
}
}
What I am trying to do with this one is have it give me a journal entry and set a global after equips me with the clothing I set for it. I have been at a loss what to do with this because I have tried all conventional method that I know of (adding a script into the dialog so that it would fire the journal entry and the global, putting the lines in other parts of the script, ect.). So if you guys could give me some suggestion I would really appreciate it. Thanks everybody.
Also, the lines I am having trouble with are yet again in red.:D
I was wondering if somebody could give me some tips on how to fix it. Anyway here is the script...
(SNIP!)
Try doing like this and see if it makes a difference:
// my_clear_inv.nss
void main() {
object oLocker = GetObjectByTag("LockerTSFINV");
int i = 0;
object oExile = GetFirstPC();
object oKreia = GetObjectByTag("Kreia");
object oAtton = GetObjectByTag("Atton");
if (!GetIsObjectValid(oKreia) || !GetIsObjectValid(oAtton)) {
AurPostString("No NPC avaialable to remove items FROM", 5, 25, 30.0);
}
object oLocker1 = GetObjectByTag("LockerTSFINV");
object oLocker2 = GetObjectByTag("LockerTSFINV", 1);
object oLocker3 = GetObjectByTag("LockerTSFINV", 2);
object oLocker4 = GetObjectByTag("LockerTSFINV", 3);
object oItem = GetFirstItemInInventory(oExile);
while (oItem != OBJECT_INVALID) {
switch (i % 4) {
case 0: oLocker = oLocker1; break;
case 1: oLocker = oLocker2; break;
case 2: oLocker = oLocker3; break;
case 3: oLocker = oLocker4; break;
}
if (("SonicImprintSensor" == GetTag(oItem)) || ("comlink" == GetTag(oItem))) {
oItem = GetNextItemInInventory(oExile);
}
else {
GiveItem(oItem, oLocker);
oItem = GetFirstItemInInventory(oExile);
}
i++;
}
int nSlot;
oLocker = GetObjectByTag("LockerTSFINV", 4);
for (nSlot = NUM_INVENTORY_SLOTS - 1; nSlot >= INVENTORY_SLOT_HEAD; nSlot--) {
GiveItem(GetItemInSlot(nSlot, oExile), oLocker);
GiveItem(GetItemInSlot(nSlot, oAtton), oLocker);
GiveItem(GetItemInSlot(nSlot, oKreia), oLocker);
if (nSlot == INVENTORY_SLOT_BODY) {
AssignCommand(oExile, ActionEquipItem(CreateItemOnObject("a_jediclothes04", oExile, 1, TRUE), INVENTORY_SLOT_BODY, TRUE));
AssignCommand(oAtton, ActionEquipItem(CreateItemOnObject("g_a_clothes01", oAtton, 1, TRUE), INVENTORY_SLOT_BODY, TRUE));
AssignCommand(oKreia, ActionEquipItem(CreateItemOnObject("g_a_clothes01", oKreia, 1, TRUE), INVENTORY_SLOT_BODY, TRUE));
}
}
AddJournalQuestEntry("jedicloths", 20);
SetGlobalNumber("JediCloths", 2);
}
Compile and put in override. If it still does not work check that all the tags/names/resrefs are correct.