init
This commit is contained in:
commit
d8d0e9d536
2567 changed files with 167778 additions and 0 deletions
130
kubejs/server_scripts/microverse/mission_utils.js
Normal file
130
kubejs/server_scripts/microverse/mission_utils.js
Normal file
|
|
@ -0,0 +1,130 @@
|
|||
// priority: 1
|
||||
/**
|
||||
* Utility functions for registering microminer missions,
|
||||
* and lower-tier projector missions more succinctly.
|
||||
*/
|
||||
|
||||
/**
|
||||
* Array to keep track of how many missions are available for each microminer tier.
|
||||
* Used to generate circuit numbers for each mission.
|
||||
*/
|
||||
global.mission_counts = {
|
||||
"1": 0,
|
||||
"2": 0,
|
||||
"2half": 0,
|
||||
"3": 0,
|
||||
"4": 0,
|
||||
"4half": 0,
|
||||
"5": 0,
|
||||
"6": 0,
|
||||
"7": 0,
|
||||
"8": 0,
|
||||
"8half": 0,
|
||||
"9": 0,
|
||||
"10": 0,
|
||||
"11": 0,
|
||||
"12": 0
|
||||
}
|
||||
|
||||
/**
|
||||
* Default durations for missions of a given microminer tier.
|
||||
* Compare with repairDurations of repair.js.
|
||||
*/
|
||||
const missionDurations = {
|
||||
"1": 100,
|
||||
"2": 120,
|
||||
"2half": 60,
|
||||
"3": 150,
|
||||
"4": 180,
|
||||
"4half": 180,
|
||||
"5": 200,
|
||||
"6": 220,
|
||||
"7": 240,
|
||||
"8": 280,
|
||||
"8half": 240,
|
||||
"9": 300,
|
||||
"10": 300,
|
||||
"11": 360,
|
||||
"12": 420
|
||||
}
|
||||
|
||||
/**
|
||||
* Default EU/t costs for missions of a given microminer tier.
|
||||
*/
|
||||
const missionEUt = {
|
||||
"1": GTValues.VA[GTValues.HV],
|
||||
"2": GTValues.VHA[GTValues.EV],
|
||||
"2half": GTValues.VA[GTValues.EV],
|
||||
"3": GTValues.VA[GTValues.EV],
|
||||
"4": GTValues.VHA[GTValues.IV],
|
||||
"4half": GTValues.VA[GTValues.IV],
|
||||
"5": GTValues.VA[GTValues.IV],
|
||||
"6": GTValues.VHA[GTValues.LuV],
|
||||
"7": GTValues.VA[GTValues.LuV],
|
||||
"8": GTValues.VA[GTValues.ZPM],
|
||||
"8half": GTValues.VA[GTValues.ZPM],
|
||||
"9": GTValues.VA[GTValues.UV],
|
||||
"10": GTValues.VA[GTValues.UHV],
|
||||
"11": GTValues.VA[GTValues.UEV],
|
||||
"12": GTValues.VA[GTValues.UIV]
|
||||
}
|
||||
|
||||
/**
|
||||
* Registers a basic microverse mission and equivalent stabilized mission recipe
|
||||
* @param {Internal.RecipesEventJS} event Parameter used in consumer for ServerEvents.recipes().
|
||||
* @param {number|string} minerTier Miner tier index. Typically 1 through 12.
|
||||
* @param {number} duration Recipe duration in seconds. Defaults based on the miner tier if left undefined.
|
||||
* @param {number} EUt The EU per tick consumed by the recipe. Defaults based on the miner tier if left undefined.
|
||||
* @param {number} minerReturnChance Chance a damaged miner is returned, in percent. [Integer 0-100]
|
||||
* @returns {Internal.GTRecipeSchema$GTRecipeJS[]} Microverse recipe builders. Use this to add item and fluid I/O.
|
||||
*/
|
||||
function microverse_mission(event, minerTier, projectorTier, duration, EUt, minerReturnChance) {
|
||||
// Increase global mission counter
|
||||
global.mission_counts[minerTier]++;
|
||||
|
||||
// Convert miner return chance from percentage to GTM"s hundredth-of-a-percent format
|
||||
minerReturnChance = Math.floor(minerReturnChance * 100)
|
||||
|
||||
// Use defaults if duration or EU/t not defined
|
||||
if(duration == undefined) duration = missionDurations[minerTier]
|
||||
if(EUt == undefined) EUt = missionEUt[minerTier]
|
||||
|
||||
// We return an array of GT recipe builders for the caller to act upon with a .forEach
|
||||
// rather than a long parameter list, multiple overloads, or varargs
|
||||
const builders = [];
|
||||
|
||||
// Register basic microverse mission
|
||||
builders[0] = event.recipes.gtceu.microverse(`kubejs:mission_t${minerTier}_${global.mission_counts[minerTier]}`)
|
||||
.addData("projector_tier", projectorTier)
|
||||
.itemInputs(`kubejs:microminer_t${minerTier}`)
|
||||
.duration(Math.round(duration * 20))
|
||||
.EUt(EUt)
|
||||
|
||||
if(isNaN(minerReturnChance) || minerReturnChance == undefined) {
|
||||
// By default, return the microminer that was passed into the input.
|
||||
builders[0].itemOutputs(`kubejs:microminer_t${minerTier}`)
|
||||
} else if(minerReturnChance > 0) {
|
||||
// Only return the damaged miner if the chance to return it is positive and real
|
||||
builders[0].chancedOutput(`kubejs:microminer_t${minerTier}_damaged`, minerReturnChance, minerReturnChance == 10000 ? 0 : 500)
|
||||
}
|
||||
|
||||
const stabilized_miners = [
|
||||
"2half",
|
||||
"4half",
|
||||
"6",
|
||||
"7",
|
||||
"8"
|
||||
]
|
||||
|
||||
// Register actualization chamber counterparts in Hard Mode and Expert Mode except for T9+
|
||||
if(stabilized_miners.indexOf(minerTier.toString()) != -1) {
|
||||
builders[1] = event.recipes.gtceu.microverse(`kubejs:mission_t${minerTier}_${global.mission_counts[minerTier]}_stabilized`)
|
||||
.addData("projector_tier", projectorTier)
|
||||
.itemInputs(`kubejs:stabilized_microminer_t${minerTier}`)
|
||||
.itemOutputs(`kubejs:stabilized_microminer_t${minerTier}`)
|
||||
.duration(Math.round(duration * 20))
|
||||
.EUt(EUt)
|
||||
}
|
||||
|
||||
return builders;
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue