Commit Graph

2397 Commits

Author SHA1 Message Date
omegablast2002@yahoo.com be33659081 fix for cumulative upcost, extra cost were not being multiplied
[card]
name=Phyrexian Soulgorger
auto=cumulativeupcost[{S(creature|myBattlefield)}] sacrifice
text=Cumulative upkeep - Sacrifice a creature. (At the beginning of your upkeep, put an age counter on this permanent, then sacrifice it unless you pay its upkeep cost for each age counter on it.)
mana={3}
type=Snow Artifact Creature
subtype=Construct
power=8
toughness=8
[/card]
was only charging you 1 sacrifice per upkeep.

added thisTargetComparison, this(cantargetcard(targetchooser))...its a thisdescriptor that compares if the card can be targeted by a target chooser...
2011-12-29 19:55:45 +00:00
wagic.the.homebrew 591f0e0d30 - fix for issue 772
- fixed some issues in zstream that prevented to use "getline" in zipped streams 
- added a "pooled buffers" system to keep a cache of file descriptors. This is potentially dangerous though, but shaves several seconds of loading time on the PSP. If problems arise on other platforms I'll make it a compilation parameter
- gracefully fail when calling manacost information on a not properly initialized mana cost
2011-12-28 16:14:08 +00:00
omegablast2002@yahoo.com 53b1c4a742 2 major bug fixes and 1 minor fix
first somehow accidentally line 3616 mtgability.cpp removefromgame was adding an observer instead of removing it, this explains "abilities sometimes acting strangely or not being removed"...I'm surprised it didn't create memleaks or extremely visible side-effects...
2nd fixed a bug where triggered abilities would share a menu with activated abilities of a card when ever you had enough mana floating to pay an activated ability before the trigger resolved.

adjust the way ai calculates if it should use cards like wrath of god, though it is still open to using it at a random chance, i noticed that the method we use might not be the best.
an ability with an eff of 1 for example actually has a 10% chance of being choosen....
lets say rng rolls 3402
when you % this it simply takes the 2 last numbers making this roll 2...meaning that unless we assign no "random chance to do blah" the actual chance of ai using a stupid ability is 10%...I'm leaving that logic how it is tho I "unfactored"(?) it to make it easier to track the numbers, also added a debug trace to help see how often we hit "lottery chance" ...
fixed a minor crash from multiability trying to fetch menutext when no abilities existed in the vector anymore.

this patch introduces a new subkeyword for "may " which is syntax pay(manacost)
auto=may pay({w}) untap
this is to allow the card group that was coded using the activated ability loophole i described at the start. it works the same way as it did with the loophole only it is actually something we want to happen instead of a flaw in the engine...you float the mana same as before and when the may line is triggered it will check if payment can be made with exist mana if so then it displays the menutext for the ability, if that ability is choosen it then charges you the mana directly before activation. 

this patch also include flip( ability, tho not intended originally for this version, I had previously had it finished and was polishing it right before I noticed the bugs above. since this keyword is not intended to add cards for this version, I wont go into massive details about it at this time.
2011-12-25 01:01:20 +00:00
techdragon.nguyen@gmail.com e308d9cd47 fixed compilation error for android builds as referenced in forums. http://wololo.net/forum/viewtopic.php?f=16&t=3366 2011-12-20 00:00:00 +00:00
jean.chalard d93fdb2d4a Fix the Linux build. 2011-12-18 09:40:35 +00:00
techdragon.nguyen@gmail.com 04f6366619 changing pragma mark directives to use cross platform comment "//MARK: "
#pragma mark is specific to XCode
2011-12-17 15:56:47 +00:00
techdragon.nguyen@gmail.com 4b137e0b6b added numeric support for iOS. Numbers were being ignored earlier 2011-12-15 17:51:29 +00:00
techdragon.nguyen@gmail.com a6b2a43188 fixed compile error. sorry, missed this one on last check in 2011-12-15 11:26:26 +00:00
techdragon.nguyen@gmail.com dc7d52c48c added new signature for SendCommand in JGE that takes in a command string and a parameter
added native keyboard handling in iOS
TODO: add same feature for Android tablets/phones
2011-12-15 11:11:08 +00:00
wagic.the.homebrew 2e3331a0c0 - Speed improvements to the filesystem (partial fix for issue 767)
- minor speed improvement in the shop (removed a locked texture loading that wasn't necessary)
2011-12-13 15:14:47 +00:00
wagic.the.homebrew 54a2f949b7 - Fix case sensitivity issue for some card sounds
- added null checks for "shadow" textures
2011-12-12 13:10:33 +00:00
wagic.the.homebrew c9fd53808f - fix compilation issue on psp
- attempt at reducing loading times on the PSP: I merged a few graphics files together, removed some unused calls from the initialization functions, and moved some other ones to have a more lazy approach. The PSP version remains fairly slow in some parts (especially loading, but also entering the shop, or starting a new game), so I will try to reduce file access as much as possible in the days to come. Not a release blocker IMO though, but I4d sure love if it were faster.
- uppercased "Track1.mp3" to be in line with the actual filename. Most likely this had been broken forever on case-sensitive OSes
- I removed costly calls from the textscroller. I believe it wasn't very useful in its previous state. Now it's only "advertising" for unlockable stuff, which I think is ok (and allows to refresh it every time the menu is loaded)
- As a counterpart, added a "% complete" progress bar in the menu, something I wanted to add a while ago.
2011-12-11 13:48:24 +00:00
omegablast2002@yahoo.com a3e101eb9c fix for issue 769, random modes including momir do not have meta data. 2011-12-10 12:56:36 +00:00
wagic.the.homebrew 2030d34643 Fix for issue 766 ("cancel" on opponent deck selection goes to the deckeditor) 2011-12-10 01:05:59 +00:00
techdragon.nguyen@gmail.com fe78345ef7 first draft of ad code for iOS. Not adding admob/adwhirl/adSesnse libs to this commit. You will need to download them to get the port to build under XCode 2011-12-08 20:50:36 +00:00
wagic.the.homebrew 69a0323c86 - Added cache for the count of AI decks, to reduce file access especially on victory screen. This fixes some massive lags on the PSP when winning a game
- bumped version number to 0.17
- removed some dead code in utils.h
2011-12-07 14:34:59 +00:00
Xawotihs 3514476812 - Created a GamePhase type to ease debug.
- Modified the testsuite and gameobserver to be able to replay all the testcases based on the actions logged during the first pass. This allows to test the action logging and replay used during undo. It's only activated in multithreaded mode and it does not work on Momir tests.
-  Modified choice logging and replay to use menuId instead of ability index, as, for some obscur reasons related to Lord, those ability indexes may change.
- Fixed bug in nextphase logging wrongly generating click actions
- Added a "stack" zone to the click ability logging to be able to replay properly interrupt
- Fixed a wonderful bug mixing card names with zone names in the actions execution engine
- Added a "combatok" action logging/execution
- Added a "clone" virtual method to MTGCardInstance and Token to be able to clone correctly the right object type. Used that in MTGGameZones::removeCard
2011-11-29 21:50:16 +00:00
omegablast2002@yahoo.com d01a5531d9 fix for shop crash. in the shop there is no "game" so cards in booster packs are never assigned a observer as no observer is ever created at this point. 2011-11-27 14:25:24 +00:00
wagic.the.homebrew 4c56842cf5 - Fix PSP (and other non-debug) compilation. Yann please review.
- Fix memleak I introduced recently in modrules.cpp
2011-11-27 07:53:37 +00:00
Xawotihs 29132073de - Modified DeckManager class to not use a global instance anymore when used within the game engine
- Modified DuelLayers to not use a global MTGPhaseGame instance anymore
- Moved the reset of currentActionCard out of the ActionLayer render function : that fixes the remaing problematic tests in the multithreaded testsuite
- Added a method in ActionLayer converting a card ability into a menu index
- Used this new method in the game observer to log correctly AI ability actions
- Added a DumpAssert method in the game observer, it can be used to dump the game and assert in order to easy crash reproduction
- Cleaned up TargetList properties access
- Added an optimisation in GuiMana to not compute update code if the rendering is not used (multi-threaded mode)
- Added a deadlock detection in the test AI vs AI multithreaded mode
- Fixed minor bugs in test AI vs AI multithreaded mode
- Added a games/second counter in the test AI vs AI rendering
2011-11-23 19:11:48 +00:00
wagic.the.homebrew dca6d3ad38 - Fix for issue 762 (render tinyCrops broken) 2011-11-20 13:09:52 +00:00
Xawotihs fbb92304dd Removed compilation warnings 2011-11-19 15:21:42 +00:00
wagic.the.homebrew 851e1f20f1 - some dangerous casts Player/MTGCardInstance fixed
- removed typeAsTarget function and replaced with dynamic casting
- The test suite passes, but it is possible that I busted some of AI's features :(
2011-11-19 14:07:57 +00:00
Xawotihs bdb55945df Fixed crash happening when loading resources from a .zip in a 64bits system 2011-11-16 22:44:51 +00:00
Xawotihs 8a1606a3c6 Compilation fixes for Android+boost 2011-11-16 20:49:26 +00:00
Xawotihs ee700623d5 Fixed issue 752. 2011-11-15 22:20:58 +00:00
Xawotihs f68c106e7e - Modified gameObserver and related classes to be able to work with a precise JGE instance given at construction and not the static global one. That allows to run gameObserver without JGE instance (for example in a worker thread).
- Added an "ACTION_LOGGING_TESTING" mode in the gameObserver. When this is defined, the game reloads itself in every update. I want to use that to track undo problems. Be aware that it kills performances and crashes with the testsuite if you want to activate it.
- Various cleanup/refactor of the game observer.
- Added a gameObserver == operator to compare two games
- Added player mode to the player serialization
- Added a multi-threaded mode to AI_CHANGE_TESTING. For the moment it's only useable with Qt. If you want to use it without, just defined a thread_count higher than 1.
- Refactored random generator class to use list intead of queue
- Defined a specific type for interrupt decision instead of int
2011-11-13 22:36:34 +00:00
omegablast2002@yahoo.com 2240c14f56 only draw red and blue boarders on cards parent/child relationships if the connect rule is active, there is no way it would works correctly otherwise since connect rule is what handles the clean up and adding of cards to these vectors. 2011-11-13 20:05:25 +00:00
wagic.the.homebrew d654b050df - fix for issue 756 (cycling not working for first 7 drawn cards)
- minor cleanup of MTGGameZones.cpp
2011-11-12 10:14:27 +00:00
Xawotihs 8c6a0cf9ae Fixed issue 753. 2011-11-09 22:15:26 +00:00
omegablast2002@yahoo.com d2752a5a22 converted cycling into a cost type to bring it more inline with MTGrules {cycle}, also added the cycled trigger @cycled(tc):
this cost type sends both the event for discard and the event for cycled trigger, it no longer automatically draws a card, that is part of this cost ability instead.
standard cycling is autohand={cycle}:draw:1 controller
its trigger is
auto=@cycled(*|myhand):damage:2 target(creature)
"whenever you cycle a card deal 2 damage to a target creature."
2011-11-09 14:27:56 +00:00
Xawotihs ad5edc224d Symbian^3 compilation fixes. 2011-11-07 23:32:02 +00:00
omegablast2002@yahoo.com eda32239ab switched it to observer random.... 2011-11-07 22:47:25 +00:00
omegablast2002@yahoo.com 52db4b9ac4 added random avatar fetching for game modes in which you don't fight a specific deck...
fixed a crash from random deck game modes where it was trying to check against a selected deck...but there is no selected deck in random.
(side effect of this is that i can not bypass this, the stat still need to be run through without causing choas so i set it to deckname "" and id 0...we *might* need to find a different id...though it didn't seem to effect deck 0 as the name does not match)
2011-11-07 22:16:02 +00:00
Xawotihs 1ef9489ea0 Fixed compilation on Windows and avoid crashing when the TestSuite is interrupted. 2011-11-06 19:58:23 +00:00
Xawotihs e50fdba648 - Replaced static parts by per-instance parts of of several classes when they were not threadsafe (AIMomirPlayer, SimpleMenu, Trash, AIAction, MTGCardInstance, ATutorialMessage, MTGRules). The direct consequence is that we could consumme more memory. So, tell me if you have problems with low memory devices (PSP), there are some threadsafe optimizations that could be implemented if needed.
- Reworked the testsuite to be able to work multithreaded. This is deactivated by default everywhere except in QT_CONFIG as one testcase still refuses to pass in multithreaded mode. On my 4 cores linux desktop, the 650 tests passes now in 4 seconds (1 fails).
- Replaced usage of CardSelectorSingleton by a card selector per game observer.
- Modified the resource manager to be optionnal and per game observer instance instead of being a singleton. Two reasons here : threading AND Open Gl access. I only updated the crashing parts called from the game observer, so most of the code is still using the single instance. Beware of copy-paste concerning resources ...
- Cleaned up the game observer constructors
- Fixed several problems in action logging code while testing proliferate decks
- Cleaned up Threading implementation based on QThread
2011-11-06 17:31:44 +00:00
omegablast2002@yahoo.com b0cb955c53 converted ifthenability into an activatedabilty from mtgability so that it can be targeted without the use of workarounds... 2011-11-05 23:47:43 +00:00
Xawotihs 1ce9c75b9c Fixed warning on Windows introduced in latest commit. 2011-10-30 18:33:23 +00:00
Xawotihs 2f4dd4cd2a - Added poison counter check into the testsuite
- Decorelated the testsuite AI timer from the game timer to be able to have reproduceable results with AI tests.
- Created a random generator wrapper class
- Used two seperate instances of this random generator for AI and for the game
- Added methods to load randoms into AI from a testcase
- Fixed a probleme with undo and premade decks introduced in r4035
- Added basic test to test AI proliferate code
- Cleaned up goblin_artillery test
- Added AI tests into the testsuite test list
- Fixed looping bug into the multi target AI code
2011-10-30 14:31:27 +00:00
wagic.the.homebrew 53b9bc412f Fix for issue 749 (autohand/autograveyard/etc... don't work for player2) 2011-10-30 09:35:04 +00:00
omegablast2002@yahoo.com 1806e5463d got rid of restriction "fourth turn" it was incorrect from day one (opps), previous commit changed serra's avanger to "turn:7" which is actually your 4th turn. 2011-10-29 11:27:40 +00:00
Xawotihs b0a720e8c7 Returned the code as it was. In my test, Proliferate works as before... meaning, I got it crashing several times like before my changes. I still need to rework this code to have it log correctly its actions. 2011-10-27 23:36:29 +00:00
Xawotihs 5f9e8e2588 Fixed stupid problems introduced in previous commit. Bloody GCC with Werror is simply not enough :( 2011-10-27 18:58:54 +00:00
Xawotihs c3dc51aed1 I just played 3 long games and I was able to undo two fully and got an assert on the third one after more than 1000 actions... so I commit what I have:
- Modified undo to stop at "next phase" action
- Added "muligan" and "force library shuffling" to the list of logged action
- Fixed random logging
- Fixed double logging of actions
- Merged all the "next game" functions into a single one
- Created a PlayerType type instead of using int
- Moved the player loading code into the GameObserver and out of GameStateDuel to avoid having player references in both and simplify the initialization and termination. Tweeked a bit the humanplayer class to be able to do that.
- Added a "load" menu available in testsuite mode, I use that to load problematique game. To use it, just copy-paste a game from the traces into Res/test/game/timetwister.txt. Game in traces starts by "rvalues:..." and ends by "[end]"
- Added some untested and commented out code in GuiCombat to use the mouse/touch to setup the damage on the blockers
- Broke the network game ... hoh well, I'll repair it when everything else works !!
- various code cleanup and compilation fixes on Linux
2011-10-26 22:14:12 +00:00
omegablast2002@yahoo.com 3757ae2b1a fixed a crash that would occur when you select a player deck then cancel without selecting an ai deck....this also reviles a strange bug, instead of going back to main screen it put you into deck editor. 2011-10-25 11:52:34 +00:00
wagic.the.homebrew 4c42636bd5 - Fixed issues and memory leaks related to decks unlocking
- Fixed an issue where a GameObserver could be null for some mana costs associated to a targetChooser
2011-10-22 13:38:43 +00:00
wagic.the.homebrew 91e9881903 Fix for issue 476 (Test suite debug error in VC++) 2011-10-20 13:22:54 +00:00
Xawotihs 84a074aede Added action logging during attack/block of the AI player. To do that, I wrapped some of the direct access from the player to the action layer into the game observer.
First version where I managed to finish a normal game while undoing several actions until the end. There are still some problems in direct damage spells and interruption management. I added several assert in the code to catch them.
2011-10-16 22:16:47 +00:00
techdragon.nguyen@gmail.com 8554076f3c removed dead code "shuffleTopToBottom()" method. 2011-10-15 21:10:05 +00:00
techdragon.nguyen@gmail.com 189351d82c modified signatures to allow it to pass compilation in XCode 2011-10-15 19:32:00 +00:00