Commit Graph

1191 Commits

Author SHA1 Message Date
omegablast2002@yahoo.com
2fcd031a7d corrected a crash from NULL pointer cause by ability$! not having the "lastcontroller" set. 2013-01-27 04:25:09 +00:00
omegablast2002@yahoo.com
534d87e3bd fixed evolve hoepfully for the final time. 2013-01-27 02:54:03 +00:00
Xawotihs@gmail.com
eec9bb44a8 Fixed warnings from linux and Android compilers
Cleaned up network code on Linux, it still does not work correctly
2013-01-26 22:17:43 +00:00
omegablast2002@yahoo.com
3443c8d075 corrected a goof up i made in evolve, i should have been comparing the events card controller to source controller to determine "under your control" 2013-01-26 16:52:34 +00:00
Xawotihs@gmail.com
f45c8e1d41 Just won my first Wagic network game :)
In details:
- I removed my player swap idea, it caused tons of issues with randoms
- instead I simply keep both peer on the exact same game and added one single parameter allowing to configure the view on the game. So, each peer is rendering the same game (gameObserver class) from a different player point of view (DuelLayers and related classes).
- a lot of gui stuff are missing to prevent user forbidden interactions but it works fine on Windows
2013-01-26 16:42:16 +00:00
Xawotihs@gmail.com
365fe10765 Fixed another dumb warning reported in the forum and added a nice assert for synchronization issues during network game. So, don't try it if you're not ready to get crashes in the face. 2013-01-26 08:07:31 +00:00
Xawotihs@gmail.com
da2098368b Added dumb cast for dumb compilators 2013-01-25 23:45:58 +00:00
Xawotihs@gmail.com
2ba5eb0022 Cleaned up Network code (hope that fixes the PSP compilation problems)
Added random seed logging
2013-01-25 21:47:16 +00:00
omegablast2002@yahoo.com
4bf419fbaf corrected evolve triggering from cards moving from inplay to inplay. 2013-01-25 19:56:26 +00:00
omegablast2002@yahoo.com
0db78c0444 force a lure block when the players decide they want to skip the action, a lurer MUST be blocked if the defending creature can block it. this action can not be skipped. 2013-01-25 14:25:26 +00:00
Xawotihs@gmail.com
9db8478dfe Created a NetworkGameObserver class able to extend the serialization code of GameObserver to synchronize and forward game actions on the network
Fixes in GameObserver serialization/deserialization code
Fixes in JNetwork and JSocket on windows
Various code cleanup (currentGamePhase access in particular)
Updated GUI code to re-enable a basic network GUI
Activated threaded tests on Windows. It uses 4 threads by default.
2013-01-22 22:39:49 +00:00
omegablast2002@yahoo.com
ca3dc49d71 added basic card draw replacement,
auto=replacedraw choice damage:2

auto=replacedraw choice draw:2 noreplace

notice noreplace exempts the draw from sending a draw event. draw events and drawn events are seperate events.

added dredge and it's rules.

[card]
name=Dakmor Salvage
auto=tap
auto={t}:add{b}
dredge=dredge(2)
text=Dakmor Salvage enters the battlefield tapped. -- {T}: Add {B} to your mana pool. -- Dredge 2 (If you would draw a card, instead you may put exactly two cards from the top of your library into your graveyard. If you do, return this card from your graveyard to your hand. Otherwise, draw a card.)
type=Land
[/card]
2013-01-20 20:13:07 +00:00
omegablast2002@yahoo.com
a9352a3b69 opened all possible restrictions to be checked as a intvalue of 1, inline with anthonys change a couple revs back.
this(variable:restriction{casted a spell})
2013-01-19 02:06:46 +00:00
anthonycalosa@gmail.com
e67084afb9 Added restriction "during my turn", "during opponent turn".
Added variable "controllerturn", "opponentturn" -> returns integer value if its your turn then 1 if not then 0.

ex. use

restriction=during my turn
otherrestriction=during opponent turn
auto=this(variable{controllerturn}) lord(creature|mybattlefield) 8/0
auto=this(variable{opponentturn}) lord(creature|mybattlefield) 0/8
2013-01-18 04:41:24 +00:00
anthonycalosa@gmail.com
5f90d1ee9f added keyword phandcount - player hand count
added keyword ohandcount - opponent hand count
2013-01-16 12:08:46 +00:00
omegablast2002@yahoo.com
a26f872ff3 add restriction for checking what alternative cost was paid. combined with if/ifnot ability becomes a very powerful tool.
paid(blah)
auto=if paid(alternative) then damage:3 target(creature)
auto=if paid(alternative) then life:10 target(player)
auto=ifnot paid(alternative) then damage:3 controller
auto=ifnot paid(alternative) then life:4 opponent

it can be used any place a restriction can be used. 
rearranged the constants for the payment type keywords to match the order we int the alternatePayment array on a card, added keywords for the remaining payment types, 

    "notpaid",
    "paidmana",
the 2 above pretain to paying the real manacost of a card
it checks the mana={1} cost line and is not joined to the other types.

    "kicker", 
    "alternative", 
    "buyback", 
    "flashback", 
    "retrace", 
    "facedown",
    "suspended"

note: all test pass in this revision.
2013-01-15 02:11:05 +00:00
anthonycalosa@gmail.com
510a8c4222 added nolegend ability. this doesn't remove legend rule, it only makes a card thas has nolegend ability excluded from check. 2013-01-07 06:46:56 +00:00
omegablast2002@yahoo.com
972e2b1ec2 added abilities=lure
"all creatures able to block blah must do so."
2013-01-05 05:01:31 +00:00
omegablast2002@yahoo.com
4960969640 added {unattach} cost
this can also be used for "equipped creature has unattach and blah" cards using 
auto=teach(creature) {unattach}:blah

also corrected a long standing guiupdating issue. a long long time ago a replace was removed from GuiPlay::Update in hopes to increase performance no amount of performance increase is worth having cards not updating thier position after an event recieve happens. this means curse will finally go to the correctly choosen players battlefield, equipment will no longer just linger after its target dies, auras won't stay on battlefield after a card is exiled. ect. no preformance decrease noticed, if anyone else notices one let me know.
2013-01-05 03:05:53 +00:00
Xawotihs@gmail.com
1049f90aa2 Fixed simultaneous access to the card DB. 2013-01-02 16:15:52 +00:00
omegablast2002@yahoo.com
238cd124ae corrected the spelling of evolve. thanks kf1 2012-12-27 21:07:20 +00:00
omegablast2002@yahoo.com
651d0b4623 added gatecrash "evole" mechanic.
auto=evole
2012-12-24 16:19:32 +00:00
omegablast2002@yahoo.com
ca446adf75 fixed a bug in sacrificed trigger. 2012-11-25 05:00:42 +00:00
omegablast2002@yahoo.com
92a8ccebd8 added a new tag to transforms(( keyword ... uynt ...meaning until your(the sources controller) next turn.
this should allow players to code cards with the detain ability of rtr correctly, as well as a handful of similar cards in the unsupported text.

detain is coded 
auto={1}{t}:target(creature|opponentBattlefield) transforms((Detained,newability[cantattack],newability[cantblock],newability[noactivatedability])) uynt

enjoy
2012-11-10 05:08:23 +00:00
omegablast2002@yahoo.com
ad055ad0b7 missed this file 2012-08-26 08:10:15 +00:00
omegablast2002@yahoo.com
78f5b11919 removed ABasilik class, this ability is completely soft codable now. 2012-08-25 00:27:22 +00:00
omegablast2002@yahoo.com
68f76fbaff removed farmstead hardcode, this card can now be soft coded 2012-08-25 00:07:10 +00:00
omegablast2002@yahoo.com
14695e7e5b removed kudzu hardcode, that card can be done with soft code...corrected frostbeast, it was incorrectly ignoring walls...it should destroy all even walls. 2012-08-24 23:59:35 +00:00
omegablast2002@yahoo.com
d078872dfc this is the first draft of a simple ai combo system,
format is as follows

HINT#combo hold(blah|myhand)^until(blah|mygraveyard)^until(blah|opponentshand)^restriction{type(creature|mybattlefield)~morethan~2}^cast(blah) targeting(blah|mygraveyard)^totalmananneeded({g}{g}{r}{u}{2})

the ai can be told to hold more then one card, until as many condiations as you want are met, until( is a TC and can basically be used in a fasion of saying "hold arbor elf until you have a lord of atlantas in play and a gaint growth in you hand" 

once the condiations are met you can later tell it to cast(gaint growth) targeting(arbor elf[fresh]|mybattlefield)...

I also included the whole of the games restrictions system...
so you can get really really creative with this so far.

the next thing I will do is ability targeting and card favoring.
2012-08-19 21:53:57 +00:00
omegablast2002@yahoo.com
0dbcd86b89 this commit adds AVRs new ability soulbond.
it requires an update to your mtg rules txt...
the coding is as follows

[card]
name=Arbor Elf
mana={g}
auto=soulbond 1/3
auto=soulbond {t}:add{g}
abilities=soulbond
type=Creature
subtype=Elf Druid
power=1
toughness=1
[/card]

auto=soulbond *any ability supported by wagic*
abilities=soulbond

the above arbor elf gives itself and its soulbond creature a 1/3 bonus and the ability to tap for green mana.
2012-07-16 14:59:46 +00:00
Xawotihs@gmail.com
a8492b7c5a Fixed compilation with mingwin 2012-06-01 23:36:18 +00:00
techdragon.nguyen@gmail.com
e2a0fef600 * updated release version to 0.18.6
* updated build tools to have core files zip naming scheme be based on version information contained in build.number.properties
* added new python library to allow reading java property files, remember to add the library to your PYTHONPATH before executing the python script otherwise the script will fail.

`
2012-05-07 05:09:12 +00:00
omegablast2002@yahoo.com
e67e2e669c fix for emblems not sticking, and phasealter not testDestroying. 2012-05-02 12:58:39 +00:00
techdragon.nguyen@gmail.com
9edfdef1c8 marking build to 0.18.5 for any bug fixes to 0.18.4 2012-04-20 07:55:13 +00:00
techdragon.nguyen@gmail.com
41e5dfe68a added new build scripts to handle changing of the build version. ant script will now generate Wagic_Version.h and update AndroidManifest.xml 2012-04-19 07:03:05 +00:00
techdragon.nguyen@gmail.com
bd9dc97ee0 updated build number to 0.18.4 2012-04-17 11:25:50 +00:00
techdragon.nguyen@gmail.com
f75314394f updating version to 0.18.3 2012-04-15 14:13:08 +00:00
omegablast2002@yahoo.com
7dec7bc873 soulbright fire kins ability was not triggering sideeffects...because i forgot to make it happen...opps...im only human :) 2012-04-12 11:46:00 +00:00
techdragon.nguyen@gmail.com
e8427452cd incremented build number to 0.18.2 2012-04-09 14:37:24 +00:00
omegablast2002@yahoo.com
7a6333ffd5 i split storedCard and storedSourceCard and forgot that if we dont have a storedCard we should make it use storedSourceCard in WParsedInt 2012-04-09 13:11:34 +00:00
omegablast2002@yahoo.com
18cd8b5082 added limiting of x to a color to fix Consume Spirit from being able to use any color..
{x:black}
{x:color}

creating a snapshot of a card instance in garbage for stored cards, the issue with previous version was it was using base model value instead of what the storedcard was actually at the time it was in battlefield. example, animal boneyard test was coming up 1 toughness short becuase the creature storedcard pointed to was sent to graveyard for the sacrifice. 

changed myStored TargetChooser to use storedSourceCard instead, as this is supposed to point to the actual card and not a snapshot.
2012-04-07 05:16:55 +00:00
omegablast2002@yahoo.com
864727b208 added HINT:castpriority(blah,blah,blah,blah,ect)
this is a method to set the order in which ai decides to play cards, you can for example tell ai to look for 2 instants, before trying to find a creature.
be sure to list all main types of the deck otherwise ai will pass on stuff
this is the current
const char* types[] = {"planeswalker","creature", "enchantment", "artifact", "sorcery", "instant"};

so be sure you include them if the decks need them.
other the above example would be coded
HINT:castpriority(instant,instant,creature,planeswalker,enchantment,artifact,sorcery)

as you can see this deck will now look for and play if possible, 2 instants before any of the other types.
this will really help with decks which rely on cards like dark ritual to produce mana to cast creature, simply by listing instant before creature. if the deck had dark rituals, in the above example, and it had them in hand, it would then cast dark ritual, dark ritual, then one of the remaining types. this is actually tested not just assumed.
2012-04-06 23:10:11 +00:00
omegablast2002@yahoo.com
eabbbe3f77 passing the storedcard for use by instants and sorceries with extracost in thier manacost, also fixed a parsing oversight with stored values parsing, "-" would throw off the value of s string parsed for stored by 1, returning 0 for these....this is corrected now. 2012-04-05 11:24:57 +00:00
omegablast2002@yahoo.com
0b1327bf01 fixed a couple memleaks, also added human player targeting for blocking. 2012-04-02 16:48:33 +00:00
omegablast2002@yahoo.com
b705158e13 added "blockable" targetchooser, a targetchooser which shows the cards considered "blockable" by source.
corrected an error in ability$! parsing that prevents transforms to use it in newability[

added "block" keyword. and ability.
2012-04-02 13:32:50 +00:00
omegablast2002@yahoo.com
4dfacaa409 untap target as cost. 2012-04-01 17:39:41 +00:00
omegablast2002@yahoo.com
8a53df8ca5 fixed wall of reverence and refactored adynamic ability a bit. 2012-03-27 13:57:09 +00:00
omegablast2002@yahoo.com
30b379e1da fixed Issue 819, changed the parsing of and(()) to and!()!, i no longer share the storedstring of transformer, so you can ability$!transforms(( now.... 2012-03-26 13:51:44 +00:00
omegablast2002@yahoo.com
c5128b35e0 fix for sorins destroy andability, actually a fix for and(( in general..have to hide the and(( string from the parser till we need it. 2012-03-26 11:48:22 +00:00
omegablast2002@yahoo.com
2a17b9c11b added a targetchooser for dummycards source and a method for retrieving card->storedCards variables for docs card package. 2012-03-22 21:50:50 +00:00