Clear out experimental .35 files
Clear out experimental .35 files
This commit is contained in:
@@ -1,151 +0,0 @@
|
||||
//Cohort HB script
|
||||
|
||||
#include "prc_alterations"
|
||||
#include "prc_inc_leadersh"
|
||||
void main()
|
||||
{
|
||||
object oCohort = OBJECT_SELF;
|
||||
object oPC = GetMaster(oCohort);
|
||||
object oMaster = GetLocalObject(oCohort, "MasterObject");
|
||||
if(!GetIsObjectValid(oPC) && GetIsObjectValid(oMaster))
|
||||
{
|
||||
//must have become disconnected from master
|
||||
//re-add it as a cohort, but dont re-setup it
|
||||
AddCohortToPlayerByObject(oCohort, oMaster, FALSE);
|
||||
//dont continue this script, allow next HB to kick in instead
|
||||
return;
|
||||
}
|
||||
else if(!GetIsObjectValid(oPC) && !GetIsObjectValid(oMaster))
|
||||
{
|
||||
//master no longer exists
|
||||
RemoveCohortFromPlayer(oCohort, oPC);
|
||||
return;
|
||||
}
|
||||
//if it doesnt have a tag, abort
|
||||
if(GetTag(OBJECT_SELF) == "")
|
||||
return;
|
||||
|
||||
//cohort XP gain
|
||||
//get the amount the PC has gained
|
||||
int XPGained = GetXP(oPC)-GetLocalInt(OBJECT_SELF, "MastersXP");
|
||||
//correct for simple LA XP penalty
|
||||
if(GetPRCSwitch(PRC_XP_USE_SIMPLE_LA))
|
||||
{
|
||||
int iPCLvl = GetHitDice(oPC);
|
||||
int nRace = GetRacialType(oPC);
|
||||
int iLvlAdj = StringToInt(Get2DACache("ECL", "LA", nRace));
|
||||
if(GetPRCSwitch(PRC_XP_INCLUDE_RACIAL_HIT_DIE_IN_LA))
|
||||
iLvlAdj += StringToInt(Get2DACache("ECL", "RaceHD", nRace));
|
||||
float fRealXPToLevel = IntToFloat(GetXPForLevel(iPCLvl+1));
|
||||
float fECLXPToLevel = IntToFloat(GetXPForLevel(iPCLvl+1+iLvlAdj));
|
||||
float fXPRatio = fECLXPToLevel/fRealXPToLevel;
|
||||
XPGained = FloatToInt(IntToFloat(XPGained)*fXPRatio);
|
||||
}
|
||||
//store the amount the PC now has for the next HB
|
||||
SetLocalInt(OBJECT_SELF, "MastersXP", GetXP(oPC));
|
||||
//work out proportion based on relative ECLs
|
||||
int nPCECL = GetECL(oPC);
|
||||
int nCohortECL = GetECL(oCohort);
|
||||
int nCohortLag = GetLocalInt(oCohort, "CohortLevelLag");
|
||||
int nCohortMaxHD = nPCECL-nCohortLag-StringToInt(Get2DACache("ECL", "LA", GetRacialType(oCohort)));
|
||||
if(GetPRCSwitch(PRC_XP_INCLUDE_RACIAL_HIT_DIE_IN_LA))
|
||||
nCohortMaxHD -= StringToInt(Get2DACache("ECL", "RaceHD", GetRacialType(oCohort)));
|
||||
float ECLRatio = IntToFloat(nPCECL)/IntToFloat(nCohortECL);
|
||||
//get the amount to gain
|
||||
int nCohortXPGain = FloatToInt(IntToFloat(XPGained)*ECLRatio);
|
||||
//get the current amount
|
||||
int nCohortXP = GetXP(oCohort);
|
||||
//work out the new amount
|
||||
int nCohortNewXP = nCohortXP+nCohortXPGain;
|
||||
//get the cap based on PC level and cohort LA
|
||||
int nCohortXPCap = ((nCohortMaxHD)*(nCohortMaxHD+1)*500)-1;
|
||||
//this is how much XP the next levelup will be at
|
||||
int nCohortXPLevel = nCohortECL*(nCohortECL+1)*500;
|
||||
//DoDebug("XPGained = "+IntToString(XPGained));
|
||||
//DoDebug("nPCECL = "+IntToString(nPCECL));
|
||||
//DoDebug("nCohortECL = "+IntToString(nCohortECL));
|
||||
//DoDebug("nCohortXPGain = "+IntToString(nCohortXPGain));
|
||||
//DoDebug("nCohortXP = "+IntToString(nCohortXP));
|
||||
//DoDebug("nCohortNewXP = "+IntToString(nCohortNewXP));
|
||||
//DoDebug("nCohortXPCap = "+IntToString(nCohortXPCap));
|
||||
//DoDebug("nCohortXPLevel = "+IntToString(nCohortXPLevel));
|
||||
//apply the cap
|
||||
if(nCohortNewXP > nCohortXPCap)
|
||||
nCohortNewXP = nCohortXPCap;
|
||||
//give the XP
|
||||
SetXP(oCohort, nCohortNewXP);
|
||||
//handle levelup
|
||||
if(nCohortNewXP >= nCohortXPLevel)
|
||||
{
|
||||
//standard
|
||||
if(GetResRef(oCohort) != "")
|
||||
{
|
||||
LevelUpHenchman(oCohort, CLASS_TYPE_INVALID, TRUE);
|
||||
}
|
||||
else
|
||||
{
|
||||
//custom
|
||||
//resummon it but dont decrease XP as much
|
||||
int nCohortID = GetLocalInt(oCohort, "CohortID");
|
||||
|
||||
//Call creation of new cohort
|
||||
object oNewCohort = AddCohortToPlayer(nCohortID, oPC);
|
||||
object oTest;
|
||||
//copy its equipment & inventory
|
||||
// object oTest = GetFirstItemInInventory(oCohort);
|
||||
// while(GetIsObjectValid(oTest))
|
||||
// {
|
||||
// if(!GetLocalInt(oTest, "CohortCopied"))
|
||||
// object oNewTest = CopyItem(oTest, oNewCohort, TRUE);
|
||||
// SetLocalInt(oTest, "CohortCopied", TRUE);
|
||||
// DestroyObject(oTest, 0.01);
|
||||
// oTest = GetNextItemInInventory(oCohort);
|
||||
//}
|
||||
|
||||
//Delete new cohorts items (todo: prevent having them added in first place)
|
||||
object currItem = GetFirstItemInInventory(oNewCohort);
|
||||
while(GetIsObjectValid(currItem)){
|
||||
DestroyObject(currItem, 0.01);
|
||||
currItem = GetNextItemInInventory(oNewCohort);
|
||||
}
|
||||
|
||||
//Copy Inventory Items
|
||||
currItem = GetFirstItemInInventory(oCohort);
|
||||
while(GetIsObjectValid(currItem)){
|
||||
CopyItem(currItem,oNewCohort,TRUE);
|
||||
DestroyObject(currItem, 0.01);
|
||||
currItem = GetNextItemInInventory(oCohort);
|
||||
}
|
||||
|
||||
//Copy Equiped items (todo: fix equipping)
|
||||
int nSlot;
|
||||
for(nSlot = 0;nSlot<14;nSlot++)
|
||||
{
|
||||
oTest = GetItemInSlot(nSlot, OBJECT_SELF);
|
||||
object oTest2 = CopyItem(oTest, oNewCohort, TRUE);
|
||||
//currently isn't equiping it
|
||||
AssignCommand(oNewCohort, ClearAllActions());
|
||||
AssignCommand(oNewCohort, ActionEquipItem(oTest2, nSlot));
|
||||
DestroyObject(oTest, 0.01);
|
||||
}
|
||||
|
||||
//destroy old cohort
|
||||
SetIsDestroyable(TRUE, FALSE, FALSE);
|
||||
DestroyObject(OBJECT_SELF, 0.1);
|
||||
}
|
||||
}/*
|
||||
|
||||
//and now for some intelligence to the AI
|
||||
//if you have a familiar, summon it
|
||||
if(GetHasFeat(FEAT_SUMMON_FAMILIAR, oCohort)
|
||||
//&& !GetIsObjectValid(GetAssociate(ASSOCIATE_TYPE_FAMILIAR, oCohort))
|
||||
)
|
||||
ActionUseFeat(FEAT_SUMMON_FAMILIAR, oCohort);
|
||||
//SummonFamiliar(oCohort);
|
||||
//if you have an animal companion, summon it
|
||||
if(GetHasFeat(FEAT_ANIMAL_COMPANION, oCohort)
|
||||
//&& !GetIsObjectValid(GetAssociate(ASSOCIATE_TYPE_ANIMALCOMPANION, oCohort))
|
||||
)
|
||||
ActionUseFeat(FEAT_ANIMAL_COMPANION, oCohort);
|
||||
//SummonAnimalCompanion(oCohort);*/
|
||||
}
|
Reference in New Issue
Block a user