nicethugbert wrote...
There are no functions to control critical hits in nwscript. The result is that you can't make Improved Critical or Power Critical for custom weapons. So, you can't make a proper custom weapon. You can't even correctly make the rest of the D&D weapons they didn't bother to implement.
Things are very limited. Note that if you do a new base item, in the 2da you can wire it to any feat for Improved Critical or Power Critical.
However while most just don't have the chops to make this work, the following function in NWN2 gives a lot of control over combat. It basically allows you to micromanage combat. Lot of the "can't" you hear are based on not knowing how. The NWNX folks already have solved this for NWN1, and eventually will do the same in NWN2 ( projects are afoot which should allow a lot more options in this regard. )
/**
* This is a basic way to force a specific outcome during a
* creature's combat round. This is primarily designed as a
* cutscene aid, and is not intended for use on creatures
* with whom the player can normally interact. Therefore, these
* settings are not saved.
* ClearCombatOverrides() should be called on the creature when
* the cutscene is complete.
* @author Brock Heinz - OEI 02/02/06
* @param oCreature The creature to set the overrides on.
* @param oTarget This should be a creature, door, or placeable.
* Passing in INVALID_OBJECT Will allow normal target selection to occur.
* @param nOnHandAttacks
* @param nOffHandAttacks Creaturs must have a total of 1-6 attacks per round. Entering -1 for either of
* these means that the default logic will be used to determine attacks per
* round for that hand.
* @param nAttackResult An attack can have one of many different outcomes.
* You can force the attack results to be a specific outcome, or specify
* "INVALID" to allow the normal attack rolls to occur.
* @param nMinDamage
* @param nMaxDamage These are used to set the range for a random damage amount. For example,
* (1,6) would mean that 1-6 points of damage would be done. These can be set
* to the same value, and you can specify 0,0 for "no damage". Using -1 for
* either of these means that the default damage calculations will be used.
* @param bSuppressBroadcastAOO If TRUE then this creature can potentially cause an
* attack of opportunity from nearby creatures. If FALSE, this will be supressed
* @param bSuppressMakeAOO If TRUE then this creature will make attacks of
* opportunity when they are available. If FALSE, this will be supressed
* @param bIgnoreTargetReaction Normally, ActionAttack() calls are rejected if they
* are made on a hostile or neutral target. Setting this to TRUE
* will bypass that check.
* @param bSuppressFeedbackText If set to TRUE, this can be used to keep this
* creature's combat round feedback from being displayed.
* @see ClearCombatOverrides
*/
void SetCombatOverrides( object oCreature, object oTarget, int nOnHandAttacks, int nOffHandAttacks, int nAttackResult, int nMinDamage, int nMaxDamage, int bSuppressBroadcastAOO, int bSuppressMakeAOO, int bIgnoreTargetReaction, int bSuppressFeedbackText );
/**
* used to clear the effects of SetCombatOverrides
* @param oCreature
* @see SetCombatOverrides
*/
void ClearCombatOverrides( object oCreature );