2025/07/21 Update

Updated PEPS AI.
Full compile.
This commit is contained in:
Jaysyn904
2025-07-21 09:41:55 -04:00
parent 0e9e2c6950
commit ca8d5eba41
282 changed files with 920 additions and 646 deletions

View File

@@ -121,9 +121,8 @@ void ai_SetAIRules()
json jRules = ai_GetCampaignDbJson("rules");
if(JsonGetType(JsonObjectGet(jRules, AI_RULE_MORAL_CHECKS)) == JSON_TYPE_NULL)
{
jRules = JsonObject();
// Variable name set to a creatures full name to set debugging on.
jRules = JsonObjectSet(jRules, AI_RULE_DEBUG_CREATURE, JsonString(""));
jRules = JsonObjectSet(JsonObject(), AI_RULE_DEBUG_CREATURE, JsonString(""));
// Moral checks on or off.
SetLocalInt(oModule, AI_RULE_MORAL_CHECKS, AI_MORAL_CHECKS);
jRules = JsonObjectSet(jRules, AI_RULE_MORAL_CHECKS, JsonInt(AI_MORAL_CHECKS));
@@ -702,28 +701,48 @@ void ai_CheckAssociateDataAndInitialize(object oPlayer, string sAssociateType)
string ai_GetAssociateType(object oPlayer, object oAssociate)
{
if(GetIsPC(oAssociate)) return "pc";
int nIndex = 1;
string sAITag = GetLocalString(oAssociate, AI_TAG);
object oCreature;
if(sAITag == "")
{
int nAssociateType = GetAssociateType(oAssociate);
if(nAssociateType == ASSOCIATE_TYPE_ANIMALCOMPANION) sAITag = "companion";
else if(nAssociateType == ASSOCIATE_TYPE_FAMILIAR) sAITag = "familiar";
else if(nAssociateType == ASSOCIATE_TYPE_SUMMONED) sAITag = "summons";
else if(nAssociateType == ASSOCIATE_TYPE_DOMINATED) sAITag = "dominated";
else if(nAssociateType == ASSOCIATE_TYPE_HENCHMAN) sAITag = GetTag(oAssociate);
string sCurrentAITag;
// Check for duplicate tags and change.
int nIndex;
object oCreature;
for(nIndex = 1; nIndex <= AI_MAX_HENCHMAN; nIndex++)
if(nAssociateType == ASSOCIATE_TYPE_HENCHMAN)
{
sAITag = GetTag(oAssociate);
oCreature = GetAssociate(ASSOCIATE_TYPE_HENCHMAN, oPlayer, nIndex);
if(oAssociate != oCreature && sAITag == GetTag(oCreature)) sAITag += IntToString(Random(1000));
// Check for duplicate tags and change.
while(nIndex <= AI_MAX_HENCHMAN && oCreature != OBJECT_INVALID)
{
if(oAssociate != oCreature && sAITag == GetTag(oCreature))
{
sAITag += IntToString(Random(1000));
break;
}
oCreature = GetAssociate(ASSOCIATE_TYPE_HENCHMAN, oPlayer, ++nIndex);
}
}
for(nIndex = 2; nIndex < 6; nIndex++)
else if(nAssociateType == ASSOCIATE_TYPE_SUMMONED)
{
oCreature = GetAssociate(nIndex, oPlayer, 1);
if(oAssociate != oCreature && sAITag == GetTag(oCreature)) sAITag += IntToString(Random(1000));
int nCounter;
sAITag = GetTag(oAssociate);
oCreature = GetAssociate(ASSOCIATE_TYPE_SUMMONED, oPlayer, nIndex);
while(nIndex <= 10 && oCreature != OBJECT_INVALID)
{
if(oAssociate != oCreature && sAITag == GetTag(oCreature))
{
nCounter++;
sAITag += IntToString(nCounter);
nIndex = 0;
}
oCreature = GetAssociate(ASSOCIATE_TYPE_SUMMONED, oPlayer, ++nIndex);
}
}
else
{
if(nAssociateType == ASSOCIATE_TYPE_ANIMALCOMPANION) sAITag = "companion";
else if(nAssociateType == ASSOCIATE_TYPE_FAMILIAR) sAITag = "familiar";
else if(nAssociateType == ASSOCIATE_TYPE_DOMINATED) sAITag = "dominated";
}
SetLocalString(oAssociate, AI_TAG, sAITag);
}
@@ -773,7 +792,7 @@ float ai_GetAssociateDbFloat(object oPlayer, string sAssociatetype, string sData
}
void ai_SetAssociateDbJson(object oPlayer, string sAssociateType, string sDataField, json jData, string sTable = AI_TABLE)
{
//SendMessageToPC(oPlayer, "0i_main, 629, Set DbJson - sAssociateType: " + sAssociateType + " sDataField: " + sDataField + " jData: " + JsonDump(jData));
//SendMessageToPC(oPlayer, "0i_main, 777, Set DbJson - sAssociateType: " + sAssociateType + " sDataField: " + sDataField + " jData: " + JsonDump(jData));
string sQuery = "UPDATE " + sTable + " SET " + sDataField +
" = @data WHERE name = @name;";
sqlquery sql = SqlPrepareQueryObject(oPlayer, sQuery);
@@ -783,7 +802,7 @@ void ai_SetAssociateDbJson(object oPlayer, string sAssociateType, string sDataFi
}
json ai_GetAssociateDbJson(object oPlayer, string sAssociateType, string sDataField, string sTable = AI_TABLE)
{
//SendMessageToPC(oPlayer, "0i_main, 638, Get DbJson - sAssociateType: " + sAssociateType + " sDataField: " + sDataField);
//SendMessageToPC(oPlayer, "0i_main, 787, Get DbJson - sAssociateType: " + sAssociateType + " sDataField: " + sDataField);
string sQuery = "SELECT " + sDataField + " FROM " + sTable + " WHERE name = @name;";
sqlquery sql = SqlPrepareQueryObject(oPlayer, sQuery);
SqlBindString (sql, "@name", sAssociateType);
@@ -1082,7 +1101,7 @@ void ai_CheckAssociateData(object oPlayer, object oAssociate, string sAssociateT
// These are pulled straight from the database.
// ********** Locations **********
json jLocations = ai_GetAssociateDbJson(oPlayer, sAssociateType, "locations");
if(JsonGetType(JsonObjectGet(jLocations, AI_WIDGET_NUI)) == JSON_TYPE_NULL)
if(JsonGetType(JsonObjectGet(jLocations, sAssociateType + AI_WIDGET_NUI)) == JSON_TYPE_NULL)
{
ai_SetupLocations(oPlayer, oAssociate, sAssociateType);
}