From 4b406eb4f7f80e926dd4ff05b7bdc2c70c172481 Mon Sep 17 00:00:00 2001 From: FlorianDoublet Date: Fri, 13 Feb 2015 17:31:03 +0100 Subject: [PATCH 1/3] Added repeatable quest --- .../controller/ConversationController.java | 11 +++++++++++ .../com/gpl/rpg/AndorsTrail/model/actor/Player.java | 9 +++++++++ .../gpl/rpg/AndorsTrail/model/script/Requirement.java | 1 + .../rpg/AndorsTrail/model/script/ScriptEffect.java | 1 + 4 files changed, 22 insertions(+) diff --git a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/controller/ConversationController.java b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/controller/ConversationController.java index 79f1eae58..17218b434 100644 --- a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/controller/ConversationController.java +++ b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/controller/ConversationController.java @@ -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); } diff --git a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/actor/Player.java b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/actor/Player.java index c49f88868..d39dc0405 100644 --- a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/actor/Player.java +++ b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/actor/Player.java @@ -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); diff --git a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/script/Requirement.java b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/script/Requirement.java index e7d1399bd..f86d28679 100644 --- a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/script/Requirement.java +++ b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/script/Requirement.java @@ -14,6 +14,7 @@ public final class Requirement { ,spentGold ,consumedBonemeals ,hasActorCondition + ,removeQuestProgress } public final RequirementType requireType; diff --git a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/script/ScriptEffect.java b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/script/ScriptEffect.java index 0303b7606..096ac1e1c 100644 --- a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/script/ScriptEffect.java +++ b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/script/ScriptEffect.java @@ -14,6 +14,7 @@ public final class ScriptEffect { , deactivateSpawnArea , activateMapChangeArea , deactivateMapChangeArea + , removeQuestProgress } public final ScriptEffectType type; From 6124e074ec88d0bfb4b6d5ab0f2fd0ea2b302efc Mon Sep 17 00:00:00 2001 From: FlorianDoublet Date: Fri, 6 Mar 2015 18:26:13 +0100 Subject: [PATCH 2/3] repeatableQuest improvement repeatableQuest improvement add our name into authors file add our name into authors file --- AndorsTrail/res/values/authors.xml | 2 ++ .../rpg/AndorsTrail/controller/ConversationController.java | 6 ++++-- .../src/com/gpl/rpg/AndorsTrail/model/actor/Player.java | 6 ++++-- .../com/gpl/rpg/AndorsTrail/model/script/Requirement.java | 1 - 4 files changed, 10 insertions(+), 5 deletions(-) diff --git a/AndorsTrail/res/values/authors.xml b/AndorsTrail/res/values/authors.xml index 72d9e17eb..3078720ad 100644 --- a/AndorsTrail/res/values/authors.xml +++ b/AndorsTrail/res/values/authors.xml @@ -16,6 +16,8 @@ Additional programming by Ethan Wessel<br /> Additional programming by Scott Lund<br /> Additional programming by <a href="https://github.com/Zukero">Kevin Pochat</a><br /> + Additional programming by Lucas Delvallet<br /> + Additional programming by Florian Doublet<br /> Additional graphics by Karvis<br /> Russian translation by Dreamer..., e.solodookhin, shell.andor, konstmih, istasman, Aleksey Kabanov, Alexander Zubok, Paul Sulemenkov and dromoz<br /> Italian translation by k6blue, liogiu, Joker and Andrea Luciano Damico<br /> diff --git a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/controller/ConversationController.java b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/controller/ConversationController.java index 17218b434..f6137d07b 100644 --- a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/controller/ConversationController.java +++ b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/controller/ConversationController.java @@ -1,6 +1,8 @@ package com.gpl.rpg.AndorsTrail.controller; import android.content.res.Resources; +import android.util.Log; + import com.gpl.rpg.AndorsTrail.AndorsTrailApplication; import com.gpl.rpg.AndorsTrail.context.ControllerContext; import com.gpl.rpg.AndorsTrail.context.WorldContext; @@ -171,8 +173,8 @@ public final class ConversationController { } private void addRemoveQuestProgressReward(Player player, String questID, int questProgress) { - Quest currentQuest = world.quests.getQuest(questID); - player.removeQuestProgress(currentQuest,questProgress); + QuestProgress progress = new QuestProgress(questID, questProgress); + boolean removed = player.removeQuestProgress(progress); } private void addDropListReward(Player player, String droplistID, ScriptEffectResult result) { diff --git a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/actor/Player.java b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/actor/Player.java index d39dc0405..12a66bea6 100644 --- a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/actor/Player.java +++ b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/actor/Player.java @@ -159,8 +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 boolean removeQuestProgress(QuestProgress progress){ + if (!hasExactQuestProgress(progress.questID, progress.progress)) return false; + questProgress.get(progress.questID).remove(progress.progress); + return true; //Progress was removed. } public void recalculateLevelExperience() { diff --git a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/script/Requirement.java b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/script/Requirement.java index f86d28679..e7d1399bd 100644 --- a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/script/Requirement.java +++ b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/script/Requirement.java @@ -14,7 +14,6 @@ public final class Requirement { ,spentGold ,consumedBonemeals ,hasActorCondition - ,removeQuestProgress } public final RequirementType requireType; From ba58195f49120ffc7bbd4bacd466981bd575eb14 Mon Sep 17 00:00:00 2001 From: Zukero Date: Wed, 18 Mar 2015 23:14:56 +0100 Subject: [PATCH 3/3] Code cleanup: - Removed unused imports. - Removed useless variable --- .../AndorsTrail/activity/DebugInterface.java | 1 - .../controller/ConversationController.java | 14 +++++++------ .../rpg/AndorsTrail/model/actor/Player.java | 20 ++++++++----------- 3 files changed, 16 insertions(+), 19 deletions(-) diff --git a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/activity/DebugInterface.java b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/activity/DebugInterface.java index 036e6e73c..9fb451a32 100644 --- a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/activity/DebugInterface.java +++ b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/activity/DebugInterface.java @@ -13,7 +13,6 @@ import com.gpl.rpg.AndorsTrail.context.ControllerContext; import com.gpl.rpg.AndorsTrail.context.WorldContext; import com.gpl.rpg.AndorsTrail.model.map.PredefinedMap; -@SuppressWarnings("unused") public final class DebugInterface { private final ControllerContext controllerContext; private final MainActivity mainActivity; diff --git a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/controller/ConversationController.java b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/controller/ConversationController.java index f6137d07b..b7acc4de6 100644 --- a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/controller/ConversationController.java +++ b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/controller/ConversationController.java @@ -1,13 +1,18 @@ package com.gpl.rpg.AndorsTrail.controller; +import java.util.ArrayList; + import android.content.res.Resources; -import android.util.Log; import com.gpl.rpg.AndorsTrail.AndorsTrailApplication; import com.gpl.rpg.AndorsTrail.context.ControllerContext; import com.gpl.rpg.AndorsTrail.context.WorldContext; import com.gpl.rpg.AndorsTrail.model.GameStatistics; -import com.gpl.rpg.AndorsTrail.model.ability.*; +import com.gpl.rpg.AndorsTrail.model.ability.ActorCondition; +import com.gpl.rpg.AndorsTrail.model.ability.ActorConditionEffect; +import com.gpl.rpg.AndorsTrail.model.ability.ActorConditionType; +import com.gpl.rpg.AndorsTrail.model.ability.SkillCollection; +import com.gpl.rpg.AndorsTrail.model.ability.SkillInfo; import com.gpl.rpg.AndorsTrail.model.actor.Actor; import com.gpl.rpg.AndorsTrail.model.actor.Monster; import com.gpl.rpg.AndorsTrail.model.actor.Player; @@ -20,7 +25,6 @@ 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; @@ -28,8 +32,6 @@ import com.gpl.rpg.AndorsTrail.model.script.ScriptEffect; import com.gpl.rpg.AndorsTrail.util.ConstRange; import com.gpl.rpg.AndorsTrail.util.L; -import java.util.ArrayList; - public final class ConversationController { private final ControllerContext controllers; @@ -174,7 +176,7 @@ public final class ConversationController { private void addRemoveQuestProgressReward(Player player, String questID, int questProgress) { QuestProgress progress = new QuestProgress(questID, questProgress); - boolean removed = player.removeQuestProgress(progress); + player.removeQuestProgress(progress); } private void addDropListReward(Player player, String droplistID, ScriptEffectResult result) { diff --git a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/actor/Player.java b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/actor/Player.java index 12a66bea6..b2cd16402 100644 --- a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/actor/Player.java +++ b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/actor/Player.java @@ -1,7 +1,15 @@ package com.gpl.rpg.AndorsTrail.model.actor; +import java.io.DataInputStream; +import java.io.DataOutputStream; +import java.io.IOException; +import java.util.HashMap; +import java.util.HashSet; +import java.util.Map.Entry; + import android.util.FloatMath; import android.util.SparseIntArray; + import com.gpl.rpg.AndorsTrail.AndorsTrailApplication; import com.gpl.rpg.AndorsTrail.context.ControllerContext; import com.gpl.rpg.AndorsTrail.context.WorldContext; @@ -11,8 +19,6 @@ 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; @@ -20,16 +26,6 @@ import com.gpl.rpg.AndorsTrail.util.Coord; import com.gpl.rpg.AndorsTrail.util.Range; 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 { public static final int DEFAULT_PLAYER_ATTACKCOST = 4;