Home Forum Index Neverwinter Nights 2 NWN2: Builders - NWN2 Scripting Helpful Scripts
NWN2: Builders - NWN2 Scripting
Rob McGinnis
Assistant Producer Joined: 02 Nov 2006
Posted: Thursday, 05 July 2007 06:18PM
If you have a script that you feel would be helpful to the community at large, and would like to share it with the community, post it here. _________________ Don't let your life be about the donuts!
weby
Joined: 07 Jul 2002 From: Cerea Island
Posted: Thursday, 05 July 2007 08:45PM
simple ones: XP for level and level for XP: _________________ Cerea Island 2 for NWN2, Read more at: www.cerea2.com Community representative: Persistent worlds
Olblach
Game OwnerNWN NWN: SoU NWN: HotU NWN 2 NWN 2: MotB NWN 2: SoZ Joined: 19 May 2003 From: France
Posted: Friday, 06 July 2007 12:09AM
A rest script, hardcoded for 8 hours rest:Code:
void main()
{
object oPC ;
int nRest ;
location nloc ;
int hour ;
int thour ;
int day ;
int lhour ;
int lday ;
int diff ;
day = GetCalendarDay() ;
hour = GetTimeHour() ;
nRest = GetLastRestEventType();
oPC = GetLastPCRested() ;
if (nRest == REST_EVENTTYPE_REST_FINISHED) {
SetLocalInt(oPC, "LastRestedDay", day) ;
SetLocalInt(oPC, "LastRestedHour", hour) ;
}
else if (nRest == REST_EVENTTYPE_REST_STARTED) {
if (GetIsObjectValid(oPC)) {
nloc = GetLocation(oPC) ;
lday = GetLocalInt(oPC, "LastRestedDay") ;
lhour = GetLocalInt(oPC, "LastRestedHour") ;
thour = hour+(day-lday)*24 ;
diff = thour-lhour ;
if (diff < 8) {
SendMessageToPC(oPC, "You are not tired enough to rest. Wait "+IntToString(8-diff)+" more hours.") ;
AssignCommand(oPC, ClearAllActions());
}
}
}
}
View Post/Code in separate window
Mithdradates
Game OwnerNWN NWN: SoU NWN: HotU SW: KotOR PC Jade Empire:SE NWN 2 NWN 2: MotB NWN 2: SoZ Joined: 04 Jul 2002
Posted: Friday, 06 July 2007 04:34AM
Here a couple of scripts that the community might find useful. Some of them use each other, so you might want to put all of them into one file. This one returns the size of the either the weapon passed to it, or the size of the weapon in the right hand of the creature passed to it.Code:
const int WEAPON_SIZE_INVALID=0;
const int WEAPON_SIZE_TINY=1;
const int WEAPON_SIZE_SMALL=2;
const int WEAPON_SIZE_MEDIUM=3;
const int WEAPON_SIZE_LARGE=4;
//Function to determine the size of the weapon being used by the creature
int GetWeaponSize(object oCreature=OBJECT_SELF)
{
object oWeapon;
if (GetObjectType(oCreature)==OBJECT_TYPE_CREATURE)
oWeapon=GetItemInSlot(INVENTORY_SLOT_RIGHTHAND,oCreature);
else
oWeapon=oCreature;
if (!GetIsObjectValid(oWeapon)) return WEAPON_SIZE_INVALID;
if (GetBaseItemType(oWeapon)==BASE_ITEM_DAGGER) return WEAPON_SIZE_TINY;
if (GetBaseItemType(oWeapon)==BASE_ITEM_DART) return WEAPON_SIZE_TINY;
if (GetBaseItemType(oWeapon)==BASE_ITEM_FALCHION) return WEAPON_SIZE_LARGE;
if (GetBaseItemType(oWeapon)==BASE_ITEM_GREATAXE) return WEAPON_SIZE_LARGE;
if (GetBaseItemType(oWeapon)==BASE_ITEM_GREATSWORD) return WEAPON_SIZE_LARGE;
if (GetBaseItemType(oWeapon)==BASE_ITEM_HALBERD) return WEAPON_SIZE_LARGE;
if (GetBaseItemType(oWeapon)==BASE_ITEM_HANDAXE) return WEAPON_SIZE_SMALL;
if (GetBaseItemType(oWeapon)==BASE_ITEM_HEAVYCROSSBOW) return WEAPON_SIZE_LARGE;
if (GetBaseItemType(oWeapon)==BASE_ITEM_KAMA) return WEAPON_SIZE_TINY;
if (GetBaseItemType(oWeapon)==BASE_ITEM_KUKRI) return WEAPON_SIZE_TINY;
if (GetBaseItemType(oWeapon)==BASE_ITEM_LIGHTHAMMER) return WEAPON_SIZE_SMALL;
if (GetBaseItemType(oWeapon)==BASE_ITEM_LONGBOW) return WEAPON_SIZE_LARGE;
if (GetBaseItemType(oWeapon)==BASE_ITEM_LIGHTMACE) return WEAPON_SIZE_SMALL;
if (GetBaseItemType(oWeapon)==BASE_ITEM_MAGICSTAFF) return WEAPON_SIZE_LARGE;
if (GetBaseItemType(oWeapon)==BASE_ITEM_QUARTERSTAFF) return WEAPON_SIZE_LARGE;
if (GetBaseItemType(oWeapon)==BASE_ITEM_SCYTHE) return WEAPON_SIZE_LARGE;
if (GetBaseItemType(oWeapon)==BASE_ITEM_SHORTSWORD) return WEAPON_SIZE_SMALL;
if (GetBaseItemType(oWeapon)==BASE_ITEM_SHURIKEN) return WEAPON_SIZE_TINY;
if (GetBaseItemType(oWeapon)==BASE_ITEM_SICKLE) return WEAPON_SIZE_SMALL;
if (GetBaseItemType(oWeapon)==BASE_ITEM_SLING) return WEAPON_SIZE_SMALL;
if (GetBaseItemType(oWeapon)==BASE_ITEM_SPEAR) return WEAPON_SIZE_LARGE;
if (GetBaseItemType(oWeapon)==BASE_ITEM_THROWINGAXE) return WEAPON_SIZE_SMALL;
if (GetBaseItemType(oWeapon)==BASE_ITEM_WARMACE) return WEAPON_SIZE_LARGE;
return WEAPON_SIZE_MEDIUM;
}
View Post/Code in separate window This function determines if a creature is using a weapon as a two-handed weapon.Code:
//Function to determine whether a creature is using a two-handed weapon
int IsWeaponTwoHanded(object oCreature=OBJECT_SELF)
{
object oWeapon=GetItemInSlot(INVENTORY_SLOT_LEFTHAND, oCreature);
if (GetWeaponSize(oCreature)>=GetCreatureSize(oCreature)&&!GetIsObjectValid(oWeapon))
return TRUE;
return FALSE;
}
View Post/Code in separate window This function determines whether a creature is using a ranged weapon.Code:
//Function to determine whether a creature is using a ranged weapon
int IsWeaponRanged(object oCreature=OBJECT_SELF)
{
object oWeapon=GetItemInSlot(INVENTORY_SLOT_RIGHTHAND, oCreature);
if (GetWeaponRanged(oWeapon)) return TRUE;
return FALSE;
}
View Post/Code in separate window This function determines whether a creature is dual wielding.Code:
//Function to determine whether a creature is dual wielding
int IsDualWielding(object oCreature=OBJECT_SELF)
{
object oWeapon=GetItemInSlot(INVENTORY_SLOT_LEFTHAND, oCreature);
if (GetIsObjectValid(oWeapon)&&GetBaseItemType(oWeapon)!=BASE_ITEM_TOWERSHIELD&&GetBaseItemType(oWeapon)!=BASE_ITEM_SMALLSHIELD&&GetBaseItemType(oWeapon)!=BASE_ITEM_LARGESHIELD)
return TRUE;
return FALSE;
}
View Post/Code in separate window Function to return the AB of a creature's highest AB attack (why this isn't a default function I will never know).Code:
//Function to get the AB of the object oCreature
int GetMaxAB(object oCreature=OBJECT_SELF)
{
//start with base attack bonus
int iAB=GetBaseAttackBonus(oCreature);
object oWeapon=GetItemInSlot(INVENTORY_SLOT_RIGHTHAND,oCreature);
object oOffHand=GetItemInSlot(INVENTORY_SLOT_LEFTHAND,oCreature);
//add ability modifier
if (GetWeaponRanged(oWeapon))
{
if (GetHasFeat(FEAT_ZEN_ARCHERY,oCreature, TRUE)&&GetAbilityModifier(ABILITY_WISDOM,oCreature)>GetAbilityModifier(ABILITY_DEXTERITY,oCreature))
iAB=iAB+GetAbilityModifier(ABILITY_WISDOM,oCreature);
else
iAB=iAB+GetAbilityModifier(ABILITY_DEXTERITY,oCreature);
}
else
{
if (GetHasFeat(FEAT_WEAPON_FINESSE,oCreature, TRUE)&&GetAbilityModifier(ABILITY_DEXTERITY,oCreature)>GetAbilityModifier(ABILITY_STRENGTH,oCreature)&&(GetWeaponSize(oCreature)<=WEAPON_SIZE_SMALL||GetBaseItemType(oWeapon)==BASE_ITEM_RAPIER))
iAB=iAB+GetAbilityModifier(ABILITY_DEXTERITY,oCreature);
else
iAB=iAB+GetAbilityModifier(ABILITY_STRENGTH,oCreature);
};
//add weapon size and dual wielding effects
if (GetIsObjectValid(oOffHand)&&GetWeaponSize(oCreature)>GetCreatureSize(oCreature)||GetWeaponSize(oCreature)>GetCreatureSize(oCreature)+1) iAB=iAB-2;
if (GetIsObjectValid(oOffHand)&&GetBaseItemType(oOffHand)!=BASE_ITEM_SMALLSHIELD&&GetBaseItemType(oOffHand)!=BASE_ITEM_LARGESHIELD)
{
if (GetBaseItemType(oOffHand)==BASE_ITEM_TOWERSHIELD) iAB=iAB-2;
if (GetHasFeat(FEAT_TWO_WEAPON_FIGHTING, oCreature, TRUE)||GetHasFeat(FEAT_COMBATSTYLE_RANGER_DUAL_WIELD_TWO_WEAPON_FIGHTING, oCreature, TRUE))
{
if (GetWeaponSize(oOffHand)<GetCreatureSize(oCreature)) iAB=iAB-2;
else iAB=iAB-4;
}
else
{
if (GetWeaponSize(oOffHand)<GetCreatureSize(oCreature)) iAB=iAB-4;
else iAB=iAB-6;
}
};
//feat effects
if (GetBaseItemType(oWeapon)==BASE_ITEM_BASTARDSWORD)
{
if (GetHasFeat(FEAT_WEAPON_FOCUS_BASTARD_SWORD, oCreature, TRUE)) iAB=iAB+1;
if (GetHasFeat(FEAT_GREATER_WEAPON_FOCUS_BASTARDSWORD, oCreature, TRUE)) iAB=iAB+1;
if (GetHasFeat(FEAT_WEAPON_OF_CHOICE_BASTARDSWORD, oCreature, TRUE)&&GetHasFeat(FEAT_SUPERIOR_WEAPON_FOCUS, oCreature, TRUE)) iAB=iAB+1;
}
else if (GetBaseItemType(oWeapon)==BASE_ITEM_BATTLEAXE)
{
if (GetHasFeat(FEAT_WEAPON_FOCUS_BATTLE_AXE, oCreature, TRUE)) iAB=iAB+1;
if (GetHasFeat(FEAT_GREATER_WEAPON_FOCUS_BATTLEAXE, oCreature, TRUE)) iAB=iAB+1;
if (GetHasFeat(FEAT_WEAPON_OF_CHOICE_BATTLEAXE, oCreature, TRUE)&&GetHasFeat(FEAT_SUPERIOR_WEAPON_FOCUS, oCreature, TRUE)) iAB=iAB+1;
}
else if (GetBaseItemType(oWeapon)==BASE_ITEM_CLUB)
{
if (GetHasFeat(FEAT_WEAPON_FOCUS_CLUB, oCreature, TRUE)) iAB=iAB+1;
if (GetHasFeat(FEAT_GREATER_WEAPON_FOCUS_CLUB, oCreature, TRUE)) iAB=iAB+1;
if (GetHasFeat(FEAT_WEAPON_OF_CHOICE_CLUB, oCreature, TRUE)&&GetHasFeat(FEAT_SUPERIOR_WEAPON_FOCUS, oCreature, TRUE)) iAB=iAB+1;
}
else if (GetBaseItemType(oWeapon)==BASE_ITEM_DAGGER)
{
if (GetHasFeat(FEAT_WEAPON_FOCUS_DAGGER, oCreature, TRUE)) iAB=iAB+1;
if (GetHasFeat(FEAT_GREATER_WEAPON_FOCUS_DAGGER, oCreature, TRUE)) iAB=iAB+1;
if (GetHasFeat(FEAT_WEAPON_OF_CHOICE_DAGGER, oCreature, TRUE)&&GetHasFeat(FEAT_SUPERIOR_WEAPON_FOCUS, oCreature, TRUE)) iAB=iAB+1;
}
else if (GetBaseItemType(oWeapon)==BASE_ITEM_DART)
{
if (GetHasFeat(FEAT_WEAPON_FOCUS_DART, oCreature, TRUE)) iAB=iAB+1;
if (GetHasFeat(FEAT_GREATER_WEAPON_FOCUS_DART, oCreature, TRUE)) iAB=iAB+1;
if (GetHasFeat(FEAT_GOOD_AIM, oCreature, TRUE)) iAB=iAB+1;
}
else if (GetBaseItemType(oWeapon)==BASE_ITEM_DWARVENWARAXE)
{
if (GetHasFeat(FEAT_WEAPON_FOCUS_DWAXE, oCreature, TRUE)) iAB=iAB+1;
if (GetHasFeat(FEAT_GREATER_WEAPON_FOCUS_DWAXE, oCreature, TRUE)) iAB=iAB+1;
if (GetHasFeat(FEAT_WEAPON_FOCUS_DWAXE, oCreature, TRUE)&&GetHasFeat(FEAT_SUPERIOR_WEAPON_FOCUS, oCreature, TRUE)) iAB=iAB+1;
}
else if (GetBaseItemType(oWeapon)==BASE_ITEM_FALCHION)
{
if (GetHasFeat(1590, oCreature, TRUE)) iAB=iAB+1;
if (GetHasFeat(1597, oCreature, TRUE)) iAB=iAB+1;
if (GetHasFeat(1596, oCreature, TRUE)&&GetHasFeat(FEAT_SUPERIOR_WEAPON_FOCUS, oCreature, TRUE)) iAB=iAB+1;
}
else if (GetBaseItemType(oWeapon)==BASE_ITEM_GREATAXE)
{
if (GetHasFeat(FEAT_WEAPON_FOCUS_GREAT_AXE, oCreature, TRUE)) iAB=iAB+1;
if (GetHasFeat(FEAT_GREATER_WEAPON_FOCUS_GREATAXE, oCreature, TRUE)) iAB=iAB+1;
if (GetHasFeat(FEAT_WEAPON_OF_CHOICE_GREATAXE, oCreature, TRUE)&&GetHasFeat(FEAT_SUPERIOR_WEAPON_FOCUS, oCreature, TRUE)) iAB=iAB+1;
}
else if (GetBaseItemType(oWeapon)==BASE_ITEM_GREATSWORD)
{
if (GetHasFeat(FEAT_WEAPON_FOCUS_GREAT_SWORD, oCreature, TRUE)) iAB=iAB+1;
if (GetHasFeat(FEAT_GREATER_WEAPON_FOCUS_GREATSWORD, oCreature, TRUE)) iAB=iAB+1;
if (GetHasFeat(FEAT_WEAPON_OF_CHOICE_GREATSWORD, oCreature, TRUE)&&GetHasFeat(FEAT_SUPERIOR_WEAPON_FOCUS, oCreature, TRUE)) iAB=iAB+1;
}
else if (GetBaseItemType(oWeapon)==BASE_ITEM_HALBERD)
{
if (GetHasFeat(FEAT_WEAPON_FOCUS_HALBERD, oCreature, TRUE)) iAB=iAB+1;
if (GetHasFeat(FEAT_GREATER_WEAPON_FOCUS_HALBERD, oCreature, TRUE)) iAB=iAB+1;
if (GetHasFeat(FEAT_WEAPON_OF_CHOICE_HALBERD, oCreature, TRUE)&&GetHasFeat(FEAT_SUPERIOR_WEAPON_FOCUS, oCreature, TRUE)) iAB=iAB+1;
}
else if (GetBaseItemType(oWeapon)==BASE_ITEM_HANDAXE)
{
if (GetHasFeat(FEAT_WEAPON_FOCUS_HAND_AXE, oCreature, TRUE)) iAB=iAB+1;
if (GetHasFeat(FEAT_GREATER_WEAPON_FOCUS_HANDAXE, oCreature, TRUE)) iAB=iAB+1;
if (GetHasFeat(FEAT_WEAPON_OF_CHOICE_HANDAXE, oCreature, TRUE)&&GetHasFeat(FEAT_SUPERIOR_WEAPON_FOCUS, oCreature, TRUE)) iAB=iAB+1;
}
else if (GetBaseItemType(oWeapon)==BASE_ITEM_HEAVYCROSSBOW)
{
if (GetHasFeat(FEAT_WEAPON_FOCUS_HEAVY_CROSSBOW, oCreature, TRUE)) iAB=iAB+1;
if (GetHasFeat(FEAT_GREATER_WEAPON_FOCUS_HEAVYCROSSBOW, oCreature, TRUE)) iAB=iAB+1;
}
else if (GetBaseItemType(oWeapon)==BASE_ITEM_KAMA)
{
if (GetHasFeat(FEAT_WEAPON_FOCUS_KAMA, oCreature, TRUE)) iAB=iAB+1;
if (GetHasFeat(FEAT_GREATER_WEAPON_FOCUS_KAMA, oCreature, TRUE)) iAB=iAB+1;
if (GetHasFeat(FEAT_WEAPON_OF_CHOICE_KAMA, oCreature, TRUE)&&GetHasFeat(FEAT_SUPERIOR_WEAPON_FOCUS, oCreature, TRUE)) iAB=iAB+1;
}
else if (GetBaseItemType(oWeapon)==BASE_ITEM_KATANA)
{
if (GetHasFeat(FEAT_WEAPON_FOCUS_KATANA, oCreature, TRUE)) iAB=iAB+1;
if (GetHasFeat(FEAT_GREATER_WEAPON_FOCUS_KATANA, oCreature, TRUE)) iAB=iAB+1;
if (GetHasFeat(FEAT_WEAPON_OF_CHOICE_KATANA, oCreature, TRUE)&&GetHasFeat(FEAT_SUPERIOR_WEAPON_FOCUS, oCreature, TRUE)) iAB=iAB+1;
}
else if (GetBaseItemType(oWeapon)==BASE_ITEM_KUKRI)
{
if (GetHasFeat(FEAT_WEAPON_FOCUS_KUKRI, oCreature, TRUE)) iAB=iAB+1;
if (GetHasFeat(FEAT_GREATER_WEAPON_FOCUS_KUKRI, oCreature, TRUE)) iAB=iAB+1;
if (GetHasFeat(FEAT_WEAPON_OF_CHOICE_KUKRI, oCreature, TRUE)&&GetHasFeat(FEAT_SUPERIOR_WEAPON_FOCUS, oCreature, TRUE)) iAB=iAB+1;
}
else if (GetBaseItemType(oWeapon)==BASE_ITEM_LIGHTCROSSBOW)
{
if (GetHasFeat(FEAT_WEAPON_FOCUS_LIGHT_CROSSBOW, oCreature, TRUE)) iAB=iAB+1;
if (GetHasFeat(FEAT_GREATER_WEAPON_FOCUS_LIGHTCROSSBOW, oCreature, TRUE)) iAB=iAB+1;
}
else if (GetBaseItemType(oWeapon)==BASE_ITEM_LIGHTFLAIL)
{
if (GetHasFeat(FEAT_WEAPON_FOCUS_LIGHT_FLAIL, oCreature, TRUE)) iAB=iAB+1;
if (GetHasFeat(FEAT_GREATER_WEAPON_FOCUS_LIGHTFLAIL, oCreature, TRUE)) iAB=iAB+1;
if (GetHasFeat(FEAT_WEAPON_OF_CHOICE_LIGHTFLAIL, oCreature, TRUE)&&GetHasFeat(FEAT_SUPERIOR_WEAPON_FOCUS, oCreature, TRUE)) iAB=iAB+1;
}
else if (GetBaseItemType(oWeapon)==BASE_ITEM_LIGHTHAMMER)
{
if (GetHasFeat(FEAT_WEAPON_FOCUS_LIGHT_HAMMER, oCreature, TRUE)) iAB=iAB+1;
if (GetHasFeat(FEAT_GREATER_WEAPON_FOCUS_LIGHTHAMMER, oCreature, TRUE)) iAB=iAB+1;
if (GetHasFeat(FEAT_WEAPON_OF_CHOICE_LIGHTHAMMER, oCreature, TRUE)&&GetHasFeat(FEAT_SUPERIOR_WEAPON_FOCUS, oCreature, TRUE)) iAB=iAB+1;
}
else if (GetBaseItemType(oWeapon)==BASE_ITEM_LONGBOW)
{
if (GetHasFeat(FEAT_WEAPON_FOCUS_LONGBOW, oCreature, TRUE)) iAB=iAB+1;
if (GetHasFeat(FEAT_GREATER_WEAPON_FOCUS_LONGBOW, oCreature, TRUE)) iAB=iAB+1;
if (GetHasFeat(FEAT_PRESTIGE_ENCHANT_ARROW_5, oCreature, TRUE)) iAB=iAB+5;
else if (GetHasFeat(FEAT_PRESTIGE_ENCHANT_ARROW_4, oCreature, TRUE)) iAB=iAB+4;
else if (GetHasFeat(FEAT_PRESTIGE_ENCHANT_ARROW_3, oCreature, TRUE)) iAB=iAB+3;
else if (GetHasFeat(FEAT_PRESTIGE_ENCHANT_ARROW_2, oCreature, TRUE)) iAB=iAB+2;
else if (GetHasFeat(FEAT_PRESTIGE_ENCHANT_ARROW_1, oCreature, TRUE)) iAB=iAB+1;
}
else if (GetBaseItemType(oWeapon)==BASE_ITEM_LONGSWORD)
{
if (GetHasFeat(FEAT_WEAPON_FOCUS_LONG_SWORD, oCreature, TRUE)) iAB=iAB+1;
if (GetHasFeat(FEAT_GREATER_WEAPON_FOCUS_LONGSWORD, oCreature, TRUE)) iAB=iAB+1;
if (GetHasFeat(FEAT_WEAPON_OF_CHOICE_LONGSWORD, oCreature, TRUE)&&GetHasFeat(FEAT_SUPERIOR_WEAPON_FOCUS, oCreature, TRUE)) iAB=iAB+1;
}
else if (GetBaseItemType(oWeapon)==BASE_ITEM_LIGHTMACE)
{
if (GetHasFeat(FEAT_WEAPON_FOCUS_LIGHT_MACE, oCreature, TRUE)) iAB=iAB+1;
if (GetHasFeat(FEAT_GREATER_WEAPON_FOCUS_LIGHTMACE, oCreature, TRUE)) iAB=iAB+1;
if (GetHasFeat(FEAT_WEAPON_OF_CHOICE_LIGHTMACE, oCreature, TRUE)&&GetHasFeat(FEAT_SUPERIOR_WEAPON_FOCUS, oCreature, TRUE)) iAB=iAB+1;
}
else if (GetBaseItemType(oWeapon)==BASE_ITEM_MORNINGSTAR)
{
if (GetHasFeat(FEAT_WEAPON_FOCUS_MORNING_STAR, oCreature, TRUE)) iAB=iAB+1;
if (GetHasFeat(FEAT_GREATER_WEAPON_FOCUS_MORNINGSTAR, oCreature, TRUE)) iAB=iAB+1;
if (GetHasFeat(FEAT_WEAPON_OF_CHOICE_MORNINGSTAR, oCreature, TRUE)&&GetHasFeat(FEAT_SUPERIOR_WEAPON_FOCUS, oCreature, TRUE)) iAB=iAB+1;
}
else if (GetBaseItemType(oWeapon)==BASE_ITEM_QUARTERSTAFF)
{
if (GetHasFeat(FEAT_WEAPON_FOCUS_STAFF, oCreature, TRUE)) iAB=iAB+1;
if (GetHasFeat(FEAT_GREATER_WEAPON_FOCUS_QUARTERSTAFF, oCreature, TRUE)) iAB=iAB+1;
if (GetHasFeat(FEAT_WEAPON_OF_CHOICE_QUARTERSTAFF, oCreature, TRUE)&&GetHasFeat(FEAT_SUPERIOR_WEAPON_FOCUS, oCreature, TRUE)) iAB=iAB+1;
}
else if (GetBaseItemType(oWeapon)==BASE_ITEM_RAPIER)
{
if (GetHasFeat(FEAT_WEAPON_FOCUS_RAPIER, oCreature, TRUE)) iAB=iAB+1;
if (GetHasFeat(FEAT_GREATER_WEAPON_FOCUS_RAPIER, oCreature, TRUE)) iAB=iAB+1;
if (GetHasFeat(FEAT_WEAPON_OF_CHOICE_RAPIER, oCreature, TRUE)&&GetHasFeat(FEAT_SUPERIOR_WEAPON_FOCUS, oCreature, TRUE)) iAB=iAB+1;
}
else if (GetBaseItemType(oWeapon)==BASE_ITEM_SCIMITAR)
{
if (GetHasFeat(FEAT_WEAPON_FOCUS_SCIMITAR, oCreature, TRUE)) iAB=iAB+1;
if (GetHasFeat(FEAT_GREATER_WEAPON_FOCUS_SCIMITAR, oCreature, TRUE)) iAB=iAB+1;
if (GetHasFeat(FEAT_WEAPON_OF_CHOICE_SCIMITAR, oCreature, TRUE)&&GetHasFeat(FEAT_SUPERIOR_WEAPON_FOCUS, oCreature, TRUE)) iAB=iAB+1;
}
else if (GetBaseItemType(oWeapon)==BASE_ITEM_SCYTHE)
{
if (GetHasFeat(FEAT_WEAPON_FOCUS_SCYTHE, oCreature, TRUE)) iAB=iAB+1;
if (GetHasFeat(FEAT_GREATER_WEAPON_FOCUS_SCYTHE, oCreature, TRUE)) iAB=iAB+1;
if (GetHasFeat(FEAT_WEAPON_OF_CHOICE_SCYTHE, oCreature, TRUE)&&GetHasFeat(FEAT_SUPERIOR_WEAPON_FOCUS, oCreature, TRUE)) iAB=iAB+1;
}
else if (GetBaseItemType(oWeapon)==BASE_ITEM_SHORTBOW)
{
if (GetHasFeat(FEAT_WEAPON_FOCUS_SHORTBOW, oCreature, TRUE)) iAB=iAB+1;
if (GetHasFeat(FEAT_GREATER_WEAPON_FOCUS_SHORTBOW, oCreature, TRUE)) iAB=iAB+1;
if (GetHasFeat(FEAT_PRESTIGE_ENCHANT_ARROW_5, oCreature, TRUE)) iAB=iAB+5;
else if (GetHasFeat(FEAT_PRESTIGE_ENCHANT_ARROW_4, oCreature, TRUE)) iAB=iAB+4;
else if (GetHasFeat(FEAT_PRESTIGE_ENCHANT_ARROW_3, oCreature, TRUE)) iAB=iAB+3;
else if (GetHasFeat(FEAT_PRESTIGE_ENCHANT_ARROW_2, oCreature, TRUE)) iAB=iAB+2;
else if (GetHasFeat(FEAT_PRESTIGE_ENCHANT_ARROW_1, oCreature, TRUE)) iAB=iAB+1;
}
else if (GetBaseItemType(oWeapon)==BASE_ITEM_SHORTSWORD)
{
if (GetHasFeat(FEAT_WEAPON_FOCUS_SHORT_SWORD, oCreature, TRUE)) iAB=iAB+1;
if (GetHasFeat(FEAT_GREATER_WEAPON_FOCUS_SHORTSWORD, oCreature, TRUE)) iAB=iAB+1;
if (GetHasFeat(FEAT_WEAPON_OF_CHOICE_SHORTSWORD, oCreature, TRUE)&&GetHasFeat(FEAT_SUPERIOR_WEAPON_FOCUS, oCreature, TRUE)) iAB=iAB+1;
}
else if (GetBaseItemType(oWeapon)==BASE_ITEM_SHURIKEN)
{
if (GetHasFeat(FEAT_WEAPON_FOCUS_SHURIKEN, oCreature, TRUE)) iAB=iAB+1;
if (GetHasFeat(FEAT_GREATER_WEAPON_FOCUS_SHURIKEN, oCreature, TRUE)) iAB=iAB+1;
if (GetHasFeat(FEAT_GOOD_AIM, oCreature, TRUE)) iAB=iAB+1;
}
else if (GetBaseItemType(oWeapon)==BASE_ITEM_SICKLE)
{
if (GetHasFeat(FEAT_WEAPON_FOCUS_SICKLE, oCreature, TRUE)) iAB=iAB+1;
if (GetHasFeat(FEAT_GREATER_WEAPON_FOCUS_SICKLE, oCreature, TRUE)) iAB=iAB+1;
if (GetHasFeat(FEAT_WEAPON_OF_CHOICE_SICKLE, oCreature, TRUE)&&GetHasFeat(FEAT_SUPERIOR_WEAPON_FOCUS, oCreature, TRUE)) iAB=iAB+1;
}
else if (GetBaseItemType(oWeapon)==BASE_ITEM_SLING)
{
if (GetHasFeat(FEAT_WEAPON_FOCUS_SLING, oCreature, TRUE)) iAB=iAB+1;
if (GetHasFeat(FEAT_GREATER_WEAPON_FOCUS_SLING, oCreature, TRUE)) iAB=iAB+1;
if (GetHasFeat(FEAT_GOOD_AIM, oCreature, TRUE)) iAB=iAB+1;
}
else if (GetBaseItemType(oWeapon)==BASE_ITEM_SPEAR)
{
if (GetHasFeat(FEAT_WEAPON_FOCUS_SPEAR, oCreature, TRUE)) iAB=iAB+1;
if (GetHasFeat(FEAT_GREATER_WEAPON_FOCUS_SHORTSPEAR, oCreature, TRUE)) iAB=iAB+1;
if (GetHasFeat(FEAT_WEAPON_OF_CHOICE_SHORTSPEAR, oCreature, TRUE)&&GetHasFeat(FEAT_SUPERIOR_WEAPON_FOCUS, oCreature, TRUE)) iAB=iAB+1;
}
else if (GetBaseItemType(oWeapon)==BASE_ITEM_THROWINGAXE)
{
if (GetHasFeat(FEAT_WEAPON_FOCUS_THROWING_AXE, oCreature, TRUE)) iAB=iAB+1;
if (GetHasFeat(FEAT_GREATER_WEAPON_FOCUS_THROWINGAXE, oCreature, TRUE)) iAB=iAB+1;
if (GetHasFeat(FEAT_GOOD_AIM, oCreature, TRUE)) iAB=iAB+1;
}
else if (GetBaseItemType(oWeapon)==BASE_ITEM_WARHAMMER)
{
if (GetHasFeat(FEAT_WEAPON_FOCUS_WAR_HAMMER, oCreature, TRUE)) iAB=iAB+1;
if (GetHasFeat(FEAT_GREATER_WEAPON_FOCUS_WARHAMMER, oCreature, TRUE)) iAB=iAB+1;
if (GetHasFeat(FEAT_WEAPON_OF_CHOICE_WARHAMMER, oCreature, TRUE)&&GetHasFeat(FEAT_SUPERIOR_WEAPON_FOCUS, oCreature, TRUE)) iAB=iAB+1;
}
else if (GetBaseItemType(oWeapon)==BASE_ITEM_WARMACE)
{
if (GetHasFeat(1826, oCreature, TRUE)) iAB=iAB+1;
if (GetHasFeat(1829, oCreature, TRUE)) iAB=iAB+1;
if (GetHasFeat(1828, oCreature, TRUE)&&GetHasFeat(FEAT_SUPERIOR_WEAPON_FOCUS, oCreature, TRUE)) iAB=iAB+1;
}
else
{
if (GetIsObjectValid(GetItemInSlot(INVENTORY_SLOT_CWEAPON_L,oCreature))||GetIsObjectValid(GetItemInSlot(INVENTORY_SLOT_CWEAPON_B,oCreature))||GetIsObjectValid(GetItemInSlot(INVENTORY_SLOT_CWEAPON_R,oCreature)))
{
if (GetHasFeat(FEAT_WEAPON_FOCUS_CREATURE, oCreature, TRUE)) iAB=iAB+1;
if (GetHasFeat(FEAT_GREATER_WEAPON_FOCUS_CREATURE, oCreature, TRUE)) iAB=iAB+1;
oWeapon=GetItemInSlot(INVENTORY_SLOT_CWEAPON_R,oCreature);
if (GetIsObjectValid(oWeapon)==FALSE) oWeapon=GetItemInSlot(INVENTORY_SLOT_CWEAPON_L,oCreature);
if (GetIsObjectValid(oWeapon)==FALSE) oWeapon=GetItemInSlot(INVENTORY_SLOT_CWEAPON_B,oCreature);
}
else
{
if (GetHasFeat(FEAT_WEAPON_FOCUS_UNARMED_STRIKE, oCreature, TRUE)) iAB=iAB+1;
if (GetHasFeat(FEAT_GREATER_WEAPON_FOCUS_UNARMED, oCreature, TRUE)) iAB=iAB+1;
oWeapon=GetItemInSlot(INVENTORY_SLOT_ARMS,oCreature);
}
}
int iWeaponEnhancement=0;
int iAttackDecrease=0;
itemproperty ipAB=GetFirstItemProperty(oWeapon);
while (GetIsItemPropertyValid(ipAB))
{
if ((GetItemPropertyType(ipAB)==ITEM_PROPERTY_ENHANCEMENT_BONUS||GetItemPropertyType(ipAB)==ITEM_PROPERTY_ATTACK_BONUS)&&GetItemPropertyCostTableValue(ipAB)>iWeaponEnhancement)
iWeaponEnhancement=iWeaponEnhancement+GetItemPropertyCostTableValue(ipAB);
if ((GetItemPropertyType(ipAB)==ITEM_PROPERTY_DECREASED_ENHANCEMENT_MODIFIER||GetItemPropertyType(ipAB)==ITEM_PROPERTY_DECREASED_ATTACK_MODIFIER)&&GetItemPropertyCostTableValue(ipAB)>iAttackDecrease)
iAttackDecrease=iAttackDecrease+GetItemPropertyCostTableValue(ipAB);
ipAB=GetNextItemProperty(oWeapon);
};
effect eAB=GetFirstEffect(oCreature);
while (GetIsEffectValid(eAB))
{
if (GetEffectType(eAB)==EFFECT_TYPE_ATTACK_INCREASE)
iWeaponEnhancement=iWeaponEnhancement+GetEffectInteger(eAB, 0);
if (GetEffectType(eAB)==EFFECT_TYPE_ATTACK_DECREASE)
iAttackDecrease=iAttackDecrease+GetEffectInteger(eAB, 0);
eAB=GetNextEffect(oCreature);
}
if (iWeaponEnhancement>20) iWeaponEnhancement=20;
if (iAttackDecrease>20) iAttackDecrease=20;
iAB=iAB+iWeaponEnhancement-iAttackDecrease;
return iAB;
}
View Post/Code in separate window _________________Mithdradates' Hall of Training : Build and test your characters against simulated PvP opponents with custom AI.
sirlucifier
Game OwnerNWN NWN: SoU NWN: HotU NWN 2 Joined: 29 Jun 2002 From: My PC
Posted: Wednesday, 11 July 2007 03:34AM
Here is a scripit for pc race it uses a portal/door as the trigger. youll have to create the waypoints in your mod for there spawn location from the portal. Rather than have separate portals, one portal could suffice with the following: Set Waypoints in all the start area locations with TAGs that correspond to the racial types, for this example, I'm using: TAG="WP_START_" as the prefix I wrote this for an OnUse event. If Subraces are needed, some modification for RACIAL_ SUBTYPE_ will be required. The Racial Types are: Dawrf = 0 Elf = 1 Gnome = 2 Halfling = 3 Half-Elf = 4 Half-Orc = 5 Human = 6 Tiefling = 21 Assimar = 21 Outsider = 20 So the Waypoint for an Elven char would have the tag "WP_START_1" or a Half-Orc start location would have a waypoint with the tag "WP_START_5"NWScript:
void main()
{
object oPC=GetLastUsedBy();
int nRace=GetRacialType(oPC);
string sTag="WP_START_";
sTag+=(IntToString(nRace));
AssignCommand(oPC, JumpToObject(GetWaypointByTag(sTag)));
}
View Post/Code in separate window Just cut and past this script to portal/doors on used script area. DONT ALTER IT, it worls fine this way just make the waypoints and you be all set. Props to Calimvar its his scripit. Hope that gets ya started.Edited By sirlucifier on 07/11/07 03:37
Lugoun
Game OwnerNWN NWN: SoU NWN: HotU NWN 2 NWN 2: MotB NWN 2: SoZ Joined: 25 Apr 2002 From: CA
Posted: Wednesday, 11 July 2007 11:41PM
Maybe there's an easier way to do it, but this has come in handy for me a few times:Code:
string FindReplaceSubString(string sStartString, string sCurrentWord, string sNewWord)
{
int nLength = GetStringLength(sStartString);
int nCurrSubLoc = FindSubString(sStartString, sCurrentWord);
string sLeftSide = GetStringLeft(sStartString, nCurrSubLoc);
int nCurrentLength = GetStringLength(sCurrentWord);
int nLeftSideLength = nCurrSubLoc + nCurrentLength;
int nRightSideLength = nLength - nLeftSideLength;
string sRightSide = GetStringRight(sStartString, nRightSideLength);
string sNewString = sLeftSide + sNewWord + sRightSide;
return sNewString;
}
View Post/Code in separate window _________________ Lugoun Heroes of the Third Agehttp://hotta-rpg.org/index.php Edited By Lugoun on 07/11/07 23:43
emsquared
Game OwnerNWN 2 Joined: 18 Feb 2007
Posted: Monday, 16 July 2007 02:16AM
May I humbley request some of you more completely describe what your script does, most people that will be using these I would think do not script themselves and will not be able to tell what it does by "I've found this came in handy alot..." then a bunch of code...
jackyo123
Game OwnerNWN 2 NWN 2: MotB Joined: 13 Dec 2006
Posted: Tuesday, 24 July 2007 06:38PM
This thread is long overdue, and a great idea. I've got a bunch of scripts that I use over and over again, and will post them up here soon.
jackyo123
Game OwnerNWN 2 NWN 2: MotB Joined: 13 Dec 2006
Posted: Monday, 30 July 2007 06:29PM
Here is a laydown/sleep script (none of these are mine - just found them up here at one point, and been saving things that look useful and I find I use over and over)Code:
// Play custom animation (returns void)
void C_PlayCustomAnimation(object oObject, string sAnimationName,
int nLooping, float fSpeed = 1.0f)
{
PlayCustomAnimation(oObject, sAnimationName, nLooping, fSpeed);
}
void C_Laydown(object oTarget)
{
float fDelay;
if (GetGender(oTarget) == GENDER_FEMALE) {
fDelay = 3.33;
} else {
fDelay = 2.33;
}
PlayCustomAnimation(oTarget, "laydownb", 0);
DelayCommand(fDelay, C_PlayCustomAnimation(oTarget, "proneb", 1);
}
View Post/Code in separate window Cutscene attack scriptCode:
NWScript:
// sAttackerTag = Tag for the NPC performing the attack.
// iMilliseconds = Delay in the conversation/cutscene.
#include "ginc_misc"
void main (string sAttackerTag,int iMilliseconds = 1000)
{
object oAttacker = GetObjectByTag(sAttackerTag);
string sCustomAnimation = "*1attack01";
PlayCustomAnimation(oAttacker,sCustomAnimation,0,1.0);
ActionPauseCutscene(iMilliseconds);
}
View Post/Code in separate window Here is sir elric's cutscene invisibility script:Code:
NWScript:
// a_cutscene_invis by Sir Elric - 14th March, 2007
/*
Apply or remove cutscene invisibility from the speaker
Action taken node of NPC conversation:
Set to 1 to apply cutscene invisibility
Set to 0 to remove cutscene invisibility
*Note for use in NWN2 style conversations only
*/
// Apply cutscene invisibility to the speaker
void SE_ApplyCutsceneInvis(object oPC)
{
ApplyEffectToObject(DURATION_TYPE_PERMANENT, EffectVisualEffect(VFX_DUR_CUTSCENE_INVISIBILITY), oPC);
}
// Remove cutscene invisibility on the speaker
void SE_RemoveCutsceneInvis(object oPC)
{
effect eEffect = GetFirstEffect(oPC);
while (GetIsEffectValid(eEffect))
{
if (GetEffectType(eEffect) == EFFECT_TYPE_VISUALEFFECT && GetEffectCreator(eEffect) == OBJECT_SELF)
{
RemoveEffect(oPC, eEffect);
}
eEffect = GetNextEffect(oPC);
}
}
void main(int nInvis)
{
object oPC = GetPCSpeaker();
if(nInvis)
SE_ApplyCutsceneInvis(oPC);
else
SE_RemoveCutsceneInvis(oPC);
}
View Post/Code in separate window Here is a conditional convo brach script that starts different convos with an npc depending upon where he is found:Code:
// This script in an NPC's onConversation chooses a different
// conversation file depending on the area the NPC's found in.
void main() {
// Get the area name
string sAreaName = GetTag(GetArea(OBJECT_SELF));
// Declare a variable for the conversation ResRef
string sConversation;
// Assign the right conversation by area
if ("isk_a_rangersrest" == sAreaName)
sConversation = "rangers_potboy";
else if ("isk_a_goldengoblin" == sAreaName)
sConversation = "ggoblin_thief";
else if ("isk_a_sewer1" == sAreaName)
sConversation = "assassin_servant";
// Start the appropriate conversation.
BeginConversation(sConversation);
}
View Post/Code in separate window
Sunjammer
Game OwnerNWN NWN: SoU NWN: HotU SW: KotOR PC Jade Empire:SE NWN 2 NWN 2: MotB NWN 2: SoZ Mass Effect PC Joined: 03 Jul 2002 From: Scotland
Posted: Saturday, 04 August 2007 04:19PM
An alternative to weby 's C_GetLevelByXP _________________ Sunjammer Code Monkey
ciViLiZed
Game OwnerNWN NWN 2 NWN 2: MotB NWN 2: SoZ Mass Effect PC Joined: 15 Feb 2005 From: Montreal, Quebec, Canada
Posted: Wednesday, 15 August 2007 02:29AM
Here's a custom function that will identify all carried items, make them undroppable and make them unremovable (i.e. cursed). Helpful say for a companion whose inventory you don't want the player to empty. Also circumvents having to create identified versions of blueprints of magic items. Use anywhere, but a logical place is in an OnSpawn script.NWScript:
void HandsOffMyInventory( object oTarget )
{
//Check inventory items
object oItem = GetFirstItemInInventory( oTarget );
while ( GetIsObjectValid( oItem ) )
{
SetIdentified( oItem, TRUE );
SetDroppableFlag( oItem, FALSE );
SetItemCursedFlag( oItem, TRUE );
oItem = GetNextItemInInventory( oTarget );
}
//Check equipped items
int nSlot;
for (nSlot=0; nSlot<NUM_INVENTORY_SLOTS; nSlot++)
{
oItem=GetItemInSlot( nSlot, oTarget );
if (GetIsObjectValid( oItem ))
{
SetIdentified( oItem, TRUE );
SetDroppableFlag( oItem, FALSE );
SetItemCursedFlag( oItem, TRUE );
}
}
}
View Post/Code in separate window _________________ E.C.Patterson Gaming Parents Studios Trinity - A NWN2 adventure Download. Edited By ciViLiZed on 08/15/07 02:30
flem1
Game OwnerJade Empire:SE NWN 2 NWN 2: MotB NWN 2: SoZ Mass Effect PC Joined: 31 Oct 2006
Posted: Wednesday, 15 August 2007 08:48AM
jackyo, the lay down script is missing a ) in the DelayCommand line.
jackyo123
Game OwnerNWN 2 NWN 2: MotB Joined: 13 Dec 2006
Posted: Tuesday, 21 August 2007 07:39PM
thanks flem - damn cut n paste! ;>
Wyrin_D'njargo
Game OwnerNWN 2 NWN 2: SoZ Mass Effect PC Joined: 16 Nov 2006 From: Cambridge, UK
Posted: Thursday, 30 August 2007 06:43AM
Here's a simple script to use for a treasure placeable to give the PC some gold when they click on it and destroy the gold pile afterwards. Placeable must be useable and non-static, and attach a variable - integer called iGold, set to the amount of gold you wish to giveCode:void main()
{
object oPC = GetLastUsedBy();
int nGP = GetLocalInt(OBJECT_SELF, "iGold");
GiveGoldToCreature(oPC, nGP, TRUE);
DestroyObject(OBJECT_SELF);
} View Post/Code in separate window Here's the core of my inflence script - not the most elegant, but just chaneg the companion tags for your needsCode:#include "ginc_var_ops"
void main(string sCompanion, string sChange)
{
object oPC = GetFirstPC();
object oCompanion = GetObjectByTag(sCompanion);
string sName = GetName(oCompanion);
int nOldValue = 0;
int nNewValue = 0;
if (sCompanion == "c_seich")
{
string sVariable = "i_seich";
nOldValue = GetGlobalInt(sVariable);
nNewValue = CalcNewIntValue(nOldValue, sChange, TRUE);
SetGlobalInt(sVariable, nNewValue);
}
else if (sCompanion == "c_mignet")
{
string sVariable = "i_mignet";
nOldValue = GetGlobalInt(sVariable);
nNewValue = CalcNewIntValue(nOldValue, sChange, TRUE);
SetGlobalInt(sVariable, nNewValue);
}
else if (sCompanion == "c_briars")
{
string sVariable = "i_briars";
nOldValue = GetGlobalInt(sVariable);
nNewValue = CalcNewIntValue(nOldValue, sChange, TRUE);
SetGlobalInt(sVariable, nNewValue);
}
else if (sCompanion == "c_blackdeath")
{
string sVariable = "i_blackdeath";
nOldValue = GetGlobalInt(sVariable);
nNewValue = CalcNewIntValue(nOldValue, sChange, TRUE);
SetGlobalInt(sVariable, nNewValue);
}
else if (sCompanion == "c_gork")
{
string sVariable = "i_gork";
nOldValue = GetGlobalInt(sVariable);
nNewValue = CalcNewIntValue(nOldValue, sChange, TRUE);
SetGlobalInt(sVariable, nNewValue);
}
if (nNewValue <= nOldValue)
SendMessageToPC(oPC, "You have lost influence with " + sName + " (" + IntToString(nNewValue) + ")");
else
SendMessageToPC(oPC, "You have gained influence with " + sName + " (" + IntToString(nNewValue) + ")");
} View Post/Code in separate window _________________My blog The Dark Avenger series
Graegos
Game OwnerNWN NWN: SoU NWN: HotU NWN 2 Joined: 19 Feb 2003
Posted: Friday, 21 September 2007 10:21PM
Thank you VERY much for this thread! Very nice scripts, keep em' coming!
What do these icons mean?
Where can I learn how to use the forums?
Jump To:
Select A Forum
BioWare General
-- Web Site Help
-- BioWare Online Store Support
-- BioWare News Discussion
Premium Neverwinter Nights Modules
-- Premium Neverwinter Nights 1 Modules Tec...
-- Premium Neverwinter Nights 1 Modules Dis...
Neverwinter Nights
-- NWN 1: General Discussion (No Spoilers ...
-- NWN 1: Players - Official Campaign (Spo...
-- NWN 1: Players - SoU Official Campaign (...
-- NWN 1: Players - HotU Official Campaign ...
-- NWN 1: Modules Discussion
-- NWN 1: Community Expansion Pack (CEP)
-- NWN 1: Guilds and Registry - Ye Olde Tav...
-- NWN 1: Dungeon Master's Realm
-- NWN 1: Toolset
-- NWN 1: Scripting
-- NWN 1: Custom Content
-- NWN 1: For Developers
-- NWN 1/SoU/HotU Technical Support (Self-H...
-- NWN 1: Server Admin
-- NWN 1: Linux Version - General Discussio...
-- NWN 1: Macintosh Version - General Discu...
Old Dragon Age Forums
-- Dragon Age (Old)
-- Dragon Age: Origins General Discussion
Sonic Chronicles: The Dark Brotherhood
-- Sonic Chronicles: The Dark Brotherhood G...
-- Sonic Chronicles Storyline and Strategy ...
Baldur's Gate II Series
-- Baldur's Gate II: SoA and ToB General Di...
-- Baldur's Gate II Gameplay (Spoilers!)
-- Baldur's Gate II: SoA and ToB Technical ...
Baldur's Gate Series
-- Baldur's Gate and Tales of the Sword Coa...
-- Baldur's Gate Gameplay (Spoilers!)
-- Baldur's Gate and TotSC Technical Suppor...
MDK2
-- MDK2 Gameplay (Spoilers!)
-- MDK2 General Discussion
-- MDK2 Technical Support
Shattered Steel
-- Shattered Steel General Discussion
Star Wars: Knights of the Old Republic
-- Official Announcements - Star Wars: Knig...
-- Storyline Discussion (Spoilers Warning) ...
-- Xbox Version (Spoilers Will Be Moved) - ...
-- PC/Mac Version (Spoilers Will Be Moved) ...
-- Technical Support (Self-Help) - Star War...
Jade Empire Forums
-- Jade Empire PC General Discussion (Spoil...
-- Jade Empire Xbox General Discussion (Spo...
-- Jade Empire Storyline and Strategy Discu...
-- Jade Empire Technical Support (Self-Help...
Neverwinter Nights 2
-- NWN2: General discussion forums for NWN2...
-- NWN2: Players - NWN2 Official Campaign (...
-- NWN2: Players - Mask of The Betrayer Cam...
-- NWN2: Players - Storm of Zehir (Spoilers...
-- NwN2: Mysteries of Westgate Adventure Pa...
-- NWN2: Modules
-- NWN2: Guilds and Registry
-- NWN2: Builders - NWN2 Toolset
-- NWN2: Builders - NWN2 Scripting
-- NWN2: Custom Content
-- NWN2: Dungeon Masters Realm
-- NWN2: Persistent Worlds & Multiplayer
-- NWN2: For the Mac
-- NWN2: Tools and Plugin Developers
-- NWN2: Technical Support (Self-Help)
Mass Effect Forums
-- Mass Effect 2 General Discussion (No ME1...
-- Mass Effect 1 General Discussion (No spo...
-- Mass Effect PC Version General Discussio...
-- Mass Effect Storyline and Strategy Discu...
-- Mass Effect for PC Technical Support (Se...
-- Mass Effect for Xbox 360 Technical Suppo...
Archives: Neverwinter Nights
-- Archives: For Everyone - NWN General Di...
-- Archives: NWN HotU General Discussion
-- Archives: NWN SoU General Discussion
-- Archives: Players - NWN Official Campaig...
-- Archives: Witch's Wake Discussion
-- Archives - Players - NWN Modules
-- Archives: Players - Ye Olde Tavern
-- Archives: DMs - Dungeon Master's Realm
-- Archives: Builders - NWN Toolset
-- Archives: Builders - NWN Scripting
-- Archives: Builders - NWN Custom Content
-- Archives: NWN Technical Support (Self-He...
Pre-Release NWN Archives
-- Archives - NWN Official Announcements
-- Archives - General Discussion
-- Archives - Ye Olde Tavern
-- Archives - Dungeon Master's Realm
-- Archives - Models and Model Viewer
-- Archives - Beta Toolset General
-- Archives - Beta Toolset Technical Issues
-- Archives - Beta Toolset Bug Reporting
Forums Archives
-- Archives - Off Topic
-- Archives - Baldur's Gate II Gameplay (Sp...
-- Archives: Baldur's Gate II: SoA and ToB ...
Archives: Star Wars: Knights of the Old Republic
-- Archives: PC/Mac Version (Spoilers Will ...
-- Archives: Storyline Discussion (Spoilers...
-- Archives: Xbox Version (Spoilers Will Be...
Jade Empire Archives
-- Archives - Jade Empire General Discussio...
NwN2 - Pre-Release Archives
-- NWN 2 Art and Graphics Engine
-- NWN 2 Single Player Campaign
-- NWN 2 General Discussion
-- NWN 2 Toolset and Custom Content
-- NWN 2 Gameplay and Rules
Search Forums |
Forums FAQ |
Forum Archives
NeverWinter Nights 2, Forgotten Realms and the Forgotten Realms logo, Dungeons & Dragons, D&D, and the Dungeons & Dragons logo, and Wizards of the Coast and its logo are trademarks of Wizards of the Coast, Inc., in the U.S.A. and other countries, and are used with permission. © 2004 Wizards. Software © 2004 Atari Interactive, Inc. All rights reserved. HASBRO and its logo are trademarks of Hasbro and are used with permission. Windows is either a registered trademark or trademark of Microsoft Corporation in the United States and/or other countries. Manufactured and marketed by Atari, Inc., New York, NY. All other trademarks are the property of their respective owners.
Powered by BioBoards Version 3.00.0 10.1.12.32
Web Site Help
Jobs | Website Terms of Use Agreement | Privacy Policy
Rules of Conduct | Copyright and Trademark Information