- Improved signature 'type' select options for Shattered C1-C6 WHs, closed #875

This commit is contained in:
Mark Friedrich
2019-12-01 00:36:22 +01:00
parent ee85b1af56
commit 7ff1f01d4a
10 changed files with 1368 additions and 1228 deletions

View File

@@ -1,21 +1,118 @@
/**
* Created by exodus4d on 06.07.2015.
* Created by exodus4d
* static signature types
*
* (*) marked fields are in-game verified and
* proofed, signature names (copy & paste from scanning window)
*/
define(['jquery'], ($) => {
define([], () => {
'use strict';
// signature sources
// http://de.sistersprobe.wikia.com/wiki/EVE_Sister_Core_Scanner_Probe_Wiki
// Combat sites ===================================================================================================
let c1Combat = {
1: 'Perimeter Ambush Point',
2: 'Perimeter Camp',
3: 'Phase Catalyst Node',
4: 'The Line'
};
let c2Combat = {
1: 'Perimeter Checkpoint',
2: 'Perimeter Hangar',
3: 'The Ruins of Enclave Cohort 27',
4: 'Sleeper Data Sanctuary'
};
let c3Combat = {
1: 'Fortification Frontier Stronghold',
2: 'Outpost Frontier Stronghold',
3: 'Solar Cell',
4: 'The Oruze Construct'
};
let c4Combat = {
1: 'Frontier Barracks',
2: 'Frontier Command Post',
3: 'Integrated Terminus',
4: 'Sleeper Information Sanctum'
};
let c5Combat = {
1: 'Core Garrison', //*
2: 'Core Stronghold', //*
3: 'Oruze Osobnyk', //*
4: 'Quarantine Area'
};
let c6Combat = {
1: 'Core Citadel', //*
2: 'Core Bastion', //*
3: 'Strange Energy Readings', //*
4: 'The Mirror' //*
};
// Thera WH
let c12Combat = {
1: 'Epicenter',
2: 'Expedition Command Outpost Wreck',
3: 'Planetary Colonization Office Wreck',
4: 'Testing Facilities'
};
// Drifter Sentinel WH
let c14Combat = {
1: 'Monolith',
2: 'Wormhole in Rock Circle',
3: 'Opposing Spatial Rifts',
4: 'Sleeper Enclave Debris',
5: 'Crystal Resource'
};
// Drifter Barbican WH
let c15Combat = {
1: 'Wrecked Ships',
2: 'Unstable Wormhole',
3: 'Spatial Rift',
4: 'Heavily Guarded Spatial Rift',
5: 'Crystals'
};
// Drifter Vidette WH
let c16Combat = {
1: 'Ship Graveyard',
2: 'Sleeper Engineering Station',
3: 'Spatial Rift',
4: 'Sleeper Enclave in Coral Rock',
5: 'Crystals and Stone Circle'
};
// Drifter Conflux WH
let c17Combat = {
1: 'Monolith',
2: 'Caged Wormhole',
3: 'Rock Formation and Wormhole',
4: 'Particle Acceleration Array',
5: 'Guarded Asteroid Station'
};
// Drifter Redoubt WH
let c18Combat = {
1: 'Ship Graveyard',
2: 'Caged Wormhole',
3: 'Spatial Rift Generator',
4: 'Sleeper Enclave',
5: 'Hollow Asteroid'
};
// Relic sites ====================================================================================================
// NullSec Relic sites, which can also spawn in C1, C2, C3 wormholes
let nullSecRelicSites = {
let nullRelic = {
10: 'Ruined Angel Crystal Quarry',
11: 'Ruined Angel Monument Site',
12: 'Ruined Angel Science Outpost',
@@ -38,8 +135,40 @@ define(['jquery'], ($) => {
29: 'Ruined Serpentis Temple Site'
};
let c1Relic = Object.assign({}, nullRelic, {
1: 'Forgotten Perimeter Coronation Platform', //*
2: 'Forgotten Perimeter Power Array' //*
});
let c2Relic = Object.assign({}, nullRelic, {
1: 'Forgotten Perimeter Gateway', //*
2: 'Forgotten Perimeter Habitation Coils' //*
});
let c3Relic = Object.assign({}, nullRelic, {
1: 'Forgotten Frontier Quarantine Outpost', //*
2: 'Forgotten Frontier Recursive Depot' //*
});
let c4Relic = {
1: 'Forgotten Frontier Conversion Module',
2: 'Forgotten Frontier Evacuation Center'
};
let c5Relic = {
1: 'Forgotten Core Data Field',
2: 'Forgotten Core Information Pen'
};
let c6Relic = {
1: 'Forgotten Core Assembly Hall', //*
2: 'Forgotten Core Circuitry Disassembler' //*
};
// Data sites =====================================================================================================
// NulSec Data sites, which can also spawn in C1, C2, C3 wormholes
let nullSecDataSites = {
let nullData = {
10: 'Abandoned Research Complex DA005',
11: 'Abandoned Research Complex DA015',
12: 'Abandoned Research Complex DC007',
@@ -68,413 +197,384 @@ define(['jquery'], ($) => {
35: 'Central Serpentis Survey Site'
};
let c1Data = Object.assign({}, nullData, {
1: 'Unsecured Perimeter Amplifier', //*
2: 'Unsecured Perimeter Information Center' //*
});
let c2Data = Object.assign({}, nullData, {
1: 'Unsecured Perimeter Comms Relay', //*
2: 'Unsecured Perimeter Transponder Farm' //*
});
let c3Data = Object.assign({}, nullData, {
1: 'Unsecured Frontier Database', //*
2: 'Unsecured Frontier Receiver' //*
});
let c4Data = {
1: 'Unsecured Frontier Digital Nexus',
2: 'Unsecured Frontier Trinary Hub'
};
let c5Data = {
1: 'Unsecured Frontier Enclave Relay',
2: 'Unsecured Frontier Server Bank'
};
let c6Data = {
1: 'Unsecured Core Backup Array', //*
2: 'Unsecured Core Emergence' //*
};
// Gas sites ======================================================================================================
let c1Gas = {
1: 'Barren Perimeter Reservoir', //*
2: 'Token Perimeter Reservoir', //*
3: 'Minor Perimeter Reservoir', //*
4: 'Sizeable Perimeter Reservoir', //*
5: 'Ordinary Perimeter Reservoir' //*
};
let c2Gas = {
1: 'Barren Perimeter Reservoir', //*
2: 'Token Perimeter Reservoir', //*
3: 'Minor Perimeter Reservoir', //*
4: 'Sizeable Perimeter Reservoir', //*
5: 'Ordinary Perimeter Reservoir' //*
};
let c3Gas = {
1: 'Barren Perimeter Reservoir', //*
2: 'Token Perimeter Reservoir', //*
3: 'Minor Perimeter Reservoir', //*
4: 'Sizeable Perimeter Reservoir', //*
5: 'Ordinary Perimeter Reservoir', //*
6: 'Bountiful Frontier Reservoir', //*
7: 'Vast Frontier Reservoir' //*
};
let c4Gas = {
1: 'Barren Perimeter Reservoir', //*
2: 'Token Perimeter Reservoir', //*
3: 'Minor Perimeter Reservoir', //*
4: 'Sizeable Perimeter Reservoir', //*
5: 'Ordinary Perimeter Reservoir', //*
6: 'Vast Frontier Reservoir', //*
7: 'Bountiful Frontier Reservoir' //*
};
let c5Gas = {
1: 'Barren Perimeter Reservoir', //*
2: 'Minor Perimeter Reservoir', //*
3: 'Ordinary Perimeter Reservoir', //*
4: 'Sizeable Perimeter Reservoir', //*
5: 'Token Perimeter Reservoir', //*
6: 'Bountiful Frontier Reservoir', //*
7: 'Vast Frontier Reservoir', //*
8: 'Instrumental Core Reservoir', //*
9: 'Vital Core Reservoir' //*
};
let c6Gas = {
1: 'Barren Perimeter Reservoir', //*
2: 'Minor Perimeter Reservoir', //*
3: 'Ordinary Perimeter Reservoir', //*
4: 'Sizeable Perimeter Reservoir', //*
5: 'Token Perimeter Reservoir', //*
6: 'Bountiful Frontier Reservoir', //*
7: 'Vast Frontier Reservoir', //*
8: 'Instrumental Core Reservoir', //*
9: 'Vital Core Reservoir' //*
};
// Ore sites ======================================================================================================
let c1Ore = {
1: 'Ordinary Perimeter Deposit', //*
2: 'Common Perimeter Deposit', //*
3: 'Unexceptional Frontier Deposit', //*
4: 'Average Frontier Deposit', //*
5: 'Isolated Core Deposit', //*
6: 'Uncommon Core Deposit' //*
};
let c2Ore = {
1: 'Ordinary Perimeter Deposit', //*
2: 'Common Perimeter Deposit', //*
3: 'Unexceptional Frontier Deposit', //*
4: 'Average Frontier Deposit', //*
5: 'Isolated Core Deposit', //*
6: 'Uncommon Core Deposit' //*
};
let c3Ore = {
1: 'Ordinary Perimeter Deposit', //*
2: 'Common Perimeter Deposit', //*
3: 'Unexceptional Frontier Deposit', //*
4: 'Average Frontier Deposit', //*
5: 'Infrequent Core Deposit', //*
6: 'Unusual Core Deposit' //*
};
let c4Ore = {
1: 'Ordinary Perimeter Deposit', //*
2: 'Common Perimeter Deposit', //*
3: 'Unexceptional Frontier Deposit', //*
4: 'Average Frontier Deposit', //*
5: 'Unusual Core Deposit', //*
6: 'Infrequent Core Deposit' //*
};
let c5Ore = {
1: 'Average Frontier Deposit', //*
2: 'Unexceptional Frontier Deposit', //*
3: 'Uncommon Core Deposit', //*
4: 'Ordinary Perimeter Deposit', //*
5: 'Common Perimeter Deposit', //*
6: 'Exceptional Core Deposit', //*
7: 'Infrequent Core Deposit', //*
8: 'Unusual Core Deposit', //*
9: 'Rarified Core Deposit', //*
10: 'Isolated Core Deposit' //*
};
let c6Ore = {
1: 'Ordinary Perimeter Deposit', //*
2: 'Common Perimeter Deposit', //*
3: 'Unexceptional Frontier Deposit', //*
4: 'Average Frontier Deposit', //*
5: 'Rarified Core Deposit' //*
};
// Wormholes ======================================================================================================
// all k-space exits are static or K162
let c1WH = {
1: 'H121 - C1',
2: 'C125 - C2',
3: 'O883 - C3',
4: 'M609 - C4',
5: 'L614 - C5',
6: 'S804 - C6',
7: 'F353 - C12 Thera'
};
// all w-space -> w-space are statics or K162
let c2WH = {
1: 'Z647 - C1',
2: 'D382 - C2',
3: 'O477 - C3',
4: 'Y683 - C4',
5: 'N062 - C5',
6: 'R474 - C6',
7: 'F135 - C12 Thera'
};
// all k-space exits are static or K162
let c3WH = {
1: 'V301 - C1',
2: 'I182 - C2',
3: 'N968 - C3',
4: 'T405 - C4',
5: 'N770 - C5',
6: 'A982 - C6',
7: 'F135 - C12 Thera'
};
// no *wandering* w-space -> w-space
// all holes are statics or K162
let c4WH = {
1: 'S047 - H',
2: 'N290 - L',
3: 'K329 - 0.0'
};
let c5WH = {
1: 'D792 - H',
2: 'C140 - L',
3: 'Z142 - 0.0'
};
let c6WH = {
1: 'B520 - H',
2: 'D792 - H',
3: 'C140 - L',
4: 'C391 - L',
5: 'C248 - 0.0',
6: 'Z142 - 0.0'
};
// Shattered WH (some of them are static)
let c13WH = {
1: 'P060 - C1',
2: 'Z647 - C1',
3: 'D382 - C2',
4: 'L005 - C2',
5: 'N766 - C2',
6: 'C247 - C3',
7: 'M267 - C3',
8: 'O477 - C3',
9: 'X877 - C4',
10: 'Y683 - C4',
11: 'H296 - C5',
12: 'H900 - C5',
13: 'H296 - C5',
14: 'N062 - C5', // ??
15: 'V911 - C5',
16: 'U574 - C6',
17: 'V753 - C6',
18: 'W237 - C6',
19: 'B274 - H',
20: 'D792 - H',
21: 'D845 - H',
22: 'N110 - H',
23: 'A239 - L',
24: 'C391 - L',
25: 'J244 - L',
26: 'U201 - L', // ??
27: 'U210 - L',
28: 'C248 - 0.0',
29: 'E545 - 0.0',
30: 'K346 - 0.0',
31: 'Z060 - 0.0'
};
let hsWH = {
1: 'Z971 - C1',
2: 'R943 - C2',
3: 'X702 - C3',
4: 'O128 - C4',
5: 'M555 - C5',
6: 'B041 - C6',
7: 'A641 - H',
8: 'R051 - L',
9: 'V283 - 0.0',
10: 'T458 - C12 Thera'
};
let lsWH = {
1: 'Z971 - C1',
2: 'R943 - C2',
3: 'X702 - C3',
4: 'O128 - C4',
5: 'N432 - C5',
6: 'U319 - C6',
7: 'B449 - H',
8: 'N944 - L',
9: 'S199 - 0.0',
10: 'M164 - C12 Thera'
};
let nullWH = {
1: 'Z971 - C1',
2: 'R943 - C2',
3: 'X702 - C3',
4: 'O128 - C4',
5: 'N432 - C5',
6: 'U319 - C6',
7: 'B449 - H',
8: 'N944 - L',
9: 'S199 - 0.0',
10: 'L031 - C12 Thera'
};
// ================================================================================================================
// Signature types
// ================================================================================================================
// signature types
let signatureTypes = {
return {
1: { // system type (wh)
1: { // C1 (area id)
1: { // Combat
1: 'Perimeter Ambush Point',
2: 'Perimeter Camp',
3: 'Phase Catalyst Node',
4: 'The Line'
},
2: $.extend({}, nullSecRelicSites, { // Relic
1: 'Forgotten Perimeter Coronation Platform', //*
2: 'Forgotten Perimeter Power Array' //*
}),
3: $.extend({}, nullSecDataSites, { // Data
1: 'Unsecured Perimeter Amplifier', //*
2: 'Unsecured Perimeter Information Center' //*
}),
4: { // Gas
1: 'Barren Perimeter Reservoir', //*
2: 'Token Perimeter Reservoir', //*
3: 'Minor Perimeter Reservoir', //*
4: 'Sizeable Perimeter Reservoir', //*
5: 'Ordinary Perimeter Reservoir' //*
},
5: { // Wormhole
// all k-space exits are static or K162
1: 'H121 - C1',
2: 'C125 - C2',
3: 'O883 - C3',
4: 'M609 - C4',
5: 'L614 - C5',
6: 'S804 - C6',
7: 'F353 - C12 Thera'
},
6: { // ORE
1: 'Ordinary Perimeter Deposit', //*
2: 'Common Perimeter Deposit', //*
3: 'Unexceptional Frontier Deposit', //*
4: 'Average Frontier Deposit', //*
5: 'Isolated Core Deposit', //*
6: 'Uncommon Core Deposit' //*
},
7: { // Ghost
}
1: c1Combat,
2: c1Relic,
3: c1Data,
4: c1Gas,
5: c1WH,
6: c1Ore,
7: {} // Ghost
},
2: { // C2
1: { // Combat
1: 'Perimeter Checkpoint',
2: 'Perimeter Hangar',
3: 'The Ruins of Enclave Cohort 27',
4: 'Sleeper Data Sanctuary'
},
2: $.extend({}, nullSecRelicSites, { // Relic
1: 'Forgotten Perimeter Gateway', //*
2: 'Forgotten Perimeter Habitation Coils' //*
}),
3: $.extend({}, nullSecDataSites, { // Data
1: 'Unsecured Perimeter Comms Relay', //*
2: 'Unsecured Perimeter Transponder Farm' //*
}),
4: { // Gas
1: 'Barren Perimeter Reservoir', //*
2: 'Token Perimeter Reservoir', //*
3: 'Minor Perimeter Reservoir', //*
4: 'Sizeable Perimeter Reservoir', //*
5: 'Ordinary Perimeter Reservoir' //*
},
5: { // Wormhole
// all w-space -> w-space are statics or K162
1: 'Z647 - C1',
2: 'D382 - C2',
3: 'O477 - C3',
4: 'Y683 - C4',
5: 'N062 - C5',
6: 'R474 - C6',
7: 'F135 - C12 Thera'
},
6: { // ORE
1: 'Ordinary Perimeter Deposit', //*
2: 'Common Perimeter Deposit', //*
3: 'Unexceptional Frontier Deposit', //*
4: 'Average Frontier Deposit', //*
5: 'Isolated Core Deposit', //*
6: 'Uncommon Core Deposit' //*
},
7: { // Ghost
}
1: c2Combat,
2: c2Relic,
3: c2Data,
4: c2Gas,
5: c2WH,
6: c2Ore,
7: {} // Ghost
},
3: { // C3
1: { // Combat
1: 'Fortification Frontier Stronghold',
2: 'Outpost Frontier Stronghold',
3: 'Solar Cell',
4: 'The Oruze Construct'
},
2: $.extend({}, nullSecRelicSites, { // Relic
1: 'Forgotten Frontier Quarantine Outpost', //*
2: 'Forgotten Frontier Recursive Depot' //*
}),
3: $.extend({}, nullSecDataSites, { // Data
1: 'Unsecured Frontier Database', //*
2: 'Unsecured Frontier Receiver' //*
}),
4: { // Gas
1: 'Barren Perimeter Reservoir', //*
2: 'Token Perimeter Reservoir', //*
3: 'Minor Perimeter Reservoir', //*
4: 'Sizeable Perimeter Reservoir', //*
5: 'Ordinary Perimeter Reservoir', //*
6: 'Bountiful Frontier Reservoir', //*
7: 'Vast Frontier Reservoir' //*
},
5: { // Wormhole
// all k-space exits are static or K162
1: 'V301 - C1',
2: 'I182 - C2',
3: 'N968 - C3',
4: 'T405 - C4',
5: 'N770 - C5',
6: 'A982 - C6',
7: 'F135 - C12 Thera'
},
6: { // ORE
1: 'Ordinary Perimeter Deposit', //*
2: 'Common Perimeter Deposit', //*
3: 'Unexceptional Frontier Deposit', //*
4: 'Average Frontier Deposit', //*
5: 'Infrequent Core Deposit', //*
6: 'Unusual Core Deposit' //*
},
7: { // Ghost
}
1: c3Combat,
2: c3Relic,
3: c3Data,
4: c3Gas,
5: c3WH,
6: c3Ore,
7: {} // Ghost
},
4: { // C4
1: { // Combat
1: 'Frontier Barracks',
2: 'Frontier Command Post',
3: 'Integrated Terminus',
4: 'Sleeper Information Sanctum'
},
2: { // Relic
1: 'Forgotten Frontier Conversion Module',
2: 'Forgotten Frontier Evacuation Center'
},
3: { // Data
1: 'Unsecured Frontier Digital Nexus',
2: 'Unsecured Frontier Trinary Hub'
},
4: { // Gas
1: 'Barren Perimeter Reservoir', //*
2: 'Token Perimeter Reservoir', //*
3: 'Minor Perimeter Reservoir', //*
4: 'Sizeable Perimeter Reservoir', //*
5: 'Ordinary Perimeter Reservoir', //*
6: 'Vast Frontier Reservoir', //*
7: 'Bountiful Frontier Reservoir' //*
},
5: { // Wormhole
// no *wandering* w-space -> w-space
// all holes are statics or K162
1: 'S047 - H',
2: 'N290 - L',
3: 'K329 - 0.0'
},
6: { // ORE
1: 'Ordinary Perimeter Deposit', //*
2: 'Common Perimeter Deposit', //*
3: 'Unexceptional Frontier Deposit', //*
4: 'Average Frontier Deposit', //*
5: 'Unusual Core Deposit', //*
6: 'Infrequent Core Deposit' //*
},
7: { // Ghost
}
1: c4Combat,
2: c4Relic,
3: c4Data,
4: c4Gas,
5: c4WH,
6: c4Ore,
7: {} // Ghost
},
5: { // C5
1: { // Combat
1: 'Core Garrison', //*
2: 'Core Stronghold', //*
3: 'Oruze Osobnyk', //*
4: 'Quarantine Area'
},
2: { // Relic
1: 'Forgotten Core Data Field',
2: 'Forgotten Core Information Pen'
},
3: { // Data
1: 'Unsecured Frontier Enclave Relay',
2: 'Unsecured Frontier Server Bank'
},
4: { // Gas
1: 'Barren Perimeter Reservoir', //*
2: 'Minor Perimeter Reservoir', //*
3: 'Ordinary Perimeter Reservoir', //*
4: 'Sizeable Perimeter Reservoir', //*
5: 'Token Perimeter Reservoir', //*
6: 'Bountiful Frontier Reservoir', //*
7: 'Vast Frontier Reservoir', //*
8: 'Instrumental Core Reservoir', //*
9: 'Vital Core Reservoir' //*
},
5: { // Wormhole
1: 'D792 - H',
2: 'C140 - L',
3: 'Z142 - 0.0'
},
6: { // ORE
1: 'Average Frontier Deposit', //*
2: 'Unexceptional Frontier Deposit', //*
3: 'Uncommon Core Deposit', //*
4: 'Ordinary Perimeter Deposit', //*
5: 'Common Perimeter Deposit', //*
6: 'Exceptional Core Deposit', //*
7: 'Infrequent Core Deposit', //*
8: 'Unusual Core Deposit', //*
9: 'Rarified Core Deposit', //*
10: 'Isolated Core Deposit' //*
},
7: { // Ghost
}
1: c5Combat,
2: c5Relic,
3: c5Data,
4: c5Gas,
5: c5WH,
6: c5Ore,
7: {} // Ghost
},
6: { // C6
1: { // Combat
1: 'Core Citadel', //*
2: 'Core Bastion', //*
3: 'Strange Energy Readings', //*
4: 'The Mirror' //*
},
2: { // Relic
1: 'Forgotten Core Assembly Hall', //*
2: 'Forgotten Core Circuitry Disassembler' //*
},
3: { // Data
1: 'Unsecured Core Backup Array', //*
2: 'Unsecured Core Emergence' //*
},
4: { // Gas
1: 'Barren Perimeter Reservoir', //*
2: 'Minor Perimeter Reservoir', //*
3: 'Ordinary Perimeter Reservoir', //*
4: 'Sizeable Perimeter Reservoir', //*
5: 'Token Perimeter Reservoir', //*
6: 'Bountiful Frontier Reservoir', //*
7: 'Vast Frontier Reservoir', //*
8: 'Instrumental Core Reservoir', //*
9: 'Vital Core Reservoir' //*
},
5: { // Wormhole
1: 'B520 - H',
2: 'D792 - H',
3: 'C140 - L',
4: 'C391 - L',
5: 'C248 - 0.0',
6: 'Z142 - 0.0'
},
6: { // ORE
1: 'Ordinary Perimeter Deposit', //*
2: 'Common Perimeter Deposit', //*
3: 'Unexceptional Frontier Deposit', //*
4: 'Average Frontier Deposit', //*
5: 'Rarified Core Deposit' //*
},
1: c6Combat,
2: c6Relic,
3: c6Data,
4: c6Gas,
5: c6WH,
6: c6Ore,
7: { // Ghost
1: 'Superior Blood Raider Covert Research Facility' //*
}
},
12: { // Thera wormhole
1: { // Combat
1: 'Epicenter',
2: 'Expedition Command Outpost Wreck',
3: 'Planetary Colonization Office Wreck',
4: 'Testing Facilities'
}
12: { // Thera WH
1: c12Combat
},
13: { // Shattered Wormholes
5: { // Wormhole (some of them are static)
1: 'P060 - C1',
2: 'Z647 - C1',
3: 'D382 - C2',
4: 'L005 - C2',
5: 'N766 - C2',
6: 'C247 - C3',
7: 'M267 - C3',
8: 'O477 - C3',
9: 'X877 - C4',
10: 'Y683 - C4',
11: 'H296 - C5',
12: 'H900 - C5',
13: 'H296 - C5',
14: 'N062 - C5', // ??
15: 'V911 - C5',
16: 'U574 - C6',
17: 'V753 - C6',
18: 'W237 - C6',
19: 'B274 - H',
20: 'D792 - H',
21: 'D845 - H',
22: 'N110 - H',
23: 'A239 - L',
24: 'C391 - L',
25: 'J244 - L',
26: 'U201 - L', // ??
27: 'U210 - L',
28: 'C248 - 0.0',
29: 'E545 - 0.0',
30: 'K346 - 0.0',
31: 'Z060 - 0.0'
}
13: { // Shattered WH
5: c13WH
},
14: { // Drifter Sentinel WH
1: { // Combat
1: 'Monolith',
2: 'Wormhole in Rock Circle',
3: 'Opposing Spatial Rifts',
4: 'Sleeper Enclave Debris',
5: 'Crystal Resource'
}
1: c14Combat
},
15: { // Drifter Barbican WH
1: { // Combat
1: 'Wrecked Ships',
2: 'Unstable Wormhole',
3: 'Spatial Rift',
4: 'Heavily Guarded Spatial Rift',
5: 'Crystals'
}
1: c15Combat
},
16: { // Drifter Vidette WH
1: { // Combat
1: 'Ship Graveyard',
2: 'Sleeper Engineering Station',
3: 'Spatial Rift',
4: 'Sleeper Enclave in Coral Rock',
5: 'Crystals and Stone Circle'
}
1: c16Combat
},
17: { // Drifter Conflux WH
1: { // Combat
1: 'Monolith',
2: 'Caged Wormhole',
3: 'Rock Formation and Wormhole',
4: 'Particle Acceleration Array',
5: 'Guarded Asteroid Station'
}
1: c17Combat
},
18: { // Drifter Redoubt WH
1: { // Combat
1: 'Ship Graveyard',
2: 'Caged Wormhole',
3: 'Spatial Rift Generator',
4: 'Sleeper Enclave',
5: 'Hollow Asteroid'
}
1: c18Combat
}
}, // system type (k-space)
2: {
2: {
30: { // High Sec
5: { // Wormhole
1: 'Z971 - C1',
2: 'R943 - C2',
3: 'X702 - C3',
4: 'O128 - C4',
5: 'M555 - C5',
6: 'B041 - C6',
7: 'A641 - H',
8: 'R051 - L',
9: 'V283 - 0.0',
10: 'T458 - C12 Thera'
}
5: hsWH
},
31: { // Low Sec
5: { // Wormhole
1: 'Z971 - C1',
2: 'R943 - C2',
3: 'X702 - C3',
4: 'O128 - C4',
5: 'N432 - C5',
6: 'U319 - C6',
7: 'B449 - H',
8: 'N944 - L',
9: 'S199 - 0.0',
10: 'M164 - C12 Thera'
}
5: lsWH
},
32: { // 0.0
5: { // Wormhole
1: 'Z971 - C1',
2: 'R943 - C2',
3: 'X702 - C3',
4: 'O128 - C4',
5: 'N432 - C5',
6: 'U319 - C6',
7: 'B449 - H',
8: 'N944 - L',
9: 'S199 - 0.0',
10: 'L031 - C12 Thera'
}
5: nullWH
}
}
};
return signatureTypes;
});

View File

@@ -3,10 +3,20 @@
*/
define([], () => {
'use strict';
let Config = {
let frigWH = {
1: 'E004 - C1',
2: 'L005 - C2',
3: 'Z006 - C3',
4: 'M001 - C4',
5: 'C008 - C5',
6: 'G008 - C6',
7: 'Q003 - 0.0',
8: 'A009 - C13'
};
return {
path: {
img: '/public/img/', // path for images
api: '/api/rest', //ajax URL - REST API
@@ -49,12 +59,12 @@ define([], () => {
gitHubReleases: '/api/github/releases' // ajax URL - get release info from GitHub
},
breakpoints: [
{ name: 'screen-xl', width: Infinity },
{ name: 'screen-l', width: 1600 },
{ name: 'screen-m', width: 1200 },
{ name: 'screen-d', width: 1000 },
{ name: 'screen-s', width: 780 },
{ name: 'screen-xs', width: 480 }
{name: 'screen-xl', width: Infinity},
{name: 'screen-l', width: 1600},
{name: 'screen-m', width: 1200},
{name: 'screen-d', width: 1000},
{name: 'screen-s', width: 780},
{name: 'screen-xs', width: 480}
],
animationSpeed: {
splashOverlay: 300, // "splash" loading overlay
@@ -95,63 +105,63 @@ define([], () => {
class: 'fa-desktop',
label: 'desktop',
unicode: ''
},{
}, {
class: 'fa-space-shuttle',
label: 'space shuttle',
unicode: ''
},{
}, {
class: 'fa-anchor',
label: 'anchor',
unicode: ''
},{
}, {
class: 'fa-satellite',
label: 'satellite',
unicode: ''
},{
}, {
class: 'fa-skull-crossbones',
label: 'skull crossbones',
unicode: ''
},{
}, {
class: 'fa-fire',
label: 'fire',
unicode: ''
},{
}, {
class: 'fa-bookmark',
label: 'bookmark',
unicode: ''
},{
}, {
class: 'fa-cube',
label: 'cube',
unicode: ''
},{
}, {
class: 'fa-star',
label: 'star',
unicode: ''
},{
}, {
class: 'fa-hat-wizard',
label: 'hat wizard',
unicode: ''
},{
}, {
class: 'fa-plane',
label: 'plane',
unicode: ''
},{
}, {
class: 'fa-globe',
label: 'globe',
unicode: ''
},{
}, {
class: 'fa-rocket',
label: 'rocket',
unicode: ''
},{
}, {
class: 'fa-life-ring',
label: 'life ring',
unicode: ''
},{
}, {
class: 'fa-heart',
label: 'heart',
unicode: ''
},{
}, {
class: 'fa-poop',
label: 'poop',
unicode: ''
@@ -541,106 +551,16 @@ define([], () => {
},
// frigate wormholes
frigateWormholes: {
1: { // C1
1: 'E004 - C1',
2: 'L005 - C2',
3: 'Z006 - C3',
4: 'M001 - C4',
5: 'C008 - C5',
6: 'G008 - C6',
7: 'Q003 - 0.0',
8: 'A009 - C13'
},
2: { // C2
1: 'E004 - C1',
2: 'L005 - C2',
3: 'Z006 - C3',
4: 'M001 - C4',
5: 'C008 - C5',
6: 'G008 - C6',
7: 'Q003 - 0.0',
8: 'A009 - C13'
},
3: { // C3
1: 'E004 - C1',
2: 'L005 - C2',
3: 'Z006 - C3',
4: 'M001 - C4',
5: 'C008 - C5',
6: 'G008 - C6',
7: 'Q003 - 0.0',
8: 'A009 - C13'
},
4: { // C4
1: 'E004 - C1',
2: 'L005 - C2',
3: 'Z006 - C3',
4: 'M001 - C4',
5: 'C008 - C5',
6: 'G008 - C6',
7: 'Q003 - 0.0',
8: 'A009 - C13'
},
5: { // C5
1: 'E004 - C1',
2: 'L005 - C2',
3: 'Z006 - C3',
4: 'M001 - C4',
5: 'C008 - C5',
6: 'G008 - C6',
7: 'Q003 - 0.0',
8: 'A009 - C13'
},
6: { // C6
1: 'E004 - C1',
2: 'L005 - C2',
3: 'Z006 - C3',
4: 'M001 - C4',
5: 'C008 - C5',
6: 'G008 - C6',
7: 'Q003 - 0.0',
8: 'A009 - C13'
},
13: { // Shattered Wormholes (some of them are static)
1: 'E004 - C1',
2: 'L005 - C2',
3: 'Z006 - C3',
4: 'M001 - C4',
5: 'C008 - C5',
6: 'G008 - C6',
7: 'Q003 - 0.0',
8: 'A009 - C13'
},
30: { // High Sec
1: 'E004 - C1',
2: 'L005 - C2',
3: 'Z006 - C3',
4: 'M001 - C4',
5: 'C008 - C5',
6: 'G008 - C6',
7: 'Q003 - 0.0',
8: 'A009 - C13'
},
31: { // Low Sec
1: 'E004 - C1',
2: 'L005 - C2',
3: 'Z006 - C3',
4: 'M001 - C4',
5: 'C008 - C5',
6: 'G008 - C6',
7: 'Q003 - 0.0',
8: 'A009 - C13'
},
32: { // 0.0
1: 'E004 - C1',
2: 'L005 - C2',
3: 'Z006 - C3',
4: 'M001 - C4',
5: 'C008 - C5',
6: 'G008 - C6',
7: 'Q003 - 0.0',
8: 'A009 - C13'
}
1: frigWH, // C1
2: frigWH, // C2
3: frigWH, // C3
4: frigWH, // C4
5: frigWH, // C5
6: frigWH, // C6
13: frigWH, // Shattered Wormholes (some of them are static)
30: frigWH, // High Sec
31: frigWH, // Low Sec
32: frigWH // 0.0
},
// Drifter wormholes (can only appear in k-space)
drifterWormholes: {
@@ -660,8 +580,5 @@ define([], () => {
6: 'K162 - 0.0',
7: 'K162 - C12 Thera'
}
};
return Config;
});

95
js/app/lib/prototypes.js vendored Normal file
View File

@@ -0,0 +1,95 @@
define([], () => {
'use strict';
/**
* Array diff
* [1,2,3,4,5].diff([4,5,6]) => [1,2,3]
* @param a
* @returns {*[]}
*/
Array.prototype.diff = function(a){
return this.filter(i => !a.includes(i));
};
/**
* Array intersect
* [1,2,3,4,5].intersect([4,5,6]) => [4,5]
* @param a
* @returns {*[]}
*/
Array.prototype.intersect = function(a){
return this.filter(i => a.includes(i));
};
/**
* compares two arrays if all elements in a are also in b
* element order is ignored
* @param a
* @returns {boolean}
*/
Array.prototype.equalValues = function(a){
return this.diff(a).concat(a.diff(this)).length === 0;
};
/**
* like Array.concat() + remove duplicate values
* @see https://stackoverflow.com/a/38940354/4329969
* @param a
* @returns {*[]}
*/
Array.prototype.concatFilter = function(a){
return [...new Set([...this,...a])];
};
/**
* sort array of objects by property name
* @param p
* @returns {Array.<T>}
*/
Array.prototype.sortBy = function(p){
return this.slice(0).sort((a,b) => {
return (a[p] > b[p]) ? 1 : (a[p] < b[p]) ? -1 : 0;
});
};
/**
* capitalize first letter
* @returns {string}
*/
String.prototype.capitalize = function(){
return this.charAt(0).toUpperCase() + this.slice(1);
};
/**
* get hash from string
* @returns {number}
*/
String.prototype.hashCode = function(){
let hash = 0, i, chr;
if(this.length === 0) return hash;
for(i = 0; i < this.length; i++){
chr = this.charCodeAt(i);
hash = ((hash << 5) - hash) + chr;
hash |= 0; // Convert to 32bit integer
}
return hash;
};
String.prototype.trimLeftChars = function(charList){
if(charList === undefined)
charList = '\\s';
return this.replace(new RegExp('^[' + charList + ']+'), '');
};
String.prototype.trimRightChars = function(charList){
if(charList === undefined)
charList = '\\s';
return this.replace(new RegExp('[' + charList + ']+$'), '');
};
String.prototype.trimChars = function(charList){
return this.trimLeftChars(charList).trimRightChars(charList);
};
return {};
});

View File

@@ -228,6 +228,30 @@ define([
return sum;
};
/**
* Some signatures types can spawn in more than one 'areaId' for a 'groupId'
* -> e.g. a 'shattered' C3 WHs have Combat/Relic/.. sites from C2, C3, c4!
* https://github.com/exodus4d/pathfinder/issues/875
* @param systemTypeId
* @param areaId
* @param groupId
* @param shattered
* @returns {[*]}
*/
let getAreaIdsForSignatureTypeOptions = (systemTypeId, areaId, groupId, shattered = false) => {
let areaIds = [areaId];
if(
systemTypeId === 1 && shattered &&
[1, 2, 3, 4, 5, 6].includes(areaId) &&
[1, 2, 3, 4, 6].includes(groupId)
){
areaIds = [areaId - 1, areaId, areaId + 1].filter(areaId => areaId >= 1 && areaId <= 6);
}
return areaIds;
};
/**
* get possible frig holes that could spawn in a system
* filtered by "systemTypeId"
@@ -245,13 +269,14 @@ define([
/**
* get all signature types that can exist for a given system
* -> result is partially cached
* @param systemData
* @param systemTypeId
* @param areaId
* @param groupId
* @returns {Array}
* @param statics
* @param shattered
* @returns {[]|*}
*/
let getSignatureTypeOptions = (systemData, systemTypeId, areaId, groupId) => {
let getSignatureTypeOptions = (systemTypeId, areaId, groupId, {statics = null, shattered = false} = {}) => {
systemTypeId = parseInt(systemTypeId || 0);
areaId = parseInt(areaId || 0);
groupId = parseInt(groupId || 0);
@@ -262,7 +287,10 @@ define([
return newSelectOptions;
}
let cacheKey = [systemTypeId, areaId, groupId].join('_');
// check if sig types require more than one 'areaId' to be checked
let areaIds = getAreaIdsForSignatureTypeOptions(systemTypeId, areaId, groupId, shattered);
let cacheKey = [systemTypeId, ...areaIds, groupId].join('_');
newSelectOptions = sigTypeOptionsCache.getOrDefault(cacheKey, []);
@@ -275,7 +303,7 @@ define([
}else{
// get new Options ----------
// get all possible "static" signature names by the selected groupId
let tempSelectOptions = Util.getSignatureTypeNames(systemTypeId, areaId, groupId);
let tempSelectOptions = Util.getSignatureTypeNames(systemTypeId, areaIds, groupId);
// format options into array with objects advantages: keep order, add more options (whs), use optgroup
if(tempSelectOptions){
@@ -312,7 +340,7 @@ define([
frigateHoles.hasOwnProperty(frigKey)
){
newSelectOptionsCount++;
frigateWHData.push( {value: newSelectOptionsCount, text: frigateHoles[frigKey]} );
frigateWHData.push({value: newSelectOptionsCount, text: frigateHoles[frigKey]});
}
}
@@ -329,7 +357,7 @@ define([
Init.drifterWormholes.hasOwnProperty(drifterKey)
){
newSelectOptionsCount++;
drifterWHData.push( {value: newSelectOptionsCount, text: Init.drifterWormholes[drifterKey]} );
drifterWHData.push({value: newSelectOptionsCount, text: Init.drifterWormholes[drifterKey]});
}
}
@@ -346,12 +374,12 @@ define([
Init.incomingWormholes.hasOwnProperty(incomingKey)
){
newSelectOptionsCount++;
incomingWHData.push( {value: newSelectOptionsCount, text: Init.incomingWormholes[incomingKey]} );
incomingWHData.push({value: newSelectOptionsCount, text: Init.incomingWormholes[incomingKey]});
}
}
if(incomingWHData.length > 0){
newSelectOptions.push({ text: 'Incoming', children: incomingWHData});
newSelectOptions.push({text: 'Incoming', children: incomingWHData});
}
}else{
// groups without "children" (optgroup) should be sorted by "value"
@@ -363,17 +391,17 @@ define([
sigTypeOptionsCache.set(cacheKey, newSelectOptions.slice(0));
}
// static wormholes (DO NOT CACHE) (not all C2 WHs have the same statics,...
// static wormholes (DO NOT CACHE) (not all C2 WHs have the same statics..)
if(groupId === 5){
// add static WH(s) for this system
if(systemData.statics){
if(statics){
let staticWHData = [];
for(let wormholeName of systemData.statics){
for(let wormholeName of statics){
let wormholeData = Object.assign({}, Init.wormholes[wormholeName]);
let staticWHName = wormholeData.name + ' - ' + wormholeData.security;
newSelectOptionsCount++;
staticWHData.push( {value: newSelectOptionsCount, text: staticWHName} );
staticWHData.push({value: newSelectOptionsCount, text: staticWHName});
}
if(staticWHData.length > 0){
@@ -395,7 +423,7 @@ define([
let systemTypeId = systemElement.data('typeId');
let areaId = Util.getAreaIdBySecurity(systemElement.data('security'));
let systemData = {statics: systemElement.data('statics')};
return getSignatureTypeOptions(systemData, systemTypeId, areaId, groupId);
return getSignatureTypeOptions(systemTypeId, areaId, groupId, systemData);
};
/**
@@ -892,10 +920,10 @@ define([
let sigDescriptionLowerCase = sigDescription.toLowerCase();
let typeOptions = getSignatureTypeOptions(
systemData,
systemData.type.id,
Util.getAreaIdBySecurity(systemData.security),
sigGroupId
sigGroupId,
systemData
);
for(let [key, name] of Object.entries(Util.flattenXEditableSelectArray(typeOptions))){
@@ -1759,10 +1787,10 @@ define([
let rowData = tableApi.row($(cell).parents('tr')).data();
let typeOptions = getSignatureTypeOptions(
systemData,
systemData.type.id,
Util.getAreaIdBySecurity(systemData.security),
rowData.groupId
rowData.groupId,
systemData
);
return typeOptions;
},

View File

@@ -4,6 +4,7 @@
define([
'jquery',
'app/init',
'app/lib/prototypes',
'app/lib/console',
'conf/system_effect',
'conf/signature_type',
@@ -19,7 +20,7 @@ define([
'bootstrapConfirmation',
'bootstrapToggle',
'select2'
], ($, Init, Con, SystemEffect, SignatureType, bootbox, localforage) => {
], ($, Init, Proto, Con, SystemEffect, SignatureType, bootbox, localforage) => {
'use strict';
@@ -973,85 +974,6 @@ define([
*/
let initPrototypes = () => {
/**
* Array diff
* [1,2,3,4,5].diff([4,5,6]) => [1,2,3]
* @param a
* @returns {*[]}
*/
Array.prototype.diff = function(a){
return this.filter(i => !a.includes(i));
};
/**
* Array intersect
* [1,2,3,4,5].intersect([4,5,6]) => [4,5]
* @param a
* @returns {*[]}
*/
Array.prototype.intersect = function(a){
return this.filter(i => a.includes(i));
};
/**
* compares two arrays if all elements in a are also in b
* element order is ignored
* @param a
* @returns {boolean}
*/
Array.prototype.equalValues = function(a){
return this.diff(a).concat(a.diff(this)).length === 0;
};
/**
* sort array of objects by property name
* @param p
* @returns {Array.<T>}
*/
Array.prototype.sortBy = function(p){
return this.slice(0).sort((a,b) => {
return (a[p] > b[p]) ? 1 : (a[p] < b[p]) ? -1 : 0;
});
};
/**
* capitalize first letter
* @returns {string}
*/
String.prototype.capitalize = function(){
return this.charAt(0).toUpperCase() + this.slice(1);
};
/**
* get hash from string
* @returns {number}
*/
String.prototype.hashCode = function(){
let hash = 0, i, chr;
if(this.length === 0) return hash;
for(i = 0; i < this.length; i++){
chr = this.charCodeAt(i);
hash = ((hash << 5) - hash) + chr;
hash |= 0; // Convert to 32bit integer
}
return hash;
};
String.prototype.trimLeftChars = function(charList){
if(charList === undefined)
charList = '\\s';
return this.replace(new RegExp('^[' + charList + ']+'), '');
};
String.prototype.trimRightChars = function(charList){
if(charList === undefined)
charList = '\\s';
return this.replace(new RegExp('[' + charList + ']+$'), '');
};
String.prototype.trimChars = function(charList){
return this.trimLeftChars(charList).trimRightChars(charList);
};
initPassiveEvents();
};
@@ -2590,23 +2512,16 @@ define([
};
/**
* get Signature names out of global
* @param systemTypeId
* @param areaId
* @param sigGroupId
* get signature 'type' options for a systemTypeId
* -> areaIds is array! This is used for "Shattered WHs" where e.g.:
* Combat/Relic/.. sites from multiple areaIds (C1, C2, C3) can spawn in a C2,...
* @param systemTypeId 1 == w-space; 2 == k-space; 3 == a-space
* @param areaIds 1 == c1; 2 == c2; 12 == Thera; 13 == Shattered Frig;...
* @param sigGroupId 1 == Combat; 2 == Relic; 3 == Data; ...
* @returns {{}}
*/
let getSignatureTypeNames = (systemTypeId, areaId, sigGroupId) => {
let signatureNames = {};
if(
SignatureType[systemTypeId] &&
SignatureType[systemTypeId][areaId] &&
SignatureType[systemTypeId][areaId][sigGroupId]
){
signatureNames = SignatureType[systemTypeId][areaId][sigGroupId];
}
return signatureNames;
let getSignatureTypeNames = (systemTypeId, areaIds, sigGroupId) => {
return objCombine(...areaIds.map(areaId => getObjVal(SignatureType, [systemTypeId, areaId, sigGroupId].join('.')) || {}));
};
/**
@@ -3396,6 +3311,21 @@ define([
return obj;
}, {});
/**
* combines multiple objects into one object
* -> removes duplicate values
* -> properties are indexed 1, 2,..n
* @param objects
* @returns {{[p: string]: *}}
*/
let objCombine = (...objects) => {
let combined = objects.reduce((acc, obj) => acc.concatFilter(Object.values(obj)), []);
combined.unshift(''); // properties should start at 1 (not 0)
combined = {...combined};
delete combined[0];
return combined;
};
/**
* get deep json object value if exists
* -> e.g. key = 'first.last.third' string

View File

@@ -1,21 +1,118 @@
/**
* Created by exodus4d on 06.07.2015.
* Created by exodus4d
* static signature types
*
* (*) marked fields are in-game verified and
* proofed, signature names (copy & paste from scanning window)
*/
define(['jquery'], ($) => {
define([], () => {
'use strict';
// signature sources
// http://de.sistersprobe.wikia.com/wiki/EVE_Sister_Core_Scanner_Probe_Wiki
// Combat sites ===================================================================================================
let c1Combat = {
1: 'Perimeter Ambush Point',
2: 'Perimeter Camp',
3: 'Phase Catalyst Node',
4: 'The Line'
};
let c2Combat = {
1: 'Perimeter Checkpoint',
2: 'Perimeter Hangar',
3: 'The Ruins of Enclave Cohort 27',
4: 'Sleeper Data Sanctuary'
};
let c3Combat = {
1: 'Fortification Frontier Stronghold',
2: 'Outpost Frontier Stronghold',
3: 'Solar Cell',
4: 'The Oruze Construct'
};
let c4Combat = {
1: 'Frontier Barracks',
2: 'Frontier Command Post',
3: 'Integrated Terminus',
4: 'Sleeper Information Sanctum'
};
let c5Combat = {
1: 'Core Garrison', //*
2: 'Core Stronghold', //*
3: 'Oruze Osobnyk', //*
4: 'Quarantine Area'
};
let c6Combat = {
1: 'Core Citadel', //*
2: 'Core Bastion', //*
3: 'Strange Energy Readings', //*
4: 'The Mirror' //*
};
// Thera WH
let c12Combat = {
1: 'Epicenter',
2: 'Expedition Command Outpost Wreck',
3: 'Planetary Colonization Office Wreck',
4: 'Testing Facilities'
};
// Drifter Sentinel WH
let c14Combat = {
1: 'Monolith',
2: 'Wormhole in Rock Circle',
3: 'Opposing Spatial Rifts',
4: 'Sleeper Enclave Debris',
5: 'Crystal Resource'
};
// Drifter Barbican WH
let c15Combat = {
1: 'Wrecked Ships',
2: 'Unstable Wormhole',
3: 'Spatial Rift',
4: 'Heavily Guarded Spatial Rift',
5: 'Crystals'
};
// Drifter Vidette WH
let c16Combat = {
1: 'Ship Graveyard',
2: 'Sleeper Engineering Station',
3: 'Spatial Rift',
4: 'Sleeper Enclave in Coral Rock',
5: 'Crystals and Stone Circle'
};
// Drifter Conflux WH
let c17Combat = {
1: 'Monolith',
2: 'Caged Wormhole',
3: 'Rock Formation and Wormhole',
4: 'Particle Acceleration Array',
5: 'Guarded Asteroid Station'
};
// Drifter Redoubt WH
let c18Combat = {
1: 'Ship Graveyard',
2: 'Caged Wormhole',
3: 'Spatial Rift Generator',
4: 'Sleeper Enclave',
5: 'Hollow Asteroid'
};
// Relic sites ====================================================================================================
// NullSec Relic sites, which can also spawn in C1, C2, C3 wormholes
let nullSecRelicSites = {
let nullRelic = {
10: 'Ruined Angel Crystal Quarry',
11: 'Ruined Angel Monument Site',
12: 'Ruined Angel Science Outpost',
@@ -38,8 +135,40 @@ define(['jquery'], ($) => {
29: 'Ruined Serpentis Temple Site'
};
let c1Relic = Object.assign({}, nullRelic, {
1: 'Forgotten Perimeter Coronation Platform', //*
2: 'Forgotten Perimeter Power Array' //*
});
let c2Relic = Object.assign({}, nullRelic, {
1: 'Forgotten Perimeter Gateway', //*
2: 'Forgotten Perimeter Habitation Coils' //*
});
let c3Relic = Object.assign({}, nullRelic, {
1: 'Forgotten Frontier Quarantine Outpost', //*
2: 'Forgotten Frontier Recursive Depot' //*
});
let c4Relic = {
1: 'Forgotten Frontier Conversion Module',
2: 'Forgotten Frontier Evacuation Center'
};
let c5Relic = {
1: 'Forgotten Core Data Field',
2: 'Forgotten Core Information Pen'
};
let c6Relic = {
1: 'Forgotten Core Assembly Hall', //*
2: 'Forgotten Core Circuitry Disassembler' //*
};
// Data sites =====================================================================================================
// NulSec Data sites, which can also spawn in C1, C2, C3 wormholes
let nullSecDataSites = {
let nullData = {
10: 'Abandoned Research Complex DA005',
11: 'Abandoned Research Complex DA015',
12: 'Abandoned Research Complex DC007',
@@ -68,413 +197,384 @@ define(['jquery'], ($) => {
35: 'Central Serpentis Survey Site'
};
let c1Data = Object.assign({}, nullData, {
1: 'Unsecured Perimeter Amplifier', //*
2: 'Unsecured Perimeter Information Center' //*
});
let c2Data = Object.assign({}, nullData, {
1: 'Unsecured Perimeter Comms Relay', //*
2: 'Unsecured Perimeter Transponder Farm' //*
});
let c3Data = Object.assign({}, nullData, {
1: 'Unsecured Frontier Database', //*
2: 'Unsecured Frontier Receiver' //*
});
let c4Data = {
1: 'Unsecured Frontier Digital Nexus',
2: 'Unsecured Frontier Trinary Hub'
};
let c5Data = {
1: 'Unsecured Frontier Enclave Relay',
2: 'Unsecured Frontier Server Bank'
};
let c6Data = {
1: 'Unsecured Core Backup Array', //*
2: 'Unsecured Core Emergence' //*
};
// Gas sites ======================================================================================================
let c1Gas = {
1: 'Barren Perimeter Reservoir', //*
2: 'Token Perimeter Reservoir', //*
3: 'Minor Perimeter Reservoir', //*
4: 'Sizeable Perimeter Reservoir', //*
5: 'Ordinary Perimeter Reservoir' //*
};
let c2Gas = {
1: 'Barren Perimeter Reservoir', //*
2: 'Token Perimeter Reservoir', //*
3: 'Minor Perimeter Reservoir', //*
4: 'Sizeable Perimeter Reservoir', //*
5: 'Ordinary Perimeter Reservoir' //*
};
let c3Gas = {
1: 'Barren Perimeter Reservoir', //*
2: 'Token Perimeter Reservoir', //*
3: 'Minor Perimeter Reservoir', //*
4: 'Sizeable Perimeter Reservoir', //*
5: 'Ordinary Perimeter Reservoir', //*
6: 'Bountiful Frontier Reservoir', //*
7: 'Vast Frontier Reservoir' //*
};
let c4Gas = {
1: 'Barren Perimeter Reservoir', //*
2: 'Token Perimeter Reservoir', //*
3: 'Minor Perimeter Reservoir', //*
4: 'Sizeable Perimeter Reservoir', //*
5: 'Ordinary Perimeter Reservoir', //*
6: 'Vast Frontier Reservoir', //*
7: 'Bountiful Frontier Reservoir' //*
};
let c5Gas = {
1: 'Barren Perimeter Reservoir', //*
2: 'Minor Perimeter Reservoir', //*
3: 'Ordinary Perimeter Reservoir', //*
4: 'Sizeable Perimeter Reservoir', //*
5: 'Token Perimeter Reservoir', //*
6: 'Bountiful Frontier Reservoir', //*
7: 'Vast Frontier Reservoir', //*
8: 'Instrumental Core Reservoir', //*
9: 'Vital Core Reservoir' //*
};
let c6Gas = {
1: 'Barren Perimeter Reservoir', //*
2: 'Minor Perimeter Reservoir', //*
3: 'Ordinary Perimeter Reservoir', //*
4: 'Sizeable Perimeter Reservoir', //*
5: 'Token Perimeter Reservoir', //*
6: 'Bountiful Frontier Reservoir', //*
7: 'Vast Frontier Reservoir', //*
8: 'Instrumental Core Reservoir', //*
9: 'Vital Core Reservoir' //*
};
// Ore sites ======================================================================================================
let c1Ore = {
1: 'Ordinary Perimeter Deposit', //*
2: 'Common Perimeter Deposit', //*
3: 'Unexceptional Frontier Deposit', //*
4: 'Average Frontier Deposit', //*
5: 'Isolated Core Deposit', //*
6: 'Uncommon Core Deposit' //*
};
let c2Ore = {
1: 'Ordinary Perimeter Deposit', //*
2: 'Common Perimeter Deposit', //*
3: 'Unexceptional Frontier Deposit', //*
4: 'Average Frontier Deposit', //*
5: 'Isolated Core Deposit', //*
6: 'Uncommon Core Deposit' //*
};
let c3Ore = {
1: 'Ordinary Perimeter Deposit', //*
2: 'Common Perimeter Deposit', //*
3: 'Unexceptional Frontier Deposit', //*
4: 'Average Frontier Deposit', //*
5: 'Infrequent Core Deposit', //*
6: 'Unusual Core Deposit' //*
};
let c4Ore = {
1: 'Ordinary Perimeter Deposit', //*
2: 'Common Perimeter Deposit', //*
3: 'Unexceptional Frontier Deposit', //*
4: 'Average Frontier Deposit', //*
5: 'Unusual Core Deposit', //*
6: 'Infrequent Core Deposit' //*
};
let c5Ore = {
1: 'Average Frontier Deposit', //*
2: 'Unexceptional Frontier Deposit', //*
3: 'Uncommon Core Deposit', //*
4: 'Ordinary Perimeter Deposit', //*
5: 'Common Perimeter Deposit', //*
6: 'Exceptional Core Deposit', //*
7: 'Infrequent Core Deposit', //*
8: 'Unusual Core Deposit', //*
9: 'Rarified Core Deposit', //*
10: 'Isolated Core Deposit' //*
};
let c6Ore = {
1: 'Ordinary Perimeter Deposit', //*
2: 'Common Perimeter Deposit', //*
3: 'Unexceptional Frontier Deposit', //*
4: 'Average Frontier Deposit', //*
5: 'Rarified Core Deposit' //*
};
// Wormholes ======================================================================================================
// all k-space exits are static or K162
let c1WH = {
1: 'H121 - C1',
2: 'C125 - C2',
3: 'O883 - C3',
4: 'M609 - C4',
5: 'L614 - C5',
6: 'S804 - C6',
7: 'F353 - C12 Thera'
};
// all w-space -> w-space are statics or K162
let c2WH = {
1: 'Z647 - C1',
2: 'D382 - C2',
3: 'O477 - C3',
4: 'Y683 - C4',
5: 'N062 - C5',
6: 'R474 - C6',
7: 'F135 - C12 Thera'
};
// all k-space exits are static or K162
let c3WH = {
1: 'V301 - C1',
2: 'I182 - C2',
3: 'N968 - C3',
4: 'T405 - C4',
5: 'N770 - C5',
6: 'A982 - C6',
7: 'F135 - C12 Thera'
};
// no *wandering* w-space -> w-space
// all holes are statics or K162
let c4WH = {
1: 'S047 - H',
2: 'N290 - L',
3: 'K329 - 0.0'
};
let c5WH = {
1: 'D792 - H',
2: 'C140 - L',
3: 'Z142 - 0.0'
};
let c6WH = {
1: 'B520 - H',
2: 'D792 - H',
3: 'C140 - L',
4: 'C391 - L',
5: 'C248 - 0.0',
6: 'Z142 - 0.0'
};
// Shattered WH (some of them are static)
let c13WH = {
1: 'P060 - C1',
2: 'Z647 - C1',
3: 'D382 - C2',
4: 'L005 - C2',
5: 'N766 - C2',
6: 'C247 - C3',
7: 'M267 - C3',
8: 'O477 - C3',
9: 'X877 - C4',
10: 'Y683 - C4',
11: 'H296 - C5',
12: 'H900 - C5',
13: 'H296 - C5',
14: 'N062 - C5', // ??
15: 'V911 - C5',
16: 'U574 - C6',
17: 'V753 - C6',
18: 'W237 - C6',
19: 'B274 - H',
20: 'D792 - H',
21: 'D845 - H',
22: 'N110 - H',
23: 'A239 - L',
24: 'C391 - L',
25: 'J244 - L',
26: 'U201 - L', // ??
27: 'U210 - L',
28: 'C248 - 0.0',
29: 'E545 - 0.0',
30: 'K346 - 0.0',
31: 'Z060 - 0.0'
};
let hsWH = {
1: 'Z971 - C1',
2: 'R943 - C2',
3: 'X702 - C3',
4: 'O128 - C4',
5: 'M555 - C5',
6: 'B041 - C6',
7: 'A641 - H',
8: 'R051 - L',
9: 'V283 - 0.0',
10: 'T458 - C12 Thera'
};
let lsWH = {
1: 'Z971 - C1',
2: 'R943 - C2',
3: 'X702 - C3',
4: 'O128 - C4',
5: 'N432 - C5',
6: 'U319 - C6',
7: 'B449 - H',
8: 'N944 - L',
9: 'S199 - 0.0',
10: 'M164 - C12 Thera'
};
let nullWH = {
1: 'Z971 - C1',
2: 'R943 - C2',
3: 'X702 - C3',
4: 'O128 - C4',
5: 'N432 - C5',
6: 'U319 - C6',
7: 'B449 - H',
8: 'N944 - L',
9: 'S199 - 0.0',
10: 'L031 - C12 Thera'
};
// ================================================================================================================
// Signature types
// ================================================================================================================
// signature types
let signatureTypes = {
return {
1: { // system type (wh)
1: { // C1 (area id)
1: { // Combat
1: 'Perimeter Ambush Point',
2: 'Perimeter Camp',
3: 'Phase Catalyst Node',
4: 'The Line'
},
2: $.extend({}, nullSecRelicSites, { // Relic
1: 'Forgotten Perimeter Coronation Platform', //*
2: 'Forgotten Perimeter Power Array' //*
}),
3: $.extend({}, nullSecDataSites, { // Data
1: 'Unsecured Perimeter Amplifier', //*
2: 'Unsecured Perimeter Information Center' //*
}),
4: { // Gas
1: 'Barren Perimeter Reservoir', //*
2: 'Token Perimeter Reservoir', //*
3: 'Minor Perimeter Reservoir', //*
4: 'Sizeable Perimeter Reservoir', //*
5: 'Ordinary Perimeter Reservoir' //*
},
5: { // Wormhole
// all k-space exits are static or K162
1: 'H121 - C1',
2: 'C125 - C2',
3: 'O883 - C3',
4: 'M609 - C4',
5: 'L614 - C5',
6: 'S804 - C6',
7: 'F353 - C12 Thera'
},
6: { // ORE
1: 'Ordinary Perimeter Deposit', //*
2: 'Common Perimeter Deposit', //*
3: 'Unexceptional Frontier Deposit', //*
4: 'Average Frontier Deposit', //*
5: 'Isolated Core Deposit', //*
6: 'Uncommon Core Deposit' //*
},
7: { // Ghost
}
1: c1Combat,
2: c1Relic,
3: c1Data,
4: c1Gas,
5: c1WH,
6: c1Ore,
7: {} // Ghost
},
2: { // C2
1: { // Combat
1: 'Perimeter Checkpoint',
2: 'Perimeter Hangar',
3: 'The Ruins of Enclave Cohort 27',
4: 'Sleeper Data Sanctuary'
},
2: $.extend({}, nullSecRelicSites, { // Relic
1: 'Forgotten Perimeter Gateway', //*
2: 'Forgotten Perimeter Habitation Coils' //*
}),
3: $.extend({}, nullSecDataSites, { // Data
1: 'Unsecured Perimeter Comms Relay', //*
2: 'Unsecured Perimeter Transponder Farm' //*
}),
4: { // Gas
1: 'Barren Perimeter Reservoir', //*
2: 'Token Perimeter Reservoir', //*
3: 'Minor Perimeter Reservoir', //*
4: 'Sizeable Perimeter Reservoir', //*
5: 'Ordinary Perimeter Reservoir' //*
},
5: { // Wormhole
// all w-space -> w-space are statics or K162
1: 'Z647 - C1',
2: 'D382 - C2',
3: 'O477 - C3',
4: 'Y683 - C4',
5: 'N062 - C5',
6: 'R474 - C6',
7: 'F135 - C12 Thera'
},
6: { // ORE
1: 'Ordinary Perimeter Deposit', //*
2: 'Common Perimeter Deposit', //*
3: 'Unexceptional Frontier Deposit', //*
4: 'Average Frontier Deposit', //*
5: 'Isolated Core Deposit', //*
6: 'Uncommon Core Deposit' //*
},
7: { // Ghost
}
1: c2Combat,
2: c2Relic,
3: c2Data,
4: c2Gas,
5: c2WH,
6: c2Ore,
7: {} // Ghost
},
3: { // C3
1: { // Combat
1: 'Fortification Frontier Stronghold',
2: 'Outpost Frontier Stronghold',
3: 'Solar Cell',
4: 'The Oruze Construct'
},
2: $.extend({}, nullSecRelicSites, { // Relic
1: 'Forgotten Frontier Quarantine Outpost', //*
2: 'Forgotten Frontier Recursive Depot' //*
}),
3: $.extend({}, nullSecDataSites, { // Data
1: 'Unsecured Frontier Database', //*
2: 'Unsecured Frontier Receiver' //*
}),
4: { // Gas
1: 'Barren Perimeter Reservoir', //*
2: 'Token Perimeter Reservoir', //*
3: 'Minor Perimeter Reservoir', //*
4: 'Sizeable Perimeter Reservoir', //*
5: 'Ordinary Perimeter Reservoir', //*
6: 'Bountiful Frontier Reservoir', //*
7: 'Vast Frontier Reservoir' //*
},
5: { // Wormhole
// all k-space exits are static or K162
1: 'V301 - C1',
2: 'I182 - C2',
3: 'N968 - C3',
4: 'T405 - C4',
5: 'N770 - C5',
6: 'A982 - C6',
7: 'F135 - C12 Thera'
},
6: { // ORE
1: 'Ordinary Perimeter Deposit', //*
2: 'Common Perimeter Deposit', //*
3: 'Unexceptional Frontier Deposit', //*
4: 'Average Frontier Deposit', //*
5: 'Infrequent Core Deposit', //*
6: 'Unusual Core Deposit' //*
},
7: { // Ghost
}
1: c3Combat,
2: c3Relic,
3: c3Data,
4: c3Gas,
5: c3WH,
6: c3Ore,
7: {} // Ghost
},
4: { // C4
1: { // Combat
1: 'Frontier Barracks',
2: 'Frontier Command Post',
3: 'Integrated Terminus',
4: 'Sleeper Information Sanctum'
},
2: { // Relic
1: 'Forgotten Frontier Conversion Module',
2: 'Forgotten Frontier Evacuation Center'
},
3: { // Data
1: 'Unsecured Frontier Digital Nexus',
2: 'Unsecured Frontier Trinary Hub'
},
4: { // Gas
1: 'Barren Perimeter Reservoir', //*
2: 'Token Perimeter Reservoir', //*
3: 'Minor Perimeter Reservoir', //*
4: 'Sizeable Perimeter Reservoir', //*
5: 'Ordinary Perimeter Reservoir', //*
6: 'Vast Frontier Reservoir', //*
7: 'Bountiful Frontier Reservoir' //*
},
5: { // Wormhole
// no *wandering* w-space -> w-space
// all holes are statics or K162
1: 'S047 - H',
2: 'N290 - L',
3: 'K329 - 0.0'
},
6: { // ORE
1: 'Ordinary Perimeter Deposit', //*
2: 'Common Perimeter Deposit', //*
3: 'Unexceptional Frontier Deposit', //*
4: 'Average Frontier Deposit', //*
5: 'Unusual Core Deposit', //*
6: 'Infrequent Core Deposit' //*
},
7: { // Ghost
}
1: c4Combat,
2: c4Relic,
3: c4Data,
4: c4Gas,
5: c4WH,
6: c4Ore,
7: {} // Ghost
},
5: { // C5
1: { // Combat
1: 'Core Garrison', //*
2: 'Core Stronghold', //*
3: 'Oruze Osobnyk', //*
4: 'Quarantine Area'
},
2: { // Relic
1: 'Forgotten Core Data Field',
2: 'Forgotten Core Information Pen'
},
3: { // Data
1: 'Unsecured Frontier Enclave Relay',
2: 'Unsecured Frontier Server Bank'
},
4: { // Gas
1: 'Barren Perimeter Reservoir', //*
2: 'Minor Perimeter Reservoir', //*
3: 'Ordinary Perimeter Reservoir', //*
4: 'Sizeable Perimeter Reservoir', //*
5: 'Token Perimeter Reservoir', //*
6: 'Bountiful Frontier Reservoir', //*
7: 'Vast Frontier Reservoir', //*
8: 'Instrumental Core Reservoir', //*
9: 'Vital Core Reservoir' //*
},
5: { // Wormhole
1: 'D792 - H',
2: 'C140 - L',
3: 'Z142 - 0.0'
},
6: { // ORE
1: 'Average Frontier Deposit', //*
2: 'Unexceptional Frontier Deposit', //*
3: 'Uncommon Core Deposit', //*
4: 'Ordinary Perimeter Deposit', //*
5: 'Common Perimeter Deposit', //*
6: 'Exceptional Core Deposit', //*
7: 'Infrequent Core Deposit', //*
8: 'Unusual Core Deposit', //*
9: 'Rarified Core Deposit', //*
10: 'Isolated Core Deposit' //*
},
7: { // Ghost
}
1: c5Combat,
2: c5Relic,
3: c5Data,
4: c5Gas,
5: c5WH,
6: c5Ore,
7: {} // Ghost
},
6: { // C6
1: { // Combat
1: 'Core Citadel', //*
2: 'Core Bastion', //*
3: 'Strange Energy Readings', //*
4: 'The Mirror' //*
},
2: { // Relic
1: 'Forgotten Core Assembly Hall', //*
2: 'Forgotten Core Circuitry Disassembler' //*
},
3: { // Data
1: 'Unsecured Core Backup Array', //*
2: 'Unsecured Core Emergence' //*
},
4: { // Gas
1: 'Barren Perimeter Reservoir', //*
2: 'Minor Perimeter Reservoir', //*
3: 'Ordinary Perimeter Reservoir', //*
4: 'Sizeable Perimeter Reservoir', //*
5: 'Token Perimeter Reservoir', //*
6: 'Bountiful Frontier Reservoir', //*
7: 'Vast Frontier Reservoir', //*
8: 'Instrumental Core Reservoir', //*
9: 'Vital Core Reservoir' //*
},
5: { // Wormhole
1: 'B520 - H',
2: 'D792 - H',
3: 'C140 - L',
4: 'C391 - L',
5: 'C248 - 0.0',
6: 'Z142 - 0.0'
},
6: { // ORE
1: 'Ordinary Perimeter Deposit', //*
2: 'Common Perimeter Deposit', //*
3: 'Unexceptional Frontier Deposit', //*
4: 'Average Frontier Deposit', //*
5: 'Rarified Core Deposit' //*
},
1: c6Combat,
2: c6Relic,
3: c6Data,
4: c6Gas,
5: c6WH,
6: c6Ore,
7: { // Ghost
1: 'Superior Blood Raider Covert Research Facility' //*
}
},
12: { // Thera wormhole
1: { // Combat
1: 'Epicenter',
2: 'Expedition Command Outpost Wreck',
3: 'Planetary Colonization Office Wreck',
4: 'Testing Facilities'
}
12: { // Thera WH
1: c12Combat
},
13: { // Shattered Wormholes
5: { // Wormhole (some of them are static)
1: 'P060 - C1',
2: 'Z647 - C1',
3: 'D382 - C2',
4: 'L005 - C2',
5: 'N766 - C2',
6: 'C247 - C3',
7: 'M267 - C3',
8: 'O477 - C3',
9: 'X877 - C4',
10: 'Y683 - C4',
11: 'H296 - C5',
12: 'H900 - C5',
13: 'H296 - C5',
14: 'N062 - C5', // ??
15: 'V911 - C5',
16: 'U574 - C6',
17: 'V753 - C6',
18: 'W237 - C6',
19: 'B274 - H',
20: 'D792 - H',
21: 'D845 - H',
22: 'N110 - H',
23: 'A239 - L',
24: 'C391 - L',
25: 'J244 - L',
26: 'U201 - L', // ??
27: 'U210 - L',
28: 'C248 - 0.0',
29: 'E545 - 0.0',
30: 'K346 - 0.0',
31: 'Z060 - 0.0'
}
13: { // Shattered WH
5: c13WH
},
14: { // Drifter Sentinel WH
1: { // Combat
1: 'Monolith',
2: 'Wormhole in Rock Circle',
3: 'Opposing Spatial Rifts',
4: 'Sleeper Enclave Debris',
5: 'Crystal Resource'
}
1: c14Combat
},
15: { // Drifter Barbican WH
1: { // Combat
1: 'Wrecked Ships',
2: 'Unstable Wormhole',
3: 'Spatial Rift',
4: 'Heavily Guarded Spatial Rift',
5: 'Crystals'
}
1: c15Combat
},
16: { // Drifter Vidette WH
1: { // Combat
1: 'Ship Graveyard',
2: 'Sleeper Engineering Station',
3: 'Spatial Rift',
4: 'Sleeper Enclave in Coral Rock',
5: 'Crystals and Stone Circle'
}
1: c16Combat
},
17: { // Drifter Conflux WH
1: { // Combat
1: 'Monolith',
2: 'Caged Wormhole',
3: 'Rock Formation and Wormhole',
4: 'Particle Acceleration Array',
5: 'Guarded Asteroid Station'
}
1: c17Combat
},
18: { // Drifter Redoubt WH
1: { // Combat
1: 'Ship Graveyard',
2: 'Caged Wormhole',
3: 'Spatial Rift Generator',
4: 'Sleeper Enclave',
5: 'Hollow Asteroid'
}
1: c18Combat
}
}, // system type (k-space)
2: {
2: {
30: { // High Sec
5: { // Wormhole
1: 'Z971 - C1',
2: 'R943 - C2',
3: 'X702 - C3',
4: 'O128 - C4',
5: 'M555 - C5',
6: 'B041 - C6',
7: 'A641 - H',
8: 'R051 - L',
9: 'V283 - 0.0',
10: 'T458 - C12 Thera'
}
5: hsWH
},
31: { // Low Sec
5: { // Wormhole
1: 'Z971 - C1',
2: 'R943 - C2',
3: 'X702 - C3',
4: 'O128 - C4',
5: 'N432 - C5',
6: 'U319 - C6',
7: 'B449 - H',
8: 'N944 - L',
9: 'S199 - 0.0',
10: 'M164 - C12 Thera'
}
5: lsWH
},
32: { // 0.0
5: { // Wormhole
1: 'Z971 - C1',
2: 'R943 - C2',
3: 'X702 - C3',
4: 'O128 - C4',
5: 'N432 - C5',
6: 'U319 - C6',
7: 'B449 - H',
8: 'N944 - L',
9: 'S199 - 0.0',
10: 'L031 - C12 Thera'
}
5: nullWH
}
}
};
return signatureTypes;
});

View File

@@ -3,10 +3,20 @@
*/
define([], () => {
'use strict';
let Config = {
let frigWH = {
1: 'E004 - C1',
2: 'L005 - C2',
3: 'Z006 - C3',
4: 'M001 - C4',
5: 'C008 - C5',
6: 'G008 - C6',
7: 'Q003 - 0.0',
8: 'A009 - C13'
};
return {
path: {
img: '/public/img/', // path for images
api: '/api/rest', //ajax URL - REST API
@@ -49,12 +59,12 @@ define([], () => {
gitHubReleases: '/api/github/releases' // ajax URL - get release info from GitHub
},
breakpoints: [
{ name: 'screen-xl', width: Infinity },
{ name: 'screen-l', width: 1600 },
{ name: 'screen-m', width: 1200 },
{ name: 'screen-d', width: 1000 },
{ name: 'screen-s', width: 780 },
{ name: 'screen-xs', width: 480 }
{name: 'screen-xl', width: Infinity},
{name: 'screen-l', width: 1600},
{name: 'screen-m', width: 1200},
{name: 'screen-d', width: 1000},
{name: 'screen-s', width: 780},
{name: 'screen-xs', width: 480}
],
animationSpeed: {
splashOverlay: 300, // "splash" loading overlay
@@ -95,63 +105,63 @@ define([], () => {
class: 'fa-desktop',
label: 'desktop',
unicode: '&#xf108;'
},{
}, {
class: 'fa-space-shuttle',
label: 'space shuttle',
unicode: '&#xf197;'
},{
}, {
class: 'fa-anchor',
label: 'anchor',
unicode: '&#xf13d;'
},{
}, {
class: 'fa-satellite',
label: 'satellite',
unicode: '&#xf7bf;'
},{
}, {
class: 'fa-skull-crossbones',
label: 'skull crossbones',
unicode: '&#xf714;'
},{
}, {
class: 'fa-fire',
label: 'fire',
unicode: '&#xf06d;'
},{
}, {
class: 'fa-bookmark',
label: 'bookmark',
unicode: '&#xf02e;'
},{
}, {
class: 'fa-cube',
label: 'cube',
unicode: '&#xf1b2;'
},{
}, {
class: 'fa-star',
label: 'star',
unicode: '&#xf005;'
},{
}, {
class: 'fa-hat-wizard',
label: 'hat wizard',
unicode: '&#xf6e8;'
},{
}, {
class: 'fa-plane',
label: 'plane',
unicode: '&#xf072;'
},{
}, {
class: 'fa-globe',
label: 'globe',
unicode: '&#xf0ac;'
},{
}, {
class: 'fa-rocket',
label: 'rocket',
unicode: '&#xf135;'
},{
}, {
class: 'fa-life-ring',
label: 'life ring',
unicode: '&#xf1cd;'
},{
}, {
class: 'fa-heart',
label: 'heart',
unicode: '&#xf004;'
},{
}, {
class: 'fa-poop',
label: 'poop',
unicode: '&#xf619;'
@@ -541,106 +551,16 @@ define([], () => {
},
// frigate wormholes
frigateWormholes: {
1: { // C1
1: 'E004 - C1',
2: 'L005 - C2',
3: 'Z006 - C3',
4: 'M001 - C4',
5: 'C008 - C5',
6: 'G008 - C6',
7: 'Q003 - 0.0',
8: 'A009 - C13'
},
2: { // C2
1: 'E004 - C1',
2: 'L005 - C2',
3: 'Z006 - C3',
4: 'M001 - C4',
5: 'C008 - C5',
6: 'G008 - C6',
7: 'Q003 - 0.0',
8: 'A009 - C13'
},
3: { // C3
1: 'E004 - C1',
2: 'L005 - C2',
3: 'Z006 - C3',
4: 'M001 - C4',
5: 'C008 - C5',
6: 'G008 - C6',
7: 'Q003 - 0.0',
8: 'A009 - C13'
},
4: { // C4
1: 'E004 - C1',
2: 'L005 - C2',
3: 'Z006 - C3',
4: 'M001 - C4',
5: 'C008 - C5',
6: 'G008 - C6',
7: 'Q003 - 0.0',
8: 'A009 - C13'
},
5: { // C5
1: 'E004 - C1',
2: 'L005 - C2',
3: 'Z006 - C3',
4: 'M001 - C4',
5: 'C008 - C5',
6: 'G008 - C6',
7: 'Q003 - 0.0',
8: 'A009 - C13'
},
6: { // C6
1: 'E004 - C1',
2: 'L005 - C2',
3: 'Z006 - C3',
4: 'M001 - C4',
5: 'C008 - C5',
6: 'G008 - C6',
7: 'Q003 - 0.0',
8: 'A009 - C13'
},
13: { // Shattered Wormholes (some of them are static)
1: 'E004 - C1',
2: 'L005 - C2',
3: 'Z006 - C3',
4: 'M001 - C4',
5: 'C008 - C5',
6: 'G008 - C6',
7: 'Q003 - 0.0',
8: 'A009 - C13'
},
30: { // High Sec
1: 'E004 - C1',
2: 'L005 - C2',
3: 'Z006 - C3',
4: 'M001 - C4',
5: 'C008 - C5',
6: 'G008 - C6',
7: 'Q003 - 0.0',
8: 'A009 - C13'
},
31: { // Low Sec
1: 'E004 - C1',
2: 'L005 - C2',
3: 'Z006 - C3',
4: 'M001 - C4',
5: 'C008 - C5',
6: 'G008 - C6',
7: 'Q003 - 0.0',
8: 'A009 - C13'
},
32: { // 0.0
1: 'E004 - C1',
2: 'L005 - C2',
3: 'Z006 - C3',
4: 'M001 - C4',
5: 'C008 - C5',
6: 'G008 - C6',
7: 'Q003 - 0.0',
8: 'A009 - C13'
}
1: frigWH, // C1
2: frigWH, // C2
3: frigWH, // C3
4: frigWH, // C4
5: frigWH, // C5
6: frigWH, // C6
13: frigWH, // Shattered Wormholes (some of them are static)
30: frigWH, // High Sec
31: frigWH, // Low Sec
32: frigWH // 0.0
},
// Drifter wormholes (can only appear in k-space)
drifterWormholes: {
@@ -660,8 +580,5 @@ define([], () => {
6: 'K162 - 0.0',
7: 'K162 - C12 Thera'
}
};
return Config;
});

95
public/js/v1.5.5/app/lib/prototypes.js vendored Normal file
View File

@@ -0,0 +1,95 @@
define([], () => {
'use strict';
/**
* Array diff
* [1,2,3,4,5].diff([4,5,6]) => [1,2,3]
* @param a
* @returns {*[]}
*/
Array.prototype.diff = function(a){
return this.filter(i => !a.includes(i));
};
/**
* Array intersect
* [1,2,3,4,5].intersect([4,5,6]) => [4,5]
* @param a
* @returns {*[]}
*/
Array.prototype.intersect = function(a){
return this.filter(i => a.includes(i));
};
/**
* compares two arrays if all elements in a are also in b
* element order is ignored
* @param a
* @returns {boolean}
*/
Array.prototype.equalValues = function(a){
return this.diff(a).concat(a.diff(this)).length === 0;
};
/**
* like Array.concat() + remove duplicate values
* @see https://stackoverflow.com/a/38940354/4329969
* @param a
* @returns {*[]}
*/
Array.prototype.concatFilter = function(a){
return [...new Set([...this,...a])];
};
/**
* sort array of objects by property name
* @param p
* @returns {Array.<T>}
*/
Array.prototype.sortBy = function(p){
return this.slice(0).sort((a,b) => {
return (a[p] > b[p]) ? 1 : (a[p] < b[p]) ? -1 : 0;
});
};
/**
* capitalize first letter
* @returns {string}
*/
String.prototype.capitalize = function(){
return this.charAt(0).toUpperCase() + this.slice(1);
};
/**
* get hash from string
* @returns {number}
*/
String.prototype.hashCode = function(){
let hash = 0, i, chr;
if(this.length === 0) return hash;
for(i = 0; i < this.length; i++){
chr = this.charCodeAt(i);
hash = ((hash << 5) - hash) + chr;
hash |= 0; // Convert to 32bit integer
}
return hash;
};
String.prototype.trimLeftChars = function(charList){
if(charList === undefined)
charList = '\\s';
return this.replace(new RegExp('^[' + charList + ']+'), '');
};
String.prototype.trimRightChars = function(charList){
if(charList === undefined)
charList = '\\s';
return this.replace(new RegExp('[' + charList + ']+$'), '');
};
String.prototype.trimChars = function(charList){
return this.trimLeftChars(charList).trimRightChars(charList);
};
return {};
});

View File

@@ -228,6 +228,30 @@ define([
return sum;
};
/**
* Some signatures types can spawn in more than one 'areaId' for a 'groupId'
* -> e.g. a 'shattered' C3 WHs have Combat/Relic/.. sites from C2, C3, c4!
* https://github.com/exodus4d/pathfinder/issues/875
* @param systemTypeId
* @param areaId
* @param groupId
* @param shattered
* @returns {[*]}
*/
let getAreaIdsForSignatureTypeOptions = (systemTypeId, areaId, groupId, shattered = false) => {
let areaIds = [areaId];
if(
systemTypeId === 1 && shattered &&
[1, 2, 3, 4, 5, 6].includes(areaId) &&
[1, 2, 3, 4, 6].includes(groupId)
){
areaIds = [areaId - 1, areaId, areaId + 1].filter(areaId => areaId >= 1 && areaId <= 6);
}
return areaIds;
};
/**
* get possible frig holes that could spawn in a system
* filtered by "systemTypeId"
@@ -245,13 +269,14 @@ define([
/**
* get all signature types that can exist for a given system
* -> result is partially cached
* @param systemData
* @param systemTypeId
* @param areaId
* @param groupId
* @returns {Array}
* @param statics
* @param shattered
* @returns {[]|*}
*/
let getSignatureTypeOptions = (systemData, systemTypeId, areaId, groupId) => {
let getSignatureTypeOptions = (systemTypeId, areaId, groupId, {statics = null, shattered = false} = {}) => {
systemTypeId = parseInt(systemTypeId || 0);
areaId = parseInt(areaId || 0);
groupId = parseInt(groupId || 0);
@@ -262,7 +287,10 @@ define([
return newSelectOptions;
}
let cacheKey = [systemTypeId, areaId, groupId].join('_');
// check if sig types require more than one 'areaId' to be checked
let areaIds = getAreaIdsForSignatureTypeOptions(systemTypeId, areaId, groupId, shattered);
let cacheKey = [systemTypeId, ...areaIds, groupId].join('_');
newSelectOptions = sigTypeOptionsCache.getOrDefault(cacheKey, []);
@@ -275,7 +303,7 @@ define([
}else{
// get new Options ----------
// get all possible "static" signature names by the selected groupId
let tempSelectOptions = Util.getSignatureTypeNames(systemTypeId, areaId, groupId);
let tempSelectOptions = Util.getSignatureTypeNames(systemTypeId, areaIds, groupId);
// format options into array with objects advantages: keep order, add more options (whs), use optgroup
if(tempSelectOptions){
@@ -312,7 +340,7 @@ define([
frigateHoles.hasOwnProperty(frigKey)
){
newSelectOptionsCount++;
frigateWHData.push( {value: newSelectOptionsCount, text: frigateHoles[frigKey]} );
frigateWHData.push({value: newSelectOptionsCount, text: frigateHoles[frigKey]});
}
}
@@ -329,7 +357,7 @@ define([
Init.drifterWormholes.hasOwnProperty(drifterKey)
){
newSelectOptionsCount++;
drifterWHData.push( {value: newSelectOptionsCount, text: Init.drifterWormholes[drifterKey]} );
drifterWHData.push({value: newSelectOptionsCount, text: Init.drifterWormholes[drifterKey]});
}
}
@@ -346,12 +374,12 @@ define([
Init.incomingWormholes.hasOwnProperty(incomingKey)
){
newSelectOptionsCount++;
incomingWHData.push( {value: newSelectOptionsCount, text: Init.incomingWormholes[incomingKey]} );
incomingWHData.push({value: newSelectOptionsCount, text: Init.incomingWormholes[incomingKey]});
}
}
if(incomingWHData.length > 0){
newSelectOptions.push({ text: 'Incoming', children: incomingWHData});
newSelectOptions.push({text: 'Incoming', children: incomingWHData});
}
}else{
// groups without "children" (optgroup) should be sorted by "value"
@@ -363,17 +391,17 @@ define([
sigTypeOptionsCache.set(cacheKey, newSelectOptions.slice(0));
}
// static wormholes (DO NOT CACHE) (not all C2 WHs have the same statics,...
// static wormholes (DO NOT CACHE) (not all C2 WHs have the same statics..)
if(groupId === 5){
// add static WH(s) for this system
if(systemData.statics){
if(statics){
let staticWHData = [];
for(let wormholeName of systemData.statics){
for(let wormholeName of statics){
let wormholeData = Object.assign({}, Init.wormholes[wormholeName]);
let staticWHName = wormholeData.name + ' - ' + wormholeData.security;
newSelectOptionsCount++;
staticWHData.push( {value: newSelectOptionsCount, text: staticWHName} );
staticWHData.push({value: newSelectOptionsCount, text: staticWHName});
}
if(staticWHData.length > 0){
@@ -395,7 +423,7 @@ define([
let systemTypeId = systemElement.data('typeId');
let areaId = Util.getAreaIdBySecurity(systemElement.data('security'));
let systemData = {statics: systemElement.data('statics')};
return getSignatureTypeOptions(systemData, systemTypeId, areaId, groupId);
return getSignatureTypeOptions(systemTypeId, areaId, groupId, systemData);
};
/**
@@ -892,10 +920,10 @@ define([
let sigDescriptionLowerCase = sigDescription.toLowerCase();
let typeOptions = getSignatureTypeOptions(
systemData,
systemData.type.id,
Util.getAreaIdBySecurity(systemData.security),
sigGroupId
sigGroupId,
systemData
);
for(let [key, name] of Object.entries(Util.flattenXEditableSelectArray(typeOptions))){
@@ -1759,10 +1787,10 @@ define([
let rowData = tableApi.row($(cell).parents('tr')).data();
let typeOptions = getSignatureTypeOptions(
systemData,
systemData.type.id,
Util.getAreaIdBySecurity(systemData.security),
rowData.groupId
rowData.groupId,
systemData
);
return typeOptions;
},

View File

@@ -4,6 +4,7 @@
define([
'jquery',
'app/init',
'app/lib/prototypes',
'app/lib/console',
'conf/system_effect',
'conf/signature_type',
@@ -19,7 +20,7 @@ define([
'bootstrapConfirmation',
'bootstrapToggle',
'select2'
], ($, Init, Con, SystemEffect, SignatureType, bootbox, localforage) => {
], ($, Init, Proto, Con, SystemEffect, SignatureType, bootbox, localforage) => {
'use strict';
@@ -973,85 +974,6 @@ define([
*/
let initPrototypes = () => {
/**
* Array diff
* [1,2,3,4,5].diff([4,5,6]) => [1,2,3]
* @param a
* @returns {*[]}
*/
Array.prototype.diff = function(a){
return this.filter(i => !a.includes(i));
};
/**
* Array intersect
* [1,2,3,4,5].intersect([4,5,6]) => [4,5]
* @param a
* @returns {*[]}
*/
Array.prototype.intersect = function(a){
return this.filter(i => a.includes(i));
};
/**
* compares two arrays if all elements in a are also in b
* element order is ignored
* @param a
* @returns {boolean}
*/
Array.prototype.equalValues = function(a){
return this.diff(a).concat(a.diff(this)).length === 0;
};
/**
* sort array of objects by property name
* @param p
* @returns {Array.<T>}
*/
Array.prototype.sortBy = function(p){
return this.slice(0).sort((a,b) => {
return (a[p] > b[p]) ? 1 : (a[p] < b[p]) ? -1 : 0;
});
};
/**
* capitalize first letter
* @returns {string}
*/
String.prototype.capitalize = function(){
return this.charAt(0).toUpperCase() + this.slice(1);
};
/**
* get hash from string
* @returns {number}
*/
String.prototype.hashCode = function(){
let hash = 0, i, chr;
if(this.length === 0) return hash;
for(i = 0; i < this.length; i++){
chr = this.charCodeAt(i);
hash = ((hash << 5) - hash) + chr;
hash |= 0; // Convert to 32bit integer
}
return hash;
};
String.prototype.trimLeftChars = function(charList){
if(charList === undefined)
charList = '\\s';
return this.replace(new RegExp('^[' + charList + ']+'), '');
};
String.prototype.trimRightChars = function(charList){
if(charList === undefined)
charList = '\\s';
return this.replace(new RegExp('[' + charList + ']+$'), '');
};
String.prototype.trimChars = function(charList){
return this.trimLeftChars(charList).trimRightChars(charList);
};
initPassiveEvents();
};
@@ -2590,23 +2512,16 @@ define([
};
/**
* get Signature names out of global
* @param systemTypeId
* @param areaId
* @param sigGroupId
* get signature 'type' options for a systemTypeId
* -> areaIds is array! This is used for "Shattered WHs" where e.g.:
* Combat/Relic/.. sites from multiple areaIds (C1, C2, C3) can spawn in a C2,...
* @param systemTypeId 1 == w-space; 2 == k-space; 3 == a-space
* @param areaIds 1 == c1; 2 == c2; 12 == Thera; 13 == Shattered Frig;...
* @param sigGroupId 1 == Combat; 2 == Relic; 3 == Data; ...
* @returns {{}}
*/
let getSignatureTypeNames = (systemTypeId, areaId, sigGroupId) => {
let signatureNames = {};
if(
SignatureType[systemTypeId] &&
SignatureType[systemTypeId][areaId] &&
SignatureType[systemTypeId][areaId][sigGroupId]
){
signatureNames = SignatureType[systemTypeId][areaId][sigGroupId];
}
return signatureNames;
let getSignatureTypeNames = (systemTypeId, areaIds, sigGroupId) => {
return objCombine(...areaIds.map(areaId => getObjVal(SignatureType, [systemTypeId, areaId, sigGroupId].join('.')) || {}));
};
/**
@@ -3396,6 +3311,21 @@ define([
return obj;
}, {});
/**
* combines multiple objects into one object
* -> removes duplicate values
* -> properties are indexed 1, 2,..n
* @param objects
* @returns {{[p: string]: *}}
*/
let objCombine = (...objects) => {
let combined = objects.reduce((acc, obj) => acc.concatFilter(Object.values(obj)), []);
combined.unshift(''); // properties should start at 1 (not 0)
combined = {...combined};
delete combined[0];
return combined;
};
/**
* get deep json object value if exists
* -> e.g. key = 'first.last.third' string