Sign in to follow this  
Darth Jack

Brotherhood of Shadow Armband experiment.

Recommended Posts

Hey guys! I was playing brotherhood of shadow for the 39th time and I wanted to experiment on something I wanted to do for a LONG time.. So, the armband Silveredge9 created has a limit of 3 shadows... I wanted to see if I could remove that limit to have more shadows to help me in combat because I want to have an all out war :P. I tried editing with the GFF and the KOTOR TOOL to no avail :( any tips? I've been trying for a day to figure it out is it some kind of script I have to edit? I'm completely and utterly stumped..  

Share this post


Link to post
Share on other sites

Yeah, it's definitely a script. The armband utilizes the spells.2da to fire a script. Basically the item (uti) has a spells.2da row number, which fires a specific script everytime the armband is used. Therefore, you need to alter the script that's linked to the spells.2da. Open up your spells.2da with KT 2da editor, make sure you are opening up the one located in your override, then look around until you find one that looks like his. Idk what it would be called but it's probably something obvious, should be one of the last ones added, unless you have a bunch of mods. Then see script fires when used or something like that, remember the name of the script, use the script decompiler or check if he has a nss version of it. From there you've got to edit the script to spawn more people, should be fairly easy at that point to tinker with the script. 

 

Once you've tinkered with the script, compile it under the same name as the original, then place your new script in your override. 

  • Like 1

Share this post


Link to post
Share on other sites

Literally why I love this site... I usually have no problem modding this game my own but whenever I have a problem I try to figure it out myself then as a last resort I post here and I look like an idiot, thanks. I'll try it out and post my results

  • Like 1

Share this post


Link to post
Share on other sites

Was hoping to find a NSS file for easy editing.. But it's a Ncs file. No problem, so now I just need help in finding a decomplier

Share this post


Link to post
Share on other sites

Was hoping to find a NSS file for easy editing.. But it's a Ncs file. No problem, so now I just need help in finding a decomplier

Here you go. Let me know how it goes. 

  • Like 1

Share this post


Link to post
Share on other sites

Thank you! Alright, everything is going good so far, I found out the script name of the armband bos_usepower.ncs and use the kotor tool to extract the script to the kotor tool directory but it tells me to open up the fat.jar file how would I open it up? I believe this is the last step.. Also, I have the latest Java installed am I doing something wrong?

 

Edit: I installed another java and now the file opens but crashes immediately after.

Share this post


Link to post
Share on other sites

I'll just lay it out step by step. 

Unzip folder.

Go to DeNCS folder and hit the executable DeNCS.jar, 

Once launched go to "open"

Browse through files until you find wherever you put the bos_usepower.ncs

Then after it quickly decompiles, right click to "view decompiled code"

 

You don't need java or anything like that. Also you shouldn't be using the KT to extract the file, the file is .ncs from the mod. You should just go to the mod's original file and use the DeNCS directly to open it. 

Personally, I like to take the .ncs file and place it in DeNCS folder for easy of access. 

Share this post


Link to post
Share on other sites

When I opened the file i saw DeNCS but it wasn't a executable just a blank file.. I am so close but it's not an executable :/ i'll try to test and see what's the problem 

 

Edit: DONT KNOW HOW BUT IT WORKED.. I was able to click the file I will tell you the progress will update when done. Thanks so much for standing with me through this

 

Edit: decompiling bos_usepower.ncs faliure.. Dang

 

Edit: Maybe I am doing something completely wrong... Earlier you mentioned "See script when fired" How do you do that? How am I supposed to know what script fires when I am using it? I hope I'm just using the wrong file

 

Edit: It's the right file no doubt about it DeNCS wont do anything about it I am stumped maybe there is another solution

Share this post


Link to post
Share on other sites

Edit: I reinstalled the game and finally saw the decompiled code.. Turns out I did something by a mistake there were multiple armbands and the game didn't know what to do.. Now I am working with a fresh install and a script.  This is the script I need help because this is my second time editing a script and I don't wanna mess it up.

 

 T 00000381
0000000D 1E 00 00000008           JSR fn_00000015
00000013 20 00                    RETN
00000015 02 06                    RSADDO
00000017 04 03 00000000           CONSTI 00000000
0000001D 04 05 000D str           CONSTS "bos_bosghost1"
0000002E 05 00 00C8 02            ACTION GetObjectByTag(00C8), 02
00000033 01 01 FFFFFFF8 0004      CPDOWNSP FFFFFFF8, 0004
0000003B 1B 00 FFFFFFFC           MOVSP FFFFFFFC
00000041 02 06                    RSADDO
00000043 04 03 00000000           CONSTI 00000000
00000049 04 05 000D str           CONSTS "bos_bosghost2"
0000005A 05 00 00C8 02            ACTION GetObjectByTag(00C8), 02
0000005F 01 01 FFFFFFF8 0004      CPDOWNSP FFFFFFF8, 0004
00000067 1B 00 FFFFFFFC           MOVSP FFFFFFFC
0000006D 02 06                    RSADDO
0000006F 04 03 00000000           CONSTI 00000000
00000075 04 05 000D str           CONSTS "bos_bosghost3"
00000086 05 00 00C8 02            ACTION GetObjectByTag(00C8), 02
0000008B 01 01 FFFFFFF8 0004      CPDOWNSP FFFFFFF8, 0004
00000093 1B 00 FFFFFFFC           MOVSP FFFFFFFC
00000099 02 06                    RSADDO
0000009B 04 03 00000001           CONSTI 00000001
000000A1 05 00 0224 00            ACTION GetFirstPC(0224), 00
000000A6 04 03 00007FFF           CONSTI 00007FFF
000000AC 05 00 00E3 03            ACTION GetNearestObject(00E3), 03
000000B1 01 01 FFFFFFF8 0004      CPDOWNSP FFFFFFF8, 0004
000000B9 1B 00 FFFFFFFC           MOVSP FFFFFFFC
000000BF 02 12                    RSADDLOC
000000C1 03 01 FFFFFFF8 0004      CPTOPSP FFFFFFF8, 0004
000000C9 05 00 00D5 01            ACTION GetLocation(00D5), 01
000000CE 01 01 FFFFFFF8 0004      CPDOWNSP FFFFFFF8, 0004
000000D6 1B 00 FFFFFFFC           MOVSP FFFFFFFC
000000DC 03 01 FFFFFFEC 0004      CPTOPSP FFFFFFEC, 0004
000000E4 05 00 002A 01            ACTION GetIsObjectValid(002A), 01
000000E9 04 03 00000000           CONSTI 00000000
000000EF 0B 20                    EQUALII
000000F1 1F 00 00000099           JZ off_0000018A
000000F7 02 05                    RSADDS
000000F9 04 05 000C str           CONSTS "cs_sithghost"
00000109 01 01 FFFFFFF8 0004      CPDOWNSP FFFFFFF8, 0004
00000111 1B 00 FFFFFFFC           MOVSP FFFFFFFC
00000117 03 01 FFFFFFFC 0004      CPTOPSP FFFFFFFC, 0004
0000011F 05 00 002E 01            ACTION PlaySound(002E), 01
00000124 04 03 00000000           CONSTI 00000000
0000012A 03 01 FFFFFFF4 0004      CPTOPSP FFFFFFF4, 0004
00000132 04 05 000D str           CONSTS "bos_bosghost1"
00000143 04 03 00000001           CONSTI 00000001
00000149 05 00 00F3 04            ACTION CreateObject(00F3), 04
0000014E 1B 00 FFFFFFFC           MOVSP FFFFFFFC
00000154 04 04 00000000           CONSTF 0.000000
0000015A 03 01 FFFFFFF4 0004      CPTOPSP FFFFFFF4, 0004
00000162 04 03 00000000           CONSTI 00000000
00000168 04 03 00000BBB           CONSTI 00000BBB
0000016E 05 00 00B4 02            ACTION EffectVisualEffect(00B4), 02
00000173 04 03 00000000           CONSTI 00000000
00000179 05 00 00D8 04            ACTION ApplyEffectAtLocation(00D8), 04
0000017E 1B 00 FFFFFFFC           MOVSP FFFFFFFC
00000184 1D 00 000001F5           JMP off_00000379
0000018A 03 01 FFFFFFF0 0004      CPTOPSP FFFFFFF0, 0004
00000192 05 00 002A 01            ACTION GetIsObjectValid(002A), 01
00000197 04 03 00000000           CONSTI 00000000
0000019D 0B 20                    EQUALII
0000019F 1F 00 00000099           JZ off_00000238
000001A5 02 05                    RSADDS
000001A7 04 05 000C str           CONSTS "cs_sithghost"
000001B7 01 01 FFFFFFF8 0004      CPDOWNSP FFFFFFF8, 0004
000001BF 1B 00 FFFFFFFC           MOVSP FFFFFFFC
000001C5 03 01 FFFFFFFC 0004      CPTOPSP FFFFFFFC, 0004
000001CD 05 00 002E 01            ACTION PlaySound(002E), 01
000001D2 04 03 00000000           CONSTI 00000000
000001D8 03 01 FFFFFFF4 0004      CPTOPSP FFFFFFF4, 0004
000001E0 04 05 000D str           CONSTS "bos_bosghost2"
000001F1 04 03 00000001           CONSTI 00000001
000001F7 05 00 00F3 04            ACTION CreateObject(00F3), 04
000001FC 1B 00 FFFFFFFC           MOVSP FFFFFFFC
00000202 04 04 00000000           CONSTF 0.000000
00000208 03 01 FFFFFFF4 0004      CPTOPSP FFFFFFF4, 0004
00000210 04 03 00000000           CONSTI 00000000
00000216 04 03 00000BBB           CONSTI 00000BBB
0000021C 05 00 00B4 02            ACTION EffectVisualEffect(00B4), 02
00000221 04 03 00000000           CONSTI 00000000
00000227 05 00 00D8 04            ACTION ApplyEffectAtLocation(00D8), 04
0000022C 1B 00 FFFFFFFC           MOVSP FFFFFFFC
00000232 1D 00 00000147           JMP off_00000379
00000238 03 01 FFFFFFF4 0004      CPTOPSP FFFFFFF4, 0004
00000240 05 00 002A 01            ACTION GetIsObjectValid(002A), 01
00000245 04 03 00000000           CONSTI 00000000
0000024B 0B 20                    EQUALII
0000024D 1F 00 00000099           JZ off_000002E6
00000253 02 05                    RSADDS
00000255 04 05 000C str           CONSTS "cs_sithghost"
00000265 01 01 FFFFFFF8 0004      CPDOWNSP FFFFFFF8, 0004
0000026D 1B 00 FFFFFFFC           MOVSP FFFFFFFC
00000273 03 01 FFFFFFFC 0004      CPTOPSP FFFFFFFC, 0004
0000027B 05 00 002E 01            ACTION PlaySound(002E), 01
00000280 04 03 00000000           CONSTI 00000000
00000286 03 01 FFFFFFF4 0004      CPTOPSP FFFFFFF4, 0004
0000028E 04 05 000D str           CONSTS "bos_bosghost3"
0000029F 04 03 00000001           CONSTI 00000001
000002A5 05 00 00F3 04            ACTION CreateObject(00F3), 04
000002AA 1B 00 FFFFFFFC           MOVSP FFFFFFFC
000002B0 04 04 00000000           CONSTF 0.000000
000002B6 03 01 FFFFFFF4 0004      CPTOPSP FFFFFFF4, 0004
000002BE 04 03 00000000           CONSTI 00000000
000002C4 04 03 00000BBB           CONSTI 00000BBB
000002CA 05 00 00B4 02            ACTION EffectVisualEffect(00B4), 02
000002CF 04 03 00000000           CONSTI 00000000
000002D5 05 00 00D8 04            ACTION ApplyEffectAtLocation(00D8), 04
000002DA 1B 00 FFFFFFFC           MOVSP FFFFFFFC
000002E0 1D 00 00000099           JMP off_00000379
000002E6 02 06                    RSADDO
000002E8 04 03 00000000           CONSTI 00000000
000002EE 05 00 0241 01            ACTION GetPartyMemberByIndex(0241), 01
000002F3 01 01 FFFFFFF8 0004      CPDOWNSP FFFFFFF8, 0004
000002FB 1B 00 FFFFFFFC           MOVSP FFFFFFFC
00000301 2C 10 00000000 00000018  STORE_STATE 10, 00000000, 00000018
0000030B 1D 00 0000005B           JMP off_00000366
00000311 04 03 00000000           CONSTI 00000000
00000317 04 05 0000 str           CONSTS ""
0000031B 04 05 0000 str           CONSTS ""
0000031F 04 05 0000 str           CONSTS ""
00000323 04 05 0000 str           CONSTS ""
00000327 04 05 0000 str           CONSTS ""
0000032B 04 05 0000 str           CONSTS ""
0000032F 04 03 00000000           CONSTI 00000000
00000335 04 03 00000000           CONSTI 00000000
0000033B 04 03 00000000           CONSTI 00000000
00000341 04 05 000F str           CONSTS "bos_shadowpower"
00000354 04 03 00000000           CONSTI 00000000
0000035A 05 00 0241 01            ACTION GetPartyMemberByIndex(0241), 01
0000035F 05 00 00CC 0C            ACTION ActionStartConversation(00CC), 0C
00000364 20 00                    RETN
00000366 03 01 FFFFFFFC 0004      CPTOPSP FFFFFFFC, 0004
0000036E 05 00 0006 02            ACTION AssignCommand(0006), 02
00000373 1B 00 FFFFFFFC           MOVSP FFFFFFFC
00000379 1B 00 FFFFFFEC           MOVSP FFFFFFEC
0000037F 20 00                    RETN
 
 
The bos_ghost1 2 and 3 I think are the only shadows you can summon! :D should I add a bos_ghost4?

Share this post


Link to post
Share on other sites

Okay, you've not seen the decompiled code. What you just did was directly open up the .ncs and see the final form of the script. You have not decompiled anything.

 

 

Download DeNCS in zipped form, then unzip. Do you know how to unzip a folder? (Note "Unzip" doesn't mean "open")

Once you've extracted the folder, there should be two files, labeled as such "DeNCS Readme.txt" and DeNCS.jar which is an executable file. 

 

Double click on the DeNCS.jar, to begin installing. According to the readme, you will need java; my mistake on my previous comment.

Additionally you will need the source script for kotor (nwscript.nss), which can be found in your KT folder, or you can follow the Readme's advice and extract it using the KT.  Place nwscript into the same folder of the DeNCS, where you tell it to output the decompiled script. 

 

Once you have the nwscript.nss inside the DeNCS folder, you can now use it to open any .ncs script. 

So once again, go to the BOS:SR mod folder, copy and paste the script into the DeNCS folder, then open that script with the DeNCS.

 

Then right click to view decompiled code. 

 

Please try to follow these directions. Your end result should be this decompiled code> void main() {

object oBos_bosghost1 = GetObjectByTag("bos_bosghost1", 0);
object oBos_bosghost2 = GetObjectByTag("bos_bosghost2", 0);
object oBos_bosghost3 = GetObjectByTag("bos_bosghost3", 0);
object oNearest = GetNearestObject(32767, GetFirstPC(), 1);
location location1 = GetLocation(oNearest);
if ((GetIsObjectValid(oBos_bosghost1) == 0)) {
string string1 = "cs_sithghost";
PlaySound(string1);
CreateObject(1, "bos_bosghost1", location1, 0);
ApplyEffectAtLocation(0, EffectVisualEffect(3003, 0), location1, 0.0);
}
else {
if ((GetIsObjectValid(oBos_bosghost2) == 0)) {
string string2 = "cs_sithghost";
PlaySound(string2);
CreateObject(1, "bos_bosghost2", location1, 0);
ApplyEffectAtLocation(0, EffectVisualEffect(3003, 0), location1, 0.0);
}
else {
if ((GetIsObjectValid(oBos_bosghost3) == 0)) {
string string3 = "cs_sithghost";
PlaySound(string3);
CreateObject(1, "bos_bosghost3", location1, 0);
ApplyEffectAtLocation(0, EffectVisualEffect(3003, 0), location1, 0.0);
}
else {
object oNPC = GetPartyMemberByIndex(0);
AssignCommand(oNPC, ActionStartConversation(GetPartyMemberByIndex(0), "bos_shadowpower", 0, 0, 0, "", "", "", "", "", "", 0));
}
}
}
}
 
 
And if you want to edit that, good luck! I can't really help you there. I am a poor coder and wouldn't be able to easily integrate what you wish to do, though I'm sure its fairly simple. 
 
Alternatively, if you cannot follow my process you could, hypothetically, just copy and paste the script and then tinker with it. 
  • Like 1

Share this post


Link to post
Share on other sites

BRO IT WORKKED.. JESUS I CAN VIEW THE SCRIPT NOW.. FORGET THE EXPERIMENT I AM SO HAPPY TO SEE THE SCRIPT.. The problem was that in the readme it told me to extract the kotor 2 nwscript so I did what you said and use the KOTOR 1. Thanks for stressing this with me, I got DeNCS to work. I'll experiment some more I am done for now. May the force be with you

  • Like 1

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this