add first patch
This commit is contained in:
@@ -0,0 +1,94 @@
|
||||
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;
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
Reference in New Issue
Block a user