mirror of
https://github.com/Grasscutters/Grasscutter.git
synced 2026-03-28 02:23:31 +01:00
Create files from Grasscutter-Quests
these files are NOT directly compatible with Grasscutter, and require additional modifications to the codebase to work.
This commit is contained in:
@@ -0,0 +1,40 @@
|
||||
package emu.grasscutter.game.quest.conditions;
|
||||
|
||||
import emu.grasscutter.Grasscutter;
|
||||
import emu.grasscutter.data.excels.QuestData;
|
||||
import emu.grasscutter.game.player.Player;
|
||||
import lombok.val;
|
||||
|
||||
public abstract class BaseConditionQuestVar extends BaseCondition {
|
||||
|
||||
protected abstract boolean doCompare(int variable, int cond);
|
||||
|
||||
@Override
|
||||
public boolean execute(Player owner, QuestData questData, QuestData.QuestAcceptCondition condition, String paramStr, int... params) {
|
||||
val index = condition.getParam()[0];
|
||||
val targetValue = condition.getParam()[1];
|
||||
val questVarValue = getQuestVar(owner, questData, index);
|
||||
|
||||
Grasscutter.getLogger().debug("questVar {} : {}", index, questVarValue);
|
||||
|
||||
if (questVarValue < 0) {
|
||||
return false;
|
||||
}
|
||||
return doCompare(questVarValue, targetValue);
|
||||
}
|
||||
|
||||
protected int getQuestVar(Player owner, QuestData questData, int index) {
|
||||
val mainQuest = owner.getQuestManager().getMainQuestById(questData.getMainId());
|
||||
if (mainQuest == null) {
|
||||
Grasscutter.getLogger().debug("mainQuest for quest var not available yet");
|
||||
return -1;
|
||||
}
|
||||
val questVars = mainQuest.getQuestVars();
|
||||
if (index >= questVars.length) {
|
||||
Grasscutter.getLogger().error("questVar out of bounds for {} index {} size {}", questData.getSubId(), index, questVars.length);
|
||||
return -2;
|
||||
}
|
||||
return questVars[index];
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
package emu.grasscutter.game.quest.conditions;
|
||||
|
||||
import emu.grasscutter.data.excels.QuestData;
|
||||
import emu.grasscutter.game.player.Player;
|
||||
import emu.grasscutter.game.quest.QuestValueCond;
|
||||
import lombok.val;
|
||||
|
||||
import static emu.grasscutter.game.quest.enums.QuestCond.QUEST_COND_ACTIVITY_COND;
|
||||
|
||||
@QuestValueCond(QUEST_COND_ACTIVITY_COND)
|
||||
public class ConditionActivityCond extends BaseCondition {
|
||||
|
||||
@Override
|
||||
public boolean execute(Player owner, QuestData questData, QuestData.QuestAcceptCondition condition, String paramStr, int... params) {
|
||||
val activityCondId = condition.getParam()[0];
|
||||
val targetState = condition.getParam()[1]; // only 1 for now
|
||||
return owner.getActivityManager().meetsCondition(activityCondId) == (targetState == 1);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
package emu.grasscutter.game.quest.conditions;
|
||||
|
||||
import emu.grasscutter.data.excels.QuestData;
|
||||
import emu.grasscutter.game.player.Player;
|
||||
import emu.grasscutter.game.quest.QuestValueCond;
|
||||
import lombok.val;
|
||||
|
||||
import static emu.grasscutter.game.quest.enums.QuestCond.QUEST_COND_ACTIVITY_END;
|
||||
|
||||
@QuestValueCond(QUEST_COND_ACTIVITY_END)
|
||||
public class ConditionActivityEnd extends BaseCondition {
|
||||
|
||||
@Override
|
||||
public boolean execute(Player owner, QuestData questData, QuestData.QuestAcceptCondition condition, String paramStr, int... params) {
|
||||
val activityId = condition.getParam()[0];
|
||||
return owner.getActivityManager().hasActivityEnded(activityId);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
package emu.grasscutter.game.quest.conditions;
|
||||
|
||||
import emu.grasscutter.data.excels.QuestData;
|
||||
import emu.grasscutter.game.player.Player;
|
||||
import emu.grasscutter.game.quest.QuestValueCond;
|
||||
import lombok.val;
|
||||
|
||||
import static emu.grasscutter.game.quest.enums.QuestCond.QUEST_COND_ACTIVITY_OPEN;
|
||||
|
||||
@QuestValueCond(QUEST_COND_ACTIVITY_OPEN)
|
||||
public class ConditionActivityOpen extends BaseCondition {
|
||||
|
||||
@Override
|
||||
public boolean execute(Player owner, QuestData questData, QuestData.QuestAcceptCondition condition, String paramStr, int... params) {
|
||||
val activityId = condition.getParam()[0];
|
||||
return owner.getActivityManager().isActivityActive(activityId);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
package emu.grasscutter.game.quest.conditions;
|
||||
|
||||
import emu.grasscutter.data.excels.QuestData;
|
||||
import emu.grasscutter.game.player.Player;
|
||||
import emu.grasscutter.game.quest.QuestValueCond;
|
||||
import emu.grasscutter.game.quest.enums.QuestCond;
|
||||
import lombok.val;
|
||||
|
||||
@QuestValueCond(QuestCond.QUEST_COND_HISTORY_GOT_ANY_ITEM)
|
||||
public class ConditionHistoryGotAnyItem extends BaseCondition {
|
||||
|
||||
@Override
|
||||
public boolean execute(Player owner, QuestData questData, QuestData.QuestAcceptCondition condition, String paramStr, int... params) {
|
||||
val itemId = condition.getParam()[0];
|
||||
return owner.getPlayerProgress().hasPlayerObtainedItemHistorically(itemId);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
package emu.grasscutter.game.quest.conditions;
|
||||
|
||||
import emu.grasscutter.data.excels.QuestData;
|
||||
import emu.grasscutter.game.player.Player;
|
||||
import emu.grasscutter.game.quest.QuestValueCond;
|
||||
import emu.grasscutter.game.quest.enums.QuestCond;
|
||||
import lombok.val;
|
||||
|
||||
@QuestValueCond(QuestCond.QUEST_COND_IS_DAYTIME)
|
||||
public class ConditionIsDaytime extends BaseCondition{
|
||||
|
||||
@Override
|
||||
public boolean execute(Player owner, QuestData questData, QuestData.QuestAcceptCondition condition, String paramStr, int... params) {
|
||||
val daytime = condition.getParam()[0] == 1;
|
||||
val currentTime = owner.getWorld().getGameTimeHours();
|
||||
// TODO is this the real timeframe?
|
||||
return (currentTime >=6 && currentTime<=18) == daytime;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
package emu.grasscutter.game.quest.conditions;
|
||||
|
||||
import emu.grasscutter.data.excels.QuestData;
|
||||
import emu.grasscutter.game.player.Player;
|
||||
import emu.grasscutter.game.quest.QuestValueCond;
|
||||
import lombok.val;
|
||||
|
||||
import static emu.grasscutter.game.quest.enums.QuestCond.QUEST_COND_ITEM_NUM_LESS_THAN;
|
||||
|
||||
@QuestValueCond(QUEST_COND_ITEM_NUM_LESS_THAN)
|
||||
public class ConditionItemNumLessThan extends BaseCondition {
|
||||
|
||||
@Override
|
||||
public boolean execute(Player owner, QuestData questData, QuestData.QuestAcceptCondition condition, String paramStr, int... params) {
|
||||
val itemId = condition.getParam()[0];
|
||||
val amount = condition.getParam()[1];
|
||||
val checkItem = owner.getInventory().getItemByGuid(itemId);
|
||||
return checkItem == null || checkItem.getCount() < amount;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
package emu.grasscutter.game.quest.conditions;
|
||||
|
||||
import emu.grasscutter.data.excels.QuestData;
|
||||
import emu.grasscutter.game.player.Player;
|
||||
import emu.grasscutter.game.quest.QuestValueCond;
|
||||
import emu.grasscutter.game.quest.enums.QuestCond;
|
||||
|
||||
@QuestValueCond(QuestCond.QUEST_COND_NONE)
|
||||
public class ConditionNone extends BaseCondition{
|
||||
|
||||
@Override
|
||||
public boolean execute(Player owner, QuestData questData, QuestData.QuestAcceptCondition condition, String paramStr, int... params) {
|
||||
return true;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
package emu.grasscutter.game.quest.conditions;
|
||||
|
||||
import emu.grasscutter.data.excels.QuestData;
|
||||
import emu.grasscutter.game.player.Player;
|
||||
import emu.grasscutter.game.quest.QuestValueCond;
|
||||
import emu.grasscutter.game.quest.enums.QuestCond;
|
||||
import lombok.val;
|
||||
|
||||
@QuestValueCond(QuestCond.QUEST_COND_OPEN_STATE_EQUAL)
|
||||
public class ConditionOpenStateEqual extends BaseCondition {
|
||||
|
||||
@Override
|
||||
public boolean execute(Player owner, QuestData questData, QuestData.QuestAcceptCondition condition, String paramStr, int... params) {
|
||||
val openStateId = condition.getParam()[0];
|
||||
val requiredState = condition.getParam()[1];
|
||||
return owner.getProgressManager().getOpenState(openStateId) == requiredState;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
package emu.grasscutter.game.quest.conditions;
|
||||
|
||||
import emu.grasscutter.data.excels.QuestData;
|
||||
import emu.grasscutter.game.player.Player;
|
||||
import emu.grasscutter.game.quest.QuestValueCond;
|
||||
import lombok.val;
|
||||
|
||||
import static emu.grasscutter.game.quest.enums.QuestCond.QUEST_COND_PACK_HAVE_ITEM;
|
||||
|
||||
@QuestValueCond(QUEST_COND_PACK_HAVE_ITEM)
|
||||
public class ConditionPackHaveItem extends BaseCondition {
|
||||
|
||||
@Override
|
||||
public boolean execute(Player owner, QuestData questData, QuestData.QuestAcceptCondition condition, String paramStr, int... params) {
|
||||
val itemId = condition.getParam()[0];
|
||||
val targetAmount = condition.getParam()[1];
|
||||
val checkItem = owner.getInventory().getItemByGuid(itemId);
|
||||
return checkItem != null && checkItem.getCount() >= targetAmount;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
package emu.grasscutter.game.quest.conditions;
|
||||
|
||||
import emu.grasscutter.data.excels.QuestData;
|
||||
import emu.grasscutter.game.player.Player;
|
||||
import emu.grasscutter.game.quest.QuestValueCond;
|
||||
import emu.grasscutter.game.quest.enums.QuestCond;
|
||||
import lombok.val;
|
||||
|
||||
@QuestValueCond(QuestCond.QUEST_COND_PERSONAL_LINE_UNLOCK)
|
||||
public class ConditionPersonalLineUnlock extends BaseCondition {
|
||||
|
||||
@Override
|
||||
public boolean execute(Player owner, QuestData questData, QuestData.QuestAcceptCondition condition, String paramStr, int... params) {
|
||||
val personalLineId = condition.getParam()[0];
|
||||
return owner.getPersonalLineList().contains(personalLineId);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
package emu.grasscutter.game.quest.conditions;
|
||||
|
||||
import emu.grasscutter.data.excels.QuestData;
|
||||
import emu.grasscutter.game.player.Player;
|
||||
import emu.grasscutter.game.quest.QuestValueCond;
|
||||
import emu.grasscutter.game.quest.enums.QuestCond;
|
||||
import lombok.val;
|
||||
|
||||
@QuestValueCond(QuestCond.QUEST_COND_TIME_VAR_GT_EQ)
|
||||
public class ConditionTimeVarGreaterOrEqual extends BaseCondition{
|
||||
@Override
|
||||
public boolean execute(Player owner, QuestData questData, QuestData.QuestAcceptCondition condition, String paramStr, int... params) {
|
||||
val mainQuestId = condition.getParam()[0];
|
||||
val timeVarIndex = condition.getParam()[1];
|
||||
val minTime = condition.getParam()[2];
|
||||
|
||||
val mainQuest = owner.getQuestManager().getMainQuestById(mainQuestId);
|
||||
|
||||
if(mainQuest == null){
|
||||
return false;
|
||||
}
|
||||
|
||||
return mainQuest.getHoursSinceTimeVar(timeVarIndex) >= minTime;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,30 @@
|
||||
package emu.grasscutter.game.quest.conditions;
|
||||
|
||||
import emu.grasscutter.data.excels.QuestData;
|
||||
import emu.grasscutter.game.player.Player;
|
||||
import emu.grasscutter.game.quest.QuestValueCond;
|
||||
import emu.grasscutter.game.quest.enums.QuestCond;
|
||||
import lombok.val;
|
||||
|
||||
@QuestValueCond(QuestCond.QUEST_COND_TIME_VAR_PASS_DAY)
|
||||
public class ConditionTimeVarPassDay extends BaseCondition{
|
||||
@Override
|
||||
public boolean execute(Player owner, QuestData questData, QuestData.QuestAcceptCondition condition, String paramStr, int... params) {
|
||||
val mainQuestId = condition.getParam()[0];
|
||||
val timeVarIndex = condition.getParam()[1];
|
||||
val minDays = condition.getParam()[2];
|
||||
|
||||
val mainQuest = owner.getQuestManager().getMainQuestById(mainQuestId);
|
||||
|
||||
if(mainQuest == null){
|
||||
return false;
|
||||
}
|
||||
|
||||
val daysSinceTimeVar = mainQuest.getDaysSinceTimeVar(timeVarIndex);
|
||||
if(daysSinceTimeVar == -1){
|
||||
return false;
|
||||
}
|
||||
|
||||
return daysSinceTimeVar >= minDays;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user