Skip to content

Commit

Permalink
close #63 Migrate all effects to fight module
Browse files Browse the repository at this point in the history
  • Loading branch information
vincent4vx committed Oct 17, 2018
1 parent 19af44c commit 51abf6d
Show file tree
Hide file tree
Showing 8 changed files with 104 additions and 75 deletions.
2 changes: 2 additions & 0 deletions src/main/java/fr/quatrevieux/araknemu/game/GameModule.java
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,7 @@
import fr.quatrevieux.araknemu.game.exploration.map.cell.trigger.action.teleport.TeleportFactory;
import fr.quatrevieux.araknemu.game.fight.FightService;
import fr.quatrevieux.araknemu.game.fight.builder.ChallengeBuilderFactory;
import fr.quatrevieux.araknemu.game.fight.module.CommonEffectsModule;
import fr.quatrevieux.araknemu.game.fight.module.RaulebaqueModule;
import fr.quatrevieux.araknemu.game.fight.module.StatesModule;
import fr.quatrevieux.araknemu.game.handler.loader.*;
Expand Down Expand Up @@ -429,6 +430,7 @@ private void configureServices(ContainerConfigurator configurator)
new ChallengeBuilderFactory()
),
Arrays.asList(
CommonEffectsModule::new,
StatesModule::new,
RaulebaqueModule::new
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ final public class Fight implements Dispatcher, Sender {
final private ListenerAggregate dispatcher = new DefaultListenerAggregate();
final private ScheduledExecutorService executor = Executors.newSingleThreadScheduledExecutor();
final private FightTurnList turnList = new FightTurnList(this);
final private EffectsHandler effects = new EffectsHandler(this);
final private EffectsHandler effects = new EffectsHandler();

final private StopWatch duration = new StopWatch();

Expand Down
Original file line number Diff line number Diff line change
@@ -1,19 +1,7 @@
package fr.quatrevieux.araknemu.game.fight.castable.effect;

import fr.quatrevieux.araknemu.data.constant.Characteristic;
import fr.quatrevieux.araknemu.game.fight.Fight;
import fr.quatrevieux.araknemu.game.fight.castable.CastScope;
import fr.quatrevieux.araknemu.game.fight.castable.effect.handler.EffectHandler;
import fr.quatrevieux.araknemu.game.fight.castable.effect.handler.armor.HealOrMultiplyDamageHandler;
import fr.quatrevieux.araknemu.game.fight.castable.effect.handler.armor.ReduceDamageHandler;
import fr.quatrevieux.araknemu.game.fight.castable.effect.handler.armor.SpellReturnHandler;
import fr.quatrevieux.araknemu.game.fight.castable.effect.handler.characteristic.*;
import fr.quatrevieux.araknemu.game.fight.castable.effect.handler.damage.DamageHandler;
import fr.quatrevieux.araknemu.game.fight.castable.effect.handler.damage.StealLifeHandler;
import fr.quatrevieux.araknemu.game.fight.castable.effect.handler.misc.PushStateHandler;
import fr.quatrevieux.araknemu.game.fight.castable.effect.handler.misc.RemoveStateHandler;
import fr.quatrevieux.araknemu.game.fight.castable.effect.handler.misc.SkipTurnHandler;
import fr.quatrevieux.araknemu.game.fight.castable.effect.handler.shifting.TeleportHandler;
import fr.quatrevieux.araknemu.game.fight.fighter.Fighter;

import java.util.HashMap;
Expand All @@ -23,69 +11,8 @@
* Handle fight effects
*/
final public class EffectsHandler {
final private Fight fight;

final private Map<Integer, EffectHandler> handlers = new HashMap<>();

public EffectsHandler(Fight fight) {
this.fight = fight;

register(4, new TeleportHandler(fight));

register(91, new StealLifeHandler(Element.WATER, fight));
register(92, new StealLifeHandler(Element.EARTH, fight));
register(93, new StealLifeHandler(Element.AIR, fight));
register(94, new StealLifeHandler(Element.FIRE, fight));
register(95, new StealLifeHandler(Element.NEUTRAL, fight));

register(96, new DamageHandler(Element.WATER, fight));
register(97, new DamageHandler(Element.EARTH, fight));
register(98, new DamageHandler(Element.AIR, fight));
register(99, new DamageHandler(Element.FIRE, fight));
register(100, new DamageHandler(Element.NEUTRAL, fight));

register(140, new SkipTurnHandler(fight));
register(950, new PushStateHandler(fight));
register(951, new RemoveStateHandler());

register(79, new HealOrMultiplyDamageHandler());
register(105, new ReduceDamageHandler());
register(106, new SpellReturnHandler(fight));
register(265, new ReduceDamageHandler());

register(111, new AddActionPointsHandler(fight));
register(120, new AddActionPointsHandler(fight));
register(168, new RemoveActionPointsHandler(fight));

register(78, new AddMovementPointsHandler(fight));
register(128, new AddMovementPointsHandler(fight));
register(169, new RemoveMovementPointsHandler(fight));

register(112, new AddCharacteristicHandler(fight, Characteristic.FIXED_DAMAGE));
register(115, new AddCharacteristicHandler(fight, Characteristic.CRITICAL_BONUS));
register(117, new AddCharacteristicHandler(fight, Characteristic.SIGHT_BOOST));
register(118, new AddCharacteristicHandler(fight, Characteristic.STRENGTH));
register(119, new AddCharacteristicHandler(fight, Characteristic.AGILITY));
register(122, new AddCharacteristicHandler(fight, Characteristic.FAIL_MALUS));
register(123, new AddCharacteristicHandler(fight, Characteristic.LUCK));
register(124, new AddCharacteristicHandler(fight, Characteristic.WISDOM));
register(126, new AddCharacteristicHandler(fight, Characteristic.INTELLIGENCE));
register(138, new AddCharacteristicHandler(fight, Characteristic.PERCENT_DAMAGE));
register(178, new AddCharacteristicHandler(fight, Characteristic.HEALTH_BOOST));
register(182, new AddCharacteristicHandler(fight, Characteristic.MAX_SUMMONED_CREATURES));

register(116, new RemoveCharacteristicHandler(fight, Characteristic.SIGHT_BOOST));
register(145, new RemoveCharacteristicHandler(fight, Characteristic.FIXED_DAMAGE));
register(152, new RemoveCharacteristicHandler(fight, Characteristic.LUCK));
register(154, new RemoveCharacteristicHandler(fight, Characteristic.AGILITY));
register(155, new RemoveCharacteristicHandler(fight, Characteristic.INTELLIGENCE));
register(156, new RemoveCharacteristicHandler(fight, Characteristic.WISDOM));
register(157, new RemoveCharacteristicHandler(fight, Characteristic.STRENGTH));
register(171, new RemoveCharacteristicHandler(fight, Characteristic.CRITICAL_BONUS));
register(179, new RemoveCharacteristicHandler(fight, Characteristic.HEALTH_BOOST));
register(186, new RemoveCharacteristicHandler(fight, Characteristic.PERCENT_DAMAGE));
}

public void register(int effectId, EffectHandler applier) {
handlers.put(effectId, applier);
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,91 @@
package fr.quatrevieux.araknemu.game.fight.module;

import fr.quatrevieux.araknemu.core.event.Listener;
import fr.quatrevieux.araknemu.data.constant.Characteristic;
import fr.quatrevieux.araknemu.game.fight.Fight;
import fr.quatrevieux.araknemu.game.fight.castable.effect.EffectsHandler;
import fr.quatrevieux.araknemu.game.fight.castable.effect.Element;
import fr.quatrevieux.araknemu.game.fight.castable.effect.handler.armor.HealOrMultiplyDamageHandler;
import fr.quatrevieux.araknemu.game.fight.castable.effect.handler.armor.ReduceDamageHandler;
import fr.quatrevieux.araknemu.game.fight.castable.effect.handler.armor.SpellReturnHandler;
import fr.quatrevieux.araknemu.game.fight.castable.effect.handler.characteristic.*;
import fr.quatrevieux.araknemu.game.fight.castable.effect.handler.damage.DamageHandler;
import fr.quatrevieux.araknemu.game.fight.castable.effect.handler.damage.StealLifeHandler;
import fr.quatrevieux.araknemu.game.fight.castable.effect.handler.misc.PushStateHandler;
import fr.quatrevieux.araknemu.game.fight.castable.effect.handler.misc.RemoveStateHandler;
import fr.quatrevieux.araknemu.game.fight.castable.effect.handler.misc.SkipTurnHandler;
import fr.quatrevieux.araknemu.game.fight.castable.effect.handler.shifting.TeleportHandler;

/**
* Module for register common fight effects
*/
final public class CommonEffectsModule implements FightModule {
final private Fight fight;

public CommonEffectsModule(Fight fight) {
this.fight = fight;
}

@Override
public void effects(EffectsHandler handler) {
handler.register(4, new TeleportHandler(fight));

handler.register(91, new StealLifeHandler(Element.WATER, fight));
handler.register(92, new StealLifeHandler(Element.EARTH, fight));
handler.register(93, new StealLifeHandler(Element.AIR, fight));
handler.register(94, new StealLifeHandler(Element.FIRE, fight));
handler.register(95, new StealLifeHandler(Element.NEUTRAL, fight));

handler.register(96, new DamageHandler(Element.WATER, fight));
handler.register(97, new DamageHandler(Element.EARTH, fight));
handler.register(98, new DamageHandler(Element.AIR, fight));
handler.register(99, new DamageHandler(Element.FIRE, fight));
handler.register(100, new DamageHandler(Element.NEUTRAL, fight));

handler.register(140, new SkipTurnHandler(fight));
handler.register(950, new PushStateHandler(fight));
handler.register(951, new RemoveStateHandler());

handler.register(79, new HealOrMultiplyDamageHandler());
handler.register(105, new ReduceDamageHandler());
handler.register(106, new SpellReturnHandler(fight));
handler.register(265, new ReduceDamageHandler());

handler.register(111, new AddActionPointsHandler(fight));
handler.register(120, new AddActionPointsHandler(fight));
handler.register(168, new RemoveActionPointsHandler(fight));

handler.register(78, new AddMovementPointsHandler(fight));
handler.register(128, new AddMovementPointsHandler(fight));
handler.register(169, new RemoveMovementPointsHandler(fight));

handler.register(112, new AddCharacteristicHandler(fight, Characteristic.FIXED_DAMAGE));
handler.register(115, new AddCharacteristicHandler(fight, Characteristic.CRITICAL_BONUS));
handler.register(117, new AddCharacteristicHandler(fight, Characteristic.SIGHT_BOOST));
handler.register(118, new AddCharacteristicHandler(fight, Characteristic.STRENGTH));
handler.register(119, new AddCharacteristicHandler(fight, Characteristic.AGILITY));
handler.register(122, new AddCharacteristicHandler(fight, Characteristic.FAIL_MALUS));
handler.register(123, new AddCharacteristicHandler(fight, Characteristic.LUCK));
handler.register(124, new AddCharacteristicHandler(fight, Characteristic.WISDOM));
handler.register(126, new AddCharacteristicHandler(fight, Characteristic.INTELLIGENCE));
handler.register(138, new AddCharacteristicHandler(fight, Characteristic.PERCENT_DAMAGE));
handler.register(178, new AddCharacteristicHandler(fight, Characteristic.HEALTH_BOOST));
handler.register(182, new AddCharacteristicHandler(fight, Characteristic.MAX_SUMMONED_CREATURES));

handler.register(116, new RemoveCharacteristicHandler(fight, Characteristic.SIGHT_BOOST));
handler.register(145, new RemoveCharacteristicHandler(fight, Characteristic.FIXED_DAMAGE));
handler.register(152, new RemoveCharacteristicHandler(fight, Characteristic.LUCK));
handler.register(154, new RemoveCharacteristicHandler(fight, Characteristic.AGILITY));
handler.register(155, new RemoveCharacteristicHandler(fight, Characteristic.INTELLIGENCE));
handler.register(156, new RemoveCharacteristicHandler(fight, Characteristic.WISDOM));
handler.register(157, new RemoveCharacteristicHandler(fight, Characteristic.STRENGTH));
handler.register(171, new RemoveCharacteristicHandler(fight, Characteristic.CRITICAL_BONUS));
handler.register(179, new RemoveCharacteristicHandler(fight, Characteristic.HEALTH_BOOST));
handler.register(186, new RemoveCharacteristicHandler(fight, Characteristic.PERCENT_DAMAGE));
}

@Override
public Listener[] listeners() {
return new Listener[0];
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
import fr.quatrevieux.araknemu.game.fight.castable.effect.buff.Buff;
import fr.quatrevieux.araknemu.game.fight.castable.effect.buff.BuffHook;
import fr.quatrevieux.araknemu.game.fight.castable.effect.handler.damage.DamageHandler;
import fr.quatrevieux.araknemu.game.fight.module.CommonEffectsModule;
import fr.quatrevieux.araknemu.game.spell.Spell;
import fr.quatrevieux.araknemu.game.spell.SpellConstraints;
import fr.quatrevieux.araknemu.game.spell.effect.SpellEffect;
Expand All @@ -32,7 +33,9 @@ public void setUp() throws Exception {

fight = createFight();
fight.nextState();
handler = new EffectsHandler(fight);
handler = new EffectsHandler();

new CommonEffectsModule(fight).effects(handler);

requestStack.clear();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
import fr.quatrevieux.araknemu.game.fight.castable.spell.SpellConstraintsValidator;
import fr.quatrevieux.araknemu.game.fight.fighter.player.PlayerFighter;
import fr.quatrevieux.araknemu.game.fight.map.FightCell;
import fr.quatrevieux.araknemu.game.fight.module.CommonEffectsModule;
import fr.quatrevieux.araknemu.game.fight.state.PlacementState;
import fr.quatrevieux.araknemu.game.fight.turn.FightTurn;
import fr.quatrevieux.araknemu.game.fight.turn.action.cast.Cast;
Expand Down Expand Up @@ -41,6 +42,7 @@ public void setUp() throws Exception {
dataSet.pushFunctionalSpells();

fight = createFight();
fight.register(new CommonEffectsModule(fight));

fighter1 = player.fighter();
fighter2 = other.fighter();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
import fr.quatrevieux.araknemu.game.fight.castable.validator.CastConstraintValidator;
import fr.quatrevieux.araknemu.game.fight.castable.spell.SpellConstraintsValidator;
import fr.quatrevieux.araknemu.game.fight.fighter.Fighter;
import fr.quatrevieux.araknemu.game.fight.module.CommonEffectsModule;
import fr.quatrevieux.araknemu.game.fight.turn.FightTurn;
import fr.quatrevieux.araknemu.game.fight.turn.action.ActionResult;
import fr.quatrevieux.araknemu.game.fight.turn.action.ActionType;
Expand Down Expand Up @@ -32,6 +33,7 @@ public void setUp() throws Exception {

fight = createFight();
fight.nextState();
fight.register(new CommonEffectsModule(fight));
turn = new FightTurn(fighter = player.fighter(), fight, Duration.ofSeconds(30));

fighter.move(fight.map().get(185));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
import fr.quatrevieux.araknemu.game.fight.castable.weapon.WeaponConstraintsValidator;
import fr.quatrevieux.araknemu.game.fight.exception.FightException;
import fr.quatrevieux.araknemu.game.fight.fighter.Fighter;
import fr.quatrevieux.araknemu.game.fight.module.CommonEffectsModule;
import fr.quatrevieux.araknemu.game.fight.turn.FightTurn;
import fr.quatrevieux.araknemu.game.fight.turn.action.ActionResult;
import fr.quatrevieux.araknemu.game.fight.turn.action.ActionType;
Expand Down Expand Up @@ -34,6 +35,7 @@ public void setUp() throws Exception {

fight = createFight();
fight.nextState();
fight.register(new CommonEffectsModule(fight));
turn = new FightTurn(fighter = player.fighter(), fight, Duration.ofSeconds(30));

fighter.move(fight.map().get(171));
Expand Down

0 comments on commit 51abf6d

Please sign in to comment.