Player Resource Consortium

 

Author Topic: New PRC Classes - Looking for Help  (Read 4138 times)

0 Members and 1 Guest are viewing this topic.

September 13, 2013, 10:12:56 PM

Hello!

I'm working on creating a few new PRC classes for a persistent world server I'm working on. The first class I'm working on is the Night Mask Deathbringer. I'm likely to work in the Swiftblade I suggested elsewhere as well as a custom Fallen Stars Pirate prc. The write-up on the Night Mask Deathbringer class can be found here- http://dndtools.eu/classes/night-mask-deathbringer/

So far, I've gotten all of the abilities to work, to a point. Right now I don't have Lesser and Greater Blood Bond checking the number of bonds against the charisma bonus but I'll get that done. I've had two errors so far and was wondering if anyone would know how to fix them.

The first error is cosmetic it seems. The class gets a bonus +2d6 sneak attack. After finding the prc_inc_sneak script I added the following-

Code: [Select]
   // Night Mask Deathbringer
   iClassLevel = GetLevelByClass(CLASS_TYPE_DEATHBRINGER, oPC);
   if (iClassLevel) iRogueSneak += iClassLevel / 4;

When I level up past the levels that are supposed to grant the sneak dice, I see two feats for sneak attack, one saying 3d6 which is what rogue sneak is without the bonus from the class then another that says +5d6 which is 5 levels of rogue and 8 levels (+2d6) of Night Mask Deathbringer. In tests it seems the damage is 5d6 as it should be. Any way to adjust the cosmetic part of this?

And speaking of leveling, I'm getting a 'Too many instructions' error on leveling up the class that's being reported as caused by the prc_levelup script. Obviously the script itself is fine as I didn't adjust it at all. I'm figuring the error is either in my prc_nmdb script or the prc_inc_function script which I edited for the sake of the class.

Here is the short amount of code for the PRC to give the Creature of Darkness penalty to ride. I patterned it after the prc_heartwarder script and it is labeled prc_nmdb-

Code: [Select]
#include "prc_feat_const"
#include "inc_item_props"

//Creature of Darkness (Ex): Animals can sense the death in you, causing them to fear your presence.
//As a result, all animals except for bats, rats, and wolves have their initial attitudes moved down
//one category when you first approach them. In addition, you take a —2 penalty on all Ride checks due
//to the beast's inherent nervousness at your presence.

void CreatureOfDarkness(object oPC, object oSkin, int iLevel)
  {
    int iTest = GetPersistantLocalInt(oPC, "NWNX_NMDBCoDark");

    if(!iTest)
     {
      SetCompositeBonus(oSkin, "CreatureOfDarkness", iLevel, ITEM_PROPERTY_DECREASED_SKILL_MODIFIER, SKILL_RIDE);
     }
  }

void main()
  {
   object oPC = OBJECT_SELF;
   object oSkin = GetPCSkin(oPC);

   int iCreatDark = GetHasFeat(FEAT_CREATURE_OF_DARKNESS, oPC) ? 2 : 0;

   if (iCreatDark > 0)   CreatureOfDarkness(oPC, oSkin, iCreatDark);
   
  }

As for the prc_inc_function script, it's much too large to post here but I'll post the lines before as well as the changes I've made to the script.

In the switch table for SetupCharacterData function-
Code: [Select]
                case CLASS_TYPE_WARMIND:               sScript = "psi_warmind";      iData |= 0x01; break;
                case CLASS_TYPE_WEREWOLF:              sScript = "prc_werewolf";                    break;
                case CLASS_TYPE_WILDER:                                              iData |= 0x01; break;
                case CLASS_TYPE_WITCH:                                               iData |= 0x03; break;
                case CLASS_TYPE_DEATHBRINGER:          sScript = "prc_nmdb";                        break;


Added to the gathering of functions for feat uses per day-
Code: [Select]
void FeatNMDeathbringer(object oPC)
{
   int iNMDBLevel = GetLevelByClass(CLASS_TYPE_DEATHBRINGER, oPC);
   if (!iNMDBLevel) return;

   int iUses = (iNMDBLevel + 2) / 3;
   FeatUsePerDay(oPC, FEAT_HESITATING_STARE,  -1, iUses);

}


added to the FeatSpecialUsesPerDay function-
Code: [Select]
    FeatNMDeathbringer(oPC);

I've edited a number of 2da files such as feat.2da, spells.2da, classes.2da, prc_classes.2da, and prc_spells.2da. Includes edited are prc_class_const, prc_feat_const, prc_inc_function, prc_inc_sneak, and prc_spell_const. additions to the tlk file have been successful as well. Any ideas as to why this might be happening?


September 14, 2013, 09:33:17 AM
Reply #1
  • Developer
  • *****
  • Posts: 1437
  • Karma: +27/-0
  • Gender: Male
    • View Profile

Sneak Attack for custom PRC classes works by adding item property (bonus feat) to characters hide. I assume you read the comments in prc_inc_sneak.nss file, and you didn't add any rogue/blackguard/assassin sneak attack feats to the class. In this case sneak attack dice calculation should be correct. The game displays both 'fake' SA feat and item property feat added by PRC system. That's how it always worked and I'm not sure if there is anything we can do about it.

I do not see any errors in your scripts. You can check if prc_nmdb is causing TMI errors simply by replacing it with a blank script (or temporarily removing it from your haks). If the TMI is caused by prc_inc_function modification, then the error should also occur during other events (for example in OnPlayerRest). Could you check if TMI is also displayed after rest, please?

How many uses per day have you set in feat.2da for FEAT_HESITATING_STARE?
« Last Edit: September 14, 2013, 11:26:33 AM by xwarren »


September 15, 2013, 12:24:56 AM
Reply #2

Sneak Attack for custom PRC classes works by adding item property (bonus feat) to characters hide. I assume you read the comments in prc_inc_sneak.nss file, and you didn't add any rogue/blackguard/assassin sneak attack feats to the class. In this case sneak attack dice calculation should be correct. The game displays both 'fake' SA feat and item property feat added by PRC system. That's how it always worked and I'm not sure if there is anything we can do about it.
Yeah, when I first started I'd given the class blackguard sneak but after looking at another custom prc class I noticed it didn't have those so I went digging around and found prc_inc_sneak and removed the sneak feats. I should have remembered this though since I saw a thread on it some years back.

Quote
I do not see any errors in your scripts. You can check if prc_nmdb is causing TMI errors simply by replacing it with a blank script (or temporarily removing it from your haks). If the TMI is caused by prc_inc_function modification, then the error should also occur during other events (for example in OnPlayerRest). Could you check if TMI is also displayed after rest, please?

How many uses per day have you set in feat.2da for FEAT_HESITATING_STARE?

Yes, TMI was displayed after rest as well. The problem looks to be that I had usesperday set as **** in feat.2da. I figured since the scripts were figuring this out this field wasn't needed. Since you asked about it I decided to check it by changing it. I saw another PRC feat had it set to 40 so I set it to 40 and the TMI is gone. It's also adding the uses per day correctly. I guess I'll set Ghost Step to work the same way.

Thank you so much for the assistance. When I first started it was very daunting, especially how the trail of includes stretch but I'm starting to figure out how it's all laid out. I have a couple script modifications to make to lesser and greater blood bond then I can call this class finished and move to swiftblade. I've already figured that most of swiftblade will be a matter of editing the haste spellscript with conditionals for the class to add the additional effects.


September 15, 2013, 11:20:54 AM
Reply #3
  • Developer
  • *****
  • Posts: 1437
  • Karma: +27/-0
  • Gender: Male
    • View Profile

Quote
I saw another PRC feat had it set to 40 so I set it to 40 and the TMI is gone.
I suggest setting this to maximum possible value for given feat - if you don't intend to add epic levels, the character can have maximum 4 uses per day of Hesitating stare.
Quote
I've already figured that most of swiftblade will be a matter of editing the haste spellscript with conditionals for the class to add the additional effects.
This class is a bit difficult to implement in NWN. Some abilities are not possible due to game engine limitations. Perhaps you already have an idea how to work around this. If you need any suggestions, please ask here.


September 24, 2013, 03:55:57 PM
Reply #4

Ok, I took a break to deal with some RL stuff but upon taking a closer look at the class, you're right. A number of the feats aren't really possible from either NWN limitations or my scripting limitations. I'm considering scrapping the swiftblade idea. I'd been accustomed to Kaedrin's version and hadn't really realized how different his version was from the cannon version. Oh well.


September 24, 2013, 04:10:51 PM
Reply #5
  • Developer
  • *****
  • Posts: 1437
  • Karma: +27/-0
  • Gender: Male
    • View Profile

I really didn't meant to discourage you. Personally I try to stay as close to PnP rules as possible (though there are some exceptions - ie. Witch class). Frankly I haven't played NWN2 much and don't even know how Kaedrin implemented the class, but if it's fun to play, maybe it's worth to be implemented in NWN too?

;D


September 24, 2013, 10:10:46 PM
Reply #6

I really didn't meant to discourage you. Personally I try to stay as close to PnP rules as possible (though there are some exceptions - ie. Witch class). Frankly I haven't played NWN2 much and don't even know how Kaedrin implemented the class, but if it's fun to play, maybe it's worth to be implemented in NWN too?

;D

No worries, it wasn't a discouragement but it did make me take a look at what I had thought was the class and what it really was. Here's Kaedrin's writeup on the class-

Code: [Select]
Requirements:

Feats: Dodge, Mobility.
Weapon Proficiency: Bard, Elf, Grey Orc, or Martial.
Base Attack Bonus: +3
Skills: Concentration 6, Spellcraft 6.
Spellcasting: Able to cast 3rd level arcane spells.
Spell Known: Haste

Class Features:

HD: d6
BAB: High
High Saves: Reflex, Will
Weapon and Armor proficiency: None.
Skill points: 4 + Int modifier
Class Skills: Bluff, Craft Weapon, Craft Armor, Craft Alchemy, Concentration, Diplomacy, Listen, Lore, Parry, Spellcraft, Spot, Tumble.

Class Abilities:

Level 1: Bonus Feat: Spring Attack, Swift Surge (+1 AB, +1 Dodge AC, +1 Reflex Save), Arcane Spellcasting Progression
Level 2: Blurred Alacrity
Level 3: Residual Celerity
Level 4: Arcane Reflexes
Level 5: Evasive Celerity
Level 6: Fortified Hustle
Level 7: Bonus Feat: Uncanny Dodge, Swift Surge (+2 AB, +2 Dodge AC, +2 Reflex Save, +d6 damage)
Level 8: Diligent Rapidity
Level 9: Perpetual Celerity
Level 10: Innervated Speed, Swift Surge (+2 AB, +2 Dodge AC, +2 Reflex Save, +2d6 damage)

Arcane Spellcasting Progression: At levels 2,3,5,6,8, and 9 you gain new spells per day and an increase in caster level (and spells known) as if you had also gained a level in an arcane spellcasting class to which you belonged before adding the prestige class level. If you had more than one arcane spellcasting class before becoming a swiftblade, you must decide which class gains the increased casting ability.

Spring Attack: At 1st level you gain the bonus feat Spring Attack.

Swift Surge: Your body is augmented with the residual energy of previous haste castings. You gain a +1 bonus on attack rolls, a +1 dodge bonus to AC, and a +1 bonus to Reflex saves. At 7th level, these bonuses increase to +2 and you deal an extra 1d6 points of damage. At 10th level you gain 2d6 points of bonus damage. These bonuses stack with the bonuses gained from the haste spell.

Blurred Alacrity: At 2nd level, your understanding of the haste spell makes you difficult to target with melee and ranged attacks. While under the effect of a haste spell that you cast yourself, you gain concealment (20% miss chance). This miss chance increases by 10% at 3rd, 4th, and 5th level. The effect of this ability does not stack with blur, displacement, or similar spell effects.

Residual Celerity: At 3rd level, your body retains more of the energy imbued by the haste spell allowing it to last longer. When casting the haste spell on yourself the duration is increased by 3 rounds.

Arcane Reflexes: At 4th level, you infuse the energy of previous haste castings into your natural reaction time. This grants the bonus feat Improved Initiative.

Evasive Celerity: At 5th level, your knowledge of the haste spell makes you difficult to target with spells. While under the effect of a haste spell that you cast yourself, you gain a Spell Resistance equal to 10 + character level. The effect of this ability does not stack with other effects that grant spell resistance.

Fortified Hustle: At 6th level, you learn how to intuitively absorb the haste spell into your body. While under the effect of a haste spell that you cast yourself, the effect becomes extraordinary rather than a normal spell effect, and therefore cannot be dispelled by any means.

Uncanny Dodge: At 7th level you gain the bonus feat Uncanny Dodge.

Diligent Rapidity: At 8th level, you automatically overcome magic and mundane obstacles with the haste spell. While under the effect of a haste spell that you cast yourself, you can move and attack normally, even under the influence of magic that usually impedes movement, as the freedom of movement spell.

Perpetual Celerity: At 9th level, the haste spell lingers even longer in your body before it dissipates. When casting the haste spell on yourself the duration is increased by 6 rounds.

Innervated Speed: At 10th level, your mastery of the haste spell seems to bring the world around you to a standstill. This effect is comparable to the slow spell with a 100' radius effect and lasting 10 rounds. This burst of speed is available for use once every five minutes. The DC of the ability is 19 + the higher of your Int or Cha modifier.

Here are the feats I see being a problem-

Arcane Reflexes-
 You're supposed to get your primary casting stat bonus to initiative. I've seen nothing that will allow you to adjust initiative in that way. Kaedrin grants Improved Initiative which isn't too bad. Low levels you do better, higher levels it's weaker.

Evasive Celerity (Ex): At 5th level, your knowledge of the haste spell makes you difficult to target with spells. While under the effect of a haste spell that you cast yourself, individually targeted spells have a 20% chance of failing against you. This spell failure chance increases by +10% at 6th, 7th, and 8th level. The effect of this ability does not stack with blink or similar spell effects.

Here's one that has me perplexed. Maybe I've missed a function in NWN or the PRC but I don't know of any way to support a miss chance for spells. I know it can be done for attacks. Kaedrin gives spell resistance though I'm not sure if that's the best solution.

Bounding Assault: At 7th level, you gain Bounding Assault (see page 75 of Player's Handbook II) as a bonus feat. You need not have the prerequisites normally required for Bounding Assault to gain this feat. If you already have Bounding Assault, choose a different feat for which you do meet the prerequisites.
(Bounding Assault- When using the Spring Attack feat, you designate two foes rather than one. Your movement does not provoke attacks of opportunity from either of these foes. While using an attack action with the Spring Attack feat, you can make a second attack with a -5 penalty. You can use both attacks against one of the opponents targeted with this feat, or split your attacks between them.)
Another one that might be hard to implement. Kaedrin gives uncanny dodge, even though in NWN2 Uncanny Dodge is broken and doesn't work. It'd be more beneficial in NWN1.

Perpetual Options (Ex): At 9th level, you can perform even more actions with the haste spell. Instead of making one extra attack at your highest base attack bonus while under the effect of a haste spell that you cast yourself, you now have the choice of making one extra move action or one extra standard action. For example, you could make three consecutive move actions with this ability, two move actions and one standard action, one move action and two standard actions, a full attack action and a move action, a full attack action and a standard action, a full round action and a move action, or a full round action and a standard action.

Is this even possible with the limitations of NWN? Kaedrin increased the duration of haste by 6 rounds.

Innervated Speed (Ex): At 10th level, your mastery of the haste spell can bring the world around you to a standstill. Any time you prepare or spontaneously cast haste in a 6th level spell slot, you can subsume the spell at the moment of casting instead, increasing your speed so greatly that other creatures seem frozen in time, as the time stop spell, but for one round. See the spell description on page 294 of the Player's Handbook. For each spell slot level higher than 6th level, you can extend innervated speed by 1 additional round. For example, a sorcerer could subsume haste in an 8th level spell slot to create three rounds of innervated speed. You cannot subsume a new haste spell until the original innervated speed duration expires and your turn ends. Moreover, you cannot subsume a metamagic version of haste.

This might not be as difficult. My thought was to implement it as haste/timestop combo spell. There would be a 6th, 7th, 8th, and 9th level spell, each with the same effect but with one additional round of duration for each level. The problem comes in making sure other classes don't get their hands on it. I figure I could either have a check for 10 levels of swiftblade or maybe there is another way of getting the spell to only this class?

The rest is simple enough I think and as said would mostly require changes to the haste spell itself. The changes Kaedrin made mostly fit the flavor of the class, except the uncanny dodge. Mind you, the thought of a rapier wielding, weapon finessing, uncanny dodge elven wizard/swiftblade/Champion of Corellon is tasty to me still.
« Last Edit: September 24, 2013, 10:13:31 PM by sablephoenix »


September 25, 2013, 05:59:29 PM
Reply #7
  • Developer
  • *****
  • Posts: 1437
  • Karma: +27/-0
  • Gender: Male
    • View Profile

Quote
Arcane Reflexes-
 You're supposed to get your primary casting stat bonus to initiative. I've seen nothing that will allow you to adjust initiative in that way. Kaedrin grants Improved Initiative which isn't too bad. Low levels you do better, higher levels it's weaker.
Yes, this one is impossible in NWN. I think the closest thing may be to check primary casting stat modifier and add Improved Initiative or Superior Initiative to players skin (perhaps in combination with Blooded and Thug at epic levels for +12 of total bonus).

Quote
Evasive Celerity (Ex): At 5th level, your knowledge of the haste spell makes you difficult to target with spells. While under the effect of a haste spell that you cast yourself, individually targeted spells have a 20% chance of failing against you. This spell failure chance increases by +10% at 6th, 7th, and 8th level. The effect of this ability does not stack with blink or similar spell effects.

Here's one that has me perplexed. Maybe I've missed a function in NWN or the PRC but I don't know of any way to support a miss chance for spells. I know it can be done for attacks. Kaedrin gives spell resistance though I'm not sure if that's the best solution.
I think this may be possible to implement in spellhook (x2_inc_spellhook.nss). There is a function that emulates Arcane Spell Failure for new PRC classes. I imagine Evasive Celerity would function in similar way - we would have to check if the spell was a single target (test against TargetType in spells.2da) and if the target has the feat and is under haste effect. Then roll the failure chance and abort or continue the spell script.

Quote
Bounding Assault: At 7th level, you gain Bounding Assault (see page 75 of Player's Handbook II) as a bonus feat. You need not have the prerequisites normally required for Bounding Assault to gain this feat. If you already have Bounding Assault, choose a different feat for which you do meet the prerequisites.
(Bounding Assault- When using the Spring Attack feat, you designate two foes rather than one. Your movement does not provoke attacks of opportunity from either of these foes. While using an attack action with the Spring Attack feat, you can make a second attack with a -5 penalty. You can use both attacks against one of the opponents targeted with this feat, or split your attacks between them.)
Another one that might be hard to implement. Kaedrin gives uncanny dodge, even though in NWN2 Uncanny Dodge is broken and doesn't work. It'd be more beneficial in NWN1.
I don't have any ideas on this one. Uncanny dodge I seems like a good option.

Quote
Perpetual Options (Ex): At 9th level, you can perform even more actions with the haste spell. Instead of making one extra attack at your highest base attack bonus while under the effect of a haste spell that you cast yourself, you now have the choice of making one extra move action or one extra standard action. For example, you could make three consecutive move actions with this ability, two move actions and one standard action, one move action and two standard actions, a full attack action and a move action, a full attack action and a standard action, a full round action and a move action, or a full round action and a standard action.

Is this even possible with the limitations of NWN? Kaedrin increased the duration of haste by 6 rounds.
With PRC scripted combat system it would be possible to add another extra attack while hasted. Can't think of anything else.

Quote
Innervated Speed (Ex): At 10th level, your mastery of the haste spell can bring the world around you to a standstill. Any time you prepare or spontaneously cast haste in a 6th level spell slot, you can subsume the spell at the moment of casting instead, increasing your speed so greatly that other creatures seem frozen in time, as the time stop spell, but for one round. See the spell description on page 294 of the Player's Handbook. For each spell slot level higher than 6th level, you can extend innervated speed by 1 additional round. For example, a sorcerer could subsume haste in an 8th level spell slot to create three rounds of innervated speed. You cannot subsume a new haste spell until the original innervated speed duration expires and your turn ends. Moreover, you cannot subsume a metamagic version of haste.

This might not be as difficult. My thought was to implement it as haste/timestop combo spell. There would be a 6th, 7th, 8th, and 9th level spell, each with the same effect but with one additional round of duration for each level. The problem comes in making sure other classes don't get their hands on it. I figure I could either have a check for 10 levels of swiftblade or maybe there is another way of getting the spell to only this class?
The other option would be to create a feat similar to druids spontaneous summoning (?) - if the feat is active and you cast any spell of lvl 6 - 9 it gets automatically converted into haste/time stop effect.


October 01, 2013, 08:35:31 PM
Reply #8

I looked over the files mentioned and even saw the druid spontaneous summoning in there so I'm going to get to work on this later this week.