Updated Release Archive. Fixed Mage-killer prereqs. Removed old LETO & ConvoCC related files. Added organized spell scroll store. Fixed Gloura spellbook. Various TLK fixes. Reorganized Repo. Removed invalid user folders. Added DocGen back in.
111 lines
3.6 KiB
Java
111 lines
3.6 KiB
Java
package prc.utils;
|
|
|
|
import prc.autodoc.Data_2da;
|
|
|
|
import java.util.TreeSet;
|
|
|
|
/**
|
|
* A class that parses spells.2da and lists used subradial feat ID ranges.
|
|
*
|
|
* @author Ornedan
|
|
*/
|
|
public class ListSubradials {
|
|
|
|
/**
|
|
* Main method
|
|
*
|
|
* @param args The program arguments
|
|
*/
|
|
public static void main(String[] args) {
|
|
if (args.length == 0) readMe();
|
|
String pathtospells2da = null;
|
|
|
|
// parse args
|
|
for (String param : args) {//[--help] | pathtospells2da
|
|
// Parameter parseage
|
|
if (param.startsWith("-")) {
|
|
if (param.equals("--help")) readMe();
|
|
else {
|
|
for (char c : param.substring(1).toCharArray()) {
|
|
switch (c) {
|
|
default:
|
|
System.out.println("Unknown parameter: " + c);
|
|
readMe();
|
|
}
|
|
}
|
|
}
|
|
} else {
|
|
// It's a pathname
|
|
if (pathtospells2da == null)
|
|
pathtospells2da = param;
|
|
}
|
|
}
|
|
|
|
// Load the 2da to memory
|
|
Data_2da feats = Data_2da.load2da(pathtospells2da);
|
|
TreeSet<Integer> subrads = new TreeSet<Integer>();
|
|
String entry;
|
|
int subnum;
|
|
// Parse through the 2da, looking for FeatID references that contain a subradial ID
|
|
for (int i = 0; i < feats.getEntryCount(); i++) {
|
|
entry = feats.getEntry("FeatID", i);
|
|
// Skip blanks
|
|
if (entry.equals("****")) continue;
|
|
try {
|
|
subnum = Integer.parseInt(entry);
|
|
} catch (NumberFormatException e) {
|
|
System.out.println("Corrupt value in FeatID on row " + i + ": " + entry);
|
|
continue;
|
|
}
|
|
// Skip non-subradial FeatIDs
|
|
if (subnum < 0x10000) continue;
|
|
subnum = subnum >>> 16;
|
|
|
|
subrads.add(subnum);
|
|
}
|
|
|
|
// Print the results
|
|
System.out.println("Subradial IDs used:");
|
|
if (subrads.isEmpty())
|
|
System.out.println("None");
|
|
else {
|
|
Integer prev = null;
|
|
for (Integer subrad : subrads) {
|
|
// Detect if a new range is starting
|
|
if (prev == null || // Special case - just starting
|
|
subrad != (prev + 1) // There's a break in the series
|
|
) {
|
|
// Print the end of previous range
|
|
if (prev != null)
|
|
System.out.println(prev);
|
|
|
|
// Print the start of the new range
|
|
System.out.print(subrad + " - ");
|
|
}
|
|
|
|
// Update prev
|
|
prev = subrad;
|
|
}
|
|
|
|
// Print the end of the last range
|
|
System.out.println(prev);
|
|
}
|
|
}
|
|
|
|
private static void readMe() {
|
|
// 0 1 2 3 4 5 6 7 8
|
|
// 12345678901234567890123456789012345678901234567890123456789012345678901234567890
|
|
System.out.println("Usage:\n" +
|
|
" [--help] | pathtospells2da\n" +
|
|
"\n" +
|
|
" pathtospells2da path of the spells.2da to check\n" +
|
|
"\n" +
|
|
" --help prints this text\n" +
|
|
"\n" +
|
|
"\n" +
|
|
"Lists used subradial ID ranges in the FeatID column of the given spells.2da\n"
|
|
);
|
|
System.exit(0);
|
|
}
|
|
}
|