diff --git a/config.yaml b/config.yaml index 873a9f6a27..804a0e7477 100644 --- a/config.yaml +++ b/config.yaml @@ -372,12 +372,6 @@ server: #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. - #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 CREATE_GUILD_MIN_PARTNERS: 6 #Minimum number of members on Guild Headquarters to establish a new guild. CREATE_GUILD_COST: 1500000 diff --git a/src/main/java/client/Character.java b/src/main/java/client/Character.java index dbbfe28a99..08b5218394 100644 --- a/src/main/java/client/Character.java +++ b/src/main/java/client/Character.java @@ -205,7 +205,7 @@ public class Character extends AbstractCharacterObject { private int accountid, id, level; private int rank, rankMove, jobRank, jobRankMove; private int gender, hair, face; - private int fame, quest_fame; + private int fame; private int initialSpawnPoint; private int mapid; private int currentPage, currentType = 0, currentTab = 1; @@ -6864,7 +6864,6 @@ public class Character extends AbstractCharacterObject { ret.name = rs.getString("name"); ret.level = rs.getInt("level"); ret.fame = rs.getInt("fame"); - ret.quest_fame = rs.getInt("fquest"); ret.str = rs.getInt("str"); ret.dex = rs.getInt("dex"); ret.int_ = rs.getInt("int"); @@ -8439,7 +8438,7 @@ public class Character extends AbstractCharacterObject { private void saveCharacter(Connection con) throws SQLException { 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(2, stats.fame()); ps.setInt(3, stats.str()); @@ -8488,14 +8487,13 @@ public class Character extends AbstractCharacterObject { ps.setInt(46, stats.omokLosses()); ps.setInt(47, stats.omokTies()); ps.setString(48, stats.dataString()); - ps.setInt(49, stats.questFame()); - ps.setLong(50, stats.jailExpiration()); - ps.setInt(51, stats.partnerId()); - ps.setInt(52, stats.marriageItemId()); - ps.setTimestamp(53, new Timestamp(stats.lastExpGainTime())); - ps.setInt(54, stats.ariantPoints()); - ps.setBoolean(55, stats.canRecvPartySearchInvite()); - ps.setInt(56, stats.id()); + ps.setLong(49, stats.jailExpiration()); + ps.setInt(50, stats.partnerId()); + ps.setInt(51, stats.marriageItemId()); + ps.setTimestamp(52, new Timestamp(stats.lastExpGainTime())); + ps.setInt(53, stats.ariantPoints()); + ps.setBoolean(54, stats.canRecvPartySearchInvite()); + ps.setInt(55, stats.id()); int updateRows = ps.executeUpdate(); if (updateRows < 1) { @@ -8533,7 +8531,6 @@ public class Character extends AbstractCharacterObject { .omokLosses(omoklosses) .omokTies(omokties) .dataString(dataString) - .questFame(quest_fame) .jailExpiration(jailExpiration) .partnerId(partnerId) .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... UPDATE, FORFEIT, COMPLETE, INFO } @@ -9769,9 +9748,6 @@ public class Character extends AbstractCharacterObject { } else if (qs.getStatus().equals(QuestStatus.Status.COMPLETED)) { Quest mquest = qs.getQuest(); 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 announceUpdateQuest(DelayedQuestUpdate.COMPLETE, questid, qs.getCompletionTime()); diff --git a/src/main/java/client/CharacterStats.java b/src/main/java/client/CharacterStats.java index 3d004d4342..dcdf2a8902 100644 --- a/src/main/java/client/CharacterStats.java +++ b/src/main/java/client/CharacterStats.java @@ -53,7 +53,6 @@ public record CharacterStats( int omokLosses, int omokTies, String dataString, - int questFame, long jailExpiration, int partnerId, int marriageItemId, diff --git a/src/main/java/config/ServerConfig.java b/src/main/java/config/ServerConfig.java index a328fc640e..cf13bc007b 100644 --- a/src/main/java/config/ServerConfig.java +++ b/src/main/java/config/ServerConfig.java @@ -221,12 +221,6 @@ public class ServerConfig { //Quest Configuration 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 public int CREATE_GUILD_MIN_PARTNERS; public int CREATE_GUILD_COST; diff --git a/src/main/java/scripting/event/EventInstanceManager.java b/src/main/java/scripting/event/EventInstanceManager.java index 717c27f6b3..e4d5f956c2 100644 --- a/src/main/java/scripting/event/EventInstanceManager.java +++ b/src/main/java/scripting/event/EventInstanceManager.java @@ -51,8 +51,15 @@ import tools.Pair; import javax.script.ScriptException; 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.*; +import java.util.Map; +import java.util.Properties; +import java.util.Set; import java.util.concurrent.ScheduledFuture; import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReadWriteLock; @@ -1096,10 +1103,6 @@ public class EventInstanceManager { public final void setEventCleared() { eventCleared = true; - for (Character chr : getPlayers()) { - chr.awardQuestPoint(YamlConfig.config.server.QUEST_POINT_PER_EVENT_CLEAR); - } - scriptLock.lock(); try { em.disposeInstance(name); diff --git a/src/main/java/server/quest/Quest.java b/src/main/java/server/quest/Quest.java index b53eda0fc1..b424e662c8 100644 --- a/src/main/java/server/quest/Quest.java +++ b/src/main/java/server/quest/Quest.java @@ -79,7 +79,6 @@ import java.util.Map; import java.util.Map.Entry; import java.util.Set; -import static java.util.concurrent.TimeUnit.HOURS; import static java.util.concurrent.TimeUnit.SECONDS; /** @@ -246,15 +245,6 @@ public class Quest { 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) { QuestStatus mqs = chr.getQuest(this); return !(!mqs.getStatus().equals(Status.NOT_STARTED) && !(mqs.getStatus().equals(Status.COMPLETED) && repeatable));