Remove quest point feature
This commit is contained in:
@@ -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
|
||||||
|
|||||||
@@ -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());
|
||||||
|
|||||||
@@ -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,
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
@@ -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));
|
||||||
|
|||||||
Reference in New Issue
Block a user