magefree / mage Goto Github PK
View Code? Open in Web Editor NEWMagic Another Game Engine
Home Page: http://xmage.today
License: MIT License
Magic Another Game Engine
Home Page: http://xmage.today
License: MIT License
Now it is not possible to know if someone joined your table except in GUI
That's the problem as you may create a game and switch Mage.Client to any other program while waiting for a player to join.
But now the only option to start the game is check regulary the gui for player joined.
It's strange as Pacifism has effect with outcome=Detriement
If you create two games and you open Graveyard dialog in the first game then you won't be able to open the graveyard dialog in second one.
Whenever you click grave button in the second game, dialog is opened in the first game instead.
Vile Rebirth (M13) always fizzles when cast by AI (MAD).
i guess tarageting in opponent graveyard may cause the problem.
Same is true for Revive, cast by the AI with green card in graveyard.
Rule text doesn't display filterDescription as it should.
Example card: Crimson Muckwader.
AI uses Arbor Elf's ability to untap player's land.
Not sure it is only AI bug
play Sublime Archangel
play Captain's Call
all tokens will get Exalted (according to tooltips)
but when Sublime Archangel attacks alone, it will get exalted bonus only from two creatures - Sublime Archangel and one token
if you play any other creature, only two bonus will be applied anyway
The triggered ability of Huntmaster of the Fells shouldn't be optional.
It must be mandatory because there is no "may" in the wording of the ability.
Rule:
603.5. Some triggered abilities' effects are optional (they contain "may," as in "At the beginning of your upkeep, you may draw a card"). These abilities go on the stack when they trigger, regardless of whether their controller intends to exercise the ability's option or not. The choice is made when the ability resolves. Likewise, triggered abilities that have an effect "unless" something is true or a player chooses to do something will go on the stack normally; the "unless" part of the ability is dealt with when the ability resolves.
One can play a card from the list revealed by an opponent.
hand:Computer:Relentless Skaabs:1
hand:Computer:Appetite for Brains:1
battlefield:Human:Swamp:2
hand:Human:Appetite for Brains:1
Vers. 0.9.0 Human vs. Human
Turn 12 - Opponent casts a Switcheroo giving me his Faerie Invaders and taking my War falcon. I have a 1/1 soldier from Captains's call on my side.
Turn 16 - He can attack with the War Falcon without having any Knight or Soldier (guess he could have attacked also on turn 14).
Seems like my soldier count for the attack condition.
mad ai used its Evil Twin to kill all my creatures one by one
We need to make putting cards from library to graveyard as game method.
It is rather common effect, so won't it be better if we have
game.putCardsFromTopToGraveyard(player, amount)
or at least
new PutCardsFromTopToGraveyardEffect(player, amount).apply(game, source)
have a look at cards like Altar of Dementia
Scope:
Wouldn't it be better to show the cards in graveyard in the order they went to the graveyard.
Currently the order seems to me is random, so it's sometimes hard to find out, which card(s) went to the graveyard lately.
The target should be required by default. It becomes optional just for abilities with optional effects. As such, this behavior should be implemented there. It can also be found in some custom effects implementations that handle the optional part themselves.
Test case:
hand:Human:Stitched Drake:1
I don't have a clear idea at the moment on how this should change. Some "research" must be done first to come up with a set of specifications for the dynamic values.
This will have an impact on the effect texts and should provide a cleaner way of implementing a DynamicValue. Currently, some conventions were used like the toString method should return some specific text. This isn't a good practice.
Gravecrawler could block creatures with and without flying.
http://www.slightlymagic.net/forum/viewtopic.php?f=70&t=7850&p=96541#p96541
I was adding the Buyback ability and noticed that the KickerAbility (which I am using as a template) does not display the "Use kicker" text prompt during activation. In fact, it does not appear to use the activation code.
TODO: add double checking in combat and tracing all available data to find out the root cause
When picking order of triggered abilities, the tooltip of the Elderscale Wurm only shows "When Elderscale Wurm enters the battlefield,."
In case creature must attack this turn, game forces it to attack if possible without asking player.
But later, during declare attacker step, player can cancel such attack. That shouldn't be possible.
At first, it was found during playing vs AI: it simply equipped my creature with its own equipment
I've created EquipAbilityTest that proved the bug existance.
Probably it's related to new filters somehow.
Textbox for tooltip is sometimes too small to show all the text.
There should be a scrollbar or the size of the box has to be dynamic to show all the text.
it gives only trample
Filters need to be changed to offer more flexibility. This shouldn't come by having to modify the filter class. A strategy pattern shall be applied.
The +x/+x is equal to all creatures on the battlefield but is only has to be +x/+x for each creature Craterhoof Behemoth controller controls.
The
static {
filter.add(new ControllerPredicate(TargetController.YOU));
}
is missing.
Sometime it ruins PvAI games as AI stops casting spells spending all mana for the same equipment reequiping pair of its own creatures from one to another and back
Now sure what can be done here, but at least it shouldn't happen so easily as evaluation function should return less value as reequipping almost always results in tapped lands what shouldn't happen as there is a big penalty for tapped permanents.
It is especially seems strange when AI starts reequipping from first creature and ends with it through several cycles: so AI has the same game board position but with all lands tapped, that means that it is not because of horizon effect.
Should be fixed before Mage Release 0.9
Player said he couldn't do it or maybe he doesn't know how to block two creatures
Version 0.9.0 Human vs. Human
Turn 4 - Player A casting a Strangleroot Geist (2/1, Haste, Undying)
Turn 5 - Player B casting Cower in Fear (Opponent Creatures get -1/-1 until end of turn)
Strangleroot Geist dies and returns with a +1/+1 counter. But P/T will only be shown with 2/1.
So it seems like the -1/-1 of the Cower in Fear will be used for the returned Strangleroot geist.
Turn 6 - Strangleroot Geist now has P/T 3/2
But this is wrong imho.
Rule:
An object returned to the battlefield with the undying ability is a new object with no memory of its previous existence. It has "summoning sickness".
7/1/2012: Cower in Fear affects only creatures your opponents control at the time it resolves. It won't affect creatures that come under their control later in the turn.
I propose to keep a database with all the meta-information that we update dynamically.
There will be a column with the className so that we can easily instantiate the cards implementation in a game. This is the field we will check against to see if the card is already added to the database. This way, there is no need to instantiate all the cards.
We can use the file we currently have for card generation to add the exact oracle text for the abilities.
Tooltips doesn't shown until you remove and set again this option in preferences
I think this should have a stand alone replacement effect.
Just met it in the game, creature with Infect was targeted by me and dealt damage but it was usual.
I looked at the code and it is really so: DamageTargetEffect deals 2 damage from source.getSourceId() but as it comes from Livewire Lash it happens so that Livewire Lash deals that damage not equipped creature.
Please reimplement when have time.
As I've seen, the only cards that have an optional shuffle are the ones from optional abilities. As such, the optional part should either be in the effect or in the ability. There is forceShuffle in the effect, but unless using player.chooseUse, it is only inducing bugs.
Also, the default for reveal should be true. This means all the cards using this effect must be checked while refactoring.
Edit: All search effects should be refactored. I am thinking over using a builder.
And it happens more often for multiplayer
report from players:
http://s014.radikal.ru/i328/1207/54/a4ddca79361d.jpg
As for me, I regulary see such warning messages in server logs and it is very very old.
As far as I remember it relates to passing priority within the game.
The Icon from the current phase will be shifted to left in the phase bar.
But if the current phase is the "end combat" phase, this icon won't be shifted.
For unknown reason it is possible to cast Bond Beetle again from battlefield. Could reproduce it in several games.
Checked on other (this time white) creature, it didn't happen.
it may relate to the bug with giving to all green creature flash.
http://s45.radikal.ru/i109/1207/11/acf022ee6b1d.jpg
Could reproduce it with
hand:player:Cackling Counterpart:1
The tooltip of Faith's Reward is empty.
Discard selection in Preferences dialog for "Show tooltips" option.
Play the game.
Result: tooltips are not shown only for hand cards, and are still displayed for other zone
Expected: no tooltips are displayed in any zone in the game (battlefield, stack, grave, hand)
Issue found at mage.player.ai.ComputerPlayer.choose(Outcome outcome, Target target, UUID sourceId, Game game, Map<String, Serializable> options)
For every target it is always considered to require only one choice.
battlefield:Computer:Glistener Elf:3
battlefield:Human:Swamp:5
hand:Human:Barter in Blood:1
AI: mad ai
Version: 0.8.4
Sometimes AI blocks creature it can't block. This time it blocked creature with flying by creature without flying.
Tangle Mantis was equipped with Wolfhunter's Quiver
Hint: seems the method that determines the available blockers is not correct
Turn 5 Computer casts Master of the Pearl Trident
Turn 15 Computer casts Talrand, Sky Summoner, getting the "Islandwalk" and the "+1/+1/ from the master.
also in turn 15 the computer attacked with the Master of the Pearl Trident and I blocked it and the Master died.
Turn 17 computer attacked with the Talrand, Sky Summoner and I couldn't select the Talrand to block like he has islandwalk. The "Islandwalk" in the tooltip was gone, but it seems as if the islandwalk was internaly not removed.
reported by player
When they play 4-players game, and one lost, they got the stacktrace with ConcurrentModificationException
I have a screenshot
Create a wiki page with screenshots explaining various aspects of the game:
Some sort of user manual, with pictures.
Wouldn't it be better to display the creatures on the battlefield in the order they first entered the battlefield?
Now the order seems to me random and it's less convenient to find the last cast creature on the battlefield.
Opponent had 16 cards in hius graveyard, I had 4.
Jace's Phantasm was still 1/1
if players casts Shock targeting himself, game doesn't ask him about redirecting damage to his planeswalker.
Though redirecting works when Shock targets opponents.
The bug is in BlazingTorchEvasionEffect extending CantBlockSourceEffect that automatically adds
@OverRide
public boolean canBlock(Permanent attacker, Permanent blocker, Ability source, Game game) {
return false;
}
Assigning to you, Robert, because seems it was implemented by you first.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.