still having trouble with
Cautery Sliver, it causes Magarena to crash.
here is th groovy code:
- Code: Select all
def SLIVER_CREATURE_OR_PLAYER = new MagicTargetFilterImpl() {
public boolean accept(final MagicGame game,final MagicPlayer player,final MagicTarget target) {
return target.isPlayer() || (target.isCreature() && target.hasSubType(MagicSubType.Sliver));
}
public boolean acceptType(final MagicTargetType targetType) {
return targetType==MagicTargetType.Permanent ||
targetType==MagicTargetType.Player;
}
};
def CauteryDamage = new MagicPermanentActivation(
new MagicActivationHints(MagicTiming.Removal),
"CauteryDam"
) {
@Override
public Iterable<MagicEvent> getCostEvent(final MagicPermanent source) {
return [
new MagicPayManaCostEvent(source,"{1}"),
new MagicSacrificeEvent(source)
];
}
@Override
public MagicEvent getPermanentEvent(final MagicPermanent source,final MagicPayedCost payedCost) {
return new MagicEvent(
source,
MagicTargetChoice.NEG_TARGET_CREATURE_OR_PLAYER,
new MagicDamageTargetPicker(1),
this,
"SN deals 1 damage to target creature or player\$."
);
}
@Override
public void executeEvent(final MagicGame game, final MagicEvent event) {
event.processTarget(game,new MagicTargetAction() {
public void doAction(final MagicTarget target) {
final MagicDamage damage=new MagicDamage(event.getSource(),target,1);
game.doAction(new MagicDealDamageAction(damage));
}
});
}
};
def CauteryPrevent = new MagicPermanentActivation(
new MagicActivationHints(MagicTiming.Pump),
"CauteryPrev"
) {
@Override
public Iterable<MagicEvent> getCostEvent(final MagicPermanent source) {
return [
new MagicPayManaCostEvent(source,"{1}"),
new MagicSacrificeEvent(source)
];
}
@Override
public MagicEvent getPermanentEvent(final MagicPermanent source,final MagicPayedCost payedCost) {
return new MagicEvent(
source,
SLIVER_CREATURE_OR_PLAYER,
MagicPreventTargetPicker.getInstance(),
this,
"Prevent the next 1 damage that would be dealt to target sliver creature\$ or player\$ this turn."
);
}
@Override
public void executeEvent(final MagicGame game, final MagicEvent event) {
event.processTarget(game,new MagicTargetAction() {
public void doAction(final MagicTarget target) {
game.doAction(new MagicPreventDamageAction(target,1));
}
});
}
};
[
new MagicStatic(
MagicLayer.Ability,
MagicTargetFilter.TARGET_SLIVER
) {
@Override
public void modAbilityFlags(final MagicPermanent source,final MagicPermanent permanent,final Set<MagicAbility> flags) {
permanent.addAbility(CauteryDamage);
permanent.addAbility(CauteryPrevent);
}
}
]
And here is the crash report:
CRASH REPORT FOR MAGARENA THREAD Thread[AWT-EventQueue-0,6,main]
CREATED ON 2013/09/21 21:20:18
MAGARENA VERSION 1.41, JRE 1.7.0_25, OS Windows 7_6.1 x86
Turn : 1 Phase : Mulligan Step : Begin Player : Computer Score : 0
0] Player : Jericho Life : 20 Delayed : Total=0
1] Player : Computer Life : 20 Delayed : Total=0
Stack : 0
Score = 0
Exception from controller.runGame: startup failed:
C:\Users\Torre\Desktop\Magarena-1.41\Magarena\scripts\Cautery_Sliver.groovy: 61: [Static type checking] - Cannot find matching method magic.model.event.MagicEvent#<init>(magic.model.MagicPermanent, Cautery_Sliver$1, magic.model.target.MagicPreventTargetPicker, Cautery_Sliver$4, java.lang.String). Please check if the declared type is right and if the method exists.
@ line 61, column 20.
return new MagicEvent(
^
1 error
org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:
C:\Users\Torre\Desktop\Magarena-1.41\Magarena\scripts\Cautery_Sliver.groovy: 61: [Static type checking] - Cannot find matching method magic.model.event.MagicEvent#<init>(magic.model.MagicPermanent, Cautery_Sliver$1, magic.model.target.MagicPreventTargetPicker, Cautery_Sliver$4, java.lang.String). Please check if the declared type is right and if the method exists.
@ line 61, column 20.
return new MagicEvent(
^
1 error
at org.codehaus.groovy.control.ErrorCollector.failIfErrors(ErrorCollector.java:309)
at org.codehaus.groovy.control.CompilationUnit.applyToPrimaryClassNodes(CompilationUnit.java:1063)
at org.codehaus.groovy.control.CompilationUnit.doPhaseOperation(CompilationUnit.java:572)
at org.codehaus.groovy.control.CompilationUnit.processPhaseOperations(CompilationUnit.java:550)
at org.codehaus.groovy.control.CompilationUnit.compile(CompilationUnit.java:527)
at groovy.lang.GroovyClassLoader.doParseClass(GroovyClassLoader.java:279)
at groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:258)
at groovy.lang.GroovyShell.parseClass(GroovyShell.java:613)
at groovy.lang.GroovyShell.parse(GroovyShell.java:625)
at groovy.lang.GroovyShell.evaluate(GroovyShell.java:516)
at groovy.lang.GroovyShell.evaluate(GroovyShell.java:565)
at magic.data.CardDefinitions.addCardSpecificGroovyCode(CardDefinitions.java:120)
at magic.data.CardProperty$30.setProperty(CardProperty.java:182)
at magic.model.MagicCardDefinition.loadScript(MagicCardDefinition.java:125)
at magic.model.MagicCard.<init>(MagicCard.java:46)
at magic.model.MagicCard.<init>(MagicCard.java:38)
at magic.model.MagicPlayer.createHandAndLibrary(MagicPlayer.java:296)
at magic.model.MagicDuel.nextGame(MagicDuel.java:198)
at magic.ui.MagicFrame.nextGame(MagicFrame.java:550)
at magic.ui.DuelPanel.actionPerformed(DuelPanel.java:357)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$200(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)