From c177b1a7283a3caaf8a369e611b03bdce576acc6 Mon Sep 17 00:00:00 2001 From: WayofTime Date: Wed, 10 Aug 2016 21:54:36 -0400 Subject: [PATCH] Added some simple framework to increase the speed of the green grove ritual (may need a buff overall) --- .../bloodmagic/ritual/RitualGreenGrove.java | 35 +++++++++++++++++-- 1 file changed, 33 insertions(+), 2 deletions(-) diff --git a/src/main/java/WayofTime/bloodmagic/ritual/RitualGreenGrove.java b/src/main/java/WayofTime/bloodmagic/ritual/RitualGreenGrove.java index 06324909..bb5ae341 100644 --- a/src/main/java/WayofTime/bloodmagic/ritual/RitualGreenGrove.java +++ b/src/main/java/WayofTime/bloodmagic/ritual/RitualGreenGrove.java @@ -35,6 +35,10 @@ public class RitualGreenGrove extends Ritual public static final String LEECH_RANGE = "leech"; public static double corrosiveWillDrain = 0.2; + public static double rawWillDrain = 0.05; + + public int refreshTime = 20; + public static int defaultRefreshTime = 20; public RitualGreenGrove() { @@ -65,6 +69,13 @@ public class RitualGreenGrove extends Ritual List willConfig = masterRitualStone.getActiveWillConfig(); double corrosiveWill = this.getWillRespectingConfig(world, pos, EnumDemonWillType.CORROSIVE, willConfig); + double rawWill = this.getWillRespectingConfig(world, pos, EnumDemonWillType.DEFAULT, willConfig); + + refreshTime = getRefreshTimeForRawWill(rawWill); + + boolean consumeRawWill = rawWill >= rawWillDrain && refreshTime != defaultRefreshTime; + + double rawDrain = 0; AreaDescriptor growingRange = getBlockRange(GROW_RANGE); @@ -79,15 +90,25 @@ public class RitualGreenGrove extends Ritual { block.updateTick(world, newPos, state, new Random()); totalGrowths++; + if (consumeRawWill) + { + rawWill -= rawWillDrain; + rawDrain += rawWillDrain; + } } } - if (totalGrowths >= maxGrowths) + if (totalGrowths >= maxGrowths || (consumeRawWill && rawWill >= rawWillDrain)) { break; } } + if (rawDrain > 0) + { + WorldDemonWillHandler.drainWill(world, pos, EnumDemonWillType.DEFAULT, rawDrain, true); + } + double corrosiveDrain = 0; if (corrosiveWill > corrosiveWillDrain) { @@ -126,10 +147,20 @@ public class RitualGreenGrove extends Ritual network.syphon(totalGrowths * getRefreshCost()); } + public int getRefreshTimeForRawWill(double rawWill) + { + if (rawWill > 0) + { + return 10; + } + + return defaultRefreshTime; + } + @Override public int getRefreshTime() { - return 20; + return refreshTime; } @Override