From 786c7ec9882168ed0fa0b5e7a39485fa18113faa Mon Sep 17 00:00:00 2001 From: ras-e Date: Tue, 7 Nov 2023 11:10:29 +0100 Subject: [PATCH 1/2] accuracy hit moves with default val 1 --- .../modulemon/Monster/BattleMonsterProcessor.java | 9 +++++++++ .../sdu/mmmi/modulemon/Monster/MonsterMove.java | 15 +++++++-------- .../sdu/mmmi/modulemon/Monster/MonsterParser.java | 6 +++++- src/main/resources/json/monsters.json | 2 +- src/main/resources/json/moves.json | 8 ++++++++ 5 files changed, 30 insertions(+), 10 deletions(-) diff --git a/src/main/java/dk/sdu/mmmi/modulemon/Monster/BattleMonsterProcessor.java b/src/main/java/dk/sdu/mmmi/modulemon/Monster/BattleMonsterProcessor.java index 07da6f52..60741923 100644 --- a/src/main/java/dk/sdu/mmmi/modulemon/Monster/BattleMonsterProcessor.java +++ b/src/main/java/dk/sdu/mmmi/modulemon/Monster/BattleMonsterProcessor.java @@ -4,6 +4,8 @@ import dk.sdu.mmmi.modulemon.CommonMonster.IMonster; import dk.sdu.mmmi.modulemon.CommonMonster.IMonsterMove; +import java.util.Random; + public class BattleMonsterProcessor implements IBattleMonsterProcessor { @Override @@ -22,6 +24,7 @@ public int calculateDamage(IMonster iSource, IMonsterMove iMove, IMonster iTarge float sourceAttack = (float) source.getAttack(); float targetDefence = (float) target.getDefence(); + if (!doAccuracyHit(move.getAccuracy())) { return 0; } // Same type attack bonus. Effectively the same as STAB in that other game boolean same_attack_type = source.getMonsterType() == move.getType(); float attack_bonus = 1; @@ -92,4 +95,10 @@ public float calculateTypeAdvantage(MonsterType source, MonsterType target) { } } + public boolean doAccuracyHit(float factor) { + //Generates a random value + Random random = new Random(); + //Ensures that the next move will always be below our factor and between(0-1) + return random.nextFloat() < factor; + } } diff --git a/src/main/java/dk/sdu/mmmi/modulemon/Monster/MonsterMove.java b/src/main/java/dk/sdu/mmmi/modulemon/Monster/MonsterMove.java index 08839d77..95c70489 100644 --- a/src/main/java/dk/sdu/mmmi/modulemon/Monster/MonsterMove.java +++ b/src/main/java/dk/sdu/mmmi/modulemon/Monster/MonsterMove.java @@ -11,18 +11,13 @@ public class MonsterMove implements IMonsterMove { private MonsterType type; private String soundPath; - public MonsterMove(String name, int damage, MonsterType type, String soundPath) { + private float accuracy = 1f; + public MonsterMove(String name, int damage, MonsterType type, String soundPath, float accuracy) { this.name = name; this.damage = damage; this.type = type; this.soundPath = soundPath; - } - - public MonsterMove(String name, int damage, MonsterType type) { - this.name = name; - this.damage = damage; - this.type = type; - this.soundPath = "sounds/tackle.ogg"; + this.accuracy = accuracy; } @Override @@ -59,4 +54,8 @@ public String getSummaryScreenDescription() { public String toString() { return this.getName(); } + + public float getAccuracy() { + return accuracy; + } } diff --git a/src/main/java/dk/sdu/mmmi/modulemon/Monster/MonsterParser.java b/src/main/java/dk/sdu/mmmi/modulemon/Monster/MonsterParser.java index e064c785..f6994bed 100644 --- a/src/main/java/dk/sdu/mmmi/modulemon/Monster/MonsterParser.java +++ b/src/main/java/dk/sdu/mmmi/modulemon/Monster/MonsterParser.java @@ -49,16 +49,20 @@ private static HashMap instantiateMoves(JSONArray jsonMove for (int i = 0; i < jsonMoves.length(); i++) { JSONObject JSONMove = jsonMoves.getJSONObject(i); String soundPath; + float accuracy = 1f; if (JSONMove.has("sound")) { soundPath = JSONMove.getString("sound"); } else { soundPath = "sounds/tackle.ogg"; } + if (JSONMove.has("accuracy")) { + accuracy = JSONMove.getFloat("accuracy"); + } IMonsterMove move = new MonsterMove(JSONMove.getString("name"), JSONMove.getInt("damage"), monsterTypeHashMap.get(JSONMove.getString("type").toLowerCase()), - soundPath); + soundPath, accuracy); moves.put(JSONMove.getString("id"), move); } return moves; diff --git a/src/main/resources/json/monsters.json b/src/main/resources/json/monsters.json index f9cfb718..6887670d 100644 --- a/src/main/resources/json/monsters.json +++ b/src/main/resources/json/monsters.json @@ -44,7 +44,7 @@ "moves" : [ "slam", "tornado", - "zap", + "kamikaze", "spit" ], "front": "/images/bird_front.png", diff --git a/src/main/resources/json/moves.json b/src/main/resources/json/moves.json index bd8b2efe..51416aa9 100644 --- a/src/main/resources/json/moves.json +++ b/src/main/resources/json/moves.json @@ -124,5 +124,13 @@ "damage": 60, "type": "AIR", "sound": "/sounds/screech.ogg" + }, + { + "id": "kamikaze", + "name": "Kamikaze", + "damage": 120, + "type": "AIR", + "sound": "/sounds/screech.ogg", + "accuracy": 0.4 } ] \ No newline at end of file From 517de83e9516cef0dcc243d5e88dd2cf736c0621 Mon Sep 17 00:00:00 2001 From: Rasmus Date: Mon, 20 Nov 2023 21:17:30 +0100 Subject: [PATCH 2/2] Updated the operator to <= on returned nextFloat MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Alexander Nørup --- .../dk/sdu/mmmi/modulemon/Monster/BattleMonsterProcessor.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/dk/sdu/mmmi/modulemon/Monster/BattleMonsterProcessor.java b/src/main/java/dk/sdu/mmmi/modulemon/Monster/BattleMonsterProcessor.java index 60741923..5f95ff3d 100644 --- a/src/main/java/dk/sdu/mmmi/modulemon/Monster/BattleMonsterProcessor.java +++ b/src/main/java/dk/sdu/mmmi/modulemon/Monster/BattleMonsterProcessor.java @@ -99,6 +99,6 @@ public boolean doAccuracyHit(float factor) { //Generates a random value Random random = new Random(); //Ensures that the next move will always be below our factor and between(0-1) - return random.nextFloat() < factor; + return random.nextFloat() <= factor; } }