95 lines
2.5 KiB
JavaScript
95 lines
2.5 KiB
JavaScript
console.info("[SOCIETY] dayCounterTick.js loaded");
|
|
|
|
const playerTickRate = 200;
|
|
|
|
const playerProgTime = 20;
|
|
const dayTickDuration = 24000;
|
|
|
|
const statueBuffs = [
|
|
"moon_extra_ore",
|
|
"moon_geode_roll",
|
|
"moon_rope_reveal",
|
|
"moon_remains",
|
|
"moon_damage",
|
|
];
|
|
|
|
const mastery = new Map([
|
|
[
|
|
"farming",
|
|
["farmers_blessing", "crop_collector", "artful_tycoon", "ancient_aging"],
|
|
],
|
|
[
|
|
"mining",
|
|
["prismatic_prospector", "high_roller", "gem_tycoon", "star_blessing"],
|
|
],
|
|
[
|
|
"husbandry",
|
|
["clockwork", "bff", "triple_truffle", "heretic"],
|
|
],
|
|
[
|
|
"adventuring",
|
|
["fence_2", "looting_tycoon", "prismatic_realm", "stuffed"],
|
|
],
|
|
[
|
|
"fishing",
|
|
["school_fisher", "prismatic_bounty", "scum_collector", "mitosis"],
|
|
],
|
|
]);
|
|
|
|
PlayerEvents.tick((e) => {
|
|
const { player, level, server } = e;
|
|
let dayTime = level.dayTime();
|
|
let morningModulo = dayTime % dayTickDuration;
|
|
if (
|
|
player.age % playerTickRate == 0 &&
|
|
morningModulo >= playerProgTime &&
|
|
morningModulo < playerProgTime + playerTickRate
|
|
) {
|
|
// Sleeping cuts the amount of possible days by half
|
|
let yearCount =
|
|
player.stats.playTime / dayTickDuration / (((global.subSeasonDuration * 3) * 4) / 2);
|
|
if (
|
|
!player.stages.has("master_cultivator_unlocked") &&
|
|
yearCount > 1 &&
|
|
["spring", "summer"].includes(global.getSeasonFromLevel(level))
|
|
) {
|
|
player.stages.add("master_cultivator_unlocked");
|
|
}
|
|
if (!player.stages.has("mastery_unlocked")) {
|
|
let addMastery = true;
|
|
let skillTree;
|
|
let hasSkill;
|
|
Array.from(mastery.keys()).forEach((masteryID) => {
|
|
if (addMastery) {
|
|
skillTree = mastery.get(masteryID);
|
|
hasSkill = false;
|
|
skillTree.forEach((skill) => {
|
|
if (player.stages.has(skill)) hasSkill = true;
|
|
})
|
|
if (!hasSkill) addMastery = false;
|
|
}
|
|
});
|
|
if (addMastery) {
|
|
player.stages.add("mastery_unlocked")
|
|
server.runCommandSilent(`puffish_skills category unlock ${player.username} society:mastery`);
|
|
// TODO: dialog
|
|
}
|
|
}
|
|
}
|
|
if (player.age % 400 == 0) {
|
|
if (
|
|
player.stages.has("mining_mastery") &&
|
|
player.persistentData.days &&
|
|
player.persistentData.days.moonStatueDay
|
|
) {
|
|
let dayData = player.persistentData.days.moonStatueDay;
|
|
if (dayData != -1 && global.getDay(level) != dayData) {
|
|
statueBuffs.forEach((buff) => {
|
|
player.stages.remove(buff);
|
|
});
|
|
player.persistentData.days.moonStatueDay = -1;
|
|
}
|
|
}
|
|
}
|
|
});
|