Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /* global ngapp, xelib, registerPatcher */
- let knownDeathItemsAnimals, knownDeathItemsMonsters;
- let allowedFactions = ['BearFaction', 'ChickenFaction', 'CreatureFaction', 'DogFaction', 'FarmAnimalsFaction', 'GoatFaction', 'HareFaction', 'HorkerFaction', 'MammothFaction', 'PredatorFaction', 'PreyFaction', 'SabreCatFaction', 'SkeeverFaction', 'WolfFaction'];
- let forbiddenFactions = ['DaedraFaction', 'DLC1UndeadGuardianFaction', 'DragonPriestFaction', 'DraugrFaction', 'DremoraFaction', 'DwarvenAutomatonFaction', 'FalmerFaction', 'GiantFaction', 'HagravenFaction', 'IceWraithFaction', 'SkeletonFaction', 'VampireFaction', 'WispFaction'];
- let loadKnownDeathItemsAnimals = function() {
- let elements = xelib.GetElements(0, 'Hunterborn.esp\\FLST\\_DS_FL_DeathItems\\FormIDs');
- knownDeathItemsAnimals = elements.map(element => xelib.GetValue(element));
- };
- let loadKnownDeathItemsMonsters = function() {
- let elements = xelib.GetElements(0, 'Hunterborn.esp\\FLST\\_DS_FL_DeathItems_Monsters\\FormIDs');
- knownDeathItemsMonsters = elements.map(element => xelib.GetValue(element));
- };
- let hasFaction = function(rec, factions) {
- if (xelib.GetValue(rec, 'Factions') == '') return;
- let elements = xelib.GetElements(rec, 'Factions\\Faction');
- return elements.map(element.includes(factions));
- };
- let isCreature = function(rec) {
- let deathItem = xelib.GetValue(rec, 'INAM');
- return (hasFaction(rec, allowedFactions) &&
- !hasFaction(rec, forbiddenFactions)) &&
- !(knownDeathItemsAnimals.includes(deathItem) ||
- knownDeathItemsMonsters.includes(deathItem)) &&
- xelib.GetValue(rec, 'INAM') != '';
- //voicetype
- };
- let buildDeathItem = function(deathItems, rec) {
- let name = xelib.Name(rec);
- let deathItem = xelib.GetValue(rec, 'INAM');
- if (!name || !isCreature(rec)) return;
- if (!deathItems.hasOwnProperty(deathItem))
- deathItems[deathItem] = { npcs: [] };
- deathItems[deathItem].npcs.push({
- name: name,
- path: xelib.Path(rec),
- animalType: 'Skip'
- });
- };
- let settingsController = function($scope, referenceService, progressService, errorService) {
- let patcherSettings = $scope.settings.hunterbornCreaturePatcher;
- let GetCreatures = function() {
- loadKnownDeathItemsMonsters();
- loadKnownDeathItemsAnimals();
- $scope.items = {};
- //$scope.items = patcherSettings.creatures = {};
- xelib.WithHandles(xelib.GetRecords(0, 'NPC_'), function(records) {
- let len = records.length;
- records.forEach(function(rec, index) {
- let msg = `Getting creature information (${index}/${len})`;
- progressService.progressMessage(msg);
- buildDeathItem($scope.items, rec);
- //if (creature) $scope.creatures.push(creature);
- });
- });
- };
- $scope.loadCreatures = function() {
- progressService.showProgress({ message: 'Loading records...' });
- errorService.try(GetCreatures);
- progressService.hideProgress();
- };
- };
- registerPatcher({
- info: info,
- gameModes: [xelib.gmTES5, xelib.gmSSE],
- settings: {
- label: 'Hunterborn Creature Patcher',
- templateUrl: `${patcherPath}/partials/settings.html`,
- controller: settingsController,
- defaultSettings: {}
- },
- execute: {
- initialize: function(patch, helpers, settings) {
- if (!settings.creatures) return;
- let recordsToPatch = settings.creatures.map(function(rec) {
- return xelib.GetElement(0, rec.path);
- });
- recordsToPatch.forEach(function(rec) {
- helpers.logMessage('Patching ' + xelib.Name(rec));
- let override = xelib.CopyElement(rec, patch);
- });
- },
- process: []
- }
- });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement