diff --git a/_module/are/adream2.are.json b/_module/are/adream2.are.json index 29c82f87..1dcccc61 100644 --- a/_module/are/adream2.are.json +++ b/_module/are/adream2.are.json @@ -3648,7 +3648,7 @@ }, "Version": { "type": "dword", - "value": 116 + "value": 118 }, "Width": { "type": "int", diff --git a/_module/itp/itempalcus.itp.json b/_module/itp/itempalcus.itp.json index f1718802..31c1344d 100644 --- a/_module/itp/itempalcus.itp.json +++ b/_module/itp/itempalcus.itp.json @@ -47756,6 +47756,17 @@ "value": "shifterhide" } }, + { + "__struct_id": 0, + "NAME": { + "type": "cexostring", + "value": "Skinning Knife" + }, + "RESREF": { + "type": "resref", + "value": "skinningblade" + } + }, { "__struct_id": 0, "NAME": { @@ -57720,6 +57731,17 @@ "value": "cnrgemchisel" } }, + { + "__struct_id": 0, + "NAME": { + "type": "cexostring", + "value": "Gem Crafter's Chisel" + }, + "RESREF": { + "type": "resref", + "value": "cnrgemchisel002" + } + }, { "__struct_id": 0, "NAME": { @@ -58930,6 +58952,17 @@ "value": "cnrshovel" } }, + { + "__struct_id": 0, + "NAME": { + "type": "cexostring", + "value": "Skinning Knife" + }, + "RESREF": { + "type": "resref", + "value": "cnrskinningblade" + } + }, { "__struct_id": 0, "NAME": { diff --git a/_module/jrl/module.jrl.json b/_module/jrl/module.jrl.json new file mode 100644 index 00000000..32a6f791 --- /dev/null +++ b/_module/jrl/module.jrl.json @@ -0,0 +1,161 @@ +{ + "__data_type": "JRL ", + "Categories": { + "type": "list", + "value": [ + { + "__struct_id": 0, + "Comment": { + "type": "cexostring", + "value": "" + }, + "EntryList": { + "type": "list", + "value": [ + { + "__struct_id": 0, + "End": { + "type": "word", + "value": 0 + }, + "ID": { + "type": "dword", + "value": 1 + }, + "Text": { + "type": "cexolocstring", + "value": { + "0": "3e D&D Experience Chart\n\nLvl XP Needed\n01 0\n02 1000\n03 3000\n04 6000\n05 10000\n06 15000\n07 21000\n08 28000\n09 36000\n10 45000\n11 55000\n12 66000\n13 78000\n14 91000\n15 105000\n16 120000\n17 136000\n18 153000\n19 171000\n20 190000\n21 210000\n22 231000\n23 253000\n24 276000\n25 300000\n26 325000\n27 351000\n28 378000\n29 406000\n30 435000\n31 465000\n32 496000\n33 528000\n34 561000\n35 595000\n36 630000\n37 666000\n38 703000\n39 741000\n40 780000" + } + } + } + ] + }, + "Name": { + "type": "cexolocstring", + "value": { + "0": "| D&D 3e XP Chart |" + } + }, + "Picture": { + "type": "word", + "value": 65535 + }, + "Priority": { + "type": "dword", + "value": 4 + }, + "Tag": { + "type": "cexostring", + "value": "JRNL_XPCHART" + }, + "XP": { + "type": "dword", + "value": 0 + } + }, + { + "__struct_id": 1, + "Comment": { + "type": "cexostring", + "value": "" + }, + "EntryList": { + "type": "list", + "value": [ + { + "__struct_id": 0, + "End": { + "type": "word", + "value": 0 + }, + "ID": { + "type": "dword", + "value": 1 + }, + "Text": { + "type": "cexolocstring", + "value": { + "0": "Level Adjustment Buy-off Table\n\nStarting LA / Level\n \n01 / 03\n02 / 06 09\n03 / 09 15 18\n04 / 12 21 27 30\n05 / 15 27 36\n06 / 18 33\n07 / 21 39\n08 / 24\n09 / 27\n10 / 30\n11 / 33\n12 / 36\n13 / 39\n\n(Buy-off dialog will be in the PRC menu when you qualify.)" + } + } + } + ] + }, + "Name": { + "type": "cexolocstring", + "value": { + "0": "| LA Buy-off Table |" + } + }, + "Picture": { + "type": "word", + "value": 65535 + }, + "Priority": { + "type": "dword", + "value": 4 + }, + "Tag": { + "type": "cexostring", + "value": "JRNL_LA_BUYOFF" + }, + "XP": { + "type": "dword", + "value": 0 + } + }, + { + "__struct_id": 2, + "Comment": { + "type": "cexostring", + "value": "" + }, + "EntryList": { + "type": "list", + "value": [ + { + "__struct_id": 0, + "End": { + "type": "word", + "value": 0 + }, + "ID": { + "type": "dword", + "value": 1 + }, + "Text": { + "type": "cexolocstring", + "value": { + "0": "Visit the PRC8 Discord for ruleset information, as well as other PW servers & dozens of single player PRC8 modules.\n\nhttps://discord.gg/FW9V9RKy5U" + } + } + } + ] + }, + "Name": { + "type": "cexolocstring", + "value": { + "0": "| PRC8 Discord |" + } + }, + "Picture": { + "type": "word", + "value": 65535 + }, + "Priority": { + "type": "dword", + "value": 4 + }, + "Tag": { + "type": "cexostring", + "value": "JRNL_PRC8" + }, + "XP": { + "type": "dword", + "value": 0 + } + } + ] + } +} diff --git a/_module/ncs/displ_onspawn.ncs b/_module/ncs/displ_onspawn.ncs index 7ec5ed6f..0ef8b72c 100644 Binary files a/_module/ncs/displ_onspawn.ncs and b/_module/ncs/displ_onspawn.ncs differ diff --git a/_module/ncs/hc_on_acq_item.ncs b/_module/ncs/hc_on_acq_item.ncs index abc98af6..8edacbda 100644 Binary files a/_module/ncs/hc_on_acq_item.ncs and b/_module/ncs/hc_on_acq_item.ncs differ diff --git a/_module/ncs/hcrh_setbonusxp.ncs b/_module/ncs/hcrh_setbonusxp.ncs index 8da25edf..dd82613d 100644 Binary files a/_module/ncs/hcrh_setbonusxp.ncs and b/_module/ncs/hcrh_setbonusxp.ncs differ diff --git a/_module/ncs/hcrh_setbrntorch.ncs b/_module/ncs/hcrh_setbrntorch.ncs index 2fc98c6b..24880d35 100644 Binary files a/_module/ncs/hcrh_setbrntorch.ncs and b/_module/ncs/hcrh_setbrntorch.ncs differ diff --git a/_module/ncs/hcrh_setdmresrv.ncs b/_module/ncs/hcrh_setdmresrv.ncs index d458cfb7..7950af50 100644 Binary files a/_module/ncs/hcrh_setdmresrv.ncs and b/_module/ncs/hcrh_setdmresrv.ncs differ diff --git a/_module/ncs/hcrh_setgivelvl.ncs b/_module/ncs/hcrh_setgivelvl.ncs index ea29c7eb..a26c956c 100644 Binary files a/_module/ncs/hcrh_setgivelvl.ncs and b/_module/ncs/hcrh_setgivelvl.ncs differ diff --git a/_module/ncs/hcrh_setlvlcost.ncs b/_module/ncs/hcrh_setlvlcost.ncs index 7ae725ec..20810542 100644 Binary files a/_module/ncs/hcrh_setlvlcost.ncs and b/_module/ncs/hcrh_setlvlcost.ncs differ diff --git a/_module/ncs/hcrh_setpktrack.ncs b/_module/ncs/hcrh_setpktrack.ncs index f45c35a7..aa0f6819 100644 Binary files a/_module/ncs/hcrh_setpktrack.ncs and b/_module/ncs/hcrh_setpktrack.ncs differ diff --git a/_module/ncs/hcrh_setrest.ncs b/_module/ncs/hcrh_setrest.ncs index 5aa35b69..53b01d3f 100644 Binary files a/_module/ncs/hcrh_setrest.ncs and b/_module/ncs/hcrh_setrest.ncs differ diff --git a/_module/ncs/hcrh_setrezchnce.ncs b/_module/ncs/hcrh_setrezchnce.ncs index 77f0c7e0..2604ed8d 100644 Binary files a/_module/ncs/hcrh_setrezchnce.ncs and b/_module/ncs/hcrh_setrezchnce.ncs differ diff --git a/_module/ncs/hcrh_setsumtime.ncs b/_module/ncs/hcrh_setsumtime.ncs index 8d24ccae..1313c925 100644 Binary files a/_module/ncs/hcrh_setsumtime.ncs and b/_module/ncs/hcrh_setsumtime.ncs differ diff --git a/_module/ncs/mod_onclenter.ncs b/_module/ncs/mod_onclenter.ncs index f8319808..17a05339 100644 Binary files a/_module/ncs/mod_onclenter.ncs and b/_module/ncs/mod_onclenter.ncs differ diff --git a/_module/ncs/ranzisnotfree.ncs b/_module/ncs/ranzisnotfree.ncs index 1d6c7e13..2c713f44 100644 Binary files a/_module/ncs/ranzisnotfree.ncs and b/_module/ncs/ranzisnotfree.ncs differ diff --git a/_module/nss/hc_on_acq_item.nss b/_module/nss/hc_on_acq_item.nss index 294a5b61..e3364ba2 100644 --- a/_module/nss/hc_on_acq_item.nss +++ b/_module/nss/hc_on_acq_item.nss @@ -9,12 +9,72 @@ void main() { - object oAcquired=GetModuleItemAcquired(); - object oPlayer=GetItemPossessor(oAcquired); + object oAcquired = GetModuleItemAcquired(); + object oPlayer = GetItemPossessor(oAcquired); + + int iSize = GetCreatureSize(oPlayer); - string sTag=GetTag(oAcquired); + string sTag = GetTag(oAcquired); + string sResref = GetResRef(oAcquired); - /* Tensors sword */ + if (sTag == "cnrGemChisel") + { + if (sResref == "cnrgemchisel" && iSize > CREATURE_SIZE_MEDIUM) + { + SendMessageToPC(oPlayer, "Large creature detected."); + DestroyObject (oAcquired); + CreateItemOnObject("cnrgemchisel002", oPlayer, 1); + return; + } + + if (sResref == "cnrgemchisel002" && iSize < CREATURE_SIZE_LARGE) + { + SendMessageToPC(oPlayer, "Non-large creature detected."); + DestroyObject (oAcquired); + CreateItemOnObject("cnrgemchisel", oPlayer, 1); + return; + } + } + + if (sTag == "cnrSkinningKnife") + { + if (sResref == "cnrskinningknife" && iSize > CREATURE_SIZE_MEDIUM) + { + SendMessageToPC(oPlayer, "Large creature detected."); + DestroyObject (oAcquired); + CreateItemOnObject("cnrskinningblade", oPlayer, 1); + return; + } + + if (sResref == "cnrskinningblade" && iSize < CREATURE_SIZE_LARGE) + { + SendMessageToPC(oPlayer, "Non-large creature detected."); + DestroyObject (oAcquired); + CreateItemOnObject("cnrskinningknife", oPlayer, 1); + return; + } + } + + if (sTag == "hc_skinning") + { + if (sResref == "skinningknife" && iSize > CREATURE_SIZE_MEDIUM) + { + SendMessageToPC(oPlayer, "Large creature detected."); + DestroyObject (oAcquired); + CreateItemOnObject("skinningblade", oPlayer, 1); + return; + } + + if (sResref == "skinningblade" && iSize < CREATURE_SIZE_LARGE) + { + SendMessageToPC(oPlayer, "Non-large creature detected."); + DestroyObject (oAcquired); + CreateItemOnObject("skinningknife", oPlayer, 1); + return; + } + } + + /* Tensors sword */ if (sTag == "NW_WSWMLS013") { SendMessageToPC (oPlayer, "The sword crumbles to dust in your hands.."); diff --git a/_module/nss/mod_onclenter.nss b/_module/nss/mod_onclenter.nss index d9d0c9df..45a98ca3 100644 --- a/_module/nss/mod_onclenter.nss +++ b/_module/nss/mod_onclenter.nss @@ -28,6 +28,10 @@ void main() object oPC = GetEnteringObject(); int bDM = GetIsDM(oPC); int bTeam = dev_IsTeamMember(oPC); + + AddJournalQuestEntry("JRNL_XPCHART", 1, oPC, FALSE, FALSE, FALSE); + AddJournalQuestEntry("JRNL_LA_BUYOFF", 1, oPC, FALSE, FALSE, FALSE); + AddJournalQuestEntry("JRNL_PRC8", 1, oPC, FALSE, FALSE, FALSE); if (!bDM && !bTeam && !cheat_Validate(oPC)) { diff --git a/_module/uti/cnrgemchisel002.uti.json b/_module/uti/cnrgemchisel002.uti.json new file mode 100644 index 00000000..7023f331 --- /dev/null +++ b/_module/uti/cnrgemchisel002.uti.json @@ -0,0 +1,101 @@ +{ + "__data_type": "UTI ", + "AddCost": { + "type": "dword", + "value": 30 + }, + "BaseItem": { + "type": "int", + "value": 0 + }, + "Charges": { + "type": "byte", + "value": 0 + }, + "Comment": { + "type": "cexostring", + "value": "" + }, + "Cost": { + "type": "dword", + "value": 50 + }, + "Cursed": { + "type": "byte", + "value": 0 + }, + "DescIdentified": { + "type": "cexolocstring", + "value": { + "0": "A gem cutter's cutting and chiseling tool." + } + }, + "Description": { + "type": "cexolocstring", + "value": { + "0": "A gem crafter's cutting and chiseling tool." + } + }, + "Identified": { + "type": "byte", + "value": 1 + }, + "LocalizedName": { + "type": "cexolocstring", + "value": { + "0": "Gem Crafter's Chisel" + } + }, + "ModelPart1": { + "type": "byte", + "value": 31 + }, + "ModelPart2": { + "type": "byte", + "value": 61 + }, + "ModelPart3": { + "type": "byte", + "value": 61 + }, + "PaletteID": { + "type": "byte", + "value": 4 + }, + "Plot": { + "type": "byte", + "value": 0 + }, + "PropertiesList": { + "type": "list", + "value": [] + }, + "StackSize": { + "type": "word", + "value": 1 + }, + "Stolen": { + "type": "byte", + "value": 0 + }, + "Tag": { + "type": "cexostring", + "value": "cnrGemChisel" + }, + "TemplateResRef": { + "type": "resref", + "value": "cnrgemchisel002" + }, + "xModelPart1": { + "type": "word", + "value": 31 + }, + "xModelPart2": { + "type": "word", + "value": 61 + }, + "xModelPart3": { + "type": "word", + "value": 61 + } +} diff --git a/_module/uti/cnrskinningblade.uti.json b/_module/uti/cnrskinningblade.uti.json new file mode 100644 index 00000000..c0a23e54 --- /dev/null +++ b/_module/uti/cnrskinningblade.uti.json @@ -0,0 +1,101 @@ +{ + "__data_type": "UTI ", + "AddCost": { + "type": "dword", + "value": 0 + }, + "BaseItem": { + "type": "int", + "value": 0 + }, + "Charges": { + "type": "byte", + "value": 0 + }, + "Comment": { + "type": "cexostring", + "value": "" + }, + "Cost": { + "type": "dword", + "value": 4 + }, + "Cursed": { + "type": "byte", + "value": 0 + }, + "DescIdentified": { + "type": "cexolocstring", + "value": { + "0": "More of a tool than a weapon, the skinning knife is a handy item to carry." + } + }, + "Description": { + "type": "cexolocstring", + "value": { + "0": "More of a tool than a weapon, the skinning knife is a handy item to carry." + } + }, + "Identified": { + "type": "byte", + "value": 1 + }, + "LocalizedName": { + "type": "cexolocstring", + "value": { + "0": "Skinning Knife" + } + }, + "ModelPart1": { + "type": "byte", + "value": 63 + }, + "ModelPart2": { + "type": "byte", + "value": 23 + }, + "ModelPart3": { + "type": "byte", + "value": 43 + }, + "PaletteID": { + "type": "byte", + "value": 4 + }, + "Plot": { + "type": "byte", + "value": 0 + }, + "PropertiesList": { + "type": "list", + "value": [] + }, + "StackSize": { + "type": "word", + "value": 1 + }, + "Stolen": { + "type": "byte", + "value": 1 + }, + "Tag": { + "type": "cexostring", + "value": "cnrSkinningKnife" + }, + "TemplateResRef": { + "type": "resref", + "value": "cnrskinningblade" + }, + "xModelPart1": { + "type": "word", + "value": 63 + }, + "xModelPart2": { + "type": "word", + "value": 23 + }, + "xModelPart3": { + "type": "word", + "value": 43 + } +} diff --git a/_module/uti/skinningblade.uti.json b/_module/uti/skinningblade.uti.json new file mode 100644 index 00000000..0ae635f8 --- /dev/null +++ b/_module/uti/skinningblade.uti.json @@ -0,0 +1,164 @@ +{ + "__data_type": "UTI ", + "AddCost": { + "type": "dword", + "value": 0 + }, + "BaseItem": { + "type": "int", + "value": 0 + }, + "Charges": { + "type": "byte", + "value": 0 + }, + "Comment": { + "type": "cexostring", + "value": "" + }, + "Cost": { + "type": "dword", + "value": 26 + }, + "Cursed": { + "type": "byte", + "value": 0 + }, + "DescIdentified": { + "type": "cexolocstring", + "value": { + "0": "This is a skinning knife. It is not very useful in combat but when used on a corpse can produce hide and meat. Rangers also use it to hunt." + } + }, + "Description": { + "type": "cexolocstring", + "value": { + "0": "" + } + }, + "Identified": { + "type": "byte", + "value": 1 + }, + "LocalizedName": { + "type": "cexolocstring", + "value": { + "0": "Skinning Knife" + } + }, + "ModelPart1": { + "type": "byte", + "value": 22 + }, + "ModelPart2": { + "type": "byte", + "value": 12 + }, + "ModelPart3": { + "type": "byte", + "value": 22 + }, + "PaletteID": { + "type": "byte", + "value": 0 + }, + "Plot": { + "type": "byte", + "value": 0 + }, + "PropertiesList": { + "type": "list", + "value": [ + { + "__struct_id": 0, + "ChanceAppear": { + "type": "byte", + "value": 100 + }, + "CostTable": { + "type": "byte", + "value": 20 + }, + "CostValue": { + "type": "word", + "value": 1 + }, + "Param1": { + "type": "byte", + "value": 255 + }, + "Param1Value": { + "type": "byte", + "value": 0 + }, + "PropertyName": { + "type": "word", + "value": 10 + }, + "Subtype": { + "type": "word", + "value": 0 + } + }, + { + "__struct_id": 0, + "ChanceAppear": { + "type": "byte", + "value": 100 + }, + "CostTable": { + "type": "byte", + "value": 3 + }, + "CostValue": { + "type": "word", + "value": 13 + }, + "Param1": { + "type": "byte", + "value": 255 + }, + "Param1Value": { + "type": "byte", + "value": 0 + }, + "PropertyName": { + "type": "word", + "value": 15 + }, + "Subtype": { + "type": "word", + "value": 329 + } + } + ] + }, + "StackSize": { + "type": "word", + "value": 1 + }, + "Stolen": { + "type": "byte", + "value": 0 + }, + "Tag": { + "type": "cexostring", + "value": "hc_skinning" + }, + "TemplateResRef": { + "type": "resref", + "value": "skinningblade" + }, + "xModelPart1": { + "type": "word", + "value": 22 + }, + "xModelPart2": { + "type": "word", + "value": 12 + }, + "xModelPart3": { + "type": "word", + "value": 22 + } +}