]> www.infradead.org Git - users/mchehab/andors-trail.git/commitdiff
Only apply "Rejuvenate" to negative conditions. Do not apply "Rejuvenate" to spiritua...
authoroskar.wiksten <oskar.wiksten@08aca716-68be-ccc6-4d58-36f5abd142ac>
Mon, 7 May 2012 20:58:31 +0000 (20:58 +0000)
committeroskar.wiksten <oskar.wiksten@08aca716-68be-ccc6-4d58-36f5abd142ac>
Mon, 7 May 2012 20:58:31 +0000 (20:58 +0000)
git-svn-id: https://andors-trail.googlecode.com/svn/trunk@242 08aca716-68be-ccc6-4d58-36f5abd142ac

AndorsTrail/src/com/gpl/rpg/AndorsTrail/controller/ActorStatsController.java

index a205164b196d9f14cf97c9cdfb80049ebeee2791..eef1ee1a42d096fe0810606d6dc01a3a5c55804e 100644 (file)
@@ -205,27 +205,34 @@ public class ActorStatsController {
                decreaseDurationAndRemoveConditions(player);
        }
 
-       private void removeConditionsFromSkillEffects(Player player) {
+       private static void removeConditionsFromSkillEffects(Player player) {
                if (SkillController.rollForSkillChance(player, SkillCollection.SKILL_REJUVENATION, SkillCollection.PER_SKILLPOINT_INCREASE_REJUVENATION_CHANCE)) {
-                       ArrayList<Integer> potentialConditionsToDecrease = new ArrayList<Integer>();
-                       for(int i = 0; i < player.conditions.size(); ++i) {
-                               ActorCondition c = player.conditions.get(i);
-                               if (!c.isTemporaryEffect()) continue;
-                               potentialConditionsToDecrease.add(i);
-                       }
-                       if (potentialConditionsToDecrease.isEmpty()) return;
-                       
-                       int i = potentialConditionsToDecrease.get(Constants.rnd.nextInt(potentialConditionsToDecrease.size()));
-                       
-                       ActorCondition c = player.conditions.remove(i);
-                       if (c.magnitude > 1) {
-                               int magnitude = c.magnitude - 1;
-                               player.conditions.add(i, new ActorCondition(c.conditionType, magnitude, c.duration));
+                       int i = getRandomConditionForRejuvenate(player);
+                       if (i >= 0) {
+                               ActorCondition c = player.conditions.remove(i);
+                               if (c.magnitude > 1) {
+                                       int magnitude = c.magnitude - 1;
+                                       player.conditions.add(i, new ActorCondition(c.conditionType, magnitude, c.duration));
+                               }
+                               recalculateActorCombatTraits(player);
                        }
-                       recalculateActorCombatTraits(player);
                }
        }
 
+       private static int getRandomConditionForRejuvenate(Player player) {
+               ArrayList<Integer> potentialConditions = new ArrayList<Integer>();
+               for(int i = 0; i < player.conditions.size(); ++i) {
+                       ActorCondition c = player.conditions.get(i);
+                       if (!c.isTemporaryEffect()) continue;
+                       if (c.conditionType.isPositive) continue;
+                       if (c.conditionType.conditionCategory == ActorConditionType.ACTORCONDITIONTYPE_SPIRITUAL) continue;
+                       potentialConditions.add(i);
+               }
+               if (potentialConditions.isEmpty()) return -1;
+               
+               return potentialConditions.get(Constants.rnd.nextInt(potentialConditions.size()));
+       }
+
        public void applyConditionsToMonsters(PredefinedMap map, boolean isFullRound) {
                for (MonsterSpawnArea a : map.spawnAreas) {
                for (Monster m : a.monsters) {
@@ -316,7 +323,7 @@ public class ActorStatsController {
                        , 0);
        }
        
-       private VisualEffect applyStatsModifierEffect(Actor actor, StatsModifierTraits effect, int magnitude, VisualEffect existingVisualEffect) {
+       private static VisualEffect applyStatsModifierEffect(Actor actor, StatsModifierTraits effect, int magnitude, VisualEffect existingVisualEffect) {
                if (effect == null) return existingVisualEffect;
                
                int effectValue = 0;