Updated for PRC8 v4.20

Updated for PRC8 v4.20
This commit is contained in:
Jaysyn904
2025-05-31 01:01:06 -04:00
parent fbe69c466d
commit 359b31c3c7
228 changed files with 859 additions and 66 deletions

View File

@@ -1420,7 +1420,7 @@
},
"Mod_OnNuiEvent": {
"type": "resref",
"value": ""
"value": "prc_onplayernui"
},
"Mod_OnPlrChat": {
"type": "resref",

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,100 @@
#include "nwnx_creature"
#include "inc_item_props"
#include "prc_class_const"
/*
Desert Wind: Scimitar, Light Mace, Spear, Light Pick, Falchion.
Diamond Mind: Katana, Rapier, Bastard Sword, Spear
Setting Sun: Short Sword, Staff, Unarmed Strike, Nunchaku
Shadow Hand: Short Sword, Dagger, Unarmed Strike, Sai
Stone Dragon: Unarmed Strike, Great Sword, Great Axe, Heavy Mace
Tiger Claw: Unarmed Strike, Great Axe, Kama, Kukri, Hand Axe
FEAT_SS_DF_WF_DW
FEAT_SS_DF_WF_DM
FEAT_SS_DF_WF_SS
FEAT_SS_DF_WF_SH
FEAT_SS_DF_WF_SD
FEAT_SS_DF_WF_TC
*/
void main()
{
object oCreature = OBJECT_SELF;
object oSkin = GetItemInSlot(INVENTORY_SLOT_CARMOUR, oCreature);
int bWarDomain = GetHasFeat(DOMAIN_WAR, oCreature) || GetHasFeat(FEAT_WAR_DOMAIN_POWER, oCreature);
int bSwordsage = GetLevelByClass(CLASS_TYPE_SWORDSAGE, oCreature);
if (!GetIsObjectValid(oSkin))
return;
int nLevel = GetHitDice(oCreature);
if(bSwordsage)
{
if (GetHasFeat(FEAT_SS_DF_WF_DW, oCreature)) //:: Desert Wind
{
NWNX_Creature_AddFeatByLevel(oCreature, FEAT_WEAPON_FOCUS_SCIMITAR, nLevel);
NWNX_Creature_AddFeatByLevel(oCreature, FEAT_WEAPON_FOCUS_LIGHT_MACE, nLevel);
NWNX_Creature_AddFeatByLevel(oCreature, FEAT_WEAPON_FOCUS_SPEAR, nLevel);
NWNX_Creature_AddFeatByLevel(oCreature, FEAT_WEAPON_FOCUS_LIGHT_PICK, nLevel);
NWNX_Creature_AddFeatByLevel(oCreature, FEAT_WEAPON_FOCUS_FALCHION, nLevel);
}
if (GetHasFeat(FEAT_SS_DF_WF_DM, oCreature)) //:: Diamond Mind
{
NWNX_Creature_AddFeatByLevel(oCreature, FEAT_WEAPON_FOCUS_KATANA, nLevel);
NWNX_Creature_AddFeatByLevel(oCreature, FEAT_WEAPON_FOCUS_RAPIER, nLevel);
NWNX_Creature_AddFeatByLevel(oCreature, FEAT_WEAPON_FOCUS_SPEAR, nLevel);
NWNX_Creature_AddFeatByLevel(oCreature, FEAT_WEAPON_FOCUS_BASTARD_SWORD, nLevel);
}
if (GetHasFeat(FEAT_SS_DF_WF_SS, oCreature)) //:: Setting Sun
{
NWNX_Creature_AddFeatByLevel(oCreature, FEAT_WEAPON_FOCUS_SHORT_SWORD, nLevel);
NWNX_Creature_AddFeatByLevel(oCreature, FEAT_WEAPON_FOCUS_STAFF, nLevel);
NWNX_Creature_AddFeatByLevel(oCreature, FEAT_WEAPON_FOCUS_UNARMED_STRIKE, nLevel);
NWNX_Creature_AddFeatByLevel(oCreature, FEAT_WEAPON_FOCUS_NUNCHAKU, nLevel);
}
if (GetHasFeat(FEAT_SS_DF_WF_SH, oCreature)) //:: Shadow Hand
{
NWNX_Creature_AddFeatByLevel(oCreature, FEAT_WEAPON_FOCUS_SHORT_SWORD, nLevel);
NWNX_Creature_AddFeatByLevel(oCreature, FEAT_WEAPON_FOCUS_DAGGER, nLevel);
NWNX_Creature_AddFeatByLevel(oCreature, FEAT_WEAPON_FOCUS_UNARMED_STRIKE, nLevel);
NWNX_Creature_AddFeatByLevel(oCreature, FEAT_WEAPON_FOCUS_SAI, nLevel);
}
if (GetHasFeat(FEAT_SS_DF_WF_SD, oCreature)) //:: Stone Dragon
{
NWNX_Creature_AddFeatByLevel(oCreature, FEAT_WEAPON_FOCUS_GREAT_SWORD, nLevel);
NWNX_Creature_AddFeatByLevel(oCreature, FEAT_WEAPON_FOCUS_GREAT_AXE, nLevel);
NWNX_Creature_AddFeatByLevel(oCreature, FEAT_WEAPON_FOCUS_UNARMED_STRIKE, nLevel);
NWNX_Creature_AddFeatByLevel(oCreature, FEAT_WEAPON_FOCUS_HEAVY_MACE, nLevel);
}
if (GetHasFeat(FEAT_SS_DF_WF_TC, oCreature)) //:: Tiger Claw
{
NWNX_Creature_AddFeatByLevel(oCreature, FEAT_WEAPON_FOCUS_GREAT_AXE, nLevel);
NWNX_Creature_AddFeatByLevel(oCreature, FEAT_WEAPON_FOCUS_KAMA, nLevel);
NWNX_Creature_AddFeatByLevel(oCreature, FEAT_WEAPON_FOCUS_UNARMED_STRIKE, nLevel);
NWNX_Creature_AddFeatByLevel(oCreature, FEAT_WEAPON_FOCUS_KUKRI, nLevel);
NWNX_Creature_AddFeatByLevel(oCreature, FEAT_WEAPON_FOCUS_HAND_AXE, nLevel);
}
}
itemproperty ipCheck = GetFirstItemProperty(oSkin);
while (GetIsItemPropertyValid(ipCheck))
{
if (GetItemPropertyType(ipCheck) == ITEM_PROPERTY_BONUS_FEAT)
{
int nIPFeat = GetItemPropertySubType(ipCheck);
int nMappedFeat = WF_IpropToFeat(nIPFeat);
if (nMappedFeat != -1)
{
NWNX_Creature_AddFeatByLevel(oCreature, nMappedFeat, nLevel);
SendMessageToPC(GetFirstPC(), "Weapon Focus feat applied via item property.");
}
}
ipCheck = GetNextItemProperty(oSkin);
}
}

View File

@@ -0,0 +1,693 @@
{
"__data_type": "UTC ",
"Appearance_Type": {
"type": "word",
"value": 146
},
"BodyBag": {
"type": "byte",
"value": 0
},
"Cha": {
"type": "byte",
"value": 13
},
"ChallengeRating": {
"type": "float",
"value": 4.0
},
"ClassList": {
"type": "list",
"value": [
{
"__struct_id": 2,
"Class": {
"type": "int",
"value": 19
},
"ClassLevel": {
"type": "short",
"value": 3
}
}
]
},
"Comment": {
"type": "cexostring",
"value": "Shadow: 03 HD\r\n\r\nMonster Manual I pg 221\r\n\r\n"
},
"Con": {
"type": "byte",
"value": 10
},
"Conversation": {
"type": "resref",
"value": "cv_charmed"
},
"CRAdjust": {
"type": "int",
"value": 0
},
"CurrentHitPoints": {
"type": "short",
"value": 36
},
"DecayTime": {
"type": "dword",
"value": 15000
},
"Deity": {
"type": "cexostring",
"value": ""
},
"Description": {
"type": "cexolocstring",
"value": {
"0": "This creature seems to be nothing but a patch of mobile gloom, more or less humanoid in shape.",
"id": 12688
}
},
"Dex": {
"type": "byte",
"value": 14
},
"Disarmable": {
"type": "byte",
"value": 0
},
"Equip_ItemList": {
"type": "list",
"value": [
{
"__struct_id": 16384,
"EquippedRes": {
"type": "resref",
"value": "shadowtouch001"
}
},
{
"__struct_id": 131072,
"EquippedRes": {
"type": "resref",
"value": "shadowhide001"
}
}
]
},
"FactionID": {
"type": "word",
"value": 1
},
"FeatList": {
"type": "list",
"value": [
{
"__struct_id": 1,
"Feat": {
"type": "word",
"value": 0
}
},
{
"__struct_id": 1,
"Feat": {
"type": "word",
"value": 228
}
},
{
"__struct_id": 1,
"Feat": {
"type": "word",
"value": 10
}
},
{
"__struct_id": 1,
"Feat": {
"type": "word",
"value": 4166
}
},
{
"__struct_id": 1,
"Feat": {
"type": "word",
"value": 752
}
},
{
"__struct_id": 1,
"Feat": {
"type": "word",
"value": 42
}
},
{
"__struct_id": 1,
"Feat": {
"type": "word",
"value": 289
}
}
]
},
"FirstName": {
"type": "cexolocstring",
"value": {
"0": "Shadow: 03 HD",
"id": 12689
}
},
"fortbonus": {
"type": "short",
"value": 0
},
"Gender": {
"type": "byte",
"value": 4
},
"GoodEvil": {
"type": "byte",
"value": 0
},
"HitPoints": {
"type": "short",
"value": 36
},
"Int": {
"type": "byte",
"value": 6
},
"Interruptable": {
"type": "byte",
"value": 1
},
"IsImmortal": {
"type": "byte",
"value": 0
},
"IsPC": {
"type": "byte",
"value": 0
},
"LastName": {
"type": "cexolocstring",
"value": {}
},
"LawfulChaotic": {
"type": "byte",
"value": 0
},
"Lootable": {
"type": "byte",
"value": 0
},
"MaxHitPoints": {
"type": "short",
"value": 36
},
"NaturalAC": {
"type": "byte",
"value": 0
},
"NoPermDeath": {
"type": "byte",
"value": 0
},
"PaletteID": {
"type": "byte",
"value": 30
},
"PerceptionRange": {
"type": "byte",
"value": 11
},
"Phenotype": {
"type": "int",
"value": 0
},
"Plot": {
"type": "byte",
"value": 0
},
"PortraitId": {
"type": "word",
"value": 283
},
"Race": {
"type": "byte",
"value": 24
},
"refbonus": {
"type": "short",
"value": 0
},
"ScriptAttacked": {
"type": "resref",
"value": "codi_attacked"
},
"ScriptDamaged": {
"type": "resref",
"value": "codi_ondamage"
},
"ScriptDeath": {
"type": "resref",
"value": "codi_ondeath"
},
"ScriptDialogue": {
"type": "resref",
"value": "codi_onconv"
},
"ScriptDisturbed": {
"type": "resref",
"value": "codi_ondisturb"
},
"ScriptEndRound": {
"type": "resref",
"value": "codi_endcombat"
},
"ScriptHeartbeat": {
"type": "resref",
"value": "codi_heartbeat"
},
"ScriptOnBlocked": {
"type": "resref",
"value": "codi_onblocked"
},
"ScriptOnNotice": {
"type": "resref",
"value": "codi_percept"
},
"ScriptRested": {
"type": "resref",
"value": "codi_rested"
},
"ScriptSpawn": {
"type": "resref",
"value": "codi_spawn"
},
"ScriptSpellAt": {
"type": "resref",
"value": "codi_spellcast"
},
"ScriptUserDefine": {
"type": "resref",
"value": "codi_userdef"
},
"SkillList": {
"type": "list",
"value": [
{
"__struct_id": 0,
"Rank": {
"type": "byte",
"value": 0
}
},
{
"__struct_id": 0,
"Rank": {
"type": "byte",
"value": 0
}
},
{
"__struct_id": 0,
"Rank": {
"type": "byte",
"value": 0
}
},
{
"__struct_id": 0,
"Rank": {
"type": "byte",
"value": 6
}
},
{
"__struct_id": 0,
"Rank": {
"type": "byte",
"value": 0
}
},
{
"__struct_id": 0,
"Rank": {
"type": "byte",
"value": 6
}
},
{
"__struct_id": 0,
"Rank": {
"type": "byte",
"value": 4
}
},
{
"__struct_id": 0,
"Rank": {
"type": "byte",
"value": 0
}
},
{
"__struct_id": 0,
"Rank": {
"type": "byte",
"value": 0
}
},
{
"__struct_id": 0,
"Rank": {
"type": "byte",
"value": 0
}
},
{
"__struct_id": 0,
"Rank": {
"type": "byte",
"value": 0
}
},
{
"__struct_id": 0,
"Rank": {
"type": "byte",
"value": 0
}
},
{
"__struct_id": 0,
"Rank": {
"type": "byte",
"value": 0
}
},
{
"__struct_id": 0,
"Rank": {
"type": "byte",
"value": 0
}
},
{
"__struct_id": 0,
"Rank": {
"type": "byte",
"value": 6
}
},
{
"__struct_id": 0,
"Rank": {
"type": "byte",
"value": 0
}
},
{
"__struct_id": 0,
"Rank": {
"type": "byte",
"value": 0
}
},
{
"__struct_id": 0,
"Rank": {
"type": "byte",
"value": 4
}
},
{
"__struct_id": 0,
"Rank": {
"type": "byte",
"value": 0
}
},
{
"__struct_id": 0,
"Rank": {
"type": "byte",
"value": 0
}
},
{
"__struct_id": 0,
"Rank": {
"type": "byte",
"value": 0
}
},
{
"__struct_id": 0,
"Rank": {
"type": "byte",
"value": 0
}
},
{
"__struct_id": 0,
"Rank": {
"type": "byte",
"value": 0
}
},
{
"__struct_id": 0,
"Rank": {
"type": "byte",
"value": 0
}
},
{
"__struct_id": 0,
"Rank": {
"type": "byte",
"value": 0
}
},
{
"__struct_id": 0,
"Rank": {
"type": "byte",
"value": 0
}
},
{
"__struct_id": 0,
"Rank": {
"type": "byte",
"value": 0
}
},
{
"__struct_id": 0,
"Rank": {
"type": "byte",
"value": 0
}
},
{
"__struct_id": 0,
"Rank": {
"type": "byte",
"value": 0
}
},
{
"__struct_id": 0,
"Rank": {
"type": "byte",
"value": 0
}
},
{
"__struct_id": 0,
"Rank": {
"type": "byte",
"value": 0
}
},
{
"__struct_id": 0,
"Rank": {
"type": "byte",
"value": 0
}
},
{
"__struct_id": 0,
"Rank": {
"type": "byte",
"value": 0
}
},
{
"__struct_id": 0,
"Rank": {
"type": "byte",
"value": 0
}
},
{
"__struct_id": 0,
"Rank": {
"type": "byte",
"value": 0
}
},
{
"__struct_id": 0,
"Rank": {
"type": "byte",
"value": 0
}
},
{
"__struct_id": 0,
"Rank": {
"type": "byte",
"value": 0
}
},
{
"__struct_id": 0,
"Rank": {
"type": "byte",
"value": 0
}
},
{
"__struct_id": 0,
"Rank": {
"type": "byte",
"value": 0
}
}
]
},
"SoundSetFile": {
"type": "word",
"value": 78
},
"SpecAbilityList": {
"type": "list",
"value": []
},
"StartingPackage": {
"type": "byte",
"value": 81
},
"Str": {
"type": "byte",
"value": 10
},
"Subrace": {
"type": "cexostring",
"value": "Undead (Incorporeal)"
},
"Tag": {
"type": "cexostring",
"value": "NW_SHADOW"
},
"Tail_New": {
"type": "dword",
"value": 0
},
"TemplateList": {
"type": "list",
"value": []
},
"TemplateResRef": {
"type": "resref",
"value": "nw_shadow"
},
"VarTable": {
"type": "list",
"value": [
{
"__struct_id": 0,
"Name": {
"type": "cexostring",
"value": "SET_NAME"
},
"Type": {
"type": "dword",
"value": 3
},
"Value": {
"type": "cexostring",
"value": "Shadow"
}
},
{
"__struct_id": 0,
"Name": {
"type": "cexostring",
"value": "X2_L_SPAWN_USE_STEALTH"
},
"Type": {
"type": "dword",
"value": 1
},
"Value": {
"type": "int",
"value": 1
}
},
{
"__struct_id": 0,
"Name": {
"type": "cexostring",
"value": "X2_L_IS_INCORPOREAL"
},
"Type": {
"type": "dword",
"value": 1
},
"Value": {
"type": "int",
"value": 1
}
},
{
"__struct_id": 0,
"Name": {
"type": "cexostring",
"value": "SPAWN_TYPE"
},
"Type": {
"type": "dword",
"value": 3
},
"Value": {
"type": "cexostring",
"value": "no_spn_ftr"
}
}
]
},
"WalkRate": {
"type": "int",
"value": 5
},
"willbonus": {
"type": "short",
"value": 0
},
"Wings_New": {
"type": "dword",
"value": 0
},
"Wis": {
"type": "byte",
"value": 12
}
}