Aller au contenu

Photo

Silver Sword versions


  • Veuillez vous connecter pour répondre
10 réponses à ce sujet

#1
Jugonshi

Jugonshi
  • Members
  • 142 messages
Exactly what defines the version of the Silver Sword? I mean, fighter version, cleric version, wizard version, and such.

At first I thought the first class level the PC took will define. But when playing a Fighter 1/Warlock 13/Mystic Knight 4 (I am using Kaedrin's), the PC got the Warlock version of the sword, not the Fighter version.

And, are there any way to get the different version of the Silver Sword? Say, using some console command?

I know that in all the versions the Silver Sword is not at all great anyway. But some of them are at least moderately useful (say, having +5 Enhancement bonus or immune to mind-affecting), while others (such as warlock version) are truly weak.

And, the same question for MotB. Are there any way to get the more desirable version of the Silver Sword in MotB?

#2
kevL

kevL
  • Members
  • 4 061 messages
When the SS is picked up in the OC, a tag-based script runs that iterates through PC classes and whatever is highest gets defined as PC-class for using the Sword. Ties are resolved aphabetically, i believe (Barbarian preempts Bard, eg).

Kaedrin tacked several of his classes on after the standard classes, plus added SoZ classes ... these are mostly routed back to standard classes.


To get a different version you'd have to alter i_silver_sword_aq.nss -- onAcquire script for SS,


Dragon Slayer had me script up a custom SS, the Ultimate Silver Sword -- which combines the OC + MotB abilities -- but it's not really for use in either the OC or MotB. It's standalone and can/will cause conflicts if used in the OC especially. ( And yes, the default Silver Sword contains any number of bugs ;)

- what I'd like to do someday is adapt the version i have on my HD for use in both modules, perhaps detecting PC level to lock/unlock its abilities. At present i Use this, though: Silver Sword Fix, which changes just the baseitemType :)

- not sure what's been done re. MotB

#3
Jugonshi

Jugonshi
  • Members
  • 142 messages
Thanks for a reply.

Hmm, so if I use the console cheat and temporally re-make the PC to have much Fighter levels, then re-make the PC again after getting the Silver Sword, it may work. I have to manipulate a lot of historical feats, though.

#4
I_Raps

I_Raps
  • Members
  • 1 262 messages

Shin Okada wrote...

Thanks for a reply.

Hmm, so if I use the console cheat and temporally re-make the PC to have much Fighter levels, then re-make the PC again after getting the Silver Sword, it may work. I have to manipulate a lot of historical feats, though.


(ahem)  Or, you could simply change the OnAcquire script so Warlocks get the sword you want.  One extremely simple manipulation.  You would have to endure the re-making ceremony again, though ...

Modifié par I_Raps, 03 février 2013 - 05:00 .


#5
kevL

kevL
  • Members
  • 4 061 messages
maybe simply drop the sword on the ground and pick it up again.


All that needs to be done to the script first, is define "nNewclass" as class_TYPE_FIGHTER and comment out all that if()->then hullabalo

it's faster and probably easier than deleveling/releveling .....

#6
Jugonshi

Jugonshi
  • Members
  • 142 messages
Well, before reading I_Raps' second comment, I have done de-level. I made my PC into a pure fighter and got the fighter version of the Silver Sword.

Then, I re-made my PC again into Fighter 1/Warlock 13/Mystic Knight 4. He was still holding the Fighter version of the sword.

But when I made a save, then re-load the game after several hours, I found that my PC was holding the warlock version sword again. It seems that when the saved game was loaded, the script re-made the silver sword.

So, I opened i_silver_sword_aq.NSS file and modefied that. Changed "nNewclass = class_TYPE_WARLOCK;" into "nNewclass = class_TYPE_FIGHTER;" and also changed "AddItemPropsWarlock(oItem);" into "AddItemPropsFighter(oItem);".

But still, when reloading the saved date (with PC having more warlock levels), the silver sword turns into the warlock version.

Am I missing something?

#7
kevL

kevL
  • Members
  • 4 061 messages
compile?

Also search MyDocs->Override to make sure there's only one version of "i_silver_sword_aq.ncs"


btw, you need to make only 1 of those changes. And, oh i see something that might be confusing: you see down in the switch(nNewclass) codeblock at the bottom, where cases are like:

case 4: // FIGHTER
nNewclass = class_TYPE_FIGHTER;
AddItemPropsFighter(oItem);
break;

That's not where "nNewclass = class_TYPE_WARLOCK;" needs to be changed. (in fact that line is utterly superfluous!) Instead, nNewclass needs to be redefined above:

if (GetLevelByclass(nNewclass, oPC) < GetLevelByclass(class_TYPE_WARLOCK, oPC))
{
nNewclass = class_TYPE_FIGHTER;
}


And yeah, i forgot that items get re-Acquired when loading a save ... but if the script is altered, and there's only one corresponding .nss/.ncs file, I think you can just drop the sword and pick it up again to change things up.

But i still suggest just /* comment out */ that entire if(blah-blah) if(blah-blah) if(blah-blah) area and change

int nNewclass = class_TYPE_BARBARIAN;

to

int nNewclass = class_TYPE_FIGHTER;

this way when the code hits the switch() all it's going to find is AddItemPropsFighter(oItem). If it doesn't you're going to need some debug to find out if the script is really firing ...

#8
Jugonshi

Jugonshi
  • Members
  • 142 messages
Now I made this change

if (GetLevelByclass(nNewclass, oPC) < GetLevelByclass(class_TYPE_WARLOCK, oPC))
{
nNewclass = class_TYPE_FIGHTER;
}

Then, as I found another i_silver_sword_aq.NCS in my override, I removed it.

Still, my PC is holding the warlock version. Letting him drop and pick up does not work. Giving him a new sword using giveitem command also does not work.

I also tried re-playing the reforge sequence from an old save. But my PC (Ftr 1/Wlk 13/MK 4) still gains the warlock version of the sword.

Hmm....


#9
kevL

kevL
  • Members
  • 4 061 messages
okay ...

So you found a rogue .Ncs file; was it a search for just the .ncs, of course it's best to search for "i_silver_sword_aq" and see what pops ( .nss/.ncs )

get a handle on those puppies!

When you've trimmed it down to just one of each (nss/ncs), rename them both as backups and copy only the .Nss in Override back to the original filename ( "i_silver_sword_aq.nss" ). Then if you open the toolset and load that file you know what it is.

And below

void main()
{
SendMessageToPC(GetFirstPC(), "Run ( i_silver_sword_aq )");
// etc.

- compile it and see if that message shows in chat when the sword is dropped and retrieved


Nb. here's what i just did in my game. Loaded an old save, from before getting the SS : 11 Ftr.

giveitem silver_sword -> got the sword w/ +5 Fighter props

Changed the script to route class_TYPE_FIGHTER to class_TYPE_WARLOCK ( exact opposite of what you did in previous post )

Reloaded my save and voila, +3 etc Warlock props. So the method works, and as a bonus the debug displayed when i dropped & retrieved the sword, and also when GiveItem was consoled.

I even made a quicksave with the Warlock sword, changed the script back to its proper state, and when reloaded the SS reverted automatically to its Fighter variety


( note for a script change to work the PC has to reload or at least change areas, i'll typically go to MainMenu to make script changes; EDIT, oh and if somehow you're adding a new file to Override the entire game must be reloaded (or is that the toolset? doh disregard o.O )

Modifié par kevL, 04 février 2013 - 06:16 .


#10
Jugonshi

Jugonshi
  • Members
  • 142 messages
Thanks KevL. Removing .nss and .ncs from the campaign folder, then putting re-compiled .nss into the override folder, worked!

I don't know if the place was the problem, or I have failed to complile the .nss file the last time.

But anyway, now my walock has the Fighter version of the sword!


#11
kevL

kevL
  • Members
  • 4 061 messages
coolio, Shin


(don't forget to put things back to vanilla later -- or whatever!)