Skip to content

Commit 9a09d6c

Browse files
committed
Revert changes to heal and mana regain so that they dont interrupt
1 parent 708aa02 commit 9a09d6c

11 files changed

Lines changed: 469 additions & 80 deletions
Lines changed: 90 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,53 +1,127 @@
11
package com.etheller.warsmash.viewer5.handlers.w3x.simulation.abilities.item;
22

3-
import com.etheller.warsmash.units.manager.MutableObjectData;
43
import com.etheller.warsmash.util.War3ID;
4+
import com.etheller.warsmash.util.WarsmashConstants;
55
import com.etheller.warsmash.viewer5.handlers.w3x.simulation.CSimulation;
66
import com.etheller.warsmash.viewer5.handlers.w3x.simulation.CUnit;
77
import com.etheller.warsmash.viewer5.handlers.w3x.simulation.CWidget;
88
import com.etheller.warsmash.viewer5.handlers.w3x.simulation.abilities.generic.AbstractGenericSingleIconNoSmartActiveAbility;
9-
import com.etheller.warsmash.viewer5.handlers.w3x.simulation.abilities.skills.CAbilityNoTargetSpellBase;
9+
import com.etheller.warsmash.viewer5.handlers.w3x.simulation.abilities.skills.CAbilitySpellBase;
1010
import com.etheller.warsmash.viewer5.handlers.w3x.simulation.abilities.targeting.AbilityPointTarget;
1111
import com.etheller.warsmash.viewer5.handlers.w3x.simulation.abilities.targeting.AbilityTarget;
12-
import com.etheller.warsmash.viewer5.handlers.w3x.simulation.abilities.types.definitions.impl.AbilityFields;
1312
import com.etheller.warsmash.viewer5.handlers.w3x.simulation.behaviors.CBehavior;
1413
import com.etheller.warsmash.viewer5.handlers.w3x.simulation.orders.OrderIds;
1514
import com.etheller.warsmash.viewer5.handlers.w3x.simulation.trigger.enumtypes.CEffectType;
1615
import com.etheller.warsmash.viewer5.handlers.w3x.simulation.util.AbilityActivationReceiver;
1716
import com.etheller.warsmash.viewer5.handlers.w3x.simulation.util.AbilityTargetCheckReceiver;
1817
import com.etheller.warsmash.viewer5.handlers.w3x.simulation.util.CommandStringErrorKeys;
1918

20-
public class CAbilityItemHeal extends CAbilityNoTargetSpellBase {
21-
private int lifeToRegain;
19+
public class CAbilityItemHeal extends AbstractGenericSingleIconNoSmartActiveAbility {
20+
public static final War3ID CODE = War3ID.fromString("AIhe");
21+
private final int lifeToRegain;
22+
private final float cooldown;
2223

23-
public CAbilityItemHeal(int handleId, War3ID alias) {
24+
public CAbilityItemHeal(final int handleId, final War3ID alias, final int lifeToRegain, final float cooldown) {
2425
super(handleId, alias);
26+
this.lifeToRegain = lifeToRegain;
27+
this.cooldown = cooldown;
2528
}
2629

2730
@Override
28-
public int getBaseOrderId() {
29-
return OrderIds.itemhealingpotion;
31+
protected void innerCheckCanTarget(final CSimulation game, final CUnit unit, final int orderId,
32+
final CWidget target, final AbilityTargetCheckReceiver<CWidget> receiver) {
33+
receiver.orderIdNotAccepted();
34+
}
35+
36+
@Override
37+
protected void innerCheckCanTarget(final CSimulation game, final CUnit unit, final int orderId,
38+
final AbilityPointTarget target, final AbilityTargetCheckReceiver<AbilityPointTarget> receiver) {
39+
receiver.orderIdNotAccepted();
3040
}
3141

3242
@Override
33-
protected void innerCheckCanUseSpell(CSimulation game, CUnit unit, int orderId, AbilityActivationReceiver receiver) {
34-
if (unit.getLife() >= unit.getMaxLife()) {
43+
protected void innerCheckCanTargetNoTarget(final CSimulation game, final CUnit unit, final int orderId,
44+
final AbilityTargetCheckReceiver<Void> receiver) {
45+
if (orderId == getBaseOrderId()) {
46+
receiver.targetOk(null);
47+
}
48+
else {
49+
receiver.orderIdNotAccepted();
50+
}
51+
}
52+
53+
@Override
54+
protected void innerCheckCanUse(final CSimulation game, final CUnit unit, final int orderId,
55+
final AbilityActivationReceiver receiver) {
56+
final float cooldownRemaining = CAbilitySpellBase.getCooldownRemaining(game, unit, CODE);
57+
if (cooldownRemaining > 0) {
58+
final float cooldownLengthDisplay = unit.getCooldownLengthDisplayTicks(game, CODE)
59+
* WarsmashConstants.SIMULATION_STEP_TIME;
60+
receiver.cooldownNotYetReady(cooldownRemaining, cooldownLengthDisplay);
61+
}
62+
else if (unit.getLife() >= unit.getMaxLife()) {
3563
receiver.activationCheckFailed(CommandStringErrorKeys.ALREADY_AT_FULL_HEALTH);
3664
}
3765
else {
38-
super.innerCheckCanUseSpell(game, unit, orderId, receiver);
66+
receiver.useOk();
3967
}
4068
}
4169

4270
@Override
43-
public void populateData(MutableObjectData.MutableGameObject worldEditorAbility, int level) {
44-
this.lifeToRegain = worldEditorAbility.getFieldAsInteger(AbilityFields.ItemHealingLesser.HIT_POINTS_GAINED, level);
71+
public int getBaseOrderId() {
72+
return OrderIds.heal;
4573
}
4674

4775
@Override
48-
public boolean doEffect(CSimulation simulation, CUnit caster, AbilityTarget target) {
49-
caster.heal(simulation, this.lifeToRegain);
50-
simulation.createSpellEffectOnUnit(caster, getAlias(), CEffectType.TARGET);
76+
public boolean isToggleOn() {
5177
return false;
5278
}
79+
80+
@Override
81+
public void onAdd(final CSimulation game, final CUnit unit) {
82+
83+
}
84+
85+
@Override
86+
public void onRemove(final CSimulation game, final CUnit unit) {
87+
88+
}
89+
90+
@Override
91+
public void onTick(final CSimulation game, final CUnit unit) {
92+
93+
}
94+
95+
@Override
96+
public void onCancelFromQueue(final CSimulation game, final CUnit unit, final int orderId) {
97+
98+
}
99+
100+
@Override
101+
public boolean checkBeforeQueue(final CSimulation game, final CUnit caster, final int orderId,
102+
final AbilityTarget target) {
103+
if ((target == null) && (orderId == getBaseOrderId())) {
104+
caster.heal(game, this.lifeToRegain);
105+
game.createSpellEffectOnUnit(caster, getAlias(), CEffectType.TARGET);
106+
caster.beginCooldown(game, CODE, cooldown);
107+
return false;
108+
}
109+
return super.checkBeforeQueue(game, caster, orderId, target);
110+
}
111+
112+
@Override
113+
public CBehavior begin(final CSimulation game, final CUnit caster, final int orderId, final CWidget target) {
114+
return null;
115+
}
116+
117+
@Override
118+
public CBehavior begin(final CSimulation game, final CUnit caster, final int orderId,
119+
final AbilityPointTarget point) {
120+
return null;
121+
}
122+
123+
@Override
124+
public CBehavior beginNoTarget(final CSimulation game, final CUnit caster, final int orderId) {
125+
return null;
126+
}
53127
}
Lines changed: 91 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,53 +1,128 @@
11
package com.etheller.warsmash.viewer5.handlers.w3x.simulation.abilities.item;
22

3-
import com.etheller.warsmash.units.manager.MutableObjectData;
43
import com.etheller.warsmash.util.War3ID;
4+
import com.etheller.warsmash.util.WarsmashConstants;
55
import com.etheller.warsmash.viewer5.handlers.w3x.simulation.CSimulation;
66
import com.etheller.warsmash.viewer5.handlers.w3x.simulation.CUnit;
77
import com.etheller.warsmash.viewer5.handlers.w3x.simulation.CWidget;
88
import com.etheller.warsmash.viewer5.handlers.w3x.simulation.abilities.generic.AbstractGenericSingleIconNoSmartActiveAbility;
9-
import com.etheller.warsmash.viewer5.handlers.w3x.simulation.abilities.skills.CAbilityNoTargetSpellBase;
9+
import com.etheller.warsmash.viewer5.handlers.w3x.simulation.abilities.skills.CAbilitySpellBase;
1010
import com.etheller.warsmash.viewer5.handlers.w3x.simulation.abilities.targeting.AbilityPointTarget;
1111
import com.etheller.warsmash.viewer5.handlers.w3x.simulation.abilities.targeting.AbilityTarget;
12-
import com.etheller.warsmash.viewer5.handlers.w3x.simulation.abilities.types.definitions.impl.AbilityFields;
1312
import com.etheller.warsmash.viewer5.handlers.w3x.simulation.behaviors.CBehavior;
1413
import com.etheller.warsmash.viewer5.handlers.w3x.simulation.orders.OrderIds;
1514
import com.etheller.warsmash.viewer5.handlers.w3x.simulation.trigger.enumtypes.CEffectType;
1615
import com.etheller.warsmash.viewer5.handlers.w3x.simulation.util.AbilityActivationReceiver;
1716
import com.etheller.warsmash.viewer5.handlers.w3x.simulation.util.AbilityTargetCheckReceiver;
1817
import com.etheller.warsmash.viewer5.handlers.w3x.simulation.util.CommandStringErrorKeys;
1918

20-
public class CAbilityItemManaRegain extends CAbilityNoTargetSpellBase {
21-
private int manaToRegain;
19+
public class CAbilityItemManaRegain extends AbstractGenericSingleIconNoSmartActiveAbility {
20+
public static final War3ID CODE = War3ID.fromString("AIma");
21+
private final int manaToRegain;
22+
private final float cooldown;
2223

23-
public CAbilityItemManaRegain(int handleId, War3ID alias) {
24+
public CAbilityItemManaRegain(final int handleId, final War3ID alias, final int manaToRegain,
25+
final float cooldown) {
2426
super(handleId, alias);
27+
this.manaToRegain = manaToRegain;
28+
this.cooldown = cooldown;
2529
}
2630

2731
@Override
28-
public int getBaseOrderId() {
29-
return OrderIds.itemmanapotion;
32+
protected void innerCheckCanTarget(final CSimulation game, final CUnit unit, final int orderId,
33+
final CWidget target, final AbilityTargetCheckReceiver<CWidget> receiver) {
34+
receiver.orderIdNotAccepted();
35+
}
36+
37+
@Override
38+
protected void innerCheckCanTarget(final CSimulation game, final CUnit unit, final int orderId,
39+
final AbilityPointTarget target, final AbilityTargetCheckReceiver<AbilityPointTarget> receiver) {
40+
receiver.orderIdNotAccepted();
3041
}
3142

3243
@Override
33-
protected void innerCheckCanUseSpell(CSimulation game, CUnit unit, int orderId, AbilityActivationReceiver receiver) {
34-
if (unit.getMana() >= unit.getMaximumMana()) {
44+
protected void innerCheckCanTargetNoTarget(final CSimulation game, final CUnit unit, final int orderId,
45+
final AbilityTargetCheckReceiver<Void> receiver) {
46+
if (orderId == getBaseOrderId()) {
47+
receiver.targetOk(null);
48+
}
49+
else {
50+
receiver.orderIdNotAccepted();
51+
}
52+
}
53+
54+
@Override
55+
protected void innerCheckCanUse(final CSimulation game, final CUnit unit, final int orderId,
56+
final AbilityActivationReceiver receiver) {
57+
final float cooldownRemaining = CAbilitySpellBase.getCooldownRemaining(game, unit, CODE);
58+
if (cooldownRemaining > 0) {
59+
final float cooldownLengthDisplay = unit.getCooldownLengthDisplayTicks(game, CODE)
60+
* WarsmashConstants.SIMULATION_STEP_TIME;
61+
receiver.cooldownNotYetReady(cooldownRemaining, cooldownLengthDisplay);
62+
}
63+
else if (unit.getMana() >= unit.getMaximumMana()) {
3564
receiver.activationCheckFailed(CommandStringErrorKeys.ALREADY_AT_FULL_MANA);
3665
}
3766
else {
38-
super.innerCheckCanUseSpell(game, unit, orderId, receiver);
67+
receiver.useOk();
3968
}
4069
}
4170

4271
@Override
43-
public void populateData(MutableObjectData.MutableGameObject worldEditorAbility, int level) {
44-
this.manaToRegain = worldEditorAbility.getFieldAsInteger(AbilityFields.ItemManaRegainLesser.MANA_POINTS_GAINED, level);
72+
public int getBaseOrderId() {
73+
return OrderIds.replenishmana;
4574
}
4675

4776
@Override
48-
public boolean doEffect(CSimulation simulation, CUnit caster, AbilityTarget target) {
49-
caster.restoreMana(simulation, this.manaToRegain);
50-
simulation.createSpellEffectOnUnit(caster, getAlias(), CEffectType.CASTER);
77+
public boolean isToggleOn() {
5178
return false;
5279
}
80+
81+
@Override
82+
public void onAdd(final CSimulation game, final CUnit unit) {
83+
84+
}
85+
86+
@Override
87+
public void onRemove(final CSimulation game, final CUnit unit) {
88+
89+
}
90+
91+
@Override
92+
public void onTick(final CSimulation game, final CUnit unit) {
93+
94+
}
95+
96+
@Override
97+
public void onCancelFromQueue(final CSimulation game, final CUnit unit, final int orderId) {
98+
99+
}
100+
101+
@Override
102+
public boolean checkBeforeQueue(final CSimulation game, final CUnit caster, final int orderId,
103+
final AbilityTarget target) {
104+
if ((target == null) && (orderId == getBaseOrderId())) {
105+
caster.restoreMana(game, this.manaToRegain);
106+
game.createSpellEffectOnUnit(caster, getAlias(), CEffectType.CASTER);
107+
caster.beginCooldown(game, CODE, cooldown);
108+
return false;
109+
}
110+
return super.checkBeforeQueue(game, caster, orderId, target);
111+
}
112+
113+
@Override
114+
public CBehavior begin(final CSimulation game, final CUnit caster, final int orderId, final CWidget target) {
115+
return null;
116+
}
117+
118+
@Override
119+
public CBehavior begin(final CSimulation game, final CUnit caster, final int orderId,
120+
final AbilityPointTarget point) {
121+
return null;
122+
}
123+
124+
@Override
125+
public CBehavior beginNoTarget(final CSimulation game, final CUnit caster, final int orderId) {
126+
return null;
127+
}
53128
}

core/src/com/etheller/warsmash/viewer5/handlers/w3x/simulation/abilities/skills/CAbilitySpellBase.java

Lines changed: 19 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -43,11 +43,11 @@ public final void populate(final MutableGameObject worldEditorAbility, final int
4343
this.castRange = worldEditorAbility.getFieldAsFloat(AbilityFields.CAST_RANGE, level);
4444
this.cooldown = worldEditorAbility.readSLKTagFloat("Cool" + level);
4545
this.castingTime = worldEditorAbility.getFieldAsFloat(AbilityFields.CASTING_TIME, level);
46-
int requiredLevel = worldEditorAbility.getFieldAsInteger(AbilityFields.REQUIRED_LEVEL, 0);
46+
final int requiredLevel = worldEditorAbility.getFieldAsInteger(AbilityFields.REQUIRED_LEVEL, 0);
4747

4848
this.targetsAllowed = CTargetType
4949
.parseTargetTypeSet(worldEditorAbility.getFieldAsString(AbilityFields.TARGETS_ALLOWED, level));
50-
if (requiredLevel < 6 && !isPhysicalSpell() && !isUniversalSpell()) {
50+
if ((requiredLevel < 6) && !isPhysicalSpell() && !isUniversalSpell()) {
5151
this.targetsAllowed.add(CTargetType.NON_MAGIC_IMMUNE);
5252
}
5353
if (isPhysicalSpell() && !isUniversalSpell()) {
@@ -75,13 +75,13 @@ public final void populate(final MutableGameObject worldEditorAbility, final int
7575
populateData(worldEditorAbility, level);
7676
}
7777

78-
public float getDurationForTarget(CWidget target) {
79-
CUnit unit = target.visit(AbilityTargetVisitor.UNIT);
78+
public float getDurationForTarget(final CWidget target) {
79+
final CUnit unit = target.visit(AbilityTargetVisitor.UNIT);
8080
return getDurationForTarget(unit);
8181
}
8282

83-
public float getDurationForTarget(CUnit targetUnit) {
84-
if(targetUnit != null && targetUnit.isHero()) {
83+
public float getDurationForTarget(final CUnit targetUnit) {
84+
if ((targetUnit != null) && targetUnit.isHero()) {
8585
return getHeroDuration();
8686
}
8787
return getDuration();
@@ -99,11 +99,12 @@ public float getHeroDuration() {
9999

100100
public abstract boolean doEffect(CSimulation simulation, CUnit caster, AbilityTarget target);
101101

102-
public boolean doChannelTick(CSimulation simulation, CUnit caster, AbilityTarget target) {
102+
public boolean doChannelTick(final CSimulation simulation, final CUnit caster, final AbilityTarget target) {
103103
return false;
104104
}
105105

106-
public void doChannelEnd(CSimulation game, CUnit unit, AbilityTarget target, boolean interrupted) {
106+
public void doChannelEnd(final CSimulation game, final CUnit unit, final AbilityTarget target,
107+
final boolean interrupted) {
107108
}
108109

109110
@Override
@@ -130,9 +131,10 @@ protected void innerCheckCanUse(final CSimulation game, final CUnit unit, final
130131
receiver.useOk();
131132
return;
132133
}
133-
float cooldownRemaining = getCooldownRemaining(game, unit);
134+
final float cooldownRemaining = getCooldownRemaining(game, unit);
134135
if (cooldownRemaining > 0) {
135-
float cooldownLengthDisplay = unit.getCooldownLengthDisplayTicks(game, getCode()) * WarsmashConstants.SIMULATION_STEP_TIME;
136+
final float cooldownLengthDisplay = unit.getCooldownLengthDisplayTicks(game, getCode())
137+
* WarsmashConstants.SIMULATION_STEP_TIME;
136138
receiver.cooldownNotYetReady(cooldownRemaining, cooldownLengthDisplay);
137139
}
138140
else if (unit.getMana() < this.manaCost) {
@@ -143,7 +145,8 @@ else if (unit.getMana() < this.manaCost) {
143145
}
144146
}
145147

146-
protected void innerCheckCanUseSpell(CSimulation game, CUnit unit, int orderId, AbilityActivationReceiver receiver) {
148+
protected void innerCheckCanUseSpell(final CSimulation game, final CUnit unit, final int orderId,
149+
final AbilityActivationReceiver receiver) {
147150
receiver.useOk();
148151
}
149152

@@ -173,7 +176,11 @@ public EnumSet<CTargetType> getTargetsAllowed() {
173176
}
174177

175178
public float getCooldownRemaining(final CSimulation game, final CUnit caster) {
176-
return caster.getCooldownRemainingTicks(game, getCode()) * WarsmashConstants.SIMULATION_STEP_TIME;
179+
return getCooldownRemaining(game, caster, getCode());
180+
}
181+
182+
public static float getCooldownRemaining(final CSimulation game, final CUnit caster, final War3ID code) {
183+
return caster.getCooldownRemainingTicks(game, code) * WarsmashConstants.SIMULATION_STEP_TIME;
177184
}
178185

179186
public void setManaCost(final int manaCost) {
@@ -196,7 +203,6 @@ public void setTargetsAllowed(final EnumSet<CTargetType> targetsAllowed) {
196203
this.targetsAllowed = targetsAllowed;
197204
}
198205

199-
200206
public PrimaryTag getCastingPrimaryTag() {
201207
return this.castingPrimaryTag;
202208
}

0 commit comments

Comments
 (0)