Skip to content

Commit

Permalink
Merge pull request #2535 from KABoissonneault/fix/quest-create-foe
Browse files Browse the repository at this point in the history
Changed save data in Questing Foe to allow for custom foe ids
  • Loading branch information
KABoissonneault committed Feb 11, 2024
2 parents f7ab2e8 + d29b000 commit 0e56431
Showing 1 changed file with 44 additions and 5 deletions.
49 changes: 44 additions & 5 deletions Assets/Scripts/Game/Questing/Foe.cs
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ public MobileTypes FoeType

public override Genders Gender
{
get { return ((int)foeType < 128) ? Genders.Male : humanoidGender; }
get { return DaggerfallEntity.IsClassEnemyId((int)foeType) ? humanoidGender : Genders.Male; }
}

public int SpawnCount
Expand Down Expand Up @@ -314,11 +314,40 @@ public struct SaveData_v1
public ItemData_v1[] itemQueue;
}

[fsObject("v2", typeof(SaveData_v1))]
public struct SaveData_v2
{
public int spawnCount;
public int foeId; // allows for custom foes
public Genders humanoidGender;
public bool injuredTrigger;
public bool restrained;
public int killCount;
public string displayName;
public string typeName;
public List<SpellReference> spellQueue;
public ItemData_v1[] itemQueue;

public SaveData_v2(SaveData_v1 v1)
{
spawnCount = v1.spawnCount;
foeId = (int)v1.foeType;
humanoidGender = v1.humanoidGender;
injuredTrigger = v1.injuredTrigger;
restrained = v1.restrained;
killCount = v1.killCount;
displayName = v1.displayName;
typeName = v1.typeName;
spellQueue = v1.spellQueue;
itemQueue = v1.itemQueue;
}
}

public override object GetSaveData()
{
SaveData_v1 data = new SaveData_v1();
SaveData_v2 data = new SaveData_v2();
data.spawnCount = spawnCount;
data.foeType = foeType;
data.foeId = (int)foeType;
data.humanoidGender = humanoidGender;
data.injuredTrigger = injuredTrigger;
data.restrained = restrained;
Expand All @@ -337,9 +366,19 @@ public override void RestoreSaveData(object dataIn)
if (dataIn == null)
return;

SaveData_v1 data = (SaveData_v1)dataIn;
SaveData_v2 data;

if (dataIn is SaveData_v1)
{
data = new SaveData_v2((SaveData_v1) dataIn);
}
else
{
data = (SaveData_v2)dataIn;
}

spawnCount = data.spawnCount;
foeType = data.foeType;
foeType = (MobileTypes)data.foeId;
humanoidGender = data.humanoidGender;
injuredTrigger = data.injuredTrigger;
restrained = data.restrained;
Expand Down

0 comments on commit 0e56431

Please sign in to comment.