Remove quest point feature

This commit is contained in:
P0nk
2024-09-14 15:02:51 +02:00
parent 7297cd09b6
commit 4778482cdd
6 changed files with 17 additions and 61 deletions

View File

@@ -372,12 +372,6 @@ server:
#Quest Configuration #Quest Configuration
USE_QUEST_RATE: false #Exp/Meso gained by quests uses fixed server exp/meso rate times quest rate as multiplier, instead of player rates. USE_QUEST_RATE: false #Exp/Meso gained by quests uses fixed server exp/meso rate times quest rate as multiplier, instead of player rates.
#Quest Points Configuration
QUEST_POINT_REPEATABLE_INTERVAL: 25 #Minimum interval between repeatable quest completions for quest points to be awarded.
QUEST_POINT_REQUIREMENT: 0 #Exchange factor between N quest points to +1 fame, set 0 to disable the entire quest point mechanism.
QUEST_POINT_PER_QUEST_COMPLETE: 0 #Each completed quest awards N quest points, set 0 to disable.
QUEST_POINT_PER_EVENT_CLEAR: 0 #Each completed event instance awards N quest points, set 0 to disable.
#Guild Configuration #Guild Configuration
CREATE_GUILD_MIN_PARTNERS: 6 #Minimum number of members on Guild Headquarters to establish a new guild. CREATE_GUILD_MIN_PARTNERS: 6 #Minimum number of members on Guild Headquarters to establish a new guild.
CREATE_GUILD_COST: 1500000 CREATE_GUILD_COST: 1500000

View File

@@ -205,7 +205,7 @@ public class Character extends AbstractCharacterObject {
private int accountid, id, level; private int accountid, id, level;
private int rank, rankMove, jobRank, jobRankMove; private int rank, rankMove, jobRank, jobRankMove;
private int gender, hair, face; private int gender, hair, face;
private int fame, quest_fame; private int fame;
private int initialSpawnPoint; private int initialSpawnPoint;
private int mapid; private int mapid;
private int currentPage, currentType = 0, currentTab = 1; private int currentPage, currentType = 0, currentTab = 1;
@@ -6864,7 +6864,6 @@ public class Character extends AbstractCharacterObject {
ret.name = rs.getString("name"); ret.name = rs.getString("name");
ret.level = rs.getInt("level"); ret.level = rs.getInt("level");
ret.fame = rs.getInt("fame"); ret.fame = rs.getInt("fame");
ret.quest_fame = rs.getInt("fquest");
ret.str = rs.getInt("str"); ret.str = rs.getInt("str");
ret.dex = rs.getInt("dex"); ret.dex = rs.getInt("dex");
ret.int_ = rs.getInt("int"); ret.int_ = rs.getInt("int");
@@ -8439,7 +8438,7 @@ public class Character extends AbstractCharacterObject {
private void saveCharacter(Connection con) throws SQLException { private void saveCharacter(Connection con) throws SQLException {
CharacterStats stats = getCharacterStats(); CharacterStats stats = getCharacterStats();
try (PreparedStatement ps = con.prepareStatement("UPDATE characters SET level = ?, fame = ?, str = ?, dex = ?, luk = ?, `int` = ?, exp = ?, gachaexp = ?, hp = ?, mp = ?, maxhp = ?, maxmp = ?, sp = ?, ap = ?, gm = ?, skincolor = ?, gender = ?, job = ?, hair = ?, face = ?, map = ?, meso = ?, hpMpUsed = ?, spawnpoint = ?, party = ?, buddyCapacity = ?, messengerid = ?, messengerposition = ?, mountlevel = ?, mountexp = ?, mounttiredness= ?, equipslots = ?, useslots = ?, setupslots = ?, etcslots = ?, monsterbookcover = ?, vanquisherStage = ?, dojoPoints = ?, lastDojoStage = ?, finishedDojoTutorial = ?, vanquisherKills = ?, matchcardwins = ?, matchcardlosses = ?, matchcardties = ?, omokwins = ?, omoklosses = ?, omokties = ?, dataString = ?, fquest = ?, jailexpire = ?, partnerId = ?, marriageItemId = ?, lastExpGainTime = ?, ariantPoints = ?, partySearch = ? WHERE id = ?", Statement.RETURN_GENERATED_KEYS)) { try (PreparedStatement ps = con.prepareStatement("UPDATE characters SET level = ?, fame = ?, str = ?, dex = ?, luk = ?, `int` = ?, exp = ?, gachaexp = ?, hp = ?, mp = ?, maxhp = ?, maxmp = ?, sp = ?, ap = ?, gm = ?, skincolor = ?, gender = ?, job = ?, hair = ?, face = ?, map = ?, meso = ?, hpMpUsed = ?, spawnpoint = ?, party = ?, buddyCapacity = ?, messengerid = ?, messengerposition = ?, mountlevel = ?, mountexp = ?, mounttiredness= ?, equipslots = ?, useslots = ?, setupslots = ?, etcslots = ?, monsterbookcover = ?, vanquisherStage = ?, dojoPoints = ?, lastDojoStage = ?, finishedDojoTutorial = ?, vanquisherKills = ?, matchcardwins = ?, matchcardlosses = ?, matchcardties = ?, omokwins = ?, omoklosses = ?, omokties = ?, dataString = ?, jailexpire = ?, partnerId = ?, marriageItemId = ?, lastExpGainTime = ?, ariantPoints = ?, partySearch = ? WHERE id = ?", Statement.RETURN_GENERATED_KEYS)) {
ps.setInt(1, stats.level()); ps.setInt(1, stats.level());
ps.setInt(2, stats.fame()); ps.setInt(2, stats.fame());
ps.setInt(3, stats.str()); ps.setInt(3, stats.str());
@@ -8488,14 +8487,13 @@ public class Character extends AbstractCharacterObject {
ps.setInt(46, stats.omokLosses()); ps.setInt(46, stats.omokLosses());
ps.setInt(47, stats.omokTies()); ps.setInt(47, stats.omokTies());
ps.setString(48, stats.dataString()); ps.setString(48, stats.dataString());
ps.setInt(49, stats.questFame()); ps.setLong(49, stats.jailExpiration());
ps.setLong(50, stats.jailExpiration()); ps.setInt(50, stats.partnerId());
ps.setInt(51, stats.partnerId()); ps.setInt(51, stats.marriageItemId());
ps.setInt(52, stats.marriageItemId()); ps.setTimestamp(52, new Timestamp(stats.lastExpGainTime()));
ps.setTimestamp(53, new Timestamp(stats.lastExpGainTime())); ps.setInt(53, stats.ariantPoints());
ps.setInt(54, stats.ariantPoints()); ps.setBoolean(54, stats.canRecvPartySearchInvite());
ps.setBoolean(55, stats.canRecvPartySearchInvite()); ps.setInt(55, stats.id());
ps.setInt(56, stats.id());
int updateRows = ps.executeUpdate(); int updateRows = ps.executeUpdate();
if (updateRows < 1) { if (updateRows < 1) {
@@ -8533,7 +8531,6 @@ public class Character extends AbstractCharacterObject {
.omokLosses(omoklosses) .omokLosses(omoklosses)
.omokTies(omokties) .omokTies(omokties)
.dataString(dataString) .dataString(dataString)
.questFame(quest_fame)
.jailExpiration(jailExpiration) .jailExpiration(jailExpiration)
.partnerId(partnerId) .partnerId(partnerId)
.marriageItemId(marriageItemid) .marriageItemId(marriageItemid)
@@ -9686,24 +9683,6 @@ public class Character extends AbstractCharacterObject {
} }
} }
public void awardQuestPoint(int awardedPoints) {
if (YamlConfig.config.server.QUEST_POINT_REQUIREMENT < 1 || awardedPoints < 1) {
return;
}
int delta;
synchronized (quests) {
quest_fame += awardedPoints;
delta = quest_fame / YamlConfig.config.server.QUEST_POINT_REQUIREMENT;
quest_fame %= YamlConfig.config.server.QUEST_POINT_REQUIREMENT;
}
if (delta > 0) {
gainFame(delta);
}
}
public enum DelayedQuestUpdate { // quest updates allow player actions during NPC talk... public enum DelayedQuestUpdate { // quest updates allow player actions during NPC talk...
UPDATE, FORFEIT, COMPLETE, INFO UPDATE, FORFEIT, COMPLETE, INFO
} }
@@ -9769,9 +9748,6 @@ public class Character extends AbstractCharacterObject {
} else if (qs.getStatus().equals(QuestStatus.Status.COMPLETED)) { } else if (qs.getStatus().equals(QuestStatus.Status.COMPLETED)) {
Quest mquest = qs.getQuest(); Quest mquest = qs.getQuest();
short questid = mquest.getId(); short questid = mquest.getId();
if (!mquest.isSameDayRepeatable() && !Quest.isExploitableQuest(questid)) {
awardQuestPoint(YamlConfig.config.server.QUEST_POINT_PER_QUEST_COMPLETE);
}
qs.setCompleted(qs.getCompleted() + 1); // Jayd's idea - count quest completed qs.setCompleted(qs.getCompleted() + 1); // Jayd's idea - count quest completed
announceUpdateQuest(DelayedQuestUpdate.COMPLETE, questid, qs.getCompletionTime()); announceUpdateQuest(DelayedQuestUpdate.COMPLETE, questid, qs.getCompletionTime());

View File

@@ -53,7 +53,6 @@ public record CharacterStats(
int omokLosses, int omokLosses,
int omokTies, int omokTies,
String dataString, String dataString,
int questFame,
long jailExpiration, long jailExpiration,
int partnerId, int partnerId,
int marriageItemId, int marriageItemId,

View File

@@ -221,12 +221,6 @@ public class ServerConfig {
//Quest Configuration //Quest Configuration
public boolean USE_QUEST_RATE; public boolean USE_QUEST_RATE;
//Quest Points Configuration
public int QUEST_POINT_REPEATABLE_INTERVAL;
public int QUEST_POINT_REQUIREMENT;
public int QUEST_POINT_PER_QUEST_COMPLETE;
public int QUEST_POINT_PER_EVENT_CLEAR;
//Guild Configuration //Guild Configuration
public int CREATE_GUILD_MIN_PARTNERS; public int CREATE_GUILD_MIN_PARTNERS;
public int CREATE_GUILD_COST; public int CREATE_GUILD_COST;

View File

@@ -51,8 +51,15 @@ import tools.Pair;
import javax.script.ScriptException; import javax.script.ScriptException;
import java.awt.*; import java.awt.*;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List; import java.util.List;
import java.util.*; import java.util.Map;
import java.util.Properties;
import java.util.Set;
import java.util.concurrent.ScheduledFuture; import java.util.concurrent.ScheduledFuture;
import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReadWriteLock; import java.util.concurrent.locks.ReadWriteLock;
@@ -1096,10 +1103,6 @@ public class EventInstanceManager {
public final void setEventCleared() { public final void setEventCleared() {
eventCleared = true; eventCleared = true;
for (Character chr : getPlayers()) {
chr.awardQuestPoint(YamlConfig.config.server.QUEST_POINT_PER_EVENT_CLEAR);
}
scriptLock.lock(); scriptLock.lock();
try { try {
em.disposeInstance(name); em.disposeInstance(name);

View File

@@ -79,7 +79,6 @@ import java.util.Map;
import java.util.Map.Entry; import java.util.Map.Entry;
import java.util.Set; import java.util.Set;
import static java.util.concurrent.TimeUnit.HOURS;
import static java.util.concurrent.TimeUnit.SECONDS; import static java.util.concurrent.TimeUnit.SECONDS;
/** /**
@@ -246,15 +245,6 @@ public class Quest {
return getInstance(id); return getInstance(id);
} }
public boolean isSameDayRepeatable() {
if (!repeatable) {
return false;
}
IntervalRequirement ir = (IntervalRequirement) startReqs.get(QuestRequirementType.INTERVAL);
return ir.getInterval() < HOURS.toMillis(YamlConfig.config.server.QUEST_POINT_REPEATABLE_INTERVAL);
}
public boolean canStartQuestByStatus(Character chr) { public boolean canStartQuestByStatus(Character chr) {
QuestStatus mqs = chr.getQuest(this); QuestStatus mqs = chr.getQuest(this);
return !(!mqs.getStatus().equals(Status.NOT_STARTED) && !(mqs.getStatus().equals(Status.COMPLETED) && repeatable)); return !(!mqs.getStatus().equals(Status.NOT_STARTED) && !(mqs.getStatus().equals(Status.COMPLETED) && repeatable));