mirror of
https://github.com/OMGeeky/andors-trail.git
synced 2026-02-23 15:38:29 +01:00
Added repeatable quest
This commit is contained in:
committed by
LucasDelvallet
parent
0acd31f090
commit
4b406eb4f7
@@ -18,6 +18,7 @@ import com.gpl.rpg.AndorsTrail.model.map.LayeredTileMap;
|
||||
import com.gpl.rpg.AndorsTrail.model.map.MapObject;
|
||||
import com.gpl.rpg.AndorsTrail.model.map.MonsterSpawnArea;
|
||||
import com.gpl.rpg.AndorsTrail.model.map.PredefinedMap;
|
||||
import com.gpl.rpg.AndorsTrail.model.quest.Quest;
|
||||
import com.gpl.rpg.AndorsTrail.model.quest.QuestLogEntry;
|
||||
import com.gpl.rpg.AndorsTrail.model.quest.QuestProgress;
|
||||
import com.gpl.rpg.AndorsTrail.model.script.Requirement;
|
||||
@@ -108,6 +109,9 @@ public final class ConversationController {
|
||||
case deactivateMapChangeArea:
|
||||
deactivateMapChangeArea(effect.mapName, effect.effectID);
|
||||
break;
|
||||
case removeQuestProgress:
|
||||
addRemoveQuestProgressReward(player, effect.effectID, effect.value);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -156,14 +160,21 @@ public final class ConversationController {
|
||||
private void addQuestProgressReward(Player player, String questID, int questProgress, ScriptEffectResult result) {
|
||||
QuestProgress progress = new QuestProgress(questID, questProgress);
|
||||
boolean added = player.addQuestProgress(progress);
|
||||
|
||||
if (!added) return; // Only apply exp reward if the quest stage was reached just now (and not re-reached)
|
||||
|
||||
QuestLogEntry stage = world.quests.getQuestLogEntry(progress);
|
||||
if (stage == null) return;
|
||||
|
||||
result.loot.exp += stage.rewardExperience;
|
||||
result.questProgress.add(progress);
|
||||
}
|
||||
|
||||
private void addRemoveQuestProgressReward(Player player, String questID, int questProgress) {
|
||||
Quest currentQuest = world.quests.getQuest(questID);
|
||||
player.removeQuestProgress(currentQuest,questProgress);
|
||||
}
|
||||
|
||||
private void addDropListReward(Player player, String droplistID, ScriptEffectResult result) {
|
||||
world.dropLists.getDropList(droplistID).createRandomLoot(result.loot, player);
|
||||
}
|
||||
|
||||
@@ -11,6 +11,8 @@ import com.gpl.rpg.AndorsTrail.model.ability.SkillCollection;
|
||||
import com.gpl.rpg.AndorsTrail.model.item.DropListCollection;
|
||||
import com.gpl.rpg.AndorsTrail.model.item.Inventory;
|
||||
import com.gpl.rpg.AndorsTrail.model.item.Loot;
|
||||
import com.gpl.rpg.AndorsTrail.model.quest.Quest;
|
||||
import com.gpl.rpg.AndorsTrail.model.quest.QuestLogEntry;
|
||||
import com.gpl.rpg.AndorsTrail.model.quest.QuestProgress;
|
||||
import com.gpl.rpg.AndorsTrail.resource.tiles.TileManager;
|
||||
import com.gpl.rpg.AndorsTrail.savegames.LegacySavegameFormatReaderForPlayer;
|
||||
@@ -21,8 +23,11 @@ import com.gpl.rpg.AndorsTrail.util.Size;
|
||||
import java.io.DataInputStream;
|
||||
import java.io.DataOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.Iterator;
|
||||
import java.util.Map.Entry;
|
||||
|
||||
public final class Player extends Actor {
|
||||
@@ -154,6 +159,10 @@ public final class Player extends Actor {
|
||||
return true; //Progress was added.
|
||||
}
|
||||
|
||||
public void removeQuestProgress(Quest quest, int removeProgress){
|
||||
questProgress.get(quest.questID).remove(progress);
|
||||
}
|
||||
|
||||
public void recalculateLevelExperience() {
|
||||
int experienceRequiredToReachThisLevel = getRequiredExperience(level);
|
||||
levelExperience.set(getRequiredExperienceForNextLevel(level), totalExperience - experienceRequiredToReachThisLevel);
|
||||
|
||||
@@ -14,6 +14,7 @@ public final class Requirement {
|
||||
,spentGold
|
||||
,consumedBonemeals
|
||||
,hasActorCondition
|
||||
,removeQuestProgress
|
||||
}
|
||||
|
||||
public final RequirementType requireType;
|
||||
|
||||
@@ -14,6 +14,7 @@ public final class ScriptEffect {
|
||||
, deactivateSpawnArea
|
||||
, activateMapChangeArea
|
||||
, deactivateMapChangeArea
|
||||
, removeQuestProgress
|
||||
}
|
||||
|
||||
public final ScriptEffectType type;
|
||||
|
||||
Reference in New Issue
Block a user