2025/09/05 Update

Fixed random hang at log on for single player.
Fixed class title function in Markshire Nomenclature script.
Fixed faction melee that ensued if player was killed by defender faction in town.
Updated most humanoids to use new class title function.
Full compile.
This commit is contained in:
Jaysyn904
2025-09-05 21:48:32 -04:00
parent 8b0ac05535
commit 7b3c31175e
24 changed files with 1833 additions and 203 deletions

View File

@@ -9840,7 +9840,7 @@
},
"Version": {
"type": "dword",
"value": 108
"value": 111
},
"Width": {
"type": "int",

View File

@@ -87,7 +87,7 @@
"Name": {
"type": "cexolocstring",
"value": {
"0": "Icy Plains Barracks"
"0": "The Icy Plains: Barracks"
}
},
"NoRest": {
@@ -1230,13 +1230,17 @@
}
]
},
"TileBrdrDisabled": {
"type": "byte",
"value": 0
},
"Tileset": {
"type": "resref",
"value": "tin01"
},
"Version": {
"type": "dword",
"value": 11
"value": 12
},
"Width": {
"type": "int",

View File

@@ -87,7 +87,7 @@
"Name": {
"type": "cexolocstring",
"value": {
"0": "Icy Plains Outpost"
"0": "The Icy Plains: Outpost"
}
},
"NoRest": {
@@ -1230,13 +1230,17 @@
}
]
},
"TileBrdrDisabled": {
"type": "byte",
"value": 0
},
"Tileset": {
"type": "resref",
"value": "tin01"
},
"Version": {
"type": "dword",
"value": 13
"value": 14
},
"Width": {
"type": "int",

View File

@@ -87,7 +87,7 @@
"Name": {
"type": "cexolocstring",
"value": {
"0": "Respawning"
"0": "| Respawning |"
}
},
"NoRest": {
@@ -337,7 +337,7 @@
},
"Version": {
"type": "dword",
"value": 28
"value": 33
},
"Width": {
"type": "int",

View File

@@ -37,7 +37,7 @@
"__struct_id": 2,
"FactionGlobal": {
"type": "word",
"value": 1
"value": 0
},
"FactionName": {
"type": "cexostring",
@@ -52,7 +52,7 @@
"__struct_id": 3,
"FactionGlobal": {
"type": "word",
"value": 1
"value": 0
},
"FactionName": {
"type": "cexostring",
@@ -995,7 +995,7 @@
},
"FactionRep": {
"type": "dword",
"value": 50
"value": 100
}
},
{
@@ -1280,7 +1280,7 @@
},
"FactionRep": {
"type": "dword",
"value": 50
"value": 100
}
},
{
@@ -1310,7 +1310,7 @@
},
"FactionRep": {
"type": "dword",
"value": 50
"value": 100
}
},
{
@@ -1595,7 +1595,7 @@
},
"FactionRep": {
"type": "dword",
"value": 50
"value": 100
}
},
{
@@ -3830,7 +3830,7 @@
},
"FactionRep": {
"type": "dword",
"value": 50
"value": 100
}
},
{

View File

@@ -624,7 +624,7 @@
},
"FactionID": {
"type": "word",
"value": 4
"value": 15
},
"FeatList": {
"type": "list",
@@ -699,7 +699,7 @@
},
"IsImmortal": {
"type": "byte",
"value": 0
"value": 1
},
"IsPC": {
"type": "byte",
@@ -739,7 +739,7 @@
},
"Plot": {
"type": "byte",
"value": 0
"value": 1
},
"PortraitId": {
"type": "word",
@@ -43146,7 +43146,7 @@
},
"XPosition": {
"type": "float",
"value": 77.206787109375
"value": 77.24542999267578
},
"YOrientation": {
"type": "float",
@@ -43154,11 +43154,11 @@
},
"YPosition": {
"type": "float",
"value": 102.9355850219727
"value": 102.8522262573242
},
"ZPosition": {
"type": "float",
"value": -0.5900029540061951
"value": -0.5899975299835205
}
},
{
@@ -81282,15 +81282,15 @@
},
"X": {
"type": "float",
"value": 79.86756896972656
"value": 79.08158111572266
},
"Y": {
"type": "float",
"value": 120.5093231201172
"value": 118.2999877929688
},
"Z": {
"type": "float",
"value": 9.5367431640625e-006
"value": -5.7220458984375e-006
}
},
{

View File

@@ -798,7 +798,7 @@
},
"XPosition": {
"type": "float",
"value": 13.00344657897949
"value": 13.19540405273438
},
"YOrientation": {
"type": "float",
@@ -806,11 +806,11 @@
},
"YPosition": {
"type": "float",
"value": 10.46471309661865
"value": 8.502401351928711
},
"ZPosition": {
"type": "float",
"value": 2.980232238769531e-008
"value": -5.7220458984375e-006
}
}
]

View File

@@ -956,11 +956,11 @@
},
"Mod_Entry_X": {
"type": "float",
"value": 10.0
"value": 9.0
},
"Mod_Entry_Y": {
"type": "float",
"value": 7.0
"value": 5.0
},
"Mod_Entry_Z": {
"type": "float",

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
_module/ncs/ms_name_inc.ncs Normal file

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

@@ -1,10 +1,24 @@
#include "prc_inc_racial"
#include "utl_i_sqluuid"
#include "utl_i_sqlocals"
#include "nw_i0_plot"
void GetKiller();
void Raise(object oPlayer)
void ClearAllFactionMembers(object oMember, object oPlayer)
{
// AssignCommand(oMember, SpeakString("here"));
AdjustReputation(oPlayer, oMember, 100);
SetLocalInt(oPlayer, "NW_G_Playerhasbeenbad", 10); // * Player bad
object oClear = GetFirstFactionMember(oMember, FALSE);
while (GetIsObjectValid(oClear) == TRUE)
{
ClearPersonalReputation(oPlayer, oClear);
oClear = GetNextFactionMember(oMember, FALSE);
}
}
/* void EN4_Raise(object oPlayer)
{
effect eVisual = EffectVisualEffect(VFX_IMP_RESTORATION);
@@ -37,6 +51,7 @@ void Raise(object oPlayer)
SignalEvent(oPlayer, EventSpellCastAt(OBJECT_SELF, SPELL_RESTORATION, FALSE));
ApplyEffectToObject(DURATION_TYPE_INSTANT, eVisual, oPlayer);
}
*/
void main()
{
@@ -82,7 +97,24 @@ if (SQLocalsUUID_GetInt(oPlayer,"PCHardcore") == 0 && SQLocalsUUID_GetInt(oPlaye
SetStandardFactionReputation(STANDARD_FACTION_DEFENDER, 80, oPlayer);
}
DelayCommand(2.0, PopUpDeathGUIPanel(oPlayer,TRUE, TRUE,0,"Death has taken you."));
//:: Clears bad rep with Neutral faction.
ClearAllFactionMembers(GetObjectByTag("en4_evilstarter"), oPlayer);
//:: Hopefully stops the melee in Hightop if a player respawns after attacking Defenders or Citizens.
object oGuard = GetObjectByTag("en4_cityguard4");
object oCitizen = GetObjectByTag("en4_wcitizen");
object oMerchant = GetObjectByTag("en4_merchant6");
AdjustFactionReputation(oGuard, oCitizen, 100);
AdjustFactionReputation(oCitizen, oGuard, 100);
AdjustFactionReputation(oMerchant, oCitizen, 100);
AdjustFactionReputation(oCitizen, oMerchant, 100);
AdjustFactionReputation(oGuard, oMerchant, 100);
AdjustFactionReputation(oMerchant, oGuard, 100);
DelayCommand(2.0, PopUpDeathGUIPanel(oPlayer,TRUE, TRUE,0,"You are dead."));
}
void GetKiller()

View File

@@ -1,29 +1,46 @@
void main()
{
object oPC = GetEnteringObject();
object oPC;
object oSpawnPoint;
string sDestTag;
if (GetIsPC(oPC))
{
string sDestTag = GetLocalString(oPC, "Respawn");
if (sDestTag == "")
{
sDestTag = "en3_respawning";
}
oPC = GetEnteringObject();
//SendMessageToPC(oPC,"en3_respawn2 >> entering.");
if (GetIsPC(oPC))
{
//SendMessageToPC(oPC,"en3_respawn2 >> PC found.");
sDestTag = GetLocalString(oPC,"Respawn");
if (sDestTag == "")
{
//SendMessageToPC(oPC,"en3_respawn2 >> Destination variable was unset, setting.");
SetLocalString(oPC, "Respawn", "EN4_Respawn");
}
//SendMessageToPC(oPC,"en3_respawn2 >> Destination tag is: "+sDestTag+".");
oSpawnPoint = GetWaypointByTag(sDestTag);
object oSpawnPoint = GetObjectByTag(sDestTag);
if (GetIsObjectValid(oSpawnPoint))
{
AssignCommand(oPC, JumpToLocation(GetLocation(oSpawnPoint)));
//SendMessageToPC(oPC,"en3_respawn2 >> Destination is valid, jumping.");
// Teleport the PC.
AssignCommand(oPC, ClearAllActions());
DelayCommand(0.3f,AssignCommand(oPC,JumpToObject(oSpawnPoint)));
}
else
{
// optional debug
FloatingTextStringOnCreature("Invalid spawn point: " + sDestTag, oPC);
}
}
}
}
/* void main()
{
object oPC;

View File

@@ -53,31 +53,31 @@ void main()
{
//SQLocalsUUID_SetInt(oPC,"OverallQuest",132);
SQLocals_SetInt(GetModule(),"ClientEnter",1);
SetLocalInt(GetModule(),"ClientEnter",1);
DelayCommand(1.0f,SQLocals_SetInt(GetModule(),"ClientEnter",0));
DelayCommand(1.0f,SetLocalInt(GetModule(),"ClientEnter",0));
if (SQLocals_GetInt(GetModule(),"ModuleStart") == 0)
if (GetLocalInt(GetModule(),"ModuleStart") == 0)
SetupModule();
if (SQLocals_GetInt(GetModule(),"DynamicMerchant") == 0)
if (GetLocalInt(GetModule(),"DynamicMerchant") == 0)
{
SetupDynamicMerchant();
SQLocals_SetInt(GetModule(),"DynamicMerchant",1);
SetLocalInt(GetModule(),"DynamicMerchant",1);
SQLocalsUUID_SetInt(oPC,"DynamicMerchant",1);
}
else
{
if (SQLocalsUUID_GetInt(oPC,"DynamicMerchant") == 0)
if (GetLocalInt(oPC,"DynamicMerchant") == 0)
{
AddToDynamicMerchant();
SQLocalsUUID_SetInt(oPC,"DynamicMerchant",1);
}
}
if (SQLocalsUUID_GetInt(oPC,"ModStart") == 0)
if (GetLocalInt(oPC,"ModStart") == 0)
{
SQLocalsUUID_SetInt(oPC,"ModStart",1);
SQLocalsUUID_SetInt(oPC,"Entering",1);
SetLocalInt(oPC,"ModStart",1);
SetLocalInt(oPC,"Entering",1);
if (iAnimal >= 1)
{
@@ -103,6 +103,7 @@ void main()
SendMessageToPC(oPC,"Starting New Campaign...");
SetLocalString(oPC,"Respawn","EN4_Respawn");
SendMessageToPC(oPC,"EN4_Respawn is set on the 'Respawn' string var.");
if (GetXP(oPC) == 0)
{
@@ -144,10 +145,10 @@ void main()
}
}
if (SQLocalsUUID_GetInt(GetModule(),"ModStarted") == 0)
if (GetLocalInt(GetModule(),"ModStarted") == 0)
{
SetupRandomNPCs();
SQLocalsUUID_SetInt(GetModule(),"ModStarted",1);
SetLocalInt(GetModule(),"ModStarted",1);
}
}
@@ -187,7 +188,7 @@ void SetupCharacter(object oPC)
oItem = CreateItemOnObject("Tunic",oPC);
AssignCommand(oPC, ActionEquipItem(oItem, INVENTORY_SLOT_CHEST));
DelayCommand(0.0f, ActionEquipItem(oItem, INVENTORY_SLOT_CHEST));
CheckSpecialRace(oPC);
@@ -789,14 +790,14 @@ if (iMod>0)
string GetRace(object oPC)
{
string sRace = GetSubRace(oPC);
string sRace = GetSubRace(oPC);
if (sRace == "")
{
sRace = GetStringByStrRef(StringToInt(Get2DAString("racialtypes", "Name", GetRacialType(oPC))));
}
if (sRace == "")
{
sRace = GetStringByStrRef(StringToInt(Get2DAString("racialtypes", "Name", GetRacialType(oPC))));
}
return sRace;
return sRace;
}
void SetupDynamicMerchant()
@@ -861,43 +862,43 @@ GetNegativeItem(oStore);
void AddToDynamicMerchant()
{
object oStore;
object oStore;
oStore = GetObjectByTag("NH1_Dynamic");
oStore = GetObjectByTag("NH1_Dynamic");
GetMagicItem(oStore,TRUE,TRUE,5);
GetMagicItem(oStore,TRUE,TRUE,5);
GetMagicItem(oStore,TRUE,TRUE,5);
GetMagicItem(oStore,TRUE,TRUE,5);
GetMagicItem(oStore,TRUE,TRUE,5);
GetMagicItem(oStore,TRUE,TRUE,5);
GetMagicItem(oStore,TRUE,TRUE,5);
GetMagicItem(oStore,TRUE,TRUE,5);
}
void SetupModule()
{
object oChest;
int iRandom;
int iAI;
object oChest;
int iRandom;
int iAI;
SQLocals_SetInt(GetModule(),"ModuleStart",1);
SQLocals_SetInt(GetModule(),MODULE_SWITCH_ENABLE_BEBILITH_RUIN_ARMOR,FALSE);
SetMaxHenchmen(4);
SetLocalInt(GetModule(),"ModuleStart",1);
SetLocalInt(GetModule(),MODULE_SWITCH_ENABLE_BEBILITH_RUIN_ARMOR,FALSE);
SetMaxHenchmen(4);
string sCampaign = "Endless Nights IV";
if (GetCampaignInt(sCampaign,"MP") == 1)
sCampaign = "MP_Endless Nights IV";
iAI = GetCampaignInt(sCampaign,"MP");
SQLocals_SetInt(GetModule(),"NoAI",iAI);
string sCampaign = "Endless Nights IV";
if (GetCampaignInt(sCampaign,"MP") == 1) sCampaign = "MP_Endless Nights IV";
oChest = GetObjectByTag("EN4_SpecChest" + IntToString(Random(2)+1));
SQLocals_SetInt(oChest,"Weapon",1);
iAI = GetCampaignInt(sCampaign,"MP");
SetLocalInt(GetModule(),"NoAI",iAI);
iRandom = Random(4);
if (iRandom==0)
{
iRandom = Random(4)+1;
SQLocals_SetInt(GetModule(),"HTC_SpecialMerchant",iRandom);
}
oChest = GetObjectByTag("EN4_SpecChest" + IntToString(Random(2)+1));
SetLocalInt(oChest,"Weapon",1);
WriteTimestampedLogEntry("*** Endless Night IV Loaded ***");
iRandom = Random(4);
if (iRandom==0)
{
iRandom = Random(4)+1;
SetLocalInt(GetModule(),"HTC_SpecialMerchant",iRandom);
}
WriteTimestampedLogEntry("*** Endless Night IV Loaded ***");
}
void CheckSpecialRace(object oPC)
@@ -1056,120 +1057,6 @@ void CheckSpecialRace(object oPC)
else if (iRace == RACIAL_TYPE_ZAKYA_RAKSHASA) {iDeaths = 3; iMonstrous = 0;}
// if (iRace == RACIAL_TYPE_SHADOWSWYFT) {iDeaths = 2;}
// else if (iRace == RACIAL_TYPE_NERAPHIM) {iDeaths = 1; iMonstrous = 1;}
// else if (iRace == RACIAL_TYPE_TROLL)
// {
// iDeaths = 3;
// iMonstrous = 1;
// }
// else if (iRace == RACIAL_TYPE_HALFOGRE)
// {
// iDeaths = 2;
// }
// else if (iRace == RACIAL_TYPE_AZER)
// {
// iDeaths = 3;
// iMonstrous = 1;
// }
// else if (iRace == RACIAL_TYPE_PIXIE)
// {
// iDeaths = 2;
// }
// else if (iRace == RACIAL_TYPE_ILLITHID)
// {
// iDeaths = 3;
// iMonstrous = 1;
// }
// else if (iRace == RACIAL_TYPE_RAKSHASA)
// {
// iDeaths = 3;
// iMonstrous = 1;
// }
// else if (iRace == RACIAL_TYPE_GITHZERAI)
// {
// iDeaths = 2;
// iMonstrous = 1;
// }
// else if (iRace == RACIAL_TYPE_GITHYANKI)
// {
// iDeaths = 2;
// iMonstrous = 1;
// }
// else if (iRace == RACIAL_TYPE_PURE_YUAN)
// {
// iDeaths = 3;
// iMonstrous = 1;
// }
// else if (iRace == RACIAL_TYPE_LIZARDFOLK)
// {
// iDeaths = 2;
// iMonstrous = 1;
// }
// else if (iRace == RACIAL_TYPE_MINOTAUR)
// {
// iDeaths = 3;
// iMonstrous = 1;
// }
// else if (iRace == RACIAL_TYPE_BUGBEAR)
// {
// iDeaths = 1;
// iMonstrous = 1;
// }
// else if (iRace == RACIAL_TYPE_OGRE)
// {
// iDeaths = 3;
// iMonstrous = 1;
// }
// else if (iRace == RACIAL_TYPE_TIEFLING)
// {
// iDeaths = 1;
// }
// else if (iRace == RACIAL_TYPE_TANARUKK)
// {
// iDeaths = 3;
// iMonstrous = 1;
// }
// else if (iRace == RACIAL_TYPE_FEYRI)
// {
// iDeaths = 3;
// }
// else if (iRace == RACIAL_TYPE_AASIMAR)
// {
// iDeaths = 1;
// }
// else if (iRace == RACIAL_TYPE_OROG)
// {
// iDeaths = 2;
// iMonstrous = 1;
// }
// else if (iRace == RACIAL_TYPE_DEEP_GNOME)
// {
// iDeaths = 2;
// }
// else if (iRace == RACIAL_TYPE_DROW_FEMALE)
// {
// iDeaths = 2;
// }
// else if (iRace == RACIAL_TYPE_WILD_DWARF)
// {
// iDeaths = 1;
// }
// else if (iRace == RACIAL_TYPE_URDINNIR)
// {
// iDeaths = 2;
// }
// else if (iRace == RACIAL_TYPE_DUERGAR)
// {
// iDeaths = 1;
// }
// else if (iRace == RACIAL_TYPE_ARC_DWARF)
// {
// iDeaths = 2;
// }
if (iMonstrous == 1)
{
object oGood;

File diff suppressed because it is too large Load Diff

View File

@@ -1,13 +1,89 @@
{
"__data_type": "UTC ",
"Appearance_Head": {
"type": "byte",
"value": 0
},
"Appearance_Type": {
"type": "word",
"value": 1103
},
"ArmorPart_RFoot": {
"type": "byte",
"value": 0
},
"BodyBag": {
"type": "byte",
"value": 0
},
"BodyPart_Belt": {
"type": "byte",
"value": 0
},
"BodyPart_LBicep": {
"type": "byte",
"value": 0
},
"BodyPart_LFArm": {
"type": "byte",
"value": 0
},
"BodyPart_LFoot": {
"type": "byte",
"value": 0
},
"BodyPart_LHand": {
"type": "byte",
"value": 0
},
"BodyPart_LShin": {
"type": "byte",
"value": 0
},
"BodyPart_LShoul": {
"type": "byte",
"value": 0
},
"BodyPart_LThigh": {
"type": "byte",
"value": 0
},
"BodyPart_Neck": {
"type": "byte",
"value": 0
},
"BodyPart_Pelvis": {
"type": "byte",
"value": 0
},
"BodyPart_RBicep": {
"type": "byte",
"value": 0
},
"BodyPart_RFArm": {
"type": "byte",
"value": 0
},
"BodyPart_RHand": {
"type": "byte",
"value": 0
},
"BodyPart_RShin": {
"type": "byte",
"value": 0
},
"BodyPart_RShoul": {
"type": "byte",
"value": 0
},
"BodyPart_RThigh": {
"type": "byte",
"value": 0
},
"BodyPart_Torso": {
"type": "byte",
"value": 0
},
"Cha": {
"type": "byte",
"value": 14
@@ -32,6 +108,22 @@
}
]
},
"Color_Hair": {
"type": "byte",
"value": 0
},
"Color_Skin": {
"type": "byte",
"value": 0
},
"Color_Tattoo1": {
"type": "byte",
"value": 0
},
"Color_Tattoo2": {
"type": "byte",
"value": 0
},
"Comment": {
"type": "cexostring",
"value": ""
@@ -657,5 +749,81 @@
"Wis": {
"type": "byte",
"value": 14
},
"xAppearance_Head": {
"type": "word",
"value": 0
},
"xArmorPart_RFoot": {
"type": "word",
"value": 0
},
"xBodyPart_Belt": {
"type": "word",
"value": 0
},
"xBodyPart_LBicep": {
"type": "word",
"value": 0
},
"xBodyPart_LFArm": {
"type": "word",
"value": 0
},
"xBodyPart_LFoot": {
"type": "word",
"value": 0
},
"xBodyPart_LHand": {
"type": "word",
"value": 0
},
"xBodyPart_LShin": {
"type": "word",
"value": 0
},
"xBodyPart_LShoul": {
"type": "word",
"value": 0
},
"xBodyPart_LThigh": {
"type": "word",
"value": 0
},
"xBodyPart_Neck": {
"type": "word",
"value": 0
},
"xBodyPart_Pelvis": {
"type": "word",
"value": 0
},
"xBodyPart_RBicep": {
"type": "word",
"value": 0
},
"xBodyPart_RFArm": {
"type": "word",
"value": 0
},
"xBodyPart_RHand": {
"type": "word",
"value": 0
},
"xBodyPart_RShin": {
"type": "word",
"value": 0
},
"xBodyPart_RShoul": {
"type": "word",
"value": 0
},
"xBodyPart_RThigh": {
"type": "word",
"value": 0
},
"xBodyPart_Torso": {
"type": "word",
"value": 0
}
}