Initial import of IC.Rebuild
This commit is contained in:
@@ -0,0 +1,38 @@
|
||||
using Lumina;
|
||||
using ICRebuild.Core;
|
||||
using System.Text.Json;
|
||||
|
||||
if(args.Length!=2) throw new ArgumentException("StatusAudit sqpack-directory output-json");
|
||||
using var game=new GameData(args[0]);
|
||||
var sheet=game.GetExcelSheet<Lumina.Excel.Sheets.Status>() ?? throw new InvalidDataException("Status sheet unavailable");
|
||||
var result=new List<object>();
|
||||
var root=game.GetFile<Lumina.Data.Files.Excel.ExcelListFile>("exd/root.exl");
|
||||
if(root!=null)
|
||||
foreach(var entry in root.ExdMap.Where(x=>x.Value==0x14A)) Console.WriteLine($"Native movement-check sheet 0x14A = {entry.Key}");
|
||||
foreach(var (group,id) in StatusCatalog.Entries())
|
||||
{
|
||||
var row=sheet.GetRowOrDefault(id);
|
||||
if(row==null) { Console.WriteLine($"MISSING {group} {id}"); result.Add(new{Group=group,Id=id,Missing=true}); continue; }
|
||||
var s=row.Value;
|
||||
Console.WriteLine($"{group} {id} {s.Name}: movement={s.LockMovement} control={s.LockControl} actions={s.LockActions}");
|
||||
result.Add(new {Group=group,Id=id,Name=s.Name.ToString(),Description=s.Description.ToString(),s.LockMovement,s.LockControl,s.LockActions,s.Flags,s.Flag2,s.ParamEffect,s.ParamModifier});
|
||||
}
|
||||
foreach(var s in sheet)
|
||||
{
|
||||
var name=s.Name.ToString();
|
||||
if((name=="Heavy" || name=="Leaden") && !StatusCatalog.SlowCandidates.Contains(s.RowId))
|
||||
{
|
||||
Console.WriteLine($"UNLISTED_SLOW {s.RowId} {name}: {s.Description}");
|
||||
result.Add(new{Group="UnlistedSlowNameSearch",Id=s.RowId,Name=name,Description=s.Description.ToString()});
|
||||
}
|
||||
if(!new[]{"charm","fear","hysteria","seduc","terror"}.Any(x=>name.Contains(x,StringComparison.OrdinalIgnoreCase))) continue;
|
||||
Console.WriteLine($"CONTROL {s.RowId} {name}: movement={s.LockMovement} control={s.LockControl} actions={s.LockActions}");
|
||||
result.Add(new {Group="ControlNameSearch",Id=s.RowId,Name=name,Description=s.Description.ToString(),s.LockMovement,s.LockControl,s.LockActions,s.Flags,s.Flag2,s.ParamEffect,s.ParamModifier});
|
||||
}
|
||||
var territories=game.GetExcelSheet<Lumina.Excel.Sheets.TerritoryType>();
|
||||
foreach(uint id in new uint[]{1108,1290})
|
||||
{
|
||||
var territory=territories?.GetRowOrDefault(id);
|
||||
if(territory.HasValue) Console.WriteLine($"TERRITORY {id}: use={territory.Value.TerritoryIntendedUse.RowId}, name={territory.Value.PlaceName.Value.Name}");
|
||||
}
|
||||
File.WriteAllText(args[1],JsonSerializer.Serialize(result,new JsonSerializerOptions{WriteIndented=true}));
|
||||
@@ -0,0 +1,4 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<PropertyGroup><OutputType>Exe</OutputType><TargetFramework>net10.0</TargetFramework><ImplicitUsings>enable</ImplicitUsings><Nullable>enable</Nullable></PropertyGroup>
|
||||
<ItemGroup><Reference Include="Lumina;Lumina.Excel"><HintPath>$(APPDATA)\XIVLauncher\addon\Hooks\dev\%(Identity).dll</HintPath></Reference><Compile Include="../../Core/StatusCatalog.cs" Link="StatusCatalog.cs" /></ItemGroup>
|
||||
</Project>
|
||||
Reference in New Issue
Block a user