Achilles Posted May 23, 2005 Share Posted May 23, 2005 Wondering if anyone else has noticed this and found a resolution. When your PC multiclasses, he or she does not "reset" their unarmed combat feats. However I have noticed Handmaiden and Bao-Dur both start all over again once they've multiclassed into Jedi/Dark Jedi. Is this b/c of how they are granted the feats as Soldiers and Tech Specialist respectively? Would it make a difference if they were class feats rather than character feats? I suppose a resolution could be found pretty easily, but I thought I would run this up the flag pole and see if anyone else had any input. TIA. Link to comment Share on other sites More sharing options...
T7nowhere Posted May 23, 2005 Share Posted May 23, 2005 I have never noticed that before but I have heard a few other people mentioning that their npc's were loosing feats on level up. If its guaranteed that they always loose those feats, Then you could add them back in by Editing a_makejedi.nss. Do they gain those feats automatically at level upor are they chosen? If they do then you could write a few feat packages attached to the npc's multiclass with a class level condition that way if the npc is multiclassed at level 12 they would only get back the feats they would normally have. If I have to I could post an example script, But I'm sure someone with more experience would be more helpfull. Link to comment Share on other sites More sharing options...
Achilles Posted May 23, 2005 Author Share Posted May 23, 2005 Unarmed combat feats are granted, not selected, so a script might work. Unfortunately, what you are suggesting sounds like it is well beyond my abilities. If it will help, here are the names of the unarmed combat feats and the levels they are granted: UNARMED_SPECIALIST_I 2 UNARMED_SPECIALIST_II 6 UNARMED_SPECIALIST_III 10 UNARMED_SPECIALIST_IV 14 UNARMED_SPECIALIST_V 18 UNARMED_SPECIALIST_VI 22 UNARMED_SPECIALIST_VII 26 UNARMED_SPECIALIST_VIII 30 PS: I normally multiclass BD and HM at Level 15, so they would already have earned IV. Link to comment Share on other sites More sharing options...
T7nowhere Posted May 23, 2005 Share Posted May 23, 2005 Ok here is my noob attempt. // This global script is intended to be used for making each CNPC a Jedi. /* Parameter Count: 1 (Which CNPC you intend to make a Jedi.) NPC numbers, as specified in NPC.2da 0 Atton 1 BaoDur 2 Mand 3 g0t0 4 Handmaiden 5 hk47 6 Kreia 7 Mira 8 T3m4 9 VisasMarr 10 Hanharr 11 Disciple */ //// CFA 10-5-04 void main() { //t7 added object oBao = GetObjectByTag("BaoDur",0); // Grab the Parameter. int nScriptNumber = GetScriptParameter( 1 ); // If Param = 0, then it's Atton. (Trying to make it consistent with the CNPC integers.) if ( nScriptNumber == 0 ) { AddMultiClass (CLASS_TYPE_JEDISENTINEL, GetObjectByTag ("Atton") ); } // If Param = 1, then it's Bao-Dur. (Trying to make it consistent with the CNPC integers.) if ( nScriptNumber == 1 ) { AddMultiClass (CLASS_TYPE_JEDIGUARDIAN, GetObjectByTag ("BaoDur") ); { [b]//this checks for the npc's class as defined by[/b] classes.2da int baolevel = GetLevelByClass(9, oBao); [b]//this checks to see if the class level is greater thanor equal to 14[/b] if ( baolevel >= 14 ) [b]//these are the feats as defined by feats.2da[/b] GrantFeat(212, oBao); GrantFeat(213, oBao); GrantFeat(214, oBao); GrantFeat(215, oBao); [color=skyblue]//the below feat is War veteran which I used to make sure the script was adding the feats [/color] //GrantFeat(206, oBao); } } // If Param = 4, then it's the Handmaiden. (Trying to make it consistent with the CNPC integers.) if ( nScriptNumber == 4 ) { AddMultiClass (CLASS_TYPE_JEDIGUARDIAN, GetObjectByTag ("Handmaiden") ); } // If Param = 7, then it's Mira. (Trying to make it consistent with the CNPC integers.) if ( nScriptNumber == 7 ) { AddMultiClass (CLASS_TYPE_JEDISENTINEL, GetObjectByTag ("Mira") ); } // If Param = 11, then it's the Disciple. (Trying to make it consistent with the CNPC integers.) if ( nScriptNumber == 11 ) { AddMultiClass (CLASS_TYPE_JEDICONSULAR, GetObjectByTag ("Disciple") ); } } Now I know its not pretty and there is probably a more efficient way to write that , but it does seem to work for me. btw: i checked to see if bao-dur lost those feats in my game before I used the script and he didn't loose any after he was multiclassed. Also if you need to you can copy the code for bao-dur into Handmaidens but you will need to customize it for her. Link to comment Share on other sites More sharing options...
Achilles Posted May 24, 2005 Author Share Posted May 24, 2005 I'll give it a shot. THANKS!!! Link to comment Share on other sites More sharing options...
Achilles Posted May 24, 2005 Author Share Posted May 24, 2005 I know I could probably use nested ifs to check their current levels and then grant feats accordingly, however it seems that there probably has to be an easier way. I'd rather build the level check into the script rather than tie myself to multiclassing them by level 14 or risk missing the boat. Any suggestions? Link to comment Share on other sites More sharing options...
stoffe Posted May 24, 2005 Share Posted May 24, 2005 Here's an alternative approach to the problem. Don't know if it's better or worse than what's already been suggested. Open the "k_oei_hench_inc.nss" script and add this function somewhere near the top of the script: void ST_ForceCombatFeatProgression() { int nLevel = GetHitDice(OBJECT_SELF); int nLast = GetLocalNumber(OBJECT_SELF, 2); if (nLevel == nLast) return; SetLocalNumber(OBJECT_SELF, 2, nLevel); int nFeat = 212; for (nLevel = 2; nLevel <= GetHitDice(OBJECT_SELF); nLevel += 4) { if ((nLevel > 30) || (nFeat > 219)) break; if (!GetFeatAcquired(nFeat)) GrantFeat(nFeat, OBJECT_SELF); nFeat++; } } Then find the function called DoHandmaidenUserDef(). At the top inside this function, add: if ((sModuleName != "711KOR") && (pUserEvent == 1001)) { ST_ForceCombatFeatProgression(); } Find the function DoBaoDurUserDef() and do the same. Then, find the function DoBaoDurSpawnIn(), and at the top inside this function add: AssignCommand(oPartyMember, GN_SetSpawnInCondition( SW_FLAG_EVENT_ON_HEARTBEAT )); Save the modified include file and then re-compile the k_oei_userdef.nss script (which uses the include you just modified) and put it in the Override folder. If I haven't overlooked something, they should be granted the feats if they don't already have them on (or just after) levelup. (This is untested since I just wrote it, but in theory I think it should work. ) Link to comment Share on other sites More sharing options...
Achilles Posted May 24, 2005 Author Share Posted May 24, 2005 Compiler didn't like it: ------------------------------------------- NSSCOMP.bat output Tue 05/24/2005 05:05 ------------------------------------------- Compiling: a_heal_pc.nss Total Execution time = 62 ms Compiling: a_pazaak_play.nss Total Execution time = 63 ms Compiling: givecell.nss Total Execution time = 47 ms Compiling: k_inc_debug.nss File is an include file, ignored Total Execution time = 47 ms Compiling: k_inc_force.nss File is an include file, ignored Total Execution time = 94 ms Compiling: k_inc_generic.nss File is an include file, ignored Total Execution time = 94 ms Compiling: k_inc_utility.nss File is an include file, ignored Total Execution time = 63 ms Compiling: k_oei_hench_inc.nss File is an include file, ignored Total Execution time = 125 ms Compiling: k_oei_userdef.nss k_inc_generic.nss(652): Error: Undeclared identifier GN_GetWeaponTypeFromBaseItem k_inc_generic.nss(1006): Error: Undeclared identifier GN_CheckSeriesRevitalize k_inc_generic.nss(1404): Error: Undeclared identifier SW_NUMBER_HEALERAI_PERCENTAGE k_inc_generic.nss(1404): Error: Required argument missing in call to SetLocalNumber k_inc_generic.nss(1414): Error: Undeclared identifier SW_NUMBER_HEALERAI_THRESHOLD k_inc_generic.nss(1414): Error: Required argument missing in call to SetLocalNumber k_inc_generic.nss(1444): Error: Undeclared identifier SW_NUMBER_HEALERAI_PERCENTAGE k_inc_generic.nss(1444): Error: Required argument missing in call to GetLocalNumber k_inc_generic.nss(1587): Error: Undeclared identifier SW_NUMBER_HEALERAI_THRESHOLD k_inc_generic.nss(1587): Error: Required argument missing in call to GetLocalNumber k_inc_generic.nss(2514): Error: Undeclared identifier GN_GetSeriesRevitalize k_inc_generic.nss(2855): Error: Undeclared identifier SW_NUMBER_COOLDOWN k_inc_generic.nss(2855): Error: Required argument missing in call to GetLocalNumber k_inc_generic.nss(2856): Error: Undeclared identifier SW_NUMBER_COOLDOWN_FIRE k_inc_generic.nss(2856): Error: Required argument missing in call to GetLocalNumber k_inc_generic.nss(2874): Error: Undeclared identifier SW_NUMBER_COOLDOWN k_inc_generic.nss(2874): Error: Required argument missing in call to SetLocalNumber k_inc_generic.nss(2879): Error: Undeclared identifier SW_NUMBER_COOLDOWN k_inc_generic.nss(2879): Error: Required argument missing in call to SetLocalNumber k_inc_generic.nss(3586): Error: Undeclared identifier SW_NUMBER_HEALERAI_THRESHOLD k_inc_generic.nss(3586): Error: Required argument missing in call to SetLocalNumber k_inc_generic.nss(3592): Error: Undeclared identifier SW_NUMBER_HEALERAI_PERCENTAGE k_inc_generic.nss(3592): Error: Required argument missing in call to SetLocalNumber k_inc_generic.nss(3773): Error: Undeclared identifier SW_NUMBER_HEALERAI_THRESHOLD k_inc_generic.nss(3773): Error: Required argument missing in call to GetLocalNumber k_inc_generic.nss(3778): Error: Undeclared identifier SW_NUMBER_HEALERAI_THRESHOLD k_inc_generic.nss(3778): Error: Required argument missing in call to SetLocalNumber k_inc_generic.nss(3786): Error: Undeclared identifier GN_GetWeaponTypeFromBaseItem k_inc_generic.nss(3797): Error: Undeclared identifier GN_GetWeaponTypeFromBaseItem k_inc_generic.nss(3822): Error: Undeclared identifier GN_GetWeaponTypeFromBaseItem k_inc_generic.nss(3834): Error: Undeclared identifier GN_GetWeaponTypeFromBaseItem k_inc_generic.nss(3932): Error: Undeclared identifier SW_NUMBER_HEALERAI_THRESHOLD k_inc_generic.nss(3932): Error: Required argument missing in call to GetLocalNumber k_inc_generic.nss(3975): Error: Undeclared identifier SW_NUMBER_HEALERAI_PERCENTAGE k_inc_generic.nss(3975): Error: Required argument missing in call to GetLocalNumber k_oei_hench_inc.nss(288): Error: Undeclared identifier SW_FLAG_WAYPOINT_START_AT_NEAREST k_oei_hench_inc.nss(288): Error: Required argument missing in call to GN_SetSpawnInCondition k_oei_hench_inc.nss(288): Error: Required argument missing in call to AssignCommand k_oei_hench_inc.nss(289): Error: Undeclared identifier SW_FLAG_WAYPOINT_PAUSE_RANDOM k_oei_hench_inc.nss(289): Error: Required argument missing in call to GN_SetSpawnInCondition k_oei_hench_inc.nss(289): Error: Required argument missing in call to AssignCommand k_oei_hench_inc.nss(290): Error: Undeclared identifier SW_FLAG_USE_WAYPOINT_ANIMATION k_oei_hench_inc.nss(290): Error: Required argument missing in call to GN_SetSpawnInCondition k_oei_hench_inc.nss(290): Error: Required argument missing in call to AssignCommand k_oei_hench_inc.nss(314): Error: Undeclared identifier SW_FLAG_WAYPOINT_START_AT_NEAREST k_oei_hench_inc.nss(314): Error: Required argument missing in call to GN_SetSpawnInCondition k_oei_hench_inc.nss(314): Error: Required argument missing in call to AssignCommand k_oei_hench_inc.nss(315): Error: Undeclared identifier SW_FLAG_WAYPOINT_PAUSE_LONG k_oei_hench_inc.nss(315): Error: Required argument missing in call to GN_SetSpawnInCondition k_oei_hench_inc.nss(315): Error: Required argument missing in call to AssignCommand k_oei_hench_inc.nss(316): Error: Undeclared identifier SW_FLAG_USE_WAYPOINT_ANIMATION k_oei_hench_inc.nss(316): Error: Required argument missing in call to GN_SetSpawnInCondition k_oei_hench_inc.nss(316): Error: Required argument missing in call to AssignCommand k_oei_hench_inc.nss(365): Error: Undeclared identifier SW_FLAG_WAYPOINT_START_AT_NEAREST k_oei_hench_inc.nss(365): Error: Required argument missing in call to GN_SetSpawnInCondition k_oei_hench_inc.nss(365): Error: Required argument missing in call to AssignCommand k_oei_hench_inc.nss(366): Error: Undeclared identifier SW_FLAG_WAYPOINT_PAUSE_SHORT k_oei_hench_inc.nss(366): Error: Required argument missing in call to GN_SetSpawnInCondition k_oei_hench_inc.nss(366): Error: Required argument missing in call to AssignCommand k_oei_hench_inc.nss(367): Error: Undeclared identifier SW_FLAG_USE_WAYPOINT_ANIMATION k_oei_hench_inc.nss(367): Error: Required argument missing in call to GN_SetSpawnInCondition k_oei_hench_inc.nss(367): Error: Required argument missing in call to AssignCommand k_oei_hench_inc.nss(454): Error: Undeclared identifier SW_FLAG_WAYPOINT_START_AT_NEAREST k_oei_hench_inc.nss(454): Error: Required argument missing in call to GN_SetSpawnInCondition k_oei_hench_inc.nss(454): Error: Required argument missing in call to AssignCommand k_oei_hench_inc.nss(455): Error: Undeclared identifier SW_FLAG_WAYPOINT_PAUSE_SHORT k_oei_hench_inc.nss(455): Error: Required argument missing in call to GN_SetSpawnInCondition k_oei_hench_inc.nss(455): Error: Required argument missing in call to AssignCommand k_oei_hench_inc.nss(456): Error: Undeclared identifier SW_FLAG_USE_WAYPOINT_ANIMATION k_oei_hench_inc.nss(456): Error: Required argument missing in call to GN_SetSpawnInCondition k_oei_hench_inc.nss(456): Error: Required argument missing in call to AssignCommand k_oei_hench_inc.nss(483): Error: Undeclared identifier SW_FLAG_WAYPOINT_START_AT_NEAREST k_oei_hench_inc.nss(483): Error: Required argument missing in call to GN_SetSpawnInCondition k_oei_hench_inc.nss(483): Error: Required argument missing in call to AssignCommand k_oei_hench_inc.nss(484): Error: Undeclared identifier SW_FLAG_WAYPOINT_PAUSE_RANDOM k_oei_hench_inc.nss(484): Error: Required argument missing in call to GN_SetSpawnInCondition k_oei_hench_inc.nss(484): Error: Required argument missing in call to AssignCommand k_oei_hench_inc.nss(485): Error: Undeclared identifier SW_FLAG_USE_WAYPOINT_ANIMATION k_oei_hench_inc.nss(485): Error: Required argument missing in call to GN_SetSpawnInCondition k_oei_hench_inc.nss(485): Error: Required argument missing in call to AssignCommand k_oei_hench_inc.nss(1363): Error: Undeclared identifier SW_NUMBER_HEALERAI_THRESHOLD k_oei_hench_inc.nss(1363): Error: Required argument missing in call to GetLocalNumber k_oei_hench_inc.nss(1413): Error: Undeclared identifier SW_NUMBER_HEALERAI_PERCENTAGE k_oei_hench_inc.nss(1413): Error: Required argument missing in call to GetLocalNumber k_oei_hench_inc.nss(1451): Error: Undeclared identifier SW_NUMBER_COOLDOWN k_oei_hench_inc.nss(1451): Error: Required argument missing in call to GetLocalNumber k_oei_hench_inc.nss(1458): Error: Undeclared identifier SW_NUMBER_COOLDOWN k_oei_hench_inc.nss(1458): Error: Required argument missing in call to SetLocalNumber k_oei_hench_inc.nss(1466): Error: Undeclared identifier SW_NUMBER_COOLDOWN k_oei_hench_inc.nss(1466): Error: Required argument missing in call to SetLocalNumber k_oei_hench_inc.nss(1471): Error: Undeclared identifier SW_NUMBER_COOLDOWN k_oei_hench_inc.nss(1471): Error: Required argument missing in call to SetLocalNumber Compilation aborted with errors Total Execution time = 234 ms Compiling: k_paz_mebla.nss Total Execution time = 62 ms Compiling: st_kreiaskills.nss Total Execution time = 47 ms ------------------------------------------- Compilation complete: 5/11 files compiled 1 file had errors 5 file ignored as include file I may have missed an inc file, but I double checked and I'm pretty sure I got them all. Link to comment Share on other sites More sharing options...
stoffe Posted May 24, 2005 Share Posted May 24, 2005 Originally posted by Achilles Compiler didn't like it: (snip) I may have missed an inc file, but I double checked and I'm pretty sure I got them all. You need: k_inc_debug k_inc_generic k_inc_utility k_inc_gensupport k_inc_walkways k_inc_drop Judging by the error messages, my guess is that you are missing k_inc_gensupport and k_inc_walkways which contains many of those "missing identifiers". Link to comment Share on other sites More sharing options...
Achilles Posted May 24, 2005 Author Share Posted May 24, 2005 That appears to have done the trick on both counts. The script compiled and Handmaiden has all of her unarmed combat feats again. Thanks! Link to comment Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.