Skip to content

Instantly share code, notes, and snippets.

@lmcintyre
Created October 10, 2023 03:16
Show Gist options
  • Save lmcintyre/5562bca311f0b16ea0280136b37d9d43 to your computer and use it in GitHub Desktop.
Save lmcintyre/5562bca311f0b16ea0280136b37d9d43 to your computer and use it in GitHub Desktop.
BattleLeve.cs
// ReSharper disable All
using Lumina.Text;
using Lumina.Data;
using Lumina.Data.Structs.Excel;
using Lumina.Excel;
using Lumina.Excel.GeneratedSheets;
namespace Lumina.Excel.GeneratedSheets2;
[Sheet( "BattleLeve", columnHash: 0x1ce99cea )]
public partial class BattleLeve : ExcelRow
{
public struct LeveDataStruct
{
public LazyRow< BNpcName > BNpcName { get; internal set; }
public uint ToDoNumberInvolved { get; internal set; }
public uint[] ToDoParam { get; internal set; }
public LazyRow< EventItem > BaseID { get; internal set; }
public LazyRow< EventItem > ItemsInvolved { get; internal set; }
public ushort EnemyLevel { get; internal set; }
public byte ItemsInvolvedQty { get; internal set; }
public byte ItemDropRate { get; internal set; }
public byte[] NumOfAppearance { get; internal set; }
}
public ushort[] Time { get; private set; }
public LeveDataStruct[] LeveData { get; private set; }
public byte[] ToDoSequence { get; private set; }
public LazyRow< BattleLeveRule > Rule { get; private set; }
public LazyRow< LeveString >[] Objectives { get; private set; }
public ushort[] Help { get; private set; }
public byte Variant { get; private set; }
public override void PopulateData( RowParser parser, GameData gameData, Language language )
{
base.PopulateData( parser, gameData, language );
Time = new ushort[8];
for (int i = 0; i < 8; i++)
Time[i] = parser.ReadOffset< ushort >( (ushort) ( 0 + i * 2 ) );
LeveData = new LeveDataStruct[8];
for (int i = 0; i < 8; i++)
{
LeveData[i].BNpcName = new LazyRow< BNpcName >( gameData, parser.ReadOffset< uint >( 16 ), language );
LeveData[i].ToDoNumberInvolved = parser.ReadOffset< uint >( 20 );
LeveData[i].ToDoParam = new uint[5];
for (int ToDoParamIndexer = 0; ToDoParamIndexer < 5; ToDoParamIndexer++)
LeveData[i].ToDoParam[ToDoParamIndexer] = parser.ReadOffset< uint >( (ushort) ( 24 + ToDoParamIndexer * 4 ) );
LeveData[i].BaseID = new LazyRow< EventItem >( gameData, parser.ReadOffset< int >( 44 ), language );
LeveData[i].ItemsInvolved = new LazyRow< EventItem >( gameData, parser.ReadOffset< int >( 48 ), language );
LeveData[i].EnemyLevel = parser.ReadOffset< ushort >( 52 );
LeveData[i].ItemsInvolvedQty = parser.ReadOffset< byte >( 54 );
LeveData[i].ItemDropRate = parser.ReadOffset< byte >( 55 );
LeveData[i].NumOfAppearance = new byte[8];
for (int NumOfAppearanceIndexer = 0; NumOfAppearanceIndexer < 8; NumOfAppearanceIndexer++)
LeveData[i].NumOfAppearance[NumOfAppearanceIndexer] = parser.ReadOffset< byte >( (ushort) ( 56 + NumOfAppearanceIndexer * 1 ) );
}
ToDoSequence = new byte[8];
for (int i = 0; i < 8; i++)
ToDoSequence[i] = parser.ReadOffset< byte >( (ushort) ( 400 + i * 1 ) );
Rule = new LazyRow< BattleLeveRule >( gameData, parser.ReadOffset< int >( 408 ), language );
Objectives = new LazyRow< LeveString >[3];
for (int i = 0; i < 3; i++)
Objectives[i] = new LazyRow< LeveString >( gameData, parser.ReadOffset< ushort >( (ushort) ( 412 + i * 2 ) ), language );
Help = new ushort[2];
for (int i = 0; i < 2; i++)
Help[i] = parser.ReadOffset< ushort >( (ushort) ( 418 + i * 2 ) );
Variant = parser.ReadOffset< byte >( 422 );
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment