Fix weekly boss entry tickets and rewards

This commit is contained in:
Melledy
2025-12-07 15:45:19 -08:00
parent 7f0bdb1824
commit c6ac09f112
6 changed files with 93 additions and 12 deletions
@@ -137,5 +137,55 @@ public class InstanceManager extends PlayerManager {
// Success
return change.setSuccess(true);
}
public PlayerChangeInfo settleWeekly(InstanceData data, boolean win) {
// Calculate settle data
var settleData = new InstanceSettleData();
settleData.setWin(win);
settleData.setFirst(settleData.isWin() && !getProgress().getWeekBossLog().containsKey(data.getId()));
// Init player change info
var change = new PlayerChangeInfo();
// Handle win
if (settleData.isWin()) {
// Calculate rewards
int entries = this.getPlayer().getInventory().getResourceCount(GameConstants.WEEKLY_ENTRY_ITEM_ID);
if (entries > 0) {
// Generate regular rewards
settleData.setRewards(data.getRewards().generate());
// Add regular rewards
getPlayer().getInventory().addItems(settleData.getRewards(), change);
// Remove weekly entry
getPlayer().getInventory().removeItem(GameConstants.WEEKLY_ENTRY_ITEM_ID, 1, change);
}
// Add first clear rewards even if we dont have the entry ticket
if (settleData.isFirst()) {
// Generate first clear rewards
settleData.setRewards(data.getFirstRewards().generate());
// Add to inventory
getPlayer().getInventory().addItems(settleData.getFirstRewards(), change);
}
// Log
this.getProgress().saveInstanceLog(getProgress().getWeekBossLog(), "weekBossLog", data.getId(), 1);
// Quest triggers
this.getPlayer().trigger(QuestCondition.WeekBoosClearSpecificDifficultyAndTotal, 1);
this.getPlayer().trigger(QuestCondition.BattleTotal, 1);
}
// Set extra data
change.setExtraData(settleData);
// Success
return change.setSuccess(true);
}
}
@@ -627,6 +627,12 @@ public class Player implements GameDatabaseObject {
// Trigger quest/achievement login
this.trigger(QuestCondition.LoginTotal, 1);
// Add weekly boss entry item
int entries = this.getInventory().getResourceCount(GameConstants.WEEKLY_ENTRY_ITEM_ID);
if (entries < 3) {
this.getInventory().addItem(GameConstants.WEEKLY_ENTRY_ITEM_ID, 3 - entries);
}
// Update last epoch day
this.lastEpochDay = Nebula.getGameContext().getEpochDays();
Nebula.getGameDatabase().update(this, this.getUid(), "lastEpochDay", this.lastEpochDay);
@@ -719,6 +725,11 @@ public class Player implements GameDatabaseObject {
// Load complete
this.loaded = true;
}
public void onCreate() {
// Send welcome mail
this.getMailbox().sendWelcomeMail();
}
public void onLogin() {
// See if we need to reset dailies
@@ -132,12 +132,13 @@ public class PlayerModule extends GameContextModule {
player.onLoad();
player.save();
// Send welcome mail
player.getMailbox().sendWelcomeMail();
// Handle any player creation events
player.onCreate();
// Put in player cache
this.addToCache(player);
// Complete
return player;
}