Compare commits

..

5031 Commits

Author SHA1 Message Date
xawotihs 292bf7b1d2 Merge branch 'ci_upload_binaries' 2013-12-08 00:33:42 +01:00
xawotihs 4041fe690b Create a release and parse its ID using jq. 2013-12-08 00:16:52 +01:00
xawotihs cb73e2b90d Merge branch 'master' into ci_upload_binaries
Fixed Windows compilation.
2013-12-07 22:08:54 +01:00
ZobyTwo a1fa36a934 Merge pull request #578 from ZobyTwo/deck_viewer_1
Reset positions and filters when reopening the editor. These changes are trivial so I will merge them.
2013-12-07 11:53:16 -08:00
Tobias Loose bdd0e6c042 Reset positions and filters when reopening the editor 2013-12-07 20:47:50 +01:00
xawotihs ee217e94a8 Fixed carousel pull request with Visual Studio. 2013-12-07 20:29:42 +01:00
xawotihs 38e19f7d35 Removed mingw32-qt
Merged SDL and QT .pro files
Removed glu dependency in corewrapper and JGfx to enable mingw cross compilation.
2013-12-07 18:57:57 +01:00
xawotihs 0bbfd00d15 Tries to install mingw32-qt on Travis 2013-12-07 18:31:02 +01:00
Tobias Loose aaceb3c038 Remove unused declaration 2013-12-07 13:33:16 +01:00
Tobias Loose 5efa7e10bd Remove test debug output. Fix HUD fading. 2013-12-07 13:01:14 +01:00
Tobias Loose 14c164364e Cleanups and state reduction.
This mainly moves datamembers around and tries to avoid caching of
results of calculations when the calculations are cheap.
2013-12-07 12:58:20 +01:00
Tobias Loose 4514725aba Make the eased value a reference and add source code doc to Easing.h
This allows to apply multiple easings to the same variable.
2013-12-07 10:05:26 +01:00
Tobias Loose 2b0f50bb88 Remove redundancy and make control flow a bit simpler 2013-12-07 09:04:24 +01:00
xawotihs a65fc0c0f0 Merge branch 'master' into ci_upload_binaries
sudo pip installation of pyjavaproperties
2013-12-06 22:52:32 +01:00
xawotihs 99db363253 Uses pip to install pyjavaproperties 2013-12-06 22:41:09 +01:00
xawotihs c25dfec67e Fixed python module installation 2013-12-06 22:17:19 +01:00
xawotihs dd7210d187 Install pyjavaproperties in travis. 2013-12-06 21:59:29 +01:00
xawotihs 904b7a6d86 Build and upload core resource package 2013-12-06 21:21:01 +01:00
Tobias Loose 31b353c5ec Use easing within the carousel view sliding 2013-12-06 21:04:21 +01:00
Tobias Loose 0d350af1b6 Use easing within the carousel views scrolling
It is visible if you scroll more than one card
2013-12-06 20:51:18 +01:00
xawotihs 3bc9c93bab Build and upload PSP binary archive. 2013-12-06 20:40:02 +01:00
Tobias Loose 2002bb4e16 Fix crash that occured when opening the editor a second time 2013-12-06 20:13:30 +01:00
Tobias Loose 7e9c4ddbdd Fix logic error in optimization introduced in last commit 2013-12-06 19:53:38 +01:00
Tobias Loose 12b71de63c Render small cards as thumbnails 2013-12-06 19:51:42 +01:00
Tobias Loose 15011961f4 Do only prefetch cards if resource management is threaded 2013-12-06 16:43:09 +01:00
xawotihs b851103711 Commented out the release creation and refered an existing release instead. 2013-12-06 00:47:24 +01:00
xawotihs 67b8af8d15 Merge branch 'ci_upload_binaries' of https://github.com/WagicProject/wagic into ci_upload_binaries 2013-12-06 00:41:16 +01:00
xawotihs 8100e390b1 I'm starting to understand the stuff, the upload only works with a releaseId... 2013-12-06 00:10:36 +01:00
Tobias Loose 72e6876001 Remove temporary and binary files 2013-12-05 23:57:03 +01:00
Tobias Loose 96aeaffa1b Style and logic error. 2013-12-05 23:33:43 +01:00
xawotihs 74faa35b91 Removed useless local file copy before upload. 2013-12-05 23:27:40 +01:00
Tobias Loose 8bb58ca3b1 Put boilerplate code into easing base class 2013-12-05 23:27:28 +01:00
Tobias Loose 93d1a637b6 Style guide 2013-12-05 23:22:50 +01:00
xawotihs 30e86ffcd8 Update script to handle better variables. 2013-12-05 23:09:06 +01:00
Tobias Loose cbe6c0c842 Parameterize animations in grid deck view 2013-12-05 23:06:32 +01:00
Tobias Loose 77eb7f2777 Add missing header 2013-12-05 23:06:32 +01:00
Tobias Loose 077ab10c05 Rename Button to ButtonPressed 2013-12-05 23:06:32 +01:00
Tobias Loose 1194463349 Let the deck view base class handle buttons 2013-12-05 23:06:32 +01:00
Tobias Loose 8de50532f2 Put easing code into Easing.h. Add easing to sliding 2013-12-05 23:06:31 +01:00
Tobias Loose 334454655d Add Easing code to make scrolling in grid view more fluid 2013-12-05 23:06:31 +01:00
Tobias Loose d8d52e185d Add another missing include 2013-12-05 23:06:31 +01:00
Tobias Loose 9f1d225259 Add additional source files to various build systems 2013-12-05 23:06:30 +01:00
Tobias Loose 0c72bfd4c4 Make deck views toggleable 2013-12-05 23:06:30 +01:00
Tobias Loose 55e0366f19 Move griddeckview implementation into source file 2013-12-05 23:06:30 +01:00
Tobias Loose 667b95f2b8 Refactor gamestatedeckviewer and add a grid view suited...
for bigger screens.
2013-12-05 23:06:30 +01:00
Tobias Loose e90f6fe224 Whitespaces and add button to toggle griv/scrolling view 2013-12-05 23:06:30 +01:00
Tobias Loose 2289fffb8d Do not ftbfs when in release mode (-weror, -wunused-.. combination) 2013-12-05 23:06:30 +01:00
xawotihs 826403a512 Fixed upload shell script 2013-12-05 22:44:02 +01:00
xawotihs 35fec3d9a0 Made upload-binaries executable 2013-12-05 22:05:31 +01:00
xawotihs e9eb86488e Redirect ant update errors to a file and push correct upload-binaries.sh 2013-12-05 21:43:29 +01:00
xawotihs ae97abbf96 Activates an automatic pre-release and binary upload from Travis. 2013-12-05 21:21:08 +01:00
Xawotihs a8391112b0 Merge pull request #576 from ZobyTwo/directories_1
Do not specify the system directory in JGE
2013-12-04 13:07:05 -08:00
Rolzad73 4257592568 Updated output of info about Android APIs 2013-12-04 12:58:22 -05:00
Tobias Loose 657479e0e4 Do not specify the system directory in JGE 2013-12-04 11:58:36 +01:00
Dmitry Panin 9e969881fd Added output of info about Android APIs 2013-12-04 12:04:54 +04:00
Dmitry Panin 2b434a7182 Merge pull request #575 from WagicProject/android_travis_sdk_downgrade
Changed Travis build file to use Android API 10 and Android build tools 18.1.1
2013-12-04 00:02:49 -08:00
Rolz73 d2e41f98c3 Changed Travis build file to use Android API 10 and Android build tools 18.1.1 2013-12-03 02:36:11 -05:00
Xawotihs 318fc98a39 Merge pull request #574 from WagicProject/feature/play-from-grave
Feature/play from grave
2013-12-02 12:34:52 -08:00
Dmitry Panin b7a4b7f6b9 Fixing Yawgmoth's will 2013-12-02 21:26:55 +04:00
Dmitry Panin ed03fb744d Added [Yawgmoth's Will] 2013-12-02 13:42:31 +04:00
Dmitry Panin 02be213d1e Test for keyword "CanPlayFromGraveyard"
Also added card [Crucible of Worlds] as example of it.
2013-12-02 04:36:58 +04:00
Dmitry Panin 0d4db9ee54 Fixed bug in alternative cost when playing lands 2013-12-02 04:33:39 +04:00
Dmitry Panin ae927576c5 Draft of new feature: canplayfromgraveyard
this will allow playing cards from graveyard
examples: tbd
2013-12-02 04:20:04 +04:00
Dmitry Panin f08ddac77b Fixed formatting 2013-12-02 04:16:25 +04:00
Dmitry Panin 9effa7c975 Slightly changed formatting while investigating src 2013-12-01 01:01:57 +04:00
Dmitry Panin a70259b5ba Fixed: Assembly-Worker didn't appear as creature type
For artifact creatures the parent type TYPE_ARTIFACT was used
and therefore that creature's subtype wasn't added in full list.
2013-12-01 00:59:16 +04:00
xawotihs bf0a0a1580 Build the graphics version in release instead of debug. 2013-11-30 19:32:55 +01:00
xawotihs eb8b22b2d5 Merge branch 'master' of https://github.com/WagicProject/wagic 2013-11-30 12:21:43 +01:00
xawotihs 4095676b6b Fixed memory leak introduced in #555 2013-11-29 22:07:45 +01:00
xawotihs bedd1e8da8 Merge branch 'valgrind' of https://github.com/ZobyTwo/wagic into ZobyTwo-valgrind 2013-11-29 19:41:46 +01:00
xawotihs 965d4f6d45 Fixes Windows project 2013-11-29 19:31:23 +01:00
Tobias Loose 0db2925e7a Fix initialization orders 2013-11-29 18:44:30 +01:00
Tobias Loose 031f2dbffb Fix Valgrind warnings appearing during the test suit. 2013-11-29 18:21:53 +01:00
Tobias Loose dbece750f8 Use tabs instead of spaces if the file uses tabs 2013-11-29 13:51:13 +01:00
Tobias Loose 6699902c24 Add TIXML_USE_STL to android builds 2013-11-29 13:34:44 +01:00
Tobias Loose e8407caa2a Add TIXML_USE_STL compiler flag to psp makefile to make headers compatible 2013-11-29 13:34:35 +01:00
Tobias Loose 69c6745f53 Make getMenuText() return string. 2013-11-29 13:33:33 +01:00
Tobias Loose 6f083389c2 Speedup MTGAllCards::countByType a bit 2013-11-29 11:51:58 +01:00
Tobias Loose 9ee44ca091 Substitute more char arrays with strings 2013-11-29 11:51:22 +01:00
Tobias Loose 3f0dd987f0 Remove bool CardInstance::hasSubtype(const char * _subtype)
There exists bool CardInstance::hasSubtype(const string& _subtype) and the
const char* version converts _subtype into string deeper in the call
hierarchy anyway. So both methods did the same.
2013-11-29 11:43:59 +01:00
Tobias Loose 672b0be7bd Fix a few string bugs add StartsWith for strings 2013-11-29 11:38:49 +01:00
Tobias Loose 9d5a83d588 Replace more strcmp with std::string::compare or std::string::operator==.
This commit also enables TinyXML STL support.
2013-11-28 16:42:29 +01:00
Tobias Loose 5d0d130587 Make MTGGameZone::countByType use string instead of char*
and replace strcmp with std::string operator== calls.
2013-11-28 16:42:29 +01:00
Tobias Loose c85d857604 Replace constness cast 2013-11-28 16:42:29 +01:00
Tobias Loose f68568cc1e Replace strcmp with c++ equivalent when comparing std::strings. 2013-11-28 16:42:29 +01:00
Dmitry Panin 89206b3a6b Added testing that QT GUI build is successfull 2013-11-28 16:44:12 +04:00
xawotihs dc118c64b8 Fixed compilation on Mac 2013-11-27 23:04:46 +01:00
xawotihs a43854420d Fixed compilation issue on Windows 2013-11-27 20:33:59 +01:00
xawotihs a695323bc7 Merge pull request #564 from ZobyTwo/cleanup_1
Add a few namespaces and fix header guards.
2013-11-25 15:42:18 -08:00
xawotihs 02a65ecd82 Merge branch 'cleanup_1' of https://github.com/ZobyTwo/wagic into ZobyTwo-cleanup_1 2013-11-26 00:17:48 +01:00
xawotihs 9ff087ecde Merge pull request #570 from WagicProject/android-travis-ci
Android travis ci
2013-11-25 14:31:15 -08:00
xawotihs 47685f4892 Added installation of 32 bits libs to make Android SDK work. 2013-11-25 22:42:09 +01:00
xawotihs 7aaebdc661 Merge branch 'android_build_fix' into android-travis-ci 2013-11-25 21:23:58 +01:00
Rolzad73 8aa0b8cea0 reverting sdk.buildtools change 2013-11-25 13:41:07 -05:00
Rolzad73 fac44c4b48 - updated AndroidManifest.xml to match desired API values.
- removed CardEffect.cpp reference from Android.mk build file.
- added sdk.buildtools=18.1.1 line to default.properties and project.properties
- updated .gitignore
2013-11-25 11:54:19 -05:00
Dmitry Panin 9889186eab Added missing "echo" statement 2013-11-25 13:41:29 +04:00
xawotihs 73f9319b92 Activates Android build from Travis 2013-11-25 05:27:31 +01:00
xawotihs fd6bc95539 Merge pull request #562 from citiral/master
Updated deckmenu.cpp to properly render deck description and summary
2013-11-24 10:28:05 -08:00
Tobias Loose 0bb211a581 Remove unused global variables from DeckStats.cpp and add proper...
member variable initialization.
2013-11-24 09:18:34 +01:00
Tobias Loose e0428ac7b0 Avoid more conflicts. We could now do unit builds...
and make the linker put every data element and function into its own section.
On linktime, we can output every discarded section and get a list of dead
code (for that build).
2013-11-23 17:04:24 +01:00
Tobias Loose 3e94de985f Add more include guards 2013-11-23 16:25:14 +01:00
Tobias Loose 9f0b70d1c9 Put constans into extra namespace as kBackToMainMenuID...
collides with itself. GameStateAwards::kBackToMainMenuID and
GameStateOptions::kBackToMainMenuID define those with different
values.
2013-11-23 16:18:45 +01:00
Tobias Loose 1e8fc81aa3 Add/fix broken include guards 2013-11-23 16:09:11 +01:00
Tobias Loose 352e3c2daa Remove makros and add undefs to avoid clashing names
FRAND and Clamp were not used and Clamp collided when doing unit builds.
SQUARE(x) is longer than x*x and if x is an expression it gets evaluated
twice.
2013-11-23 16:03:04 +01:00
Dmitry Panin 678a4734bb Merge pull request #560 from ZobyTwo/dead_code
Remove some dead code
2013-11-22 00:09:40 -08:00
Dmitry Panin 052e3abdb8 Small fix in match_and ( [-color1; -color2] was handled incorrectly ) 2013-11-22 01:03:07 +04:00
citiral 73c2d17080 Updated deckmenu.cpp to properly render deck description and summary
Deck description and statistics were being drawn as black text, this made it invisible as it was rendered over a black background. I made it change the color to white before drawing, so its shown as its suposed to be.(Did the default text color change?)
2013-11-21 20:38:41 +01:00
Dmitry Panin ffbb228d2d Fixed wrong activation cost in dragon hatchling 2013-11-21 14:25:01 +04:00
Dmitry Panin 306765c6b6 Merge pull request #561 from ZobyTwo/valgrind
Fix some valgrind memcheck warnings. However there remains one...

... within the threaded texture cache. Once it is resized, some textures
in GetQuad(...) (WCachedResource.cpp:102/103) have uninitialized widths/heights.
2013-11-21 01:58:49 -08:00
Tobias Loose 3cee80e3bc Delete another unused file (GuiMessageBox.cpp) 2013-11-20 14:01:59 +01:00
Tobias Loose 8209716fc9 Remove unused file 2013-11-20 13:53:15 +01:00
Tobias Loose e76c57d747 Fix some valgrind memcheck warnings. However there remains one...
... within the threaded texture cache. Once it is resized, some textures
in GetQuad(...) (WCachedResource.cpp:102/103) have uninitialized widths/heights.
2013-11-20 12:56:33 +01:00
Tobias Loose 9c282aeb56 Remove CardEffect.o from Makefile 2013-11-20 12:02:33 +01:00
Tobias Loose bbc310dec7 Remove some dead code 2013-11-20 11:43:27 +01:00
Dmitry Panin a37af1776a Merge pull request #557 from ZobyTwo/defines
Defines/Typos
2013-11-20 02:34:32 -08:00
Tobias Loose 35697a65b4 Use style guide 2013-11-20 11:13:35 +01:00
Tobias Loose 6bed1666be Merge branch 'master' into defines 2013-11-20 11:06:41 +01:00
Tobias Loose f021866368 Merge remote-tracking branch 'wp/master' 2013-11-20 11:06:28 +01:00
xawotihs d7e527166c Merge branch 'show-output-only-for-failing-tests' 2013-11-19 11:14:41 +01:00
Dmitry Panin 071a487100 Fixed compilation error 2013-11-19 11:06:31 +04:00
Dmitry Panin f370899a8a Thread-safe version of OutputCapturer 2013-11-19 03:58:43 +04:00
Dmitry Panin 331e126787 Added info about total number of tests 2013-11-19 02:57:42 +04:00
Dmitry Panin 6c41e5c92c Added option (#define CAPTURE_STDERR)
if set then the DebugTrace calls only for failing tests are shown
2013-11-19 02:41:30 +04:00
Tobias Loose 82e3ab3977 Merge branch 'cleanup' into defines
Merge cleanup codings style commit as i accidentally used that branch as
the base.
2013-11-17 21:06:56 +01:00
Tobias Loose f2314ca673 Use proposed coding style 2013-11-17 21:05:07 +01:00
Tobias Loose 94c3ac9ad9 Fix FTBFS 2013-11-17 21:02:08 +01:00
Tobias Loose 5419d87e4e Get rid of two more define groups. 2013-11-17 20:22:03 +01:00
Tobias Loose e1213d1c1f Remove variables flagged for removal (via conditional TODO comment)
x and y is provided by PlayGuiObject::Pos.
2013-11-17 19:50:17 +01:00
Tobias Loose 446ed20758 Fix typo ActionLayer::receiveEventPlus(...)
This method is rarely used, however it returned 0 after adding stuff.
It now returns the sum.
2013-11-17 19:39:46 +01:00
Tobias Loose 7a48c5e087 Fix some cppcheck warnings (mostly style and postfix vs prefix iteration) 2013-11-17 19:36:24 +01:00
Tobias Loose 3ca2f1c1ed Replace defines in Damage.h with enums. 2013-11-17 17:12:58 +01:00
Tobias Loose 146872797b ActionElement.h: Replace defines, remove superfluous ";"
Defines do not follow scope rules, but enums do. Enum classes
even utilize strong type checking (but i am not sure about compiler
support for c++11 on all target platforms).
2013-11-17 16:08:29 +01:00
Tobias Loose c6dc51c7d3 Simplify Damage::resolve a bit 2013-11-17 15:37:56 +01:00
Dmitry Panin 0ef92d154a Merge pull request #555 from WagicProject/fix-cranial-plating
Fix cranial plating
2013-11-16 13:58:56 -08:00
Dmitry Panin 2835bdf767 Fixed issue with Cranial Plating.
Issue
	attach then equip: plating will give bonus to both creatures
Fix
	Changed "attach" to "retarget target(creature|mybattlefield)"
	as this doesnot admit this bug
	Attach should become deprecated in future
2013-11-17 01:49:51 +04:00
Dmitry Panin afc903e31b Added different names for attach and equip
+ moved implementation of AEquip to .cpp
2013-11-17 00:44:37 +04:00
Dmitry Panin 6294bb1eed Added Master of Waves 2013-11-16 23:54:37 +04:00
xawotihs 9f16b2208d Removes the error, it was perfectly detected by Travis CI. 2013-11-09 20:15:00 +01:00
xawotihs 0a765b702b Introducing an error to check if Travis reports correctly a compile
error with the script.
2013-11-09 20:01:57 +01:00
xawotihs 82de6f2840 Fixes stupid typo. 2013-11-09 19:51:47 +01:00
xawotihs 90652fa73d Fixed PSP build and integrates it with Travis CI 2013-11-09 19:40:01 +01:00
Rolzad73 e8c73aaf9d Merge pull request #1 from WagicProject/android_cleanup
Android cleanup
2013-11-07 13:15:41 -08:00
Rolzad73 f95094a429 removing commented lines I had intended to delete outright 2013-11-07 15:56:43 -05:00
Rolzad73 7a57de6608 removed ads on Android version 2013-11-07 15:49:53 -05:00
Rolzad73 14c2d522c2 removed Android gen dir 2013-11-07 15:04:37 -05:00
Dmitry Panin 6bf2147d94 From the Vault: Twenty
// imported accidental commit from svn repo
2013-11-06 12:56:54 +04:00
xawotihs fea5b04a77 Fixed compilation on Windows. 2013-10-31 23:48:19 +01:00
xawotihs ea98b769a7 Merge branch 'develop'
Activates full testsuite run in Travis CI. Travis will complain as soon as at least one testcase does not pass successfully after a new commit.
2013-10-30 23:10:03 +01:00
xawotihs 017f6dd1ed Deactivated part of the traces outputted by the testsuite to make Travis
happy.
2013-10-30 22:58:04 +01:00
xawotihs 784d127a6e I think I got it ... messy / not appearing at the end of folders in the
travis linux where it appears fine on mine :(
2013-10-30 22:28:09 +01:00
xawotihs f6c47b85e3 More debug 2013-10-30 22:02:43 +01:00
xawotihs dac31994b6 Adding traces for important directories. 2013-10-30 21:44:23 +01:00
xawotihs 74280aef1d Added some traces in the primitives and sets loading. 2013-10-30 20:50:34 +01:00
xawotihs 8013d09e4f Reactivated wagic console in travis CI 2013-10-30 20:30:33 +01:00
Dmitry Panin 6bbe290762 Fixed bug with syncopate to consume all the mana available
Now pay[[{x}]] is not supported because of this.
use "pay[[{value:storedx}]]" instead
2013-10-30 12:39:08 +04:00
xawotihs 57c9940244 Deactivated testsuite from travis, resources are not loaded correctly. 2013-10-30 00:38:34 +01:00
xawotihs db1c552321 Tries to work around crash of the testsuite in Travis. 2013-10-30 00:20:58 +01:00
xawotihs f08f0ad3b9 Merge branch 'master' of https://github.com/WagicProject/wagic
Conflicts:
	JGE/include/JTypes.h
2013-10-29 23:36:07 +01:00
xawotihs a3a1bc2b79 Created a dedicate console Qt based wagic application and run it in the
travis file.
2013-10-29 22:38:37 +01:00
Dmitry Panin 9037699281 Added missing test for syncopate + 2 tests for spell_rupture 2013-10-29 19:49:31 +04:00
Michael Nguyen 8d66f82179 Merge branch 'release/wagic-v0.19.2' 2013-10-28 16:19:28 -07:00
Michael Nguyen eeb4a4e755 updated version number to 0.19.2, changed min target to API 10 vs API 9 as recommended by Android 2013-10-28 16:19:01 -07:00
Michael Nguyen 38725aaeac Merge commit '82171773fe89cd582e62a52fdadb152040fc0fd5' into develop 2013-10-28 15:37:35 -07:00
Michael Nguyen ed474d6b5d Merge commit '224c94e89089317fac33aacb9319ab250301c98e' into develop 2013-10-28 15:37:24 -07:00
Michael Nguyen b17d9d3f85 Merge branch 'master' of github.com:WagicProject/wagic 2013-10-28 15:35:45 -07:00
Michael Nguyen c5190a62cd Merge branch 'develop' 2013-10-28 15:35:18 -07:00
Michael Nguyen 89472eeccd tidied up gitignore file for XCode 2013-10-28 15:29:51 -07:00
Michael Nguyen 2b4404f352 Merge branch 'feature/update-for-iOS6' into develop 2013-10-28 15:21:33 -07:00
Michael Nguyen 84ca7457b5 updaed for iOS6 2013-10-28 15:20:35 -07:00
Michael Nguyen 4eb1fd35e0 changed the default location for the sdcard. Instead of using a fixed value of "/sdcard/Wagic/Res" it now uses Environment.getExternalStorageDirectory().getPath() + "/Wagic/Res" 2013-10-28 15:20:11 -07:00
Michael Nguyen 362cc1b4c2 updated project to rotate and display correctly in iOS6+
removed all references to adwhirl for iOS.
2013-10-28 15:14:17 -07:00
xawotihs 82171773fe revert travis config file while the X dependency is not sorted. 2013-10-28 00:07:55 +01:00
Unknown 224c94e890 Included some testsuite into qtmain and updated travis file to try to use it. 2013-10-27 23:06:29 +01:00
Dmitry Panin 7a7bc70773 Update README.md 2013-10-27 13:36:23 +03:00
Dmitry Panin 1401fef37e Simple support for CI at travis
- now compilataion on Linux (using qmake and make) is checked
2013-10-27 14:30:34 +04:00
Dmitry Panin cf50b7d403 Fizzle unless pay x (thanks to excessum)
- saves source card in storedSourceCard for ATransform
- adds support for WParsedInt in pay as "pay[[{value:WParsedInt}]]":

name=Spell Rupture
target=*|stack
auto=if cantargetcard(*|opponentstack) then transforms((,newability[pay[[{value:power:highest:creature:opponentbattlefield}]] name(pay {value} mana) donothing?fizzle])) forever
text=Counter target spell unless its controller pays {X}, where X is the greatest power among creatures you control.
mana={1}{U}
type=Instant

- adds support for {x} in *some* “pay” abilities (Syncopate):

name=Syncopate
target=*|stack
auto=transforms((,newability[pay[[{x}]] name(pay {value} mana) donothing?fizzleto(exile)])) forever
text=Counter target spell unless its controller pays {X}. If that spell is countered this way, exile it instead of putting it into  its owner's graveyard.
mana={X}{U}
type=Instant

- support of "name(pay {value} mana)" in pay abilities to show actual number to pay (see example above)
2013-10-27 13:47:00 +04:00
Dmitry Panin b8b6153cc5 Reworked AVanishing (fixed bugs + more fair implementation) 2013-10-27 13:42:48 +04:00
Dmitry Panin 461eedd626 Fixed bug with preventing Melira from putting +1/+1 counters on creatures you control 2013-10-27 13:42:48 +04:00
xawotihs f0977ebc04 Update README.md 2013-10-26 12:12:58 +02:00
xawotihs e38f42d854 Create README.md 2013-10-26 11:50:40 +02:00
xawotihs 4ac376b5f2 Ignored non-source extensions 2013-10-24 21:53:46 +02:00
Xawotihs@gmail.com 1f0485ff8e Support for running the testsuite in command line programs for continuous integration.
Here is a small example inspired from SDLmain.c:

g_launcher = new JGameLauncher();
InitGame();
MTGCollection()->loadFolder("sets/primitives/");
MTGCollection()->loadFolder("sets/", "_cards.dat");
options.reloadProfile();
TestSuite testSuite("test/_tests.txt");
int result = testSuite.run();
DestroyGame();
delete g_launcher;
return result;
2013-10-23 22:08:30 +00:00
Xawotihs@gmail.com 98861dd916 Fixed memory leaks and refactored a bit the ManaCost class while I was at it. 2013-10-19 14:29:17 +00:00
pankdm b5794ad328 Small fixes (misstype, formatting, target p2) 2013-10-18 06:38:15 +00:00
pankdm 38b4213f9c Refactored formatting for easier reading of the code 2013-10-18 06:38:03 +00:00
pankdm f1a9f0d162 Fixed Grave Pact, butcher of malikir and some other cards
"Whenever creature you control dies" --
it's @movedTo(creature|  graveyard) from(mybattlefield)
NOT  @movedTo(creature|mygraveyard) from(  battlefield)
2013-10-18 06:37:53 +00:00
pankdm e62feddaf4 Added Probe 2013-10-18 06:37:43 +00:00
pankdm 5c3eb2c405 Changed the owner of ManaCost in LifeorManaCost to itself 2013-10-18 06:37:31 +00:00
pankdm f7eded7417 Devotion mechanics (thanks to excessum for patch)
+ some refactoring:
extrManaCost --> ExtraManaCost
unattachCost --> UnattachCost
2013-10-18 06:37:09 +00:00
pankdm d5b089f86b Small fixes to _cards.dat 2013-10-18 06:36:56 +00:00
pankdm 1d3c4bcd69 Added _cards.dat file for Theros 2013-10-18 06:36:46 +00:00
pankdm 9d2a2454b2 Fixed: exile was not meaning both exiles
and revised Crypt Incursion
2013-10-18 06:35:52 +00:00
pankdm 173f787fac Revise cards that deals damage and gain life
This cards created multiple instances of life gain and damage,
which caused wrong behaviour with for example Ajani's Pridemate
2013-10-18 06:35:02 +00:00
pankdm 0ac6057ee9 Fixed Balduvan conjurer (added land restriction) 2013-10-18 06:34:51 +00:00
pankdm 8b16074647 Fixed memory leak in menuability (thanks to excessum) 2013-10-18 06:34:42 +00:00
pankdm 62dad30f6b Revised Bloodigift demon (now it targets players) 2013-10-18 06:34:32 +00:00
pankdm 43ba9aa13d Fixed parsing of "if(ifnot) ... then may ... " 2013-10-18 06:34:23 +00:00
pankdm ea217fdba1 Fixed [card] 2013-10-18 06:34:14 +00:00
pankdm eea88cdeb5 Tests for new "fizzleto" keyword 2013-10-08 23:18:56 +00:00
pankdm 0c6d77daa0 Refactored FizzleToZone
Get rid of common code
Better naming of zone (where we put spell after countering)
More generic syntax: fizzleto(X) where X in [hand, exile, librarytop]
which will give more flexibility later
2013-10-08 23:18:42 +00:00
pankdm 4341e23210 Added Increasing Ambitions 2013-10-08 23:18:32 +00:00
pankdm 80be19db86 Added missing type=Artifact Creature to Trisk token 2013-10-08 23:18:19 +00:00
pankdm 1da9f5a4af Fixed time sieve 2013-10-08 23:18:08 +00:00
pankdm fa5aedfe64 Fixed Triskelavus
(tokens didn't have ping ability after death of Trisk)
2013-10-08 23:17:57 +00:00
pankdm 17fdedb648 Draft of the "fizzle to zone"
(credit goes to excessum)
2013-10-08 23:17:43 +00:00
pankdm da7c336dc2 Removed debug code that was added by mistake 2013-10-01 14:49:31 +00:00
pankdm be76c8a4f1 Fixed issue with cantbeblockerof and cantbeblockedby vs protection 2013-10-01 14:47:39 +00:00
Xawotihs@gmail.com 490752e9da - Removed dependencies on Boost/string in mtg sources
- Removes dependencies on Boost/shared_ptr in mtg sources only for WP8 for the moment
- Various compilation fixes on WP8
2013-09-30 21:25:17 +00:00
pankdm 7894ca3ace Refactored ABlink: extracted common code as method "returnCardIntoPlay" 2013-09-27 19:25:28 +00:00
pankdm d4268f18af Fixed Mortus Strider 2013-09-27 18:54:01 +00:00
pankdm 3761684816 Fixed blinking (until EOT) of creature with X in cost 2013-09-26 14:17:39 +00:00
pankdm f10eb609d7 Added:
Belltower Sphinx
	Spellstutter Sprite

Thanks to Tacoghandi and dber for providing the code
2013-09-24 16:44:19 +00:00
pankdm 00ebc8c8eb Fixed issue with blinking creature that has X in cost 2013-09-23 20:27:52 +00:00
pankdm 36cfe84445 Revised Door of Destinies 2013-09-23 20:02:26 +00:00
pankdm 54d1126c58 Small fix in TestSuite
"Update" should pass "dt" since the last update, not since the beginning the game.
2013-09-23 19:44:03 +00:00
pankdm 11f541a627 Fixed:
Edge of autumn
	Mirrorworks

	Clone of the card now have the same image as original
	Issue with cloning and trigger "nontoken * enters"

	Blitzkrig rules
	Hermit druid rules
2013-09-23 19:40:12 +00:00
pankdm 93ebca3041 Forgot to remove Wildfire from unsupported 2013-09-20 16:39:23 +00:00
pankdm ce7689c8c6 Added:
Wildfire

Fixed:
	Stitch in Time -- missing flipend at end
	Raging Ravine -- can't have trigger inside second transofrm
	Prey Upon -- can be cast only on opponents creature
	Mesmeric Fiend -- target(player) --> target(opponent)
	Caribou Range -- ability should be on ench
2013-09-20 16:18:56 +00:00
pankdm de8309a7c2 Small fixes for:
Gravecrawler
Riot Control
Teysa, Envoy of Ghosts
Vengevine
Izzet Staticaster
Batwing Brume
2013-09-19 16:02:34 +00:00
pankdm ec11bf917d Fixed slight bugs with formatting in primitives files
This appeared in several places (usually unsupported and mtg):
Churning Eddy
Izzet Staticaster
Kjeldoran Pride
Storage Matrix 
Torch Song

This had multiline values under "text=" or "auto=":
Debt to the Deathless
Smelt-Ward Gatekeepers
Sunspire Gatekeepers
Teysa, Envoy of Ghosts
Ubul Sar Gatekeepers
2013-09-18 07:00:29 +00:00
pankdm 8626451977 Fixed uninitialized value
Due to this, activated abilities with {X} in cost sometimes were having X=0 when playing
(This appeared only in Debug mode)
2013-09-16 20:18:36 +00:00
pankdm 4aa5dec51a Fixed some warnings
+ added compile flags to mute some warnings that don't have an obvious fix
2013-09-16 17:42:07 +00:00
pankdm 3c3fcfc655 Fixed typo in Rising Waters 2013-09-15 18:51:42 +00:00
wagic.the.homebrew@gmail.com bd25b12fb2 Fix for issue 962 (Hexproof) by Dmitri 2013-09-15 02:57:29 +00:00
wagic.the.homebrew@gmail.com 7b8189bd13 Fixing tests that got broken in r4842 2013-09-15 02:47:09 +00:00
omegablast2002@yahoo.com a2d020b2ae updated 2013-07-07 18:56:20 +00:00
omegablast2002@yahoo.com 20eda1560b psp fix 2013-06-19 21:57:08 +00:00
omegablast2002@yahoo.com 7917a70b1b forgot to reset the opponents miracle on beforebegins. i knew i had coded the miracle to be player independent :P 2013-06-19 13:33:24 +00:00
omegablast2002@yahoo.com 2fa3f468b4 added menutext overriding to transforms.
castcard-> is now the copied spell x.
2013-06-19 11:46:09 +00:00
omegablast2002@yahoo.com 1851f3c7a6 added Blitzkrieg gamemode created by tacoghandi. for those that like playing at top speed :) 2013-06-19 02:03:34 +00:00
anthonycalosa@gmail.com 45711bb504 Added 204 New Cards as of R4840 changes:
Aeon Chronicler
AEther Barrier
All Hallow's Eve
Azorius AEthermage
Banishing Stroke
Basilica Guards
Basilica Screecher
Batwing Brume
Benalish Commander
Blessings of Nature
Blind Obedience
Bog-Strider Ash
Callow Jushi
Jaraku the Interloper
Carrion Thrash
Chain of Acid
Chain of Smog
Chalice of the Void
Chandra Ablaze
Cloven Casting
Controvert
Convolute
Cradle of Vitality
Crypt Ghast
Crystal Shard
Cursecatcher
Customs Depot
Cut the Tethers
Darigaaz, the Igniter
Dawnglow Infusion
Daze
Death Charmer
Decaying Soil
Decree of Silence
Detritivore
Devastation Tide
Diluvian Primordial
Disrupt
Disruptive Pitmage
Disruptive Student
Dovescape
Drainpipe Vermin
Drowner Initiate
Dual Casting
Echo Mage
Elephant Grass
Embersmith
Equilibrium
Erayo, Soratami Ascendant
Erayo's Essence
Erratic Portal
Firespout
Flay
Flight Spellbomb
Force Spike
Force Void
Fork
Freyalise's Charm
Furnace Celebration
Ghost-Lit Warder
Ghostly Prison
Goblin Vandal
Grim Harvest
Grizzled Wolverine
Hasran Ogress
Hematite Talisman
Hesitation
Horizon Spellbomb
Icefall
In the Eye of Chaos
Inheritance
Insidious Bookworms
Intimidator Initiate
Invert the Skies
Isolation Cell
Izzet Guildmage
Jeweled Torque
Judge's Familiar
Kalastria Highborn
Kazuul, Tyrant of the Cliffs
Kingpin's Pet
Knight of Obligation
Knowledge Exploitation
Krovikan Rot
Lapis Lazuli Talisman
Leshrac's Sigil
Leyline of Lightning
Lifesmith
Lightning Axe
Lightning Cloud
Lightning Rift
Lunar Mystic
Maelstrom Archangel
Magnetic Mountain
Malachite Talisman
Mana Leak
Mana Tithe
Masked Admirers
Megatherium
Memory Plunder
Merfolk Seer
Militia's Pride
Mind's Eye
Mindclaw Shaman
Mindleech Mass
Mindstatic
Minion Reflector
Mirari
Mirrorworks
Miscalculation
Mischievous Quanar
Moonhold
Mudslide
Myrsmith
Mystic Remora
Nacre Talisman
Nether Traitor
Nether Void
Nivix Guildmage
Nihil Spellbomb
Nurturer Initiate
Off Balance
Offering to Asha
Onyx Talisman
Origin Spellbomb
Panic Spellbomb
Patron Wizard
Pedantic Learning
Phyrexian Tyranny
Plague Fiend
Pontiff of Blight
Propaganda
Punishing Fire
Purraj of Urborg
Pyrewild Shaman
Reborn Hero
Reforge the Soul
Reiterate
Resize
Revenge of the Hunted
Reverberate
Rhystic Deluge
Rhystic Shield
Rhystic Study
Riftmarked Knight
Riku of Two Reflections
Rishadan Brigand
Rishadan Cutpurse
Rishadan Footpad
Rootwater Thief
Runeboggle
Sage's Dousing
Searing Meditation
Second Guess
Seer's Sundial
Sigil of the New Dawn
Sigil Tracer
Silent-Blade Oni
Sludge Strider
Smolder Initiate
Soratami Savant
Soul Charmer
Soul Net
Spawnsire of Ulamog
Spell Contortion
Spell Pierce
Spell Snip
Spelltithe Enforcer
Sphinx of Lost Truths
Spiketail Drake
Spiketail Drakeling
Spiketail Hatchling
Spirit Cairn
Sudden Spoiling
Sunforger
Sunken Field
Sun's Bounty
Surgespanner
Syndic of Tithes
Syndicate Enforcer
Tablet of Epityr
Tears of Rage
Telekinetic Bonds
Temporal Mastery
Terminus
Thelon's Curse
Thrull Wizard
Thunderblade Charge
Thunderous Wrath
Torrent of Souls
Toshiro Umezawa
Treasury Thrull
Twincast
Undergrowth
Unnerving Assault
Urza's Chalice
Uyo, Silent Prophet
Vanishment
Vectis Dominator
Veiling Oddity
Vigorous Charge
Vodalian Mage
Voidmage Apprentice
Windborn Muse
Wizard Replica
Wrexial, the Risen Deep

96 Revised/Fixed Cards as of R4840 changes:
Apothecary Initiate
Artisan of Kozilek
Auspicious Ancestor
Azorius Herald
Blood Crypt
Boros Fury-Shield
Breeding Pool
Chaotic Backlash
Choking Tethers
Countersquall
Crackleburr
Crosis, the Purger
Crypt Champion
Crystal Rod
Death Pulse
Deathforge Shaman
Dirge of Dread
Disciple of the Vault
Divine Congregation
Dromar, the Banisher
Dryad's Caress
Esper Sojourners
Eye of Ugin
Flash Conscription
Frenzied Goblin
Gempalm Incinerator
Gempalm Polluter
Godless Shrine
Grixis Sojourners
Gruul Scrapper
Haazda Snare Squad
Hallowed Fountain
Hellkite Charger
Honden of Night's Reach
Iron Star
Ivory Cup
Jovial Evil
Jugan, the Rising Star
Jund Sojourners
Knight of the Mists
Krosan Tusker
Legion's Initiative
Llanowar Sentinel
Lorthos, the Tidemaker
Mind Knives
Mindstab
Naya Sojourners
Nemesis Trap
Numot, the Devastator
Obzedat, Ghost Council
Offalsnout
Ogre Savant
Order of the Golden Cricket
Oros, the Avenger
Overgrown Tomb
Patagia Viper
Plaxmanta
Price of Progress
Primal Boost
Psionic Sliver
Renewed Faith
Ribbons of Night
Rith, the Awakener
Rolling Spoil
Rubblebelt Maaka
Rupture Spire
Samurai of the Pale Curtain
Seance
Seed Spark
Shrieking Grotesque
Slice and Dice
Solar Blast
Splinter Twin
Steam Vents
Steamcore Weird
Stomping Ground
Stone Catapult
Sunfire Balm
Temple Garden
Tendrils of Agony
Teneb, the Harvester
The Fallen
The Hive
Throne of Bone
Tin Street Hooligan
Trade Caravan
Transguild Promenade
Treva, the Renewer
Viashino Firstblade
Vigor Mortis
Vorosh, the Hunter
Watery Grave
Wellspring
Wing Shards
Wing Storm
Wooden Sphere
2013-06-18 02:17:52 +00:00
omegablast2002@yahoo.com f1d88611cb updated test to adjust for new legendary rules 2013-06-18 01:42:49 +00:00
omegablast2002@yahoo.com b61cd2f69a megapatch contents
added
"whenever a creature enters the battlefield you may pay {1}, if you do gain one life"
conditional may pay({cost}) effect 
this version is a super type ability, and can only be used in certain combos.

to nest you will need to use it in its subtype pay[[{cost}]] effect
pay keyword can have sideeffects coded as follows
pay[[{1}]] life:1?life:-1
pay one mana and gain 1 life, if you dont then you lose one life. notice no space between the abilities and the question mark.

added castcard()
a method to cast a targeted card, this contains the following subkeywords which can be used in combinations
(normal)
(restricted)
(copied)
(noevent)
castcard(restricted copied noevent) for example will cast a card that is a copy or the spell without sending a cast event only when the spell is castable.
"normal" subkeyword cast the actual spell, not a copy.

extended the use of exiledeath to everyzone, any card going from any zone to graveyard is placed in exile if it has exiledeath.

limited swipe left to open hand only when hand is closed view.

"moveto(" can now be named.
2013-06-18 01:41:34 +00:00
anthonycalosa@gmail.com ece78395f4 Update SOK for Erayo, Soratami Ascendant 2013-06-13 13:37:25 +00:00
anthonycalosa@gmail.com 95bbe06c7e added swipe on Story Mode. So if playing a duel on story mode, you can cancel with swipe down. 2013-06-13 04:34:20 +00:00
anthonycalosa@gmail.com b3f81e95bb Update WWK for Kazuul, Tyrant of the Cliffs 2013-06-13 04:28:14 +00:00
anthonycalosa@gmail.com 3c63b152a6 Update PLC for Riftmarked Knight token 2013-06-11 06:42:55 +00:00
Xawotihs@gmail.com 26ab65860e Fixed a gazillion of warnings occuring when compiling Wagic with Clang with Werror. 2013-06-09 21:16:39 +00:00
rolzad73@gmail.com 7990540096 fixed music resource adding from resource zip to nested folder on Android platorm. Fixed issue 776 2013-06-03 02:15:12 +00:00
punkeduard@gmail.com 1442b73029 Fixed some cards from DGM and Crackleburr 2013-06-03 01:17:56 +00:00
anthonycalosa@gmail.com fee9ee756c typo fix Obzedat's Aid 2013-06-02 13:24:30 +00:00
rolzad73@gmail.com a400cabfc7 - code foramtting only mostly of whitespace for readability of a few Android files 2013-06-01 16:02:10 +00:00
anthonycalosa@gmail.com 8a7d5f4490 added Auriok Replica, Austere Command 2013-05-22 02:14:11 +00:00
anthonycalosa@gmail.com b0a1e670ba fix Overload. 2013-05-20 16:54:14 +00:00
anthonycalosa@gmail.com b5906a4299 revised Martyr of Sands 2013-05-20 14:01:46 +00:00
anthonycalosa@gmail.com b7324280aa added Prowl cards.
Auntie's Snitch
Earwig Squad
Latchkey Faerie
Morsel Theft
Notorius Throng
Stinkdrinker Bandit


Revised cards:

Denying Wind
Extract
Jester's Cap
Sadistic Sacrament
Supreme Inquisitor
2013-05-20 07:19:18 +00:00
anthonycalosa@gmail.com f0de00086b added Prowl support.
example usage:
other={1}{B} name(Prowl)
otherrestriction=prowl
2013-05-20 02:59:18 +00:00
omegablast2002@yahoo.com a055044281 added miracle ability.
i choose to use other cost instead of creating a brand new cost type.

otherrestriction determines if the card is the miracle for the turn.

[card]
name=Devastation Tide
auto=all(*[-land]) moveto(ownerhand)
other={1}{u} name(Miracle)
otherrestriction=miracle
text=Return all nonland permanents to their owners' hands. -- Miracle {1}{U} (You may cast this card for its miracle cost when you draw it if it's the first card you drew this turn.)
mana={3}{U}{U}
type=Sorcery
[/card]
2013-05-19 01:48:51 +00:00
anthonycalosa@gmail.com 4b167c3776 added Abyssal Gatekeeper, Akki Blizzard-Herder, Archmage Ascension, Runeflare Trap 2013-05-18 16:30:14 +00:00
anthonycalosa@gmail.com cf74c3480e added drawCounter. Returns the number of cards drawn this turn (excludes pre-game draw).
pdrewcount - player draw count
odrewcount - opponent draw count
2013-05-18 15:31:12 +00:00
anthonycalosa@gmail.com ba5debad05 added AEther Burst. revised code for An-Havva Inn, Kindle, Mind Burst, Vitalizing Cascade, Wall of Tombstones 2013-05-17 03:30:40 +00:00
anthonycalosa@gmail.com 4f915b38c8 added basic support for "X plus one", "X plus two" & "X plus three".
example:

[card]
name=AEther Burst
target=<plusonetype:AEther Burst:graveyard>creature|battlefield
auto=moveto(ownerhand)
text=Return up to X target creatures to their owners' hands, where X is one plus the number of cards named AEther Burst in all graveyards as you cast AEther Burst.
mana={1}{U}
type=Instant
[/card] 

[card]
name=Vitalizing Cascade
auto=life:Xplusthree
text=You gain X plus 3 life.
mana={X}{G}{W}
type=Instant
[/card]
2013-05-17 02:09:48 +00:00
anthonycalosa@gmail.com c286aa02a6 added Vibrating Sphere, Vish Kal, Blood Arbiter, Vodalian Mystic, Wurmskin Forger 2013-05-17 00:48:11 +00:00
anthonycalosa@gmail.com 3171c62089 added Tsabo's Decree, Tunnel Ignus, Urza's Guilt 2013-05-16 00:39:12 +00:00
anthonycalosa@gmail.com 819ddd0496 added Thran Foundry, Treacherous Vampire, Tremble, Truce 2013-05-15 02:30:14 +00:00
anthonycalosa@gmail.com c15d0ec523 added Thought Lash, Thoughtcutter Agent, Thoughts of Ruin 2013-05-15 02:01:29 +00:00
anthonycalosa@gmail.com 5da2033d74 added Tectonic Break, Temporary Truce, Tephraderm, Terraformer 2013-05-15 01:29:20 +00:00
anthonycalosa@gmail.com f449ec5fdd added Sway of Illusion, Swirling Spriggan 2013-05-14 13:30:40 +00:00
anthonycalosa@gmail.com ee310b7bb3 added Student of Elements // Tobita, Master of Winds 2013-05-14 04:26:48 +00:00
anthonycalosa@gmail.com b50eaf83a1 added Stonecloaker, Stonehewer Giant 2013-05-14 03:52:37 +00:00
anthonycalosa@gmail.com 79fca90db9 added Sigil of Distinction, Spectral Searchlight, Spell Burst 2013-05-14 03:31:17 +00:00
anthonycalosa@gmail.com d8b77bf796 Added Sickening Shoal.
Updated codes for Nourishing Shoal and Blazing Shoal.
2013-05-14 02:33:36 +00:00
anthonycalosa@gmail.com fa07242370 added GTC unsupported cards 2013-05-14 01:30:48 +00:00
anthonycalosa@gmail.com 6626b52e3a added DGM unsupported cards 2013-05-14 00:46:21 +00:00
anthonycalosa@gmail.com 86d748bc43 minor corrections 2013-05-14 00:45:05 +00:00
rolzad73@gmail.com 4f8d5b3300 globalized version number for Android project. 2013-05-13 02:18:27 +00:00
rolzad73@gmail.com 0908c76434 -Added Android release keystore (both passwords are 'password')
- updated ant.properties to reference new release keystore
2013-05-12 19:47:12 +00:00
anthonycalosa@gmail.com 1edd1546a2 Martyr of sands removed from unsupported.txt 2013-05-12 00:40:34 +00:00
anthonycalosa@gmail.com c2abc6e4a8 added Debt to the Deathless 2013-05-12 00:14:20 +00:00
anthonycalosa@gmail.com 7905ed1533 updated code for False Cure and Transcendence. added Martyr of Sands to borderline. 2013-05-12 00:03:11 +00:00
omegablast2002@yahoo.com f6f75ca660 psp comp fix, I was not able to test it though as i am not set up to comp psp builds anymore. 2013-05-11 00:48:21 +00:00
omegablast2002@yahoo.com 9f6a728150 i run the set names through translation now when filtering by sets.
what this means is that if a player so choose, they can list the sets 3 letter code in the en.txt as follows
BOK=betrayers of kamikawa
it will now list the names either as the 3 letter code if thier is no entry, or as whatever you call it in the lang->en.txt file.
2013-05-09 01:53:01 +00:00
omegablast2002@yahoo.com 54021a7f75 removed the remaining trademarked names. for future reference: we are not allowed to add the set names directly to card.dats. WOTC trademarks the names of sets months before they are released. 2013-05-09 00:49:56 +00:00
omegablast2002@yahoo.com 9f89353b4b reverted the adding of trademarked names to card.dat, as sad as it is we have to follow the laws. 2013-05-09 00:39:51 +00:00
wagic.the.homebrew@gmail.com 9fa9e1eb81 undo my changes with libhgetools.a, it seems something's wrong on my end, as my computer interprets u32 as unsigned long instead of unsigned int 2013-05-08 12:37:16 +00:00
omegablast2002@yahoo.com e54d212418 thanks MarSprite for adding the missing set names to the card.dats missing them. 2013-05-08 01:57:06 +00:00
anthonycalosa@gmail.com 07fdf735f5 added "twice" and "thrice" variables.
example usage:

auto=life:thriceX
auto=@damaged(player):life:twicethatmuch
auto=life:twicetype:creature:mybattlefield

so to code cards like Debt to the Deathless

[card]
name=Debt to the Deathless
auto=@lifeloss(opponent):life:thatmuch controller
auto=life:-twiceX opponent
text=Each opponent loses two times X life. You gain life equal to the life lost this way.
mana={X}{W}{W}{B}{B}
type=Sorcery
[/card]
2013-05-07 07:27:45 +00:00
omegablast2002@yahoo.com a7e9fe6699 spanish translation stuff, thanks atriel 2013-05-06 23:21:29 +00:00
punkeduard@gmail.com f3df94b319 Fixed some dragons maze cards 2013-05-06 17:26:54 +00:00
wagic.the.homebrew@gmail.com aa51083b2b update hge compiled lib 2013-05-06 06:01:19 +00:00
wagic.the.homebrew@gmail.com 0c8f1e1573 Increase version number to 0.19.0. I did it manually, not sure how to run the build scripts :/ 2013-05-06 05:10:19 +00:00
anthonycalosa@gmail.com 386fc08e3a Added Reap Intellect :) 2013-05-05 23:25:12 +00:00
wagic.the.homebrew@gmail.com a40c677f1e Adding test for i953 2013-05-05 13:52:42 +00:00
wagic.the.homebrew@gmail.com 38a203aac8 Reverted the "more than 50 elements in the stack" fix for Exquisite Blood + Sanguine Bond, as this created more issues than it fixed. I'll open a ticket for the Exquisite blood bug 2013-05-05 13:49:51 +00:00
wagic.the.homebrew@gmail.com 2349908f66 Refactored the "fast test", "slow test" bits of the test suite to make the intent clear, and prevent the first test slowness from being broken again. I've kept the fast_test value to 6 (it was originally 3) as Zethfox mentioned weird race conditions when it is set to 6. 2013-05-05 11:56:35 +00:00
omegablast2002@yahoo.com 30d3b52a9e Izzet Staticaster added 2013-05-04 17:58:55 +00:00
omegablast2002@yahoo.com 107874d88e restricted the creation of clones from progenator mimic to check if the clone is a token before making more. 2013-05-04 17:41:10 +00:00
omegablast2002@yahoo.com f0a6770948 added progenitor mimic and morgue burst 2013-05-04 08:55:00 +00:00
omegablast2002@yahoo.com 14c605f2a6 garruk and rakdos returns fixed 2013-05-03 03:36:07 +00:00
omegablast2002@yahoo.com 8dcd261258 couple card fixes, moved dryad arbor to the end of primitives because it was associating creature and forest in the subtypes and super types list. 2013-05-03 03:33:59 +00:00
omegablast2002@yahoo.com 537f994ae4 added spike jester 2013-05-02 22:12:20 +00:00
omegablast2002@yahoo.com 6403f75769 bad line fixes 2013-05-02 02:33:12 +00:00
omegablast2002@yahoo.com e076e64d97 changes to fix a bug, previous entries of the same name already exist causing the first oocurence to be used. 2013-05-02 01:57:29 +00:00
omegablast2002@yahoo.com 8deb0537a8 corrected names 2013-05-01 22:54:12 +00:00
omegablast2002@yahoo.com 83ef3aa08c fixed a crash with flip cards. how does the test for this pass? 2013-05-01 00:02:42 +00:00
omegablast2002@yahoo.com 305bdb386b t2 Selesnya deck 2013-04-30 06:27:18 +00:00
omegablast2002@yahoo.com ad855ce8d1 token fixes for dgm 2013-04-29 02:25:47 +00:00
omegablast2002@yahoo.com 150c28ae72 token fixes for dgm 2013-04-29 02:25:28 +00:00
punkeduard@gmail.com 2a25db403d Fixes to dragon's maze cards 2013-04-28 17:26:10 +00:00
omegablast2002@yahoo.com 80501edc2a format fix 2013-04-28 12:55:49 +00:00
omegablast2002@yahoo.com d7c1868de3 added corrected and checked the cards for dragon maze, thanks kf1! 2013-04-28 01:03:24 +00:00
omegablast2002@yahoo.com 7b11ede1d5 added dragon maze dat 2013-04-28 01:02:03 +00:00
omegablast2002@yahoo.com e8ee356892 fix for issue 913. 2013-04-24 13:29:54 +00:00
omegablast2002@yahoo.com dd68023249 new deck 2013-04-23 23:20:16 +00:00
omegablast2002@yahoo.com 96adbabea8 fixed a crash that could be reproduced demo->classic->best of 3->endless demo 2013-04-21 02:20:22 +00:00
omegablast2002@yahoo.com 89ae87cc3d opps, just a fix 2013-04-11 10:39:16 +00:00
omegablast2002@yahoo.com 8c80efbe2a replaced simon again with a medium thickness version of the same thing. 2013-04-10 22:50:03 +00:00
omegablast2002@yahoo.com 9ffe7349e2 added a hint that allows you to override how ai views a cards effects.
#HINT:good(icy prison)
ai will act as though the effects of this card are now good, choosing to cast it on it's own creatures.

#HINT:bad(ancestral recall)
ai will now use this card targeting the opponent. 
good in cases where you are trying to mill the opponent

the effects in wagic have gotten so complex that ai simply has no idea what some cards should target. this helps in most of the cases.
2013-04-10 02:38:52 +00:00
omegablast2002@yahoo.com f9410f695a added excessum to the deck builder credits. 2013-04-08 02:20:00 +00:00
omegablast2002@yahoo.com 7c8d3cedbd added 2 more decks from our deck builder excessum 2013-04-08 02:13:46 +00:00
omegablast2002@yahoo.com 49b6b028c5 fixed a bug with alwaysattack hint, if there was an attack readied it would undo it by clicking it the second time. 2013-04-07 17:30:48 +00:00
omegablast2002@yahoo.com 1bea0736a5 replaced backdrops pieces, task board, deck menu and deck editor with graphics from kevlahnota's mtg theme. to get the mtg look you will still have to download his theme, however these pieces i felt were so polished that they made the original wagic default theme look slapped together. 2013-04-07 14:41:44 +00:00
omegablast2002@yahoo.com 1c61ebddae added a shuffle to optimizedhand to avoid drawing the same hand over and over when its optimized.
adjusted normal difficulty to include 2 lands, 2 spells under 3 mana.

adjusted hard difficulty to always include 2 lands, the rest are randomly drawn. this prevents ai from being mana screwed on opening hand.
2013-04-07 01:07:00 +00:00
omegablast2002@yahoo.com 6727c1af52 added HINT:alwaysattackwith(targetchooser) and HINT:alwaysblockwith(targetchooser) 2013-04-07 00:56:44 +00:00
omegablast2002@yahoo.com ce656adeba new simon font. they are a little fatter then i would personally like but they look great on full screen. thanks Atriel for the new simon! 2013-04-07 00:33:27 +00:00
omegablast2002@yahoo.com 2a7bcb2170 ifdef on simon font to up the res of simon.
you will need to rename your old simon font to pspsimon
only english is effected.
2013-04-07 00:32:11 +00:00
anthonycalosa@gmail.com 5789d0cae4 added Shred Memory, Shyft, Simplify 2013-04-05 11:41:35 +00:00
omegablast2002@yahoo.com 80e36c2b92 readjusted the carddisplays for libarary and graveyard for both players to move them off the top of the avatars. you can now click thier respective button to close them when in a targetchooser action.
also readded a piece of code i commented out, it does nothing but the compiler saids it expected something there.
2013-03-30 17:09:50 +00:00
omegablast2002@yahoo.com c9360eb005 added the first 18 decks by our very talented deck builder excessum! i've had a chance to play against these before they got the combohint vamp up, i imagine now they're almost unstoppable. enjoy! make sure to thank excessum on the forum if you enjoy them as much as i have. 2013-03-29 20:23:32 +00:00
omegablast2002@yahoo.com 734b142879 the fix originally only targeted too many triggers unresolved on the stack, moving the other 2 out of the check as it actually causes new bugs to include them in the skip. 2013-03-28 00:05:39 +00:00
omegablast2002@yahoo.com bfb88f1bb5 increased the res of f3 font to 1024 x 1024. renamed old to pspf3 these will be the new f3 fonts using much higher res on everything but psp. 2013-03-27 23:31:38 +00:00
omegablast2002@yahoo.com 802c970ec3 #ifdef psp for the increase res font f3 which is by far the worst looking font on higher res devices. 2013-03-27 23:29:18 +00:00
omegablast2002@yahoo.com b38d6c6bc5 applying the patch for torny mode not awarding credits at end of torny. 2013-03-27 22:58:51 +00:00
Xawotihs@gmail.com 701ca64e8a Display IP address of game host before connection is established and handles disconnection of peer. 2013-03-26 22:32:29 +00:00
omegablast2002@yahoo.com 810c3967d6 after much testing and corrections, our user Holgern from the forums has completely recreated and reworked the gauntlet mode originally coded for ai vs ai into a completely new way to play wagic, you can choose the number of matchs, various modes, and other wonderful additions. Don't take my word for it, try all the fun new stuff out yourself!
THANK YOU Holgern!
2013-03-26 02:10:45 +00:00
omegablast2002@yahoo.com c994886ca8 polished the actionstack rendering a little. draw only as much black square as we need to render so we dont make a massive black square for nothing. 2013-03-23 20:53:33 +00:00
Xawotihs@gmail.com 2c0e0c7251 Removed the link between the font textures resolution and the size of the characters displayed. That allows to use very high resolution fonts similarly to card pictures... 2013-03-23 17:21:17 +00:00
omegablast2002@yahoo.com b6a4197d88 fix for a bug i introduced. 2013-03-23 06:21:01 +00:00
omegablast2002@yahoo.com e2f4dd7095 if its a land you should consider playing it. 2013-03-22 01:35:45 +00:00
omegablast2002@yahoo.com 0578ebde80 minor fixes for combo system. 2013-03-22 00:53:42 +00:00
omegablast2002@yahoo.com 9b44d627a3 changed ai eff return on token creation. over 50 tokens on my battlefield return 0.
changed an inefficient check on phaseskip.
2013-03-21 01:28:56 +00:00
omegablast2002@yahoo.com 8b626b378f that was not supposed to be in that last commit. someone please teach me to revert just a file without having to do a rain dance. 2013-03-16 21:50:21 +00:00
omegablast2002@yahoo.com b436550150 ai simple combo system is finally fully working.
added ai hint dontblockwith(targetchooser)
2013-03-16 21:35:10 +00:00
anthonycalosa@gmail.com c2132ab97f morthan typo 2013-03-15 23:51:04 +00:00
omegablast2002@yahoo.com 22640130dc fixes from the bugs section on the forum 2013-03-15 22:52:02 +00:00
omegablast2002@yahoo.com 90a0f5c86f as per mtg rules, the effects of unpaid upkeep cost should only happen if the from id was upkeep. ie:skipped phases. 2013-03-15 21:49:35 +00:00
omegablast2002@yahoo.com 3cb0a6c091 psp compilation fix 2013-03-15 21:42:24 +00:00
anthonycalosa@gmail.com 1818a8be82 corrected some typos 2013-03-15 15:13:02 +00:00
omegablast2002@yahoo.com 9c0ce5f7bf more changes to fix the combo system. 2013-03-15 02:08:03 +00:00
omegablast2002@yahoo.com 31ee6d2b90 trying to figure out why ai is cast cards that belong to a combo outside of a combo even though it is told to skip these cards. 2013-03-15 01:44:31 +00:00
omegablast2002@yahoo.com d4ff6d1453 spanish translation stuff 2013-03-14 22:22:18 +00:00
omegablast2002@yahoo.com a7aeb7efe5 fix for a bug in combohint. ai will now rarely want to use a card outside of a combo if it is to be held for a combo 2013-03-13 01:11:58 +00:00
omegablast2002@yahoo.com cd54ad7012 correction 2013-03-07 03:35:35 +00:00
omegablast2002@yahoo.com 04dce1ad50 ai vs ai matchs will play with optimizedhands. 2013-03-01 23:10:16 +00:00
omegablast2002@yahoo.com ef18f376b1 ifdef(psp) on cache hit miss handling. 2013-02-26 23:22:49 +00:00
anthonycalosa@gmail.com f9bd6e1c44 Added:
Scuttlemutt
Shieldmage Elder
Shields of Velis Vel
Show and Tell

Borderline:
Scapeshift

Fix:
Talara's Battalion - changed restrictions= to restriction=
2013-02-22 13:22:00 +00:00
anthonycalosa@gmail.com e8f8aae43f fix kjeldoran home guard and bloodlord of vaasgoth 2013-02-22 07:41:06 +00:00
omegablast2002@yahoo.com b4d4515e01 set init baka timer fastmode to a safer float. 2013-02-21 22:59:59 +00:00
omegablast2002@yahoo.com 9a52ae28a2 several changes here,
first, i added a timer to hide the big card after 5 secs or until a movement is registered. 

2nd, removed the advancing of phases with flick up.

3rd added a flick left to "show/hide hand"

4th, fixed an error in the logic of "getDifficulty" part of the reason optimizedhand was not working.

finally, unrefactored the checks of optimized hand, it was FAR to difficult to see what was actually happening the way it was coded.

optimizedhand is finally working again, 
toggledifficulty and optimizedhand will again trigger and greatly improve ai vs player matches
2013-02-21 00:48:39 +00:00
anthonycalosa@gmail.com 2330e6a613 fix all similar cards like Duress to have a "look" ability. 2013-02-20 09:04:09 +00:00
anthonycalosa@gmail.com 620c5595d9 Fix various typos reported on the forum. 2013-02-20 04:05:16 +00:00
omegablast2002@yahoo.com a5ea3275cd i introduced a bug a couple revs back. dyslexia got me. 2013-02-16 21:07:13 +00:00
anthonycalosa@gmail.com bf677b7bdd Added:
Jilt
Jugan, the Rising Star
Laquatus's Creativity
Mogg Infestation
Prahv, Spires of Order
Quest for the Holy Relic
Razing Snidd

Fix:
Gerrard Capashen - first ability is targeted
Spiraling Embers - removed "(" and ")" and revised
Sword of War and Peace - revised
Venser's Journal - revised
Vicious Shadows - ability is targeted
2013-02-16 09:46:18 +00:00
anthonycalosa@gmail.com 026600c084 Added:
Careful Consideration
Haunting Hymn
Might of Old Krosa
Return to Dust
Sulfurous Blast

Fix:
Liliana of the Dark Realms - missing add, thanks Tacoghandi
2013-02-16 05:59:50 +00:00
anthonycalosa@gmail.com a1a16fce57 Added Flux, Freyalise Supplicant, Hag Hedge-Mage, Harsh Mercy 2013-02-15 10:55:41 +00:00
omegablast2002@yahoo.com defb8e32c6 corrected the mana not removing from pool correctly bug, sorry about that. 2013-02-13 23:33:05 +00:00
omegablast2002@yahoo.com 8aef74e32a pestilence shouldn't care about protections of any kind. 2013-02-12 23:09:24 +00:00
anthonycalosa@gmail.com fbc1b14dca Added:
Mark of Sakiko
Sakiko, Mother of Summer
Sakura-Tribe Springcaller
Shizuko, Caller of Autumn
Upwelling
2013-02-12 13:08:17 +00:00
omegablast2002@yahoo.com e24f269c36 just a format 2013-02-10 14:34:13 +00:00
omegablast2002@yahoo.com 3c15357c38 added poolsave(COLOR) its an ability that works only on permanents in play.
opponentpoolsave(
mypoolsave(
ex:Upwelling


added a tag for mana, doesntempty
add{g}{g}{g} doesntempty
what this does is make THAT mana remain in the pool until end of turn.
ex:
Sakura-Tribe Springcaller
2013-02-09 06:48:16 +00:00
omegablast2002@yahoo.com 2b4c3a51aa removed a condiational that was limiting blink ability. i left the portion commented out just incase i put it there becuase of a bug. but as far as i can see it doesn't seem to cause an issue to remove it. 2013-02-09 02:37:22 +00:00
omegablast2002@yahoo.com f0405342be commited the spanish translation files that the spanish wagic group have worked so hard at producing a full almost 100% translation of wagic into spanish.
thank you to the translators involved in making it happen.
http://wololo.net/forum/viewtopic.php?f=24&t=16761
for more info and spanish card images.
2013-02-09 02:09:02 +00:00
omegablast2002@yahoo.com d2f14897a6 fixed a loop that can occur in multitarget where the maxs targets are set with a variable word and ends up resulting in a return of maxtargets = 0 which inturn locks ai in a loop, i imagine layers also. 2013-02-08 00:34:45 +00:00
dan.solomatin@googlemail.com 8b7c0e6b83 Fixed Righteous Indignation. 2013-02-07 23:14:59 +00:00
anthonycalosa@gmail.com f7116a84b4 Added Slavering Nulls, Slum Reaper, Smallpox, Snakeform 2013-02-07 14:33:52 +00:00
anthonycalosa@gmail.com dff6302773 Added Skyship Weatherlight 2013-02-07 11:44:52 +00:00
anthonycalosa@gmail.com b88b217c46 Added Domestication, Duergar Hedge-Mage, Ertai's Trickery 2013-02-07 11:33:07 +00:00
dan.solomatin@googlemail.com 13c10ec856 Added 4 cards based on revision4692.
Duct Crawler
Screeching Griffin
Shrewd Hatchling
Spin Engine

Optimized the code of 11 cards based on the same revision:

Boldwyr Intimidator
Bower Passage
Brassclaw Orcs
Gibbering Hyenas
Goblin Mutant
Hunted Ghoul
Ironclaw Buzzardiers
Ironclaw Orcs
Orcish Veteran
Orgg
Sabertooth Alley Cat
2013-02-07 11:00:15 +00:00
omegablast2002@yahoo.com 54780d3ef0 fixed a typo in cantbeblockerof , forgot a letter :X 2013-02-06 23:52:09 +00:00
dan.solomatin@googlemail.com cea9f0d8ae Added more info to Decimate to clear out its current overpoweredness. 2013-02-06 18:02:14 +00:00
dan.solomatin@googlemail.com 3daa0eec7d Moved Decimate from unsupported.txt to crappy.txt.
The Wagic version of Decimate would be like 50$, while the real version is currently 2$ max.
2013-02-06 17:50:47 +00:00
dan.solomatin@googlemail.com 101dd163a3 Fixed small typo in Consuming Ferocity's code. 2013-02-06 10:18:01 +00:00
dan.solomatin@googlemail.com c33ae31895 Moved Decimate from to unsupported.txt.
Decimate should only be castable if there are 4 legal targets for it.
If treated like it is in the current way of coding, the card is more then overpowered and thus shouldn't even be moved to crappy.txt!
2013-02-06 09:11:43 +00:00
omegablast2002@yahoo.com cbe6028a52 opps, i need to slow down my happy trigger finger before i hit commit. 2013-02-06 02:55:27 +00:00
omegablast2002@yahoo.com e424c3ab27 fixed a bug with lords not removing altercost correctly when the source is phased.
added 
cantbeblockerof(this)<--this = the card who owns the ability.
cantbeblockerof(targetchooser) <--the target cant block anything targetable by this targetchooser.
spin engine and similar will use cantbeblockerof(this).
others were done with a workaround, which i hope will be updated soon.
2013-02-06 02:45:40 +00:00
anthonycalosa@gmail.com 1d06a74fd9 added:
Death Cloud
Decimate
Destructive Force
Din of the Fireherd
2013-02-05 13:27:56 +00:00
anthonycalosa@gmail.com 81294a0d2b Added:
Azorius Ploy
Barter in Blood
Consuming Ferocity
Corpse Harvester
Corrupted Resolve
Cruel Ultimatum
Cyclopean Tomb

Borderline:
Consume Strength

Fixes:
Contagion Engine - can select targets once but add counters twice
Emblems missing forever tag

Moved Drain Life - we can now limit black using {X:black}
2013-02-05 10:43:03 +00:00
anthonycalosa@gmail.com ae8893617f Shifting sliver evasion doesn't work with creatures with protection from color 2013-02-05 04:02:26 +00:00
anthonycalosa@gmail.com 38895dfcd3 @each myupkeep -> @each my upkeep
fix recurring nightmare cost, Snow hound cost.
2013-02-04 14:08:05 +00:00
omegablast2002@yahoo.com 90c0b42a07 changed the defaults of the testsuite game constructor to set the default timerlimit to 6
the other threads were running test suite at 0 which was causing race condition fails in test suite, i incremented by 1 until the normally passing test no longer failed, test effected were proliferate and mortician beetle both passing test in normal mode, failing in hyperspeed. test suite takes only 30 secs more to run but we can't sacrifice actual results for speed.

the commented out section is not even taken into account after first test is run.
2013-02-04 05:09:52 +00:00
omegablast2002@yahoo.com 7e16b50fd3 just giving credit 2013-02-04 02:49:52 +00:00
Xawotihs@gmail.com 5a9b7eefc0 Fixed PSP compilation by stubbing the socket implementation. Somebody with a PSP, please replace this code with a real implementation. 2013-02-03 21:41:31 +00:00
Xawotihs@gmail.com 5c25189aef Added code to let user specify the server address.
Updated SimplePad to include dot and fixed problem with digits.
2013-02-03 19:21:43 +00:00
anthonycalosa@gmail.com 452ae08593 Cleanup my mess... 2013-02-03 15:57:48 +00:00
omegablast2002@yahoo.com b85f2240a7 fix for @sacrificed crash and not triggering to cost. 2013-02-03 15:31:06 +00:00
anthonycalosa@gmail.com 6928df6819 Added Sedris, the Traitor King 2013-02-03 13:45:56 +00:00
anthonycalosa@gmail.com 6fa633f822 tests:
-----------
Mortician_Beetle.txt
Savra_Queen_of_the_Golgari.txt

added:
-----------
Saprazzan Breaker
Savra, Queen of the Golgari

borderline:
-----------
Ogre Marauder

crappy:
-----------
Barbarian Bully
Skullscorch
2013-02-03 11:21:12 +00:00
omegablast2002@yahoo.com 2b9fdc41dc added 2 new restrictions for use in triggers and abilities
ownerscontrol
opponentscontrol

ownerscontrol returns 1 if the owner has the card in thier battlefield. 0 otherwise. vice versa.
this should make it easier to add cards which should be treated differently depending on who controls them.
2013-02-02 18:42:39 +00:00
anthonycalosa@gmail.com ef4a8c6d84 Moved rune of protection to crappy.
Revised Pursuit of Knowledge
Added Samite Elder
2013-02-02 14:24:07 +00:00
anthonycalosa@gmail.com 44fa0e9015 added:
Reap
Rebel Informer
Repopulate
Rix Maadi Guildmage
Rocket Launcher
Roots of Life
Rotting Giant
Rune of Protection: Artifacts
Rune of Protection: Black
Rune of Protection: Blue
Rune of Protection: Green
Rune of Protection: Lands
Rune of Protection: Red
Rune of Protection: White
Sadistic Augermage

borderline:
Rakdos Augermage
2013-02-02 10:50:16 +00:00
omegablast2002@yahoo.com a8ebaee527 added a check to avoid skipping a gameState update if there are more than 50 items left to resolve in the stack, let run a gameStates check and see if we havent already won.
Exquisite Blood + Sanguine Bond example of the kinds of loops this fixes.
2013-02-02 05:43:46 +00:00
anthonycalosa@gmail.com cca8f1ce4e minor cleanup spaces 2013-02-02 03:49:53 +00:00
anthonycalosa@gmail.com a8c6da03a8 Added - Prismatic Lace, Quickchange
Borderline - Govern the Guildless
Fixed - Prismwake Merrow
2013-02-02 02:23:05 +00:00
omegablast2002@yahoo.com 6a1591d72b reverted the newtarget/retarget fix, it didn't fix the issue and created new ones. 2013-02-01 18:54:07 +00:00
anthonycalosa@gmail.com fa5e3ad9b4 Softcoded Reminisce
Added Prismatic Lace in Borderline
2013-02-01 14:34:30 +00:00
anthonycalosa@gmail.com 0095dcceb5 Added Predatory Advantage, Priest of Yawgmoth & Pursuit of Knowledge 2013-02-01 14:04:17 +00:00
omegablast2002@yahoo.com 6c86c276d2 missed a file last commit. 2013-02-01 04:35:40 +00:00
omegablast2002@yahoo.com 0bd769d3c0 added engine code to do a putinzone without sending events.
equipping no longer retriggers a copier.
retarget and newtarget no long send the events due to refreshing the cards.
2013-02-01 04:21:08 +00:00
anthonycalosa@gmail.com 94955088c8 Moved Gerrard's Verdict, Lurking Evil to crappy.
Added Rix Maadi, Dungeon Palace
Added Rotting Rats
Added Stronghold Rats
2013-02-01 03:15:39 +00:00
anthonycalosa@gmail.com 7de5cfbd37 Fixed Possessed Portal since you cant discard a card unless you have one permanent to sacrifice, replace 0/0 with donothing
Moved Maralen of the Mornsong to borderline since the effect is not draw replacement but players cant draw anything (there isn't any stated "would draw"), maybe we can have CANTDRAW ability in the future.
2013-02-01 02:20:27 +00:00
anthonycalosa@gmail.com ea0a3efc38 Added Possessed Portal. 2013-01-31 14:37:29 +00:00
anthonycalosa@gmail.com 6e7c57151c Added Piston Sledge, fixed Grifter's Blade 2013-01-31 13:52:50 +00:00
omegablast2002@yahoo.com 2ef93bc722 readded the rest of the stuff that anthony commited that the svn ate during my commit. 2013-01-31 11:33:30 +00:00
anthonycalosa@gmail.com 21897f2f63 removed workaround, and revised code to simian spirit guide and elvish spirit guide. 2013-01-31 11:09:20 +00:00
anthonycalosa@gmail.com de16c53534 Re commitied my previous cards in primitives/mtg.txt
I dont know why my previous commit has been removed but its all working. I included tests for the cards in this commit. All test suite passes. please update your FUT/_cards.dat because i change the name of oriss to its original name.

--------------------------------------
[card]
primitive=Oriss, Samite Guardian
id=136210
rarity=R
[/card]
2013-01-31 09:00:25 +00:00
omegablast2002@yahoo.com a83e029ca6 master transmuter can now be the card returned 2013-01-31 06:55:12 +00:00
omegablast2002@yahoo.com aadd0c56b2 fixed a couple easy issues 2013-01-31 06:45:50 +00:00
anthonycalosa@gmail.com 29c50becf0 Added Pain Magnification 2013-01-30 15:51:07 +00:00
anthonycalosa@gmail.com dffecf7ee0 Added Nim Devourer
Added Nourishing Shoal
Added Oak Street Innkeeper
Added Opal Avenger
-----------------
Revised Oriss, Samite Guardian - ability must be targeted
-----------------
fixed Blazing Shoal alternate cost
fixed Contaminated Ground trigger
2013-01-30 14:46:57 +00:00
omegablast2002@yahoo.com eab782c32f this was accidental, i was just about to toy with a may pay( ability. 2013-01-30 04:22:01 +00:00
omegablast2002@yahoo.com 1b689adf05 forgot a ( in the replacement for donothing 2013-01-30 04:01:57 +00:00
omegablast2002@yahoo.com c078af5f24 fix for crash from not having a playerTarget when ability$! is used on targetedPlayer by an instant. 2013-01-30 03:51:16 +00:00
anthonycalosa@gmail.com d07951fbdf Added Nemesis Trap, Nicol Bolas, Planeswalker 2013-01-30 03:25:22 +00:00
omegablast2002@yahoo.com 415e8dbcb2 updated cards using 0/0 as a fake ability into donothing 2013-01-30 02:40:49 +00:00
omegablast2002@yahoo.com f8800b8bbd added an ability keyword that resolves to do nothing.
"donothing"
this is to avoid using powerandtoughness 0/0 ability to mean "do nothing"

old code
[card]
name=Inquisition
target=player
auto=target(*|targetedpersonshand) 0/0
auto=foreach(*[white]|targetedpersonshand) damage:1 targetedplayer
text=Target player reveals his or her hand. Inquisition deals damage to that player equal to the number of white cards in his or her hand.
mana={2}{B}
type=Sorcery
[/card]

new code
[card]
name=Inquisition
target=player
auto=target(*|targetedpersonshand) donothing
auto=foreach(*[white]|targetedpersonshand) damage:1 targetedplayer
text=Target player reveals his or her hand. Inquisition deals damage to that player equal to the number of white cards in his or her hand.
mana={2}{B}
type=Sorcery
[/card]
2013-01-30 02:38:25 +00:00
omegablast2002@yahoo.com b7a2c000be corrected typo in lurking evil.
just for future notice this card should be moved to crappy.
whenever an ability has
blah blah:effect
that means, {cost}:effect
if you can not do it with supported cost in engine, do not add it as
{0}:effect && effect
this is a workaround we stopped using a very very long time ago.
the ability of losing life is not treated the same as "paying" life. same as any other cost.

the issue arose several times while i have added support, and due to a workaround, my support would be flawed, at first i would try to munipulate what i coded to allow for the workarounds to continue working. 
that was the past, i long since stopped doing that, if a card is a workaround, and it breaks, i remove it completely.
2013-01-30 00:36:09 +00:00
Xawotihs@gmail.com 12620e5d22 Just tested network game Linux desktop vs Android tablet ... works fine :) 2013-01-29 21:05:24 +00:00
anthonycalosa@gmail.com 0a8c846f9a added:
Mangara's Equity
Maralen of the Mornsong
Mercenary Informer
Mind Swords
Monkey Cage
Myr Battlesphere
Mystic Snake
Necropolis
2013-01-29 15:35:16 +00:00
omegablast2002@yahoo.com c7e1dfb72f added rules to hermit 2013-01-29 00:57:38 +00:00
Xawotihs@gmail.com 47cfc5bdeb Reverted TestSuiteAI.cpp from previous commit 2013-01-28 22:40:56 +00:00
Xawotihs@gmail.com 73131c8064 Removed unused variables 2013-01-28 22:37:01 +00:00
Xawotihs@gmail.com 48d45f2a65 Added missing .h and fixed the boost sleep, it works fine on linux now. 2013-01-28 22:26:13 +00:00
Xawotihs@gmail.com faff7724d6 Added a function to get the current IP address 2013-01-28 22:03:26 +00:00
anthonycalosa@gmail.com f1fa655306 added cards:
------------
Lore Broker
Lorthos, the Tidemaker
Luminarch Ascension
Lurking Evil
Magus of the Jar
Makeshift Mannequin
Malfegor
Manaforge Cinder
Memory Jar

fixed:
------------
Geist of Saint Traft token, it says @combat ends exile the token.
2013-01-28 12:56:32 +00:00
anthonycalosa@gmail.com 313598fab0 fixed sublime archangel 2013-01-28 06:58:53 +00:00
anthonycalosa@gmail.com da186a6225 revised living death and living end 2013-01-28 06:06:13 +00:00
omegablast2002@yahoo.com 3ac3836538 added the stack to countValidTargets() 2013-01-28 05:04:34 +00:00
omegablast2002@yahoo.com 2b9cae8950 added functionality to may and choice ability so that it can check a "restriction{}" like a activated ability with cost, that can keep a menu option from appearing if the restriction is not met
auto=choice damage:1 target(creature) restriction{type(creature[blue])~morethan~1}

this choice menu will only appear is there is more than one blue creature inplay
2013-01-28 03:49:24 +00:00
anthonycalosa@gmail.com a32a58f621 Added Cards:
------------
Laquatus's Champion
Lich's Tomb
Liege of the Tangle
Living Death
Living End,
Locust Miser
Lodestone Bauble

Fixes: Flakenrath Aristocrat, Sublime Archangel
2013-01-28 01:39:30 +00:00
omegablast2002@yahoo.com eaf4d94a2e this part didnt commit in last rev, it fixes the mana display.
the progress is removed on this though, so you might not notice it until next release when you do a fresh install.
any new decks for both player or ai will show the mana symbols after a match is completed.
2013-01-27 19:35:52 +00:00
omegablast2002@yahoo.com dac14020a2 fixed stats resetting and decks being marked as new.
this should also allow for the ai difficulty tools to work correctly again. mana symbols displayed again, mini info, and everything related to the stats.
2013-01-27 18:52:12 +00:00
wagic.the.homebrew@gmail.com 5fa1cc915b A "fix" for Android compilation. Feel free to replace if something better is available 2013-01-27 09:36:43 +00:00
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 822c3bc9c8 2013-01-27 02:56:23 +00:00
omegablast2002@yahoo.com b7c13825c5 2013-01-27 02:55:35 +00:00
omegablast2002@yahoo.com 534d87e3bd fixed evolve hoepfully for the final time. 2013-01-27 02:54:03 +00:00
anthonycalosa@gmail.com c1c6296c9c modified _tests.txt 2013-01-27 02:29:53 +00:00
anthonycalosa@gmail.com 79d9ad865e moved the evolve test outside the main test suite 2013-01-27 02:13:35 +00:00
wagic.the.homebrew@gmail.com d8da70361a - Fix an android warning (false instead of null in GuiCombat)
- removed unnecessary "if" in some parts of MTGRules.cpp
2013-01-27 02:09:10 +00:00
anthonycalosa@gmail.com f6e95af995 Added generic test for Evolve mechanic. I intentionally reverese the order of creature so that the evolve come in play with no counters before hand, then attack with utvara hellkite to see if it will trigger evolve. 2013-01-27 01:24:44 +00:00
anthonycalosa@gmail.com 892c7d34c0 fixed Firemane Avenger, added Knollspine Dragon 2013-01-27 00:13:10 +00:00
Xawotihs@gmail.com 975445d3d5 #ifdef out on Windows a fix for Linux 2013-01-26 22:35:57 +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 5b0f5bd90f fixed compilation for psp, ambiguous else warning. 2013-01-26 18:50:28 +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
omegablast2002@yahoo.com db0f401ba5 moved the triggering of forced lure block to eventblockerschoosen. this corrects issues where lure wasnt applying the abilities like flanking correctly on cards which were forced to block. 2013-01-26 16:23:22 +00:00
anthonycalosa@gmail.com f59b8db91f Added test for Alluring Scent -> card that grants lure ability. the following are to test if forcing a block from lure, trigger events of a block. I don't know if the problem is lure or the flanking ability. the correct result is every creature must survive. flanking makes the walls power to 0. 2013-01-26 13:12:16 +00:00
anthonycalosa@gmail.com ed77b40a29 added cards
--------------

Hurloon Shaman
Ignorant Bliss
Ill-Gotten Gains
Impatience
Innocent Blood
Jace's Archivist
Jin-Gitaxias, Core Augur
Kangee, Aerie Keeper
Keldon Battlewagon
Windfall

---------------
fixed Blazing Archon
2013-01-26 09:14:26 +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
anthonycalosa@gmail.com 84950ad1f8 Added test for taunting elf. 2013-01-25 14:51:48 +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
anthonycalosa@gmail.com f1032c64b5 changed add:{mana} to add{mana} 2013-01-25 02:19:29 +00:00
punkeduard@gmail.com 78797356ea Fixes on Markov Warlord, Skarrg Guildmage 2013-01-25 01:53:03 +00:00
anthonycalosa@gmail.com 2c00d99563 fixed card ability
-------------------
Dwell on the Past
Krosan Reclamation
Loaming Shaman
Memory's Journey
Stream of Consciousness
2013-01-25 01:29:05 +00:00
omegablast2002@yahoo.com 798258798c corrected an issue where ai was able to ignore lure ability 2013-01-24 21:04:23 +00:00
anthonycalosa@gmail.com fccedcaaab added cards
--------------
Grand Abolisher
Hamletback Goliath
Hanabi Blast
Harmonic Sliver
Heed the Mists
Hellkite Charger
Hired Giant
Homeward Path
Hunter's Insight

---------------
fixed Arboria
fixed Hunters' Feast
fixed Zhang Liao, Hero of Hefei
2013-01-24 17:55:41 +00:00
anthonycalosa@gmail.com 80cdd56971 Added GTC Cards 192/249 (including reprints) refactored all names, ability texts, all codes. also include some fixes on other cards :)
--------------------------------------------------------------------

AEtherize
Adaptive Snapjaw
Aerial Maneuver
Agoraphobia
Alms Beast
Alpha Authority
Angelic Edict
Angelic Skirmisher
Armored Transport
Arrows of Justice
Assemble the Legion
Aurelia, the Warleader
Biomass Mutation
Biovisionary
Bomber Corps
Boros Charm
Boros Elite
Boros Guildgate
Boros Keyrune
Boros Reckoner
Burning-Tree Emissary
Burst of Strength
Cartel Aristocrat
Clinging Anemones
Cloudfin Raptor
Coerced Confession
Corpse Blockade
Court Street Denizen
Crackling Perimeter
Crocanura
Crowned Ceratok
Daring Skyjek
Death's Approach
Deathcult Rogue
Deathpact Angel
Debtor's Pulpit
Devour Flesh
Dimir Guildgate
Dimir Keyrune
Dinrova Horror
Disciple of the Old Ways
Drakewing Krasis
Duskmantle Guildmage
Dutiful Thrull
Dying Wish
Elusive Krasis
Enter the Infinite
Executioner's Swing
Experiment One
Fathom Mage
Firefist Striker
Firemane Avenger
Five-Alarm Fire
Forced Adaptation
Fortress Cyclops
Foundry Champion
Foundry Street Denizen
Frilled Oculus
Furious Resistance
Gateway Shade
Ghor-Clan Rampager
Giant Adephage
Gideon, Champion of Justice
Gift of Orzhova
Glaring Spotlight
Greenside Watcher
Gridlock
Grisly Spectacle
Ground Assault
Gruul Charm
Gruul Guildgate
Gruul Keyrune
Gruul Ragebeast
Guildscorn Ward
Gutter Skulk
Gyre Sage
Hellkite Tyrant
Hellraiser Goblin
High Priest of Penance
Hindervines
Hold the Gates
Holy Mantle
Homing Lightning
Horror of the Dim
Hydroform
Illness in the Ranks
Immortal Servitude
Incursion Specialist
Ivy Lane Denizen
Keymaster Rogue
Killing Glare
Knight Watch
Legion Loyalist
Leyline Phantom
Luminate Primordial
Martial Glory
Massive Raid
Master Biomancer
Merciless Eviction
Merfolk of the Depths
Metropolis Sprite
Millennial Gargoyle
Miming Slime
Mindeye Drake
Molten Primordial
Mortus Strider
Mugging
Murder Investigation
Nav Squad Commandos
Nimbus Swimmer
Obzedat, Ghost Council
Ogre Slumlord
One Thousand Lashes
Ordruun Veteran
Orzhov Guildgate
Orzhov Keyrune
Pit Fight
Predator's Rapport
Primal Visitation
Prime Speaker Zegana
Psychic Strike
Purge the Profane
Rapid Hybridization
Razortip Whip
Realmwright
Riot Gear
Rubblebelt Raiders
Rubblehulk
Ruination Wurm
Rust Scarab
Sage's Row Denizen
Sapphire Drake
Scab-Clan Charger
Scatter Arc
Scorchwalker
Sepulchral Primordial
Serene Remembrance
Shadow Alley Denizen
Shambleshark
Shattering Blow
Shielded Passage
Simic Fluxmage
Simic Guildgate
Simic Keyrune
Skarrg Goliath
Skarrg Guildmage
Skinbrand Goblin
Skyblinder Staff
Skygames
Slate Street Ruffian
Slaughterhorn
Smog Elemental
Spark Trooper
Spire Tracer
Sunhome Guildmage
Sylvan Primordial
Tin Street Market
Totally Lost
Tower Defense
Towering Thunderfist
Truefire Paladin
Urban Evolution
Urbis Protector
Verdant Haven
Viashino Shanktail
Vizkopa Guildmage
Warmind Infantry
Wasteland Viper
Way of the Thief
Wight of Precinct Six
Wildwood Rebirth
Wojek Halberdiers
Wrecking Ogre
Zarichi Tiger
Zhur-Taa Swine

TODO:merge unsupported cards from GTC (but will wait for zeth)
2013-01-24 03:57:02 +00:00
anthonycalosa@gmail.com ba682e4802 Added:
Gaea's Blessing
Garza's Assassin
Gauntlet of Power
Gerrard's Verdict
Gigantiform
Glory of Warfare
Goblin Brawler
Smite

Fixes:
Opalescence
Thelonite Monk
2013-01-23 03:11:13 +00:00
anthonycalosa@gmail.com db0dae7f8d Added GTC dat files, all ID, names and rarity are 100% accurate from gatherer. :) (exception change Æ to AE) 2013-01-23 02:07:40 +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
anthonycalosa@gmail.com ada0a1555d cleanup remaining space in add_{mana} 2013-01-22 06:03:45 +00:00
anthonycalosa@gmail.com 782a8305fe Removed all spaces in auto line : Add_{mana} 2013-01-22 05:52:14 +00:00
anthonycalosa@gmail.com f04dfac4b5 fixed Eiganjo Castle, Nezumi Shortfang, Shimian Specter 2013-01-22 03:34:10 +00:00
anthonycalosa@gmail.com 0b4ebc6e51 fix drana, banshee and added fleshbag marauder, fortune thief, fractured loyalty, frantic search, fungus elemental 2013-01-21 15:26:41 +00:00
anthonycalosa@gmail.com cae9ff79d6 3rd Part: Dredge & Others
added 19 other cards from unsupported
-------------------------------------
Deus of Calamity
Diaochan, Artful Beauty
Dralnu's Pet
Dreams of the Dead
Due Respect
Ebon Praetor
Ego Erasure
Elemental Mastery
Erhnam Djinn
Essence Vortex
Exhume
False Cure
False Memories
Fanning the Flames
Feast of Worms
Festival of the Guildpact
Fight to the Death
Figure of Destiny
Final Punishment

added 16 dredge & cards with "draw" replacement
-----------------------------------------------
Dakmor Salvage
Darkblast
Golgari Brownscale
Golgari Grave-Troll
Golgari Thug
Grave-Shell Scarab
Greater Mossdog
Life from the Loam
Moldervine Cloak
Necroplasm
Nightmare Void
Obstinate Familiar
Plagiarize
Shambling Shell
Stinkweed Imp
Thought Reflection
2013-01-21 04:54:59 +00:00
anthonycalosa@gmail.com 32d06d1148 change damagecount as damage counter to actual damage received for "normal case" damage, this fixes odcount and pdcount int values. 2013-01-21 01:24:19 +00:00
omegablast2002@yahoo.com 1b7b1e2cf1 add dredge rule. 2013-01-20 20:13:32 +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
punkeduard@gmail.com 0709aaefb8 Added from the vaults: realms, after research concluded the official abbreviation is V12 and the others FTV sets should remain the same, this set is just reprints supported 13/15 total 2013-01-19 19:49:36 +00:00
anthonycalosa@gmail.com 69af807510 added City of Solitude, Detonate, Dosan the Falling Leaf, Harsh Justice.
added restriction for Reset, fixed Seedtime, fixed Wild Defiance, fixed Abundant Growth (thanks excessum)
2013-01-19 08:46:10 +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 fda7166752 2nd Part:
Added entwine cards and other cards as of SVN r4587.

Entwine Cards
----------------------
Incite War
Journey of Discovery
Promise of Power
Roar of the Kha
Rude Awakening
Savage Beating
Solar Tide
Stir the Pride
Temporal Cascade
Tooth and Nail
Wail of the Nim

Cards from Unsupported
----------------------
Circle of Protection: Shadow
Circle of Solace
Cloudstone Curio
Coalition Relic
Commando Raid
Copy Artifact
Cornered Market
Crack the Earth
Crag Saurian
Crescendo of War
Crypt Champion
Curfew
Dance of the Dead


I don't have an exact amount of cards supported in the latest SVN because there are a lot of cards in my local copy to be tested before commiting.

OT: I think overload card can be done if the target card and store it for use until the spell resolves. ex:

[card]
name=Blustersquall
other={3}{U} name(Overload)
auto=if paid(alternative) then tap all(creature)
auto=ifnot paid(alternative) then tap all(mytarget)
text=Tap target creature you don't control. -- Overload {3}{U} (You may cast this spell for its overload cost. If you do, change its text by replacing all instances of "target" with "each.")
mana={U}{target(creature|opponentbattlefield)}
type=Instant
[/card]
2013-01-17 02:52:02 +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 9201860744 Added Oracle of Nectars gain life test. I have 2 tests failed, gain X life and ai proliferation. It seems there is an issue on my maxglee profile(the one i have with lots of deck, i mean a lot). Now I changed my profile to default profile(the one with a demo deck), restarted and run the tests a couple of times and my tests are all succesful 100%. 2013-01-15 01:59:48 +00:00
omegablast2002@yahoo.com a608de3b73 corrected stasis test to follow the new coding which actually works :)
corrected steelclad_serpent2 test missing choice 0 and p2.

ai proliferate test was not failing for me. it was sucessful on each run.

note 100% pass on this rev.
2013-01-14 23:39:08 +00:00
anthonycalosa@gmail.com 0a8a88f817 fixed kudzu, master of etherium, nevinyrrals disk tests. 3 failed tests remains (phase problems which i really don't know why it fails). all other tests are succesful. 2013-01-14 17:40:07 +00:00
anthonycalosa@gmail.com e1d2bf56c5 fixed hanna's custody shroud test.(i just changed the rack and black vise to rackling and viseling...gotta get some sleep...:(..) 2013-01-14 17:00:52 +00:00
anthonycalosa@gmail.com 98ea63485d updated kudzu, kudzu2 test. change all(mytgt) to all(trigger) for kudzu. now for kudzu_i168.txt i don't quite understand what is the expected output for this so i leave it unchanged. 2013-01-14 16:46:17 +00:00
anthonycalosa@gmail.com 598ffb1f9b Fixed rampant growth & orcish lumberjack tests (missing choice 0) 2013-01-14 16:03:11 +00:00
anthonycalosa@gmail.com c3586126a5 Fixed Gamble and Gamble test(it failed because the command has a missing choose 0). Soft coded Insolence, Mana Short, Sacrifice and Touch of Vitae. Changed Rot Wulf to Rot Wolf.
TODO: there are several test that needs updating prior to changes in card primitives (the ones that failed 11 are left).
2013-01-14 15:26:00 +00:00
wagic.the.homebrew@gmail.com cbcc5a57ca Fixing Gamble (I am aware that this makes the card less close to the rules in theory, but now the test passes. Let's not break some parts of a card when we fix other parts, please).
It is possible revision 4519 introduced other similar issues in other cards, but that revision was so big that I didn't want to revert it entirely
2013-01-14 12:37:53 +00:00
wagic.the.homebrew@gmail.com 9b47a64fd9 reverting r4569. This fixes Flare, and potentially other cards using the same mechanism 2013-01-14 12:14:19 +00:00
wagic.the.homebrew@gmail.com 83c0ee2c28 Fixed "Animate Artifact" tests 2013-01-14 11:26:22 +00:00
wagic.the.homebrew@gmail.com 4be2c39566 Fixed Test for Black Vise 2013-01-14 11:19:04 +00:00
wagic.the.homebrew@gmail.com 1f8e1179cc Fix for issue 930 (Farmstead can be used more than once per turn) 2013-01-14 11:10:01 +00:00
wagic.the.homebrew@gmail.com 2d11392e47 Fixed famrstead test. Sadly, this doesn't fix the card 2013-01-14 08:06:12 +00:00
anthonycalosa@gmail.com 0fcfb43d3a Softcoded Storm Seeker, Traumatize, Venomous Dragonfly 2013-01-14 03:23:33 +00:00
anthonycalosa@gmail.com 2a1f29aebc Fixed remaining transform cards to creatures that uses */* 2013-01-13 15:58:06 +00:00
anthonycalosa@gmail.com e7dd2e02d6 Fixed some cards that transforms into creature (must use setpower and settoughness, if not the effects are like +1/+1). TODO.... 2013-01-13 14:31:15 +00:00
anthonycalosa@gmail.com da15bb7427 Fixed Rot Wolf, Revised @next upkeep card draw. 2013-01-13 13:59:24 +00:00
anthonycalosa@gmail.com 6410e25bcc Added check for Ali from Cairo, if you are dealt damage to reduce your life less than 1 from your life total, and you gain life greater than 1, it will not set your life to 1. 2013-01-12 14:44:26 +00:00
anthonycalosa@gmail.com 14e0093eaf Added 16 cards from unsupported.txt
------------------------------------

Abeyance
Agadeem Occultist
Ali from Cairo
Antagonism
Aphetto Dredging
Aquitect's Will
Aura Barbs
Beseech the Queen
Blazing Shoal
Blind Seer
Budoka Gardener
Dokai, Weaver of Life
Builder's Bane
Burrenton Forge-Tender
Cauldron Dance
Cephalid Constable
2013-01-12 14:30:55 +00:00
anthonycalosa@gmail.com 3b08a05421 Fixed all cards that transform cards into new color as an additional color. Added Indigo Faerie. 2013-01-12 14:04:48 +00:00
punkeduard@gmail.com f74e2019cc Fixed some AVR cards reported on the forums 2013-01-12 04:55:01 +00:00
punkeduard@gmail.com 93c9f12eff Added Dwarven Hold, fixed typo in Curse of the Nightly Hunt, removed sxtra blank space 2013-01-12 04:28:00 +00:00
anthonycalosa@gmail.com 80a3e37961 removed unnecesary spaces in primitives/mtg.txt. 2013-01-11 17:21:10 +00:00
anthonycalosa@gmail.com 4e9dc2c3b1 Added Wurm Token for Garruk, Primal Hunter because it produces 2 different tokens. Change Glory and Zombie Boa chooseacolor to activatechooseacolor. 2013-01-11 12:55:57 +00:00
anthonycalosa@gmail.com b78c8084be Card Fixes:
------------

Dragon Broodmother - change token id to source card token id
Kjeldoran Javelineer - revised code
Malignant Growth - Growth counter damage
Marsh Crocodile - revised code
Mindslash Sliver - revised code
Phyrexian Etchings - revised code
Psychic Vortex - revised code
Sheltering Ancient - dynamicability<!agecountersoneone!>
Wall of Shards - revised code

updated ARB/_cards.dat (pls. update your ARB set folder)
2013-01-11 07:43:29 +00:00
anthonycalosa@gmail.com 8119f3bc05 fixes includes some card id of tokens be change to display image in game. please update your sets folder and images.
Card Fixes:
--------------

Ajani Goldmane - moved token id to dat file
Army of the Damned - change token id to source token id
Black Vise -  can choose opponent
Chromium - upcost sacrifice
Elephant Resurgence - change token id to source token id
Melancholy - upcost sacrifice
Midnight Ritual - change token id to source token id
Polar Kraken - fix upcost
Rackling - soft coded
Skeletonize - must target beforehand and fix token color & id
Storm World - fix. can't use foreach..<4 because X is 4 minus the cards
Tatsumasa, the Dragon's Fang - revised workaround
Terastodon - change token id to source token id
Tetravus - change token id to source token id
The Rack - soft coded
Thirst - upcost sacrifice
Tombstone Stairwell - revised ability, removed tombspawn primitive
Varchild's War-Riders - fix cumulative upcost
Venser, the Sojourner - fix loyalty counters
Vexing Sphinx - upcost sacrifice
Vraska the Unseen - moved token id
Wall of Shards - fix cumulative upcost
Waylay - generic token coded
Wheel of Torture - fix. can't use foreach..<3 because X is 3 minus the cards

updated necessary dat files for the token ids.
2013-01-10 17:36:22 +00:00
anthonycalosa@gmail.com 0e4994c22c Added 6 Legendary Dragons
-------------------------
Crosis, the Purger
Dromar, the Banisher
Numot, the Devastator
Rith, the Awakener
Treva, the Renewer
Vorosh, the Hunter

Fixed 2 Legendary Dragons
-------------------------
Oros, the Avenger
Teneb, the Harvester


If we have like UEOP ( until end of phase| until end of step ) keyword this will be perfect, but for now I use oneshot. :)
2013-01-10 07:44:55 +00:00
anthonycalosa@gmail.com c6117fdfb3 Revised Goblin Clearcutter, Manamorphose, Orcish Lumberjack and Terrarion ability. 2013-01-09 11:44:44 +00:00
anthonycalosa@gmail.com 1ff10ed4c7 Added Blinding Powder, Heartseeker and Leonin Bola.
Fixed Finest Hour missing ability, Fire Dragon and Godo, Bandit Warlord typo
2013-01-09 08:05:40 +00:00
anthonycalosa@gmail.com d83415ed3b fixed Umezawa Jitte menu ability, Centaur Glade token typo, Ghitu-Fire eater missing player target and Flame Elemental dynamic ability typo. 2013-01-09 03:32:11 +00:00
anthonycalosa@gmail.com e69e002c1a Revised code for Atalya, Samite Master, Crimson Hellkite and Crypt Rats to use {X:color}
Cleaned Manacost.cpp

My observation so far when paying X in activated abilities, when X doesn't work, I press escape to get in the main menu and play another game(test again), then X activated ability will work. I really don't know where to start/look for the cause of it.
2013-01-08 13:26:42 +00:00
anthonycalosa@gmail.com e5b56cfffb Added 16 cards
---------------
Lure Cards:
Alluring Scent
Bloodscent
Elvish Bard
Gift of the Deity
Golgari Decoy
Lure
Mortipede
Nemesis Mask
Prized Unicorn
Seton's Desire
Shinen of Life's Roar
Stone-Tongue Basilisk
Taunting Challenge
Taunting Elf
---------------
No Legend Cards:
Brothers Yamazaki
Mirror Gallery
2013-01-08 04:01:25 +00:00
anthonycalosa@gmail.com eeb5a4235b Angel of Serenity - fix ability (like mesmeric fiend, blinked cards return to owners hand if source leaves play)
Angel's Tomb - added may

Archaeomancer - added check

Cathedral of War - removed space

Defang - revised code

Dismal Failure - revised code

Gallows at Willow Hill - removed extra activation cost

Ghostly Flicker - target fix

Hidden Retreat - fix targeted card ability
2013-01-08 03:35:36 +00:00
omegablast2002@yahoo.com 2aed88a44f fixed the simplemenu scrolling bug, the scrolling will no longer jump to the final selection you made when scrolling down and up. 2013-01-07 21:33:59 +00:00
anthonycalosa@gmail.com b007190d98 updated CHK dat file. 2013-01-07 09:29:43 +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
Xawotihs@gmail.com e2be750780 Adding boost random support and system libs 2013-01-06 19:44:18 +00:00
Xawotihs@gmail.com 38ebdde6ed Adding boost uuid support 2013-01-06 17:53:29 +00:00
Xawotihs@gmail.com 579a651e3d Adding boost weak pointer support 2013-01-06 17:49:55 +00:00
punkeduard@gmail.com a95a2c4dc2 fixed tribute to hunger, far wandering 2013-01-06 17:32:50 +00:00
punkeduard@gmail.com edb3295af0 Updated crappy, borderline and mtg to include/fix some cards related to chosen discard 2013-01-06 17:08:21 +00:00
anthonycalosa@gmail.com 3b07ad6b7f Merge RTR card primitives to mtg.txt
187 cards merged:

Abrupt Decay
Aerial Predation
Angel of Serenity
Annihilating Fire
Aquus Steed
Archon of the Triumvirate
Archweaver
Armada Wurm
Armory Guard
Ash Zealot
Assassin's Strike
Auger Spree
Avenging Arrow
Axebane Guardian
Axebane Stag
Azorius Arrester
Azorius Charm
Azorius Guildgate
Azorius Justiciar
Azorius Keyrune
Azor's Elocutors
Batterhorn
Bazaar Krovod
Bellows Lizard
Blistercoil Weird
Bloodfray Giant
Brushstrider
Call of the Conclave
Carnival Hellsteed
Catacomb Slug
Centaur Healer
Centaur's Herald
Chaos Imps
Chorus of Might
Chromatic Lantern
Chronic Flooding
Civic Saber
Cobblebrute
Codex Shredder
Collective Blessing
Common Bond
Concordia Pegasus
Coursers' Accord
Crosstown Courier
Cryptborn Horror
Daggerdrome Imp
Dark Revenant
Dead Reveler
Deadbridge Goliath
Deathrite Shaman
Death's Presence
Detention Sphere
Deviant Glee
Doorkeeper
Dramatic Rescue
Dreadbore
Dreg Mangler
Drudge Beetle
Druid's Deliverance
Dryad Militant
Essence Backlash
Ethereal Armor
Explosive Impact
Eyes in the Skies
Faerie Impostor
Fall of the Gavel
Fencing Ace
Frostburn Weird
Gatecreeper Vine
Gobbling Ooze
Goblin Electromancer
Goblin Rally
Golgari Charm
Golgari Guildgate
Golgari Keyrune
Golgari Longlegs
Gore-House Chainwalker
Grim Roustabout
Grove of the Guardian
Growing Ranks
Guttersnipe
Hellhole Flailer
Horncaller's Chant
Hover Barrier
Hussar Patrol
Hypersonic Dragon
Inaction Injunction
Isperia, Supreme Judge
Isperia's Skywatch
Izzet Guildgate
Izzet Keyrune
Jarad, Golgari Lich Lord
Jarad's Orders
Keening Apparition
Knightly Valor
Korozda Guildmage
Korozda Monitor
Launch Party
Lobber Crew
Lotleth Troll
Lyev Skyknight
Mana Bloom
Martial Law
Mercurial Chemister
Minotaur Aggressor
Necropolis Regent
New Prahv Guildmage
Niv-Mizzet, Dracogenius
Ogre Jailbreaker
Pack Rat
Perilous Shadow
Phantom General
Precinct Captain
Psychic Spiral
Pursuit of Flight
Pyroconvergence
Racecourse Fury
Rakdos Cackler
Rakdos Charm
Rakdos Guildgate
Rakdos Keyrune
Rakdos Ragemutt
Rakdos Ringleader
Rakdos Shred-Freak
Rakdos's Return
Righteous Authority
Risen Sanctuary
Rogue's Passage
Rootborn Defenses
Rubbleback Rhino
Runewing
Savage Surge
Search Warrant
Security Blockade
Selesnya Charm
Selesnya Guildgate
Selesnya Keyrune
Selesnya Sentry
Seller of Songbirds
Sewer Shambler
Shrieking Affliction
Skull Rend
Skyline Predator
Skymark Roc
Slime Molding
Slitherhead
Sluiceway Scorpion
Soul Tithe
Soulsworn Spirit
Spawn of Rix Maadi
Sphinx's Revelation
Splatter Thug
Stab Wound
Stealer of Secrets
Stonefare Crocodile
Street Sweeper
Sundering Growth
Sunspire Griffin
Supreme Verdict
Survey the Wreckage
Swift Justice
Tavern Swindler
Tenement Crasher
Terrus Wurm
Thoughtflare
Thrill-Kill Assassin
Towering Indrik
Trained Caracal
Transguild Promenade
Treasured Find
Trestle Troll
Trostani, Selesnya's Voice
Trostani's Judgment
Ultimate Price
Underworld Connections
Urban Burgeoning
Utvara Hellkite
Vassal Soul
Viashino Racketeer
Vitu-Ghazi Guildmage
Voidwielder
Volatile Rig
Vraska the Unseen
Wayfaring Temple
Wild Beastmaster
Worldspine Wurm
Zanikev Locust
2013-01-06 16:41:52 +00:00
anthonycalosa@gmail.com 5c0a69ea54 Merge AVR, M13, PC2 card primitives to MTG.txt
284 cards merged:

Abundant Growth
Aggravate
Ajani, Caller of the Pride
Ajani's Sunstriker
Alchemist's Apprentice
Alchemist's Refuge
Amass the Components
Angel of Glory's Rise
Angel's Tomb
Angelic Armaments
Appetite for Brains
Arcane Melee
Archaeomancer
Archwing Dragon
Arctic Aven
Attended Knight
Avacyn, Angel of Hope
Baleful Strix
Banners Raised
Battle Hymn
Battleflight Eagle
Beetleback Chief
Bladed Bracers
Blood Artist
Blood Reckoning
Bloodflow Connoisseur
Bloodhunter Bat
Bond Beetle
Boundless Realms
Bower Passage
Brindle Shoat
Bruna, Light of Alabaster
Builder's Blessing
Butcher Ghoul
Call to Serve
Captain of the Mists
Captain's Call
Cathars' Crusade
Cathedral of War
Cathedral Sanctifier
Chandra's Fury
Chronomaton
Cleaver Riot
Cloudshift
Commander's Authority
Human Token
Conjurer's Closet
Corpse Traders
Cower in Fear
Craterhoof Behemoth
Craterize
Crimson Muckwader
Crippling Blight
Crippling Chill
Crusader of Odric
Cursebreak
Dangerous Wager
Deadeye Navigator
Death Wind
Defang
Defy Death
Demonic Rising
Demonic Taskmaster
Demonlord of Ashmouth
Desolate Lighthouse
Devout Chaplain
Diabolic Revelation
Diregraf Escort
Disciple of Bolas
Downpour
Dragon Hatchling
Dragonlair Spider
Dread Slaver
Dreadwaters
Dreampod Druid
Driver of the Dead
Druid's Familiar
Druids' Repository
Duskmantle Prowler
Duty-Bound Dead
Eaten by Spiders
Elderscale Wurm
Elgaud Shieldmate
Emancipation Angel
Encrust
Essence Harvest
Evernight Shade
Exquisite Blood
Faerie Invaders
Faith's Reward
Falkenrath Exterminator
Farbog Explorer
Favorable Winds
Fervent Cathar
Fettergeist
Firewing Phoenix
Flames of the Firebrand
Flinthoof Boar
Fungal Sprouting
Gallows at Willow Hill
Spirit Token
Galvanic Alchemist
Geist Snatch
Geist Trappers
Ghostform
Ghostly Flicker
Ghostly Touch
Ghoulflesh
Goblin Battle Jester
Goldnight Commander
Goldnight Redeemer
Grave Exchange
Griffin Protector
Griselbrand
Grounded
Gryff Vanguard
Guardian Lions
Guise of Fire
Hanweir Lancer
Harbor Bandit
Harvester of Souls
Haunted Guardian
Havengul Skaab
Havengul Vampire
Healer of the Pride
Heirs of Stromkirk
Hellion Crucible
Herald of War
Holy Justiciar
Homicidal Seclusion
Hound of Griselbrand
Howlgeist
Human Frailty
Hunted Ghoul
Hydrosurge
Illusory Angel
Into the Void
Jace's Phantasm
Kessig Malcontents
Knight of Glory
Knight of Infamy
Krenko, Mob Boss
Krenko's Command
Krond the Dawn-Clad
Kruin Striker
Latch Seeker
Leap of Faith
Lightning Mauler
Lightning Prowess
Liliana of the Dark Realms
Liliana's Shade
Maalfeld Twins
Mad Prophet
Magmaquake
Malicious Intent
Mark of the Vampire
Marrow Bats
Mass Appeal
Mass Mutiny
Master of the Pearl Trident
Mental Agony
Midnight Duelist
Midvast Protector
Mind Sculpt
Mist Raven
Moonlight Geist
Moonsilver Spear
Moorland Inquisitor
Murder
Mwonvuli Beast Tracker
Narstad Scrapper
Natural End
Nearheath Pilgrim
Necrobite
Nefarox, Overlord of Grixis
Nephalia Smuggler
Nettle Swine
Nightshade Peddler
Otherworld Atlas
Pathbreaker Wurm
Pillar of Flame
Polluted Dead
Predator's Gambit
Preyseizer Dragon
Primal Huntbeast
Prized Elephant
Public Execution
Raging Poltergeist
Ranger's Path
Reckless Brute
Renegade Demon
Restoration Angel
Riders of Gavony
Righteous Blow
Ring of Evos Isle
Ring of Kalonia
Ring of Thune
Ring of Valkas
Ring of Xathrid
Riot Ringleader
Roaring Primadox
Rotcrown Ghoul
Rummaging Goblin
Rush of Blood
Sai of the Shinobi
Sakashima's Student
Sands of Delirium
Scalding Devil
Scrapskin Drake
Scroll of Avacyn
Scroll of Griselbrand
Searchlight Geist
Searing Spear
Sentinel Spider
Seraph of Dawn
Seraph Sanctuary
Serpent's Gift
Servant of Nefarox
Sheltering Word
Show of Valor
Silverblade Paladin
Slayers' Stronghold
Slumbering Dragon
Smelt
Snare the Skies
Somberwald Vigilante
Soul of the Harvest
Soulcage Fiend
Spectral Gateguards
Spectral Prison
Spiked Baloth
Spirit Away
Staff of Nin
Stern Mentor
Stonewright
Sublime Archangel
Talrand, Sky Summoner
Talrand's Invocation
Tamiyo, the Moon Sage
Tandem Lookout
Terrifying Presence
Thatcher Revolt
Thraben Valiant
Thragtusk
Thundermaw Hellkite
Tibalt, the Fiend-Blooded
Timberland Guide
Timberpack Wolf
Tormentor's Trident
Touch of the Eternal
Trading Post
Treacherous Pit-Dweller
Tricks of the Trade
Triumph of Cruelty
Triumph of Ferocity
Trusted Forcemage
Ulvenwald Tracker
Uncanny Speed
Undead Executioner
Unhallowed Pact
Veilborn Ghoul
Vela the Night-Clad
Vessel of Endless Rest
Vigilante Justice
Vile Rebirth
Voice of the Provinces
Void Stalker
Vorstclaw
Wandering Wolf
War Falcon
Warclamp Mastiff
Watercourser
Wild Defiance
Wild Guess
Wingcrafter
Wolfir Avenger
Wolfir Silverheart
Worldfire
Xathrid Gorgon
Yeva, Nature's Herald
Yeva's Forcemage
Yew Spirit
Zealous Conscripts
Zealous Strike
2013-01-06 09:30:29 +00:00
anthonycalosa@gmail.com 747eec8692 Chill of Foreboding type change to sorcery
Scourge of the Nobilis ability fix 1/0
2013-01-05 15:36:31 +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
omegablast2002@yahoo.com 2fa626b80e adding more strings to translation 2013-01-05 00:38:12 +00:00
Xawotihs@gmail.com 1049f90aa2 Fixed simultaneous access to the card DB. 2013-01-02 16:15:52 +00:00
omegablast2002@yahoo.com a3017c215f corrected the translation of the phase names string in guiphasebar 2013-01-01 02:00:34 +00:00
omegablast2002@yahoo.com ad50ce1d48 added a few items to translate on card gui. names and text should now correctly translate in trophy room and shop. 2012-12-31 16:17:38 +00:00
anthonycalosa@gmail.com 153203fba6 adjust alignment 2012-12-29 14:31:28 +00:00
anthonycalosa@gmail.com 780afb6e0c added missing damagecount reset for opponent. this should fix odcount this turn value 2012-12-29 14:25:49 +00:00
anthonycalosa@gmail.com 0ebb151a66 fix some flip cards:
Ichiga, Who Topples Oaks
Cunning Bandit
Garruk the Veil-Cursed
Homura's Essence
Rune-Tail's Essence
Rampaging Werewolf
2012-12-29 09:14:45 +00:00
anthonycalosa@gmail.com 0b1a88e3d7 Added unsupported cards from PC2, M13, RTR. 2012-12-29 03:21:51 +00:00
anthonycalosa@gmail.com 1ad4948594 Updated unsupported.txt, added unsupported cards from AVR.txt. 2012-12-29 01:20:23 +00:00
anthonycalosa@gmail.com 227cfc93f1 fix rarities for CMD, M11, ME4, PD2 2012-12-28 17:47:08 +00:00
anthonycalosa@gmail.com d9ec37e096 RTR rarities correction 2012-12-28 17:00:02 +00:00
anthonycalosa@gmail.com fd1becf59c added RTR dat 2012-12-28 16:51:25 +00:00
anthonycalosa@gmail.com b3195d6111 Added RTR primitives, fix rarities in M12/_cards.dat, fix primitives/PC2.txt 2012-12-28 16:45:18 +00:00
anthonycalosa@gmail.com 755a43bb2a fix AVR, M13 codes and added some cards 2012-12-28 15:52:28 +00:00
anthonycalosa@gmail.com 08a7df0f19 fix M13/_cards.dat and fix M13 codes 2012-12-28 15:08:21 +00:00
anthonycalosa@gmail.com 02a7a7670a fix NPH/_cards.dat 2012-12-28 14:28:19 +00:00
anthonycalosa@gmail.com 2aae7d2c17 fix MBS/_cards.dat 2012-12-28 14:17:07 +00:00
anthonycalosa@gmail.com 35d32ff8fe fix AVR/_cards.dat and ISD/_cards.dat 2012-12-28 13:51:43 +00:00
anthonycalosa@gmail.com 05b775f50e Fix ISD/_cards.dat
change Séance to Seance
2012-12-28 13:38:23 +00:00
anthonycalosa@gmail.com 76efffb295 fix DKA/_cards.dat 2012-12-28 12:40:57 +00:00
anthonycalosa@gmail.com fa5da87a98 revised primitives/mtg.txt.
-kevlahnota
Issue: 914,920,921
2012-12-28 10:00:23 +00:00
omegablast2002@yahoo.com 238cd124ae corrected the spelling of evolve. thanks kf1 2012-12-27 21:07:20 +00:00
Xawotihs@gmail.com 123a6aa21f Fixed remote hash retrieval 2012-12-26 18:14:27 +00:00
omegablast2002@yahoo.com 651d0b4623 added gatecrash "evole" mechanic.
auto=evole
2012-12-24 16:19:32 +00:00
omegablast2002@yahoo.com 2b4df1cc68 corrected helix pennicle to include a set of extra brackets wrapping the restriction. 2012-11-27 02:47:04 +00:00
omegablast2002@yahoo.com 4ad4689603 allowing restriction to also search for
restriction{{ }} incases where we will have squiqqly brackets in a tc.

this corrects the bug where helix pennicle restricted trigger was not triggering.
2012-11-27 02:45:01 +00:00
omegablast2002@yahoo.com a87377b25a fixed an error in the reseting of setToughness, kind of a dumb error on my part because i was originally the coder :P
a creatures life and toughness are tied together, if you do not change both then the creature lives on.
2012-11-27 01:53:41 +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
punkeduard@gmail.com 8ac44677b8 Removed wild defiance, druids repository, abundant growth 2012-10-07 05:55:40 +00:00
punkeduard@gmail.com a60a8af2b0 Primitives bug fixes 2012-09-24 02:49:32 +00:00
punkeduard@gmail.com e809190a82 Added izzet vs golgari duel decks, updates some primitives and bug fixing in cards 2012-09-22 15:55:27 +00:00
punkeduard@gmail.com 901abd688a Fixed Yeva, Nature's Herald and Yeva's forcemage 2012-09-03 00:24:13 +00:00
omegablast2002@yahoo.com ad055ad0b7 missed this file 2012-08-26 08:10:15 +00:00
omegablast2002@yahoo.com 3b447135fb fixed soulbond and testsuite issue, fixed crash from combohint not being int'ed to some AIStats(which are considered "human" 2012-08-26 08:08:36 +00:00
wagic.the.homebrew@gmail.com 7583e61510 remove non ascii characters from ZipFS 2012-08-26 06:07:48 +00:00
wagic.the.homebrew@gmail.com 8035d0f3fc Remove non ascii characters from WFont 2012-08-26 06:06:32 +00:00
omegablast2002@yahoo.com 38cdec5126 corrected a issue with "eachother" tag in adyanmic class...the damager should be the target to take into account triggers and deathtouch...thanks dopple. 2012-08-25 00:38:59 +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 f5403b0e03 softcoded the final basilisk.... 2012-08-25 00:25:29 +00:00
omegablast2002@yahoo.com a42c6b00a8 changed farmstead to softcode. 2012-08-25 00:07:47 +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 63ea7f88e2 soft coded kudzu. 2012-08-24 23:52:17 +00:00
omegablast2002@yahoo.com 0b89f0571e corrected elder cather code. 2012-08-24 23:43:15 +00:00
omegablast2002@yahoo.com 0f5754c75a many reported issue tracker bugs fixed. 2012-08-24 01:32:06 +00:00
omegablast2002@yahoo.com 101582e37e increased life delta bonus to 10k, it seems the general consensus is people think it is bugged becuase they dont gain over 500 points from it. after seeing multiple people reporting it I think it would be best to increase the bonus just to avoid confusion. 2012-08-24 00:24:26 +00:00
omegablast2002@yahoo.com fffe739ec1 setting Tc->targetter to Null on countByCanTarget() the functions that call this don't care about protection, it is used to find a number of objects which are considered valid even with protections to the source. thanks Dopple for finding this bug. 2012-08-23 23:24:55 +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
rolzad73@gmail.com 6d4e677711 * Stopped Android version from completely destroying/recreating SDLActivity when the device is locked.
Fixes multiple identical issue entries in tracker:
issue 696 (was marked fixed then restarted)
issue 876, issue 886, issue 894
2012-08-19 16:19:56 +00:00
punkeduard@gmail.com 4c74ae06fd Fixes on AVR, M13, mtg, bug reports on the forums, another try on the rings 2012-08-11 04:00:22 +00:00
punkeduard@gmail.com db2d3b895e Bug fixes for m13 reported in the forums
mark of the vampire, dragon hatchling, Ranger's Path
2012-08-05 22:05:00 +00:00
punkeduard@gmail.com 51a6ac54f4 Several bug fixes, this cards are not working 100% correcly: will be removed if not fixed soon Ulvenwald Tracker,Wild Defiance, Thatcher Revolt, Spectral Prison, Druids' Repository, Abundant Growth 2012-08-05 20:26:40 +00:00
punkeduard@gmail.com 1454550a7b Thraben Heretic, Fyndhorn Pollen, knight of glory card code fixes 2012-07-26 02:30:59 +00:00
omegablast2002@yahoo.com c85d07f890 tweaks to ai use of cast order, we had instance where "land" would get an over-ride and not cast. 2012-07-25 12:10:25 +00:00
punkeduard@gmail.com 23e4002a9a reverted the rings 2012-07-25 03:11:07 +00:00
punkeduard@gmail.com e38582a89a Fixes to the five rings, mana cost knight of glory 2012-07-25 02:29:38 +00:00
omegablast2002@yahoo.com cf5a6f9059 fix to my fix, commited the wrong version of it :) 2012-07-24 11:02:29 +00:00
omegablast2002@yahoo.com bbf1de5134 fix for may menus not stacking if multi cards with may effects come into play at the same time.
although I tested this fix, it will require extremely indepth testing which I can not do alone to ensure that doing this does not screw up something else.
I think however that we are safe, becuase we test the same condition under test destroy and gameobserver update without any negitive recourse.
2012-07-23 22:44:02 +00:00
omegablast2002@yahoo.com ecdc1481b0 added grade crappy to M13, pc2, avr, to exclude them from 99% support, until they are corrected, verified, and completely working, then combined with MTG.txt where they belong. already started receiving bug reports for cards in these. 2012-07-21 19:49:09 +00:00
punkeduard@gmail.com b3d28744c4 Bug fixes in cards from avr and m13
hellion crubicle, Archwing Dragon, Defy Death, Otherworld Atlas
2012-07-21 18:14:31 +00:00
omegablast2002@yahoo.com 6172a0ade6 the rules txt change for soulbond. 2012-07-16 15:00:32 +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
omegablast2002@yahoo.com 7024d195fa never got around to commiting this deck, have a couple others also. this deck show cases ai's ability to counterspell. 2012-07-15 23:12:01 +00:00
punkeduard@gmail.com 591b1535a6 Fixed Agility, Chlorophant. Fixed typos in Auriok Windwalker, Akki Underminer, Brass Squire, Cabal Slaver, Kor Outfitter,Pillar Tombs of Aku in 'battefield', added burning vengeance. 2012-07-14 16:44:19 +00:00
punkeduard@gmail.com e29f95cb6c Added Avacyn Restored, Wagic 13 and Plancechase 2 primitives, each in separate text files, TODO merge into mtg, test more extensive and fix bugs. 2012-07-14 16:24:36 +00:00
punkeduard@gmail.com 973a835181 Adding Wagic 13 and Planechase 2 Folders and _cards.dat to the sets 2012-07-14 16:06:02 +00:00
Xawotihs@gmail.com a8492b7c5a Fixed compilation with mingwin 2012-06-01 23:36:18 +00:00
Xawotihs@gmail.com 6dafc098cb and again 2012-05-20 14:18:24 +00:00
Xawotihs@gmail.com f87a81f7ea Fixed meego changelog 2012-05-20 14:08:57 +00:00
Xawotihs@gmail.com e14ec67a84 Updated meego changelog 2012-05-19 20:52:00 +00:00
Xawotihs@gmail.com 4540499b38 and again 2012-05-19 19:40:32 +00:00
Xawotihs@gmail.com c10b5ce220 and again 2012-05-19 19:35:23 +00:00
Xawotihs@gmail.com 298231add1 and again 2012-05-19 19:30:20 +00:00
Xawotihs@gmail.com 113e5ba2b4 Fixed format of the maemo changelog 2012-05-19 19:25:35 +00:00
Xawotihs@gmail.com f9795661b8 Updated maemo changelog 2012-05-19 19:20:02 +00:00
Xawotihs@gmail.com a5195409c4 Added automatic generation of maemo and meego debian changelog based on the new version tools 2012-05-14 21:41:21 +00:00
Xawotihs@gmail.com d37f44724b Revert previous commit, it does not do what I want. 2012-05-13 20:34:56 +00:00
Xawotihs@gmail.com 0d5e8e39c5 Activated revision property 2012-05-13 19:53:37 +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 baf4b3b8da correction for the removal of main types when building a CD for share!types! targetchooser. 2012-05-06 18:21:24 +00:00
omegablast2002@yahoo.com 71183d23b6 cosmetic bug fix issue854
adjusted the calculation of x for enstack attackers to avoid drawing cards on top of the phase wheel out outside of the red box. adjusted the red box length for uniformity.
the previous calculation only drew cards to the middle of the screen and after about 15 attackers it pushed cards out of the red box, over on top of the phase wheel making it impossible to click or touch requiring alternative methods to advance to damage phase or reduction of the amount of attackers.

the new calculation draws attackers at the start of the red box keeping the enstack a cardwidth and a half from the edge of the screen on both sides instead instacking massive amounts of attackers tighter inside the red box, much how we handle battlefield enstack...attacking with more then 40 creatures no longer pushes attackers off screen.
2012-05-06 09:14:45 +00:00
omegablast2002@yahoo.com fcf3685800 removed boon reflection, a life gain trigger that resolves to gain life...is not equal to "gain twice as much" it much makes it infinite. 2012-05-05 21:24:17 +00:00
omegablast2002@yahoo.com 0503be97ba added a check for uppercase x in manacost, when i added specific cost comparing value == "x" instead of 'x' fudged up some of the x cards which had x in caps. thanks for catching kevlahnota! 2012-05-05 15:23:28 +00:00
omegablast2002@yahoo.com 7b140987cf more card code fixes from the forum reports now... 2012-05-05 11:39:54 +00:00
omegablast2002@yahoo.com 7169df14c8 several card code fixes from the issues reports. 2012-05-05 11:25:10 +00:00
omegablast2002@yahoo.com 0c9bf6938b Sensei Golden-Tail corrected, thanks kevlahnota 2012-05-02 13:06:43 +00:00
omegablast2002@yahoo.com 30b7133862 updated venser. 2012-05-02 13:01:10 +00:00
omegablast2002@yahoo.com e67e2e669c fix for emblems not sticking, and phasealter not testDestroying. 2012-05-02 12:58:39 +00:00
omegablast2002@yahoo.com ec7a8d219f updated test to match new card code. 2012-05-02 12:19:20 +00:00
omegablast2002@yahoo.com b0ab33be82 fix for flip cards changing name after a transforms ability...
I remember adding that patchwork fix a long time ago, not sure if whatever it fixed was even really an issue or just a overprotective line i added. either way if it was an issue, addType is what should re-add the name, not transformer ability.
2012-05-01 15:52:16 +00:00
omegablast2002@yahoo.com 50059e0b89 fix for eachother dynamicability 2012-04-30 12:51:11 +00:00
punkeduard@gmail.com 76a2b94ace Added name and corrected lands rarity 2012-04-30 03:08:44 +00:00
punkeduard@gmail.com 592915eece Added metadata, corrected AVR lands rarity 2012-04-30 00:09:42 +00:00
punkeduard@gmail.com ff336c431d Added two sets folders and their _cards.dat
AVR Avacyn Restored
VVK Venser vs Koth
2012-04-29 17:33:35 +00:00
omegablast2002@yahoo.com 0a7c21abef Bloodhusk Ritualist cost was wrong 2012-04-29 14:02:46 +00:00
omegablast2002@yahoo.com 6687c1408f akki underminer code change 2012-04-27 20:08:36 +00:00
omegablast2002@yahoo.com 5d73feaaf3 various card code optimizations based on kevlahnota versions, thanks kevlahnota! 2012-04-27 19:45:07 +00:00
omegablast2002@yahoo.com 5a85c9f330 a series of card code bugs fixed, thanks dopple 2012-04-27 13:20:07 +00:00
omegablast2002@yahoo.com bd4baff4a5 updated Painful Quandary and corrected black cat 2012-04-26 19:39:00 +00:00
omegablast2002@yahoo.com fcc55bee8c fixed "bad line" errors 2012-04-26 11:45:10 +00:00
omegablast2002@yahoo.com 8441870bed eternity vessal text= added 2012-04-26 10:59:48 +00:00
omegablast2002@yahoo.com 3485132449 many many card code fixes report on forum...no more "sleep coding" doc!!!! 2012-04-26 10:38:20 +00:00
techdragon.nguyen@gmail.com 28901491ac update to build.xml to allow incrementing of major, minor and point releases 2012-04-24 18:07:29 +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
omegablast2002@yahoo.com 3dd5a28865 eldrazi miscode fixed, thanks kevlahnota 2012-04-19 13:48:49 +00:00
omegablast2002@yahoo.com e38fa36243 various card code fixes from bugs reported on forum. 2012-04-19 12:44:56 +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 e447a9c48d tied core file name to applicationCode value stored in AndroidManifest.xml 2012-04-18 14:45: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 f80127dff3 modified Android build to allow between a DEBUG vs RELEASE build of the native code. When doing an ndk build run the following to do a release build 'DEBUG=RELEASE ndk-build' 2012-04-17 11:24:02 +00:00
techdragon.nguyen@gmail.com 7711badc39 changed logging statements to debug instead of verbose. This should reduce the number of messages coming to the screen 2012-04-17 04:16:15 +00:00
techdragon.nguyen@gmail.com 8090d98dd0 adding other required files for latest sdk ant builds 2012-04-15 14:24:18 +00:00
techdragon.nguyen@gmail.com 190b5b82c1 deprecating need for build.properties in favor of ant.properties 2012-04-15 14:22:28 +00:00
techdragon.nguyen@gmail.com aea30129dd fixed iOS ad sizing 2012-04-15 14:17:45 +00:00
techdragon.nguyen@gmail.com f75314394f updating version to 0.18.3 2012-04-15 14:13:08 +00:00
Xawotihs@gmail.com 2acdf55548 Fixed compilation on Windows with gcc 2012-04-15 11:51:18 +00:00
solo81@web.de dcb8385a68 Fixed Falkenrath Aristocrat and Ghost Quarter 2012-04-14 18:43:53 +00:00
Xawotihs@gmail.com 817fb21171 Removed SDL binding on volume keys so that hardware volume keys can be used to configure the volume. 2012-04-14 18:10:33 +00:00
Xawotihs@gmail.com ec50690a3b Removed exception on string index when strings have never been set. 2012-04-14 17:20:20 +00:00
solo81@web.de ae90a4ba61 Refactored the code of all spells which let you do sth with opponent manually (like looking at opponent's hand or choosing certain cards there to let them be discarded).
They now target a player. This means they cannot be casted anymore on a player who cannot be targeted, like for the case he controls a card like True Believer.
2012-04-13 21:17:13 +00:00
solo81@web.de ceea925b93 Fixed and optimized Dark Supplicant.
This fixes issue807.
2012-04-13 12:05:16 +00:00
omegablast2002@yahoo.com b0482fa952 removed spell blast alias, it is now soft coded. 2012-04-13 11:38:28 +00:00
solo81@web.de 88e6c1852b Fixed Venser, the Sojourner.
Fixed issue826.

Fixed issue831.
2012-04-13 11:36:56 +00:00
omegablast2002@yahoo.com bdce487c2c fixed a crash in transforms( 2012-04-13 10:22:08 +00:00
solo81@web.de 38688b5b73 Fixed Releckless Spite, Wicked Pact and Ashes to Ashes.
This fixes issue830.
2012-04-13 10:05:38 +00:00
techdragon.nguyen@gmail.com 473e8cd356 making target and min sdk equal 2012-04-13 01:07:26 +00:00
solo81@web.de d84c11f4ba Fixed meltdown
Removed an erratic doppelganger of Garruk Wildspeaker from primitives.

Removed Mungha Wurm (cannot work as it should right now).
2012-04-12 17:30:03 +00:00
techdragon.nguyen@gmail.com 405df8bd15 refactored gesture recognition for iOS 2012-04-12 11:53:42 +00:00
omegablast2002@yahoo.com 41ccf2e3d9 updated soulbright fire kin code. 2012-04-12 11:47:50 +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 34ee0a82ac fixed issues 832 and 774 2012-04-12 11:07:31 +00:00
techdragon.nguyen@gmail.com d4e4e3b251 fixed a logic error in determining the default location of user/system folders. 2012-04-12 02:28:18 +00:00
techdragon.nguyen@gmail.com 0db0cb15f9 added a default value for mount points 2012-04-11 22:31:19 +00:00
omegablast2002@yahoo.com 7cd88b83dc demigod of revenge missing "then" in if then ability. 2012-04-11 16:50:22 +00:00
omegablast2002@yahoo.com ae3cd0d5fb making ifthenability fail a little more gracefully. 2012-04-11 16:46:57 +00:00
techdragon.nguyen@gmail.com 8f11b6ec45 updated core file to 0182 for Android build 2012-04-11 10:59:03 +00:00
techdragon.nguyen@gmail.com b90b4ae50b updated core file download name 2012-04-11 10:10:01 +00:00
solo81@web.de 7af1e727e1 Fixed Bant Sojourners & Decree of Justice
Fixed Winds of Change

Fixed Gravespawn Sovereign

Fixed Primal Cocoon

Fixed Evolution Vat

Fixed Chimeric Mass

Fixed Elgaud Inquisitor (card.dat)

Fixed Iona, Teferi's Moat, Utopia Sprawl and Zombie Boa.



Added Nomad Mythmaker

Added Prismatic Strands

Added Mist of Stagnation
2012-04-10 23:35:06 +00:00
techdragon.nguyen@gmail.com e8427452cd incremented build number to 0.18.2 2012-04-09 14:37:24 +00:00
techdragon.nguyen@gmail.com f9a638143b fixed HollowHenge Spirit card definition. 2012-04-09 13:14:15 +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 a3848e06f4 fix for that stupid bug where cards get added randomly while quickly going through your collection by pressing cards quickly.
basically if the last tap was less then .05 don't automatically register it as "addremovecard".
2012-04-07 14:13:00 +00:00
omegablast2002@yahoo.com 596aa2b92e corrected animal boneyard, updated consume spirit. 2012-04-07 05:18:04 +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 e4d6f83191 taught ai if the effect of a ability$! spell is good or bad. 2012-04-06 11:01:48 +00:00
omegablast2002@yahoo.com a514bf6ba0 just adding a few abilities words to ais "badabilities" vector.... 2012-04-06 10:10:18 +00:00
techdragon.nguyen@gmail.com 5a191e5a0c fixed parsing error in mtg.txt
Please double check this is how this card (Kor Outfitter) is supposed to be coded.
2012-04-05 16:21:14 +00:00
solo81@web.de d55b96f1c8 Fixed Phantasmal Sphere. 2012-04-05 15:00:19 +00:00
solo81@web.de d94dd6fff0 - Add/Optimized 11 cards based on the previous revision:
Call for Blood
Carrion
Corpse Lunge
Final Strike
Fling
Forge Armor
Ichor Explosion
Momentous Fall
Rite of Consumption
Surge of Strength
Worthy Cause

- Added Stunted Growth

- Fixed Specter's Shroud
2012-04-05 14:35:48 +00:00
omegablast2002@yahoo.com 6af6081cca removed the exploit fix i added to prevent people from using the games esc menu to avoid doing negative effects from abilitiesmenu. 2012-04-05 13:57:36 +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
solo81@web.de 5c67985c45 Added 28 cards.
Card List --> First Comment
2012-04-02 18:24:39 +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 26fba2d7aa fix for the manaability filter crash. 2012-03-31 18:29:29 +00:00
omegablast2002@yahoo.com 81a8183322 we dont care if it is the current or ->next when checking casted(...we just care about it being cast 2012-03-28 19:02:54 +00:00
techdragon.nguyen@gmail.com 1c43f84b01 fixed Midnight Guard, mistakenly had flash and flying 2012-03-28 11:47:18 +00:00
omegablast2002@yahoo.com 13d979a7ac maxcast on curses was being prematurely testDestroyed because isInPlay() returned that the player was not in play :) 2012-03-28 11:39:03 +00:00
omegablast2002@yahoo.com 3b4e8cf27a Drana, Kalastria Bloodchief code change 2012-03-27 13:59:34 +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 252fe216d4 fire at will corrected 2012-03-27 13:55:34 +00:00
omegablast2002@yahoo.com 33f87b4c58 Circle of Flame fix thanks appleinanorange 2012-03-27 13:48:55 +00:00
omegablast2002@yahoo.com df38e3977c fixed flip cards not gaining basicabilities of their counterpart cards. 2012-03-26 22:57:32 +00:00
solo81@web.de ca4eb2e0fb Added/optimized 25 cards based on rev4347.
Added 16 cards we just found while scanning unsupported.txt.
##Vengevine is one of them##

Several card fixes.
2012-03-26 22:54:08 +00:00
omegablast2002@yahoo.com 7e308adba9 updated and(( and updated Phyrexian Unlife. added missing "emblem" keywords to emblem abilities. 2012-03-26 13:53: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
techdragon.nguyen@gmail.com 08b6975300 refactoring change for http://code.google.com/p/wagic/source/detail?r=4364 to ensure bounds for n is always met. 2012-03-25 23:43:59 +00:00
omegablast2002@yahoo.com 5e34cf8bb2 fixed a bug where proliferate menus stopped working, fixed a bug where damage would be considered redirected after killing a planeswalker, fixed a bug intruduced with recent changes to text rendering that made my text message ability stop working, added a lose and win text to abilities which only contained a 1 sided win. 2012-03-25 21:49:13 +00:00
omegablast2002@yahoo.com bf88bee58a fixed a crash that would occur when hugging the bottem edge of a menu with one option example: auto=choice sacrifice 2012-03-25 19:39:10 +00:00
solo81@web.de 142fcef4c4 Added 211 cards based on rev4331.
AI is able now to make simple decisions like "Chosen Discard", "Chosen Sacrifice" and so on. This leads to a massive card package which contains many powerful and much beloved cards like the Eldrazi creatures:

[card]
name=Kozilek, Butcher of Truth
autostack=draw:4 controller
autograveyard=moveTo(ownerlibrary) && shuffle
auto=@combat(attacking) source(this):name(Annihilate) ability$!name(sacrifice 4 permanents) notatarget(<4>*|mybattlefield) sacrifice!$ opponent
text=When you cast Kozilek, Butcher of Truth, draw four cards. -- Annihilator 4 (Whenever this creature attacks, defending player sacrifices four permanents.) -- When Kozilek is put into a graveyard from anywhere, its owner shuffles his or her graveyard into his or her library.
mana={10}
type=Legendary Creature
subtype=Eldrazi
power=12
toughness=12
[/card]

Tests will follow.

Card list in the first comment. Have fun!
2012-03-25 16:38:52 +00:00
omegablast2002@yahoo.com 5c340a2fb5 made it even more specific to the exploit, when you open the option menu while abilitiesmenu is open for the purpose of canceling then undo last action. 2012-03-25 11:47:17 +00:00
omegablast2002@yahoo.com a2ca6ce26b treating the esc menu as "undo" when used while an abilitiesmenu is open and waiting for selection. this prevents people from using the games menu as an exploit to avoid having to do negative effects to themselves or thier cards. you either do it or we can repeat this forever :) 2012-03-25 11:40:43 +00:00
omegablast2002@yahoo.com 59bedf0f07 commented out the drawing of a line across the screen,
reasons behind this are as follows:
1:separation of the battlefields is already incredibly clear by the huge gap between the center...
2:a line drawn on battlefield that represents the seperation is something that should be handled outside of the engine, in the actual battlefield graphic.
3:on hires screens this line stands out like a sore thumb.
4:the line is draw on top level above the cards making it stand out even worse when you have a battle going. as well as cutting over the top of the cards in displayed hand view.

over all the battlefield looks cleaner.
2012-03-25 10:36:06 +00:00
omegablast2002@yahoo.com 1879767bb8 fixed sorins abilities. 2012-03-25 09:21:17 +00:00
techdragon.nguyen@gmail.com 773e852b83 this should resolve the issues with scrolling lists. I modified the height of the menu a little bit (-10px) because on larger menus, the bottom of the menu blended into the dark shadows of the screen. This small height change makes the bottom of the menu more visible. 2012-03-25 05:01:43 +00:00
techdragon.nguyen@gmail.com c8007e7179 recalculated height of menu items previous calculation did not take into scaling of the text 2012-03-24 06:48:02 +00:00
techdragon.nguyen@gmail.com 14bdc0fd08 fixed initial state bug with buttons in game shop. 2012-03-24 06:47:01 +00:00
wagic.the.homebrew 7a18996bee reinstate font scale backup in SimpleButton, to fix the bug I introduced recently. 2012-03-24 02:47:14 +00:00
omegablast2002@yahoo.com 41e608785f removed the dead code which was moved up in previous commit. it is actually just that, dead code, moving it up reintruduces bleeding in menus. 2012-03-23 23:31:54 +00:00
techdragon.nguyen@gmail.com 4f2ad781c0 fixed dead code. I'm assuming this was actually what was meant 2012-03-23 22:43:33 +00:00
techdragon.nguyen@gmail.com 218db9d844 improved scrolling of simple menus. Now you can scroll up as well as down by activating the area above/below the menu items
removed the buttons when displaying the filter menus.
2012-03-23 13:17:13 +00:00
techdragon.nguyen@gmail.com 5ab2b607f2 captured Seance 2012-03-23 05:01:18 +00:00
techdragon.nguyen@gmail.com 3185fae806 updated supported card list for 0181 2012-03-23 04:49:59 +00:00
techdragon.nguyen@gmail.com 30f9146aee updated code to handle flip cards
Also handles special character cards. ( ie Call of the Herd (Card of the Herd) )
*** Not sure why the title is repeated in some of these.
2012-03-23 04:34:19 +00:00
techdragon.nguyen@gmail.com 58b532f0d6 modified to handle some non-printable characters 2012-03-23 02:57:16 +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
omegablast2002@yahoo.com 26239cdc91 moved the scale reset outside of the if statement, this is to fix a bug where hovering over the last item cause other text items as well as "cancel" to enlarge. 2012-03-22 13:26:09 +00:00
techdragon.nguyen@gmail.com 9102f15309 first draft of tool to generate autocards for Wagic consumption 2012-03-22 09:12:53 +00:00
Xawotihs@gmail.com 2a3f998034 Fixed compilation problem with gcc 2012-03-21 21:59:18 +00:00
wagic.the.homebrew bdec6c6b7d Additional scaling issues fixes + bug fix by Zeth in SimpleMenu 2012-03-21 14:58:53 +00:00
wagic.the.homebrew a581d1bba3 - Fixed some scaling issues with SimpleMenu
- Fixed the animation for the menu fonts when selecting an item in the menu. mTargetScale and mScale in SimpleButton are here for a reason, people! 
-- Note: I'm not sure I actually like the "zoom on currently selected item" thing, not sure it brings much.
-- we should definitely consider a hi resolution font because now it really doesn't look good, when it is scaled that much

Why is the subtypes menu using a different font from all other simpleMenus ?
2012-03-21 14:44:23 +00:00
wagic.the.homebrew 3ba22cd615 Changes to Deck Editor:
- Removed one "stats" button as well as the "menu" button. The goal is to let the screen "breathe" and show cards as much as possible.
-- Removing the "menu" button is also in line with all other screens of the game, where that button never appears.
- With the same goal, the "XXX of XXX cards" text is now displayed only when scrolling
2012-03-21 14:41:38 +00:00
omegablast2002@yahoo.com f33fe0298e unsigned int from float warning treated as error fix. 2012-03-21 11:28:43 +00:00
Xawotihs@gmail.com cb8af6d6c0 - modified gameOver to be protected and defined two new operations to do the same thing (didWin and setLoser)
- removed ACTION_LOGGING_TESTING code
- Fixed AIvsAI games multithreaded games
- Activated undo when testsuite is enable
- Defined an initial player comparison operator
- Fixed multi-threaded modification to subtypes
- Fixed gameTurn cleanup for gameObserver reuse
2012-03-20 23:10:05 +00:00
techdragon.nguyen@gmail.com 865bc7e494 resolved scrolling issue (Issue 801) in filters list. it's a little verbose, but it seems to work. need to see if we can't refactor CheckUserInput to reduce the amount of code duplication. The logic for SimpleMenu is slightly different from the base method. perhaps we should override CheckUserInput to take in two parameters instead of one. 2012-03-20 23:07:21 +00:00
omegablast2002@yahoo.com 18c0868d88 readjusted some of the values for simplemenu, deckmenu still requires "princess fingertips", but the others have their spacing back and font size back. 2012-03-20 16:27:14 +00:00
omegablast2002@yahoo.com 3c0620422e updated Melira, Sylvok Outcast, she now correctly interacts with persist 2012-03-20 12:23:01 +00:00
omegablast2002@yahoo.com 48e5608803 added a new method to use countershroud to create a globel shroud by targetchooser...auto=countershroud(-1/-1)creature|mybattlefield...like this.... 2012-03-20 12:21:03 +00:00
wagic.the.homebrew 2ddf1d36da - bump android to 0.18.1
- Fix Android compilation issues:
-- Fix Android API level to 9 (was incorrectly set to 11)
-- remove incorrect "@override" flag
2012-03-20 12:18:07 +00:00
techdragon.nguyen@gmail.com 57627849a0 modified font size of text in menus.
Adjusted the spacing between menu items on all menus. They were a little too far apart once I modified the font size.
fixed Hollowhenge Spirit
2012-03-20 08:35:38 +00:00
Xawotihs@gmail.com 37856c7742 Removed compilation warnings 2012-03-19 19:54:17 +00:00
omegablast2002@yahoo.com 9564250179 added targetedplayer as a who for most abilities and token reciever..
adjusted the way cardsacrificed events were sent

added a ability which is a way to tell a targeted player, yourself, or opponent to do a set of abilities.
ability$! EFFECT _ EFFECT !$ WHO 
the idea here is that the abilities are being added to the targeted players game...so 
target(player) ability$!target(<2>*|myhand) reject!$ targetedplayer

this line tells the player to discard 2 cards...

you can also use it without targeting by using WHO words..
controller, owner, targetcontroller, opponent, targetedplayer

this ability defualts to opponent.

cards coming soon...
2012-03-18 15:57:35 +00:00
solo81@web.de 0c9aa8647b Added a missing input for _tests.txt. 2012-03-18 10:23:12 +00:00
solo81@web.de d0ee96e1a2 + Removed Elbrus, the Binding
+ Updated unsupported.txt.

+ Fixed Elbrus, the Binding Blade
+ Fixed several cards with flashback
+ Fixed Garruk Wildspeaker's once more
+ Fixed Painsmith 


+ Added Arcum's Sleigh
+ Added Elsewhere Flask
+ Added Runetail, Kitsune Ascendant
2012-03-18 10:14:34 +00:00
techdragon.nguyen@gmail.com ca7312c48c updated card lists for v0.181 2012-03-17 13:29:21 +00:00
techdragon.nguyen@gmail.com 33a86f4c44 updated Version number to 0181 2012-03-16 16:50:12 +00:00
omegablast2002@yahoo.com 10e8e8b033 fixed garruks name in card dat, it was causing a crash when he would trigger his flip 2012-03-16 14:24:47 +00:00
solo81@web.de 31c891f01c Fixed Yuan Shao (horsemanship was missing).
Fixed Goblin Warrens (allowed you to sacrifice any type of creature, should only be goblins).
2012-03-15 18:21:51 +00:00
omegablast2002@yahoo.com 0b1ca551ce fixed garruks mana cost. 2012-03-15 15:49:51 +00:00
omegablast2002@yahoo.com 0c7a3388a2 recoded curses and a ton of other cards to be more inline with mtg rules.
if it saids "target a player, do blah to all the blah in that players ZONE" then you *have* to target it.
there is still some odd cases where i could not update thier code, either becuase i missed them of the support is not fully there to use targeting in thier cases.
2012-03-15 06:20:44 +00:00
omegablast2002@yahoo.com a497ef49c8 added support for doubling cube, recoded the curses to follow the rules better, with the exception of 1 which can not quite be supported
Curse of Oblivion moved back to unsupported.
added support for targeting a zone by targeting a player...
any time you have targeted a player, you can access items in thier zones by using 
targetedpersonsZONE
targetedpersonsbattlefield for example...
added "targetedplayer" as a targetchooser and who.
added "mycurses" targetchooser.
added "targetedcurses" word variable.
2012-03-15 06:18:08 +00:00
solo81@web.de d7cef8398f Fixed Contaminated Ground. 2012-03-14 22:58:48 +00:00
solo81@web.de 453a7678ca Fixed Concerted Effort and Minion of Leshrac. 2012-03-14 20:57:12 +00:00
Xawotihs@gmail.com 3f40dbc0b4 Removed crash occuring with linux .directory hidden files 2012-03-14 20:34:34 +00:00
omegablast2002@yahoo.com 94c1236322 recoded urza's lands and of empire set to use "if then else" ability. 2012-03-14 12:09:32 +00:00
omegablast2002@yahoo.com 1c28ee3d4d fixed issues with "else" support in ifthen. 2012-03-14 11:41:39 +00:00
omegablast2002@yahoo.com 9c1fcacd1f psp comp fix. 2012-03-14 10:52:14 +00:00
solo81@web.de 2028319743 Added 222 cards based on the latest additions by Zethfox.
I never have been so excited about a card commit than this.

WE GOT PLANESWALKERS! And they couldn't work any better!

This card package contains a gigantic amount of the most powerful cards of Magic (Time Walk, Mana Crypt, Vendilion Clique, Mystical Tutor, Meditate, etc.)

Card list below.

Tests will follow.
2012-03-13 23:08:03 +00:00
solo81@web.de 164f3fa340 Changed two tests so they work under the last changes. 2012-03-13 18:49:23 +00:00
omegablast2002@yahoo.com 22ca8f5043 not sure if it effects anything but i changed a letter in the includes by accident. 2012-03-13 18:26:30 +00:00
omegablast2002@yahoo.com ce982db6b5 this is the new rules.txt which adds the planeswalkers rules. 2012-03-13 17:59:06 +00:00
omegablast2002@yahoo.com 0210ecf28c ok this is the last commit but i had massive issues after chopping it all up, hopefully it doesn't hilight everything that was already commited...if it does i apologize my own patch started giving me conflicts....
im like 7 tries into commiting this part....
2012-03-13 17:54:24 +00:00
omegablast2002@yahoo.com b20b75df33 this patch focuses on giving wagic a more defined turn structure. 2012-03-13 16:48:48 +00:00
omegablast2002@yahoo.com 39e8bd1f30 in this commit i added a creature subtype specific vector, added a couple variables for new abilities, and a sort for the creature variable to avoid the long lag out everytime we play a card or ability that needs this vector. 2012-03-13 16:32:26 +00:00
omegablast2002@yahoo.com 97bd418aac in this commit, if we move a card from the library to the library then we were intending on placing that card on top of the library.
taught ai when not to play a planeswalker, told ai to look for planeswalkers as a card type to play.
fixed a crash related to tokens and cardgui..tokens dont have models....
made a 1 line change to deckveiwer that makes it usable on touch devices and improves the overall look and feel of deckveiwer....
2012-03-13 16:20:19 +00:00
omegablast2002@yahoo.com eb8c0c54f1 in this commit suspend now states the amount of turns in the menutext....
made changes to some of the simple menu items, made the simple menu not draw massive horizontal and vertical poles, that look was extremely dated.
2012-03-13 16:12:00 +00:00
omegablast2002@yahoo.com 0a357e7eb0 first part of a series of commits, this one adds "and((" support to the various card removel abilities, tweaks targetedplayer targetchooser, and adds the following number word variables...
counter{}
so you can get a count of a certain counter on a card
the next consist of parts using the same targetchooser method as type:
power:
toughness:
convertedcost:
followed by ---
highest:
lowest:
followed by targetchooser
blah:mybattlefield
so if i want highest converted cost of creatures i control..
convertedcost:highest:creature:mybattlefield

also added an internal ability to reuse and display flying text with a string passed to it.
2012-03-13 15:35:43 +00:00
omegablast2002@yahoo.com 0d5439fb64 aphetto valture code fixed, also updated scythe of the wreched code. 2012-03-06 17:54:51 +00:00
omegablast2002@yahoo.com d86ad4ce81 elder cathar code changed 2012-03-06 12:01:38 +00:00
punkeduard@gmail.com df10eb834c Updated several bugs reported in the forums 2012-03-06 03:33:06 +00:00
techdragon.nguyen@gmail.com 336462eecb reverted accidental change to CARDS_DIPSLAYED 2012-03-01 10:31:35 +00:00
techdragon.nguyen@gmail.com 7482fa811c reverted default card path to /mnt/sdcard/Wagic 2012-03-01 03:41:51 +00:00
techdragon.nguyen@gmail.com 15b99acdfb fixed some character encoding warnings 2012-03-01 03:38:12 +00:00
techdragon.nguyen@gmail.com 6124280f24 added a prefernces screen to handle media card selection on Android devices. Contains actual fix for 4297.
Added a place marker to allow volume change during app.  Right now it's either loud or off.  There isn't a way to allow the volume to gradually go up and odwn based on the values set in settings.
2012-03-01 03:24:34 +00:00
solo81@web.de 8b8020134d Fixed
Bounteous Kirin
Ondu Giant
Jaddi Lifestrider
Nightsoil
Feral Thallid
2012-02-28 22:19:13 +00:00
techdragon.nguyen@gmail.com 0b6756164a fixed bug in booster display where swiping right or pressing JGE_BTN_PRI (Square) would bring up a new set of cards to buy from. 2012-02-28 14:17:19 +00:00
punkeduard@gmail.com cfc0e9a6ed Fixed some bugs reported in the forums 2012-02-25 15:19:06 +00:00
techdragon.nguyen@gmail.com fc08b2cfa3 modified buttons for touch interfaces. The help screen has been modified to have all PSP button information removed. The layout of the buttons have been moved as has the size of the buttons. 2012-02-23 16:24:06 +00:00
techdragon.nguyen@gmail.com 6c6bf623ff turned off debug fps display on iOS platform. 2012-02-23 16:19:22 +00:00
techdragon.nguyen@gmail.com 42cdd27e0b fixed music bug for Momir and Random game types. The functions that determined if a file existed did not handle errors properly. Instead it would return an empty string which when appended to the base path would always return true. Thus a non-existent file would always be treated as if it existed. The guards I put in test for empty strings before continuing evaluation. I may have been a little judicious in the places where I put the gaurds in. We can remove the guards if it turns out we don't need them in all the places. 2012-02-23 02:11:14 +00:00
techdragon.nguyen@gmail.com 3d62be4549 fixed some warnings in SoundManager 2012-02-22 08:46:18 +00:00
techdragon.nguyen@gmail.com c55632a19b allowed for overwriting of existing zip files. The existing file needs to be removed before copying new file to existing location. Otherwise an exception is flagged and nothing is done. 2012-02-22 08:37:43 +00:00
techdragon.nguyen@gmail.com f9a7317904 moved game shop buttons up by five pixels. They were a little too close to the bottom of the screen 2012-02-22 01:04:41 +00:00
techdragon.nguyen@gmail.com cecf5f8060 fixed Android issues with new onscreen buttons.
fixed some stability issue with the deck viewer.
2012-02-21 12:53:11 +00:00
techdragon.nguyen@gmail.com 641c4068d8 updated iOS modrules.xml 2012-02-20 07:33:24 +00:00
techdragon.nguyen@gmail.com 8468505f1e fixed deck name display for when "Random" player deck is chosen. 2012-02-20 07:32:14 +00:00
omegablast2002@yahoo.com 431ba4d1dd changed the targetchooser tpye to be more specific in rules txt...i can never make a mountain goat card because it will gain an unwanted {t}:add{r}.... 2012-02-19 20:05:44 +00:00
techdragon.nguyen@gmail.com fa247c7720 added the name of the selected player deck when selecting an opponent.
added deck names to screen when bringing up the menu during a match.  The deck names appear below the AI avatar and above the player avatar.
fixed a mem leak in ZipArchive.mm
2012-02-18 04:34:56 +00:00
Xawotihs@gmail.com 2a2cf70324 Fixed compilation issue with gcc 2012-02-16 20:30:53 +00:00
techdragon.nguyen@gmail.com 2e65fe02fe fixed some memory leaks found in the analyzer 2012-02-16 06:49:31 +00:00
techdragon.nguyen@gmail.com 719fb41dc2 changed FALSE/TRUE references to true/false. I think TRUE/FALSE is a windows thing only. It is causing compilation errors on iOS. 2012-02-16 06:48:51 +00:00
punkeduard@gmail.com 42421e9c89 The back side of a double faced card shouldn't have mana cost, it's CMC is always zero, but it should have a defined color 2012-02-13 17:49:32 +00:00
rodrigodemoura@gmail.com 45b4272c5e Include the Phyrexian mana display. Include more features in modrules.xml: Now is possible to change font color, Size. Include icon tag. Is possible select position to show the icon, size and where the image is stored
<item name="icon">
 <position x="0" y="25"/>
 <iconposition x="1" y="2"/> 
 <filename>menuicons.png</filename> 
 <sizeicon>5<sizeicon>
</item>
Issue: 663
2012-02-13 15:28:55 +00:00
Xawotihs@gmail.com bd1afebbea Hid Subtypes behind MTGAllCards and added a mutex to be able to use both singleton from several threads. 2012-02-12 22:20:05 +00:00
Xawotihs@gmail.com ebc4eb331f Removed modifications that should not have been part of my previous commit and were causing compilation problems. 2012-02-12 08:44:22 +00:00
punkeduard@gmail.com a9ef271e74 Fixed dark ascension _cards.dat some misspellings on the cards, added Grim Backwoods and fixed other cards like vault of the archangel (the land now taps itself as requiered) 2012-02-12 06:10:52 +00:00
Xawotihs@gmail.com c38c52c6ad Refactored audio sample playback 2012-02-11 18:20:08 +00:00
punkeduard@gmail.com d7c69f3281 fixed some bugs reported in the forums
Jolting Merfolk
Demonic Collusion
2012-02-11 06:15:29 +00:00
Xawotihs@gmail.com 84abe7c9cf Fixed compilation on linux 2012-02-08 22:00:35 +00:00
techdragon.nguyen@gmail.com 85848cfe41 resolution to issue 794. Non-classic games crashed at the completion of the game. 2012-02-06 09:07:37 +00:00
omegablast2002@yahoo.com bc8ec9a065 Orcish Settlers corrected 2012-02-06 03:20:34 +00:00
techdragon.nguyen@gmail.com c11e55a8b3 kGameIconPadsize was already defined in ActionStack.cpp. Renamed constant to avoid clash with definition in ActionStack.cpp 2012-02-06 01:40:22 +00:00
techdragon.nguyen@gmail.com 4bd74db547 constant def got removed in r4234. readded constant to satisfy PSP build 2012-02-06 01:11:22 +00:00
techdragon.nguyen@gmail.com d343b8e159 added some debug statements for JSfx.cpp
minor correction to handling download delegate removal
changed constant literals to use constant labels.  Not sure why this was changed in the first place as it didn't need to be.
2012-02-05 23:32:55 +00:00
techdragon.nguyen@gmail.com dc16ba2adb i think this should fix the psp builds. Thanks to Zeth for the help on this one. 2012-02-05 17:31:04 +00:00
techdragon.nguyen@gmail.com 37566d148d followup fixes to psp version JSFx.cpp .
Added psp JSfx.cpp to iOS project.
2012-02-05 12:30:53 +00:00
techdragon.nguyen@gmail.com 5c3baedf83 moved Wagic Version macros into a new header file so that iOS can use it.
updated iOS port to use wagic versioning macros.
2012-02-05 11:16:43 +00:00
techdragon.nguyen@gmail.com 5c293e2fbb added new method to JSoundSystem to pause music. Previously, "pause" meant kill the music and "resume" effectively restarted the music. iOS will now pause and resume appropriately
modified pc and android impls to ensure new calls are made.  These still have the same effective outcome (kill and start) until the equivalent is coded on these platforms to pause and resume the music.  
fixed bug with iOS sound effects not playing.  Forgot to assign the key to the associated music sample
2012-02-05 08:21:06 +00:00
techdragon.nguyen@gmail.com 2eec7f9a6d fixed calculation for magnitude. cut and paste error.. 2012-02-05 03:25:59 +00:00
Xawotihs@gmail.com 8e8a0d6eeb - Removed useless filter swiping interface
- Removed pointless #ifdef IOS ... it was perfectly OK before the IOS code. Basically if you don't understand the code AND if you cannot test it, you should not modify it =(
- Readded a gard against short horizontal swipe. There were removed cause there are some gards in the iOS frontend ...
- Note that all this code use non-normalized coordinates, so something should be done in this sense in the frontends...
2012-02-04 23:25:58 +00:00
techdragon.nguyen@gmail.com bbb6c15d76 removed the accented e from Seance and replaced it with the ASCII equivalent.
This should partially resolve the issue with it appearing as "Sance" ingame.  Not sure if it's possible to display accented characters in the English version
2012-02-04 22:03:48 +00:00
techdragon.nguyen@gmail.com 98ee0d70b5 fixed text for "Curse of Thirst" as reported by KF1 in forums. 2012-02-04 21:47:42 +00:00
punkeduard@gmail.com 330620db0b Fixed primitives of latest added cards, mana cost and some fixes like that 2012-02-04 20:13:50 +00:00
solo81@web.de c89967166e Added 8 cards based on revision4251.
Charmbreaker Devils
Fossil Find
Ghoulraiser
Haunted Fengraf
Make a Wish
Moldgraf Monstrosity
Tariel, Reckoner of Souls
Woodland Sleuth
2012-02-04 18:50:04 +00:00
techdragon.nguyen@gmail.com c296aa0374 fixed card def for Villagers of Estwald
removed extra "[/card]" from mtg.txt
2012-02-04 17:46:08 +00:00
wagic.the.homebrew f0ab139c1e Fix android compilation 2012-02-04 15:22:21 +00:00
wagic.the.homebrew b0532b8059 - Bump version number to 0.18
- Fix issue introduced in 0.17 with Immortal task
2012-02-04 14:28:07 +00:00
techdragon.nguyen@gmail.com 86e7a9b97f This is a very rudimentary tool to verify that the cards in mtg.txt, borderline.txt are properly defined in terms of abilities. Using the list from MTGDefinitions.cpp this script will check all the abiliites= lines and check that each ability listed is contained inside fo the list from MTGDefinitions.cpp This does a case insensitive search and only returns ability names that don't match. 2012-02-03 19:33:01 +00:00
techdragon.nguyen@gmail.com 8b6f9d6667 fixed typo for Devouring Swarm abilities; flyng vs flying 2012-02-03 19:09:58 +00:00
techdragon.nguyen@gmail.com 78c08af9f5 first run through for sound on iOS platforms. Currently works only for simulator unless the music files are extracted from the zip file onto the filesystem. 2012-02-03 11:23:27 +00:00
omegablast2002@yahoo.com 52f2435c48 elvish beserker had shroud.... 2012-02-02 09:48:38 +00:00
omegablast2002@yahoo.com 99ab44a20e added moverandom(tc) from(zone) to(zone) ability...example
moverandom(creature[green]) from(mygraveyard) to(opponentbattlefield)
example card

[card]
name=Tariel, Reckoner of Souls
auto={t}:moverandom(creature) from(opponentgraveyard) to(mybattlefield)
mana={4}{W}{B}{R}
abilities=Flying,vigilance
type=Legendary Creature
subtype=Angel
power=4
toughness=7
text=Flying, vigilance {T}: Choose a creature card at random from target opponent's graveyard. Put that card onto the battlefield under your control.
[/card]
2012-02-02 03:52:20 +00:00
techdragon.nguyen@gmail.com 228fe23e49 removed calls to ManaCost::init() as all but two are actually necessary.
moved init() from ManaCost to a private call
changed ManaPool method init() to Empty() to better represent what it does.  
renamed ManaCost::reinit to resetCosts() as reinit sounds like your are returning the ManaCost object back to initial state which is not what happens.  Only the cost related members are reset, the bool isMulti is left alone
2012-02-02 01:10:11 +00:00
omegablast2002@yahoo.com e709497f2e added interactivebutton to the make file, without it psp build was not happening.
corrected an issue by removing a constant, if you want it defined as a constant do so, however make sure when you build for psp the variable is actually still defined in the scope.
2012-02-01 19:05:20 +00:00
omegablast2002@yahoo.com 2bfc87b702 fixed a psp comp error. 2012-02-01 18:31:37 +00:00
omegablast2002@yahoo.com d615c412f1 tweaking amounts on shouldplay for multikicker. 2012-02-01 13:06:59 +00:00
omegablast2002@yahoo.com 0d223b5561 reworked some logic that was changed in last commit. 2012-02-01 12:44:11 +00:00
solo81@web.de ed30af9aab - Added DKA (120 cards).
- Added 50 cards based on rev4237-rev4242 (card list below).
  - Related on this addition, I changed the card.dat
    information of Flipping and Transforming Cards in the
    card.dat so that the flipped sides of a card are not
    shown in the shop or in the trophy room.

- Updated the card text of Contested Cliffs. It now uses the word "fight".

- Fixed issue787


Tests will follow.
2012-02-01 10:33:19 +00:00
techdragon.nguyen@gmail.com ac992675da This removes the compilation error introduced with r4237. I needed this in place to make an iOS build. 2012-02-01 04:17:30 +00:00
techdragon.nguyen@gmail.com 2f408664ad last fix for buttons only fixed the PC/SDL mouse impl. This fixes the iOS/Android platforms. iOS/Android platforms both issue a JGE_BTN_OK keypress on single tap in which the mouse version does not. that version issues the OK keypress in sync with the mouse click. 2012-02-01 00:38:02 +00:00
omegablast2002@yahoo.com 9127ddaca2 minor change to the parsing of AMover "and((" subkeyword. 2012-01-31 21:25:38 +00:00
omegablast2002@yahoo.com 4b70061dae made flip( menutext better, also readded menuobject coloring for normal menus, somewhere along the lines it was changed to not work with normal menus, which eliminated the whole point...if the red is too harsh of a color please suggest a different one. 2012-01-31 20:11:03 +00:00
omegablast2002@yahoo.com a248cb7423 added abilities=poisonshroud
"you can not get poison counters"
2012-01-31 19:41:43 +00:00
omegablast2002@yahoo.com 81c90f0440 added this( keyword variable{ word variable } ) support
auto=this(variable{lifetotal} <10) 1/1
auto=this(variable{opponentpoisoncount} >1) infect

basically allows you to compare against a word variable.
2012-01-31 19:17:51 +00:00
omegablast2002@yahoo.com e6775c0c1a added playerpoisoncount and opponentpoisoncount word variables...this was the easiest way to add support for the remaining cards which cared about poison counters. 2012-01-31 18:18:56 +00:00
omegablast2002@yahoo.com fbebcd681e added a new aihint #HINT:dontattackwith(targetchooser)
which tells the ai not to use the targetible cards as attackers, this can be card names, and CD modes.

modified the way ai handles multikicker. it will not be casting 1/1 joragas anymore :D

made WParsedInt ignore "+" signs....

added a new affinity ability...autohand=affinity(creature[vampire]|mygraveyard) ....
this is essentially affinity for creatures in your grave.

added supkeyword to clone clone addtype(zombie)....it adds the type listed to the cards types on clone...

reparse PT bonus on resolve.

reworked bushido, it should now work correctly...aside from that it now excepts word variables...fumiko is now bushido(type:creature[attacking]:battlefield/type:creature[attacking]:battlefield)

added a keyword to access acontrolsteal..the keyword is "steal"
auto=ueot steal target(creature) 

reworked persist to handle undying..added the new counter handling rules intruduced by wotc in ISD


added a vector cardsAbilities to mtgcardinstance...this keeps the abilities added to the game for a card to use stored where we can easly alter or remove them.

added an automatic increase to geteff return if the ability is a putinplay ability.

finished coding support for flip and double sided cards, though viewing the "other side" is still not possible yet.
the ability follows the mtg rules.
the ability syntax is flip(card name)...a card can flip into any other card by name...even flip into itself.

added a "canPay() call for Ninja cost...to prevent it from coming up in a menu unless you're in blockers....

added 3 new restriction types that work very similar to type(
thisturn(tc)~morethan~2
lastturn(tc)~lessthan~thisturn(tc)
compare(wordvarible)~equalto~compare(wordvarible)

these are pretty self explanitory.

moved "&&" ability parsing below "this(" allowing "this(" to grant abilities now which contain &&...enclave egologist bug is fixed by this.

fixed an issue with combatspirit link for some reason the way i was doing the bool was not always working.

took care of the todo for AProtectionFrom...you can now give a protection from(blah) in a instant or ueot ability.

added altho very limited right now a "targetedplayer" tc word. i hope to increase this with time.

as always my sidekick doc already has some cards coded for this and test will follow the addition of the cards.
2012-01-31 14:07:40 +00:00
techdragon.nguyen@gmail.com 8241295712 this seems to resolve the trophy room loop on touch/click interfaces when you exit the deck editor and other parts of the game 2012-01-31 14:07:23 +00:00
techdragon.nguyen@gmail.com b138b8e97d fixed the game shop button interactions. 2012-01-31 13:11:08 +00:00
Xawotihs@gmail.com 4762ffea87 - Fixed compilation warning in GameStateShop.cpp
- Added a call to input reset after each update in the Qt frontends to avoid strange auto-keypress
- Removed tutorial display in AI vs AI (test AI mode)
- Commit Qt project with latest buttons files
- Added a small isHuman method to the Player class
2012-01-30 21:16:33 +00:00
solo81@web.de 9f1d7c211a Fixed several bug reports posted in the forum. 2012-01-30 20:03:51 +00:00
techdragon.nguyen@gmail.com c42ba32ae7 added new buttons for shop for New Cards and displaying the card list. 2012-01-30 18:02:26 +00:00
techdragon.nguyen@gmail.com fb43b9012b sync swipe motion in deck viewer act accordingly to a swipe/pan on corresponding platform (iOS vs everything else) 2012-01-30 10:23:40 +00:00
techdragon.nguyen@gmail.com b44f3088c2 refined button placement
added SDL_CONFIG to list of conditions in which ot enable touch buttons
2012-01-30 09:23:56 +00:00
techdragon.nguyen@gmail.com 969e6ac5e6 added more buttons to deck editor to cover all the functionality. Need to remove the PSP directions from the slide-in menus 2012-01-30 04:23:11 +00:00
Xawotihs@gmail.com 28be95b401 Updated Qt frontend to latest Scroll interface 2012-01-29 22:34:55 +00:00
Xawotihs@gmail.com 4db47dcbd6 Fixed compilation warning 2012-01-29 17:20:53 +00:00
techdragon.nguyen@gmail.com 05e3c350b3 had to undo my refactoring of the menuitem classes. for some reason it broke scrolling on the opponent ai selection screens. 2012-01-29 17:01:48 +00:00
techdragon.nguyen@gmail.com efd72b8fd2 udpate to scroll signature from previous commit. 2012-01-28 02:46:13 +00:00
techdragon.nguyen@gmail.com 9faf2ffc72 reverted changes to the Scroll/OnScroll method signatures. 2012-01-27 23:47:02 +00:00
techdragon.nguyen@gmail.com 3079faeedd smoothed out the corners and adjusted coloring of the button generated text buttons for touch devices 2012-01-27 21:53:34 +00:00
Xawotihs@gmail.com b9a52ab447 Fixed compilation of the Qt frontend with latest scroll changes
fixed Qt project compilation with Mingw on Windows
2012-01-26 23:17:40 +00:00
Xawotihs@gmail.com c56d907eb5 Fixed the compilation without TOUCH_ENABLED defined. 2012-01-26 22:59:46 +00:00
techdragon.nguyen@gmail.com f935da2d31 tweak to non-touch screen representation of interactive buttons 2012-01-26 17:42:45 +00:00
techdragon.nguyen@gmail.com a438c9135e vs 2010 update for deck editor changes as well as SDL update 2012-01-26 14:54:17 +00:00
techdragon.nguyen@gmail.com 85451f69ee vs 2010 update for deck editor changes as well as SDL update 2012-01-26 14:54:07 +00:00
techdragon.nguyen@gmail.com a2179017d4 Extended Scroll() and OnScroll() to also take in magnitude as one of its parameters. magnitude is currently used in the deck editor to figure out how many cards to rotate around per swipe as function of velocity and the number of cards displayed on the screen.
fixed a compiler warning in SimplePopup in the constructor declaration
===DECK Editor changes ===
Added two touch buttons , one for "Sell Card", the other to switch between Deck and Collection.
changed swipe Left/Right to rotate card collection; removing the previous action which was to swap between deck/collection viewing

Note: GameStateDeckViewer isn't a JGuiController so can't leverage off the mButtons vector.  Thus, the buttons have to be handled by this class separately. (setButtonState, userPressedButton)
2012-01-26 13:53:03 +00:00
techdragon.nguyen@gmail.com dda048c616 forgot to check in the JGE changes from previous commit 2012-01-25 22:31:58 +00:00
techdragon.nguyen@gmail.com a36d886dd5 Added first draft of an interactive button. Needs to handle addition of images a little better
refined detailed info window for stats display
removed PSP button for Touch interfaces (currently only iOS and Android) on deck selection screens
to not break the core engine and reduce some more complex code, I created a new vector in the JController object. mButtons.  This vector will contain all the valid buttons for a given screen.  The appropriate Add/Remove methods have been updated to account for this new vector.
2012-01-25 18:35:24 +00:00
punkeduard@gmail.com 59fad775c8 Fixed some cards reported in the forums
for more details check the topic 



http://wololo.net/forum/viewtopic.php?f=4&t=3421&p=25240#p25240
2012-01-25 04:36:07 +00:00
Xawotihs@gmail.com b1cde0fae9 Updated maemo changelog 2012-01-24 23:08:06 +00:00
Xawotihs@gmail.com 186e0aec6b Fixed offline mode handling in file downloader with the QWidget based interface 2012-01-24 22:57:07 +00:00
Xawotihs@gmail.com 350b28d81f Fixed compilation warning 2012-01-23 19:37:36 +00:00
techdragon.nguyen@gmail.com 519cd3bd69 refactored DeckMenuItem to be a derived class of SimpleMenuItem. Not sure why I had made them distinct.
TODO: review DeckMenu and SimpleMenu to see if it would be better to have them derive from a base class rather than be distinct.
2012-01-23 08:39:18 +00:00
omegablast2002@yahoo.com 2b7cf505db fixed Cursed Monstrosity. 2012-01-23 08:07:26 +00:00
Xawotihs@gmail.com 4faaf371af Compilation fix for Meego 2012-01-22 22:58:05 +00:00
Xawotihs@gmail.com 4929b84ce4 Update for meego release 2012-01-22 22:46:38 +00:00
omegablast2002@yahoo.com bccb871770 fixed a couple minor card code errors reported on forum. 2012-01-22 16:49:08 +00:00
Xawotihs@gmail.com 14962385b6 Maemo application cleanup and final merge 2012-01-22 10:39:16 +00:00
Xawotihs@gmail.com 595f0b5690 Fixed issue 786. It was a complex one. Basically, the comparison function used to sort the filename map was buggy and was not returning always the same result depending if the compared elements contained uppercases or not. I just removed the uppercase part and it now works fine. 2012-01-20 22:10:32 +00:00
omegablast2002@yahoo.com 98bed484f4 fixed various card codes reported errors in bug section. 2012-01-20 12:12:12 +00:00
techdragon.nguyen@gmail.com 8dd5fe535e modified resource packager to create the modrules.xml file for iOS port
updated app delegate to download both the core and core_ios file.  Still have the version number hard coded into the app.
2012-01-19 03:38:07 +00:00
omegablast2002@yahoo.com 2af19e7c73 fixed Cyclops Gladiator types...he is not a gaint or a gladiator, he is a cyclops warrior 2012-01-17 13:03:30 +00:00
omegablast2002@yahoo.com fe6d7a6610 changed name=Kessig Wolf Run
code.
2012-01-16 21:09:41 +00:00
Xawotihs 12a431ff8c - Merged QWidget and QML Qt frontends, just define QT_WIDGET to select the QWidget one
- Coded a resource package download GUI based on QWidget
- Removed compilation warning on unused variable
- Updated Maemo desktop file to start directly the binary
- Updated .pro file
- Updated version macros to be able to compose the resource package file
- Updated QML interface for Android
- Updated QML interface to not contain the name of the resource package
- Updated the file downloader class to be able to get the resource package hash from the google code server
- Updated the file downloaded class to verify the resource package hash from the remote server at each startup to be able to perform automatic update
- Defined several JGE operation as static to clean up the wagic wrapper
2012-01-15 18:50:38 +00:00
Xawotihs 9d99309b13 Changed the resource package creation script to use "STORED" instead "DEFLATED" to work around our zip problems 2012-01-14 16:04:38 +00:00
Xawotihs a480cf2e66 Extracted Wagic versioning information so that they can be used outside of GameStateMenu.cpp 2012-01-14 12:18:16 +00:00
wagic.the.homebrew 87a332e3f1 - temporarily remove undo feature
- bump up version number to 0.17.1 in PSP/Windows/android
2012-01-14 08:42:03 +00:00
solo81@web.de 72be9778c8 Deleted both tests for River Kelpie. River Kelpie has been moved to crappy.txt. 2012-01-13 17:54:44 +00:00
omegablast2002@yahoo.com c145881eeb fix for "x" and alternative cost types. 2012-01-13 14:53:51 +00:00
techdragon.nguyen@gmail.com 5eec31659d fix for issue 780. Modified the three cases where hexproof was used instead of opponentshroud 2012-01-13 08:36:28 +00:00
techdragon.nguyen@gmail.com 00fbbae668 reverted change for r4189, as it broke functionality in codebase 2012-01-13 08:34:53 +00:00
solo81@web.de 61e39b23aa Moved River Kelpie from primitives.txt to crappy.txt.
The issues we have with River Kelpie are not solvable without a layers system.
2012-01-12 20:46:00 +00:00
solo81@web.de 0cf2e1f5c3 Fixed Lumberknot.
Fixed issue719.

Fixed issue760.

Fixed issue779.

Moved Harmonic Sliver due to a bug report back to unsupported.txt. For now, the problems occuring when playing with Harmonic Sliver are not fixable.
2012-01-12 19:57:24 +00:00
omegablast2002@yahoo.com 993612eee2 added hexproof abilities= word to point to opponentshroud, both words are now usable. 2012-01-12 14:52:00 +00:00
Xawotihs cb7f3b070f Fixed a problem when running the multithreaded testsuite with sound. 2012-01-11 20:13:24 +00:00
omegablast2002@yahoo.com f388414f3f if we have no target we are milling the sources controller in mill cost. 2012-01-11 17:20:55 +00:00
techdragon.nguyen@gmail.com 34806848f4 fixed definitions for 'Moon Heron' and 'Deranged Assistant' 2012-01-11 07:17:50 +00:00
Xawotihs d50039bb1a Added wheel mouse support to the QML app. 2012-01-10 22:18:50 +00:00
techdragon.nguyen@gmail.com bb2536512a fixed a memleak in AdWhirlConfig.m
added a TODO about a compiler warning I received that was not flagged in the code.
2012-01-10 20:21:57 +00:00
techdragon.nguyen@gmail.com adc3e4b689 final change for 0.17 to sync up with other platforms. focused targeted touch of ui objects to deck menus. 2012-01-10 19:53:10 +00:00
Xawotihs 9161136797 Revert android build file, wasn't intended to be part of the previous commit 2012-01-09 23:44:29 +00:00
Xawotihs b4c33cb3e1 Finally got issue 777
I was wrong, the recursion was not due to weird call order of WGuiList and WGuiMenu at all. It was due to two different problems:
1) there is some code in WGuiMenu to handle keys previously held. I guess it's to be able to go through the options very quickly on PSP.
2) Each PSP generated keys stays held if the corresponding code for release is not called...

=> Each time we generate some PSP keys press from gesture in the core or in a frontend, we absolutely need to generate the release code corresponding or the core might think that some keys are still held ... That's precisely what was not done by the code handling swipe in filters =).
2012-01-09 23:35:50 +00:00
Xawotihs 8517a4c9e8 Partial fix for issue 777.
Basically options are fixed on all the platforms (you can create and
select a profile for example). Regarding the filters, it works perfectly
with QML on desktop. For SDL on Android and QML on Meego, it causes
either annoying blinking letting you do what you want or some kind of
blinking deadlock. I think there is some recursion happening in the GUI
items and to be sorted.
2012-01-08 23:35:19 +00:00
techdragon.nguyen@gmail.com e79597d82c corrected x offset of selectable area of the menu items. For Simple Menus, clicking on the row from that point to 200px is the selectable area. 2012-01-08 16:38:52 +00:00
techdragon.nguyen@gmail.com 440b3b00d9 applied logic used for deck selection to popup menus as well 2012-01-08 15:32:28 +00:00
Xawotihs f9e56608dc Fixed random, cancel, random bug 2012-01-08 15:15:56 +00:00
techdragon.nguyen@gmail.com 1cef5d690b made DeckMenuItem a subclass of SimpleMenuItem
moved code to check on click position into base class from DeckMenuItem
TODO: apply same logic for standard menus
2012-01-08 14:55:22 +00:00
techdragon.nguyen@gmail.com 5ff2ac3123 removed the automatic 'OK' action after a pan and move event. I misunderstood what the Android port was doing 2012-01-08 13:49:40 +00:00
Xawotihs 9727a98e6a Fixed end of game when test AI is defined 2012-01-08 01:11:24 +00:00
Xawotihs 7730a83789 Fixed app icon on Symbian 2012-01-07 23:38:10 +00:00
Xawotihs a0019a13d0 Fixed an uppercase path potential problem 2012-01-07 21:00:37 +00:00
Xawotihs 26738af904 - implemented the swipe and touch logic in QML
- Added a SHA1 hash verification of the downloaded resource file
- Fixed the activation/deactivation of the QML UI to avoid burning the battery
2012-01-07 20:41:43 +00:00
techdragon.nguyen@gmail.com 436f95dfec fixed some click issues found with iOS port. 2012-01-07 16:35:39 +00:00
Xawotihs a28c90dacf Fixed problem introduced in r4165 preventing any platform except iOS to
select a deck.
2012-01-07 10:22:39 +00:00
Xawotihs d9625ed034 - Moved the resource URL inside the QML app
- Updated local path for all the platforms
- Fixed local path creation problem on Linux
2012-01-06 23:54:57 +00:00
Xawotihs 1f3aedcd3f - Reworked Qt frontend to be fully based on QML (Qtmain.cpp still contains most of the old code as I need to perform additional tests on Maemo/Meego and Linux)
- Modified the download of resources to happen on every platform
- Resources are now stored based on the home directory
2012-01-06 21:45:08 +00:00
techdragon.nguyen@gmail.com 6d5342c02b fixed a memory leaks in app delegate
* adjusted the touch sensitivity of the iOS port for deck menu selection.  Decks were being selected even though the selection was touched.  It was highlighted but as soon as you let go it would instantly select (OK button) select the selected deck.  This isn't a problem on Android as the SDL already handles this as far as I can tell.  I limited this to only iOS so I don't accidentally mess up the other ports.
2012-01-06 19:13:43 +00:00
techdragon.nguyen@gmail.com 1bd8c860c5 preliminary native touch interface for interrupting spell. Touch the icons for each action 2012-01-05 12:05:17 +00:00
techdragon.nguyen@gmail.com 29009902b0 finishing up some file system handling functions for iOS. This should make updates and file management easier for iOS users. 2012-01-05 09:29:53 +00:00
techdragon.nguyen@gmail.com f09ce07b06 modified to create a Manifest file before game loads. This is for iOS only as the file handling will be difficult, I am doing this as a way to identify what is already loaded onto the device. 2012-01-05 01:11:49 +00:00
techdragon.nguyen@gmail.com b03449cbf6 Implemented directional controls on Filters so that you can now navigate the Filters menu on Touch interfaces for the Deck Editor and Shop screens. It's not the best implementation but it at least works across all platforms. swipe will now move the highlighted cursor to the correct direction.
in release builds, test suite will now be disabled
2012-01-03 17:53:51 +00:00
techdragon.nguyen@gmail.com 51d1873872 removed nonstandard handling to use JGE::Scroll method. This removes the filter screen support that was added as part of the previous check in. 2012-01-03 14:29:46 +00:00
techdragon.nguyen@gmail.com 6adffc12f0 Issue 565: This fixes the issue with the MENU not popping up ingame. The bug was caused when user canceled out of a deck selection screen to either go back to the Player Deck Selection or Main Menu. The buffer was not cleared properly. added call to reset buffer in GameStateDuel to follow pattern used in GameStateDeckViewer. 2012-01-03 14:05:43 +00:00
techdragon.nguyen@gmail.com 4674f34246 attempt to add swipe up/down/left/right for movement in deck editor and other screens. still causes some bugs on shop and filter screens. 2012-01-03 12:51:09 +00:00
techdragon.nguyen@gmail.com 086cefd75c removed key bindings tab for IOS 2012-01-03 12:49:51 +00:00
techdragon.nguyen@gmail.com fa63e635ae updated Supported Card list for 0.17
had to modify the Miki syntax to Wiki.  Didn't realize they were different, hence the different versions.
2012-01-03 05:27:15 +00:00
techdragon.nguyen@gmail.com 8b29665aa9 fixed HTML generated list for supported cards; closing outfile before finished writing to it 2012-01-03 04:00:07 +00:00
techdragon.nguyen@gmail.com 616bbdb1b6 updated unsupported card list 2012-01-02 06:06:48 +00:00
techdragon.nguyen@gmail.com 07a08faa89 updated supported cards list (need to paste this into the MIKI). Since the todo list was removed, the output for the todo cards is empty 2012-01-02 05:52:00 +00:00
techdragon.nguyen@gmail.com 8f5ebc8109 Modified system path defaults to utilize the User vs Res architecture. After reading some comments of the forum I realized I had implemented this all according to 0.16's design and not the new split architecture. All 'core_' zip files are now placed under 'Res' as before, but any other zip file will be put under the 'User' directory 2012-01-02 05:32:22 +00:00
techdragon.nguyen@gmail.com bf4e6b6884 modified default modrules for iOS
modified download URL for core files to googlecode
2011-12-31 17:44:13 +00:00
techdragon.nguyen@gmail.com 217bc910b6 modified python script to build standard or ios resource packages.
Usage: createResourcezip.py [--platform=[ios,android]]

Currently only iOS is the only other platform supported.  android, maemo, meego, etc will need to be added if core files are different from standard core files
2011-12-31 17:36:59 +00:00
techdragon.nguyen@gmail.com c515837172 On iOS the user only has access to the Documents directory via iTunes. Our folder structure is setup as such to read from the Res directory. This change allows users to drop in zip files into the Documents folder and the game will automatically move the zip file into the Res folder on app startup. Note, this is only done on app startup. If the game is running in the background, the user will need to quit the app ( kill it via the multithreaded task bar) and restart it.
Jailbroken devices have full access to the filesystem and don't have this restriction.  although I do recommend that they do drop zip files into the Documents directory to reduce the risk of causing any undefined behavior with updating the config files while the game runs.
2011-12-31 15:02:37 +00:00
omegablast2002@yahoo.com 460be7854a tweaked an ai change i made, found some lands (ie:cloudpost) are not considered either good or "dontknow" so they fall into lottery chance, all land that isn't considered good should fall under "dontknow" not lottery.... 2011-12-31 14:31:39 +00:00
techdragon.nguyen@gmail.com 2882724638 fixed compiler warnings found on Windows build 2011-12-31 14:31:35 +00:00
techdragon.nguyen@gmail.com dfa007cecb implemented platform independant clickable OK button on gui combat window when selecting blocker order. removed iOS specific coding. 2011-12-31 08:21:00 +00:00
wagic.the.homebrew f93246c75c - Android version now downloads the googlecode file 2011-12-31 03:39:37 +00:00
techdragon.nguyen@gmail.com c88ed95c95 enabled touch code for handling choosign blockers on touch interface.
TODO:  Please have somebody test on non-Touch device.  I don't have one anymore.  If it breaks it let me know and I'll make it a compile time option.  Seems to work with 2 and 3 blockers.  I couldn't get the game to get 4 blockers on the screen, but I think it should work the same.  This should be cross platform and not iOS specific
2011-12-30 23:42:13 +00:00
techdragon.nguyen@gmail.com e102d3f369 enabled OK button on GuiCombat screen when choosing defenders/attackers. iOS solution only currently. To implement in Android, we need to create a mask/invisible button above the OK button coordinates and add a listener to activate when a user touches the appropriate area. Not ideal, but it works for now.
TODO:  translate functionality into core of engine.
2011-12-30 16:04:21 +00:00
omegablast2002@yahoo.com 7fef90f943 added Undead Alchemist to unsupported.txt 2011-12-30 05:39:56 +00:00
Xawotihs e17b75cf34 Updated Qt frontend to download resource package directly from google code and cleaned up the transition between the QML and Wagic interfaces 2011-12-29 23:42:20 +00:00
Xawotihs 8d6566da0f Renamed the resource package to core_017.zip and added a renaming of settings and player options.orig.txt 2011-12-29 22:28:13 +00:00
Xawotihs 02b04e6524 Adds a python script to create the resource zip package 2011-12-29 21:28:45 +00:00
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
omegablast2002@yahoo.com 311c280427 removed undead alchemist. 2011-12-29 16:42:19 +00:00
wagic.the.homebrew 506952e2da - made Filedescriptors pool a compile-time option. This should fix some issues found in previous revision 2011-12-29 13:15:44 +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
guzhenjie1@gmail.com 9e80314f6d Removed the blank space in the end of Crosis, the Purger. 2011-12-25 12:57:11 +00:00
omegablast2002@yahoo.com b2a5ee774c corrected the card cycles that were using a loophole to use " may pay(", re-add Rupture Spire, corrected a couple badline errors. 2011-12-25 01:09:02 +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
Xawotihs e5417319b8 - Android port fixes for the Qt frontend
- Coded a small resource downloader in QML from the Qt frontend. It's completly useless for the moment and it's poorly integrated
- Various tweaking in the Qt project file for Symbian and Android
2011-12-20 23:11:27 +00:00
Xawotihs c74f22dae3 Adds a small class to download files from the Qt frontend 2011-12-20 22:37:32 +00:00
punkeduard@gmail.com 3803d126bc Added mystical teachings, this card is so awesome 2011-12-20 06:27:39 +00:00
omegablast2002@yahoo.com 16072233ee changed quillspike test to use a creature with -1/-1 counters on it. quillspike was corrected a few revs back but test was written for the incorrectly coded quillspike. 2011-12-20 01:46:27 +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
techdragon.nguyen@gmail.com 0a19a61ea6 removed double tap gesture recognizer
added some helper methods to reduce code duplication. 
added a magnitude calculation method.  not currently used but possibly in the future..
2011-12-18 15:59:21 +00:00
jean.chalard 07582eca45 Switch the default linux target to qt.
The old X11 version can still be built with make x11.
If this breaks some use cases, please tell me - it's hard to
predict. My minimal testing seems to indicate it works, and
make does the heavy lifting for us.
2011-12-18 12:40:47 +00:00
jean.chalard d1a30f10a5 Add a rule to generate the qt Makefile 2011-12-18 12:15:50 +00:00
jean.chalard 3e12180bad Small cleanup
- Remove an unused variable
- Fix the coding system
- Remove trailing whitespace
2011-12-18 12:00:14 +00:00
jean.chalard d93fdb2d4a Fix the Linux build. 2011-12-18 09:40:35 +00:00
jean.chalard 7264d6f0e2 Fix the build for Linux 2011-12-18 09:25:45 +00:00
punkeduard@gmail.com 316d9b2c0d Added Ajani vs Nicole Bolas Dual deck series
fixed some primitives and updated unsupported.txt
2011-12-17 23:47:08 +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 3bfb68f96c modified touch interface to be a little more fluid on iOS 2011-12-16 11:09:40 +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 9733444320 adding missing binary for google admob SDK 2011-12-15 17:21:56 +00:00
techdragon.nguyen@gmail.com cab7a2a09f updated provisioning profile definitions 2011-12-15 11:30:47 +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 9c10f47daa adding adNetwork SDKs for AdWhirl and AdMob 2011-12-15 11:18:37 +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
punkeduard@gmail.com f9016f70ab Fixed some primitives
Updated unsupported.txt
Added the following undergraded cards:

Brutal Nightstalker
Dauthi Mindripper
Disciple of Griselbrand
Disciple of Griselbrand
Dying Wail
Ghost-Lit Stalker
Ghastly Discovery
Haunted Cadaver
Helm of the Ghastlord
Mindstab Thrull
Needle Specter
Sadistic Hypnotist
Shrieking Grotesque
Shrine of Limitless Power
Silent Specter
Soldier of Fortune
Splitting Headache
Trapfinder's Trick
2011-12-14 19:54:16 +00:00
techdragon.nguyen@gmail.com 8550b70e2e fixed issue with crashes on devices that only support openGL 1.1 2011-12-13 22:28:16 +00:00
omegablast2002@yahoo.com 8b7ae968a5 fixed Varchild's Crusader 2011-12-13 20:52:40 +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
techdragon.nguyen@gmail.com db664e2836 added some error handling for downloading core files. app will display a message if an error has occurred while downloading and then retry the download after user dismisses the alert.
TODO;  replace string literals with constants or static NSString objects.
2011-12-12 12:24:12 +00:00
punkeduard@gmail.com 59b1c8167e Fixed some primitives, changed Baru fist of kosa in _cards.dat
Updated the unsupported.txt file to reflect the 2 card afari added some days ago

Added some undergraded cards (crappy as not chosen discard)

Augur of Skulls
Bog Down
Brain Weevil
Cao Cao, Lord of Wei
Compulsive Research
Consult the Necrosages 
Cunning Advisor
Elder Mastery
Esper Charm
Funeral Charm
Mournwhelk
Piracy Charm
Tendrils of Despair
Three Tragedies
Unburden
Unnerve
Voices from the Void
Waking Nightmare
Wit's End
2011-12-12 04:21:22 +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
techdragon.nguyen@gmail.com f8f5c24304 reverted accidental change to modrules.xml
added missing appdelegate chagnes for previous changes.(iOS only)
removed system copy of bundled Res folder with app deployment (iOS only)
2011-12-11 10:04:55 +00:00
techdragon.nguyen@gmail.com e58f96afad fixed iPad splash screen issues. fixed memory leak 2011-12-11 09:12:44 +00:00
techdragon.nguyen@gmail.com 128c60bc2b added download feature for iOS port
required libs: 
    * ZipArchive - Obj-C impl of zip
    * asi-http-request : http request help to assist with asynchoronous downloading of files
    * minizip : support for ZipArchive
    * 
Added default splash screen for iOS app.  (using the Wagic background to keep it neutral to module)

TODO: refine handling for iPad splash screen
    * add selection screen and input screen for location of downloadable content. (ie core files, image files, etc )
    * add support to opt out of backing up to iCloud for core files. Right now iOS will automatically backup all files under Documents folder to iCloud.  Consider only allowing player data to be backed up to iCloud.  All graphics and other assets are considered volatile.
2011-12-11 07:40:22 +00:00
punkeduard@gmail.com 071dca6b0a Added Premium Deck Series: Graveborn _cards.dat in sets 2011-12-11 03:59:45 +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
punkeduard@gmail.com 83ac157ebd Fixed some primitives related to the latest cards added
thirst for knowledge, baru, trollhide
2011-12-10 02:12:28 +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
solo81@web.de 17e506147e Added the result of the 2nd Grand Card Safari:
After months of research, card coding and testing, i proudly present you this high-end card package.

It contains 163 new cards! I never thought to find such a massive amount of codable cards on the current card-availability level Wagic has reached now.

Some cards look like they were coded in a much too complicated way, but believe me: There is no other way to make them work.

Talking about the card code, I have to thank Zethfox alot for coding the 'transforms((,newability...))" complex, which was very very useful. THANK YOU!

Added several tests to safe the code of the cards for future changes.

I think this is the last time i will be able to add such a huge number of new cards outside of the upcoming of a new set, we have reached the outer limits of what is doable with the current code. Let's hope there will be some new some time in the future, though i have my doubts there will be anything new in that section of Wagic for a long time.

Below, you will find the card list. Some really exciting cards are hitting the Wagic scene!

I need a break...
2011-12-07 00:12:25 +00:00
punkeduard@gmail.com bf2f7f38f6 Fixed primitives:
life's finale, 
hedron crab,
Army of the Damned

made lotus cobra more user friendly reducing message boxes
2011-12-05 07:19:58 +00:00
wagic.the.homebrew 409d249051 Spanish translation update (including cards) by yomismo 2011-12-04 07:32:02 +00:00
wagic.the.homebrew 70b1879093 - [PSP] Fix for issue 768 : PSP cannot read zipped images from zipped files. This was a lowercase/uppercase issue
- [PSP] added last log message in exception log
2011-12-04 07:14:16 +00:00
punkeduard@gmail.com 524c7486f5 Fixed some cards
Pith Driller
Ruthless Invasion

Added some crappy ones

Ebony dragon
Abyssal Horror
2011-12-04 06:59:26 +00:00
omegablast2002@yahoo.com c5d0883136 fix @discarded. 2011-12-01 12:11:48 +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 104d134c1f wolfbriar elemental added green to the token... 2011-11-29 11:00:05 +00:00
solo81@web.de e880acda06 Corrected Bloodgift Demon. 2011-11-28 18:52:28 +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
punkeduard@gmail.com 5d443b9b68 Fixed some primitives
firebolt
Primal Clay
stitchers Aprentice
Typhoid Rats
Vow of Wildness
2011-11-20 02:04:00 +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
solo81@web.de e9139bedab Readded the new code for Resounding Roar and Resounding Thunder.
Their code was just fine and 100% accurate in concerns with the official rules.

The tests 'cycling2' and 'resounding_roar' occured because of a missing 'choice 0'. Now, the test suite passes.
2011-11-17 18:56:24 +00:00
wagic.the.homebrew 0061e6af01 Revert r4062, which broke the test suite 2011-11-17 13:11:24 +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 ae3d97dbeb Include missing JGE files from my last commit 2011-11-14 18:43:51 +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
solo81@web.de a821b2752d Fixed issue757. 2011-11-13 19:34:38 +00:00
wagic.the.homebrew 3ed822f33b - Automated download of resource files for Android
-- There's still lots of things to figure out: scalability of the server (can we host the files someplace else? Can we have several servers in case one of them fails?), versioning, possibility to download several mods, etc... but this is the basic functionality and should be enough for the first version.
-- The Java file should probably be split...it's close to 1000 lines now :/
2011-11-13 08:43:07 +00:00
wagic.the.homebrew fe83b6b4e8 - moved test for i718
- Added macros for Basic landcycling and cycling
2011-11-12 12:48:00 +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
wagic.the.homebrew a94e0a11cf Fixing Giant growth. This fixes the 5 failing tests from the test suite 2011-11-12 04:47:12 +00:00
solo81@web.de 9a93824539 1) Fixed issue758.
2) Finished updating cards with cycle.

3) Coded some cards with "@cycled...".

Astral Slide
Fleeting Aven
Invigorating Boon
Stoic Champion
Warped Researcher.

Tests will follow!
2011-11-09 23:08:54 +00:00
Xawotihs 8c6a0cf9ae Fixed issue 753. 2011-11-09 22:15:26 +00:00
omegablast2002@yahoo.com 3dcd85944c updated cycling cards, I cheated at this and did a replace :cycling with {cycle):draw:1 so forgive me if it screwed up a cycle card...it should be brain dead easy to fix. 2011-11-09 14:29:28 +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
omegablast2002@yahoo.com db6c4795bf removed and moved exalted test 2011-11-09 11:59:03 +00:00
omegablast2002@yahoo.com 86fb600c96 2011-11-09 11:58:21 +00:00
omegablast2002@yahoo.com ec66ecc101 fixed bug with exalted not ending if source is killed. 2011-11-09 11:56:16 +00:00
wagic.the.homebrew 1f313aa7a4 Adding test for issue 754 2011-11-08 04:04:51 +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 e4117212cb Fixed the _test references. In details:
renamed generic/triggers_at_movedto_i179.txt
removed Eradicate.txt
renamed frogmite.txt
renamed gelatinous_generations.txt
removed hope_charm_i267.txt
renamed lightmine_field1.txt
removed martial_coup.txt
removed martial_coup2.txt
renamed safe_passage.txt
renamed and fixed soul's_grace_POWERLIFEGAIN.txt
renamed thellon_of_havenwood.txt
removed tolsimir_wolfblood.txt
removed wave_of_reckoning.txt
renamed winds_of_Rath.txt
2011-11-05 17:11:17 +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
omegablast2002@yahoo.com a48011fe2c serra's avanger.... 2011-10-29 11:20:21 +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
punkeduard@gmail.com 45f09972ad Some fixes to primitives/mtg.txt
Falkenrath Marauders
Witchbane Orb
Nin, the pain artist
walking corpse
Amphin Cutthroat
Serra Avenger

added Gideon's Lawkeeper
2011-10-26 05:24:17 +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
techdragon.nguyen@gmail.com a1d278a140 updated XCode project file with new class definition 2011-10-15 18:30:12 +00:00
techdragon.nguyen@gmail.com 1018f392b3 changed shuffleTopToBottom method to use STL library to shuffle cards vector.
* This resolves a compiler warning found in XCode.

NOTE: This method is not even called in the code anywhere.  The only reference I can find is in the AladdinsLamp.fire() method, but it's commented out.  This method sounds like it should exist, but nothing is using it.  Was this not working before for Aladdin's lamp, and commented out to get it to sort of work?
2011-10-15 18:29:43 +00:00
wagic.the.homebrew 6825082d6d - Add a simple macro system for auto lines (the goal is to help mostly with repetitive card auto lines such as the ones we have in MotD mod) Check the MotD mod for examples.
-- I added an AbilityParser.cpp file, mid term goal is to move AbilityFactory there, so that MTGAbility.cpp becomes a bit less big.
-- I tried to add the file reference in Makefiles, but only tested windows compilation so far
- Fixed bugs related to "castRestriction" variables in MTGAbility. these variables were declared in both the parent and children classes, leading to bugs and duplicate code/content

The test suite passes
2011-10-15 16:19:29 +00:00
techdragon.nguyen@gmail.com 28069e980b modified iOS touch algorithm to match Android deployment. 2011-10-15 13:48:57 +00:00
wagic.the.homebrew c32a3b6aa1 Fix a memory leak in test suit player constructor 2011-10-15 02:37:11 +00:00
wagic.the.homebrew 101f2d9ece Adding Google Ads library 2011-10-15 02:06:29 +00:00
wagic.the.homebrew 512f214374 Fix Miraculous Recovery 2011-10-15 02:01:21 +00:00
Xawotihs 5777475340 Fixed a mismatch between the action produced on player click and the related action parsing 2011-10-13 21:34:30 +00:00
Xawotihs cd4c7ae085 Fixed a crash on undo on windows, and another one when you tried it before any action was done. Undo is still present in the menu even if there is nothing to undo. 2011-10-13 20:58:32 +00:00
Xawotihs 0b6044551a - Added new code for serialization/deserializaiton of full games including initial game and all the player actions.
- Added an undo menu using this code (beware, it's still very very alpha).
- Removed various warning
- Cleaned up avatar loading
- Added full random lists load/save including the deck shuffling (not sure if I could not replace that with seed load/save)
- Moved momir and Co rules configuration out of GameStateDuel
- Create a GameType type to avoid mixing int everywhere
2011-10-13 19:43:51 +00:00
rodrigodemoura@gmail.com 663058cdab Remove all _Myfirs from vectors. 2011-10-13 18:00:16 +00:00
guzhenjie1@gmail.com 71949f636d Corrected Undead Alchemist and rarity of Skaab Ruinator. 2011-10-13 14:44:32 +00:00
rodrigodemoura@gmail.com e6b199f599 Modifications to make the game more generic.
Included in a new modrules.xml tags.
 <cardgui>
   <background> Stores information concerning the colors </ background>
   <renderbig> Stores information to draw the card </ renderbig>
  <rendertinycrop> Stores information to draw the card </ rendertinycrop>
 </ cardgui>

 Change the variables array for vectors
2011-10-13 12:25:58 +00:00
guzhenjie1@gmail.com dee49728aa Removed all { } inside "name(" code in following cards:
Azorius Herald
Boros Fury-Shield
Dryad's Caress
Ogre Savant
Patagia Viper
Plaxmanta
Ribbons of Night
Rolling Spoil
Seed Spark
Steamcore Weird
Tin Street Hooligan
Vigor Mortis

Replaced all counter(1/1), counter(1/2) and counter(2/2) to counter(1/1,1), counter(1/2,1) and counter(2/2,1).
2011-10-11 12:46:43 +00:00
omegablast2002@yahoo.com 6fa016ca54 corrected my logic, for some reason i remember clearly already having moved this line, but i guess it didn't make it into the last change i did to choosecard function. THIS is what it was meant to do...
also corrected an issue with the changed logic of ALife eff return. you have to take into account that "{cost}:life:200" <---is not targeted so there is no player targeting involved with such code, making the eff return always 0 in cases where you don't have {cost}:target(player) life:200...i might need to review the eff returns to check that there are not other cases similar to this, :P my original code there was messy but took that into account. so careful with refactors in this area.
to see how this function was intended to work, try the following lines on any card

auto={t(creature|opponentbattlefield)}:life:233
auto={s(creature|mybattlefield)}:damage:4 target(player)
2011-10-11 11:14:55 +00:00
omegablast2002@yahoo.com e1620c0a5f re-added a line which was removed in r4000, when ai is forced to "chooseCard" through the effects of "choice " or "target(" and a valid target exist, we run into a lock down becuase we don't switch playerZones to the other players game after the first run of the playerZone...the TC will see that there is indeed a valid target however, since it can not target the other side it will contenue to try over and over, locking it up. 2011-10-10 14:34:55 +00:00
omegablast2002@yahoo.com e3d0ab8ba0 corrected a mistake i made with name and other manacost, I meant to erase the name from value not s this caused strange issues when a name was given to a "other" cost which contained an actual parseable mana cost inside.
do note tho, our text menues will not display "{" and "}" charectors, so its best to keep them out of "name(" anyways as they serve no purpose.
2011-10-10 14:20:50 +00:00
omegablast2002@yahoo.com 516089869d phased cards shouldn't be removed from the game by treason or the effects of unearth if they we're phased out by an effect during the turn in which they were to be destroyed. 2011-10-10 14:09:04 +00:00
omegablast2002@yahoo.com 060164acce copy function grants the source of the abilities the castMethod of "notcast" which is default, however for cards which are played, such as vesuva on "copy" it would be granted a "not_cast" as its play method, allowing players to play another card of the type that a restriction would normally prevent you from playing...this effected all cards which "copy" such as shapeshifters.
note: I do know it's as dirty as "mtgidbackup" but unfortunately I don't think there would be a simpler way to maintain it's cast method.
2011-10-10 13:41:38 +00:00
wagic.the.homebrew c17d07d476 Minor simplification of MTGRules.cpp 2011-10-10 13:27:30 +00:00
wagic.the.homebrew e17b20c9d8 Adding a test for issue 718 (vesuva land limit) 2011-10-10 12:47:58 +00:00
wagic.the.homebrew f0964d9af8 Fix issue 563 (double strike VS regenerate)
-- also made "blocked" variable a private.
2011-10-10 12:29:52 +00:00
guzhenjie1@gmail.com 9b2654997e Added ID for all double faced card.
Corrected ID and typo of following cards:
Deranged Assistant
Gatstaf Shepherd
Ludevic's Test Subject
Mirror-Mad Phantasm
2011-10-09 10:38:03 +00:00
wagic.the.homebrew 9dbe0e2a53 Adding Italian cards translation by kabir94 (don't know why I didn't notice it before) 2011-10-09 07:43:15 +00:00
techdragon.nguyen@gmail.com a33d862d4b updated XCode project to be on latest SDK
fixed a few minor warnings.
2011-10-09 07:06:32 +00:00
techdragon.nguyen@gmail.com 6f10ef8425 fixed last check in. Test suite passes. Added comments on possible null pointer exceptions.
Updated XCode project file to include AIPlayerBaka classes.
Added test suite to iOS build
2011-10-09 05:51:45 +00:00
wagic.the.homebrew 2bfe76e124 - Android: landscape only ( issue 668 )
- Android:  changed application package name ( issue 730 ) - also changed the publisherID to avoid confusion with the alpha, which is 3tied3 to org.libsdl.app
2011-10-09 04:53:21 +00:00
techdragon.nguyen@gmail.com fbe2e44814 fixed memory leak in double tap gesture
fixed some compiler warnings
removed dead and useless code
2011-10-08 00:56:07 +00:00
Xawotihs 9f09bbeec3 Removed compilation warnings. 2011-10-07 15:25:15 +00:00
Xawotihs c0c8688ede Fixed yet-another-retarded warning. 2011-10-05 21:26:40 +00:00
Xawotihs c2ad12443f Removed compilation warning 2011-10-04 20:06:59 +00:00
punkeduard@gmail.com 71bab2ba7b fixed cards:
Bloodcrazed Neonate
Greatsword
Kite Shield
Swiftfoot Boots
Pride Guardian
2011-10-04 07:20:03 +00:00
omegablast2002@yahoo.com bf42cc1922 updated rules. 2011-10-03 13:14:03 +00:00
omegablast2002@yahoo.com fe91960980 moved all basic MTG related rules out of the engine and into rules.txt.
this allows users to create a mod without having to struggle with avoiding certain phase based or cost actions.
attackrule and attacker phase can be seperated now by not including auto=attackrule in your rules.txt....this means you can still have an attackers phase, but clicking the cards won't put the cards into attacker mode or add "attacker" to thier menu abilities. ect...

this also allows us to eventaully change/add to these base rules without having to create entirely new rules for them by modifying the base classes with new variables and so on.

IMPORTANT: UPDATE YOUR RULES FOLDER, OR NOTHING WILL WORK FOR YOU.
2011-10-03 13:13:37 +00:00
Xawotihs 74f17946c9 Commented out my wonderful deserialization template for the moment as it
causes problems on Windows
2011-10-02 16:12:22 +00:00
Xawotihs 86131f7ea0 Cleande up the deserialization code 2011-10-02 14:11:30 +00:00
guzhenjie1@gmail.com 7e1566fe77 Corrected Carrion Beetles and Reveillark. 2011-10-02 11:07:15 +00:00
wagic.the.homebrew 2cabab17e2 - Fixed Skirsdag High Priest's id. This is the last fix for issue 741 2011-10-02 09:11:50 +00:00
wagic.the.homebrew 3decbe7f1d - Fix Android compilation issues
- Added a "cachesize" option (not available from the menu, but can be manually edited in players/options.txt, for example cachesize=200 means 200MB of cache). The hardcoded cache on windows/linux is 20MB, which is not enough for Hi Res cards (60 is better, 200 is great)
2011-10-02 09:05:39 +00:00
wagic.the.homebrew 9e572ee416 - Moved "game mode" types of awards outside of a code, and inside of a configuration file (rules/awards.dat). No code is required anymore to create such an award (momir, hermit basic, etc...)
- fixed compilation errors in GameObserver (windows)
2011-10-02 01:03:45 +00:00
Xawotihs 483c767492 Fix players vector (had a couple of 4 players game with the new code), added more cleanup 2011-10-01 23:49:37 +00:00
omegablast2002@yahoo.com 76a8f406ec converted the player arrays into vectors, so we can test is a player is actually there at the time we are trying to access its variables.
this fixes 2 crashes I found, the first, 2 color random mode would crash on load.
2nd, ai vs ai testing would randomly crash, this should fix that also.
I noticed 2 color random mode is now trying to search for it's rules and sometimes flashes for a brief moment "error cant read file" or something like that....I could not find the source of that, it doesn't cause it to crash however it causes it to take a sec longer to load, this is before this commit btw, so the issue is still there.
it was trying to load the rules, flashed the error then crashes...i fixed the crash but not the rules error.

please review, i might have left in useless stuff...
I also did notice something, the way we are creating players is kind of all over the place. imo this is bad, it made this conversation extra hard becuase you create one player over here, another type over there, the human over in this direction, back track and create another somewhere else...this needs to be taken into account for a refactor, all player creation should happen in the same function, and at the same times...

the reason these 2 crashes existed was becuase players were being created before "gameobserver" in some modes, and in other modes, no player would exist at the time game was creating to set the player. but we then later call the same function when we actually load the player using the method specific to a mode.

this just leads to headaches, I mean no offense, just a general observation i made when converting this players array. unfortunately that kind of refactor is just a little beyond my coding ability.
2011-10-01 21:29:22 +00:00
omegablast2002@yahoo.com 70ab70651a fixed a few bad lines in mtg.txt...doc, elvish baserker had some pretty interesting abilities. 2011-10-01 21:28:05 +00:00
Xawotihs bf37948823 Fixed shop touch/mouse support 2011-10-01 21:22:34 +00:00
omegablast2002@yahoo.com fe20ae0c24 fixed a crash when AiAction calls player->getObserver in multiclick.
important note: AiAction you always want to call "owner" becuase "player" here means single target spell has a target and the target is "player". I didn't come up with the variable name, sorry it is very confusing in this spot of the code.
2011-10-01 18:42:43 +00:00
Xawotihs 0d279cbf42 Forgot header in previous commit. 2011-10-01 17:57:31 +00:00
Xawotihs 0dc9c4e274 Fixed a leak introduced in r3976 2011-10-01 17:56:40 +00:00
Xawotihs 24df6bbb6f Fixed a crash occurring at booster purchase 2011-10-01 17:29:33 +00:00
Xawotihs daf362f736 Simplified the parsing, now the TestSuite reworks on Windows. 2011-10-01 17:07:11 +00:00
Xawotihs d47ece1202 Fixed rules parsing on Windows 2011-10-01 15:06:24 +00:00
Xawotihs b36653787e Fixed compilation problems on Window 2011-10-01 14:24:07 +00:00
Xawotihs 9adb9d625d - reworked the testsuite and the rules (storyflow) to use the same game deserialization code, moved that code to the players and zone classes
- removed every references to the gameobserver singleton. This object can now be instantiated several times as it's needed for minmax. To be able to do that, I mostly added a reference to a gameobserver from any targetable object (cards, players, spells) and abilities.
2011-10-01 13:30:30 +00:00
wagic.the.homebrew d6db0c4f63 Simplified some restriction-parsing related functions 2011-10-01 03:07:58 +00:00
solo81@web.de d7e9ee7796 Changed the code of all cards with a trigger (@...) and ":aslongas()". Example: Bloodhall Ooze.
This is its new code:
[card]
name=Bloodhall Ooze
auto=@each my upkeep restriction{type(*[black]|myBattlefield)~morethan~0}:may counter(1/1)
auto=@each my upkeep restriction{type(*[green]|myBattlefield)~morethan~0}:may counter(1/1)
text=At the beginning of your upkeep, if you control a black permanent, you may put a +1/+1 counter on Bloodhall Ooze. -- At the beginning of your upkeep, if you control a green permanent, you may put a +1/+1 counter on Bloodhall Ooze.
mana={R}
type=Creature
subtype=Ooze
power=1
toughness=1
[/card]

This new version, using one of Zeth's latest additions ("restriction{...}"), shows to be a nice improvement concerning the ingame experience: NOW, the trigger will only show up in the interruption window if the restriction is matched. In the old version, it always showed up in the restriction window whenever the trigger potentially could trigger, even if the restriction was not matched.

"restriction{}" also gives us more options in coding new cards. This is one of them:

[card]
name=Library of Alexandria
auto={T}:add{1}
auto={T}:draw:1 restriction{type(*|myhand)~equalto~7}
text={T}: Add {1} to your mana pool. -- {T}: Draw a card. Activate this ability only if you have exactly seven cards in hand.
type=Land
[/card]

A famous and powerful classic! And you can for sure only tap it to draw a card if you have 7 cards in it.


Exchanged the Multikicker test for another one. The older one was doing trouble.
2011-09-29 21:16:24 +00:00
guzhenjie1@gmail.com 4ea2446a15 Corrected Sejiri Steppe. 2011-09-29 16:26:28 +00:00
omegablast2002@yahoo.com 3e58366430 corrected "mountains" ==>" mountain" 2011-09-27 13:38:21 +00:00
omegablast2002@yahoo.com fea034281d added support for suspend x...
suspend(0)={g}{x}

cards with x in thier suspend cards will suspend for x turns...x can not be 0 as per mtg rules.
2011-09-27 01:47:08 +00:00
solo81@web.de 29e9cad492 Fixed Tetravite token. 2011-09-25 21:15:45 +00:00
solo81@web.de 28dbb4de96 Fixed One-Eyed Scarecrow. 2011-09-25 21:01:31 +00:00
omegablast2002@yahoo.com 3417799eda removed the phase restrictions enum from activatedability, it inherited this from MTGAbility, the only difference is actiavted ability had opponentturnonly listed as 69, so in some cases it would be 60 and sometimes 69, it will now always be 60 following the enum in mtgability. 2011-09-25 17:02:39 +00:00
omegablast2002@yahoo.com e2829102aa corrected the test, it was missing choice 0 to gain the life. 2011-09-25 16:57:35 +00:00
Xawotihs 35030ca2ce - Fixed buggy implementation of JGEGetTime on Qt
- cleanup up link between wheelmouse and scroll events
- added support for pause/resume
2011-09-25 14:20:55 +00:00
omegablast2002@yahoo.com e117cf82c9 just moving parserestrictions under the parsecastrestrictions...so they are together rather then an entire page apart :) no code change, it just bugged me :P 2011-09-25 13:51:33 +00:00
omegablast2002@yahoo.com 3a2264febb just changing some comments in svn... 2011-09-25 13:41:12 +00:00
omegablast2002@yahoo.com e8ea5a28d7 added a space to the parsing of who in @next and @each....this space always existed in the coding we use however i am now making it required, the reason is that now we have tool which can include tc's and "s" was finding opponent and my in the tcs effecting the triggeratphase it created. this should correct that issue. 2011-09-25 13:38:15 +00:00
omegablast2002@yahoo.com 96cbe18be0 taught ai basic extracost targeting...by basic i mean its not going to choose a token creature over its 20/20 flyer for the target of an extracost...it will target whatever it can for the cost. but atleast it can handle extra cost which are targeted now, rather then ignore them completely.
also removed a peice of aiplayer::render, that was moved into aiplayerbaka.....
2011-09-24 18:42:37 +00:00
solo81@web.de 404137b144 Added two tests for Morbid. 2011-09-24 13:34:08 +00:00
solo81@web.de df3b2a7fa6 Corrected several card ids from ISD.
Corrected Grimgrins cost and text.
2011-09-24 12:27:44 +00:00
solo81@web.de 9938e1a57c ISDs _card.dat was missing the "_". Now it works. 2011-09-23 20:11:57 +00:00
omegablast2002@yahoo.com f04a0dd338 better handling of cards with restrictions for ai. if we can't play it, then don't make it nextcardtoplay. 2011-09-23 19:48:17 +00:00
solo81@web.de 7ba6c8e85d Added Innistrad (ISD). 200 cards out of 264 were codable for now. 2011-09-23 19:12:26 +00:00
omegablast2002@yahoo.com 2bb651c5b4 fixed a crash in "white" rendering when you don't actually have the graphic for "white". 2011-09-23 19:05:10 +00:00
wagic.the.homebrew eb13d9a0f9 - Mark "equipment" abilities as good for AI (used for MotD) 2011-09-23 10:54:01 +00:00
wagic.the.homebrew fe88b747c0 - fix for ACounterTracker (this fixes the ability - it wasn't working before - as well as the memory leak)
- fix "release" build in VC++
- Let AI play creatures with ACounterTracker by making that ability a "positive" one (used for MotD)
2011-09-23 10:24:20 +00:00
wagic.the.homebrew c633dc805f - Adding "connected cards" color rendering
- Made "booster" check mod-dependent in test suite
2011-09-23 07:24:24 +00:00
wagic.the.homebrew 0b66caebf2 Fix PSP compilation issue I introduced in my previous change 2011-09-23 00:15:32 +00:00
solo81@web.de 83cdf5c151 1) Removed all "{0}" from the upcost bracket of all cards with Echo. Once it was needed to work around a bug, but now that the bug is fixed.
2) Updated all {X}-spells with x targets. They are using "prex" instead of "x" now. Their code is now completely   
following the official rules.

3) Changed the code of most cards which search your library for a land card and put it onto the battlefield tapped.
They are using "and((tap))" now. More cards will be changed to that in upcoming revisions.

4) Added 2 tests to save "prex".
2011-09-22 23:34:11 +00:00
wagic.the.homebrew f649fee465 - Minor refactor of a few files: removed some unnecessary calls, etc... 2011-09-22 10:07:05 +00:00
wagic.the.homebrew ee4c7e23bd - fixed memory leaks introduced in previous revision
- removed incorrect casts of MTGCardInstance into Spell objects.
- AI Test system now allows you to put decks in ai/bakaA and ai/bakaB instead of ai/baka. This allows to let AIPlayerBaka and AIPlayerBakaB play with specific decks
- Test suite speed improvement. Improved the card name cache. Test suite now runs in 850 seconds instead of 950 on my machine.
- minor code cleanup
2011-09-22 04:43:05 +00:00
omegablast2002@yahoo.com 997b154d46 volcanic eruption updated to use prex 2011-09-21 20:28:01 +00:00
omegablast2002@yahoo.com 4419ed4637 changed some logic for getting the pre x without shellcasting(?) spell...the variable word "prex" now returns the difference between the cards cost and the curentmanapool...giving us the value of pre x.some cards might need updating, doc can confirm it.... 2011-09-21 20:27:29 +00:00
wagic.the.homebrew 15f0143a8f AIPlayer minor tweaks:
- In order to clarify getEfficiency, started creating "getEfficiency" functions specific to each type of ability (see example with Damager). This won't reduce the file size but should make things bit clearer
- Minor cleanup of getEfficiency
- bug fixes in getEfficiency
2011-09-21 15:10:06 +00:00
omegablast2002@yahoo.com 11095f3339 added new functionality to AAMover...
you can now do 
moveto(targetzone) and((ability)) 
moveto(mybatlefield) and((transforms((zombie,black)) forever))
2011-09-21 14:06:32 +00:00
omegablast2002@yahoo.com ab7eb1b93e fixed an error in my last commit. 2011-09-21 12:37:44 +00:00
omegablast2002@yahoo.com 4dbe69dacf fixed ai mana finding which broke in previous ai changes(maybe during the split or fixing the memleak) 2011-09-21 12:12:34 +00:00
omegablast2002@yahoo.com 807e818e92 add the manapool at the end of gotpayments, only once. otherwise we get false amounts. 2011-09-21 11:07:41 +00:00
wagic.the.homebrew e9ce574bca - Fix a memory leak in AI "payTheManaCost"
- Minor fixes in AI code
- Attempt at preventing the AI from interrupting itself while it's selecting targets. I don't know why this happens, and my fix didn't work. I believe it shouldn't be possible to interrupt when there is an active targetChooser, please let me know if this is an incorrect assumption.
2011-09-21 03:54:47 +00:00
omegablast2002@yahoo.com 206f3b4d3f fixed a crash that happens in thisforeach when the matches is a negitive value. 2011-09-20 17:03:31 +00:00
wagic.the.homebrew 44d9951246 Adding a system to compare two AI implementations (AIPlayerBaka and AIPlayerBakaB). This can be used to make sure a change to the AI is not making the AI weaker, for example. 2011-09-20 11:32:24 +00:00
wagic.the.homebrew 4c45e971c6 Fix missing file (AIPlayerBakaB) 2011-09-20 03:58:12 +00:00
omegablast2002@yahoo.com e3e0233b8a changed a couple wParsed ints to assign the spell or NULL rather then relying in card to cast it as NULL. 2011-09-20 03:13:52 +00:00
wagic.the.homebrew fbfac78b09 - Split AIPlayer and AIPlayerBaka in 2 files. Moved all "AI" specific code into AIPlayerBaka, as much as possible.
-- This is a copy/paste and shouldn't have any impact on the logic. I just moved some functions from AIPlayer to AIPlayerBaka
- Added back the possibility to select a different Resource folder with file Res.txt
- Fix a crash when a token id does not exist
2011-09-20 03:06:06 +00:00
omegablast2002@yahoo.com 839d197835 fixed the memleak i introduced. 2011-09-19 20:31:36 +00:00
Xawotihs bb65d2dc12 - various compilations fixes for Symbian
- small cleanups of the TestSuite and Player classes
2011-09-19 19:49:45 +00:00
omegablast2002@yahoo.com 180462f73c bug fix for an issue with multitarget, after a multitarget ability resolves the first time, i never set the tc->done back to false, so the first card clicked will think it is done every time after the first.
setting tc->done to false after targetability resolve.
2011-09-19 11:32:11 +00:00
omegablast2002@yahoo.com e0aa60070c ifthen targeting tweak... 2011-09-18 19:35:00 +00:00
guzhenjie1@gmail.com 5abc1293ce Corrected Crumbling Colossus. 2011-09-18 15:52:44 +00:00
omegablast2002@yahoo.com c0ab80a1bc fixed a bug in targetchoosing where a player would get stuck in a targetchooser under certain situations as follows:
opponent play an ability, player interupts and clicks a card with TargetChooser which has no valid targets; player then tries to cancel targetchooser, instead the stack is displayed again, player is then locked in a TargetChooser unable to click other cards.

originally i was going to do it in the reactToClick however, after thinking about it, it made no sense to me that a targetchooser would be set and a cardwaitingfortargets would be set if you know ahead of time that no valid targets existed.

now when clicking cards which have TargetChoosers and no valid targets, no tc is set, and no cardiswaitingfortargets; instead return 0.
2011-09-18 10:34:40 +00:00
omegablast2002@yahoo.com 2b8d174bfa Reveillark updated 2011-09-18 06:58:29 +00:00
omegablast2002@yahoo.com 4ab6dfd3da extended countertrack and teach( to creatures for use with countertracking...isolated equipment rule that states it can't equip a card it can't target in testDestroy(we want the equipments to stay on a creature even after it's hands are full :)
I'll take a stab at coding the current cards for the mod this evening.
2011-09-17 23:27:00 +00:00
Xawotihs c5203a9caf Touch/mouse support for storyflow. 2011-09-17 21:27:36 +00:00
wagic.the.homebrew c96d2fea55 Fix for issue 734 (creating profile on a fresh install is completely broken.) 2011-09-17 08:42:13 +00:00
omegablast2002@yahoo.com a6c458d0cb ifthen ability sometimes wasn't grabbing the right target, i now pass it through MTGAbility creations target.
also, i see now why targeted counter cost were left broken for so long. i think this way fixes it in all cases. what a pain.
2011-09-15 11:50:04 +00:00
omegablast2002@yahoo.com d04b4eca38 ai bug fixes, minor refactor of phaseaction/phaseactionmulti/upcost/upcostmulti, counter cost was safed wrong, sorry!, and fixed parsing of upcost..it was chopping the last bracket of the cost when used for things like echo, it required us to add {0} to those cost...that is no longer required. 2011-09-14 20:35:04 +00:00
omegablast2002@yahoo.com 9c9ce69259 safing up countercost related items, some possible crashes were found now that counter cost can be targeted. they should have really been there from the start. 2011-09-14 12:20:46 +00:00
omegablast2002@yahoo.com 5ece26d49a psp comp fix... 2011-09-14 12:07:33 +00:00
omegablast2002@yahoo.com 6ea7e00803 added countertrack(counterstring) MTGAbility
what this does currently is remove a counter of the type counterstring and when the ability is destroyed it puts the counter back for us.
meant for weapons used as follows.
auto=teach(creature) countertrack(0/0,1,hand)

when the creature is equipped with this weapon it will remove a hand counter from the creature, when you remove the weapon, or the weapon is destroyed or whatever...it will put a hand counter back on the creature.

added dualwielding thisdescriptor...
auto=this(dualwielding) 2/2
auto=this(dualwielding) firststrike

enabled "restriction{" on phasebased triggers @next and @each...

i will work more on countertrack to extend it to domains if it currently isnt possible to use it in this case(haven't tested it on domains)....
2011-09-13 14:33:13 +00:00
omegablast2002@yahoo.com 713cb2aa45 <anyamount> does not have a targetMin. 2011-09-13 13:01:20 +00:00
guzhenjie1@gmail.com 0fd6b8caae Corrected Guardians' Pledge, Osai Vultures, Quietus Spike and Squall Drifter. 2011-09-13 12:56:10 +00:00
omegablast2002@yahoo.com c39c94c71a commented out puresteels ability. 2011-09-13 05:06:10 +00:00
omegablast2002@yahoo.com 23f056f39c added restriction keyword "morbid" it has very specific rules that can not be done with current support...it can be used anywhere existing restrictions can be used....
example card..
[card]
name=Morkrut Banshee
auto=if morbid then choice target(creature) -4/-4 ueot
power=4
toughness=4
mana={3}{b}{b}
[/card]
2011-09-12 20:15:51 +00:00
omegablast2002@yahoo.com 3c7a6abbeb changed avatar of discord to a better version. 2011-09-12 18:40:33 +00:00
omegablast2002@yahoo.com 8ebc7dc6ed made cumulativeupcost a little more user friendly, it also now follows the rules more correctly(MTG rules:partial payments can not be made on cumulative cost, it's all or nothing)..
it will only need to be clicked once for payment now, instead of once per counter.
2011-09-12 17:00:13 +00:00
omegablast2002@yahoo.com a42abc3017 multitargeted effects that require a minimum amount of targets should always be directed to the target_ok_full check. they can not be ended early by clicking the source. 2011-09-12 16:08:11 +00:00
omegablast2002@yahoo.com 0e52a20b8b heres a shocker, first time ever...zeth removes a card from wagic supported....
puresteel paladin...removed from supported...added to unsupported. 
I have no idea why, but this card has cause a surge of completely different bug reports, crashes, strange interactions between cards, you name it...im surprised we didn't receive a report that it caused someone dog to die of heartworms....

anyways if i find some time, i will debug this pandora's box of a code and see why exactly it causes such strange difficult to reproduce bugs.
2011-09-12 15:41:44 +00:00
guzhenjie1@gmail.com e453cfadd7 Corrected Tezzeret's Gambit. 2011-09-12 08:07:23 +00:00
solo81@web.de 70208685f1 Optimized the card code of Merfolk Looter and 15 similar cards.
Now they no longer need a token workaround, but work as cards on their own.
2011-09-11 22:25:29 +00:00
solo81@web.de e9f16d371b Card text update. -- The phrase "is put into a graveyard from battlefield" has been officially changed to "dies" a relatively long time ago.
This change does only affect creatures. Non-creature permanents keep the old wording.
2011-09-11 21:44:32 +00:00
solo81@web.de fc52b31326 Added 15 tests to secure the latest card code package for future changes. 2011-09-11 16:07:33 +00:00
omegablast2002@yahoo.com 2a0e6ac2d7 just init order fix. sorry about that! 2011-09-11 14:36:52 +00:00
omegablast2002@yahoo.com a36b69cdb1 fixed a error in parent push back for equips, and using card which was casted, instead of target....minor tweak 2011-09-11 09:39:57 +00:00
omegablast2002@yahoo.com 89d6936eb0 Shimian Specter....aparently everyone on the forums uses this card. 2011-09-11 08:03:57 +00:00
wrenczes@gmail.com f46ec14ce6 Fix for the mouse lag on windows. The issue with the mouse events lagging badly is that the while loop on SDL_WaitEventTimeout means that we'll wait consecutively 10 ms per mouse event, so we get flooded & never call onUpdate until the mouse stops moving. Replaced the gate with a simple for loop that guarantees that we call onUpdate at least once every 50 ms. We can try to tweak the value for better framerates, but this value seemed to be in the right ballpark. 2011-09-11 02:41:14 +00:00
omegablast2002@yahoo.com 1e0268eb07 added parents and children TargetChooser
ok this target chooser is set apart from the others becuase it focuses on relationship between cards instead of other forms of checking, also i made sure to add a method for deeper Targeting.
it is the same as any other target chooser when it comes to writeing the syntax and can be used in almost every way a normal one can.
here is what i mean by deeper targeting
this targetchooser allows you to denote a nested targetchooser.

target(children[targerchooser])
all(parents[targetchooser])

it is plural becuase i do allow maxtargeting to be denoted here. lets say you want to have a domain that lets you do the following
"2 of my target inhabitants get +1/+1 until end of turn"
you can do this...
auto={0}:target(<2>children) +1/+1 ueot
how about even more complex?
auto={0}:target(<2>children[elf[power=1]]) +1/+1

2 of my children that are elves with power equal to 1.
the same goes for parents, you can also lord( with this targetchooser.

if you want to say 
"the inhabitants of this domain gain flying"
auto=lord(children) flying

here are some example coding that you can play around with.

[card]
name=Forest
text=G
auto=lord(children[elf]) +3/+3
auto={0}:target(<2>children) +12/+12
type=Basic Land
subtype=Forest
[/card]

[card]
name=Tidal Kraken
abilities=unblockable
target=land|mybattlefield
auto=connect
auto={0}:target(parents) destroy
text=Tidal Kraken is unblockable.
mana={0}
type=Creature
subtype=Kraken
power=6
toughness=6
[/card]

[card]
name=Arbor Elf
target=<upto:3>land|mybattlefield
auto=connect
auto=foreach(parents[forest]) 1/1
mana={0}
type=creature
subtype=elf
power=1
toughness=1
[/card]
*above, arbor elf can target upto 3 domains...for each one you choose to connect him to that is a forest, arbor elf would gain 1/1..

so as you can see it is pretty indepth.

note: all test pass.
2011-09-10 23:23:40 +00:00
omegablast2002@yahoo.com 6a8f7374cb added weapon handling for connect, please be sure to code these weapons as follows
target=*|mybattlefield
auto={0}:equip
auto=connect
notice i declare the equip before the connect, this is becuase connect will use the equip ability of the card to handle it. 
target= can be used for connecting them now as the first time equip. please remember to use teach( or autoskill= to avoid giving abilities forever to a target...this makes equipments hybrid auras.

also, moved parentchildrule init from original init to rules.txt...
in yourrules.txt
should look like this:

include mtg.txt
name=Classic
[INIT]
mode=mtg
auto=connectrule
[PLAYERS]
auto=shuffle
auto=draw:7

i did this becuase i want to reuse the parentchild associations for mtgabilities...and if parents will always kill thier children, i won't be able to use it :P

changed connect into an instant ability, i don't want this ability to be done by menu choice.
2011-09-10 21:28:20 +00:00
omegablast2002@yahoo.com c0e8dcb1c9 this is the first basic rules of kais mod.
added parentchildrule which currently only handles the removel of children if a parent dies, but will be extended to handle other actions based on event receiving that deal with child and parent association.

add keyword targetable ability "connect"
connect means "the source adds the target to it's parent vector, the target adds the source to it's children vector"
this can be multitargeted, so it is possible that 
"Big Bad Dragon" can live it 2 different domains. 
not sure if this was even asked for, but i thought it would be cool to be able to say
"to play big bad creature you need to give it 2 homes"
or
"big bad creature can live in upto 4 homes"
this adds a level of stratigy, becuase now big bad creature can have "all creatures which share a domain with big bad creature gain +2/+2"...or "all domains that city planner live in gain 1 capacity"
but also add the possibility of faster removel from a card like
"destroy all creatures on target domain".
i thought it would be a nice add to kai rules.

connect clears a target= on a card after connecting...this is to avoid abilities transfering to the target, unless you want it to effect the target like
"tap target domain as this becomes a inhabatant"
target=domain
auto=tap
auto=connect
auto=<==this line on will not be targeting the domain
2011-09-10 19:37:44 +00:00
techdragon.nguyen@gmail.com 4e963c168f added gesture recognizers for all keys.
refactored some of the initialization code
left place holder for Zoom in/out with pinch recognizer.  The idea here is to make a virtual function like OnScroll for Zoom so we can take care of the zoom features natively.
reorganized some of the method declarations.
2011-09-09 19:03:45 +00:00
techdragon.nguyen@gmail.com 5d09bb8a13 removed unused variables
moved debug framerate message to be 10px higher.  current position covers the credit count on the game shop screens.
changed hard coded numeric values for menu ids to Labels.  ( this was done only to GameStateAward )
2011-09-09 17:38:39 +00:00
omegablast2002@yahoo.com cabd82e736 there was a set of bad chars infront of the grade in unsupported.txt that was causing it to load the cards. 2011-09-09 17:28:39 +00:00
omegablast2002@yahoo.com 1fefc33777 removed a compile error, variables that were unreferenced.
small add with big impact:
added the useage of castrestriction on triggers and activated abilities. 
this can be used to create such cards as library of alexandria. 
{t}:draw:1 restriction{type(*|myhand)~equalto~7}
and replace instances were we were putting false triggers on the stack from abilities which contained nested aslongas...
meaning cards like epic struggle, won't need to be triggered every turn even if you have no creatures...
for epic struggle here is an example of how to replace it
@each myupkeep restriction{type(creature|mybattlefield)~morethan~19}:wingame controller
any of the current cast and other restrictions can be used. this includes turn:1 <===and various others such as phase based checking.
syntax is 
restriction{ whatever casting/other restriction you want }
a nice quality of life fix for false triggers (which don't mean theyre incorrect, just annoying when they trigger when they will do nothing)
another example would be the triggers on cards like 
skullcage.
auto=@each opponent upkeep:aslongas(*|opponenthand) damage:2 opponent >4
auto=@each opponent upkeep:aslongas(*|opponenthand) damage:2 opponent <3
becomes
auto=@each opponent upkeep restriction{type(*|opponenthand)~morethan~4}:damage:2 opponent
auto=@each opponent upkeep restriction{type(*|opponenthand)~lessthan~3}:damage:2 opponent

now instead of triggering every opponent upkeep even without a resolve...it will only triggers when the restriction requirement is met.

enjoy :)
note:all test pass.
2011-09-09 10:34:05 +00:00
Xawotihs 4e3a1ff862 Fixed compilation problem 2011-09-08 20:19:01 +00:00
solo81@web.de 3b073f863f Added 3 that should have been part of my last commit. 2011-09-06 23:13:55 +00:00
Xawotihs c3d2b60a67 Fixed trophy card selection and scrolling with mouse and touch. 2011-09-06 21:08:25 +00:00
Xawotihs 98709e661e Modified the running loop to avoid consumming 100% CPU in pause on Android. 2011-09-06 14:03:27 +00:00
guzhenjie1@gmail.com 95d6fa297a Corrected Mycoloth and Nantuko Cultivator. 2011-09-06 13:47:14 +00:00
omegablast2002@yahoo.com 361373d579 try number 2 on reinstate, i only dynamic cast Mayability once now, and use it to check against all targets, this avoids calling dynamic cast 2 times per target. 2011-09-06 02:19:57 +00:00
Xawotihs b2c5df2cd3 Modified the touch/mouse management in the editor to simply select the touched card. I also added a binding to switch between deck and collection with an horizontal swipe. 2011-09-05 22:04:10 +00:00
omegablast2002@yahoo.com fdfcaf854d changed a piece of logic back to it's original logic, the refactor in last commit broke some functionality in multitarget effects which have no test added yet. 2011-09-05 17:40:25 +00:00
wagic.the.homebrew 5498187200 - Fix a bug making some mana abilities interruptible, introduced in r3869
- Cleaned up some code in MTGAbility.cpp
The test suite passes.
2011-09-05 13:25:01 +00:00
Xawotihs 03e41e7c9f Shifted the touch reference to refer the middle of the key instead of
the top left, now selects the touched key before using it.
2011-09-05 10:18:40 +00:00
Xawotihs 0b904a9af3 Simple pad is now touchable/clickable. 2011-09-04 23:13:22 +00:00
Xawotihs 9bdb8e7e66 Added my tablet as test device 2011-09-04 14:18:08 +00:00
Xawotihs 507552133d Android sound support using openSL ES. Now depends on SDK version 9. 2011-09-04 13:52:39 +00:00
wagic.the.homebrew 2d82e22303 Fixed a bug that prevented the mod "knights and dragons" from starting. 2011-09-04 13:21:10 +00:00
wagic.the.homebrew 9378e9fc9a - Fix some code that (un)luckily was compiling without error, as per my comment in issue 720 2011-09-04 09:14:35 +00:00
techdragon.nguyen@gmail.com ad72c0ddc3 adjusted controls for Touch interface on iOS.
* Single Tap now implemented
* Touch and Hold (2 secs) to pop up menu
* added a pan gesture to simulate flicking up/down and left/right
* removed dependency on binding keys to game for iOS devices. (perhaps extend this to all touch devices.)
* flicking motion needs to be expanded to allow for smooth scrolling. Right now every flick is equivalent to going one slot up/down/left/right.
2011-09-04 08:31:36 +00:00
omegablast2002@yahoo.com df4aa9f6c2 changed gemhide sliver to a better version. thanks kevlahnota 2011-09-04 05:42:05 +00:00
omegablast2002@yahoo.com 42e10cd233 fixed typo in harrow. 2011-09-04 05:31:01 +00:00
wagic.the.homebrew 33691d1f13 - Added ads support for Android
- basic "message" system between JGE and java through jni 
- Fixed pause/resume on android/sdl
2011-09-04 02:45:18 +00:00
omegablast2002@yahoo.com 269934fe1e checking the last char directly instead of using .find() 2011-09-04 01:55:49 +00:00
omegablast2002@yahoo.com 2183dedb04 fix for issue with profiles not loading into options from user folder. the issue was that we we're "removing a trailing "/"" even if there was no trailing slash. added a check for "/" before we chop the last letter of the directory :) 2011-09-03 19:20:24 +00:00
omegablast2002@yahoo.com ac01adc6b8 added a check for "if(game" to painting of currentactioncard, menuobjects can exist when no game instance is present, this fixes a crash i introduced in buying shop boosters. 2011-09-03 16:21:41 +00:00
omegablast2002@yahoo.com 7fac24945d added a missing "return" on offerinteruptonphase: parsing. 2011-09-03 16:16:38 +00:00
Xawotihs 354f9788cc This stops the music when the game goes into pause, it restarts it when the game resumes. This works fine on desktop but not so good on mobile with Phonon... 2011-09-03 15:13:12 +00:00
wagic.the.homebrew bc3250fadc - Added 493 missing cards in unsupported.txt, removed some duplicates from unsupported that have since then been coded
-- Most of the added cards are from recent sets and unhinged.
- removed Cinder Seer from Borderline as it seems a more accurate version is in crappy


*** Removed from unsupported.txt because they also exist in other files:
Ancient Ooze was in supported files but also in unsupported ones
Blood Moon was in supported files but also in unsupported ones
Custody Battle was in supported files but also in unsupported ones
Deglamer was in supported files but also in unsupported ones
Flourishing Defenses was in supported files but also in unsupported ones
Fylgja was in supported files but also in unsupported ones
Glowering Rogon was in supported files but also in unsupported ones
Magus of the Unseen was in supported files but also in unsupported ones
Mana Chains was in supported files but also in unsupported ones
Mana Echoes was in supported files but also in unsupported ones
Melira's Keepers was in supported files but also in unsupported ones
Nullmage Advocate was in supported files but also in unsupported ones
Orim's Thunder was in supported files but also in unsupported ones
Overwhelming Instinct was in supported files but also in unsupported ones
Preeminent Captain was in supported files but also in unsupported ones
Protean Hydra was in supported files but also in unsupported ones
Renewing Touch was in supported files but also in unsupported ones
Renounce was in supported files but also in unsupported ones
Riptide Survivor was in supported files but also in unsupported ones
Rise from the Grave was in supported files but also in unsupported ones
Sky Hussar was in supported files but also in unsupported ones
Tatterkite was in supported files but also in unsupported ones
Tidal Warrior was in supported files but also in unsupported ones
Twigwalker was in supported files but also in unsupported ones
Wu Scout was in supported files but also in unsupported ones
2011-09-03 09:23:41 +00:00
guzhenjie1@gmail.com 79546bb00a Corrected Reality Spasm and Slithery Stalker.
Corrected name of Oros the Avenger and Teneb the Harvester in CMD card.dat
2011-09-02 13:18:11 +00:00
solo81@web.de e296e0c381 Added 222 cards based on rev3869 (thanks to Zeth!) and months of play-testing.
Examples:

# COUNTER-MOVING CARDS #

[card]
name=Ghave, Guru of Spores
auto=counter(1/1,5)
auto={1}{C(1/1,-1),creature|mybattlefield}:token(Saproling,Creature Saproling,1/1,green)
auto={1}{S(creature|mybattlefield}:counter(1/1,1) target(creature)
text=Ghave, Guru of Spores enters the battlefield with five +1/+1 counters on it. -- {1}, Remove a +1/+1 counter from a creature you control: Put a 1/1 green Saproling creature token onto the battlefield. -- {1}, Sacrifice a creature: Put a +1/+1 counter on target creature.
mana={2}{B}{G}{W}
type=Legendary Creature
subtype=Fungus Shaman
power=0
toughness=0
[/card]

# IF...THEN #

[card]
name=Goblin Goon
auto=@each my attackers:if type(creature|opponentbattlefield)~morethan~type(creature|mybattlefield) then transforms((,cantattack)) ueot
auto=@each my blockers:if type(creature|opponentbattlefield)~morethan~type(creature|mybattlefield) then transforms((,cantblock)) ueot
text=Goblin Goon can't attack unless you control more creatures than defending player. -- Goblin Goon can't block unless you control more creatures than attacking player.
mana={3}{R}
type=Creature
subtype=Goblin Mutant
power=6
toughness=6
[/card]

[card]
name=Pulse of the Tangle
auto=token(Beast,Creature Beast,3/3,green)
auto=if type(creature|opponentbattlefield)~morethan~type(creature|mybattlefield) then moveto(myhand)
text=Put a 3/3 green Beast creature token onto the battlefield. Then if an opponent controls more creatures than you, return Pulse of the Tangle to its owner's hand.
mana={1}{G}{G}
type=Sorcery
[/card]

# MULTIKICKER #

[card]
name=Joraga Warcaller
auto=kicker counter(1/1,kicked)
kicker=multi{1}{G}
auto=thisforeach(counter{1/1.1}) lord(other elf|myBattlefield) 1/1
text=Multikicker {1}{G} (You may pay an additional {1}{G} any number of times as you cast this spell.) -- Joraga Warcaller enters the battlefield with a +1/+1 counter on it for each time it was kicked. -- Other Elf creatures you control get +1/+1 for each +1/+1 counter on Joraga Warcaller.
mana={G}
type=Creature
subtype=Elf Warrior
power=1
toughness=1
[/card]

# PROLIFERATE #

[card]
name=Contagion Clasp
auto=counter(-1/-1,1) target(creature)
auto={4}{T}:target(proliferation) proliferate
text=When Contagion Clasp enters the battlefield, put a -1/-1 counter on target creature. -- {4}, Tap: Proliferate. (You choose any number of permanents and/or players with counters on them, then give each another counter of a kind already there.)
mana={2}
type=Artifact
[/card]

# MULTI-TARGET #

[card]
name=Argothian Elder
auto={T}:target(<2>land) untap
text={T}: Untap two target lands.
mana={3}{G}
type=Creature
subtype=Elf Druid
power=2
toughness=2
[/card]

[card]
name=Aven Augur
abilities=flying
auto={S}:target(<upto:2>other creature) moveTo(ownerhand) myUpkeepOnly
text=Flying -- Sacrifice Aven Augur: Return up to two target creatures to their owners' hands. Activate this ability only during your upkeep.
mana={3}{U}
type=Creature
subtype=Bird Wizard
power=2
toughness=2
[/card]

[card]
name=Bone Harvest
target=<anyamount>creature|mygraveyard
auto=moveTo(mylibrary)
auto=@next upkeep:draw:1 controller
text=Put any number of target creature cards from your graveyard on top of your library. -- Draw a card at the beginning of the next turn's upkeep.
mana={2}{B}
type=Instant
[/card]

Test suite tests will follow on weekend.

Have fun!
2011-09-01 21:06:45 +00:00
omegablast2002@yahoo.com b8aa265523 "!= 1000" needed to be changed to enum. 2011-09-01 20:33:17 +00:00
omegablast2002@yahoo.com 6399917d25 changes:
added abilities:
proliferate
ProliferateChooser:new targetchooser for cards with counter and poison counters "proliferation".

MenuAbility:new internal ability to create custom menus of abilities which can be activated in sequence one after another.

multikicker, syntax kicker=multi{b}
works with variable word "kicked", the amount of times it was kicked.

target=<number>tc,target=<upto:>tc,target=<anyamount>tc,target(<number>tc),target(<upto:>tc),target(<anynumber>tc);
multitarget is now supported with the exception of "devided any way you choose" which can not be supported becuase we allow detoggling of targeted cards with a "second" click....so you can not click the same card 2 times to add it to the targets list twice for example.
this is minor, as the bulk of multitarget is not "devided"
removed 's' parsing for multitarget, added a limit of 1000 to "unlimited" for easier handling; we currently can't handle activation of an ability on a 1000 cards very well on any platform(infact i don't suggest it)

Countershroud(counterstring), this MTGAbility allows you to denote that a card can not have counters of the type "counterstring" put on it.
"any" is for no counters allowed at all. this is a replacement effect. cards state that they can still be the targets of counter effects, however on resolve nothing is placed on them instead.

@counteradded(counterstring) from(target):,@counterremoved(counterstring) from(target):: these are triggers for cards which state "whenever you add a counter of "counterstring" to "target"; added counterEvents struct; 

other changes:
added support for ai handling of multitargeted spells.

changed a few of delete( into SAFE_DELETE(, safed up a couple areas where they did not seem safe to me;

added better handling of menus presented to ai, it will try to select the best based on eff returns.

added varible lastactioncontroller for ai use, it keeps it truely from ever tripping over itself and brings ai more inline with MTG rules.

converted TC into a protected member.
added "abilitybelongsto" string to tc, and set "owner" of the tc. a tc should never belong to "no one" it should always have a owner.
abilitybelongs to string is solely for easier debugging, i found it was a pain to never know what ability created a tc while i coded multitarget. the owner of the tc is the only one that should be using it, if an ability needs to declare the opponent as the owner (choose discard which is currently unsupported for example) this will allow us to better handle that situation by setting the tc owner in the ability which called it.

rewrote the logic of "checkonly" in ai choose targets, the only time it is "checkonly" is when it is trying to see if it had a target for a spell before it cast it, i now set this in the actual function call instead, the old method was far to error prone.

wrote logic for ai checking of menu objects presented to it,
ai will now make better choices when a menu is presented to it based on what it already knows. this changes it from it's old method of "just click the first option".

taught ai how to use multi-mana producers such as birds and duel lands by adding a method for it to find it's mana for a payment. it can effectively use cards like birds of paradise and sol ring(without locking up). It's primary method of pMana searching was maintain for performance(no need to deep search if we have it in pMana).

added a vector to actionlayer to store mana abilities for pMana. this provides us with a dramatic improvement when mana lords are present by reducing the amount of objects that need checking when ai checks pMana.
with 80 mana objects and a ton of lords one instance i checked went from 8000ish checks down to 80<===big difference.

added "tapped" green coloring(sorry i missed that!)...added red coloring to current actionLayers current action card (usually the source).

changed "type(" restrictions second amount from atoi into wparsedint for more flexiable coding.

add "&" parsing to CD targetchooser, removed "iscolorandcolor" variables and functions becuase they were a hack the real fix was this.
cretaure[dragon&black&blue] a creature that is a dragon, and black and also blue.

changed some of the ai computeactions and
removed unneeded gaurds in ai chooseblockers, they did more harm then good.
2011-09-01 20:03:26 +00:00
guzhenjie1@gmail.com 67bbaa8f06 Corrected Hystrodon. 2011-08-25 12:14:30 +00:00
techdragon.nguyen@gmail.com 6c9558a58d updating project for iOS compatibility. 2011-08-25 00:51:18 +00:00
techdragon.nguyen@gmail.com 5c86fb1c92 remove unused file. Seems like it should have been removed a long time ago. like it was a misnamed file but left around and ignored 2011-08-25 00:35:08 +00:00
Xawotihs d51cbfe58b Cleanup meego package description 2011-08-22 19:56:35 +00:00
wagic.the.homebrew 0bc6352d62 - Fix a bug with story mode not able to find (unzipped) campaigns 2011-08-22 12:33:39 +00:00
Xawotihs 164ca240b3 Fixed broken meego resource deployement 2011-08-21 21:40:28 +00:00
Xawotihs 024c30d909 Added user and system path for QT_CONFIG, added meego policy file, updated meego rules file, removed now useless Meego Res.txt file 2011-08-21 18:55:16 +00:00
wagic.the.homebrew cb0f2b373f - Fix a bug where JFileSystem would return duplicate results in function scanfolder (can lead to "card id collision" in the previous builds) 2011-08-21 12:53:57 +00:00
wagic.the.homebrew 87d60cd79e - Improper GetfileInstance calls were preventing from correctly initializing the JGEFileSystem (Todo: init earlier, prevent from calling GetfileInstance if not initialized ?)
- fixed a problem with the test suite
2011-08-21 10:04:38 +00:00
wagic.the.homebrew 37c6b06ee0 - removed broken support for non "stored" zip files for card images 2011-08-21 09:43:00 +00:00
wagic.the.homebrew e27cf56fa2 - Support for Zip Filesystem. It is now possible to zip the entire Res folder ("store" method preferred, zip so that the root of the zip has ai, player, etc...) in one single file for read only. Write access is done in another folder (hardcoded to be User/ for now, can be updated depending on platforms, etc...
-- zipFS has several limitations...
--- in a general way, seekg doesn't work... so getting a file's size needs to be done through JFileSystem.
--- getLine on files open with zipFS doesn't work so great. Not sure if it is a normal issue because files are open in binary or not... JFileSystem therefore offers a "readIntoString" function that needs to be used instead of the usual "getline" technique. However getLine can then be used on a stream connected to the string.

-- tested on Windows and PSP, I also made sure android still works, but haven't tested zip support on Android.
-- I tried to maintain backwards compatibility, but this might break on some platforms, if I broke some platforms and you can't find a way to fix them, please contact me and we'll figure something out
-- This removes wagic::ifstream. I didn't reimplement the securities that were involved in this, apologies for that. Might be useful to reimplement such securities in JFileSystem
-- I haven't tested options/profiles in a deep way, it is possible I broke that.
2011-08-21 09:04:59 +00:00
guzhenjie1@gmail.com 14bd7b7a24 Corrected Galepowder Mage. 2011-08-16 15:35:32 +00:00
Xawotihs feec26fc8e Meego harmattan packaging files 2011-08-15 22:04:37 +00:00
Xawotihs fc592a4ed7 Fixed difficulty settings bug introduced in r3247 2011-08-15 17:32:45 +00:00
Xawotihs 2c34a88ff0 Reuse swipe code of Android with Qt, associate "swipe left" to "other cards" in the shop. 2011-08-14 18:13:28 +00:00
Xawotihs c188b4d104 Fixed "Werror" related compilation problems on Linux and Meego. 2011-08-14 18:09:02 +00:00
Xawotihs 8f1e97f8f9 Fixed compilation problem with VC2010 2011-08-14 14:42:37 +00:00
Xawotihs f1b44d5330 Trophies icon usable by click/touch 2011-08-12 23:00:31 +00:00
Xawotihs 30f8304918 Meego harmattan support, swipe down for cancel/interrupt, swipe up for next phase/combat assignment, tap&hold for menu, deactivate refresh when windows is not active. 2011-08-11 22:26:07 +00:00
Xawotihs 5414cd940e Defined usage of double buttons input for PSP only, it caused some annoying exit with touch inputs 2011-08-11 21:56:27 +00:00
guzhenjie1@gmail.com b2f1252e50 Corrected Puresteel Paladin. 2011-08-11 15:44:17 +00:00
Xawotihs 88157d7c95 Fixed compilation problems in non-PSP, non-FMOD, non-Phonon cases 2011-08-10 20:56:51 +00:00
Xawotihs 6631452067 Fixed undefined NEW compilation problem 2011-08-07 20:42:35 +00:00
Xawotihs 4dd8eaadad Touch events are now handled before key events 2011-08-07 19:48:01 +00:00
wagic.the.homebrew 765b6b0412 - Moved Cast Restriction variables "out" of CardPrimitives (replaced with a pointer). This frees 64bytes off of CardPrimitives on Windows, I assume something similar on the PSP, which gives a result of more than 500kB freed
- fix for issue 716 (text not rendered in some cases) 
Test suite passes
2011-08-07 05:05:28 +00:00
wagic.the.homebrew 9f3a42d0c6 - removed "image_name" variable from MTGCard. this should free roughly 200kB with the current amount of MTGCard objects we have. (Which counterbalances the "roughly 150kB in Introduced in CardP Primitives recently :( ) 2011-08-07 04:01:56 +00:00
guzhenjie1@gmail.com 22305c2d27 Added missed subtype of Greatsword, Kite Shield and Swiftfoot Boots. 2011-08-05 16:47:23 +00:00
omegablast2002@yahoo.com bcfc790cda fixed a typo in the rules, it works in current tho i imagine this could have been the cause of a couple wonky problems.
we created lord target chooser with "mountains" instead of "mountain"<--actual land name.
2011-08-05 09:38:28 +00:00
Xawotihs eac5a35b43 Cleaned up my phasebar code and merged it into the overall item selection code 2011-08-04 05:57:10 +00:00
omegablast2002@yahoo.com 46dfe03099 fix psp build, guiphasebar int order error. 2011-08-03 16:27:28 +00:00
omegablast2002@yahoo.com 5cd779094d changed it to 1.4f 2011-08-03 14:56:12 +00:00
guzhenjie1@gmail.com af18fb0172 Corrected mana cost of Personal Sanctuary. 2011-08-03 13:01:03 +00:00
omegablast2002@yahoo.com 07662b08f6 fixed a warning tried as error in MTGGamePhase... 2011-08-03 12:25:09 +00:00
Xawotihs 56c68e799c Fixed compilation problem on VC2010 2011-08-02 21:48:05 +00:00
Xawotihs 097c40149d Phase bar is now clickable/touchable and animated. 2011-08-01 21:26:12 +00:00
guzhenjie1@gmail.com 32a5b7bb92 Corrected rarity of Thran Golem and Throne of Empires. 2011-08-01 15:21:53 +00:00
wagic.the.homebrew 78efba08b1 - fix for counters slowness on psp 2011-07-30 14:29:12 +00:00
wagic.the.homebrew fe4b0a11e3 - JP Translation update by Shilf
- put tutorials back in Rules/classic, to help debugging the bug with controls
2011-07-30 03:38:39 +00:00
wagic.the.homebrew 794be140ce - graphical representation of counters. see graphics/counters/quest.jpg for an example
- rewrote some code dealing with text formatting for a card when rendering in text mode. I could swear my code has been reverted. If somebody has good reason to believe we should re-process the string formatting on every frame, please let me now. I believe my change can help rendering speed of text mode a lot.
- counters change to vector instead of array
2011-07-29 17:43:45 +00:00
wagic.the.homebrew 9631171ad1 Cleanup of some Trigger code 2011-07-28 13:51:42 +00:00
omegablast2002@yahoo.com 2e5222bf5d fixed an issue with @discarded...the trigger would only fire once becuase i was not passing the constructors variable for once to the object.... 2011-07-28 11:30:37 +00:00
wagic.the.homebrew ef5e011e23 - Removed "isClone" flag. This flag was error prone. The "core" classes now have decent copy constructors, and ideally long term we should create copy constructors for the abilities that have additional pointers in them.
-- The test suite passes but this is a big change. I might have introduced some memory leaks or bugs. I might have fixed some bugs, too
2011-07-27 14:31:27 +00:00
omegablast2002@yahoo.com a26125ee4c readded arbor elfs ability. 2011-07-26 17:23:01 +00:00
omegablast2002@yahoo.com 8bb53ff12f added incrementing of "damageCount" the variable that tracks the damage dealt to a player, to "infect" damaging...this is a rules correction, a creature with "infect" still "deals damage"...it just does it differently.
this fixes an issue with infect creatures not triggering "bloodthirst" ...all other cases this was working correctly, bloodthirst however checks the damageCount.....
2011-07-26 16:56:01 +00:00
omegablast2002@yahoo.com c1ac119af5 fixed dark depths with while tag. 2011-07-26 16:39:50 +00:00
omegablast2002@yahoo.com 11473e0fb5 added "while" tag to this's i added it to lords a while ago to fix a similar issue where the lords were taking on the "oneshot" variable of their abilities in cases where you really didn't want them too...
its basically an over ride....
2011-07-26 16:39:12 +00:00
omegablast2002@yahoo.com 1f049bdd0c caribou range fixed...typo in the cost...please test cards before adding them, it is very obvious that cards are being added without so much as testing their abilities when i have done 6 typo fixes since release...typos that deemed the card completely un-usable...such as caribou range which would sacrifice the enchantment if you wanted to gain a life. 2011-07-26 15:29:02 +00:00
omegablast2002@yahoo.com 8c99022deb corrected fresh meat, tho it still has a problem...currently we don't keep a count of token creatures that went to the grave...i might look into it later on, tho very very very few cards actually care about this....so if it requires too much code impact, then it will remain simply counting the cards which exist in the grave. 2011-07-26 15:22:42 +00:00
omegablast2002@yahoo.com c52b8b6983 Reveillark fix...since apparently everyone is reporting this....
if you are going to use the trigger + ability from trigger effect...make sure you create the trigger before you remove the card from play...otherwise the trigger never gets a chance to see it's source leaving play.
2011-07-26 15:14:37 +00:00
omegablast2002@yahoo.com 72d91769d7 safe-ing up some of the getEff checks...i think the rare "trample" crash was actually caused by a check against a "player" as getnextopponent().... 2011-07-23 11:42:59 +00:00
omegablast2002@yahoo.com 42d2ff8661 removed a typo in "dark depths" 2011-07-23 11:14:45 +00:00
omegablast2002@yahoo.com 691914247f updated the kicker workaround into real support...kicker workaround for "if casted" should not be needed any longer...
fixed binding grasp text.
2011-07-23 10:37:27 +00:00
omegablast2002@yahoo.com 444d13b457 added an "ifnot|if then" ability, with the option to turn on kicker payment menu choice, it created issue with the cards which were using the "kicker" workaround to show that a card was cast...
the ability checks against any of the current cast restriction checks and is written in the following syntax
example phaige the untouchable is 
auto=ifnot casted(this) then wingame opponent
if|ifnot condiation then ability
this can also be used in && abilities such as this card
pulse of the grid
auto=draw:2 && target(*|myhand) reject && if type(*|opponenthand)~morethan~type(*|myhand) then moveto(myhand) all(this)

this adds a few cards in its current state, though the aim for this ability was removing the use of "kicker" workaround for cards like the divinity creatures.
i plan to extend this to support such effects as "if spentmana({b}{u}) then effect....and other conditional checks currently not possible even with workarounds.

I'm committing these now since im working on abilities for kiaos mod and don't want to have a 20 page changelog.

also added missing text to binding grasp, it was thought that it was bugged becuase it simply "ended" its effect....however this is a confusion since the effect was ending due to upcost not being paid, however the card text did not reflect that it had a upcost....
2011-07-23 10:36:03 +00:00
omegablast2002@yahoo.com bd1c31b6f9 moved the parsing of cast restriction into abilityfactory and out of mtgability...this is so new abilities can take adventage of these checks through the use of AbilityFactory af. 2011-07-23 09:03:33 +00:00
guzhenjie1@gmail.com 48fe3251ce Corrected a typo of Goblin Tunneler. 2011-07-22 16:28:29 +00:00
guzhenjie1@gmail.com 41474ae6f7 Corrected a typo of Maelstrom Djinn.
Corrected three typo and added two missed cards in M12 card.dat.
2011-07-22 14:38:16 +00:00
Xawotihs 59b7432e74 Fixed builds broken in r3807 2011-07-21 19:44:52 +00:00
Xawotihs 49944b629d Commit the 0.16.0 version without tutorials activated 2011-07-20 20:28:44 +00:00
omegablast2002@yahoo.com e080b59db9 fixed the bringers of dawn...fixed avatar of fury... 2011-07-20 18:41:37 +00:00
omegablast2002@yahoo.com e8b8079ef6 fixed a bug where you could equip opponents creatures with your equipment, it is quite possible that we have *always* been able too but no one has actually tried. anyways "myBattlefield" does not compare to "mybattlefield"...
i seriously think we devs should consider making all ability coding required lowercase. not card names and text, but coding such as targetchoosers "thisForEach(creature[Black;White]|myBattlefield) moveto(myGraveYard) ...<---this is not uniform...and leads to people using such coding in the source ....i think i suggested this once and was instantly shot down...however, this is the 2nd instance where a bug has arose from the comparing of capitalized vs lower case..becuase we all assume that every line is going to be dropped to lower case as the game reads them.....
2011-07-20 17:17:52 +00:00
Xawotihs ace236e6a3 Improved maemo upgrade scripts and added 0.16.0 maemo release description 2011-07-19 21:32:56 +00:00
Xawotihs e09fe7570e Fixed Phonon sound support. 2011-07-19 21:28:46 +00:00
omegablast2002@yahoo.com 262c31b708 fixed fresh meat, and umbral mantle 2011-07-18 13:14:52 +00:00
Xawotihs 188a88a621 Readded a reference to zlib needed on unix. 2011-07-17 20:51:59 +00:00
Xawotihs 9dccc885d6 Updated the Qt project to work on Desktop/Maemo/Meego/Symbian. Removed all dependencies except Qt and OpenGl. 2011-07-17 18:18:17 +00:00
solo81@web.de d81afa93c5 Corrected Giant Shark. 2011-07-15 13:24:40 +00:00
Xawotihs c2879b0b6e Fixed a selection problem sometimes hapenning on the hand zone in touch/mouse mode and removed dead code. 2011-07-14 21:21:24 +00:00
guzhenjie1@gmail.com 9f80620f0a Corrected Sky Swallower. 2011-07-14 14:12:11 +00:00
wagic.the.homebrew 8c79e0644c Fix memory leak in ATransforms ability
- Blame is on me for the bad design behind the "isClone" flag, I need to get rid of that flag in the long term.
2011-07-14 13:49:46 +00:00
Xawotihs bf416b0d36 Fixed Qt Creator project for Qt version on Windows. 2011-07-13 20:07:13 +00:00
omegablast2002@yahoo.com a8837e95c6 fixed a heap corruption caused in atransformer was a mistake in the code.
also, if ai is adding counters and we're greater then or equal to the max amount that counter ability allows, eff = o.
2011-07-13 18:39:51 +00:00
guzhenjie1@gmail.com 69e55dfcbf Corrected Decree of Justice. 2011-07-13 13:43:47 +00:00
wagic.the.homebrew d834d20c24 Fixed an incorrect card line the game was complaining about 2011-07-13 13:16:22 +00:00
wagic.the.homebrew a44cd87ca3 Adding Kaio's latest wallpaper 2011-07-13 13:12:54 +00:00
wagic.the.homebrew fe98b3ca68 Removing the feature that loads the "big" card instead of the thumbnail when the thumbnail does not exist. Too many people using incorrect HQ packages are complaining about performance issues, so this will make the problem go away, and force people creating those packages to make them correctly 2011-07-13 12:58:21 +00:00
omegablast2002@yahoo.com 7775a1e39f bringer of the red dawn:changed test to include a clean up step 2011-07-12 17:10:23 +00:00
omegablast2002@yahoo.com dab1d92a0d edited the original test to allow "clean up" phase to do its thing. 2011-07-12 16:51:18 +00:00
guzhenjie1@gmail.com 9ad4f8b8cd Corrected Well of Discovery and Well of Life. 2011-07-12 15:30:26 +00:00
wagic.the.homebrew cbebe0d4e8 -Fix for issue 710 (can't tap mana in story mode). Update your rules and campaigns folders!
-- Zeth, please verify that I didn't break your mods if you have time
-- The test suite does NOT pass in this revision (see issue 711), but I verified that the problem does not come from my change, so we need to dig
-- Campaigns creators will have to update their campaigns to make them compatible with Wagic 0.16. It consists in adding "include mtg.txt" at the top of each one of their rules.txt file.
2011-07-12 15:02:41 +00:00
omegablast2002@yahoo.com 825760fb6c corrected blood lust code 2011-07-12 10:57:13 +00:00
wagic.the.homebrew 9827e3f915 - Attempt at "fixing" issue 705: loading card frames (used for text mode) in 16bits instead of 32 2011-07-11 15:09:39 +00:00
wagic.the.homebrew 9d9db7198e Additional tweak for issue 693: reduce the size of some background images. I think the visual result is still ok. The images go from 480x272 to 450x255, and end up taking twice as less space in ram (512x256 instead of 512x512).
This helps a lot in the deck selection menus (duel and deck editor).
That, added to my previous fix, fixes issue 693 for me.
In general, we should try to avoid 512x512 32bits textures on the PSP. That happens with a 480x272 png image. One solution is to convert the file to a jpeg, and load it in 551 mode whenever possible. Another solution is what I did: use a 450x255 image instead. The best is of course to cumulate both, which divides the size in Ram by 4 on the PSP.
I'm ok with distributing lower res graphics on the psp, and higher res on other platforms, if that helps. Main culprits are 480x272 images (when there's too many of them)
2011-07-11 14:34:12 +00:00
guzhenjie1@gmail.com 1646ad4221 Added meta data for M12. 2011-07-11 14:30:10 +00:00
omegablast2002@yahoo.com ff1a1dde86 updated a piece i forgot for type( restriction. this fixes feast for blood. 2011-07-11 12:59:44 +00:00
solo81@web.de 706c8c8883 - Added 181 new cards.
The BIG CARD SAFARI 2011 is over: After 4 months of intensive testing, i can proudly present you this huge card package. All these cards are working 100%. 
Card list --> First comment.

- Added 20 tests to save the cards whose code is not covered by already existing tests.

- Added Magic2012 (M12) with 75 completely new cards.
2011-07-10 21:36:15 +00:00
wagic.the.homebrew 3148a25f3a - Manual cache cleanup in the menu to help a bit with issue 693. This is unfortunately not enough, we are dealing with ram fragmentation problems here :( 2011-07-10 13:51:39 +00:00
wagic.the.homebrew bf4e0d8908 - minor tweaks:
-- Res is the default folder in Res.txt, in case it exists, to avoid confusion when debugging
-- added sign_prx in the makefile, harmless if you have the default build.mak, but signs the app for you if you have the correct files
-- uninitialized variable warning fixed in Rules.cpp
2011-07-10 07:55:08 +00:00
wagic.the.homebrew acca910248 - Fix for issue 699 (sound effects stop working after a few minutes on the PSP) 2011-07-10 07:51:03 +00:00
wagic.the.homebrew 0661918ed6 - Additional fix for issue 465
-- The problem was that the previous fix for keybindings actually fixed dead code for the PSP version... the real call to Defaultbindings was still happening in JGE's code...so the fix made the call twice.
-- Note: shouldn't we use ResetBindings instead of JGECreateDefaultBindings? The former resets the bindings before assigning the default ones...
2011-07-10 06:52:07 +00:00
guzhenjie1@gmail.com f28638f12e Corrected subtype of Skywatcher Adept. 2011-07-10 05:50:01 +00:00
wagic.the.homebrew 4a6529ea55 - Reverting r3744. This fixes issue 707
-- I will open a new issue for the problem that r3744 was fixing
2011-07-10 04:36:55 +00:00
wagic.the.homebrew e84ad44e47 - Extended TutorialMessages into a message system that shows up every time a new game is started.
-- instead of tutorial(my message), use message(my message) for such messages. 
-- Counting on people to use it, now that it's here ;)
2011-07-10 01:55:20 +00:00
omegablast2002@yahoo.com e5dfb81fb9 added the missing types into types filtering.
http://code.google.com/p/wagic/issues/detail?id=706
these types were converted into part of the "types" enum and are no longer considered a subtype in the engine.
as they appear before Subtypes::LAST_TYPE they are to return "" as their subtype search result.
i figured there was no harm in including them in the types list filtering as they were moved from subtypes becuase they were some of the most frequently used subtypes.
2011-07-09 20:33:07 +00:00
Xawotihs 991bacbec5 Fixed issue 679. Filters now work with mouse and touch. 2011-07-09 10:51:49 +00:00
wagic.the.homebrew 8546f3dff8 Fix for issue 700 (Basic Lands randomly stop working) 2011-07-09 09:25:31 +00:00
wrenczes@gmail.com d23a826fef Fixed the back image card drawing offset. There's probably a better way to fix this, but it stems from the fact that cards (and the large back.jpg image handling) have their hotspots set to the center of the card coords, but for whatever reason, the code that draws the thumbnail version of the back image doesn't. Rather than try to fix the coords in all the places where we draw the back thumb image, I refined the quad sharing code so that there's one quad for temp cards, and another for actual back image drawing. 2011-07-09 04:30:18 +00:00
wagic.the.homebrew c06f057274 Fix issue 703. Added Hypnotic specter's text back. 2011-07-09 02:28:14 +00:00
Xawotihs 979840dd4e Fixed issue 676 (was not related to mouse support at all) 2011-07-08 21:26:21 +00:00
omegablast2002@yahoo.com 700ee1a7db reinstated target coloring, added text display for stonehewer and hermit mode unlock. 2011-07-08 19:39:47 +00:00
omegablast2002@yahoo.com 665f533ac8 fixed a bug where altercost would cause extracost payments like PMana to lose their source, because the source for the cost is set after the card is placed in hand, and altercost resets the cost of cards to the new cost. 2011-07-08 17:43:19 +00:00
omegablast2002@yahoo.com 7fdac02b71 changed avatar of mights code. 2011-07-08 10:48:09 +00:00
omegablast2002@yahoo.com dbbf5e4cb6 added the support to fix avatar of might...you can now do
otherrestriction=type(creature|mybattlefield)~lessthan~type(creature|opponentbattlefield)-3

which means, if the statement above is true you can play the card....if you subtract 3 from the amount the opponent has in creatures, and you are still less then the opponent...then that means he has atleast 4 more creatures than you do.

so right after the type(blah) you can add +number or -number...and it will modify the amount to compare.
2011-07-08 10:47:28 +00:00
omegablast2002@yahoo.com a3c22ddd32 updated mytypemin to use the new syntax, the restriction should now work correctly again when comparing values between players. 2011-07-07 11:40:15 +00:00
omegablast2002@yahoo.com f88178f2cf refactored the typemin: cast restriction, there was a reported bug with it and while debugging it screamed refactor.
so i converted it from string comparisons and counting the battlefield..into targetchoosers with declarable operator.
simplified the code from the mess it was before into something alot easier to card code with.

example before:
mytypemin:less type(land),opponenttypemin:* type(land)
becomes
type(land|mybattlefield)~lessthan~type(land|opponentbattlefield)

the new syntax is:
type(targetchooser)~operator~number
type(targetchooser)~operator~type(targetchooser)
the operator are:
morethan
lessthan
equalto
2011-07-07 11:39:06 +00:00
wrenczes@gmail.com 463a64521f Switched another case of the psp icons to (explicitly) use the managed cache. 2011-07-07 08:26:01 +00:00
wrenczes@gmail.com c5963c3c23 Three improvements involving image caching:
1) prevent the textureQuad map from containing references to cards when we're returning a temp (card backdrop) image in the threaded version.
2) we had two copies of the pspicon image in the cache (ie the regular & managed).  Changed the reference in the DeckMenu code to use the managed instance.
3) Fixed a problem with a default constructor param that would set RESOURCE_LOCKED on certain images.  I noticed that the 'NEW' image was locking itself in the cache because no resource modes was being passed in, so the default constructor param was setting it to locked.  This seems like a bad idea - if you're not explicitly locking a resource in the call, that shouldn't be the default behaviour.

Also added an assert safeguard to catch the possibility of 'overlocking' an image resource, as this probably means the image fetching routine is being abused somehow.
2011-07-07 07:37:17 +00:00
jean.chalard 93d96fe52b Revert a careless change
Seems I did something wrong with SVN. Revert the changed parts
that should not have been changed.
2011-07-07 03:41:51 +00:00
jean.chalard c5cd81f6a1 Fix the double key bindings problem.
The problem was, the game would initialize first, reading the
keybindings from the configuration, and THEN set up the default key
bindings.
I think this affects only PSP, X, SDL and Qt. A quick scan of the
windows version code looks to me that the order is correct and the
problem should not exist, but I may be mistaken. The iPhone version
looks to me like it has no keybindings at all, though the call is
there ; I put the call in the right order so that the problem does
not happen in the future if we implement some key bindings for it.
If someone can check for windows...
2011-07-07 03:35:26 +00:00
omegablast2002@yahoo.com a59dec1500 added "once" support for the remaining triggers that did not have it.
this is basically one activation for the existence of the trigger, meaning if it is used on a card, and the trigger exist for inplay, it will only activate one time while that card is inplay, it will activate again if the card leaves play and is put back in play again by another effect, 
this was originally added for cards such as the hidden enchantment cycle.
2011-07-05 14:14:18 +00:00
wagic.the.homebrew c3ae216f62 - Fix issue 694
- Bump version number to 0.16.0 for upcoming release
2011-07-05 13:02:41 +00:00
Xawotihs c25dfe426f Fixed issue 677 2011-07-04 19:09:19 +00:00
guzhenjie1@gmail.com 25be470f4b Corrected Sedraxis Specter. 2011-07-04 12:05:11 +00:00
wagic.the.homebrew 52b83a135c - Added TutorialMessage ability
-- Tutorial Messages are an ability like any other, except it can only be displayed once. Subsequent calls are ignored, the ability is removed from the game as soon as it is added
-- This allows to add event triggered messages ingame. Messages are either text, or images (I don't have an image sample, but rules/classic.txt has a few examples that might help)
-- only tested on Windows, although I made sure the PSP version compiles. Hopefully I also made the necessary for it to work in the touch version (touching the screen should be enough to close the tuto message)
-- Room for improvement: possibility to choose a title in text mode, possibility to have some messages depending on others (e.g.: don't show message X until message Y has been shown), improve some of the abilities and triggers to give more flexibility, add events outside of game, to allow tuto messages in deck creator, etc...
2011-07-03 08:47:51 +00:00
punkeduard@gmail.com 72c795c24b Afterlife - Change the logic, the caster of the spell used to get the spirit, it should be the controller of the creature
Faceless Devourer - It should not be able to target itself 
Sunscape Familiar - abilities=flying -> defender
diamond valley - Sacrifice only creatures you control
Vow of Lightning - typo in the name
Sporeback Troll - fixed mana cost
Crovax the Cursed - fixed card text
2011-07-03 05:46:12 +00:00
Xawotihs bfa9b6c813 Fixed issue 691. 2011-07-01 21:59:35 +00:00
Xawotihs 8f9619e21a Added support for wheel mouse events 2011-06-27 21:18:16 +00:00
guzhenjie1@gmail.com e9ce17fa7b Corrected Ashenmoor Liege, Cloud Cover, Retromancer and Spinal Graft. 2011-06-27 13:28:49 +00:00
Xawotihs 7bb49068b1 Use Will's scrolling support to add next phase (scroll up) and interrupt (scroll down) in the duel state. 2011-06-26 20:51:45 +00:00
guzhenjie1@gmail.com bac4050de7 Corrected Dread Cacodemon and text of Acorn Catapult and Champion's Helm. 2011-06-25 13:57:32 +00:00
guzhenjie1@gmail.com 4eb9df29ef Corrected some typos and wrong ID in CMD. 2011-06-25 13:14:25 +00:00
guzhenjie1@gmail.com 81b50e0c19 Corrected text of Kiki-Jiki, Mirror Breaker. 2011-06-25 12:53:40 +00:00
solo81@web.de 4b4c6f4981 Fixed my last commit. 2011-06-25 11:50:16 +00:00
solo81@web.de e8f1314d0f Added Magic the Gathering: Commander (22 new cards). 2011-06-25 11:40:26 +00:00
guzhenjie1@gmail.com 5820124662 Corrected two typos and added missed Dragon Whelp in KVD. 2011-06-25 04:21:32 +00:00
wrenczes@gmail.com a1fd7bd508 Added a simple hack so that '1 Player' will show up as the default selection for the Play menu instead of the last item in the list - in my case, the Test Suite. 2011-06-22 05:06:54 +00:00
guzhenjie1@gmail.com c73de33c19 Corrected Wargate. 2011-06-18 10:05:16 +00:00
guzhenjie1@gmail.com d9ee0e015a Added Sky Hussar. 2011-06-17 14:30:48 +00:00
guzhenjie1@gmail.com fe3aaeabbf Corrected Brainspoil. 2011-06-16 15:08:02 +00:00
wrenczes@gmail.com 741f662bb0 Tied in my recent Android flick gesture addition to a Scroll() function. GameState now has a virtual function OnScroll() call that, by default is a no-op; each game state can choose to override how to respond to flick gestures. I've added one such override in the Deck Editor so that a flick up/down acts like the psp button up/down for scrolling between color filters. 2011-06-15 09:52:11 +00:00
wrenczes@gmail.com e1dc1afa74 Another usability improvement to the touch interface: added a timer for the delta between finger down/up. A 'tap' has to be under a 1/4 second for it to act as a double-click. 2011-06-15 09:01:26 +00:00
guzhenjie1@gmail.com c49595bbf2 Corrected Shrine of Burning Rage and Shrine of Loyal Legions. 2011-06-14 15:31:27 +00:00
guzhenjie1@gmail.com 031d13b774 Corrected Dismember, Fleshwrither, Leonin Relic-Warder and Spire Monitor. 2011-06-13 12:26:16 +00:00
wrenczes@gmail.com 9e6154076b Added the concept of a 'flick' gesture. This uses the VelocityTracker object in Android and passes the velocity info down as an SDL joystick trackball event. We can then reinterpret this event in whatever way we like, such as up/down swipes in the deck editor (that was my initial thought, at any rate).
TBD:  right now every up finger generates this event.  We probably want to throttle it to only be an event if the velocity exceeds some arbitrary threshold;  similarly, if we generate a flick event, we probably don't want to simultaneously generate a finger up action (ie JGE_BTN_OK).
2011-06-11 10:30:38 +00:00
wrenczes@gmail.com b2eaa3cb8d Multiple finger events now translate correctly into an SDL_MULTIGESTURE. I still haven't mapped this into anything meaningful, but all least the wiring is now present. 2011-06-11 09:03:21 +00:00
wrenczes@gmail.com 56a8bed0e3 More work on Android touch events. Fixed the issues I was having with busted float coords, and added some logic for a different way to deal with selection. Doubleclicking is no longer required; instead, if you generate a finger up event within 50 pixels of where you fingered down, this will be treated as an JGE_BTN_OK event. I think this feels more natural, as you can drag around in a menu or to various cards; then when you find your selection, simply touching it again once triggers the selection. 2011-06-11 06:59:32 +00:00
wrenczes 97dfc9f4bc Fix up passing by address on the float values. This is leftover crud from my attempts to pass float* instead of by value. I still can't make sense of what's wrong with the FingerDown calls - the mouse calls pass values in correctly, but the touch calls seem to corrupt the stack. 2011-06-08 09:57:43 +00:00
wrenczes@gmail.com c859d35c0b More incremental work on getting touch commands on Android. I've pinpointed a nasty problem that looks possibly like a compiler bug - the float values that are passed into SDL_SendFingerDown() are coming out junk on the other end. Probably an extra push of something on the stack, as when I tried using pointers to floats instead, the y value showed up in the x position. 2011-06-07 16:43:44 +00:00
guzhenjie1@gmail.com 4568f66a66 Corrected Storm World. 2011-06-07 12:22:36 +00:00
wrenczes f7cad41013 Checkpoint on getting touch events to come through SDL. This (deliberately) breaks the mouse emulation & cripples input on Android, as those calls are being replaced with real finger down/up/motion commands instead. More to come... 2011-06-07 00:32:26 +00:00
wrenczes 92dd1f2d40 Cleanup - unused files. 2011-06-07 00:27:13 +00:00
Xawotihs 4bf255596f Activated mouse tracking in option and award menus. Activated offset support in SimpleMenu, it should help for issue 674 2011-06-04 16:22:45 +00:00
solo81@web.de 715d498bce Added Shimmer Myr and a test for 'forcedalive'. 2011-06-03 20:16:41 +00:00
Xawotihs 40208c4835 Fixed issue 674 for deck selection in menu by mouse/touch 2011-06-03 20:01:50 +00:00
wrenczes@gmail.com a4964f944c Fixed my centering code - I forgot that we always draw in terms of psp sizes, so when I'd toggle to doublesize / full screen, the centering code was way off for the menu as it was using screen resolution instead. 2011-06-03 02:29:06 +00:00
wrenczes@gmail.com bed971c84c Last of my warning cleanup - as of this revision, all warnings in the windows build are gone. I've turned on the 'treat warnings as errors' option in the mtg project to mirror our makefile behaviour on psp. 2011-06-03 01:07:48 +00:00
omegablast2002@yahoo.com cb9e5f2e95 as requested by doc, added a tag for lords to allow an over-ride for effect so theyre not removed from the game by GameObserver until the lords remove it themselves.
ie:
Card Name:
Quick Sliver
Mana Cost:
Converted Mana Cost:2
Types:Creature — Sliver
Card Text:Flash
Any player may cast Sliver cards as though they had flash.

without an over-ride testdestroy removes the observer before it can be any use to us.

i only enabled this for the lords/this'es....
2011-06-02 23:46:44 +00:00
wrenczes@gmail.com 2b512f1f92 Stubbed out the auto-generated afx includes. They're not strictly needed for the icon inclusion. 2011-06-02 20:30:09 +00:00
wrenczes@gmail.com 842ba7aa56 Added a 'W' application icon for the Windows version. Could be improved - I didn't spend much time on it, and I also didn't bother with making versions for large icon mode, but better than nothing. 2011-06-02 18:29:23 +00:00
wrenczes@gmail.com 945c2601d0 Fixed the SimpleMenu to recenter itself as its default behaviour during construction. (You can still override it to position it explicitly if needed.) This fixes the bad alignment of the menu when you'd select single player & the hermit mode was unlocked. 2011-06-02 18:27:00 +00:00
wrenczes@gmail.com 7c65191faa Fix the build - missed submitting a change that was a part of my warnings cleanup, was open in another changelist. 2011-06-02 17:11:10 +00:00
guzhenjie1@gmail.com 383e5ed9bb Corrected Sylvan Might and Troubled Healer. 2011-06-02 13:49:28 +00:00
wrenczes@gmail.com 5b8ecd0cf7 More warning cleanup - converted certain class functions to return bool instead of int where appropriate. Also fixed the sdl update() tickCount assignment that I just broke in my last checkin. 2011-06-02 07:01:42 +00:00
wrenczes@gmail.com 90b1058ad5 More warning cleanup (type to type conversion warnings). 2011-06-02 06:14:28 +00:00
wrenczes@gmail.com 4018d17370 more compiler warning cleanup. 2011-06-02 05:48:37 +00:00
wrenczes@gmail.com 382fb5969d Reverted out changes to JFileSystem - WIP, not meant for the tree yet. 2011-06-02 05:39:06 +00:00
wrenczes@gmail.com a06558be55 Some warning cleanup involving (seemlingly unintended) bool to int conversions. It seems that the original design intent was to pass down IDs to the base class JGuiObject, but certain classes broke the pattern with their constructors.
(One could argue that this ID is completely meaningless and could be entirely ripped out, as the IDs obviously never made it to their intended target...)
2011-06-02 05:33:45 +00:00
guzhenjie1@gmail.com dcfbff6216 Corrected a typo in Vampiric Sliver.
Corrected rarity of Phyrexian Juggernaut, id of Glissa, the Traitor and Glissa's Courier in MBS _cards.dat.
2011-05-31 11:39:38 +00:00
techdragon.nguyen@gmail.com 040efab94c enable file sharing for iOS port. This is allows users to copy RES files directly into application 2011-05-29 09:46:27 +00:00
wagic.the.homebrew d32ffc5e10 Moved a bunch of old tests related to (fixed) issues to the tests folder, and added them to the tests list 2011-05-29 07:10:14 +00:00
wagic.the.homebrew 34311a4499 - Removing "mCount" variable from GuiLayers 2011-05-29 04:40:13 +00:00
omegablast2002@yahoo.com 4e86981231 fix for issue 642. noticed thier is a whole slew of bugs in story mode that didn't exist before. this mode has been neglected and we should consider taking some time to bring it back up to standard.
i'll open some tickets for it later.
2011-05-28 23:31:45 +00:00
wrenczes 0476eaf5f3 Reimplemented the 3 way 'F' toggle for psp size / double psp size / fullscreen in the SDL code path. 2011-05-28 07:13:13 +00:00
wrenczes@gmail.com 68cffde7de Refix on issue 634. Calling EndInstance() on the DeckManager wasn't the right fix here, as it blows away all the instance data and basically nullifies the advantage of caching all the stats data. From what I could see, the problem was more a case of when a new deck was targetted, if no stats file was already present for the new deck, the old values from the previous player deck would persist. Now we clear these up before attempting to assign new values, so if the stat info doesn't exist, it'll show 0 matches / victories /etc instead of stale data belonging to another player deck. 2011-05-28 05:00:40 +00:00
wrenczes@gmail.com 15fa0e6c34 Fixed a loud warning. 2011-05-28 02:28:07 +00:00
Xawotihs 58577bb7ec Fixed SDL full screen mode. Couple of cleanups. 2011-05-27 20:56:50 +00:00
guzhenjie1@gmail.com aeaa7fc7bb Corrected Lord of Shatterskull Pass. 2011-05-27 11:35:36 +00:00
wrenczes fa1abdc9d4 Project filters to split the SDL sources into /inc & /src folders. 2011-05-27 04:58:21 +00:00
Xawotihs 3397c3f785 Aligned SDL keybindings on Windows ones. Kept a couple of other ones for
Android as well. Issue 671 is now fixed.
2011-05-26 21:38:45 +00:00
Xawotihs 0e26368c89 Fixed JGE key binding in SDL config 2011-05-26 21:24:17 +00:00
guzhenjie1@gmail.com 5cf764310e Corrected Etched Monstrosity. 2011-05-26 15:27:03 +00:00
wagic.the.homebrew a84eb8dc22 -Fix for issue 583 (fireball crash)
-- converted an array into a vector to avoid weird edge cases
-- fixed bugs with array "backupTargets"
2011-05-26 12:27:44 +00:00
wrenczes ffda1d0548 style formatting, some warning cleanup. 2011-05-25 06:59:44 +00:00
guzhenjie1@gmail.com 3152f69088 Corrected a typo in Llawan, Cephalid Empress. 2011-05-24 14:16:02 +00:00
omegablast2002@yahoo.com 31ed7d38e6 removing unused variables... 2011-05-24 03:46:06 +00:00
Xawotihs 07ca0c19c3 Fixed postbuild event when path contains spaces 2011-05-23 20:28:18 +00:00
Xawotihs 00aa339a1b Fixed linking problem 2011-05-23 18:14:04 +00:00
omegablast2002@yahoo.com 69d6b6d5a8 removed the flying text from stonehewer... 2011-05-23 15:21:36 +00:00
omegablast2002@yahoo.com 868b8b186b changing one line 2011-05-23 14:47:11 +00:00
omegablast2002@yahoo.com 50439ed458 updated rules.txt 2011-05-23 11:47:13 +00:00
omegablast2002@yahoo.com 0727343ebe first moved the def of handsize for a game into the rules.txt as discussed with wololo...
this update requires you to update your rules folder files!!!

2nd
added 2 new vanguard game modes.
Stone Hewer Basic - when ever a creature enters play, a random equipment with a converted mana cost less than or equal to that creature is put into play and attached to it.
this mode is unlockable, requirement = win a match where 10 or more equipment were in the battlefeild at the moment you won.

Hermit Druid basic- in this game mode, during each of the players upkeeps, a random land card from their deck is placed into the battlefield, these do not count against your 1 land per turn limit.
to unlock this, win any match with less then 10 lands.
2011-05-23 11:46:04 +00:00
guzhenjie1@gmail.com a863b68a30 Corrected Golem-Skin Gauntlets. 2011-05-23 11:02:55 +00:00
Xawotihs 7ba1ef14bb - Modified the windows project to use SDL as DLL, so that we all get mouse support now.
- I think I fixed issue 664, it's funny how the problem is visible on Windows and on some HTC devices but totally absent on Linux and some Samsung devices
- The SDL fullscreen is not working that good, it would need to be improved.
2011-05-22 21:47:31 +00:00
Xawotihs 3b0f47c420 Added SDL VS 2010 project and fixed some compilations and small resize bug 2011-05-22 21:35:19 +00:00
guzhenjie1@gmail.com c399262f30 Corrected following cards:
AEther Membrane
Abomination
Basalt Golem
Cockatrice
Contempt
Deathgazer
Defiant Vanguard
Dread Specter
Dread Wight
Goblin Sappers
Greater Werewolf
Heat Stroke
Infernal Medusa
Ohran Viper
Sawtooth Ogre
Serpentine Basilisk
Silent Assassin
Sosuke, Son of Seshiro
Tangle Asp
Thicket Basilisk
Time Elemental
Tolarian Entrancer
Venom
Wall of Tears

[combatends]
 ==> 
[combatends once]
2011-05-22 13:42:48 +00:00
solo81@web.de 17efa1c5d1 Fixed Undiscovered Paradise. 2011-05-22 11:53:14 +00:00
guzhenjie1@gmail.com b52c5ae45c Corrected Azorius Herald, Shoreline Ranger and Tolarian Entrancer. 2011-05-22 09:47:57 +00:00
guzhenjie1@gmail.com b282691c13 Corrected Vengeful Dead and Entrails Feaster. 2011-05-21 14:15:20 +00:00
guzhenjie1@gmail.com eaf129a490 Corrected Decree of Savagery and Sunfire Balm. 2011-05-20 11:20:33 +00:00
omegablast2002@yahoo.com 24049d3da4 fixed a reported bug with blood chief accession, the cause was a goof up in logic, in the refactor to this section, foelost( parsing was changed to be its bool for lifelost....however since it was changed and we now didn't declare that "foelost(" was "found"...found was a null variable when we tried to atoi it.... 2011-05-19 12:35:35 +00:00
omegablast2002@yahoo.com 426cc68950 fixed a bug where "becomes(" was no longer giving more the a single ability to a card, example, inkmoth nexus would only gain flying, and not gain infect, this i imagine was due in part to a goof up...we split the string at the top by comma, in the refactor for this section it was changed to be either "" or becomesblah[2] <--this is incorrect, becuase what if a card would gain 2 abilities or more ...the we need to append the rest of the split portions back into the abilities string for adding.
also a piece that didn't get in my last commit, nothing big just 2 lines...not sure why on earth it didn't commit them before...
2011-05-19 12:17:53 +00:00
guzhenjie1@gmail.com 4a4066d145 Corrected Moltensteel Dragon, Tormentor Exarch and Whipflare. 2011-05-19 10:52:02 +00:00
solo81@web.de 135aba6d03 Fixed Myojin of Cleansing Fire. 2011-05-17 20:45:27 +00:00
guzhenjie1@gmail.com 2110b7e972 Added text of Glimmerpost. 2011-05-17 15:23:12 +00:00
omegablast2002@yahoo.com 4793ba76bb taught ai how to use ability fizzlers such as Glen Elendra Archmage...reworked fizzle to cover both cases of ai trying to target a card on the stack. 2011-05-17 13:58:28 +00:00
wagic.the.homebrew 9b63553c3e - Minor code cleanup (removed AABanishCard class and unused banishmentType variables) 2011-05-16 23:41:52 +00:00
wagic.the.homebrew 480875d57a - Subtypes "getValuesById" now returns a reference
- Minor cleanup of Transformer per one of my comments a few days ago.
2011-05-16 23:19:08 +00:00
omegablast2002@yahoo.com 39420a911f 3 fixes,
first you are not allowed to mulligen the opponents hand.

second persist was using the stack on its returning effect, this is incorrect as per MTG rules for persist, the card is supposed to go from the grave directly to inplay(grave -> temp -> inplay, in our case).

third, tokens models don't have names, so i make it check now for a name size on the model before clearing and resetting in tranformer.
2011-05-16 18:36:47 +00:00
guzhenjie1@gmail.com 60e9736ef3 Removed code "from(hand)" in following cards:
AEther Sting
Angel's Feather
Angelic Arbiter
Argothian Enchantress
Aurora Eidolon
Baku Altar
Balefire Liege
Ballynock Trapper
Battlegate Mimic
Battlewand Oak
Belligerent Hatchling
Blademane Baku
Blind Creeper
Bog Gnarr
Bounteous Kirin
Briarknit Kami
Celestial Ancient
Celestial Kirin
Chimeric Egg
Cinder Pyromancer
Cloudhoof Kirin
Contemplation
Deathbringer Liege
Deep-Sea Kraken
Demon's Horn
Desecration Elemental
Dragon's Claw
Dreamcatcher
Drooling Ogre
Dwarven Patrol
Earthshaker
Ebon Drake
Elvish Handservant
Emberstrike Duo
Enchantress's Presence
Enigma Eidolon
Entropic Eidolon
Fable of Wolf and Owl
Fiddlehead Kami
Forced Fruition
Forgotten Ancient
Furious Assault
Gelectrode
Gilt-Leaf Archdruid
Glade Gnarr
Glimpse of Nature's Draw
Gloryscale Viashino
Goblin Cohort
Golem Foundry
Golem's Heart
Gravelgill Duo
Guardian of Solitude
Halcyon Glaze
Hand of the Praetors
Haru-Onna
Havoc
Heartwood Storyteller
Hidden Ancients
Hidden Gibbons
Hidden Guerrillas
Hidden Predators
Hidden Spider
Hikari, Twilight Guardian
Horizon Seed
Illusory Demon
Innocence Kami
Insight
Inspired Sprite
Ishi-Ishi, Akki Crackshot
Jackalope Herd
Jade Idol
Kaervek the Merciless
Kami of Fire's Roar
Kami of Tattered Shoji
Kami of the Hunt
Kami of the Painted Road
Kami of the Waning Moon
Kiln Fiend
Kiri-Onna
Kodama of the South Tree
Kor Firewalker
Kor Spiritdancer
Kraken's Eye
Kurgadon
Leering Emblem
Leonin Battlemage
Loam Dweller
Loyal Gyrfalcon
Lys Alana Bowmaster
Lys Alana Huntmaster
Manaplasm
Memory Erosion
Merrow Levitator
Mesa Enchantress
Mirran Spy
Mogg Conscripts
Mogg Sentry
Mold Adder
Nettle Sentinel
Nightsky Mimic
Nikko-Onna
Norin the Wary
Noxious Hatchling
Ogre Recluse
Onslaught
Opal Archangel
Opal Caryatid
Opal Champion
Opal Gargoyle
Opal Guardian
Orbweaver Kumo
Ore Gorger
Oyobi, Who Split the Heavens
Painsmith
Pangosaur
Paradise Plume
Predatory Hunger
Presence of the Master
Primordial Sage
Pristine Angel
Pyrostatic Pillar
Quill-Slinger Boggart
Quillmane Baku
Quirion Dryad
Reki, the History of Kamigawa
Riddlesmith
Riverfall Mimic
Safehold Duo
Sandstorm Eidolon
Scaled Hulk
Shorecrasher Mimic
Sigil of the Empty Throne
Sire of the Storm
Skittering Horror
Skittering Monstrosity
Skittering Skirge
Skullmane Baku
Snake Pit
Soilshaper
Sol'kanar the Swamp King
Soot Imp
Soul of Magma
Spellshock
Sphinx-Bone Wand
Straw Golem
Sturdy Hatchling
Surrakar Spellblade
Tangleroot
Tattermunge Duo
Taurean Mauler
Teller of Tales
Thief of Hope
Thistledown Duo
Thorntooth Witch
Tibor and Lumia
Tidespout Tyrant
Titania's Chosen
Vedalken Archmage
Veil of Birds
Veiled Serpent
Veilstone Amulet
Verdant Eidolon
Verduran Enchantress
Voracious Hatchling
Warmth
Wee Dragonauts
Witch-Maw Nephilim
Woodlurker Mimic
Wurm's Tooth
Yawgmoth's Edict
Yuki-Onna
2011-05-16 11:37:42 +00:00
techdragon.nguyen@gmail.com a66dc389e2 fixed logic bug for length of src variable in filter. When src is modified the local var representing
its length should also be updated.
2011-05-15 18:41:40 +00:00
wagic.the.homebrew 2f3e6b56e5 - Fix for issue 660 (changelings have become slower)
-- I removed the string comparison, which was expensive (the test is not necessary anymore, since it was "shielding" us from fake types (names), which are not creature subtypes, and therefore do not go through). I also moved one function call outside of the loop, just in case that wasn't optimized by the compiler.
- Removed unused Subtypes.cpp function (I don't really want people to use it, it can be quite expensive if used incorrectly)
- moved a test for issue 501 that has been fixed a while ago (we forgot to add the test to the test suite)
2011-05-15 14:38:41 +00:00
omegablast2002@yahoo.com 2ab3d27cd1 changed wild growth back to its original state...doc be more careful please :) 2011-05-15 13:37:07 +00:00
solo81@web.de 2cf412ed98 Fixed Lavalanche and Spitting Spider. 2011-05-15 07:42:56 +00:00
guzhenjie1@gmail.com d8dfcb0f0c Corrected rarity of Kiln Walker. 2011-05-13 15:06:45 +00:00
guzhenjie1@gmail.com 67dd911c94 Corrected following cards:
Beast Within
Sword of Body and Mind
Sword of Fire and Ice
Sword of Light and Shadow
Sword of War and Peace
2011-05-13 11:12:40 +00:00
techdragon.nguyen@gmail.com ff6d6e56fe related to issue 655. The change to bitwise representation of mana required some changes in the deck output methods. 2011-05-13 03:40:38 +00:00
techdragon.nguyen@gmail.com 28cd4acaf8 In the most recent update of the basic abilites this iterator was changed to a standard for loop. However, the condition of when to stop was never written, thus when you saved as AI deck, you either ran into an out of bounds error or some other exception.
This seems to have fixed the bug.  
Issue: 655
2011-05-13 03:28:59 +00:00
guzhenjie1@gmail.com f6d18eb3e3 Corrected following cards:
Alabaster Dragon
Angel of Fury
Aurification
Dripping-Tongue Zubera
Dusk Urchins
Ember-Fist Zubera
Floating-Dream Zubera
Silent-Chant Zubera
2011-05-12 12:54:08 +00:00
techdragon.nguyen@gmail.com 0a2af52545 Issue 656: game will now work out of the Documents directory. All settings and changes are saved and read from that directory now. TODO: Need to find a mechanism to allow updates to code without having to delete the app entirely. (hence the player data as well) Perhaps implement an option ingame to allow player to download images to the repository. Perhaps a front-end that allows users to first update the app with card images before starting the game. 2011-05-12 00:45:17 +00:00
solo81@web.de efd857e314 Recoded Essence Sliver. Should be the final version.
auto=lord(sliver) transforms((,newability[spiritlink]))
2011-05-11 11:23:05 +00:00
solo81@web.de b4ddecb16b Fixed Muddle the Mixture and Essence Sliver. 2011-05-11 08:39:36 +00:00
wagic.the.homebrew@gmail.com 1ee3c9eccc - revert r3645
- fix memory leak in GenericInstantAbility
2011-05-11 08:06:53 +00:00
wagic.the.homebrew@gmail.com 413926515f removing VC2008 solution file, to avoid further confusion by VC2010 owners 2011-05-11 01:00:00 +00:00
omegablast2002@yahoo.com 2c9d029bdc fixed a memleak introduced in r3639..
i also changed the logic behind wololo "ueot " instant ability creator...instead of sending it directly to genericinstantability i created a new class called AGenericInstantWrapper...which handles the adding, cloning, removel ect, exactly how we have always handled "instant abilities"...this should correct any further "odd edge case" issues with the new "ueot " code...

later i will varify if it works with every single ability we current build with a wrapper class...and see if i cant remove them all and convert "ueot " into the NEW until end of turn handling method....lets cross our fingers as it would remove ALOT of extra code if successful....
2011-05-10 18:52:51 +00:00
omegablast2002@yahoo.com 5a1540e0a1 added line
offerinterruptonphase=draw

to MTG.txt, which is included in the other modes by default...to recreate our "chance to do stuff on ais turn...
it will say you are interrupting "draw"...but i will clarify that you are intterupting the MOVE TO phase "draw"...not the action of drawing a card...
this is even better then our previous method to do stuff on ai's turn, becuase now we can play cards that prevent ais draw ect :) becuase before we were interrupting the action of drawing for the turn...
2011-05-10 17:11:52 +00:00
omegablast2002@yahoo.com e275a599b7 ok this may, or may not get me yelled at...but i can explain why i do it in rules...so don't kill me :(
added 
"offerinterruptonphase=blah"
to the parsing of the rules.txt files...the reason i want to handle it inside the rules.txt....
originally i was going to use the options variable for this, then i realized that if i use that variable, it would apply it to every game mode and peoples custom games...so instead i added the parsing in the actual rules.txt files, this way, if we want to offer interrupt on phase blah to MTG, but NOT have this interrupt offered in a mod or different mode, or if the different mod or mode should offer you a chance to interrupt ai in a different phase ...you can set each rule to interrupt in the phase you want...

now for the reason i added it in the first place...previously we were allowed an interrupt when the opponent drew a card in the draw step, this gave us a chance to do stuff on opponents turn....
recently wololo i beleave made draw actions not use the stack anymore(which was a good change, since as per MTG rules the actions of drawing is not a stack action)...but as a side-effect, we lose our chance to interrupt ai and do stuff on ais turn....

also, changed the ingame bonus thing, to start recording stuff towards bonuses on turn 2+...this solves reported issues with story mode "setting up" causing massive bonuses to be gained for doing nothing.....
2011-05-10 17:08:08 +00:00
omegablast2002@yahoo.com e9a2b2f495 added a guard against removing aloseabilities from a card which already has an active aloseabilities, we generally dont want these to remove each other...this also fixes a mem leak i created in the previous fix for an infinate loop this was creating, i left that fix in place just in case some crazy edge case would add it to a card again. 2011-05-10 14:40:54 +00:00
omegablast2002@yahoo.com 8c2c0ae8de made it an else transformer removetypes...reason, you are either
removing the types, removing all types, or adding a type...not ever doing them all in a single transforms.
2011-05-10 14:34:49 +00:00
techdragon.nguyen@gmail.com ac6fd6bbf8 setting default orientation for iPhone and iPad.
restricted iPhone to landscape mode only.
2011-05-10 12:37:41 +00:00
wagic.the.homebrew aed68a2cd9 Fix for issue 652 (Use Tidal warrior several times causes a crash) 2011-05-10 11:37:46 +00:00
omegablast2002@yahoo.com da1ec8eed3 moved the readding of types below the removel of abilities incase a becomes would be used as a newability.
2nd, found a infinate loop is created when you cast a loseabilities on a card which has loseabilities, when the 2 effect ends it readds the first one, before it is removed, making the first one remove the 2nd one and repeat forever....

this is only a half fix, it created a memleak in the place of the loop :/ so wololo please review!!!
2011-05-09 19:42:30 +00:00
omegablast2002@yahoo.com 8737aec005 couple tweaks to transforms to it doesn't add subkeywords as types....
2nd, removed a peice of code which was originally added i imagine before list mentioner was created which added cards whos names ended in "s" to the subtypes list, this is completely unrelated to the "s" charector added to targetchooser. this was actually a really nasty hack....
previous subtypes list contained 1200 variables...the new one after this removel is about 237ish....

this does not impact foreach, or any targetchoosers ability to target a card by name, targetchooser is coded to add card names to the subtypes list as it needs them, so using foreach(arbor elf) will add this to subtypes list for targeting purposes, in the future we might want to have this kind of check done and handled outside of the subtypes list, adding card names to that list for the purpose of targeting is just dirty.

this fixes a ugly lag spike introduced with the change to subtypes...for now...we need to consider a better way to sort these in the future to avoid this returning as subtypeslist gets bigger.
2011-05-09 18:10:10 +00:00
omegablast2002@yahoo.com 6d4f0c024c updated "removesubtypes" with "removecreaturesubtypes" 2011-05-09 16:35:44 +00:00
omegablast2002@yahoo.com 01cfbf5a02 couple bug fixes, changed a subkeyword of transforms "removesubtypes" to "removealltypes" remove all the types of the card, added "removecreaturesubtypes" to maintain previous support it was used for. 2011-05-09 15:55:34 +00:00
wagic.the.homebrew b1ea63cd79 changed Subtypes map into a vector, hoping for some speed improvements. 2011-05-09 13:56:22 +00:00
guzhenjie1@gmail.com 7447a451eb Corrected a typo in Urborg, Tomb of Yawgmoth. 2011-05-09 11:40:29 +00:00
solo81@web.de 465163cf3b Added a test for Celestial Sword, representing a small card group with complex "newability" structures. 2011-05-08 13:51:30 +00:00
omegablast2002@yahoo.com f8406e9de2 fix for maxcast...the currentPlayer is not always the game->currentlyActionPlayer...in the cast of maxcast and play, we want to check restrictions vs the currentAction player.... 2011-05-08 13:38:12 +00:00
techdragon.nguyen@gmail.com 0f4656453f added mtg.txt to project for easy reference 2011-05-08 13:06:19 +00:00
omegablast2002@yahoo.com 96c636643a it was reported to me that the new phrexian mana should add to the cards converted mana cost...so a card which cost {b}{p(r)}{p(r)} should be 3 converted... 2011-05-08 12:49:39 +00:00
omegablast2002@yahoo.com 27df1e9172 removed a check that was causing gem hide sliver lorded manaproducer to not reacttoclick...i moved the check for extra cost to activatedability, so this became obsolete.... 2011-05-08 11:59:08 +00:00
techdragon.nguyen@gmail.com 82058e97c5 * fixed some formatting
* pruned out unused local variables. 
----  There's no need to define something if it isn't going to be referenced. It consumes extra memory temporarily and more than anything is a potential cause for confusion down the road.
2011-05-08 11:56:25 +00:00
omegablast2002@yahoo.com 2c34aaf8a5 fixed a bug intruduced by a refactor to the parsing of transforms ability with caused "newability" to be split incorrectly...im sure it was a mistake, or maybe rushed? at the point this code is "parsing between" the abilities have already been split up...all we do here is erase the "newability[" and last of "]" from the string.... 2011-05-08 09:32:07 +00:00
Xawotihs@gmail.com 18a75cd7f8 Recommit xcode project, something was broken 2011-05-08 09:31:32 +00:00
wagic.the.homebrew 2c0b5baab7 Fix for issue 647 (Evil Presence cast on a swamp removes mana ability) 2011-05-08 09:06:56 +00:00
solo81@web.de b2ba514d7a Fixed Decomposition. 2011-05-08 08:09:51 +00:00
solo81@web.de 9d39974fa6 Fixed Tumble Magnet's card text. 2011-05-08 07:52:28 +00:00
wagic.the.homebrew 47ed4e5e70 Fixing Rancor, which was broken (mistake?) in r3620 2011-05-08 06:50:42 +00:00
solo81@web.de f4ffef6934 Fixed Midsummer Revel. 2011-05-07 23:36:08 +00:00
solo81@web.de 03f102693d Added 28 cards based on rev3595.
Blanket of Night
Blood Moon
Contaminated Ground
Conversion
Dream Thrush
Dreamwinder
Evil Presence
Floodchaser
Glaciers
Grixis Illusionist
Humble
Kavu Recluse
Kukemssa Serpent
Lingering Mirage
Magus of the Moon
Moonbow Illusionist
Mystic Compass
Reef Shaman
Sea Snidd
Sea's Claim
Spreading Seas
Stormtide Leviathan
Streambed Aquitects
Tainted Well
Thelonite Monk
Tideshaper Mystic
Unstable Frontier
Zombie Trailblazer
2011-05-07 21:08:15 +00:00
Xawotihs 883f92d8e2 Fixed IOS build 2011-05-07 17:10:01 +00:00
wagic.the.homebrew e713122e7f fix PSP build 2011-05-07 12:43:00 +00:00
wagic.the.homebrew ab33d29682 - Fixed a bug where the AI would block its own attacking creatures (I reintroduced that bug recently when I removed a safeguard Zethfox had added a while ago)
- Added a way to specify "no interrupt" in modrules.xml (I need to write a doc about this file) for a given game. This does not mean the stack does not show up (the stack is interesting to see what the opponent does), but that it only offers to continue.
2011-05-07 11:58:37 +00:00
wagic.the.homebrew fe276ca330 Minor code cleanup in ActionStack 2011-05-07 10:12:45 +00:00
wagic.the.homebrew d652f754d8 Moved "static" mana render a bit to the right for opponent, to avoid rendering it over the opponent's avatar 2011-05-07 08:44:07 +00:00
wagic.the.homebrew 3e4dc43c1c Adding License information for Wagic and its resources, please review (should the main LICENSE file made much more complete, and copy the contents of the subfolders' LICENSE files ?) 2011-05-07 08:37:12 +00:00
wagic.the.homebrew 472d593563 remove "cleanup" phase being automatically added to custom phase ring. People who want it should add it manually in their custom ring. 2011-05-07 04:48:56 +00:00
wagic.the.homebrew f96635541d - Fix for issue 650 (tidal Warrior effect doesn't end at end of turn)
- Fix PSP compilation
2011-05-07 04:10:47 +00:00
wagic.the.homebrew 062d5f9485 Fix issue 650 (Deck Editor doesn't count basic land types as mana producers anymore, Filters can't find basic mana ability producers anymore) 2011-05-07 02:42:49 +00:00
wagic.the.homebrew b26bfb09bd Fix Build error on psp 2011-05-06 13:46:20 +00:00
wagic.the.homebrew 2f498780a2 Fix: Mana Producers don't use the stack (there already was a partial fix I believe, this one fixes issues with triggered abilities) 2011-05-06 09:01:27 +00:00
wagic.the.homebrew 7beb958067 Adding a way to mark decks as "locked" based on options requirements (option on or off). Can be used for example to lock a deck until a specific set is not unlocked. Works for both player decks (could be used for premade?) and AI decks. 2011-05-06 06:40:00 +00:00
wagic.the.homebrew efad3f652f Minor refactor of menu text for "move" abilities. Zeth, Dr.Solomat, please let me know if something goes wrong. 2011-05-06 04:43:27 +00:00
wagic.the.homebrew 12228b51a0 - Minor refactor of "transforms" ability
- Updated changeling and transforms to only get creature types (as initially intended by the code), removed hardcoded list of "types to avoid"

The test suite passes
2011-05-06 03:52:35 +00:00
wagic.the.homebrew 1e2ed785eb Fix for issue 646 (Tidal Warrior) 2011-05-06 02:27:49 +00:00
wagic.the.homebrew 691a1e1b91 - Fixed a Bug where AI would not block any attacker in Demo mode (bug introduced in r2759)
- Fixed a Bug where AI would not correctly assign blockers if the first attacker is super strong.
- Added a hack to prevent AI from an infinite loop while choosing a target. There are edge cases where the AI gets to choose the targets for a TargetChooser that doesn't belong to it. I couldn't dig too long for the root cause, so I added a "return 0" when the case happens. Should probably open a ticket
- Added a "Hint" System in AI decks, to help the AI with its strategy. This is not really usable yet, it only works with abilities (not cards to play), and I only added some basic code for counters and tokens. This can probably be extended, but let's wait until we see it working on that other game I'm working on, before rushing into adding hints to all AI decks...
- minor cleanup of AI Code
2011-05-05 14:27:46 +00:00
guzhenjie1@gmail.com f0820697f8 Corrected following cards:
Aspect of Mongoose
Brilliant Halo
Cessation
Despondency
Endless Cockroaches
Fallen Ideal
Fiery Mantle
Fool's Demise
Fortitude
Glistening Oil
Launch
Rancor
Shivan Phoenix
Sleeper's Guile
Sluggishness
Spine of Ish Sah
Spirit Loop
Spreading Algae
Undying Rage
Weatherseed Treefolk

autograveyard=@movedTo(this|graveyard) from(battlefield):moveTo(myhand)
 ==> 
autograveyard=@movedTo(this|graveyard) from(battlefield):moveTo(ownerhand)

Twilight Shepherd
auto=moveTo(myhand) all(creature[fresh]|mygraveyard)
 ==> 
auto=moveTo(myhand) all(*[fresh]|mygraveyard)

Undying Beast
autograveyard=@movedTo(this|graveyard) from(battlefield):moveTo(myhand)
 ==> 
autograveyard=@movedTo(this|graveyard) from(battlefield):moveTo(ownerlibrary)
2011-05-05 12:01:10 +00:00
wagic.the.homebrew 748af5b461 - Adding a generic "ueot" effect. This will be initially confusing, but the ultimate goal is to get rid of all the particular cases we handled with "until end of turn" effects. this "ueot " works like "may " and "choice ", it has to be at the very beginning of the ability(ies) it targets. The reason is to avoid conflicts with the existing "ueot" we have all over the place. I have only tested it with transforms and loseabilities for now (see "ovinize") but hopefully this will become the new norm. This should also reduce the code inside the parser, long term.
- Adding "Ovinize" as an example of this new keyword.
- moved "parseBetween" in utils as I am using it in other files for wome work in Progress.
2011-05-05 06:18:50 +00:00
wagic.the.homebrew 4c572a1ffa Fixes for Boosters in the Shop. Fixes issue 644 and issue 621 2011-05-05 05:51:50 +00:00
guzhenjie1@gmail.com 9902b1c74b Corrected a typo in text of Palladium Myr. 2011-05-04 15:34:38 +00:00
wrenczes 5041916fdd Fixed the psp build breakage in r3595. Erwan, pls review - I think that the subtypesToType map probably should be unsigned ints instead of signed, but I wasn't about to sweep through the file right now. 2011-05-04 10:27:18 +00:00
wrenczes bfffb169cf Fixed the psp side - darned implicit casts... 2011-05-04 10:15:38 +00:00
wrenczes 0cb8c50b39 Replaced ManaCost's int array with int8_t. Shrinks ManaCost by another 24 bytes, which in turn lowers CardPrimitive's footprint by the same amount. 2011-05-04 10:02:47 +00:00
wagic.the.homebrew d922d4fe06 - Added "loseSubtypesOf(type)" ability. For example, loseSubtypesOf(land) means "target loses all its land subtypes"
- Added Evil Presence, as an example of the new keywords loseabilities and losesubtypes. It's quite experimental but I added 3 tests that cover the basics. Please report if you find bugs.
- moved the "lands produce mana" rules outside of the primitives, and into the external rules. This was a necessary step to create cards such as Evil Presence. 
- real support for subtypes. Needs some more testing, but there are now functions in Subtypes.cpp to know if a given subtype is a creature subtype, or a land subtype, etc...
- minor refactor of MTGDeck.cpp

Notes:
- I checked that the AI can still use lands
- This change has a bad impact on primitives loading performance (thanks Wil for the loading time output). This is probably due to suboptimal algorithms and data structures for subtypes. If the impact is strong on lowend devices, I can probably optimize a bit (the map subtypesOf could be changed into a vector with some work)
- The test suite passes, added 3 tests for evil presence.
2011-05-04 04:04:03 +00:00
wagic.the.homebrew 494bcf3315 Adding a "loseAbilities" keyword per Dr.Solomat's request. The Goal was to code Evil Presence, but I think there is still some work to do to achieve this. The main concern is that (according to the Miki), neither transforms(( nor "becomes(" allow to lose some subtypes. A land enchanted with Evil Presence is supposed to lose its land subtypes. Since we don't support subtypes that good, I don't think this is possible. Additionally, Evil PResence would require to move "{T}:Add{X}" from the basic lands primitives into the rules (which sounds quite easy to do). I've nevertheless tested this on Gaea's Cradle, and it works. (Gaea's Cradle loses its abilities) 2011-05-04 01:33:34 +00:00
wagic.the.homebrew 810548d816 Minor GameObserver refactor, should have no impact on the game. 2011-05-03 13:46:50 +00:00
wagic.the.homebrew 0b9ff076e6 Please update your rules folder
- "Manapool empties at the end of each step" becomes an ability, and was moved into the external rules file. "removemana(*) to remove all, removemana(*{G}) to remove all green, removemana(*{G}{B}{R}) to remove all green black red, removemana({G}{G}{B}{U}) (no "*") to remove a specific value.
- Added a possibility to make abilities non interruptible. With little work, this could be added to the parser if needed. Please use with care, let's discuss what is an acceptable usage of this now functionality, if needed.
2011-05-03 11:59:27 +00:00
solo81@web.de d8147a0156 Fixed Glistening Oil. 2011-05-02 21:16:44 +00:00
solo81@web.de 4a06f1c9a8 Added Deglamer. 2011-05-02 21:06:08 +00:00
solo81@web.de 3fdd87df66 Fixed Jor Kadeen, the Prevailer. was missing the "Legendary" in its type-line. 2011-05-02 21:00:46 +00:00
solo81@web.de ecdd781f51 Fixed names of Mortis Dogs and Hovermyr. 2011-05-02 20:36:14 +00:00
solo81@web.de 317cea1f76 Fixed Lavaborn Muse. 2011-05-02 20:30:41 +00:00
solo81@web.de f754efd2ee Fixed Lymph Sliver and Crib Swap.
Added Orzhov Basilica. I guess it was deleted unintentionally in the past.
2011-05-02 20:29:21 +00:00
wagic.the.homebrew b7cc42ed67 Moved "reset damage on creatures at cleanup phase" outside of the engine and made it an ability. This is mostly because I need this for the mod I'm working on, but I hope it can be used by others 2011-05-02 14:02:12 +00:00
wagic.the.homebrew 53f45a8b8e cleanup: Remove "computeXX" functions and XX variables, these were always returning X/2 in all cases.
Test suite passes
2011-05-02 11:28:04 +00:00
wagic.the.homebrew 13dd07973e Removing "oldSchoolDeathtouch", as it seems Cockatrice and Thicket Basislisk are now softcoded. Zeth, Dr.Solomat, please review :) 2011-05-02 08:44:02 +00:00
solo81@web.de 2c4efb9cd5 Fixed Urabrask the Hidden in mtg.txt. 2011-05-01 16:36:51 +00:00
wagic.the.homebrew e100bd826c Refactor of the parser. The goal is to reduce maintenance cost, by refactoring some of the most frequent "copy/paste" we have in there. This removes roughly 500 lines, going from 4850 to 4350 lines. I'm getting closer to my goal of getting this file back to 4000 lines :)
Crossing fingers I didn't break anything major. The test suite passes, though I expect some edge case bugs to appear. Apologies in advance, I think this change is worth it.
2011-05-01 15:53:13 +00:00
guzhenjie1@gmail.com 14c56f0510 Corrected following cards:
Gitaxian Probe
Glasses of Urza
Ingenious Thief
Lay Bare
Peek
Persecute
Sorcerous Sight
Talas Explorer
Telepathic Spies
Walker of Secret Ways
Wanderguard Sentry

name(look at opponents hand) target(*|opponenthand)
 ==> 
name(look at opponents hand) target(*|opponenthand) 0/0 ueot
2011-05-01 15:39:42 +00:00
guzhenjie1@gmail.com de12a114e7 Corrected Pith Driller. 2011-05-01 14:17:29 +00:00
guzhenjie1@gmail.com e31dd9dbf5 Corrected some typo in NPH cards.dat 2011-05-01 12:22:17 +00:00
solo81@web.de ed420d4f97 1. Added ",sourceinplay" to:
Arrogant Bloodlord
Ceremonial Guard
Cinder Wall
Fog Elemental
Gemini Engine
Goblin Sappers
Rainbow Vale
Stoic Ephemera
Teferi's Veil
Thawing Glaciers
Time Elemental (only to "sacrifice", not to "damage:5 controller"! --> rules on Gatherer)
Undiscovered Paradise
Vebulid
Wall of Nets



2. Removed ", sourceinplay" from:

Wall of Tears

Following the rules, a creature blocked by Wall of Tears is indeed returned to owner's hand even if Wall of Tears has left the battlefield before the end of combat.

This is the same reason why several cards did not get ", sourceinplay":

Example case for not adding ", sourceinplay":


Tolarian Entrancer

"The control change has no duration; you’ll retain control of that creature until the game ends or until some other effect causes it to change control. It doesn’t matter if Tolarian Entrancer leaves the battlefield, 
or if Tolarian Entrancer has already left the battlefield by the time the “at end of combat” ability triggers".

This is also true for all cards which have a certain effect on other creatures blocking or having been blocked by it. 


3. Added "once" to:

Basalt Golem
Frostweb Spider
Joven's Ferrets
Wicker Warcrawler
2011-05-01 11:08:56 +00:00
solo81@web.de d58e3fe30b Updated Astrolabe and Barbed Sextant by adding the "once" tag to their [phaseaction] code. 2011-05-01 10:23:25 +00:00
solo81@web.de d28847d929 Updated all Clockwork creatures by adding the "once"-tag to their phaseaction code.
Without this change, the Clockwork family was losing a +1/+0 counter at the end of each end of combat after having attacked for the first time.
2011-05-01 10:11:38 +00:00
solo81@web.de a9ca76e77e Added New Phyrexia (NPH). 2011-05-01 09:44:30 +00:00
wagic.the.homebrew 8b6400e12d Cleanup of some trigger parsing 2011-04-30 15:52:48 +00:00
wagic.the.homebrew 0933294ca4 Fix an issue where pressing "triangle" on the PSP in the play menu would crash the game 2011-04-30 13:43:12 +00:00
wagic.the.homebrew 847a11f6ec fix an issue where the PSP would not find the rule files 2011-04-30 11:28:25 +00:00
wagic.the.homebrew cde63ed4be Fix for issue 640 (Keldon Marauders crash on PSP) 2011-04-30 06:44:17 +00:00
wrenczes@gmail.com 3a4eef68ae Fixed an uninitialized var. 2011-04-30 00:42:17 +00:00
wagic.the.homebrew cd07248df5 UPDATE YOUR rules FOLDER!!!
- This is some Work in progress to make Wagic less "game" dependent.
This change especially is an attempt at moving away from some dangerous patents owned by some company.
It introduces "modrules.xml", a global configuration file describing dynamic settings for any given Wagic mod. It is very basic for now, but allows to customize a bit. In particular, it allows to remove the concept of shop and deck editor from the game, dynamically generate the main menu, and represent card activation with a mask rather than a rotation.
I have a sample in progress which I hope to submit in the days to come, a proof of concept (nothing fancy yet) for another type of game using these ideas, as well as a few other things I introduced recently.
In the future, I am hoping to extend modrules.xml so that it entirely describes the rules of a given card game. the other files in rules.txt will describe "extensions" to the core rules, just like they do right now, so this new file does not make them obsolete.


- Also fixed minor bugs I stumbled upon while developing
2011-04-29 17:30:57 +00:00
omegablast2002@yahoo.com 654f4d34bb don't want to include players in this rule. 2011-04-29 14:59:12 +00:00
omegablast2002@yahoo.com 0fba6994a6 fixed a reported bug with @vampired, it was tricky, but ultimately i had to move the building of vampevent outside of TRVampired...the reason being that all instances of TRVamp were able to send and react to other instances of it sending out "vampevents", so move it into rules so only one object handles that, also changed the method it was handled, it now maps the cards with a 2nd vector of the vampires...basically "this card was dealt damage by X, Y, Z this turn"...
let me know if i missed some strange edge case somewhere. as far as i tested, it seems to work just fine.
2011-04-29 13:24:02 +00:00
solo81@web.de 95987c6d87 Removed NPH folder. Was unintended, sorry! 2011-04-28 22:19:59 +00:00
solo81@web.de 72e1d8079e Fixed Nullmage Shepherd + Sword of Feast and Famine. 2011-04-28 22:17:49 +00:00
omegablast2002@yahoo.com 669f8744b6 changed a previous fix a bit, also, altho this is not the "layers system" and we don't really support it, i thought i could atleast support the reapply of p/t bonuses from counters for atransformer...
and while messing around i found out that i forgot an important check in the new kicker with menu, to check if the card was still in the hand :P
2011-04-28 15:17:49 +00:00
omegablast2002@yahoo.com 59a8afb745 reinstating a piece of counters code i commented out which was originally explained to me as a "bug" when infact i found a ruling on it which was added during timespiral block...putting a +1/+1 counter on a creature which has a -1/-1 counter on it does indeed cancel out BOTH counters. good thing i didn't delete it. 2011-04-28 12:35:14 +00:00
omegablast2002@yahoo.com 7840e3cde8 fixed a issue where token workaround revealed that 2 "may" abilities back to back screws up "isInterrupting" player variable..this was only when the may ability contained manaproducers, which truely no longer use the stack in any format. 2011-04-28 10:20:42 +00:00
wrenczes@gmail.com 531c7f20ae Turned back on the shadow drawing. This wasn't meant to be checked in, only temporarily disabled while debugging. 2011-04-28 08:49:53 +00:00
wrenczes@gmail.com ba0f5c4191 Reduced ManaCostHybrid's internals to uint8_t instead of ints. Removed the hardsized array of ManaCostHybrid pointers, and replaced it with a vector of objects, got rid of all the unnecessary new/delete code everywhere.
Also deleted "extraCostsIsCopy" from ManaCost - unused variable.

Overall, drops ManaCost from 148 bytes to 120 (which in turn reduces CardPrimitive's memory footprint by the same amount, since it encapsulates a ManaCost).
2011-04-28 07:49:51 +00:00
wrenczes 8610531bf3 Fixes for exclusion/inclusion combinations of colors or abilities. 2011-04-28 05:01:06 +00:00
Xawotihs 7e4364b484 - Allows writing on sdcard
- Bound "back" key to menu, "volume down" to next phase and "volume down" to interrupt ... like on the N900 :)
2011-04-27 21:19:25 +00:00
guzhenjie1@gmail.com 86042c206a Added "once" limit for following cards with phaseaction[endofturn]:
Blood Frenzy
Brood of Cockroaches
Celestial Sword
Goatnapper
Crazed Armodon
Dark Maze
Dragon Whelp
Farrelite Priest
Giant Caterpillar
Initiates of the Ebon Hand
Mogg Cannon
Puffer Extract
Rainbow Vale
Rukh Egg
Season of the Witch
Surprise Deployment
Transluminant
2011-04-26 15:20:40 +00:00
omegablast2002@yahoo.com 6e6ccddbde fixed a crash witnessed when ai was trying to get the efficiency return of aamover the ai had a target, but the ability did not have a target, when "destinationZone()" was run, the game would crash due to a null pointer.
increase the "random" chance to use unknown, the old method almost always returned 0.
2011-04-26 14:49:15 +00:00
omegablast2002@yahoo.com ef942d46b5 2 changes,
comparing counters to p instead of isAi(), and hope to close off an edge case where ai would get stuck cycling through setting the target of a may ability. caught it stuck 2 times while watching demo. i watched demo for close to an hour without seeing any adverse effect, and without getting stuck, tho this is so hard to debug, since there is no call stack loaded for this case when it happens.
2011-04-26 14:10:57 +00:00
omegablast2002@yahoo.com 2e25d24f20 2 changes
first, subjecting manaproducers built unnested to the same restrictions/limits/sideffects as thier activated ability counterparts...
2nd
allowing either "," or " " to be a seperator for the variables in phaseaction so they can be used in transformer "newability"
if i recieve another bug about phaseaction, im scrapping it completely and recoding it from the ground up.
2011-04-26 12:47:27 +00:00
wrenczes@gmail.com a73fd4e99f Converted CardPrimitive's basicAbilities from a map<int, int> to a bitset. With 92 abilities, that means our base container for abilities is now 16 bytes in size (down from 28), and is a fixed size, whereas the map would grow by 8 bytes per added ability. 2011-04-26 09:35:38 +00:00
wrenczes@gmail.com 425e49e608 Cleaned up some type conversion warnings. 2011-04-26 06:16:49 +00:00
wrenczes@gmail.com f5bd6b2794 Removed ABasicAbilityModifierUntilEOT. Zeth, please review - I started to try to fix the array notation of this class, but then realized that the compiler was optimizing out this class entirely out of the binary - it's not currently used at all. Is this deprecated, and just got left behind..?
(If you do have a reason to put it back, let's find a more compact way to write this.)
2011-04-26 06:15:58 +00:00
wrenczes@gmail.com 46168bfb6d Fixed tab alignment. No code changes. 2011-04-26 06:08:53 +00:00
Xawotihs f2a52edba7 - wait for SDL events intead of pooling them, this allow very smooth CPU usage
- added texture deactivate around each renderer call implemented in opengl es 1.1. It fixes a couple of artifacts but a couple are remaining
- added a compilation switch to allow simulation of opengl es 1.1 on desktop
2011-04-25 21:26:12 +00:00
omegablast2002@yahoo.com 9de076db75 added",once" tag for phaseaction, to denote that the effect is only to happen once before forcedestroy is declared.
auto=@movedTo(graveyard) from(this|battlefield):phaseaction[endofturn,once] token(Bird,Creature Bird,4/4,red,flying)
2011-04-25 14:48:03 +00:00
omegablast2002@yahoo.com cf46404ed1 bracket around wrong section sorry! ai now again uses level up the way it was taught before. 2011-04-25 14:32:47 +00:00
Xawotihs 071facd43d "Full" fullscreen support on Android 2011-04-25 12:48:24 +00:00
omegablast2002@yahoo.com 934e0af004 moved the eventsending for drawing cards into the resolve of adrawer. tho i think this will make this event unusable for "card draw replacement effects"...it really doesn't matter as i don't see card draw replacement being added to wagic any time soon, if ever.
2nd, having levelup and counters return effs separately.
2011-04-25 12:00:33 +00:00
wrenczes@gmail.com 1cbf3db582 Reducing the memory footprint: reworked the concept of 'colors' in CardPrimitives. What used to be an array of ints (ie 28 bytes) is now contained in a single byte, we use bit masking to support setting multiple colors on this variable. This also eliminates a lot of silly loops for setting colors in the code - now it's a straight byte copy.
Also thrown in are a couple of string to const string& conversions.
2011-04-25 11:20:07 +00:00
guzhenjie1@gmail.com b8310838f4 Corrected Serene Offering, Stream of Acid and a typo in Blightsteel Colossus' text. 2011-04-25 10:31:42 +00:00
Xawotihs 137ccdf446 - Activated debug and orientation management in Android manifest
- Coded double-click and orientation change for Android
- Clean up debug code badly introduced in opengl code in r3529
- updated Qt project to link against boost on linux
2011-04-25 10:04:44 +00:00
wrenczes@gmail.com 7a1ed5278a Wrong #define. 2011-04-25 08:42:47 +00:00
wrenczes@gmail.com 3ea5e54d95 Tweaks to allow the file usage statistics utils to run on psp. 2011-04-25 06:26:19 +00:00
wrenczes@gmail.com 0b1808a989 Style formatting. 2011-04-25 05:28:53 +00:00
wrenczes@gmail.com 56ab3ac5cf Minor code cleanup: removed a path to fetch thumbnails in the non-threaded code - at this point, it's trying to draw in text mode, so this shouldn't be here (it was always stepped over because of the options flag, so it was never executing anyway). 2011-04-25 05:26:46 +00:00
wrenczes@gmail.com ea2390e336 PSP specific compile error fix when Object Analytics is enabled. 2011-04-25 05:24:19 +00:00
guzhenjie1@gmail.com e91a6a31a0 Added Preeminent Captain.
Thanks to Spiwy and Zeth!
2011-04-24 16:07:54 +00:00
guzhenjie1@gmail.com 4a308455d1 Corrected following cards:
Boggart Mob
Oculus
Snapback
Weed-Pruner Poplar
2011-04-24 14:11:02 +00:00
wrenczes@gmail.com e82362d50a Missed a part of my psp side change for the ClearScreen change. Now the BeginScene call is consistent with the pc side, and calls clear. 2011-04-24 11:55:04 +00:00
wrenczes@gmail.com 6fbc019ecc Added object analytics around ExtraCost & ManaCost; some formatting style cleanup. 2011-04-24 10:33:38 +00:00
wrenczes@gmail.com be2a4ee4ec Mostly formatting cleanup, but a couple of openGL related fixes : don't call state change functions if their params haven't changed. In particular, we call ClearScreen() in several places in the code, but BeginScene() already does this. According to several openGL performance guides I skimmed through, if you call clear more than once per frame draw, performance will suffer.
This seems to help with issue r103 - on my win machine, it's substantially better; on psp, not quite as drastic, but it's still better than before.
2011-04-24 10:00:37 +00:00
wrenczes@gmail.com 9fdb3fbe3a Style formatting. No code changes. 2011-04-24 08:52:12 +00:00
Xawotihs 832904dce1 - Defined keys translation for SDL config
- Added boost thread files, that fixes all the threading/compiling/linking problems on Android ...
- Added opengles 1.1 code, there are still some bugs I need to tackle ... and I should realy split this file now !!!
- Added Android debug traces
- Hardcoded resources to "/sdcard/Wagic/Res" for the moment on Android
- Added a wagic SDL project for desktop, and the related SDL frontend used for Android. This frontend is currently mostly desktop based, it needs some work to be fully useable with touch and gesture on Android.
2011-04-23 21:30:36 +00:00
Xawotihs 4ed7f10def - Added SDL, libjpeg and libpng
- Added Android project and Java files
2011-04-23 19:25:48 +00:00
wrenczes d48176e390 Add ObjectAnalytics.h/.cpp to VS2008, QT projects. (Have we made an official call on deprecating 2008 yet?) 2011-04-23 17:05:22 +00:00
wagic.the.homebrew e1e52f910d - removed unused variables in Menu. These where used for the old moving "W" which is probably not coming back any time soon... 2011-04-23 13:52:46 +00:00
wagic.the.homebrew 66ad0f4694 - Files in Res/rules are now loaded dynamically. This allows people to add their own mods fairly easily
- also has a basic support for unlocks (does not yet allow people to create their own unlock rules, though...)
- Some things are still hardcoded and should progressively move to these rules files (such as Game Type, how random decks are created, etc...)
- Test suite doesn't foolishly ask you to choose a game mode (momir, etc...) anymore
- UPDATE YOUR Res/rules/ folder !!!
2011-04-23 13:24:19 +00:00
wrenczes@gmail.com ba07ca2334 Improvement on my last change for reducing the formatted text caching: chopped it out altogether. I ran some profiling to see how much time on the psp it took to process the formatting on the description text (ie word wrapping it into several lines to fit on a card), and it ends up taking an average of 0.14 ms per card. For context, 60 fps is 16 ms. So clearly the formatting time is not the bottleneck here, and we gain no real performance caching the text, but lose memory due to pooling. So I cut it out entirely of the base class and we format on the fly during renders.
I also profiled this after the fact, as we have an open bug on poor drawing performance on psp when in text mode - it turns out that in the AlternateRender() function, my numbers look like this: 10.2 seconds were spent in JBLFont::DrawString(); 0.5 seconds were spent in my new helper FormatText() call, so we know where the perf hit is now.

I compared before & after on the psp with this mod, and the difference really isn't perceptible.  (It's still juddery, but no worse than before.)  I'll look at the DrawString() call next to see if we can make it any faster, although at first glance it looks like a pain.
2011-04-23 09:54:19 +00:00
wrenczes@gmail.com fc67e1515a Added some calls for tracking dynamic allocations to the InstanceCounter. 2011-04-23 08:43:34 +00:00
wrenczes@gmail.com bd56723bc0 Checkpoint on a utility helper class. Basically, if you have a class that you want to count the numbers of instances, you do this:
class Foo
#ifdef TRACK_OBJECT_USAGE
      : public InstanceCounter<Foo>
#endif

Then, use this macro somewhere in the class body:
SUPPORT_OBJECT_ANALYTICS(Foo)

Lastly, add whatever information you want to trace out to the function ObjectAnalytics::DumpStatistics().

Here's a sample of the output of what I've instrumented so far:

-----------------------------------------------------------
Object Usage Stats

CardPrimitive current count: 7899
CardPrimitive current byte usage: 2053740
CardPrimitive max count: 7908
CardPrimitive max byte usage: 2056080

MTGCard current count: 13973
MTGCard current byte usage: 670704
MTGCard max count: 13982
MTGCard max byte usage: 671136

MTGCardInstance current count: 180
MTGCardInstance current byte usage: 172080
MTGCardInstance max count: 189
MTGCardInstance max byte usage: 180684

-----------------------------------------------------------
2011-04-23 05:16:53 +00:00
wagic.the.homebrew 8e4de36588 - unsupported.txt cleanup + conflicts cleanup (had to partly comment out some cards for which we don't have a clean solution yet, "multipart cards" are basically 2 cards that share the same Multiverse ID, such as "Day // night" ) 2011-04-23 04:55:00 +00:00
wagic.the.homebrew fafa785778 - Cleaned up "borderline" primitives, split into borderline and crappy, which is closer to the way I intended the system to work initially.
- moved mtg_todo.dat into "unsupported.txt"...there are many parsing issues that I need to solve, but give it a try (set the grade level to "unsupported" in your advanced options, and restart the game) , it bumps the number of unique cards to almost 12000 :) (of course, these new cards don't work, that's the point of the "unsupported" grade)
2011-04-23 04:01:42 +00:00
omegablast2002@yahoo.com 4c127f1a59 flipped the default avatar so evil twins stare at each other instead of away from :D 2011-04-22 19:11:47 +00:00
wrenczes@gmail.com 224b140f9f First pass at reducing the overall memory footprint: moved GetFormattedText() out of CardPrimitives and into MTGCard. The idea being, only keep the formatted text around for cards that are actually in use.
Also fixed a subtle memory pooling issue in the RenderCountersBig() routine:  if you're in regular card display mode, the idea is that formatted text is only fetched if you flip into alternate render mode.  However, in this function, if counters are being drawn, it would fetch the formatted text in order to determine where to draw the counters, EVEN IF the counters count was zero.  So it had nothing to draw, but it meanwhile pooled the formatted strings into memory anyway.
2011-04-22 16:04:41 +00:00
wrenczes@gmail.com 58e340f30c Removed the precompiled header include from JSocket, as the precompiled header is actually in the mtg project and this is cross pollination. Moreover, mtg specific header changes that we might put in the precompiled header will cause this file in JGE to recompile each time. If we think it'll improve things, we could put in a separate precompiled header in JGE, but I'm not sure it's enough of a gain to bother. 2011-04-22 14:59:10 +00:00
wrenczes@gmail.com cca2fb92ec Optimized a heavily thrashing reallocation (temporary string construct) inside the resource manager. (Also contains a few more PSPENV->PSP consolidations, this should have been part of my last submit) 2011-04-22 13:33:42 +00:00
wrenczes@gmail.com ae227a7cb8 Minor project cleanup:
- Consolidated duplicate PSP / PSPENV defines;
- removed some ancillary file crap from the 2010 projects;
- pulled 1xx references from the makefiles;
- consolidated multiple #defines for OutputDebugString into one header (previously was split between config.h & DebugRoutines.h).
2011-04-22 13:12:36 +00:00
omegablast2002@yahoo.com 1827e99780 fixed a typo in liquid metal coating. 2011-04-22 12:00:03 +00:00
omegablast2002@yahoo.com feee31a360 updated kicker test by adding "choice 1" pay kicker, it will have no effect on "always pay" option, but if a player has "offer choice" they will still pass... 2011-04-22 11:18:47 +00:00
omegablast2002@yahoo.com ad56dfa8d0 3 things here
first as requested, kicker will now act like the other cost, offering a menu choice, heres the catch tho, 
it was also thought up that we should maintain the "pay automatically" method of it as it feels more natural to some(even tho as per MTG rules its supposed to be a choice).
so here is what i did that i hope satisfies everyone, i added a new menu option under advanced tab..."kicker payment" with 2 setting, by defualt "always pay" but also an option to "always offer choice"...

2nd, minor tweaks to player avatar, every tme i saw it i was like "i need to do something about that", the avatar getting completely sucked into the corner just looked bad imo, so i about doubled the "inactive" size, so it looks a little more uniform with the opponents avatar. also move the library and grave icons just a thin hair to the left so they don't grossly overlap the players avatar as much when active, and increased the dark box theyre contained in my just a few pixels.

3rd, something else thats really bothered me to no end was that the title text of simple menus which display the cards name which owns the box was using small face font, which on pc was *barely* ok...but on psp(smaller devices) looks like white smears and dots. i changed it to share the font and size used inside the menubox itself, the end result is a lot nicer look...and alot easier to read on psp. now if only we can convince wololo that "spades" is alot like a lava lamp, cool at first, but *extremely* dated. the menu box should have a much slicker look, maybe rounded corners instead and lose the street light poles?

minor fix for phaseaction, becuase of the nature of this ability finding a happy safe medium without losing function is tough. hopefully this corrects it for good.

dropped cast methods menutext returns to lower case, for uniformity.
2011-04-22 11:17:20 +00:00
wrenczes@gmail.com 7203ce9436 Style formatting - no code changes here. 2011-04-22 04:31:55 +00:00
wrenczes@gmail.com b4e3608412 Fixed a subtle bug with the Random player deck choice - I kept getting my first deck every time. It turns out that the 'random' implementation was actually multiplying the random seed by a value of 1001, which isn't prime - I have seven player decks on my one dev system, which divides neatly into that multiplier.
Removed the multiplier, as it's unnecessary.
2011-04-22 00:44:13 +00:00
wrenczes@gmail.com 223b067234 Removed what looks like a leftover temporary trace. 2011-04-22 00:09:10 +00:00
wrenczes@gmail.com 5e6c0c612e Fixed the breakage in the Deck Editor Menu, where the app would hang, looping on trying to word wrap a string. Erwan, pls review. Char is signed here, I'm not sure what the compiler warning was that you saw - NDK related? Does it treat all chars as unsigned? 2011-04-21 23:51:05 +00:00
wrenczes@gmail.com aaa169f86c Consolidated some loose strings into constant declarations in order to reduce allocation thrashing on temporary string constructs. I'm sure there are more, but "back_thumb", "back", and "backdrop.jpg" were the ones that showed up most in memory profiling. 2011-04-21 22:48:22 +00:00
solo81@web.de 8f51c1d1fe Removed a test relict from Fieldmist Borderpost. 2011-04-21 15:19:01 +00:00
wagic.the.homebrew 6f5919ed06 Reverting r3496 to fix failing tests 2011-04-21 15:16:22 +00:00
solo81@web.de 1d295c0cef Fixed Fieldmist Borderpost. 2011-04-21 15:10:05 +00:00
guzhenjie1@gmail.com dca61d1ab0 Corrected Sporoloth Ancient. 2011-04-21 14:30:11 +00:00
wagic.the.homebrew 8ff6839c8d Some preparation work for new platform support.
- Added a "PSP" compile-time define to clean up some compile time checks (replaced !WIN32 && !LINUX && !IOS with PSP) 
-- Wil, I am aware that this is redundant with the PSPENV variable you introduced recently, I think we can clean that up easily
-- This looks like lots of changes, but most of the time I just moved some blocks here and there
-- tested on VC 2010, PSP, and a bit of NDK
-- I might have broken maemo, iOS, or Linux compilation, can you guys check?
- Fixed some warnings reported by NDK
- NDK still does not compile because recent boost additions (mutex, etc...) are apparently not supported
2011-04-21 13:16:11 +00:00
solo81@web.de 5eb36fecc0 Fixed Neurok Invisimancer, Poultice Sliver and Fledgling Griffin. 2011-04-21 12:47:23 +00:00
solo81@web.de 0a6a5697f5 Updated all other cards with "other=cost". Same improvement as in last revision. 2011-04-21 12:24:10 +00:00
solo81@web.de 2139291115 Updated all cards with Evoke by adding "name(Evoke)" to their "other=..." line. This small addition makes the choice menu of those cards more readable. 2011-04-21 11:47:07 +00:00
solo81@web.de 35dde15fc6 Reverted rev3497. 2011-04-21 11:36:02 +00:00
solo81@web.de 4db75ac2fe Updated all cards with Kicker.
You now always have the choice if you wanna pay the Kicker cost or not.
2011-04-21 10:20:22 +00:00
techdragon.nguyen@gmail.com 8bf983e2e5 Flagged numerous peices of code that have local variables that are masking either member variables or variables scoped outside the current scope.
I've marked all the ones I found with the following TODO comment:

TODO: C6246: <blah blah>

a few in particular are the ones related to "oneShot" and "_target".  These are local variables that are declared that
mask either a method parameter or a member variable.
2011-04-21 10:04:32 +00:00
techdragon.nguyen@gmail.com 8ed84aa97d Issue 634:
Fixed.  Had to clear the DeckManager whenever the player deck selection screen is displayed.
TODO: Need to implement a caching mechanism that caches the deck information based on deck selection and not a global one.
Currently DeckManager is effectively treating the DeckMetaData as global data.

*some minor tweaks to how deck information is managed/created
2011-04-21 08:32:32 +00:00
techdragon.nguyen@gmail.com 29eea1d39c fixed a memory leak. Not sure how it got introduced but the destructor for DeckManager now does the heavy lifting for memory cleanup and not the static method EndInstance().
reorganized DeckMetaData method LoadDeck so that it appears underneath the constructor.
2011-04-21 06:35:44 +00:00
wrenczes@gmail.com cc55042477 Formatting cleanup. No code changes here. 2011-04-21 06:14:54 +00:00
wrenczes@gmail.com d212f08618 Added a missing forward class declaration to fix the psp build. I'm surprised that VS2010 didn't complain... 2011-04-21 05:51:21 +00:00
wrenczes@gmail.com 920282017b Added ManaCost & ExtraCost to the startup traces of certain class sizes. 2011-04-21 03:22:09 +00:00
wrenczes@gmail.com 7bf6374fc7 Another minor change to eliminate an unneeded #include. 2011-04-21 03:21:15 +00:00
wrenczes@gmail.com 39870c91f6 Removed GameApp.h from GameOptions.h - this should help prevent the precompiled header from rebuilding constantly when any header is touched, as GameApp.h ends up pulling virtually every other header by some level of indirection. We really need though to sit down at some point & refactor the inclusion tree. It's a big yarn ball at the moment. 2011-04-21 02:35:51 +00:00
techdragon.nguyen@gmail.com 3bef78be82 simplified some logic for evil twin 2011-04-20 23:34:33 +00:00
techdragon.nguyen@gmail.com 935c3da4b5 synced evil twin avatar ingame with one from deck selection.
TODO: make the "evil twin" look more different than just a mirror image.
2011-04-20 23:29:41 +00:00
omegablast2002@yahoo.com 64ec306cf6 added grade crappy to the discarders using random discard added to borderline.txt...to avoid the confusion that those cards might actually be fully supported. 2011-04-20 22:20:34 +00:00
wrenczes@gmail.com 8e6a3e64f0 Apparently the code police weren't satisfied... :) Eliminating the duplicate ints & extra assignments. 2011-04-20 22:09:40 +00:00
omegablast2002@yahoo.com 2a4a01da5e changed it to modulo to please the code police.... 2011-04-20 21:47:02 +00:00
omegablast2002@yahoo.com 6fe3411656 whoops brackets wrapped the wrong spot. 2011-04-20 21:29:48 +00:00
omegablast2002@yahoo.com 561054ba34 added a true method to recycle our 100 avatar images, and made sure they stay in line with the menu image if theyre over 100. 2011-04-20 21:21:12 +00:00
wrenczes@gmail.com f805d195ad Fixed the build. 2011-04-20 21:07:44 +00:00
wrenczes@gmail.com babda2bc0f Some minor tweaks to make the image prefetching feel less flickery : when a card goes from a player's library into their hand, trigger a prefetch of the image. Also do the same thing when the AI decides on what card to play and creates an action. The idea being, new cards in play will probably want to be viewed by the player (and in the case of the AI playing a spell, we automatically show the image during the interrupt window before it comes into play). This makes for a much smoother gameplay - we have to get the image at some point anyway, and by doing it before we get to the render call, we no longer have the back card image pop up briefly. 2011-04-20 21:07:24 +00:00
omegablast2002@yahoo.com d06965d95e added tha menu constants variables to fix compiling on vc2008, i guess free version doesnt add it automatically or something becuase mike was able to compile without them 2011-04-20 20:40:28 +00:00
omegablast2002@yahoo.com 15e8a91ba8 removed the premade evil twin avatar. 2011-04-20 20:26:28 +00:00
omegablast2002@yahoo.com a02a09444b back thumb scaled for avatar slot 2011-04-20 20:25:52 +00:00
omegablast2002@yahoo.com b2ef742ec8 ok made minor changes to mikes last commit, instead of loading "nothing" im making it load a card back instead, that black hole drove me nuts....second instead of loading a premade "evil twin" i made it load what ever the users avatar was flipped horizontally. didn't tint it red becuase i am not that attuned to the graphics side of wagic. 2011-04-20 20:24:53 +00:00
Xawotihs 78e34386ee Android cross-compiling fixes regarding constants 2011-04-20 20:14:25 +00:00
techdragon.nguyen@gmail.com 2fdc80aee1 Synchronized avatar images to be loaded correctly on first display of the opponent selection.
* changed how the avatar images are assigned since how they were before was incorrect.  They are now assigned upon instantiation of the meta file.  Not when the stats are calculated.  
* Added new image for "Evil Twin".  This is a horizontally flipped image of the original player avatar with a red background.  Please feel free to edit the image.
* removed display of avatar image on menu items in deck selection that are not deck related. (ie "Cancel", "Back to Main Menu", etc)  "New Deck" also does not have an image since no deck really exists yet so no avatar.  

Issue: 622
2011-04-20 17:51:40 +00:00
omegablast2002@yahoo.com ba7640079c move reducedCost and increasedCost out of cardprimitives and into MTGCardInstance 2011-04-20 12:14:27 +00:00
omegablast2002@yahoo.com d892db60d9 removed a comment, i found a better way to do it so the comment does not apply. 2011-04-20 10:48:33 +00:00
wrenczes@gmail.com 02fbecfb85 Style formatting - no code changes here. 2011-04-20 09:38:40 +00:00
wrenczes@gmail.com 6fb5766a5e Removed targets[20] from the ExtraCost class. It wasn't being used in any meaningful way, and was bloating the class size for nothing. Reduces ExtraCost from 128 to 48 bytes per instance. 2011-04-20 09:28:28 +00:00
wrenczes@gmail.com ec95bb93e1 Fix for a crash (I think the same one Zeth reported) where the game dies somewhere in file reading source - I wasn't paying close enough attention to the fact that there are in fact 3 separate caches, so each had their own mutex, so JFileSystem wasn't actually being protected from reentrancy. So, if the app tried to load an audio sample at the same time as an image, boom... 2011-04-20 09:03:08 +00:00
wrenczes@gmail.com fc0a59a14e Moved GameOptions.h into the precompiled header. Shaves almost 20 seconds off my build times. 2011-04-20 07:50:00 +00:00
wrenczes@gmail.com a44bd2ffd5 Added shared_ptr.hpp to the precompiled header list. Cuts down the build time considerably. 2011-04-20 07:15:29 +00:00
wrenczes@gmail.com 52dd0c2f91 Removed the concept of cleaning up misses from the cache, as this was causing flickering on cards whose .zip files are missing. The idea now is that, if we can't load an image, keep the cache miss around permanently so that we never redundantly make a load attempt on that file again. 2011-04-20 06:46:14 +00:00
wrenczes@gmail.com 3c03251027 Added WResourceManagerImpl.h to the VS2010 project. 2011-04-20 06:34:58 +00:00
wrenczes@gmail.com 9141f28865 Disabled some JLOG traces in the MP3 code, as they run on a separate thread & tend to hang the psp when logging is enabled. 2011-04-20 06:33:59 +00:00
wrenczes@gmail.com 180f83083c Fixed compilation times by refactoring: WResourceManager.h gets included either directly or indirectly into every header & cpp file; so does its includes & implementation details. Broke out WResourceManager into a pure virtual class that contains only the required calls, and added a WResourceManagerImpl header that contains all the dirty details that the rest of the app doesn't care about / need to know. 2011-04-20 06:27:44 +00:00
wrenczes@gmail.com d1efc3efe8 Whoops, this was stupid. Left on a debug #define that forced a low memory situation for testing purposes - this should fix some of the reported flickering. 2011-04-20 06:21:52 +00:00
wrenczes 1117840621 Removed spurious warnings about secured Win API calls by adding _CRT_SECURE_NO_WARNINGS;_SCL_SECURE_NO_WARNINGS to the compiler settings. This only eliminates the warnings, but doesn't fix the slow compile times - I'll fix that next... 2011-04-20 02:14:37 +00:00
solo81@web.de e718629707 Added 10 cards.
Abduction
Corrupted Zendikon
Crusher Zendikon
False Demise
Fool's Demise
Guardian Zendikon
Shade's Form
Squee's Embrace
Vastwood Zendikon
Wind Zendikon

All cards have been tested manually.

Code example:

[card]
name=Abduction
target=creature
alias=1194
auto=untap
auto=@movedTo(mytgt|graveyard) from(battlefield):all(trigger[to]) moveTo(opponentbattlefield)
text=Enchant creature -- When Abduction enters the battlefield, untap enchanted creature. -- You control enchanted creature. -- When enchanted creature is put into a graveyard, return that card to the battlefield under its owner's control.
mana={2}{U}{U}
type=Enchantment
subtype=Aura
[/card]
2011-04-19 21:37:55 +00:00
omegablast2002@yahoo.com c29e231e45 couple more changes in Ai, and a fix for a crash which happened with phaseaction when the target was removed before the effect resolved. 2011-04-19 19:54:47 +00:00
Xawotihs 40958170fa Fix to have r3450 at least compile on linux 64 bits 2011-04-19 19:04:12 +00:00
omegablast2002@yahoo.com 28b84a1305 a few other "@damaged(" ====>"@combatdamaged(" 2011-04-19 18:20:35 +00:00
omegablast2002@yahoo.com 6a0a5e6980 Spawnwrithe was using the wrong trigger. 2011-04-19 18:13:26 +00:00
omegablast2002@yahoo.com 35f2962026 added
Awakener Druid
removed alias from the living land type cards.
2011-04-19 18:07:51 +00:00
omegablast2002@yahoo.com 09dd5dbc52 updated livingland test to show that it is following the rules. 2011-04-19 18:06:46 +00:00
omegablast2002@yahoo.com 29478f90b5 also removed AConvertLandToCreatures class and its observers, becomes(/transforms(( already creates this effect
as a side effect of my recent changes, lands which come into play and then become creature on the same turn have summoning sickness as per MTG rules.
2011-04-19 18:05:15 +00:00
omegablast2002@yahoo.com 20590c3a0d removed the variable doTap in Tap from all classes, all test pass but there could be an edge case where i missed removing one...if so just let me know, tweaked some ai eff returns, trying to teach it to use counters more effectively, i noticed it was not using -1/-1 counters on the players creature and was using off counters +1/-1 on its own creatures to the point where they died.
doTap now only serves a single purpose, to pass Tap variable to amanaproducer class so that "tappedformana" will trigger is a manaproducer was tapped for mana.
2011-04-19 17:31:19 +00:00
wrenczes@gmail.com f87de5c38d Revert the maximum memory size calculation to its previous configuration as a precaution, as my messing around with these values was only meant for debugging purposes. 2011-04-19 07:38:20 +00:00
wrenczes@gmail.com 7a10993114 *POSSIBLY DESTABLIZING CHANGE, PLS PING ME IF YOU SEE ISSUES*
Turned on the threaded card fetching code for win/linux.  PSP runs unthreaded.   There's an easy toggle for switching which mode the app runs in: check out WResourceManager's constructor.

To fully appreciate the difference, try going into the deck editor without these changes, and use the arrow keys to navigate around (esp. up/down, as it loads 7 cards at a time).  Then try again with these mods, you'll see the cards flicker briefly to the back card image and then load as they scroll onto the screen.
2011-04-19 07:12:05 +00:00
solo81@web.de 68060e5b6c Removed PD2, was already in as PD2.
Fixed small gap in Rancor.
2011-04-19 06:47:00 +00:00
wrenczes@gmail.com ab133e9f98 Err, stupid of me. Now passing in the PSPENV flag correctly... 2011-04-19 05:49:37 +00:00
wrenczes@gmail.com 79835dda33 Slight modification to the DebugTrace calls so that if compiling against debug on psp, the call becomes std::cout. This allows the debug trace calls to mirror out to the console window that's running pspsh. 2011-04-19 04:48:42 +00:00
wrenczes@gmail.com 7e884b53f9 Added a PSPENV environment variable to the psp make files. Also fixed a minor compile bug where the debug flag for psp forced JLOG support, which in turn enabled a JGE_LOG_FILE macro that has long since been removed from the code. 2011-04-19 04:35:42 +00:00
omegablast2002@yahoo.com 4d6b288867 added:
Duergar Mine-Captain
Hateflayer
Merrow Grimeblotter
Merrow Wavebreakers
Order of Whiteclay
Pale Wayfarer
Patrol Signaler
Pili-Pala
Safehold Sentry
Silkbind Faerie
Umbral Mantle
2011-04-18 17:23:22 +00:00
omegablast2002@yahoo.com bf68009674 fixed issue 632,633 ...
converted {t} into a extra cost. almost all original code to handle it outside remains intact, i plan on slowly migrating to just using the cost...but even just what i changed was a massive headache...anyways as a cost you wont ever have an random bugs where cards don't tap when the ability had {t} in its cost.
while i was at it, i added {q} untap cost.
2011-04-18 17:21:06 +00:00
guzhenjie1@gmail.com 388da9e4bb 2011-04-18 15:45:41 +00:00
solo81@web.de 35839184e2 Updated all other cards with upcosts.
"moveTo(graveyard)" --> "sacrifice"
2011-04-18 11:29:01 +00:00
solo81@web.de 13fd9e3463 Updated all cards with Evoke and Echo.
"moveTo(graveyard)" --> "sacrifice".
2011-04-18 11:19:17 +00:00
omegablast2002@yahoo.com 01a229d1b6 2011-04-17 20:21:46 +00:00
omegablast2002@yahoo.com 50c5c70479 made a mistake in p cost. 2011-04-17 20:20:17 +00:00
omegablast2002@yahoo.com 4c90d9e0c2 you can't pay life which you do not have as life payments. 2011-04-17 20:08:08 +00:00
omegablast2002@yahoo.com 18acf3ad8d refactored a little of a token gen, enumed the who and removed redundent code, also the new method allows you to token cards by id to WHO. 2011-04-17 18:18:29 +00:00
omegablast2002@yahoo.com 158164d694 2 things here, bug fixes, aphaseaction used in a trigger is set to oneshot = 0, for the purpose of reusing the ability. so on combat triggers the event would contenue to activate as tho it was not a oneshot, this would cause a crash if the target of the ability was killed before the effect resolved, so i set the target to NULL after the effect resolves if the target was not the source.
also restricted it to _target->isInPlay() i read through all the cards which use this and none of them targetted a source that was not in play, or not being moved to inplay...

2nd, found out today that certain activated abilities can use either target click or object click, find the difference between the 2 was impossible, exsample, {2}{t}:foreach(blah) add{b}
{t}:foreach(blah) add{b}
so i figured i would need to remove those foreach mana abilities from the stack and add that same code for the bottom half...after noticing that both the reactToClick and reactToTargetClick did EXACTLY the same things after the "cost" portion...i decided to create a new virtual int activateAbility the activatedAbility parent. this way incase i need to change any further code in there, both functions resolve the same. This was a nice lesson in why copy paste coding is stupid. you think you solved the bug becuase it works in one function call, but you actually didnt.
2011-04-17 17:01:58 +00:00
guzhenjie1@gmail.com 0e6aebe73d Corrected Soulbright Flamekin, Thalakos Deceiver, text of Ichor Wellspring and Vivisection. 2011-04-17 14:35:47 +00:00
guzhenjie1@gmail.com cf9f29879d Corrected Akoum Battlesinger, Akroma, Angel of Fury, Haunted Angel and Spiteful Visions.
Fixed typo in Gossamer Phantasm and Nova Chaser.
2011-04-17 11:54:52 +00:00
wrenczes@gmail.com 00a8622ca2 Eliminated a spurious float to long conversion. 2011-04-17 06:26:52 +00:00
solo81@web.de a6b15a41af Added Xantid Swarm and Llawan, Cephalid Empress. 2011-04-16 22:00:36 +00:00
omegablast2002@yahoo.com 6f070f8cd4 couple things here,
first enum'ed the variables of ADynamic class to make them easier to understand at a glance.
2nd
added stack resolves for the abilities in ADynamic, sword to Plowshare bug fixed
3rd
removing foreach mana producers from the stack, didn't realize they used the top portion of activated ability resolves, also added event sending for @tappedformana for foreach manaproducers.
4th,
in getcoreability if we're getting the core of a foreach, send the foreach->ability itself otherwise we go one layer too deep and end up throwing off the core completely.
2011-04-16 21:16:07 +00:00
Xawotihs 16bac823fe Fixed issue 630 2011-04-16 17:43:33 +00:00
Xawotihs 8bff724ac1 Fixed issue 631 2011-04-16 17:34:30 +00:00
omegablast2002@yahoo.com 6b0088eac8 changed aspect of the wolf...
added the following
Rushing River
Quietus Spike
Primal Growth
Phyrexian Scuta
Magma Burst
Infernal Contract
Heartless Hidetsugu
Floodgate
Eternal Flame
Ebonblade Reaper
Dwarven Landslide
Cruel Bargain
Catacomb Dragon
Blood Tribute
Banshee
Arctic Merfolk

these cards use the new naming system for other cost, and use the halfup/down subkeywords.
2011-04-16 17:02:43 +00:00
omegablast2002@yahoo.com 1b6991107b few changes here, mostly small bug fixes,
recoded altercost, its finally not using a dirty clean up.
this fixes the bug with it not effecting ai also and the bug where it was ineffective when combined with affinity creatures...

removed a aspect of the wolf class...
soft coded support for aspect of the wolf...using word variable subkeyword "halfup" and "halfdown"
it can go anywhere a parsable word vairable is stringing...i preffer the front of it...
these are Wparsedint subkeywords, not keywords you can use with standard abilities...
its meant to return half the varible rounds up, or down...

fixed player not losing with cantlifelose when they have 10 or more poison...the player should die.

reworked taplandformana, i send the main card as a target now, check against the cost if its affordable...anyways, i discussed this bool function a while back with devs and wololo saw the same issues i saw in it...he then removed it from being used as an if statement...i changed it back to an if statement with the new checks...we are either going to go back to a void, or go all the way bool, but not inbetween.
2011-04-16 17:00:51 +00:00
guzhenjie1@gmail.com 278e2f968c Corrected Avenging Angel. 2011-04-16 15:10:24 +00:00
solo81@web.de 6d4b0a507f Added Premium Deck Series: Frie & Lightning (PDF).
Added Duel Decks: Knights vs. Dragons.
2011-04-15 19:47:45 +00:00
omegablast2002@yahoo.com 2004414634 Welkin Guide correction...auto=2/2 && flying target(creature) ueot is incorrect coding...
it will welkin 2/2 and flying to a target creature...
2011-04-15 00:41:15 +00:00
omegablast2002@yahoo.com cafeecb925 fixed a memleak introduced when the alternative effects were changed to activated the way they do in current, the issue was that it was returning null if it wasnt paid, however if the alternative lines contained a TC those are built WAY before we get to this point, there was no delete done if the ability returns as NULL. so the tc remains and becomes a memleak. 2011-04-14 19:39:50 +00:00
omegablast2002@yahoo.com 0a54d4cf09 fixed mogg flunkies. 2011-04-14 17:46:48 +00:00
omegablast2002@yahoo.com 9d52e4547e fixed a parsing error with tokengen, no actually my fault :P there was never a check if the end was the real end or not.
2nd, added this(blocking) in hopes to fix mogg flunkies and similar creatures.
2011-04-14 17:06:44 +00:00
guzhenjie1@gmail.com 115ad75c2f Reverted Honden of Life's Web. 2011-04-14 16:47:37 +00:00
omegablast2002@yahoo.com 38dc0b23a3 mogg flunkies had cantattack and cantblock even tho his code was already updated. 2011-04-14 16:38:58 +00:00
guzhenjie1@gmail.com 3a7e71151c Added "turnlimited" for following cards with ability "Whenever [this creature] becomes blocked, ...":
Bestial Fury
Chambered Nautilus
Corrupt Official
Deathcoil Wurm
Deepwood Tantiv
Deepwood Wolverine
Drelnoch
Duskworker
Dwarven Berserker
Escaped Null
Ferocity
Flint Golem
Gift of the Woods
Goblin Cadets
Goblin Swine-Rider
Groffskithur
Gustcloak Cavalier
Gustcloak Harrier
Gustcloak Runner
Gustcloak Savior
Gustcloak Sentinel
Gustcloak Skirmisher
Ignoble Soldier
Karplusan Wolverine
Laccolith Grunt
Laccolith Titan
Laccolith Warrior
Laccolith Whelp
Leery Fogbeast
Lim-Dul's Paladin
Lone Wolf
Norwood Warrior
Port Inspector
Pretender's Claim
Pride of Lions
Razorclaw Bear
Rhox
Sacred Prey
Saprazzan Heir
Saprazzan Raider
Silkenfist Fighter
Silkenfist Order
Slashing Tiger
Slith Strider
Snorting Gahr
Thorn Elemental
Tornado Elemental
Trained Cheetah
Unstoppable Ash
Vedalken Ghoul
Wolf Pack

Corrected Hidden Ancients, Nature's Will and a typo in text of True Conviction.
Changed Honden of Life's Web:
auto=@each my upkeep:token(Spirit,Creature Spirit,1/1)*type:shrine
 ==> 
auto=@each my upkeep:foreach(shrine|mybattlefield) token(Spirit,Creature Spirit,1/1)*1
Because the )*type:shrine will make token's toughness become number of shrine in my battlefield.
For example: If I have two shrines on my battlefield, it will produce two 1/2 tokens instead of two 1/1 tokens.

All tests passed, also manually tested over twelve "@combat(blocked,turnlimited)" cards which have different trigger effects, all of them works fine.
2011-04-14 16:19:46 +00:00
omegablast2002@yahoo.com 324f554b1f removed the added cards from todo. 2011-04-14 15:38:23 +00:00
omegablast2002@yahoo.com fe3d09175c removed some copy paste coding i did from previous commit :/ i was lazy, tho it surprises me that i always take the route of copy paste when doing it the right way is far less to change or debugg is something goes wrong, guess im a creature of habit. 2011-04-14 15:26:19 +00:00
omegablast2002@yahoo.com 8c5499eaf3 angry mob code changed,
dragon whelp is now soft coded.
added
Ashling the Pilgrim
Farrelite Priest
Initiates of the Ebon Hand
Inner-Flame Igniter
Soulbright Flamekin
2011-04-14 15:04:19 +00:00
omegablast2002@yahoo.com 0fe7a46676 few things here,
first, tweaked some ai checks a bit.
small changes.

2nd, i removed the following classes,
APowerToughnessModifierUntilEndOfTurn
APowerToughnessModifierUntilEOT
ADragonWhelp
i replaced these with soft coded support for dragon whelps "sideffects" of using a ability more then a certain number of times...
syntax limit^the effect you want^the use it triggers on.
replaced both powertoughnessueot classes with a class which falls more along the lines of how we handle ueot abilitys...PTInstant, creates the wrapper with the ability and adds it to the game, rather then that jumbled mess that was previous version.

added support for "phaseaction[" phase words "my" and "opponent" so you can denote which players phases it will happen on. by default it automatically happens on both players turns when the phase matches.

modified a few things in phaseaction class...which correct a memory leak which could be created if the source of the phaseaction is destroyed before the phase action resolved. rather then storing an ability which is left floating in memory if phaseaction is destroy...i took a much safer route of passing the string of the ability directly to the phaseaction class...and i build the ability right when it is being used instead. makes much more sense.

angry mob is now fully supported. yay to removing nasty ugly workarounds!!!! and i mean UGLY.

dragon whelp is now fully soft coded. added the 5 or six other cards which do similar effects.
2011-04-14 15:02:17 +00:00
omegablast2002@yahoo.com 502bd280d8 "turn:" was off by one 2011-04-13 14:17:39 +00:00
guzhenjie1@gmail.com c57795560f Corrected following cards:
Amphibious Kavu
Blood Frenzy
Brood of Cockroaches
Celestial Sword
Disintegrate
Engulfing Flames
Goatnapper
Hidden Spider
Lingering Death
Mogg Cannon
Nihilith
Puffer Extract
Sokenzan Spellblade
Somber Hoverguard
Tel-Jilad Wolf
Tolaria West
2011-04-13 13:42:40 +00:00
guzhenjie1@gmail.com 5b5a46d6b0 Corrected following cards with ability "At the beginning of the end step, ...":
Blitz Hellion
Glimmervoid
Glitterfang
Goblin Pyromancer
Mark of Fury
Pestilence
Pyrohemia
Stenchskipper
Thran Quarry
Viashino Cutthroat
Viashino Sandscout
Viashino Sandstalker
Withering Wisps

Fixed typo in following cards:
Bitterblossom
Mist Dragon
Teferi's Curse

Updated following cards:
Altar of Dementia
Cockatrice
Ersatz Gnomes
Hell's Thunder
Hellspark Elemental
Infernal Medusa
Spark Elemental
Starlit Sanctum
Thicket Basilisk
2011-04-13 13:22:04 +00:00
wrenczes@gmail.com f143f6492d Added a method for determining during runtime whether the app is running threaded or not. 2011-04-13 06:31:54 +00:00
wrenczes@gmail.com 0c6400b24c A quick doc I cobbled together on how to set up on Windows to debug wagic via tethering to a psp. 2011-04-13 05:22:22 +00:00
wrenczes@gmail.com 43e105cce0 Updated VS2010 file inclusions. 2011-04-13 04:57:52 +00:00
wrenczes@gmail.com 0b821c9b4f Fixed the window rescaling to do letter/pillar boxing per the email thread. 2011-04-13 04:55:17 +00:00
solo81@web.de 30a7e7f811 Fixed typo in Lurker. 2011-04-12 23:24:25 +00:00
omegablast2002@yahoo.com 579b1cbfa1 centuar omen correction 2011-04-12 22:11:03 +00:00
omegablast2002@yahoo.com f5d16fa132 lure of the prey 2011-04-12 22:08:09 +00:00
omegablast2002@yahoo.com bec7428f18 added casting restriction "casted(TC)" required zone marking either opponentstack or mystack..this is to fix lure of the prey, tho i warn you this card is VERY hard to use cause ai will not just sit there and give you a chance to cast it. it usable tho if you turn on interrupt phases. 2011-04-12 22:07:37 +00:00
omegablast2002@yahoo.com 562a485b67 pspsdk int before int warning treated as error, sorry! 2011-04-12 21:16:31 +00:00
omegablast2002@yahoo.com f2de42e10e updated primitives for the changes. 2011-04-12 20:55:22 +00:00
omegablast2002@yahoo.com 93d9347566 added "colors" to word variables
========================================
added a function to return the action element id by mtgcardinstance.
=======================================
refactored all 5 combat triggers to be handled in a single class, this change helps reduce the "bits and pieces" of trigger restrictions which some did support while others didnt, it also allows for easier editing and debugging if future code needs to be added to it.
refactored the parsing for the combat triggers also, so that a combat trigger can be built from a single object if it only contains "or"...amongst other reasons.
the new syntax is auto=@combat(blocking,attacking,turnlimited,once) source(TC) from(TC):effect...all the same words are still used, except they are now all included inside the combat(-----) this includes restrictions for the triggers. if a card still needs multiple triggers from some reason...it is still 100% allowed to have as many as you want, with whatever you want inside them...check updated primitive for examples.
the required sections are auto=@combat(atleast one trigger) source(TC):effect.

=========================================

moved the limitsperturn "limit:" from genericactivatedability up to its parent class activatedability, did this for the following reason
first rules correction, the previous method tracked uses on resolve, which is incorrect, it should count as the ability is fired and placed on the stack.
second, it keeps all the actiavted ability restrictions in the same place, this is the location we are checking summoning sickness, actived restrictions such as "myturnonly" ect. makes sense to handle it in the parent.
third, it allow any and all future activated abilities easy access to "limit:" if needed, it would only require adding a limit string to pass on construction to the child classes instead of recoding the same exact checks as genericactivated.
=======================================================
reworked "name(" so that it no longer is required to be used inside a "&&" ability, also it no longer will create a MTGAbility object with a false return. that was just dirty of me :/
enabled "name(" to replace the menutext of alternative cost. 
"other={cost} name(holy cow)"
will display "holy cow" instead of "pay alternative cost", this change is nice because we ended up using "other" cost for WAY more then originally planned...now we can label it exactly what it should say when you click it.
======================================================
added a subtype keyword for powertoughnessmodifier so that you can basically switch on non-static variables for it...lifetotal/lifetotal nonstatic...PT can now except all word variables as i added reparsing of the ints, had to maintain old methods as ai needs them to decide what to do with them.
======================================================
removed the following extremely redundant classes
both ABecomes classes---atransformer has become far superior to it, i kept the "becomes(" parsing tho, and it will act exactly as it use to, except now it has access to most of the subkeywords of transforms...it also now allows word variables. and excepts "forever" as a tag. added "newcolor" subkeyword to transforms to create the "becomes(" adding a color without removing colors effect. "becomes(" now returns a constructor for ATransformer that emulates becomes( exactly as it worked before.

both forevertransformer classes, the only difference between the 2 was one subkeyword, and "forever" did not return a "destroy()"...i recreated this in less then 4 lines and a bool. that was sloppy of me :( i guess we learn and improve.
============================================================================
i removed the parsing of card casting restriction from the first pass when cards load, instead of making it a cardprimitive object, i now simply pass the string through the card and build the restrictions when theyre actually needed and checked.
this change allowed for alot of clean up, removing enum and dependancy on cardprimitive, and combining both allowedAltCast and allowedtocast functions checks through a new function "parseCastRestrictions"...this change keeps all the cast resrictions in a single place, which makes it easier to debug or add if needed, and while i was at it, i enabled it so cards can now contain as many restrictions as you want *of the available ones* 
added "turn:" as a restriction to make it so "fourth turn" could actually be ANY turn you list, this allowed me to remove a dirty line of code which was checking if a card was o converted cost but had a suspend...lotus bloom...which can not be cast normally..for cards like this now you can use restriction=turn:200 or otherrestriction=turn:200....
=========================================================================
added Phyrexian Mana...svntax {p(r)} ....this will always be payable with 2 life, but if you have a red mana for this example, it will charge you the red mana instead...you can have any combination of P mana you want in any of the games manacost.
===================================================
reworked a bit of the ai logic i added, it now has true interrupting and can now correctly target for fizzles, Ai will go into full out counterspell wars with you now...
===================================================
added a ingame reward system with fancy flying text animations, they reward the player with actual credits, but are extremely hard to trigger off, theyre not meant to be something you see every 5 secs, but something that when you see them trigger you go "damn that was cool"
the triggers and effects are as follows
first the combo system:
you have to chain cast 5 or more card, without tapping or being interupted, tiny bonus for this..chain is broken as soon as you or your opponent tap something.
next combo level is
Abundant Resources - chain 10 or more spells same condition 
then
killer - chain 15 or more same condition
this will include a flying text render once a chain is successfully started (5+ cast)
this bonus can be triggered multiple times in a match

the next bonus is
+ //creatures entering play consecutively will allow you a chance 
+ //to gain a bonus for maintaining force sizes, it will trigger every 10th
+ //creature which enters play consecutively.
this is restarted every time a noncreature enters play.
the levels are as follows, 
Deadly Force Bonus! -10 creatures enter play consecutively
Extreme Infantry Bonus! - 10 creatures enter play consecutively and you maintain a force size of 20+
Malignant Conqueror Bonus! -10 creatures enter play consecutively and you maintain a force size of 40+
this can only be triggered once per level per match.

next bonus is given for having alot of a specific type come into play under your control during a match, this bonus only triggers once per match.
the levels are:
Toy Collector!
Beast Tamer!
Vampire King!
Lord of Swarms!
Master of Elements!
Zombie Apocalypse!
Sword And Shield!
Medic!
The Promenade!
Heavenly Host!
Teeth And Scales!
its pretty easy to figure out what each requires to trigger, teeth and scales for example is dragons, wurms, drakes, and snakes.
the final bonus is deal 100 damage from a single source in a single damage event, this one triggers only once per match.
============================================================
fixed the following bugs::::
regenerate was not working for non-creature regeneration ie:welding jar

ai would sometime get stuck in a infinate loop tho extremely rarely while deciding what to do, the cause 
if (clickstream.empty())
computeActions();
is NOT enough...ai should NEVER be computing actions (finding a card or ability to play) when it is NOT the active player..meaning, it does not have priority. 
g->currentlyActing() is the player that has priority. 
if (clickstream.empty() && g->currentlyActing() == this)...loop fixed :)

dynamicability had a couple weird results, from sources which dont have an amount to return, i now check this and if non, the amount is 0.

transformer will no longer add the same types a card already has..

removed an unneeded 
if (!activated) ....oris bug seems to be corrected with this change.

wrapped limitsperturn checks in a conditional to skip it if there is no limit string. 

added safer method to get the target of the combat trigger. the previous could potentially cause a crash if you interrupted the ability while the combat trigger was on the stack, it would do a call to "getnextopponent" and return a null pointer. i now send the opponent with the event. 

fixed a crash that would happen when a card did not have a type= line. having a type or subtype line is now optional. and highly recommended to avoid using "type=nothing"

moved a function call in buyback isreactingtoclick so that it checks if its in the hand before parsing the restrictions for it.

removed allowedtocast function calls from the alternative payment types, they are only supposed to check allowedtocast if it is something like "buyback" and kicker...not "you may pay this instead"....

corrected an issue with type: variable where it would add the amount depending on the activeplayer. to correct i added a method to call TargetZoneChooser::targetsZone( with a mSource...so that you can set the source card for the scan.

note: all test pass.
2011-04-12 20:54:34 +00:00
Xawotihs 30bd5bd8ae Changelog for 0.15.1 on Maemo 2011-04-11 17:44:38 +00:00
omegablast2002@yahoo.com 15b8672693 sword of feast and famine again.... 2011-04-11 13:06:46 +00:00
wagic.the.homebrew@gmail.com 111e0232f8 - Serbian translation by TheAleksaRadovic
- Spanish translation update by blender2005
2011-04-11 11:30:37 +00:00
wagic.the.homebrew@gmail.com 70b93482b3 - fix incorrect test generic/trigger_blocking.txt
- Updated version number to 0.15.1
2011-04-11 11:12:56 +00:00
wrenczes@gmail.com 4e2cc08bb1 Better solution for a (real) fullscreen mode. (Last tweak, promise!) 2011-04-11 04:48:21 +00:00
wrenczes@gmail.com 5f193e9b01 Deleting a obsolete version of Threading.h - this was already migrated to JGE. 2011-04-11 04:03:19 +00:00
wrenczes@gmail.com 98220afb46 Something that's been bugging me for a while, and I finally decided to do something about it: fullscreen toggle never worked on Windows. I've now made the F key do a three-way toggle between lo-res (ie standard psp resolution), hi-res (psp resolution doubled, so 960 * 544), and fullscreen (well, not exactly fullscreen, it's a window sized to your desktop's work area; if you have a weird sized desktop, you might get clipping). 2011-04-11 00:30:50 +00:00
omegablast2002@yahoo.com 81f22b31f5 boarderline card sword of Feast and Famine was missing the equip 2011-04-10 21:33:13 +00:00
jean.chalard 57c9c8a3b1 Fix a number of NULL/0 errors. 2011-04-10 15:31:38 +00:00
wrenczes@gmail.com 630c7eb1ee Per the conversation in r3388, adding an extra seatbelt to ensure that if an object is removed from ActionLayer, it doesn't leave a dangling pointer in mReactions. This should normally be a no-op, as the expectation is that mReactions is usually empty at this point. 2011-04-10 15:29:00 +00:00
guzhenjie1@gmail.com 35f251688a Reverted the change I did to code “@blocked”. 2011-04-10 03:48:51 +00:00
wrenczes@gmail.com eee23f4344 Performance optimization: when processing for reactions to a card click, instead of looping through all the stored objects a second time, only call reactToClick() on objects that already indicated true to isReactingToClick(). 2011-04-10 00:11:03 +00:00
wrenczes@gmail.com 99ed83c5e8 Performance improvements/cleanup: card->hasType("foo") performs a string lookup for an integer id. Now that our primitives have over 1000 types (1018, I believe is the number I saw while debugging), this is not the cheapest lookup. Over the course of time, a lot of new rules have crept in the code - support for 'aura', 'equipment', and recently 'planeswalker'. While profiling, I saw an inordinate amount of time being used doing map lookups for these strings. Since they're used so frequently, I've added them to the SubTypes enumeration, and swapped out doing the string lookup in favour of using the int ID directly. I also found a few places where we were using hasType("Creature") or hasType("land") when we already had helper functions to do the int lookup, so I swapped these in as appropriate, as well as a couple of places where we had hasType("instant") instead of hasType(Subtypes::TYPE_INSTANT), etc. 2011-04-10 00:07:34 +00:00
wrenczes@gmail.com 62da8e7ad8 Minor optimization: wrapped a string fetch routine with #ifdef DEBUG, as the string's not actually used in this context for anything. Tripped across this as the HUDDisplay constantly queries for whether the OSD option is on, which in turn calls this string constructor/destructor on every draw. 2011-04-09 21:08:46 +00:00
guzhenjie1@gmail.com 357f86459a Corrected following cards:
Abomination
Aisling Leprechaun
Basalt Golem
Beastmaster's Magemark
Boggart Mob
Brushwagg
Deathgazer
Dread Specter
Dread Wight
Dream Fighter
Elven Warhounds
Engulfing Slagwurm
Evil Eye of Urborg
Greater Werewolf
Ib Halfheart, Goblin Tactician
Inferno Elemental
Joven's Ferrets
Lim-Dul's Cohort
Ogre Leadfoot
Phyrexian Reaper
Phyrexian Slayer
Quagmire Lamprey
Sawtooth Ogre
Sylvan Basilisk
Talruum Champion
Tangle Asp
Tel-Jilad Wolf
Tolarian Entrancer
Venom
Weirding Shaman
Witherscale Wurm

Moved Dueling Grounds back into the mtg_todo.dat and removed it from the primitives.txt.
2011-04-09 17:03:39 +00:00
wagic.the.homebrew@gmail.com 1343852bc1 - Update French translation
- Added call to translation function for some parts where it was missing
2011-04-09 10:41:36 +00:00
wagic.the.homebrew@gmail.com 693f7e156c Fix a bug reported in the beta, where pressing triangle in the Story mode would crash the game 2011-04-09 08:26:43 +00:00
wagic.the.homebrew@gmail.com 70e3af8579 Spanish translation update by blender2005 2011-04-07 13:14:51 +00:00
wagic.the.homebrew@gmail.com ab27dded61 Portuguese translation update by vesgo 2011-04-07 13:01:54 +00:00
guzhenjie1@gmail.com 8dd7a81dba Corrected Varchild's War-Riders. 2011-04-07 12:18:39 +00:00
guzhenjie1@gmail.com fb79117a6a Corrected following cards:
Altar of Dementia
Bleak Coven Vampires
Dong Zhou, the Tyrant
Hagra Diabolist
Lobotomy
Smoldering Tar
Starlit Sanctum
Tendrils of Agony
Xira Arien

Updated following cards:
Brigid, Hero of Kinsbaile
Quill-Slinger Boggart
Tormod's Crypt
Yavimaya Dryad
2011-04-07 12:00:59 +00:00
guzhenjie1@gmail.com cd97bf4ffe Changed Raging Ravine. 2011-04-06 15:22:24 +00:00
guzhenjie1@gmail.com cda965a626 Updated Opalescence and Raging Ravine.
Added March of the Machines.
2011-04-06 14:47:51 +00:00
guzhenjie1@gmail.com 89597a547e Replaced {S} by {discard(this|myhand)} in following cards with "autohand".
Absorb Vis
Arashi, the Sky Asunder
Brainspoil
Brighthearth Banneret
Burrenton Bombardier
Chartooth Cougar
Clutch of the Undercity
Dimir House Guard
Dimir Infiltrator
Dizzy Spell
Drift of Phantasms
Earthbrawn
Elvish Aberration
Eternal Dragon
Ethereal Usher
Fiery Fall
Ghost-Lit Nourisher
Ghost-Lit Raider
Ghost-Lit Redeemer
Gleam of Resistance
Hunting Triad
Igneous Pouncer
Jhessian Zombies
Jiwari, the Earth Aflame
Mosquito Guard
Muddle the Mixture
Netherborn Phalanx
Noble Templar
Pale Recluse
Rustic Clachan
Sanctum Plowbeast
Shinen of Fear's Chill
Shinen of Flight's Wings
Shinen of Fury's Fire
Shinen of Stars' Light
Shoreline Ranger
Street Wraith
Swell of Courage
Sylvan Bounty
Tolaria West
Traumatic Visions
Twisted Abomination
Valley Rannet
Vedalken AEthermage
Wirewood Guardian
2011-04-06 10:55:38 +00:00
guzhenjie1@gmail.com 214855b3e5 Updated following cards to use code "@discarded":
Abyssal Nocturnus
Confessor
Geth's Grimoire
Liliana's Caress
Megrim
Nath of the Gilt-Leaf

Updated following cards:
Cloudhoof Kirin
Keening Stone
Presence of the Master
2011-04-06 10:52:31 +00:00
omegablast2002@yahoo.com 2f82f1888c couple things, first i goofed up in 2 spots, the equipment check for legality, yes shroud isnt a case, but it is also not a case of why you shouldnt remove it from a card which is illegal, so reworked it to find that the items i was looking to exclude( the protections) were all in a single spot :) yay to good programing!...so i pass a bool now with cantarget "withoutProtections" defaults to false so protections are always accounted for unless you specify not to include them, which is what ive done....now if only auras had a nice little spot to add such coding we can correct this rule on auras...
2nd, fixed a misunderstood line i added, i was aiming for the tc that triggered the event in trtargted....all tested passed, and i didn't manually test that change (SHAME ON ME!!!)...corrected it in the correct place now, where the event is sent.

3rd, trying to fix a broken alias class, this is a work in progress, i intend to fix this and then convert it to a keyword for draw replacement effects for 16.1(?) anyways, only thing ive left to figure out is telling it how to determine that the last stack ability is a "draw" ability. this class quit working ALONG time ago when the "addDraw" object was no longer used. the methods for card drawing changed and no one updated the alias class to use the new method, i imagine this is also what broke aladdins lamp originally(which the change of draw events and how card display is set up)
2011-04-05 16:03:19 +00:00
omegablast2002@yahoo.com c0d9c3a834 just being safe here...there is a report of an unreproducible bug that happens completely at random since i moved the parsing of limit into the reactToClick, im guessing it might be that limitPerTurn is never set. 2011-04-05 00:16:05 +00:00
omegablast2002@yahoo.com bab6d386b5 2011-04-04 19:58:06 +00:00
omegablast2002@yahoo.com 553615a563 sending @discarded events for the auto hand cleaning and clean up step discard events 2011-04-04 19:52:58 +00:00
guzhenjie1@gmail.com a5da77981f Corrected creature type of Chimeric Coils. 2011-04-04 13:13:20 +00:00
omegablast2002@yahoo.com f614fa1cde just adding some of the discarders as random discard in boarderline. theyre playable, but no choosing of the card to be discarded. 2011-04-03 16:20:54 +00:00
omegablast2002@yahoo.com 1c1c6e6497 clean up 2011-04-03 14:09:58 +00:00
guzhenjie1@gmail.com 1e982c7fe1 Corrected Animate Artifact. 2011-04-03 13:31:58 +00:00
omegablast2002@yahoo.com 2176fab573 Blessing of the Nephilim code corrected 2011-04-03 12:43:03 +00:00
omegablast2002@yahoo.com 19b5490729 Withering Wisps updated to fix the bug, it was doing nothing. there is a parser limitation that does not allow limit: to work in foreach( nested activated abilities. the card basically never did anything. 2011-04-03 12:26:44 +00:00
omegablast2002@yahoo.com 2eca724001 2 things,
fixed a bug with Withering Wisps, moved the parsing of the limit string into the isreactingtoclick function, this allows word varibles such as type: to be used.

2nd, removed a varible isTempPhased, it *appear* it might not be needed, tho i didn't handle phasing the way im converting it to for a reason, so cross your fingers and hope all goes well.
BTW: do not email me about any bugs that ariase with phasing or phased out creature, im not excepting bug reports on it to my email box...instead open a ticket with a repro method and mark it as critical.
2011-04-03 12:24:21 +00:00
guzhenjie1@gmail.com 4cd0953ebc Corrected following cards with "world rule":
Chaosphere
Concordant Crossroads
Gravity Sphere
Living Plane
Mystic Decree
Serra Aviary
Storm World
Tombstone Stairwell

auto=@movedTo(enchantment[world]|battlefield):bury
 ==> 
auto=@movedTo(enchantment[world]|battlefield):sacrifice all(this)

Updated Svogthos, the Restless Tomb. Thanks for Zeth's remind!
2011-04-03 10:45:20 +00:00
omegablast2002@yahoo.com dae5478084 move rainbow efferts test to test folder 2011-04-03 10:16:55 +00:00
omegablast2002@yahoo.com 17ac081ed3 fix for rainbow effert 2011-04-03 10:13:07 +00:00
guzhenjie1@gmail.com 442f61b350 Corrected following cards:
Animate Artifact
Chariot of the Sun
Pestilence

Updated following cards:
Chimeric Mass
Chimeric Staff
Svogthos, the Restless Tomb
Testament of Faith
Weight of Spires
2011-04-03 09:44:29 +00:00
wrenczes@gmail.com 592cc840c6 Refactored ThreadedCardRetriever into a threaded vs non-threaded implementation. 2011-04-03 08:45:50 +00:00
wrenczes@gmail.com efe13d7621 Checkpoint - refactored out my ThreadedCardRetriever code into a separate header. This header isn't included by anyone else for the moment, so it currently has no impact on the build. 2011-04-03 07:19:01 +00:00
wagic.the.homebrew@gmail.com e867881e16 - Fix issue 552 (Card images too big in deck editor)
- Moved big picture display a bit down ingame
- Temporarily Reinstantiated "back quad shows first" in deck editor, see my comments in http://code.google.com/p/wagic/source/detail?r=3008
-- This is only temporary, and pending the final Thread work, but I'm afraid this won't make it to 0.15. It is possible to get the previous behavior back with a simple define, in case we want it for windows.
2011-04-03 06:07:23 +00:00
wagic.the.homebrew@gmail.com 2bb0fe996d Adding Kaioshin's new wallpaper 2011-04-03 03:26:54 +00:00
wagic.the.homebrew@gmail.com 77a1e98bc3 Adding test for issue 616 (Rainbow Efreet phase out) 2011-04-03 03:17:36 +00:00
omegablast2002@yahoo.com ee0231f4da shroud is not a case for it, sorry! 2011-04-02 22:34:37 +00:00
omegablast2002@yahoo.com 3deae0137e changing a int type for pspsdk to stop complaining. 2011-04-02 22:22:34 +00:00
omegablast2002@yahoo.com 785aa505b2 added O-Naginata which was previously not added becuase the rule in the previous commit was not followed. 2011-04-02 22:16:19 +00:00
omegablast2002@yahoo.com 10e576f4b7 Rules correction for equipment, if at any point the currently equipped card is no longer a valid target for the equipment, ie:it was attached to a manland, hidden enchantment, has restrictions in equipment tc such as can't enchant vampires and target became a vampire, ect
the equipment is supposed to fall of as a statebased effect.

this is also true for auras, tho the fix for auras will be alot more complex, and im not reffering to the "protected against" bug which we have reason to not fix.
this is a rule that states

303.4b - If an Aura is enchanting an illegal object or player, the object it was attached to no longer exists, or the player it was attached to has left the game, the Aura is put into its owner's graveyard. (This is a state-based action. See Rule 704.) [CompRules 2009/07/08]

an aura that targets a creature that suddenly becomes a land and loses creature is supposed to fall off, an aura that targets a green creature that suddenly becomes black and loses green is supposed to fall off.

this rule is the same for both auras and equipment, but due to how we handle auras, only equipments will be fixed in this commit.
2011-04-02 22:11:32 +00:00
omegablast2002@yahoo.com 29ae982253 added Demonspine Whip to demonstrate both fixes in action. 2011-04-02 21:02:48 +00:00
omegablast2002@yahoo.com 67ebd964e1 2 bug fixes;
first, while hunting down easter eggs in the todo.dat i started trying to code some un-added equipment...noticed that thisforeach was exhabiting strange behavior.
what was happening was in the changed line, abilities.size() was a non-static number, so on most abilities, thisforeach was actually stopping prematurely. which explains why there was no test added for thisforeach, becuase it really wasnt working correctly.
what i did to correct the issue was set "i" as an unsigned int = abilities.size()..this way abilities being added don't stop it prematurely in the process of adding the matches.

2nd, this one is geared towards equipment only, it is a bug fix, not a "lets recode all equipment to use this"...i noticed that alot of equipment was suffering from double entries of activated abilities, the first entry was always targeted at the equipment and did nothing in most cases, the 2nd was always added during the getabilities call.
to fix, i added autoskill= ...what this line is used for it activated abilities or abilities that otherwise shouldnt exist when the card is not equipped, it is called on when getabilities function is called by equip() and for removel purposes.
2011-04-02 21:01:33 +00:00
omegablast2002@yahoo.com 7d0ff5aa34 add banshee blade 2011-04-02 19:07:20 +00:00
omegablast2002@yahoo.com e23ce580fe fixed a bug with sunburst and sunburst cards which contained x. 2011-04-02 18:30:55 +00:00
guzhenjie1@gmail.com 0fa410cab0 Fixed Withering Wisps.
Updated Pyrohemia.
2011-04-02 17:48:32 +00:00
guzhenjie1@gmail.com 737de5f4de Corrected Dingus Staff and Shoreline Salvager.
Updated Ohran Viper.
2011-04-02 16:51:59 +00:00
guzhenjie1@gmail.com 9fb40001a7 Updated Angelic Renewal. 2011-04-02 16:36:30 +00:00
guzhenjie1@gmail.com feae8656a7 Corrected Opaline Bracers and text of Suntouched Myr.
Updated Infused Arrows.
2011-04-02 15:03:07 +00:00
wagic.the.homebrew@gmail.com 17f90bce66 Reduced size of Christmas theme preview, in the hope to minimize crashes on the PSP in the user settings page 2011-04-02 07:58:39 +00:00
omegablast2002@yahoo.com fb3aac32ee sygg, river cutthroat p/t were incorrect...was 2/2...correct 1/3 2011-04-01 18:54:15 +00:00
omegablast2002@yahoo.com 155b909bfd had to add this eff return becuase ai suddenly became retarded with the addition "teach" and the use of auras. 2011-04-01 18:36:36 +00:00
guzhenjie1@gmail.com 5f3018d6fa Corrected Karn, Silver Golem.
Updated Karn's Touch, Spawning Pool and Stalking Stones.
2011-04-01 16:24:12 +00:00
omegablast2002@yahoo.com 89dcf9600f wormfang drake added oneshot. 2011-04-01 12:57:00 +00:00
omegablast2002@yahoo.com 14e4775d54 cleaned up the alias change i made earlier today. 2011-04-01 11:14:06 +00:00
omegablast2002@yahoo.com 84234999af corrected diamond valley code 2011-04-01 10:57:31 +00:00
guzhenjie1@gmail.com b27967170b Fixed Prismatic Lace 2011-03-31 22:45:54 +00:00
omegablast2002@yahoo.com 750f9c89cf removed un-need .c_str() call. 2011-03-31 17:24:49 +00:00
omegablast2002@yahoo.com dba143983c fixed wall of root and found a engine limitation....if a mana producer needs to have a "limit:number" then you NEED to have "all(this)" before it as follows for example
auto={C(-0/-1,1)}:all(this) Add{G} limit:1
other wise it parsed as a non=activated ability, don't worry tho, i change activated manaproducers a long time ago so that they dont use the stack, so all this will do is enable using "limit:"...
2011-03-31 17:16:21 +00:00
omegablast2002@yahoo.com 2277e9906b updated the card creating this effect "it can attack as though it didn't have defender" to use "canattack" 2011-03-31 16:44:43 +00:00
omegablast2002@yahoo.com dbc5376135 added "abilities=canattack"
Warmonger's Chariot
6/15/2010: The second ability doesn't cause the equipped creature to lose defender. It just lets it attack.
2011-03-31 16:39:28 +00:00
omegablast2002@yahoo.com f5c3f76f0b updated soft codes for the hard coded cards removed from svn. 2011-03-31 16:17:11 +00:00
omegablast2002@yahoo.com 3789c947a3 had to update this test since the hard coded living artifact was actually incorrect. 2011-03-31 16:16:09 +00:00
omegablast2002@yahoo.com 476a74340a little bit of hard code clean up, soft coded the following cards and removed thier hard codes
Angelic Chorus
Lavaborn Muse
Pestilence
Living Artifact
Hypnotic Specter
there is test for each of these.
btw living artifact hard code was wrong, it was allowing you to remove counters at any phase, the soft code is actually correct. updated living artifact test to the correct version in next rev
also fixed a case where "thatmuch" was never set, i now also store the amount on the source of the trigger as well.
2011-03-31 16:15:30 +00:00
omegablast2002@yahoo.com 6572a11848 changed the way aliases set id.
the old method was fine when wagic only supported 200 cards, this is so far from the case now. this will avoid bugs being introduced when we add support for a card in soft code.
what this was essentially doing was it would load every set but the hardcode card as soft code, and if you used the card which was originally hard coded, you get a bug where soft and hard code are both loaded.
2011-03-31 14:50:44 +00:00
omegablast2002@yahoo.com eb010093fe code change for life and limb,
auto=lord(*[saproling;forest]) transforms((saproling forest creature land,setpower=1,settoughness=1,newability[{t}:add{g}]))

this is close enough for me, its 99% correct in my books, you can declare either forest and saprolings as attackers, target them as thier respective new types, the only thing that is not correct about it is that they can tap for mana the turn they come into play, however they have summoning sickness and can not attack.

im am not going to change the attack/block rules or manaproducer reactToClick just to satisfy this bug in the only card in MTG that does this.
2011-03-31 13:50:48 +00:00
guzhenjie1@gmail.com 1b77a78cc7 Fixed a typo in Ronin Warclub and text of Sphere of the Suns. 2011-03-31 12:46:13 +00:00
wrenczes@gmail.com 8add655df7 Formatting cleanup, modified a function to pass by const reference. 2011-03-31 11:08:58 +00:00
wrenczes@gmail.com 64d421b8b8 Fixed a namespace collision that was causing compile errors in VS2010. bind() was being interpreted as std::bind(), not the winsock bind() call. 2011-03-31 11:07:50 +00:00
wrenczes@gmail.com e7f2ae4e6e Added a Boost::recursive_mutex variant to the threading support. Also bumped up the default stack size of a worker thread to 256K, and moved the thread priority slightly down as 0x12 is pretty aggressive for a default value. 2011-03-31 10:37:41 +00:00
wagic.the.homebrew@gmail.com 3c691b6741 - Fix for issue 614 (removed hardcoded Howling Mine)
- Fix for issue 615 (Linux/PSP compilation error)
2011-03-31 09:38:04 +00:00
omegablast2002@yahoo.com 27c9391876 added Goatnapper 2011-03-31 00:05:19 +00:00
omegablast2002@yahoo.com d47a31ca47 i keep adjusting this sorry! changed it to a rfind instead, to more correctly build a newability. 2011-03-30 23:57:52 +00:00
omegablast2002@yahoo.com 728410743f removing empty entries from newabilitieslist. 2011-03-30 23:36:48 +00:00
omegablast2002@yahoo.com 792357b36d string was sending an extra char. 2011-03-30 22:22:40 +00:00
omegablast2002@yahoo.com 257de9962a just cleaning up a memleak i created, moving the parsing of the "newability" in transforms into the resolve rather then creating an object that might not be used. 2011-03-30 22:10:45 +00:00
omegablast2002@yahoo.com 3f39b19c87 fix wrap in vigor,
all(creature|mybattlefield) regenerate
this code works, please do not remove the card again. i added this card once before.
2011-03-30 20:16:43 +00:00
omegablast2002@yahoo.com 4ef328890d more MTGToDO clean up and added:
Endless Scream
Everflowing Chalice
Evolution Vat
Gemini Engine
2011-03-30 19:54:39 +00:00
omegablast2002@yahoo.com 6881787d7d moved parsing of the power and toughness for token gen into the resolve. 2011-03-30 19:25:48 +00:00
omegablast2002@yahoo.com cba0c1218f slight adjustments to transforms parsing to allow for newability to also be a transforms. xx wasnt being set in a couple cases, removed the space i added to the 3 variables so they can be anywhere in the line. 2011-03-30 17:45:05 +00:00
guzhenjie1@gmail.com 8557e441b0 Fixed Goblins of the Flarg, Spawning Pool and Waterspout Djinn.
Fixed typo in Moonlace, Sensei Golden-Tail and Spike Tiller.
Updated Jeweled Spirit and Recurring Nightmare.
2011-03-30 14:39:00 +00:00
omegablast2002@yahoo.com d38fd0afbd Mwonvuli Ooze was only giving 1/1 per age counter. 2011-03-30 14:34:00 +00:00
omegablast2002@yahoo.com 13e5bdb754 Yore-Tiller Nephilim changed it from *|mygraveyard ====> creature|mygraveyard 2011-03-30 13:51:40 +00:00
omegablast2002@yahoo.com 86a69c869f cleaned up TODO.txt a bit...found some missed gems in there :D
Temporary Insanity
Tower of Coireall
Tower of the Magistrate
Transguild Courier
Unified Strike
Vampiric Sliver
Verdeloth the Ancient
Veteran's Voice
Warbreak Trumpeter
Waterspout Djinn
Weight of Spires
Wild Growth
Withering Wisps
Wrap in Vigor
Yore-Tiller Nephilim
Zirilan of the Claw
Zombie Mob
2011-03-30 04:17:19 +00:00
omegablast2002@yahoo.com a645b06433 tiny change, just changed a line to allow ninjutsu to be targeted. 2011-03-30 04:13:28 +00:00
omegablast2002@yahoo.com 948dd212a8 "xx" value wasnt being set if used in activated abilities. >:( why do i need to find out WAY later about these thing. i know someone has come across it becuase there was a morph card which uses {x}{x} that wasnt added because of it. 2011-03-30 03:11:06 +00:00
omegablast2002@yahoo.com 63979190cd revised "type:" variable in card code to use new syntax.
added a few new cards i found along the way:
Ersatz Gnomes
Extravagant Spirit
Ghastly Demise
Ghostfire
Moonlace

color "artifact" is actually colorless, it does not add the subtype artifact to cards.
2011-03-30 01:04:01 +00:00
omegablast2002@yahoo.com d25424cb6c 3 changes
1st 
had to revise the syntax for my "type:" variable it is now type:blah:location, using the pipe line created nasty returns in some combinations of abilities as the parser confused the pipeline in type: with the one in TC.
2nd
more of a correction then a bug fix, i noticed that upcost had instances where it could still trigger its effect in the draw phase becuase the condiational for the ability resolve was in the update, i left the class mostly untouched but move the resolve out of update and into a receiveEvent for upcost, which triggers only once after you declared that you are leaving the upkeep before draw step begins.
3rd
reworked the construction of multiability to only produce a single multiability with all the abilities in the string instead of nested multiabilities, it is considerabily easier to debug and creates 1/3 less objects for the engine to deal with in comparison to the old method.
2011-03-30 01:01:11 +00:00
omegablast2002@yahoo.com 696237310f Tomb of Yawgmoth removed un-needed lord ability. 2011-03-29 21:32:26 +00:00
omegablast2002@yahoo.com 64e42d2570 removed an autoline that snuck in on lotus petal. 2011-03-29 20:31:59 +00:00
omegablast2002@yahoo.com 37e4ba11c0 updated transforms code to use double bracketing.. transforms((effect))...to avoid errors while parsing the ability. 2011-03-29 20:28:57 +00:00
omegablast2002@yahoo.com f0d104363f first moved regenerate lower on the parser, 2nd fixed an unforeseen bug with the newability subkeyword and the parser, i now store the string value of the transforms ability and remove it from the main string until transforms is parsed, if I leave it during the whole parsing any ability listed above transforms will not work correctly when granted with this ability.
also noticed issues with transforms parsing which i was able to easily correct by making it parse transforms in double brackets, transforms((effects))...updated primitive in next revision.
test suite passes, and varified that the fix doesn't effect how "&&" ability works with transforms.
2011-03-29 20:28:03 +00:00
guzhenjie1@gmail.com 827360d226 Reverted Otherworldly Journey and updated Spawning Pool by using Zeth's new code. 2011-03-29 14:35:20 +00:00
omegablast2002@yahoo.com 54b370db4e reverted the change to the prevent damage cycle of cards. there is a reason they use prevent: instead of "preventalldamage"..for starters "preventalldamage" never worked for permanents which is why i created "fog" 2nd prevent: recreates this cycles ability far better. in the terms of not having strange edge cases where it doesnt work correctly, like that which is seen in preventalldamage.
[card]
name=Spore Frog
auto={S}:fog oneshot
text=Sacrifice Spore Frog: Prevent all combat damage that would be dealt this turn.
mana={G}
type=Creature
subtype=Frog
power=1
toughness=1
[/card]

as we all remember spore frog was originally a issue ticket, preventalldamage was not working in all cases, or the effect stuck permanently.

as general advice, a card is "supported" if it is atleast 99% correct. this change was un merited as they showed no issues and had no tickets open.

and i know im not to "revert" anyones changes, but it will be MY email box that gets hit with 5 new bug reports concerning these cards. and i just don't have time to mess around with things that were a nonissue.
2011-03-29 12:48:16 +00:00
guzhenjie1@gmail.com 3c891ee271 Changed following cards to use "notatarget" instead of "target".
Boggart Mob
Changeling Berserker
Changeling Hero
Changeling Titan
Lightning Crafter
Mistbind Clique
Nova Chaser
Supreme Exemplar
Unstoppable Ash
Wormfang Drake
Wren's Run Packmaster

Updated following cards using new code "while".
Goblins of the Flarg
Last Laugh
Ronom Serpent
Skeleton Ship
Synod Centurion
Tethered Griffin

Updated following cards with code "prevent:999" to "preventalldamage".
Divine Light
Endure
Ethersworn Shieldmage
Safe Passage
Trained Pronghorn
2011-03-29 11:00:39 +00:00
guzhenjie1@gmail.com 07679c6205 Fixed following cards:
Artifact Ward
Balduvian Horde
Champion Lancer
Cho-Manno, Revolutionary
Desert Nomads
Forfend
Ghostly Wings
Glacial Chasm
Glimmervoid
Grixis Charm
Minotaur Explorer
Pillaging Horde
River of Tears
Spawning Pool
Thran Quarry
Veteran Swordsmith

Fixed typo in following cards:
Bloodstoke Howler
Deep Wood
Leonin Squire
Otherworldly Journey
Pit Keeper
2011-03-29 10:50:19 +00:00
omegablast2002@yahoo.com 306c98c02f had to separate my vectors right bracket from the map bracket for pspsdk. 2011-03-28 23:47:33 +00:00
omegablast2002@yahoo.com 0ac8cd4096 updated prismatic omen, tho im sure there are others. 2011-03-28 23:41:46 +00:00
omegablast2002@yahoo.com c03a444525 corrected Prismatic omen issue,
added newability[whatever ability] to transforms classes.
this allows for transforms to also add activated or mtgabilities to cards it targets.
example Prismatic omen:
auto=lord(land|myBattlefield) transforms(plains forest mountain swamp island,newability[{t}:add{w}],newability[{t}:add{g}],newability[{t}:add{r}],newability[{t}:add{b}],newability[{t}:add{u}])
Issue: 573
2011-03-28 23:39:29 +00:00
omegablast2002@yahoo.com b600b8c41a updated Isleback Spawn, i dont have time to hunt down the rest, my apologies. 2011-03-28 16:40:25 +00:00
omegablast2002@yahoo.com 565ee57372 it was reported to me that cards such as Isleback Spawn were not actually working correctly, to fix these i added a compareZone function to aslongas and a tag to use when you want to compare different like zones, example:
lets say in the case of Isleback Spawn you want to see if ANY player has less then 20 cards.

auto=aslongas(*|library) 4/8 <21 compare

this will check if either you or your opponent has less then 20 cards. rather then adding the total cards in both libraries.

over the last weeks ive seen this cards code change atleast 3 times. this should be the final version for it and any other cards like it.
2011-03-28 16:39:30 +00:00
guzhenjie1@gmail.com 33c12745b0 Fixed following cards:
Dragon Breath
Dragon Fangs
Dragon Scales
Dragon Shadow
Dragon Wings
Ghostly Wings
Questing Phelddagrif

Updated following cards:
Kaervek the Merciless
Thornbite Staff
2011-03-28 15:47:58 +00:00
omegablast2002@yahoo.com 8257fec1f2 changed the order of the aslongas tags so they can act more like manual over-rides. 2011-03-28 14:20:16 +00:00
guzhenjie1@gmail.com 3178fb96fa Fixed following cards:
Diviner's Wand
Guiltfeeder
Leyline of the Void

Updated following cards:
Academy Researchers
Addle
Amnesia
Angel's Feather
Demon's Horn
Distress
Dragon Mage
Dragon's Claw
Encroach
Extract
Golem's Heart
Hint of Insanity
Inquisition of Kozilek
Kor Firewalker
Kraken's Eye
Mindslicer
Paradise Plume
Psychic Spear
Thornbite Staff
Thoughtseize
Unmask
Venarian Glimmer
Wheel of Fortune
Wurm's Tooth

Fixed a typo of Reassembling Skeleton in M11 _cards.dat reported in forum.
2011-03-28 13:09:29 +00:00
omegablast2002@yahoo.com 2b952d73cf Marton Stromgald again...PLEASE remember to update your primitives before commiting anything. 2011-03-28 11:22:20 +00:00
wrenczes@gmail.com d934d9d30f Fixed a compilation problem on PSP with the minpspw 11.1 SDK, which changed the definition of a u32 from unsigned long to unsigned int. 2011-03-28 04:40:44 +00:00
omegablast2002@yahoo.com 289c57b6ea updated wheel of fate
auto=reject all(*|opponenthand)
auto=draw:7 opponent
auto=reject all(*|myhand)
auto=draw:7 controller
=====>
auto=reject all(*|hand)
auto=draw:7 opponent
auto=draw:7 controller
2011-03-27 20:35:46 +00:00
omegablast2002@yahoo.com 9107b2d8d4 it was reported to me that "|hand)" and "|library)" targetchoosing were only allowing you to target things in YOUR hand/library...
added parsing to correct this bug, 
cards which state "card from target players hand" should be coded "target(*|hand)" which allows targetting of any cards which are in a hand not just your hand.
|myhand)
|opponenthand)
|hand)
self explainitory.....
2011-03-27 20:19:33 +00:00
omegablast2002@yahoo.com fdaab847b4 updated Emperor Crocodile to use the new "while" tag for aslongas effects. 2011-03-27 19:47:11 +00:00
omegablast2002@yahoo.com 32556ff5c7 added 2 test showing that the emperor crocodile is destroyed afterward (shows that the effect is not treated as a oneshot)
and another that shows that it is destroyed immediately when entering an empty battlefield.
2011-03-27 19:46:12 +00:00
omegablast2002@yahoo.com 7d98628355 added a "while " tag for aslongas effects which are not supposed to be treated as oneshot abilities. adding it as a tag allows for maximum flexibility in the code.
while i was at it reworked the aslongas class completely, i promised myself if another bug popped up with aslongas i would rewrite it. 20 hours later, we have an aslongas which does not care about when cards come or go.
aslongas should never have used the added/removed to determine the validity of its effect. i allow update to sort it out now in the update function of aslongas...also added a new function to it called sorterfunction tho it looks as it could be reduced in code i would appreciate that it remains as it is, simply because of the nightmare i went through fixing the previous 7 bugs or more reported for aslongas. the logic was far to jumbled up. this i hope is atleast cleaner and easier to understand for the future devs that might work on it.

note: all test passed, all manual testing also passed.

new while tag is used as follows.

[card]
name=Emperor Crocodile
auto=aslongas(other creature|myBattlefield) all(this) sacrifice while <1
text=When you control no other creatures, sacrifice Emperor Crocodile.
mana={3}{G}
type=Creature
subtype=Crocodile
power=5
toughness=5
[/card]

this will denote that the ability is NOT a oneshot ability and should remain effective for the entire time the card is in the field.
Issue: 613
2011-03-27 14:37:12 +00:00
guzhenjie1@gmail.com 45566ad5bd Fixed code of Isleback Spawn.
Removed one of the wolf token.
2011-03-27 13:02:07 +00:00
guzhenjie1@gmail.com 152a4dbe87 Changed Psychic Spear and Venarian Glimmer. 2011-03-27 10:26:05 +00:00
guzhenjie1@gmail.com 7a7034bf1b Changes following cards use this kind of code:
target=blah
auto=blah

Castigate
Distress
Encroach
Extract
Inquisition of Kozilek
Psychic Spear
Thoughtseize
Unmask
Venarian Glimmer
2011-03-27 04:21:20 +00:00
guzhenjie1@gmail.com 598e1b4521 Fixed Grizzly Fate and Eye of Ugin.
Updated following cards, they target card in your own hand now:
Addle
Distress
Encroach
Hint of Insanity
Inquisition of Kozilek
Psychic Spear
Thoughtseize
Unmask
Venarian Glimmer

Updated following cards:
Astrolabe
Barbed Sextant
Castigate
Catalog
Extract
Fallow Wurm
Plant Elemental
Rogue Elephant
Ruinous Minotaur
Scythe Tiger
Coral Atoll
Crosis's Catacombs
Darigaaz's Caldera
Demonic Appetite
Dormant Volcano
Dromar's Cavern
Everglades
Jungle Basin
Rith's Grove
Treva's Ruins

Added Amnesia.
2011-03-26 17:35:51 +00:00
guzhenjie1@gmail.com bcb7e64dfd Updated all cards used code "token(-1924)" by "token(Saproling,Creature Saproling,1/1,green)".
Removed token card of them:
[card]
name=Saproling
type=Creature
subtype=Saproling
power=1
toughness=1
color=green
id=-1924
[/card]
2011-03-26 09:26:06 +00:00
guzhenjie1@gmail.com eb81a10868 Updated all cards I found with discard effects by using "reject":
Addle
Apocalypse
Brainbite
Careful Study
Coercion
Distress
Doomsday Specter
Dragon Mage
Drekavac
Duress
Encroach
Exiled Boggart
He Who Hungers
Lion's Eye Diamond
Looter il-Kor
Manabond
Mercenary Knight
Merfolk Traders
Mind Slash
Mindslicer
Mox Diamond
Myojin of Night's Reach
Nicol Bolas
Null Brooch
One with Nothing
Ostracize
Owl Familiar
Psychic Spear
Screeching Drake
Shattered Dreams
Sift
Sky-Eel School
Slate of Ancestry
Talara's Bane
Thought Gorger
Thoughtseize
Thrull Surgeon
Thundering Wurm
Unmask
Vodalian Merchant
Volrath the Fallen
Wheel and Deal
Wheel of Fortune

Bazaar of Baghdad Discard
Bonded Fetch's Discard
Careful Studies 2nd Discard
Drowned Rusalkas Discard
Emmessi Tome's Discard
Enclave Cryptologist's Draw-Discard
Frontline Sage's Discard
Grixis Battlemage's Discard
Inspired Sprite's Discard
Jalum Tome's Discard
Magus of the Bazaar Discard
Merfolk Looter's Discard
Obelisk of Alara's Discard
Riddlesmith's Discard
Thought Courier's Discard
Treva's Charm's Discard
2011-03-26 09:13:33 +00:00
wagic.the.homebrew@gmail.com 8f4f884edb Adding Kaioshin's new Wallpapers 2011-03-26 02:20:15 +00:00
guzhenjie1@gmail.com e0084c108b Fixed Powder Keg.
Updated following cards:
Body Snatcher
Greel, Mind Raker
Last Stand
Mesmeric Trance
Psychic Vortex
Spellbound Dragon
Venarian Glimmer

Added Hint of Insanity and Persecute.
2011-03-25 17:11:15 +00:00
omegablast2002@yahoo.com 142ae40133 updated thallid test to look for the correct token id...this is why you should not add multiple tokens for the same creature as entries in card.dat...thallid looks for -1924...the original id....-11492115 is a new card.dat info which was added and i complained about the constant fails in the test suite from these types of additions.
this was intruduced as a workaround to force a card to be able to display muliple types of tokens, which wagic can support with this workaround but causes fails in test suite....

Sarpadian Empires, Vol. VII

this is the card that created this fail.

in the future we need to be careful about adding tokens to card.dat...there are 2 different systems for getting a token to appear for a card. lets use what we have.
2011-03-24 19:07:45 +00:00
guzhenjie1@gmail.com 3d50eba421 Fixed following cards:
Echoing Ruin
Eradicate
Extirpate
Incite Hysteria
Leave No Trace
Neurok Commando
Retraced Image
Scour
Sowing Salt
Splinter
Surge of Zeal
Wojek Siren

Updated following cards:
Cleansing Beam
Lobotomy
Rally the Righteous
Wake of Destruction
2011-03-24 13:04:02 +00:00
wagic.the.homebrew@gmail.com 500abec9e6 Erwan
- Updating version number for upcoming revision
- Note: test Thallid.txt fails, we need to investigate when this happened and fix asap, will open a ticket.
2011-03-24 12:36:32 +00:00
omegablast2002@yahoo.com ff97eed3f1 life and limb. the becomes was removing type "forest land" 2011-03-24 03:49:15 +00:00
guzhenjie1@gmail.com a739d02b4a Fixed Ashnod's Transmogrant, Mercadian Lift and Thumbscrews. 2011-03-23 15:35:44 +00:00
guzhenjie1@gmail.com 88ed260540 Updated Admonition Angel and Mortuary.
Fixed typo of following cards was reported in forum:
Dawnglare Invoker
Dryad Arbor
Reinforced Bulwark
Sword of the Paruns
Totem-Guide Hartebeest
2011-03-23 11:33:40 +00:00
guzhenjie1@gmail.com dbe7a1c5b5 Added Inquisition of Kozilek. 2011-03-22 13:21:41 +00:00
omegablast2002@yahoo.com 966d8b453d reworked landhome ability, to fix a reported bug where it simply becomes tapped on opponents turn for no reason. 2011-03-22 10:46:32 +00:00
omegablast2002@yahoo.com 06ca82929b removed clockwork beast alias and hard code. it is no longer needed as i added a soft coding method that was far more generic and leaving this is was causing conflicts with the new code. players reported that using the 4th edition clockworks beast was loading the card with the alias even tho i removed the alais in the primitives. 2011-03-22 03:44:54 +00:00
omegablast2002@yahoo.com 65f2706f1e fixed a bug where cards with vanishing (new vanishing) were given "vanishing as a menu item during combat. 2011-03-22 03:41:45 +00:00
omegablast2002@yahoo.com cb1b1d3054 updated the foelost cards, added Sygg, River Cutthroat. 2011-03-22 03:27:56 +00:00
omegablast2002@yahoo.com 0fb914c0c3 fixed a reported bug where the foelost restrictions for triggers were not activating correctly, also updated the code by making it more flexiable...you can now do foelost(number) instead. 2011-03-22 03:20:17 +00:00
omegablast2002@yahoo.com 55d58b6425 fixed a reported bug where blinking cards with "nonbattlezone" code was not activating triggers. :( accidently forgot to add the MY_EXILE to the list of non-battle. :) all good now. 2011-03-22 02:49:49 +00:00
omegablast2002@yahoo.com aeb4a839b2 fixed a report crash with auras that "teach(" an activated ability to a creature which can phaseout. 2011-03-22 02:25:02 +00:00
omegablast2002@yahoo.com 43711786fd fixed a reported bug where a player would respond to a targeted ability by phasing out a creature and the targeted ability would still resolve on the phased card. 2011-03-22 02:15:10 +00:00
omegablast2002@yahoo.com a866adb8ea updated the altercost cards to remove the "resetcost" code. 2011-03-22 01:20:07 +00:00
omegablast2002@yahoo.com f2c905225b cleaned up resetting cost for altercost code, its *almost* where i want it to be, removed the need to have "resetcost" coding on card code. removed "resetcost" keyword.
i was not 100% successful in getting the correct cost on altercost which reduced the amounts. however altercost which increased the amounts are now clean code. so the reducers are still using a dirty method of putting the card from the hand back into the hand to get the correct amounts.

the issue i ran into is how to get the correct amount in this situation.
target cost {5} 
have 3 reducers that - {2}
thats {1} of overkill reduce...
heres the issue. now remove all the reducers from play. the cost returns to {6} instead of 5. 
you would think, will have it track the over kill. which leads to another. have the 3rd card which would contain the overkill removed first, i factor the overkill and increase the amount by what was reduced, but that would not be correct. since the reduce was {2} the increase of removing the overkill card should increase the targets cost by {2} not the amount it actually reduced. as you can see, it is extremely complex. so for now im leaving it dirty, but removing the resetcost code.
2011-03-22 01:12:33 +00:00
omegablast2002@yahoo.com e9eaef430e unable to repro but i recieved reports of code using "thatmuch" producing massive numbers in edge cases. I realized i never int'ed it to 0, so im hoping that this was the reason for the massive positive and negitives it would produce. 2011-03-21 23:16:59 +00:00
guzhenjie1@gmail.com 096add2236 Fixed Green Sun's Zenith. 2011-03-20 08:58:39 +00:00
guzhenjie1@gmail.com df7b8283d5 Fixed Prismatic Omen. 2011-03-19 13:31:41 +00:00
Xawotihs 29e9ea62c3 Fixed the build problem with VS2008 and actived multithreaded build while I was at it ... you guys liked to wait ? =) 2011-03-19 08:35:57 +00:00
guzhenjie1@gmail.com 58c556741e Fixed following cards reported in forum:
AEthertow
Balduvian Dead
Barkshell Blessing
Disturbed Burial
Disturbing Plot
Giantbaiting
Gleeful Sabotage
Hornet
Hunted Dragon
Hunted Horror
Hunted Lammasu
Hunted Phantasm
Hunted Troll
Memory Sluice
Pyrohemia
Tetsuo Umezawa
Urborg Emissary
Vampire Hexmage

Updated following cards:
Bazaar of Baghdad
Brood Birthing
Dark Depths
Gemstone Mine
Hickory Woodlot
Icatian Crier
Kulrath Knight
Oblivion Stone
Peat Bog
Plague Boiler
Remote Farm
Sandstone Needle
Saprazzan Skerry

Changed the code of Tidal Wave:
Tidal Wave
auto=token(-3371)
 ==> 
auto=token(Wall,Creature Wall,5/5,defender,treason,blue)

Removed the token card of it in mtg and card.dat:
[card]
name=Wave
power=5
toughness=5
abilities=defender
auto=@next end:moveTo(mygraveyard)
text=Defender
type=Creature
suptype=Wall
color=blue
[/card]

MIR
[card]
primitive=Wave
id=-3371
rarity=T
[/card]
2011-03-17 11:12:53 +00:00
guzhenjie1@gmail.com 2d8a1d0aa0 Fixed following cards:
Archon of Redemption
Avenger en-Dal
Death Watch
Gristleback
Heal the Scars
Rashida Scalebane
Stalking Vengeance
Wave of Reckoning

Corrected text of Chronozoa.
2011-03-15 11:17:34 +00:00
guzhenjie1@gmail.com 0eaaac1500 Fixed Venerated Teacher. 2011-03-14 13:26:24 +00:00
guzhenjie1@gmail.com a20e0a41c8 Corrected Shaper Parasite and Sword of Vengeance was reported in forum. 2011-03-14 11:05:37 +00:00
Xawotihs f9be0a6341 - reworked completly the JNetwork, JSocket interface (had to ifdef out the PSP socket code)
- added 2 menus to wait for connection and wait for deck selection
- tested compilation on Qt Linux, Qt Windows and PSP
- deactivated everywhere (NETWORK_SUPPORT to activate).
2011-03-13 21:19:02 +00:00
guzhenjie1@gmail.com 3220f94e00 Corrected code of Unscythe, Killer of Kings. 2011-03-13 08:35:57 +00:00
guzhenjie1@gmail.com 573004dccd Updated Helldozer. 2011-03-12 13:32:40 +00:00
guzhenjie1@gmail.com 4272fe83e9 Updated Mine Layer. 2011-03-12 12:59:17 +00:00
guzhenjie1@gmail.com d153403b37 Fixed Day of the Dragons. 2011-03-10 11:44:34 +00:00
guzhenjie1@gmail.com f13a2c8555 Updated Slagstorm. 2011-03-09 15:16:19 +00:00
guzhenjie1@gmail.com 871ef2ba9e Fixed Boros Fury-Shield, Fend Off and Murderous Redcap. 2011-03-09 11:14:21 +00:00
guzhenjie1@gmail.com 7794f01b94 Corrected typo in Dragonskull Summit, Drowned Catacomb and Glacial Fortress. 2011-03-08 11:30:20 +00:00
guzhenjie1@gmail.com 477422a34e Corrected a typo in Lightmine Field's text. 2011-03-07 11:29:49 +00:00
omegablast2002@yahoo.com f771ceb459 Gempalm Incinerator was allowing the targetting of players with its cycling ability.... 2011-03-06 17:26:26 +00:00
omegablast2002@yahoo.com e8bbbb45de fixed a reported issue, find it a bit strange tho, as everything else can be adressed in this method without being so specific ie: using hasColor(blah) as in the way "fear" was added in here without addressing "this"....just to be on the safe side im going to specify "this->" becuase doing it without it was returning as tho it could not block even tho the creature did not have "weak"
i suspect this could be true with the intemidate and fear...
2011-03-06 16:23:23 +00:00
guzhenjie1@gmail.com 86dedaa48a Fixed Beastmaster's Magemark, Heart of Bogardan and Shield of the Righteous. 2011-03-06 10:52:26 +00:00
guzhenjie1@gmail.com 956093dab3 Fixed Hoofprints of the Stag, Wall of Resistance and Wall of Reverence. 2011-03-06 07:58:25 +00:00
guzhenjie1@gmail.com e346a545fd Fixed Dead-Iron Sledge, Defiant Vanguard and Wall of Nets. 2011-03-06 04:13:20 +00:00
guzhenjie1@gmail.com ab4a0d0657 Added missing text of Mox Opal. 2011-03-05 05:24:00 +00:00
guzhenjie1@gmail.com cfa1bd21c4 Fixed Boon Reflection, Pious Warrior and Victory's Herald. 2011-03-04 14:29:28 +00:00
guzhenjie1@gmail.com a2b7aac8c3 Added missing code of Lightning Coils, corrected text of Angelheart Vial and fixed Crazed Armodon.
Changed the code of Tomb of Urami:
Tomb of Urami
auto={2}{B}{B}{T}:moveTo(mygraveyard) all(land|myBattlefield) && token(-74492)
 ==> 
auto={2}{B}{B}{T}:moveTo(mygraveyard) all(land|myBattlefield) && token(Urami,Legendary Creature Demon Spirit, 5/5,flying,black)

Removed the token card of it in mtg and card.dat:
[card]
name=Urami
abilities=flying
text=Flying
type=Legendary Creature
subtype=Demon Spirit
power=5
toughness=5
color=black
[/card]

SOK
[card]
primitive=Urami
id=-74492
rarity=T
[/card]
2011-03-04 11:08:37 +00:00
guzhenjie1@gmail.com 0cce9c27b7 Fixed Angelheart Vial, Rapacious One.
Changed following tokens' name in mtg and card.dat:
Bestial Menace (WWK)
name=Snake
name=Wolf
name=Elephant

Decree of Justice (SCG)
name=Angel
name=Soldier

Elephant Resurgence
name=Elephant T1

Fable of Wolf and Owl (EVE)
name=Wolf
name=Bird

Mitotic Slime (M11)
name=Ooze T1
name=Ooze T2

One Dozen Eyes (MRD)
name=Beast
name=Insect

Sarpadian Empires, Vol. VII (TSP)
name=Citizen
name=Camarid
name=Thrull
name=Goblin
name=Saproling

Sound the Call (CSP)
name=Wolf T1

Wand of the Elements (DST)
name=Elemental T1
name=Elemental T2

Waylay (USG)
name=Knight

Wurmcoil Engine (SOM)
name=Wurm T1
name=Wurm T2

Changed the code of Feral Lightning and Zektar Shrine Expedition:
Feral Lightning
auto=token(-84373)*3
 ==> 
auto=token(Elemental,Creature Elemental,3/1,red,haste,unearth)*3

Zektar Shrine Expedition
auto={C(0/0,-3,Quest)}{S}:token(-183403)
 ==> 
auto={C(0/0,-3,Quest)}{S}:token(Elemental,Creature Elemental,7/1,red,trample,haste,unearth)

Removed two token cards of them:
[card]
name=Elemental Token from Feral Lightning
type=Creature
subtype=Elemental
auto=@next end:moveTo(exile)
abilities=haste
text=Haste
power=3
toughness=1
color=red
[/card]
[card]
name=Elemental Token from Zendikar Shrine
type=Creature
subtype=Elemental
auto=@next end:moveTo(exile)
abilities=trample,haste
text=Trample,haste
power=7
toughness=1
color=red
[/card]
2011-03-03 13:23:39 +00:00
omegablast2002@yahoo.com ba4c83faa9 of the of "wormfang" cycle had an extra "b" in mybattlefield... 2011-03-03 13:07:19 +00:00
omegablast2002@yahoo.com a8142350fd added suture priest and pristine Talisman, theyre part of MBS and official cards. 2011-03-03 09:07:44 +00:00
omegablast2002@yahoo.com eb8a22223b omitted a unneeded include. 2011-03-02 21:35:31 +00:00
omegablast2002@yahoo.com 64a234ef44 added support for customphasering construction in rules txt...
exsample

[INIT]
mode=mtg
[PLAYERS]
life:2000
poisoncount:4
customphasering:untap,firstmain,firstmain,draw,firstmain,upkeep,draw
auto=shuffle
auto=draw:7
auto=@each my draw:draw:1
auto=maxPlay(land)1

by default every turn will have normal order we've always been use to
however
before begins --required added automatically
anything you want in any order
anything you want in any order
anything you want in any order
anything you want in any order
anything you want in any order
anything you want in any order
anything you want in any order
anything you want in any order
cleanup---required added automatically
after end of turn---required added automatically

svntax 
customphasering:blah,blah,blah
listed in the order you want it to go. you can repeat a phase as often as you want, you can omit phases.

please note, this was not designed with MTG in mind..some of the rules require certain phases to work...this is for CUSTOM game building...i repeat NOT DESIGNED FOR MTG...tho it can be used with most(almost all, with the exception of those which require certain phases to work, exsample, ninjitsu will only work in a phasering which contains blockers and attackers)

enjoy.....
2011-03-02 21:33:42 +00:00
omegablast2002@yahoo.com 70236f344e fixed a massive bug report
Issue: 605
2011-03-02 13:48:09 +00:00
wagic.the.homebrew@gmail.com b021417324 Erwan
-fix for issue 604 (Land play limitation should not apply in all cases)
-- this adds a "castMehod" variable to MTGCardInstance. IF this variable is 0, the card was not "cast" (or for lands, "put into play" as part of the lands rule), but "added" to the battlefield with some other effect. On the other hand, if this variable is set, it means the card was cast 
-- as we discussed, I did not touch the "alternateCostPaid" variable, as I'm still not really sure these two concepts are actually the same
2011-03-02 13:41:24 +00:00
guzhenjie1@gmail.com 8f9b1d5b8d Reverted changes in r3219 2011-03-02 12:03:33 +00:00
wrenczes@gmail.com baf0343063 Makefile changes in JGE to include the boost path. Added a missing include dependency on shared_ptr. 2011-03-02 09:26:31 +00:00
wrenczes@gmail.com 297f87eb04 Fixed relative path includes of JGE headers. 2011-03-02 09:04:31 +00:00
wrenczes@gmail.com 9901329caf Moved Threading.h into JGE so that it can be used at that level. 2011-03-02 08:14:47 +00:00
guzhenjie1@gmail.com 75e53cd672 Changed Elephant Resurgence, Tombstone Stairwell and tokens of them in mtg to make tokens' image shows up.
Added the following cards in _cards.dat:
MIR: 
Added following card:
[card]
primitive=Tombspawn
id=-3318
rarity=T
[/card]

PCY: 
Added following card:
[card]
primitive=Elephant Token from Elephant Resurgence
id=-21382
rarity=T
[/card]

You also need to add two tokens pictures in All Image Set:
MIR.zip
Tombspawn (Tombstone Stairwell):
Name to 3318t

PCY.zip
Elephant Token from Elephant Resurgence (Elephant Resurgence):
Name to 21382t
2011-03-02 05:42:39 +00:00
guzhenjie1@gmail.com a27a1fddc2 Fixed Ohran Viper and Sosuke, Son of Seshiro. 2011-03-02 05:02:09 +00:00
omegablast2002@yahoo.com ae169048c7 updated tap target as cost to remove a bunch of redundent [-tapped] checks...i recently added this check in the canpay...so it is not needed to reinstate a descriptor targetchooser stating -tapped... 2011-03-02 02:02:13 +00:00
omegablast2002@yahoo.com fb2621047b fixed Sosuke, Son of Seshiro 2011-03-02 01:00:19 +00:00
guzhenjie1@gmail.com b2ebf451f4 Fixed Isleback Spawn. 2011-03-01 11:19:51 +00:00
guzhenjie1@gmail.com 47e12985d8 Fixed Remote Farm. 2011-03-01 11:10:16 +00:00
wrenczes@gmail.com be4a7ce412 VS2010 file inclusions. 2011-03-01 10:59:39 +00:00
wrenczes@gmail.com 7b53f30519 Removed an unneeded include. 2011-03-01 09:30:23 +00:00
wrenczes@gmail.com 772828bced Removed some overly noisy log tracing in JFileSystem that I had previously put in. One nice thought would be the addition of a 'volume' to tracing messages so that you could choose how much verbosity you want in the logging output, but that's a luxury for the moment. 2011-03-01 08:57:31 +00:00
wrenczes@gmail.com 1c228aba7a Make the ToHex() util function always available, instead of debug only on win/linux. Useful for tracing addresses in psp log files... 2011-03-01 08:53:15 +00:00
wrenczes@gmail.com 9308c743a5 This adds a true 'boost::thread' equivalent for the psp, which in turn allows me to eliminate the need for #ifdef PSP vs #ifdef Win/Linux/iOS in my threaded cache implementation code. 2011-03-01 08:51:42 +00:00
solo81@web.de 4290dc12bc Fixed Necroskitter and Darksteel Plate.
Removed Island Sanctuary (hardcoded). It seems that this card never worked.
2011-03-01 08:12:08 +00:00
techdragon.nguyen@gmail.com b7fb561705 patch to address issue 601, this is a work around to get the game shop from crashing due to card definitions that are apparently not 100% compatible with the system.
http://code.google.com/p/wagic/issues/detail?id=601
2011-03-01 00:58:48 +00:00
guzhenjie1@gmail.com f68b0ff63e Fixed Hidden Horror. 2011-02-28 12:24:28 +00:00
omegablast2002@yahoo.com 2153a8d308 added menutext returns for "protection from(" 2011-02-27 16:09:26 +00:00
omegablast2002@yahoo.com d8450548c7 suspend changes, suspended cards which would have a counter removed are checked for time counters and cast if no time counters are present as a statebased effect, as per MTG rules..
case changes, "Time" != "time" aparently our parser now strings all counters as lower case...so "Charge" is no longer string "Charge" and can not be compared to "Charge"..not sure if that makes any sense :) anyways removel of time counters on exiled cards by triggers or effects now happen correctly.
2011-02-27 15:19:02 +00:00
guzhenjie1@gmail.com f9c38bee8e Fixed Jeweled Spirit, Shelter and typo in Tel-Jilad Defiance. 2011-02-27 14:50:59 +00:00
omegablast2002@yahoo.com d255f25130 fixed a reported issue where sometimes a card was ignored...originally i was incrementing up and resetting the value...found that it is far easier to increment down, as i remains the same even when cards become shifted from exile to play card.map...incrementing down guarantees that the positions of the remaining cards to check are going to be the same even if a few have been "unsuspended"... 2011-02-27 14:42:54 +00:00
guzhenjie1@gmail.com 1dddb54627 Fixed Aysen Crusader. 2011-02-27 11:53:12 +00:00
guzhenjie1@gmail.com 23692204bd Fixed Rest for the Weary. 2011-02-26 09:19:21 +00:00
omegablast2002@yahoo.com 5719801154 aether membrane changed 2011-02-26 08:32:45 +00:00
guzhenjie1@gmail.com 7e0f1edb42 Fixed Heroes Remembered, Phthisis and Search for Tomorrow. 2011-02-26 07:20:26 +00:00
omegablast2002@yahoo.com 464e74f390 gave Hoard-Smelter Dragon flying 2011-02-25 23:37:38 +00:00
omegablast2002@yahoo.com 89e764f06a Shimian Specter targets only -lands opps 2011-02-25 23:27:31 +00:00
omegablast2002@yahoo.com 721595bbd8 added Shimian Specter 2011-02-25 23:26:40 +00:00
omegablast2002@yahoo.com fa29902fcb added Phthisis 2011-02-25 23:12:07 +00:00
omegablast2002@yahoo.com c4ecfb7b00 opps, pspsdk didnt like this, i wish it wasnt so whiny sometimes.... 2011-02-25 22:41:43 +00:00
solo81@web.de 910407b274 Fixed Mercadian Lift and Ghitu Encampment. 2011-02-25 20:47:02 +00:00
omegablast2002@yahoo.com e7d957ed5c added
Ancestral Vision
Corpulent Corpse
Deep-Sea Kraken
Divine Congregation
Durkwood Baloth
Duskrider Peregrine
Errant Ephemeron
Giant Dustwasp
Heroes Remembered
Infiltrator il-Kor
Ith, High Arcanist
Ivory Giant
Keldon Halberdier
Knight of Sursi
Lotus Bloom
Nantuko Shaman
Plunder
Rift Bolt
Riftwing Cloudskate
Search for Tomorrow
Shade of Trokair
Shivan Meteor
Viscerid Deepwalker
Wheel of Fate
2011-02-25 18:41:00 +00:00
omegablast2002@yahoo.com 3f090c7be8 added basic suspend.
syntax
suspend(number of time counter)={cost}
suspend(3)={g}
2011-02-25 18:40:23 +00:00
omegablast2002@yahoo.com 4b944bd345 updated this test as it hlycon was changed recently to include "from(myhand)" for "cast" effect...the test now actually cast grizzly bears from your hand.... 2011-02-25 18:22:19 +00:00
omegablast2002@yahoo.com f07f9c7e2d fixed a typo in Oriss Samite Guardian...maxCast(*)0 control ====>maxCast(*)0 controller ...if possible please verify that this corrects the ticket opened for this card... 2011-02-25 12:12:42 +00:00
guzhenjie1@gmail.com 9b067bb766 Fixed Wash Out reported in forum. 2011-02-25 11:59:29 +00:00
omegablast2002@yahoo.com ffa13c8983 still tweaking ai interrupt slightly...think i finally got it how i wanted it...if it can interrupt OR if its ALREADY interrupting...
added some extra checks to how Ai determines if it should cast a "all(" or other lord...it was only taking the amount of cards it had into account and not looking at what the suggestion was for the nestedability...meaning it treated "destroy all" the same way it treated "all creature +10/+10" it would only check if it had more cards effected...completely ignore the effects....
2011-02-24 14:08:19 +00:00
guzhenjie1@gmail.com 590655ac80 Fixed Badlands, Scrubland and Taiga.
Changed Paradise Plume back.
2011-02-24 11:15:14 +00:00
omegablast2002@yahoo.com 42821464fa did a little todo clean up of cards which have been added, also added
Apathy
Brainspoil
Cowardice
Cyclopean Snare
Dead-Iron Sledge
Deathrender
Dryad Arbor
Frenzied Tilling
Fugitive Druid
Funeral Pyre

Hazezon Tamar ##readd-if the "next" trigger is still activating every upkeep, this is a bug open a ticket please.

Haze of Rage
Infused Arrows
2011-02-23 21:06:40 +00:00
techdragon.nguyen@gmail.com ea8e8f36c8 fixed very obscure bug. In VS2010 the string was being trimmed before going into Construct method, but the string length was not updated.
Thus, Construct thought the string length was 1 greater than it should have been causing an out of bounds runtime exception.  In VS2008, the same thing
happened, however no exception was thrown since VS2008 allows access into the undefined memory space and returned a 0 (null) value when it tried to access
outside the string array.  This fix targets specifically the color filters since they seem to be the ones with the error. " color:g;" and not "color:g;" was being
passed.
2011-02-23 18:30:45 +00:00
omegablast2002@yahoo.com 2bd467dab7 Marton Stromgald corrected, silly mix match with the triggers. 2011-02-23 15:11:11 +00:00
omegablast2002@yahoo.com d88fd5a6af removed "windfall" the effect "draws cards equal to the highest amount a player discarded this way" is not supported. this card could not even be considered borderline. 2011-02-23 15:08:16 +00:00
omegablast2002@yahoo.com 761588d4b7 corrected "All Is Dust" 2011-02-23 15:05:47 +00:00
guzhenjie1@gmail.com 0cfdf3f73b Fixed Chameleon Colossus:
mana={G}
 ==> 
mana={2}{G}{G}

Reverted Paradise Plume, otherwise using filter by Mana Ability to filtrate cards in shop or editor, game has a high chance to crash:
auto=@movedto(*[white]|mystack) from(myhand):this(counter{0/0.1.White}) life:1 controller
auto=@movedto(*[white]|opponentstack) from(opponenthand):this(counter{0/0.1.White}) life:1 controller
auto=@movedto(*[blue]|mystack) from(myhand):this(counter{0/0.1.Blue}) life:1 controller
auto=@movedto(*[blue]|opponentstack) from(opponenthand):this(counter{0/0.1.Blue}) life:1 controller
auto=@movedto(*[black]|mystack) from(myhand):this(counter{0/0.1.Black}) life:1 controller
auto=@movedto(*[black]|opponentstack) from(opponenthand):this(counter{0/0.1.Black}) life:1 controller
auto=@movedto(*[red]|mystack) from(myhand):this(counter{0/0.1.Red}) life:1 controller
auto=@movedto(*[red]|opponentstack) from(opponenthand):this(counter{0/0.1.Red}) life:1 controller
auto=@movedto(*[green]|mystack) from(myhand):this(counter{0/0.1.Green}) life:1 controller
auto=@movedto(*[green]|opponentstack) from(opponenthand):this(counter{0/0.1.Green}) life:1 controller
 ==> 
auto=@movedto(*[white]|stack):this(counter{0/0.1.White}) life:1 controller
auto=@movedto(*[blue]|stack):this(counter{0/0.1.Blue}) life:1 controller
auto=@movedto(*[black]|stack):this(counter{0/0.1.Black}) life:1 controller
auto=@movedto(*[red]|stack):this(counter{0/0.1.Red}) life:1 controller
auto=@movedto(*[green]|stack):this(counter{0/0.1.Green}) life:1 controller

Fixed the mana cost of Paradise Plume:
mana={1}
 ==> 
mana={4}
2011-02-23 11:27:06 +00:00
Xawotihs a7680363e5 Added PlayRestrictions in Qt project. 2011-02-22 22:51:41 +00:00
omegablast2002@yahoo.com 844a70d22b Glacial Chasm correction 2011-02-22 21:53:48 +00:00
omegablast2002@yahoo.com 268c473865 added Elvish Branchbender 2011-02-22 14:56:24 +00:00
omegablast2002@yahoo.com 6dffea1b4e Vastwood Animist added 2011-02-22 14:52:58 +00:00
omegablast2002@yahoo.com 95df44fb2e Chimeric Coils updated to use setpower/toughness and treason...unstead of using triggers.... 2011-02-22 14:48:11 +00:00
omegablast2002@yahoo.com b4c4b52a8f added mirror entity....based on the conversion to word support for transforms ability. 2011-02-22 14:44:14 +00:00
omegablast2002@yahoo.com 6f792e5546 2011-02-22 14:38:07 +00:00
guzhenjie1@gmail.com 0f4f41c137 Fixed Iona, Shield of Emeria and Plateau. 2011-02-22 10:47:10 +00:00
guzhenjie1@gmail.com 967ba92445 Fixed Rancid Earth:
auto=aslongas(*|mygraveyard) lord(creature) damage:1 >6
 ==> 
auto=aslongas(*|mygraveyard) damage:1 all(creature) >6
2011-02-21 12:38:22 +00:00
guzhenjie1@gmail.com 742b78666c Fixed following cards in mtg:
Broodhatch Nantuko
Flamekin Spitfire
Gravelgill Duo
Saltskitter

Changed the ability of Mayael's Aria make it works better.

Added "from(myhand/opponenthand)" for following cards:
AEther Sting
Angel's Feather
Angelic Arbiter
Argothian Enchantress
Aurora Eidolon
Baku Altar
Balefire Liege
Ballynock Trapper
Battlegate Mimic
Battlewand Oak
Belligerent Hatchling
Blademane Baku
Blind Creeper
Bog Gnarr
Bounteous Kirin
Briarknit Kami
Celestial Ancient
Celestial Kirin
Chimeric Egg
Cinder Pyromancer
Cloudhoof Kirin
Contemplation
Deathbringer Liege
Demon's Horn
Desecration Elemental
Dragon's Claw
Dreamcatcher
Drooling Ogre
Dwarven Patrol
Earthshaker
Ebon Drake
Elvish Handservant
Emberstrike Duo
Enchantress's Presence
Enigma Eidolon
Entropic Eidolon
Fable of Wolf and Owl
Fiddlehead Kami
Forced Fruition
Forgotten Ancient
Furious Assault
Gelectrode
Gilt-Leaf Archdruid
Glade Gnarr
Glimpse of Nature's Draw
Gloryscale Viashino
Goblin Cohort
Golem Foundry
Golem's Heart
Gravelgill Duo
Guardian of Solitude
Halcyon Glaze
Hand of the Praetors
Haru-Onna
Havoc
Heartwood Storyteller
Hidden Ancients
Hidden Gibbons
Hidden Guerrillas
Hidden Predators
Hidden Spider
Hikari, Twilight Guardian
Horizon Seed
Illusory Demon
Innocence Kami
Insight
Inspired Sprite
Ishi-Ishi, Akki Crackshot
Jackalope Herd
Jade Idol
Kaervek the Merciless
Kami of Fire's Roar
Kami of Tattered Shoji
Kami of the Hunt
Kami of the Painted Road
Kami of the Waning Moon
Kiln Fiend
Kiri-Onna
Kodama of the South Tree
Kor Firewalker
Kor Spiritdancer
Kraken's Eye
Kurgadon
Leering Emblem
Leonin Battlemage
Loam Dweller
Loyal Gyrfalcon
Lys Alana Bowmaster
Lys Alana Huntmaster
Manaplasm
Memory Erosion
Merrow Levitator
Mesa Enchantress
Mirran Spy
Mogg Conscripts
Mogg Sentry
Mold Adder
Nettle Sentinel
Nightsky Mimic
Nikko-Onna
Norin the Wary
Noxious Hatchling
Ogre Recluse
Onslaught
Opal Archangel
Opal Caryatid
Opal Champion
Opal Gargoyle
Opal Guardian
Orbweaver Kumo
Ore Gorger
Oyobi, Who Split the Heavens
Painsmith
Paradise Plume
Predatory Hunger
Presence of the Master
Primordial Sage
Pristine Angel
Pyrostatic Pillar
Quill-Slinger Boggart
Quillmane Baku
Quirion Dryad
Reki, the History of Kamigawa
Riddlesmith
Riverfall Mimic
Safehold Duo
Sandstorm Eidolon
Scaled Hulk
Shorecrasher Mimic
Sigil of the Empty Throne
Sire of the Storm
Skittering Horror
Skittering Monstrosity
Skittering Skirge
Skullmane Baku
Snake Pit
Soilshaper
Sol'kanar the Swamp King
Soot Imp
Soul of Magma
Spellshock
Sphinx-Bone Wand
Straw Golem
Sturdy Hatchling
Surrakar Spellblade
Tangleroot
Tattermunge Duo
Taurean Mauler
Teller of Tales
Thief of Hope
Thistledown Duo
Thorntooth Witch
Tibor and Lumia
Tidespout Tyrant
Titania's Chosen
Vedalken Archmage
Veil of Birds
Veiled Serpent
Veilstone Amulet
Verdant Eidolon
Verduran Enchantress
Voracious Hatchling
Warmth
Wee Dragonauts
Witch-Maw Nephilim
Woodlurker Mimic
Wurm's Tooth
Yawgmoth's Edict
Yuki-Onna
2011-02-21 10:50:58 +00:00
guzhenjie1@gmail.com 381370d2dd Fixed following cards with "Whenever an opponent/you play a land" ability:
City of Traitors
Dirtcowl Wurm
Hidden Herd
Horn of Greed
Pangosaur
2011-02-20 10:23:41 +00:00
guzhenjie1@gmail.com 995f92c3fe Fixed Rancid Earth reported in forum:
auto=aslongas(*|mygraveyard) lord(creature) damage:1 >1
auto=aslongas(*|mygraveyard) damage:1 controller >1
auto=aslongas(*|mygraveyard) damage:1 opponent >1
 ==> 
auto=aslongas(*|mygraveyard) lord(creature) damage:1 >6
auto=aslongas(*|mygraveyard) damage:1 controller >6
auto=aslongas(*|mygraveyard) damage:1 opponent >6
2011-02-20 05:33:56 +00:00
omegablast2002@yahoo.com d422f93134 doomgape correction 2011-02-19 21:18:20 +00:00
omegablast2002@yahoo.com 436534660e Marton Stromgald updated to combat triggers :) 2011-02-19 20:56:25 +00:00
wagic.the.homebrew@gmail.com dc48b5472b Erwan
- fixing incorrect case for include of PlayRestrictions.h
2011-02-19 16:52:37 +00:00
techdragon.nguyen@gmail.com 788ae5e629 fixed a division by zero error when AI has equipment on field but no creatures to equip them to.
fixed formatting of getEfficiency code block
2011-02-19 15:39:48 +00:00
guzhenjie1@gmail.com 017e2cf00d Fixed Gelatinous Genesis:
text=Target creature gets +3/+3 until end of turn.
 ==> 
text=Put X X/X green Ooze creature tokens onto the battlefield.
2011-02-19 11:09:03 +00:00
guzhenjie1@gmail.com 538ff064fa Changed code moveto(graveyard) to sacrifice of following cards :
Balduvian Trading Post
Heart of Yavimaya
Kjeldoran Outpost
Lake of the Dead
2011-02-19 01:34:31 +00:00
guzhenjie1@gmail.com 3fdc148a9e Changed the ability's order of Hero of Bladehold, make it works better:
auto=@attacking(this):token(Soldier,Creature Soldier,1/1,white,battleready)*2
auto=@attacking(this):all(other creature[attacking]) 1/0 ueot
 ==> 
auto=@attacking(this):all(other creature[attacking]) 1/0 ueot
auto=@attacking(this):token(Soldier,Creature Soldier,1/1,white,battleready)*2
2011-02-18 15:56:41 +00:00
guzhenjie1@gmail.com 19e3dfddf6 Fixed Goblin Wardriver:
text=Battle cry (Whenever this creature attacks, each other attacking creature gets +1/+0 until end of turn.) -- Whenever Hero of Bladehold attacks, put two 1/1 white soldier creature tokens onto the battlefield tapped and attacking.
 ==> 
text=Battle cry (Whenever this creature attacks, each other attacking creature gets +1/+0 until end of turn.)
2011-02-18 15:28:45 +00:00
guzhenjie1@gmail.com fda0428c41 Fixed following cards:
Balduvian Trading Post
Frostwielder
Heart of Yavimaya
Kjeldoran Outpost
Lake of the Dead
Tonic Peddler
2011-02-18 15:09:19 +00:00
omegablast2002@yahoo.com c4422e3de1 updated to mimics to turnlimited triggers...theyre only supposed to trigger once per activation if they already triggered it should have no effect. 2011-02-18 13:44:36 +00:00
omegablast2002@yahoo.com afb29274c3 lovisa is preffered in her erratta'ed to death form...
fixed arbor elf, he snuck in with one of my test changes recently.

note:lovisa actual card and the massive errattas she received makes the card text make absolutely no sense at all.
2011-02-18 13:04:14 +00:00
omegablast2002@yahoo.com 5ce7d77a3c added a comment to lovisa to states that its following the original version, before WoTC double erratta'ed the card. its a shame to have such a powerful card completely transformed to the point its could be considered a completely different card, yet they only ever printed 1 version of her...i loved her too much in the books to see her fall this low :) 2011-02-18 12:36:02 +00:00
omegablast2002@yahoo.com a742c52852 corrected the following cards....
Lake of the Dead
trigon of mending
lord of shatterskull pass
gorilla shaman
kumano
nightsky mimic

this one is debatable...lovisa cold eyes
what i did here was code lovisa EXACTLY as written on her card...
the erratta that was given to this card becuase it was considered "overpowered" was redicoulous....absolutely redicoulous...by the card her code is exactly as follows...
this card is FAR to basic to say there is a mistake in my understanding of it.
subtype=human lord <---this is on the card...
she is NOT a barbarian...
exact wording on the card
Warriors, Berserkers, and Barbarians creatures get +2/+2 and have haste.
this is coded

auto=lord(warrior) 2/2 
auto=lord(berserker) 2/2 
auto=lord(barbarian) 2/2 
auto=lord(warrior) haste 
auto=lord(berserker) haste
auto=lord(barbarian) haste

this is the real lovisa....
errattas are fine, but its wotc that made the mistake of creating this card in the first place :) if you hit gatherer i think you will agree...
http://gatherer.wizards.com/Pages/Card/Details.aspx?multiverseid=113542
following the actual card on this one...ditching the erratta.
2011-02-18 12:23:17 +00:00
techdragon.nguyen@gmail.com 94c7c9c5d8 * fixed definition for Mephidross Vampire
* added Anowon, the Ruin Sage, the Ruin Sage as a borderline card since the card works as specified except that the player selects for the AI what card to sacrifice.
2011-02-18 06:17:52 +00:00
guzhenjie1@gmail.com c1b861d44e Fixed Tropical Island and Hero of Oxid Ridge.
Fixed some typo in _cards.dat reported in forum:
M11:
primitive=Autumn's veil
 ==> 
primitive=Autumn's Veil

primitive=Lilia Vess
 ==> 
primitive=Liliana Vess

MBS:
primitive=Hero of Oxida Ridge
 ==> 
primitive=Hero of Oxid Ridge

primitive=Gore Vessel
 ==> 
primitive=Gore Vassal

PD2:
primitive=Ball Lighting
 ==> 
primitive=Ball Lightning
2011-02-17 11:06:15 +00:00
omegablast2002@yahoo.com 78a642d21c corrected wall of nets. 2011-02-17 00:28:20 +00:00
solo81@web.de 55fe7625f3 Added 4 cards:
Iona, Shield of Emeria
Hellfire Mongrel
Living Tsunami
Quest for Ancient Secrets
2011-02-16 21:46:22 +00:00
omegablast2002@yahoo.com db94db1a9f Spiritual Asylum was coded incorrectly 2011-02-16 20:37:03 +00:00
wagic.the.homebrew@gmail.com db0c55b4dd Erwan
- Fixed an issue with maxCast targeting opponent
2011-02-16 14:35:49 +00:00
solo81@web.de 88218a9822 Added Storm Cauldron and Rites of Flourishing.
auto=maxplay(land)+1 opponent   --- works!

[card]
name=Rites of Flourishing
auto=maxplay(land)+1 opponent
auto=maxplay(land)+1
auto=@each my draw:draw:1 controller
auto=@each opponent draw:draw:1 opponent
text=At the beginning of each player's draw step, that player draws an additional card. -- Each player may play an additional land on each of his or her turns.
mana={2}{G}
type=Enchantment
[/card]
2011-02-16 12:13:20 +00:00
wagic.the.homebrew@gmail.com 8dd6856453 Erwan
- fixed issue 595 (MaxCast not working). Root cause was the stupidest typo ever in the code (maxCost instead of maxCast...)
- fixed an issue with Storm mentioned by zethfox (was counting only spells played by current player)
- Moved "max lands per turn" rule outside of the code (yay!) Please be sure to update your Rules folder!
2011-02-15 14:17:34 +00:00
guzhenjie1@gmail.com fa18c60a44 Fixed Bounteous Kirin:
auto=@movedTo(*[arcane;spirit;manacost=11]|mystack):may life:12 controller
auto=@movedTo(*[arcane;spirit;manacost=12]|mystack):may life:13 controller
 ==> 
auto=@movedTo(*[arcane;spirit;manacost=11]|mystack):may life:11 controller
auto=@movedTo(*[arcane;spirit;manacost=12]|mystack):may life:12 controller
2011-02-15 13:56:56 +00:00
omegablast2002@yahoo.com b978baa9c8 added Brace For Impact and Telekinesis 2011-02-15 12:18:20 +00:00
guzhenjie1@gmail.com 8e24e86b0f Fixed Avenger of Zendikar:
auto=@movedTo(land|myBattlefield):may counter(1/1) all(plant)
 ==> 
auto=@movedTo(land|myBattlefield):may counter(1/1) all(plant|myBattlefield)
2011-02-15 12:12:10 +00:00
techdragon.nguyen@gmail.com 2cd72cc4ca we should access the data required within a given context. Using DeckStats in this way works
but only by chance that the previous step set the current deck file.  Used victory percentage
from the MetaData object rather than forcing what has already been computed.

TODO:  getVictoryPercentage() needs to represent Overall VictoryPercentage for all decks, not just
player decks.  AI Decks use getVictoryPercentage() to represent the VictoryPercentage against a
specific deck.  There should be an additional method that says getVictoryPercentageVsDeck( deckObject )
2011-02-14 17:44:35 +00:00
techdragon.nguyen@gmail.com 16f7d2d675 added conditional to avoid having to ping the stats map all the time. The data
is already cached, but there's no need to spend a function call to check the hashmap
if we have a bool for that reason.
2011-02-14 17:38:57 +00:00
techdragon.nguyen@gmail.com 73b2d5ded8 removed redundant code for card loading. getCardByName already loads by Id and caches the result
duplicating that code in MTGDeck is redundant.
2011-02-14 17:36:19 +00:00
wagic.the.homebrew@gmail.com 5b365e53f0 Erwan
- submit a fix for TestSuiteAI, I don't understand why it wasn't submitted with my other changes yesterday. This fixes a bug in the test suite (One storm test would fail without this)
- minor refactor to AI code
2011-02-14 13:29:27 +00:00
guzhenjie1@gmail.com b3468782f1 Changed Arcane Laboratory and Rule of Law based on r3125.
oneboth => auto=maxCast(*)1 auto=maxCast(*)1 opponent

Changed name of Oriss, Samite Guardian in FUT _card.dat:
primitive=Oriss, Samite Guardian
 ==> 
primitive=Oriss Samite Guardian
2011-02-14 11:32:18 +00:00
techdragon.nguyen@gmail.com f4d1154cd6 reverted latest change 2011-02-14 09:35:43 +00:00
techdragon.nguyen@gmail.com d9efb408e5 * optimized card loading. There was some redundant code that wasn't necessary.
* getCardByName seemed to have a initialization error if you tried to use it before the entire game loaded.  The cache would
throw an exception if you tried to use find and it was empty.  I put a guard around it to avoid this issue.

* refactored Zeth's "toggledifficuly" feature to be stored in meta data.  http://code.google.com/p/wagic/source/detail?r=3106
 -- This is slightly modified as it forces a 1 for 1 swap of cards that are specified.
    from the example given this is how it seemed to be used anyways.
 -- since all the information is stored in the meta data, there's no need to alter the deck's
    definition.
2011-02-14 08:14:35 +00:00
techdragon.nguyen@gmail.com 1b5002726c altered condition to srcLenth -1 and not "srcLength - 2" 2011-02-14 06:54:28 +00:00
techdragon.nguyen@gmail.com 7047b1ccfc fixed typo 2011-02-14 06:52:11 +00:00
techdragon.nguyen@gmail.com ee71b6bf0e Added a guard to ensure array access is within bounds of filter.
For some reason, the VS2008 compiler allows this illegal access and VS2010 does not.  In all actuality it should never be permitted.

Please review the thread posted on the SVN thread for details as to why this needs a fix.
http://code.google.com/p/wagic/issues/detail?id=593&sort=-id


Issue: 593
2011-02-14 06:07:04 +00:00
omegablast2002@yahoo.com 072a250dc0 reverted it completely now in hopes that this is whats stalling ai...for some strange reason im noticing that ai is tapping an extra mana every time it tries to play something...
exsample it wants to play a {2}{b}{b} ...so it taps 5 mana instead of the 4 it would have tapped before....
2011-02-14 01:45:14 +00:00
omegablast2002@yahoo.com ecd2217139 reordered these varibles pspsdk doesnt like it when things are not int'ed in order. 2011-02-14 01:18:41 +00:00
omegablast2002@yahoo.com 3826355b6b reverting a peice of a change i did a couple days ago...
the way getPotentialMana and the payment of cost needs a SERIOUS revamp, i would almost say that these function only work because of bugs.....
2011-02-14 00:28:44 +00:00
omegablast2002@yahoo.com e92e96a375 Fallen Askari missing cantblock.... 2011-02-13 15:37:51 +00:00
omegablast2002@yahoo.com 935fe12672 pentarch paladin was missing cost for abilities...thanks kf1 2011-02-13 14:35:54 +00:00
techdragon.nguyen@gmail.com 67026849a6 sealed possible memory leak when WCFilterGROUP is created. 2011-02-13 13:28:25 +00:00
techdragon.nguyen@gmail.com 5be429c48f combined nbzone increment and zone assignment into one statement. 2011-02-13 13:25:41 +00:00
wagic.the.homebrew@gmail.com 6b89899d1b Erwan
- deprecated the following keywords (see list below for new usage)
-- cantcreaturecast => auto=maxCast(creature)0
-- cantspellcast => auto=maxCast(*)0
-- onlyonecast => auto=maxCast(*)1 
-- bothcantcast => auto=maxCast(*)0 auto=maxCast(*)0 opponent
-- bothnocreature => auto=maxCast(creature)0 auto=maxCast(creature)0 opponent
-- oneboth => auto=maxCast(*)1 auto=maxCast(*)1 opponent

Strangely enough, I couldn't find most of these keywords in mtg.txt?

I also removed variables such as "spellCastedThisTurn" and stuff like that... now if you want to know how many spells were cast in one turn by a given player, use player->game->stack->seenThisTurn("*").
seenThisTurn can take a string representing a TargetChooser, or better, a TargetChooser.

I can't guarantee I didn't break anything, but the test suite passes and the AI seems to run ok
2011-02-13 11:23:51 +00:00
wagic.the.homebrew@gmail.com 8eac9c587e Erwan
- added maxCast and maxPlay abilities, this deprecates the following abilities: nospells,nocreatures,onlyonespell,land
I usually don't like to deprecate abilities, but the existing ones, despite having easy to remember names, were really not flexible enough.

If you want to use these old keywords, instead use:
-- nospells  =>  maxCast(*)0
-- onlyOneSpell => maxCast(*)1
--nocreatures => maxCast(creature)0
--land:1 => maxplay(land)+1

note maxPlay and maxCast. They follow similar rules, but maxPlay monitors the number of cards that are going on the Battlefield, while maxCast monitors the stack. In most cases, maxCast should be the one to use, but lands are a special case because they go directly to play.

I unfortunately cannot guarantee I didn't break anything, especially in the AI, but the test suite passes ,and I added a few additional tests yesterday and today, to feel more confident about the change.

next step is removing the creatures keywords that do the same kind of thing (cantcast, etc...) and replace them with maxCast
2011-02-13 08:01:13 +00:00
guzhenjie1@gmail.com 2165a38d3b Fixed following cards:
1. Fire Dragon(It has same problem as unchanged Honden Of Infinite Rage, using new code "type:" to fix it.)
auto=foreach(mountain|myBattlefield) damage:1 target(creature) oneshot
 ==> 
auto=damage:type:mountain target(creature)

2. Burden of Greed
auto=foreach(artifact[tapped]|opponentBattlefield)damage:1
 ==> 
auto=foreach(artifact[tapped]|opponentBattlefield) life:-1 opponent
2011-02-13 05:57:36 +00:00
omegablast2002@yahoo.com b21ca5d91c had to change it, psp compile didnt like it. source->XX 2011-02-13 04:46:57 +00:00
techdragon.nguyen@gmail.com 0686979750 updating vs2010 solution with new PlayerRestriction class 2011-02-12 23:25:57 +00:00
omegablast2002@yahoo.com 27f941e939 updated whetwheel 2011-02-12 20:34:50 +00:00
omegablast2002@yahoo.com e36cf18d26 added support for {x}{x}: word variable returns for activated target abilities...sometimes im not told when things break or dont work completely, and i find out later myself. :) 2011-02-12 20:29:42 +00:00
omegablast2002@yahoo.com 144ed28235 add Decomposition... 2011-02-12 17:37:14 +00:00
omegablast2002@yahoo.com 45cd30d367 added blinkmoth urn 2011-02-12 17:05:58 +00:00
wagic.the.homebrew@gmail.com 60017a6652 Erwan
- replaced variables canPutLandsIntoPlay and landsPlayerCanStillPlay with a PlayRestrictions class.
- Added  seenThisTurn(TargetChooser * tc) in MTGGameZones, which allows to count how many cards matching a targetChooser have been in a given zone in the current turn. With minor work, this can probably be reused by the ability parser for some cards that need to count how many **** where played or put on the stack during a turn.
-- for example player->game->stack->seenThisTurn([put a TypeTargetChooser("creature") here]) would give you the number of creature spells cast by the player this turn.
- This is the first step of a refactor that aims at removing all the adhoc variables for "cant cast". I plan to get rid of the following variables in Player.h (and the associated code, which hopefully will become smaller):  
    int castedspellsthisturn;
    bool onlyonecast;
    int castcount;
    bool nocreatureinstant;
    bool nospellinstant;
    bool onlyoneinstant;
    bool castrestrictedcreature;
    bool castrestrictedspell;
    bool onlyoneboth;
    bool bothrestrictedspell;
    bool bothrestrictedcreature;

They will be replaced by the PlayRestrictions system, and hopefully I'll have time to update the parser to make this more generic as well.
My initial goal with this change was to move the limit of 1 land per turn outside of the code, and make it an external rule in Rules/mtg.txt. I have yet to do it.
2011-02-12 16:31:07 +00:00
omegablast2002@yahoo.com 2690a3f9a0 updated variable "type:" to act more like a targetchooser...
draw:type:creature|opponentbattlefield
will draw a card for each creature on the opponents battlefield

this defualts to "|mybattlefield" however any target zone can be used, hand, library ect....
this will add support to some cards which werent possible with previous version of it, without having to create new word variables to do the same exact thing as can now be done with this.
2011-02-12 16:21:54 +00:00
omegablast2002@yahoo.com 0a60979554 fix and completely reworked affinity AGAIN.
moved it out of rules, it was FAR to error prone and after fixing bugs on this ability about 12 times, im done with it.

noticed yesterday that it was removing the completely wrong amounts, and not maintaining its cost AT ALL. so i got sick of adjusting it as a rule, its now a statebased effect, called through gamestatebasedeffect as a side function.

the new affinity is less then 100 lines of code, down from 300. to acomplish the effect with FAR less effort. it is also FAR easier to maintain in the future if i die or leave the scene or whatever.

added a new count tool for MTGGameZones canByCanTarget...which allows for returns of amounts based on if it can be targetted by a tc. much like how listmaintainer does it. affinitygreencreature will not be the only ability to use this function, just a heads up. its just the first to do so.

hopefully this much more accurate affinity will be the last version...considering adding the other types which old affinity couldnt handle :D
2011-02-12 15:06:28 +00:00
guzhenjie1@gmail.com 75718e28f8 Fixed Goldmeadow Lookout:
auto={W}{T}{discard(*|myhand)}:token(130311)
 ==> 
auto={W}{T}{discard(*|myhand)}:token(139397)
2011-02-12 14:39:23 +00:00
omegablast2002@yahoo.com 53477bfae2 opps if you were at exactly 65% then none of the 2 appeared XD ..this should correct that 2011-02-12 03:23:36 +00:00
omegablast2002@yahoo.com 19c3e903bc just cleaning, removed a double check i added ages ago that isnt really needed anymore, ai handles fine now without having to double check if it can cast after it already did so. 2011-02-12 03:00:45 +00:00
omegablast2002@yahoo.com e3ecc612d0 removed a part that wasnt actually supposed to be in the change...my bad. 2011-02-12 02:42:26 +00:00
omegablast2002@yahoo.com e9b47944e3 reverted a 2nd atempted fix at the infinate loop with ai using inkmoth nexus...
it was making ai tap itself out.

i think im about 99% sure i know where the issue is now, hopefully.
2011-02-12 02:27:30 +00:00
solo81@web.de 9500b0eb4b Added Rashka the Slayer. 2011-02-11 22:42:06 +00:00
omegablast2002@yahoo.com 32873bd4d0 added river of tears 2011-02-11 21:35:17 +00:00
omegablast2002@yahoo.com 76653b6f54 going to go ahead and commit this now as updating the ai decks to use this tool is going to be a huge task...i originally wanted to commit this when i had a substantial amount of ai decks using it, to show case how it makes a huge difference.
it is a feature that is for ai deck building
what it will do is as follows

#NAME:sample deck
#DESC:The forces of fire and nature unite. 
#DESC: 
#DESC:Can you withstand 
#DESC:their combined fervor? 

toggledifficulty:lotus petal|black lotus (*) * 4
grizzly bear (*) * 4
someCard (8) *4

notice the toggle dificulty?
syntax is ....toggledifficulty:easy card name or number|hard card (optional set if both belong to same set otheriwse use * ) *howmany

toggledifficulty:frying pan|machine gun
toggledifficulty:tomatoe|pumpkin (MBS) * 3
toggledifficulty:tomatoe|squash
grizzly bear (*) * 4

the above exsample as easy will have a deck with:
frying pan
4X tomatoe
4X grizzly bear

and on hard it will have:
machine gun
3x pumpkin
squash
4X grizzly bears

the entire deck can be built with toggledifficulty cards....its not limited to just a single use.
you can also mix it up, some can be toggledifficulty some can be just like normal, you are not limited to having to have a complete deck of toggled cards...

if your currently selected deck has an over all win ratio of 65% or higher...this deck will have 4 black lotuses in it...if youre overall win with the current deck you are playing is below 65% then those 4 black lotuses are replaced by 4 lotus petals instead...effectively making it an easier ai deck...

note, the 2 cards used are exsamples...its a great way to show you the potential this change can have...an ai deck with 4 black lotuses will do WAY better then the same deck with 4 lotus petal...if you catch my drift...
2011-02-11 18:01:50 +00:00
guzhenjie1@gmail.com 61186347e5 Fixed Godless Shrine and Contested War Zone.
Thank you for Zeth's help and support!
2011-02-11 13:40:23 +00:00
omegablast2002@yahoo.com 201d096d24 mr big pointed out that the order of the abilities on Mayael's Aria was incorrect, and it does make a huge difference, it can mean the difference between a win or lose. 2011-02-10 19:59:29 +00:00
omegablast2002@yahoo.com 61e14f5b68 added Serra Inquisitors,Dwarven Soldier,Amphibious Kavu, fixed contested war zone 2011-02-10 19:51:13 +00:00
omegablast2002@yahoo.com 25fe86ad89 added "turnlimited" restriction for blocked, blocking, combatdamaged, and damaged triggers. 2011-02-10 19:50:09 +00:00
techdragon.nguyen@gmail.com 93c63cef3d reimplemented mana color display for deck selection. This is now totally controlled by
stats generation.  No data needs to be written to the deck master files themselves.
Now the mana colors will only show if you have battled with a particular deck at least once.
This is not retroactive, so you will need to battle the ai again.  This can not be edited manually
either to prevent tampering with the statistical data.  Player deck mana color display is also
covered this way.

Decks will still be saved in the new layout if a disk write is necessary.  So any changes via
the deck editor will result in a deck file rewrite is was always the case.:)
2011-02-10 17:19:11 +00:00
guzhenjie1@gmail.com e3ac27bc30 Fixed Aura Extraction:
auto=moveTo(ownerhand)
 ==> 
auto=moveTo(ownerlibrary)
2011-02-10 13:10:19 +00:00
omegablast2002@yahoo.com 8ab65b234b updated the shrine cycle to use type: variable
ei:infinate of horden rage bug...it was the same bug as halimar used to have.
2011-02-10 12:07:11 +00:00
omegablast2002@yahoo.com 4bf72efaac Obelisk of Alara was missing the word "token for its *cough cough *workaround *cough cough* 2011-02-10 12:00:49 +00:00
omegablast2002@yahoo.com b728a81144 journey to nowhere was sending it target to exile, then trying to blink it... 2011-02-10 11:54:56 +00:00
techdragon.nguyen@gmail.com bfd8cf8527 fixed a mem leak I introduced in last update 2011-02-10 00:18:52 +00:00
techdragon.nguyen@gmail.com 9c8ff0e27a updated ManaCost copy constructor to do a true deep copy.
added copy constructors to ManaCostHybrid.
2011-02-09 20:42:19 +00:00
Ittobaal@gmail.com c6849d35d5 Prefix VS Postfix increment 2011-02-09 20:06:15 +00:00
omegablast2002@yahoo.com 2866db0229 fixed line errors, report in r591 please confirm and close ticket 2011-02-09 15:21:24 +00:00
wagic.the.homebrew@gmail.com 7f4c001a1d Erwan
- minor cleanup of MTGRules.cpp based on my comments in r3084. I visually verified that I didn't break the fix in r3084. Also ran the test suite.
-- in case somebody wonders about some of the tests I deleted, most of these tests are useless because all callers make sure alternateCost is not null (in isReactingToClick) and that the manapool can afford the cost, before doing the call to reacttoclick. Proving it by adding an assert, and also making the function protected, to be sure it is only called by the authorized children.
2011-02-09 14:33:09 +00:00
techdragon.nguyen@gmail.com 4cbf3ddeb5 removed extraneous function. Not meant for last check in 2011-02-09 13:21:26 +00:00
techdragon.nguyen@gmail.com 2c0da5e7e6 added copy constructor with operator=
updated constructor for ManaCost*

TODO:  May have to look at ManaPool in case that needs updates as well.
2011-02-09 12:03:15 +00:00
omegablast2002@yahoo.com d336f921d7 added Progenitus and Splinter Twin 2011-02-09 09:48:04 +00:00
solo81@web.de 75e34d9012 Added Ghost Town. 2011-02-08 23:27:26 +00:00
omegablast2002@yahoo.com d8da946f5d forgot a "break;" here on this restriction 2011-02-08 23:09:20 +00:00
solo81@web.de adaa589e93 Fixed issue358.
New code for Paralyze uses "teach(...)":

[card]
name=Paralyze
target=creature
auto=tap
auto=doesnotuntap
auto=teach(creature) {4}:untap myUpkeepOnly
text=Enchant creature -- When Paralyze enters the battlefield, tap enchanted creature. -- Enchanted creature doesn't untap during its controller's untap step. -- At the beginning of the upkeep of enchanted creature's controller, that player may pay {4}. If he or she does, untap the creature.
mana={B}
type=Enchantment
subtype=Aura
[/card]
2011-02-08 23:03:43 +00:00
omegablast2002@yahoo.com 44fe3cffec fixed a crash that was happening when ai would try to play a card like wurmcalling. 2011-02-08 20:25:41 +00:00
omegablast2002@yahoo.com 4d28bdd925 fixed a bug where mana icons were not being removed from mana pool when using extracost types...this happened during the refactor..the mana was changed from engaging the players mana pool which sends those events, into a sort of "bypass everything and just subtract the mana from the pool" you actually WANT to engage the players mana pool, as its directly tied to the events which remove those mana from the pool. 2011-02-08 19:20:04 +00:00
omegablast2002@yahoo.com 80b35e8071 fix for black sun zeneth...we were checking the wrong thing for a refreshed number...i had it checking the target instead of the source of that ability. 2011-02-08 15:50:57 +00:00
omegablast2002@yahoo.com 67cdb895b9 removed an incorrect line from Concordant Crossroads 2011-02-08 15:15:25 +00:00
omegablast2002@yahoo.com 39e10dd088 updated clockworks, also corrected a few that were removing the wrong type of counter during combat, they come in with 1/1 counters and were removing 1/0 counters, which was wrong. 2011-02-08 15:13:12 +00:00
omegablast2002@yahoo.com f7b34295fb added a way to set the max amount a counter ability can give you...aka the clockworks effect...as per mtg rules, you are still allowed to activate the effect but if it would put the target counters higher then the max allowed by that ability, then it will do nothing.
it strings exactly like normal counters did, except now after the name you can add yet another "," and a number or word varible...if you will not have a name it is still required that you add the extra comma, as it is a seperator for the parser. so clock works swarm would be counter(1/0,1,,4)...no matter what, this ability will do nothing if the amount of the target counter is already higher then the max allowed, in this case 4...other effects can give the creature more counters...however..this ability will resolve to nothing if youve exceeded the limit. until you are under the amount again.
2011-02-08 15:12:14 +00:00
omegablast2002@yahoo.com d852486355 Venerated Teacher was set to 1 counter, should have been 2...all this time i thought that it was a little underpowered then normal. 2011-02-08 12:23:59 +00:00
guzhenjie1@gmail.com 4196754abc Fixed Allay, Glissa, the Traitor and Kuldotha Forgemaster was reported in forum. 2011-02-08 10:07:04 +00:00
techdragon.nguyen@gmail.com 1b5a379387 added empty string check when save and quiting from the deck editor.
Issue: 3052
2011-02-08 06:30:18 +00:00
omegablast2002@yahoo.com 104a626b3b excluding these types from allsubtype transforms subability. 2011-02-07 17:12:12 +00:00
omegablast2002@yahoo.com cba1849ef6 i subjected poor changelings to planeswalker legend rule lol. 2011-02-07 15:37:21 +00:00
guzhenjie1@gmail.com b1ae9bf548 Fixed Melt Terrain:
mana={1}{R}{R}
 ==> 
mana={2}{R}{R}
2011-02-07 15:07:54 +00:00
omegablast2002@yahoo.com 79d4312660 it was reported to me that blinking a token can potentially crash the game on the "return" my fault..forgot that once tokens go to exile, we're done with them for good. 2011-02-07 14:00:42 +00:00
omegablast2002@yahoo.com 18c70ec187 found the cause of the loop in inkmoth, it has to do with the way manaproducers set thier "needsTapping" depending on the way the ability is called, it can set it 3 ways, {t}<--sets only the manaproducers "tap" and completely ignores the "doTap" which is the way actiavted mana producers call it. 2011-02-07 13:48:27 +00:00
omegablast2002@yahoo.com 9b076d6791 removed a fix to an infinate loop bug with Ai using cards such as inkmoth nexus...
as it removed ais ability to momir...protip in MTG youre not allowed to interrupt your own abilities...the way momir is working now, it select an action that doesnt pass priority instead it instantly searchs for a momir ability...which is wrong...
2011-02-07 13:29:27 +00:00
guzhenjie1@gmail.com b0a370c1b7 Fixed following cards reported by ph34rbot in forum:
1. Blightwidow
2. Bonehoard
3. Crush
4. Darksteel Myr
5. Revoke Existence
2011-02-07 10:50:36 +00:00
techdragon.nguyen@gmail.com 6ccc859ca0 The issue is the controller for the menu fails badly when the triangle button is pressed. That particular menu uses the menu item id to index into an array somewhere. Since the triangle key is valued at -200, this causes a negative index into an array.
I've added a guard to ignore the triangle key for now.  If there is a more elegant solution we can find later than great.
Issue: 577
2011-02-07 06:55:04 +00:00
guzhenjie1@gmail.com 3eee274726 Deleted carriage-return between Myr Sire and Myr Turbine:
[/card]

[card]
 ==> 
[/card]
[card]
2011-02-06 22:47:38 +00:00
omegablast2002@yahoo.com bf427b6402 i actually misinterperated the fading rule...
the difference between vainshing and fading is...
fading sac triggers the NEXT time you try to remove a fade counter but cant, vanishing sac triggers WHEN you remove the last counter.
2011-02-06 18:48:08 +00:00
omegablast2002@yahoo.com 230edd917c did away with the "fading" workaround... 2011-02-06 18:21:25 +00:00
omegablast2002@yahoo.com de6e5ed7eb extended "vanishing" to support "fading" these 2 abilities are the same with the exception of the name of the counter the creature receive. 2011-02-06 18:20:59 +00:00
omegablast2002@yahoo.com 26b1cd2c34 add mutavault 2011-02-06 16:43:58 +00:00
omegablast2002@yahoo.com a08729d7e8 a little more {s( to {discard( cost clean up 2011-02-06 16:08:08 +00:00
omegablast2002@yahoo.com ca15d579d1 updated alot of cards using {S(*|myhand)} as "discard a card" to the support i added a while ago, targetted discard cost...{discard(*|myhand)} 2011-02-06 15:57:06 +00:00
omegablast2002@yahoo.com 5ac735c2f5 updated Fauna Shaman to use {discard(blah)}: cost..... 2011-02-06 15:41:09 +00:00
omegablast2002@yahoo.com acebda16ca was pointed out that a couple subtypes needed to be added to the changeling ignore list. 2011-02-06 15:35:25 +00:00
omegablast2002@yahoo.com 4fd48777fe yeah im stupid 2011-02-06 15:22:15 +00:00
omegablast2002@yahoo.com bfd0d24d8d forgot we dont want hard to get this boost. 2011-02-06 15:21:20 +00:00
omegablast2002@yahoo.com 9d728ea0dd refactored this optimizedhand section to remove copy paste code...they all check the same condiations except the rating...so i had it check the codiations first THEN the ratings....makes it a little easier to edit later if needed. 2011-02-06 15:16:27 +00:00
omegablast2002@yahoo.com 156fd4a601 fixed handsize issue in demo.
Issue: 587
2011-02-06 14:50:02 +00:00
techdragon.nguyen@gmail.com e8a656e61e ManaCost hybrids memeber array wasn't being initialized giving each element of the array an undefined value.
Initialized hybrids array to contain NULL elements and toString now checks for NULL pointers before attempting to print out hybrids.
Issue: 586
2011-02-06 12:42:55 +00:00
guzhenjie1@gmail.com a717bae839 Added "oneshot" code for cards with "Champion a creature" ability:
Boggart Mob
Changeling Berserker
Changeling Hero
Changeling Titan
Lightning Crafter
Mistbind Clique
Nova Chaser
Supreme Exemplar
Unstoppable Ash
Wren's Run Packmaster
2011-02-06 11:39:57 +00:00
Xawotihs b7b584113b - Moved the card collection out of the GameApp class to clean up the dependencies
- Added method to build a card collection independently of the GUI to ease my unitary test application
- Added part of some network GUI I'm working on, it's #ifdef out, I'm only committing this part to ease later merges
- Added the beginning of a serialization code of the Player and related classes used for network support
- various other minor cleanup
2011-02-06 11:35:40 +00:00
techdragon.nguyen@gmail.com 91a2cb9c90 fixed deck renaming to make changes immediate. 2011-02-05 22:21:49 +00:00
wrenczes@gmail.com bb2f784489 Refactored Z's last change slightly, eliminated code duplication. 2011-02-05 21:30:28 +00:00
omegablast2002@yahoo.com a01898436b changed the order of abilities on a couple cards..
general tip on getting ai to use an ability on a card.
titan forge for exsample
[card]
name=Titan Forge
auto={3}{T}:counter(0/0,1,Charge)
auto={T}{C(0/0,-3,Charge)}:token(Golem,Artifact Creature Golem,9/9)
text={3},{T}: Put a charge counter on Titan Forge. -- {T}, Remove three charge counters from Titan Forge: Put a 9/9 colorless Golem artifact creature token onto the 
battlefield.
mana={3}
type=Artifact
[/card]

with the counter ability above the counter cost ability, ai will rarely ever use the titan forge to make a token.
however if you change the order around, ai will see the token ability first...then if it can afford it then it will make a token.
2011-02-05 14:49:40 +00:00
omegablast2002@yahoo.com 7b3d65e984 changed it a little...now now difference while you have less then 10 artifacts/enchantments...after 9 it reorders them into stacks of 5 to save room.... 2011-02-05 13:26:02 +00:00
omegablast2002@yahoo.com f504051bfd changed the vertstack count of enchantments and artifacts from 3 per stack, to 5 per stack, i wanted to go 6 but i felt it cropped too much off the 6ths card...
reason for this change is that it becames WAY to hard to player decks which contained mostly artifacts to share the feild, give 9 cards half the screen to display just didnt seem like a good choice compared to the creatures horizontal stack which can display almost 200 cards in the same screen width.
2011-02-05 13:05:51 +00:00
omegablast2002@yahoo.com 8f09e8554c a fix for a strange edge case where ai was caught in a trap trying to activate inkmoth lands becomes ability. it would proceed to contenue to do so even tho it was not producing any results. 2011-02-05 11:11:08 +00:00
omegablast2002@yahoo.com 86308a4acb corrected titan forge, it was "lol" incorrect. it was basically "put a charge counter on titan forge, put a 9/9 in play" 2011-02-05 10:52:10 +00:00
wrenczes@gmail.com d5777a6565 A simpler way to allow trim() to work with temporary strings. 2011-02-05 06:42:53 +00:00
wrenczes@gmail.com a0a3c59b29 Replaced unnecessary custom shuffle methods with std::random_shuffle<>. 2011-02-05 06:25:25 +00:00
wagic.the.homebrew@gmail.com f6bef26243 Erwan
- added some cache for function getCardByName. On my machine, this divides the running time of the test suite by almost 2 (now runs in 12 minutes instead of 21)
2011-02-05 03:46:41 +00:00
techdragon.nguyen@gmail.com cab5a99833 added processing for todo list as well 2011-02-04 13:41:24 +00:00
techdragon.nguyen@gmail.com 767983631a * moved deck saving to end of match. It now only saves when you've actually completed a game.
* added additional meta data for decks when saving them back to file.
  - decks saved this way now are split into three regions: creatures, spells and lands.  It's more for a visual sorting if a
     player wanted to look at the deck outside of the game.  It does not impact the deck loading negatively at all.  It may
     increase performance in cases where the deck was previously defined using the canonical names of the cards as the numeric ids
     reduce the work done when looking up the cards by name.
* modified ManaCost toString method.
* added toString method for ManaCostHybrid ( possibly make ManaCostHybrid a subclass of ManaCost)
* added additional operator overloading for ManaCost for printing to cover ManaCost when it's a pointer as well as a copy
   ( TODO: might want to check if making usage of ManaCost as a copy as opposed to a ptr is really necessary in most cases. )
* added alternate version of "trim" to handle trimming temporary strings as returned by things like ostringstream.str().
 - This was necessary since the PSP compiler doesn't do the necessary adjustments for those types of calls.
2011-02-04 12:37:44 +00:00
omegablast2002@yahoo.com 6edef29d17 opps forget to wrap this. 2011-02-03 17:10:51 +00:00
omegablast2002@yahoo.com 23fc40895d updated vanishing creatures to use new vanishing...auto=vanishing:number 2011-02-03 14:18:10 +00:00
omegablast2002@yahoo.com 75a9d7840d 3 things here, found my targets returns for @vampired we're screwy, which explained why doc didnt add 3 of the possible cards for it...corrected that but i need to rename the varibles which i will do at a later time, not in this patch..
2 fix for token creator livingweapons...this was actually a preexisting bug, but not noticed becuase these are the first equipments that use token gen...when equipping it would readd the oneshot tok gen as an activated ability with no cost...generally we dont want to pass oneshot token generation to another card by equipping...

and 3rd...
got rid of the disgusting vanishing workaround.
it was riddled with bugs, got exsample if the creatures would gain indestructible the -99/-99 they were reciving did nothing to rid the battlefield of the creature...

new vanishing is 
auto=vanishing:number
thats it, no crazy 2 trigger lines with lords ect...
2011-02-03 14:17:25 +00:00
omegablast2002@yahoo.com 22adbe4ab7 i updated this test since i updated corveous dragon to use sacrifice keyword...the test was putting him in play first, which resulted in instant sacrifice...moved him to be the last "inplay:" card 2011-02-03 13:04:37 +00:00
guzhenjie1@gmail.com cd43d75c88 Fixed the Kor Hookmaster:
auto=choice target(creature) tap && frozen
 ==> 
auto=choice target(creature|opponentbattlefield) tap && frozen
2011-02-03 05:44:54 +00:00
guzhenjie1@gmail.com 049bee044d Fixed the following cards reported by ph34rbot in forum:
Sphere of the Suns
Turn the Tide
Vedalken Infuser
Viridian Corrupter
2011-02-03 04:53:29 +00:00
omegablast2002@yahoo.com 5c9b1d03a9 found these newly codable cards while scanning through the todo.
ring of renewal
reckless embermage
Rock Hydra
Roiling Terrain
Ronin Warclub
Runed Stalactite
Sabertooth Alley Cat
Scythe of the Wretched
Security Detail
Sewers of Estark
Sosuke's Summons
Soul Collector
Stasis Cell
Steal Strength
Takenuma Bleeder
Tetravus
Thornbite Staff
Tolarian Entrancer
Trap Digger
2011-02-03 03:54:28 +00:00
omegablast2002@yahoo.com de60908836 Psychotrope Thallid removed from todo, its already been added 2011-02-03 00:27:04 +00:00
omegablast2002@yahoo.com 2c41ec0f28 removed Psychic Overload from todo 2011-02-03 00:23:33 +00:00
omegablast2002@yahoo.com 318eaf3959 added Psychic Overload 2011-02-03 00:23:16 +00:00
omegablast2002@yahoo.com 5be49a1857 mystifying maze had a typo 2011-02-03 00:14:17 +00:00
omegablast2002@yahoo.com 4ff2bd9b95 added:
Word of Seizing
Wipe Away
Take Possession
Sulfur Elemental
Sudden Shock
Sudden Death
Stonewood Invocation
Krosan Grip
Extirpate
Celestial Crusader
Kaijin of the Vanishing Touch
2011-02-03 00:04:42 +00:00
omegablast2002@yahoo.com 37adf143c8 added abilities=split second 2011-02-03 00:04:11 +00:00
omegablast2002@yahoo.com 81f3a4c1d5 added Maelstrom Djinn 2011-02-02 21:54:25 +00:00
omegablast2002@yahoo.com 31a08e5470 added otherworldly journey and mystifying maze 2011-02-02 21:22:40 +00:00
omegablast2002@yahoo.com e47eb86304 added a return( effect ) to blink... 2011-02-02 21:22:10 +00:00
omegablast2002@yahoo.com f42227933c added Valakut, the Molten Pinnacle 2011-02-02 20:11:25 +00:00
omegablast2002@yahoo.com 1f047529de added bloodcrazed goblin 2011-02-02 18:50:55 +00:00
omegablast2002@yahoo.com d675e65de7 added giant shark, inflame 2011-02-02 18:46:41 +00:00
omegablast2002@yahoo.com 6f926b2f3a fixed kor hookmaster 2011-02-02 18:29:20 +00:00
omegablast2002@yahoo.com 00f9b7b2ef a couple of the todo card didnt get removed in last commit 2011-02-02 18:24:02 +00:00
omegablast2002@yahoo.com 840edaf14d added and updated the todo
Crushing Pain
Fatal Blow
Final-Sting Faerie
Opportunist
Witch's Mist
Reciprocate
Retaliation
Giltspire Avenger
doc might find more uses for it then i, just thought i would code some cards to go in with it.

note:pregamebooster failing again...whoever keeps adding new tokens to the card.dat please refrain from doing so as it is breaking a test in test suite...
2011-02-02 18:23:26 +00:00
omegablast2002@yahoo.com e7fc20bd4c added
this(damaged)
added
targetchooser [damaged] status
added
targetchooser [controllerdamager]
targetchooser [opponentdamager]

basically checks for whos doing damage to who in a match per turn.
2011-02-02 18:22:08 +00:00
guzhenjie1@gmail.com 2993388a6e Fixed the Hellkite Igniter:
text=First strike. -- Deathtouch. -- Whenever a creature an opponent controls is put into a graveyard from the battlefield, you may return target artifact card from your graveyard to your hand.
 ==> 
text=Flying, haste -- {1}{R}: Hellkite Igniter gets +X/+0 until end of turn, where X is the number of 

artifacts you control.
2011-02-02 14:36:52 +00:00
omegablast2002@yahoo.com 76fc1558ec morgue theft was never changed into a flashback card 2011-02-02 08:23:01 +00:00
omegablast2002@yahoo.com ce8c6e69b3 ray of revelations was a flashback card not using flashback cost... 2011-02-02 08:16:50 +00:00
omegablast2002@yahoo.com 2ece777a11 stylistic change to my previous commit, has absolutely no effect on the code, just the way it looks. 2011-02-02 00:00:57 +00:00
omegablast2002@yahoo.com a283c89059 Captivating vampire had some typos. 2011-02-01 23:53:22 +00:00
wagic.jeck 8c18d155b8 Jeck - Fix for issue 580. StyleManager initialization was causing an infinite loop. Also started documentation for OptionItem. 2011-02-01 19:11:43 +00:00
omegablast2002@yahoo.com ea285e673e 2 changes here, first AManaProducer abilities will no longer use the stack as per MTG rules, for the most part this worked fine however genericactivedability does not use the reactto click put in place in the mana producer...so an ability which contained a cost other then just {t} was actually useing the stack instead in the fireability function.
2nd change is a bug fix, i noticed that cards which were mana producers which contained a cost but did not contain a {t}: would still tap at first i thought this was graphical, however after further reveiw i noticed that the card was indeed truely tapping...this was happening becuase amaproducer had a defualt of 1 for doTap/tap...and since genericactived ability does not go through the motions of setting the true manaproducers "doTap" which can be witnessed by stepping through the processes...it was defualting to a tap, even tho the cost might have just be {1}:add{ ....
2011-02-01 14:24:41 +00:00
wrenczes@gmail.com b6dcb0dcd3 Fixed some formatting issues that cause compile issues on bsd. 2011-02-01 11:54:38 +00:00
wrenczes@gmail.com b42dbf0655 VS2008 project changes to add the boost directory inclusion. 2011-02-01 10:39:33 +00:00
wrenczes@gmail.com 76cba56a1c Resuming on my threading support work with the card caching mechanism. This change unfortunately touches quite a few files, but I needed to get it out of the way before things got out of hand: one significant hurdle is the assumed lifetime of a JQuad pointer. In a single threaded model, the life time of the pointer is clear: you fetch it into the cache, the cache makes room, you use the pointer immediately. In a multithreaded context however, it's unsafe, as the drawing thread can request a few JQuads, and the cache operating on a separate thread can potentially bounce a JQuad out of the cache before the draw routine is done using it, which ends up in an access violation when you attempt to draw using an invalidated quad pointer. To prevent this, the bulk of this change swaps out the use of naked JQuad* pointers in the code with a JQuadPtr, which is basically a typedef to a boost shared_ptr<JQuad>.
This btw points out another circular dependancy between the texture and the JQuad - a texture owns a bunch of JQuads, yet the renderer uses JQuads and always assumes that the texture is valid.  We're going to need to add more defensiveness to JGE to protect against this.

Other changes in this check-in:  WResourceManager doesn't derive from JResourceManager anymore.  It actually didn't require anything from the base, so I killed the dependency.  Also cleaned up the notion of a WTrackedQuad in the WCachedResource - it didn't need a separate class, just a better container.

I've build this & tested against PSP, win, linux, QT (linux).  I haven't tried against iOS and QT Win, or Maemo.  If these other platforms are broken, I apologize in advance! - I'm hoping it should be fairly simple to put them back into play.
2011-02-01 10:37:21 +00:00
wrenczes 0b2f83c499 Adding an include path to Boost. 2011-02-01 09:56:05 +00:00
wrenczes@gmail.com cfa7bc748a More logging calls to my threading header. 2011-02-01 05:58:19 +00:00
wrenczes@gmail.com 9085b2a0e1 Some minor reformatting, JLOG instrumentation of the zip file loading. 2011-02-01 05:53:19 +00:00
wrenczes@gmail.com 4d15756f76 LF style eof property re-applied. 2011-02-01 05:51:47 +00:00
techdragon.nguyen@gmail.com d9facfb73b * moved deck mana display code into separate method.
* since I rescaled the images down to 50%, I moved the display to the upper right
   info box on the last line to the right of the "# of games played" information.
   Things look like it will fit as long as the number of games is under 1000
2011-02-01 00:48:23 +00:00
techdragon.nguyen@gmail.com 6d50ddcda5 * adjusted mana icons to be 60% of the original size. The rest of the game apparently resizes the mana icons to 40% but
that makes it look a little blurred when viewed that way on the deck selection screen.
* adjusted debug message condition for the mana display
2011-01-31 16:52:01 +00:00
guzhenjie1@gmail.com a2939cc93f Fixed the Wickerbough Elder:
(Wickerbough Elder enters the battlefield with a -1/-1 counter on it.)

auto=counter(-1/-1,2)
 ==> 
auto=counter(-1/-1,1)
2011-01-31 15:18:54 +00:00
linshier 6bde3d0ee6 moved the translator init code earlier; added some translation support for the code of r2517 and r2907; updated some Chinese translation. 2011-01-31 14:21:46 +00:00
solo81@web.de 6bf8a1209d Fixed several cards (reported by rawsugar):
Kamahl, Fist of Krosa
Mayael's Aria
Peat Bog
Vigor
Wash Out
Wickerbough Elder
2011-01-31 14:01:51 +00:00
omegablast2002@yahoo.com 7e21105460 fixed the 2 avatars, they were missing part of the secondary keyword for other restrictions checking opponent field. 2011-01-31 13:27:27 +00:00
omegablast2002@yahoo.com 1149f04df6 fixed a reported issue with regenerate...chooseBlockers appears as if it was never safegaurded at all...tho its understandable, wagic only made it "look" like ai was being offered a chance to interupt...in reality ai used to "check if it can interupt" then immedately "cancel interupt offer"...now its given a chance to interupt and cast instants...over looked in chooseblockers. 2011-01-31 13:02:40 +00:00
guzhenjie1@gmail.com 378fe1c600 Fixed the following cards reported by ph34rbot in forum:
1. Black Sun's Zenith
2. Blightwidow
3. Spiraling Duelist
4. Sword of the Meek
5. Vedalken Anatomist
6. White Sun's Zenith
7. Fixed Battle cry of following cards:
Accorder Paladin
Goblin Wardriver
Kuldotha Ringleader
Loxodon Partisan
Signal Pest
Hero of Bladehold
Hero of Oxida Ridge
Victory's Herald
2011-01-31 13:00:22 +00:00
techdragon.nguyen@gmail.com fdd55dc22e added more debug information to ensure correct string length of MANA meta data 2011-01-31 10:30:20 +00:00
wagic.jeck c68a989915 Jeck - Begun documentation for the WGui classes. Also updated doxygen config to support STL. 2011-01-31 10:24:06 +00:00
techdragon.nguyen@gmail.com 8af5870d48 * Added new options parameter. "SaveDetailedDeckInfo". This will force the system to save all
deck files in long format.  This is not configurable from the game.  It must be set manually
     inside options.txt.
     ie.  saveDetailedDeckInfo=1

* added extra debug information (line number inside text file) when card parser fails to recognize a line.
    - modified return value from "processConfLine()" to return 0 only when a true error occurs and print out
         "MTGDeck: Bad Line:
         [<line no>]: <line with error>"
    - processConfLine will now return 1 for lines starting with "#".  Previously it returned 0 which is incorrect
         as comments should not be considered as errors.

* removed DeckMetaDataList class from code.  This was duplicating the DeckMetaData storage in DeckManager
* new feature for deck selection screens.
   - player decks will now have an indication of what mana color it consists of.
   - Ai decks will show symbols once the player has played against the AI deck at least once.
   -- This is made possible with a new meta data inside each deck file.
        MANA:<string representing color switches - 0/1 >
2011-01-31 10:04:18 +00:00
techdragon.nguyen@gmail.com 2973158a62 added new utility to check if a file exists on system. 2011-01-31 08:53:06 +00:00
techdragon.nguyen@gmail.com 6ddaf8b74b removed draw method from GameObserver as it is no longer used since the refactor of the
player mulligan code.
2011-01-31 08:38:14 +00:00
solo81@web.de 6a5eeff8dd Added Avatar of Might. 2011-01-30 22:16:48 +00:00
solo81@web.de 015fdb7bfa Fixed Jackal Pup. 2011-01-30 21:17:48 +00:00
wrenczes@gmail.com 6675a7da31 Implemented a lazy load pattern for the deck stats - when the DeckMenu is displaying decks, it calls LoadStats() for only the ones visible in the list. This helps reduces the lag that occurs each time we attempt to load all the AI decks during match selection.
This still could be improved - DeckMetaData's constructor loads an MTGDeck object to parse out the name of a deck from its file.  This means that we crack open 106 files on the first attempt to show the list of opponent decks. I started optimizing this, but reverted, as the list itself is sorted alphabetically.  Currently, with these mods, it's still taking 4 1/2 seconds on my psp to load the opponent list on the first go around.

While at it, did some cleanup - removed the need for passing around a player pointer in some of the DeckStat functions, etc.
2011-01-30 13:06:21 +00:00
wagic.jeck ebc7f93682 Jeck - Fixed icon indirection in Doxyfile. 2011-01-30 11:24:26 +00:00
wagic.jeck e0f7bf26d8 Jeck - First doxygen commit, basic information on WFilter classes. Also added filter price adjustment for some of the newer basic abilities (the CANTLOSE varieties now cost more to filter). 2011-01-30 11:14:36 +00:00
solo81@web.de 329b0cf929 Added 9 cards based on rev2979.
Cloak and Dagger
Dragon Breath
Dragon Fangs
Dragon Scales
Dragon Shadow
Dragon Wings
Obsidian Battle-Axe
Sword the Meek
Veteran's Armaments
2011-01-30 10:39:16 +00:00
guzhenjie1@gmail.com f5cfe6a3a9 Fixed Psychosis Crawler:
mana={6}
 ==> 
mana={5}
2011-01-30 09:36:05 +00:00
guzhenjie1@gmail.com ae40e31d04 Fixed the following cards:
name=Contested Warzone
 ==> 
name=Contested War Zone

text={T}: Add {1} to your mana pool. -- {1}: Inkmoth Nexus becomes a 1/1 Blinkmoth artifact creature with flying and infect until end of turn. It's still a land.
 ==> 
text=Whenever a creature deals combat damage to you, that creature's controller gains control of Contested War Zone. -- {T}: Add {1} to your mana pool. -- {1}, {T}: Attacking creatures get +1/+0 until end of turn.

In MBS cards: 
primitive=Contested Warzone
 ==> 
primitive=Contested War Zone

[card]
primitive=Spine of Ish Sah
id=214069
rarity=R
[/card]
 ==> 
[card]
primitive=Spine of Ish Sah
id=214076
rarity=R
[/card]
2011-01-30 08:07:01 +00:00
omegablast2002@yahoo.com c4ffc214ab moved token creator under aequip so i can do the same fix to livingweapon as i did for new target...
also refactored it a bit to remove the livingweapon and battleready copy paste code.
2011-01-30 00:01:57 +00:00
omegablast2002@yahoo.com 50aa62675e adding life loss event sending to damage from creature sources in combat. 2011-01-29 22:32:34 +00:00
omegablast2002@yahoo.com 4103a8964f fixed an oversight and an error...in lifelostthisturn for a player, if the life gain was less then 0 then i want to ADD the abs pos to the amount, not remove it...and damage from creatures is considered lifelost... 2011-01-29 22:21:18 +00:00
omegablast2002@yahoo.com 853b8ea5c6 fixed gravetitan bug reported, added new keyword "retarget" as another support for newtarget...
reworked the handling of new target...auras and equipments can not be treated the same...doing so allowed the player to then use the equip function of the card and gain a double bonus. now i call directly on the equip function to do the equiping so that it works with its own function to add the effects. keeping a person from gaining double bonus.
2011-01-29 21:58:29 +00:00
solo81@web.de ed93646785 Reverted one unintended change from last revision. 2011-01-29 21:55:02 +00:00
solo81@web.de 938e31a258 Fixed old helm_of_kaldra.txt.
Now that Helm of Kaldra's code is complete i had to add a "choice 0" to this test.
2011-01-29 21:52:53 +00:00
solo81@web.de ac3b65995b - Added MBS. 124 out of 155 could be added (that's over 80%).
- Added a test for livingweapon.

- Reverted one part of rev2975.
2011-01-29 20:46:37 +00:00
guzhenjie1@gmail.com 1c119f2ace Fixed Helm of Kaldra:
auto={1}:aslongas(Sword of Kaldra|mybattlefield) aslongas(Shield of Kaldra|mybattlefield):token(-47449)
 ==> 
auto=aslongas(Sword of Kaldra|mybattlefield)aslongas(Shield of Kaldra|mybattlefield)aslongas(Helm of 

Kaldra|mybattlefield) {1}:token(-47449)

Deleted id=-47449 of Kaldra token to make its card image show up.
2011-01-29 20:13:44 +00:00
solo81@web.de 5e4902c229 - Completed code for Helm of Kaldra.
- Added Kaldra token (keyword:"newtarget" --> rev2922).

- Added test for Kaldra.
2011-01-29 16:05:01 +00:00
guzhenjie1@gmail.com 11dc8ac671 Fixed Spiritual Asylum:
text=@attacking(creature|myBattlefield):sacrifice
 ==> 
auto=@attacking(creature|myBattlefield):sacrifice
text=Creatures and lands you control have shroud. (They can't be the targets of spells or abilities.) -- When a creature you control attacks, sacrifice Spiritual Asylum.
2011-01-29 15:32:32 +00:00
guzhenjie1@gmail.com 73025806ad Fixed the following cards:
Rally the Troops
Remove
Scorching Winds
Treetop Defense
Warrior's Stand
restriction=opponentblockeronly
 ==> 
restriction=opponentblockersonly

Heavy Fog
auto=preventalldamage to(controller) from(creature[attacking] ueot
 ==> 
auto=preventalldamage to(controller) from(creature[attacking]) ueot
2011-01-29 15:25:54 +00:00
solo81@web.de d78138fe25 Added Spiritual Asylum. 2011-01-29 14:51:13 +00:00
omegablast2002@yahoo.com 4aa852ab0d the vampire restriction checks 2 or more, i had it checking for 3 or more. 2011-01-29 12:37:45 +00:00
omegablast2002@yahoo.com 4e511d2f37 fixed bloodchief acession trigger was coded wrong. 2011-01-29 12:36:44 +00:00
solo81@web.de 74bf7fdab3 Added 8 cards based on rev2963.
Artifact Ward
Avatar of Fury
Bartel Runeaxe
Gaea's Revenge
Karplusan Strider
Spellbane Centaur
Suq'Ata Firewalker
Tetsuo Umezawa
2011-01-28 23:03:45 +00:00
techdragon.nguyen@gmail.com e74c63bc0b fixed mem leak 2011-01-28 22:57:10 +00:00
techdragon.nguyen@gmail.com 4d17ab9962 fixed a null pointer for deck editor on creating a new deck. 2011-01-28 22:23:09 +00:00
solo81@web.de 610d55d0ba Fixed several cards with cost alteration.
They were missing the restcost-part for the opponent.
2011-01-28 22:06:31 +00:00
solo81@web.de 5b2a50fbec Added 33 cards based on rev2926 (keyword "share").
[card]
name=Maelstrom Pulse
target=*[-land]
auto=all(*[share!name!]) destroy
text=Destroy target nonland permanent and all other permanents with the same name as that permanent.
mana={1}{B}{G}
type=Sorcery
[/card]


Card list --> First comment
2011-01-28 20:58:29 +00:00
omegablast2002@yahoo.com 7dfa655323 added support for cantbetargetof(something[optional])
for "this card cant be the target of green spells or abilities" style cards.

added poisoned status trigger for attacking, so far its the only place this is checked. we will see what the next set does with this keyword
2011-01-28 19:08:01 +00:00
omegablast2002@yahoo.com 6af545a797 fixed a bug that arose from giving the Ai the ability to actually interupt with something. found that ai was allowed to run "chooseBlockers()" and has been running this function EVERYTIME even before the update i made, when ever it was choosing actions during blockers. even when its blockers were already choosen and it no longer had proirity. 2011-01-28 18:26:34 +00:00
Xawotihs cba0a59023 Removed useless attribute 2011-01-28 17:34:49 +00:00
techdragon.nguyen@gmail.com 5e651f03b2 moved mulligan code out of GameStateDuel and into Player base class. Taking a mulligan seems better
encapsulated as a player function rather than loose code inside the state transitions of GameStateDuel

Note: Inside of the mulligan code I assigned game to currentPlayerZones for clarification rather than
something functionally required.  "game" seems ambiguous as "game" is also referenced throughout the code for the GameObserver
keeping this change localized to this method until more analysis can be done.  The pattern that was here before was
game->currentPlayer->game
where the first "game" represented the GameObserver and the second the collection of zones (MTPPlayerCards) to the current player.
I would suggest changing the Player instance of game to something that represents its data, the game zones associated to the current player.
"game" seems too generic, as it can be interpreted to encompass many things rather than just dealing with the different zones (library, exile, discard, etc )
2011-01-28 13:30:29 +00:00
wrenczes@gmail.com 3187487987 Minor tweaks to Mike's map of maps cache work on stats. Mostly these changes are stylistic changes that favor more terse code, but there was one bug where a double-delete was happening - GameStateDeckViewer used to allocate its own StatsWrapper, and deleted it as part of teardown - now that the allocation is owned by the deck stats instance, it's not allowed to do the deletion anymore.
I'll also note that the mods I did to getDeckMetaDataById() are completely unnecessary - pragmatically speaking, it's doing the same thing.  The only difference is that I'm using std::find_if instead of brute iterator manipulation, and I'm using a predicate function.  For a simple check like this, it's kind of pointless, but if you need to do more complex comparisons, predicate operators can become quite powerful.
2011-01-28 10:21:23 +00:00
wrenczes@gmail.com f4f1fdcd3d Another LF property change. 2011-01-28 06:07:14 +00:00
wrenczes@gmail.com f2cbd883a6 Apply LF line endings as an SVN property, this time on the JGE source files. 2011-01-28 06:03:52 +00:00
wrenczes@gmail.com 32cabc15c2 Forcing LF as the line ending style through SVN properties. No actual code changes here. 2011-01-28 06:00:51 +00:00
techdragon.nguyen@gmail.com 8156619d49 added guard around TRACK_FILE_USAGE define to disable it on a PSP build. The related code does not compile for the PSP builds. 2011-01-27 16:15:12 +00:00
techdragon.nguyen@gmail.com ce7745bfa6 First attempt to reduce load time of player deck selection screens.
This change makes use of caching the DeckStats and DeckStatsWrappers into singleton caches that
get flushed when you quit the game.  The initial load time will be significant as lazy loading has not
been coded yet for the ai decks.

TODO: lazy load the player and ai decks as they appear on the screen.  Currently, each screen loads
all decks.
2011-01-27 16:13:40 +00:00
omegablast2002@yahoo.com e87f5edaf5 Orim's Chant canattack ====>cantattack 2011-01-27 08:15:51 +00:00
omegablast2002@yahoo.com f06f67addf fixed typo in war elemental 2011-01-26 15:00:52 +00:00
omegablast2002@yahoo.com 60c589ccaa fixed a bug reported for Ghost Council of Orzhova, involving MTG rulings on such effects...if the target of the effect is no longer in the targetted zone at the time the effect goes to resolve, it will still be put on the stack and resolve to do nothing at all. AKA if you sacrifice Ghost to herself, or use ghost to sacrifice that goblin which has {s}:damage:1 target player...and you interupt that ability to sac the goblin for the one damage...while the ability is on the stack..it should not blink the goblin afterwards...
i was originally not going to fix it but it bothered me enough thinking of possible exploits that i went ahead and corrected it.
2011-01-26 13:38:21 +00:00
wagic.the.homebrew@gmail.com cc6668b632 Erwan
- removing the daily build folder. They take too much space in the repository. If you do daily builds, please use the "download" section of the google code page, or update the build to some server (megaupload or your own server), and post it on the forum. Thanks
2011-01-26 12:43:43 +00:00
guzhenjie1@gmail.com 83a340d38e Fixed the following cards reported by kaioshin in forum:
1. Bant Sureblade
2. Crystallization
3. Esper Stormblade
4. Grixis Grimblade
5. Jund Hackblade
6. Naya Hushblade
2011-01-25 11:03:56 +00:00
wrenczes@gmail.com d439be4f75 Fixed http://code.google.com/p/wagic/issues/detail?id=572, where a card sometimes might not show its tap status correctly. My fix for 550 was slightly off, in that if a card view's position was updated (ie from a zone change, etc), the pos pointer shouldn't be cleared. Only the pos related to the 'this' pointer is the one that can't be referenced anymore, fixed the destructor code. 2011-01-25 07:52:01 +00:00
techdragon.nguyen@gmail.com 6100641edd changed line endings to UNIX style line enidngs. last commit didn't take for some reason. 2011-01-24 20:19:17 +00:00
techdragon.nguyen@gmail.com 7848669702 changed line endings to UNIX style line enidngs 2011-01-24 19:56:45 +00:00
omegablast2002@yahoo.com b0fe919cc3 fresh eboot 2011-01-24 18:47:59 +00:00
omegablast2002@yahoo.com c6584a9e9d meant hasType...tho im not really sure its needed(?) 2011-01-24 18:26:04 +00:00
omegablast2002@yahoo.com 0b0da78e30 removed a change that wasnt supposed to be there. sorry! 2011-01-24 18:23:02 +00:00
omegablast2002@yahoo.com 5f2af4413a fixed the conflicted cards mike reported.
saprolings conflict i have not fixed -1924 is saproling, tho i explictly remember replacing all these with token(Saproling,creature saproling,1/1,green) not sure who changed them back, the others are indeed due to incoding.
2011-01-24 18:17:43 +00:00
omegablast2002@yahoo.com beec00c254 2 changes, first fixed the bug where auras were causing the cards to slide to the right, auras always have targets, so i added a conditional to guiplay to ignore adding it to the horizontal shift as these auras should never be just laying in the battlefield with no target.
2nd, started laying some ground work for planeswalkers.
added the planeswalker rule, as per mtg rules, if you have a type=planeswalker subtype=jace already on the battlefield, both are sent to the graveyard. so you can not have a jace mind scuptor and a jace beleren out at the same time. i choose to use subtype= and type= rather then adding another variable to MTGCard...
also, added GuiPlay positioning for planeswalker,
i think theres been a HUGE misunderstanding about planeswalkers which has most going "battlefield is too crowded where would be put them...easy...slap them at the end of the lands ..done...theyre not creatures or artifacts/enchantments..so i moved them to the colum with the lands and have guiplay slap them at the end of that colum...btw this is in no means final...if someone can think of a better solution be my guest, but looking at the planeswalker (workaround) thread, its pretty obvious that no one will care where we slap the planeswalkers, as long as theyre supported. planeswalkers have alot more ground to cover...
2011-01-24 17:58:14 +00:00
guzhenjie1@gmail.com 556df85a31 1. Fixed the Skeleton token of Drudge Spell and Graypelt Refuge in mtg.txt.
Add Skeleton token for Drudge Spell in HML. _cards.dat:
[card]
primitive=Skeleton
id=-2915
rarity=T
[/card]

2. Fixed the Liege of the Pit according MTG rules.

3. Removed "丒" in following cards' text:
Eternity Vessel
Grizzly Fate
Ior Ruin Expedition
Sunspring Expedition
Ulasht, the Hate Seed
Umezawa's Jitte

4. Removed "?" in following cards' text:
Argent Sphinx
Kuldotha Phoenix
2011-01-24 11:05:42 +00:00
omegablast2002@yahoo.com 46891d8de8 added a commit to "thatmuch" variable to explain what its for. 2011-01-23 18:23:44 +00:00
omegablast2002@yahoo.com 48fd6a1bc1 2 changes wrapped my last commit incorrectly, the fix for @targeted...and i added a conditional to keep the "combat bump" hint out of test suite, i found out it slowed test suite down considerably 2011-01-23 17:57:37 +00:00
omegablast2002@yahoo.com ee29fbc237 removed a unused variable and correct a bug with [share] spells tc's are deleted as they resolve so these effects couldnt take adventage of this type of targeting when the effect ability was a fizzle. 2011-01-23 17:29:26 +00:00
omegablast2002@yahoo.com 12bdaffac1 doc reported that @targeted was not resolving before the spell which triggered it, as per mtg rules, this trigger is a statebased trigger that resolves instantly. 2011-01-23 14:34:55 +00:00
solo81@web.de 2bcf7ecdff Added 650 new cards based on rev2922.
Playable Highlights are:

Psychatog
Grim Lavamancer
Anurid Brushhopper
Flameblast
Thwart
Baron Sengir
Sengir Vampire
Stuffy Doll
Undiscovered Paradise
Gush
Heritage Druid
Mageta the Lion
Faceless Butcher
Mesmeric Fiend
Oblivion Ring
Parallax Wave
Knight of the White Orchid
Contagion
80 creatures with Morph (Exalted Angel,etc.)

Added 27 tests.

Card list -> see comments. The list is separated into the single card groups.
2011-01-23 12:41:11 +00:00
wagic.the.homebrew@gmail.com c113c154c1 Erwan
- In line Zethfox's idea with WParsedInt objects inside MTGAbilities, deleted some unused variables.
2011-01-23 08:28:24 +00:00
wagic.the.homebrew@gmail.com f63aa379e7 Erwan
- moved all "loseLife/gainLife" duplicated code into 1 Player method
2011-01-23 06:59:00 +00:00
wagic.the.homebrew@gmail.com 14f2e9b0f2 Erwan
- simple refactor of "putIn*" functions in MTGGameZones
2011-01-23 06:03:37 +00:00
omegablast2002@yahoo.com 63b3bdfef6 missed a spot to send @targeted events. 2011-01-22 22:02:20 +00:00
omegablast2002@yahoo.com da8f8dd558 fixeda bug with counter cost when uses with lords/aslongas/foreach/insert any ability other then auto={c(1/1,-1)}:effect....
tho no ticket was open for it using such combinations actually ADDED counters to a card instead of removing them.
this is because in the clone of the cost, the counters original nb was never set into the clones...so it was set to the defualt nb which was 1.
2011-01-22 17:53:30 +00:00
omegablast2002@yahoo.com 62873dc971 more fixes to the review 2011-01-22 17:14:41 +00:00
omegablast2002@yahoo.com 07802134e8 more fixes from the review... 2011-01-22 16:48:55 +00:00
omegablast2002@yahoo.com 27e60fc605 fixed most of the reviewed code, corrected all danger zone code which could have had bad side effects. 2011-01-22 16:12:17 +00:00
omegablast2002@yahoo.com 946df16af5 removed eradicate ability and replaced it with a far more flexable solution which is
added new card discriptor [share!variable!]
the variables for this so far are
name <---eradicate effect targetting
color <--radiance effect targetting
types <--the plague cycles

it is important to note that a target IS REQUIRED before this, meaning it has to be used below a target= or after the targetting of an && ability...otherwise it will simply default to the source cards variables.
this solution provides a much more generic version without sacrificing the effectiveness of the eradicate set which was limited only to eradicate style cards(which ALSO required a target)

coding exsample 
[card]
name=Eradicate
target=creature[-black]
auto=all(*[share!name!]|targetcontrollerhand) moveto(exile)
auto=all(*[share!name!]|targetcontrollerlibrary) moveto(exile)
auto=all(*[share!name!]|targetcontrollergraveyard)moveto(exile)
auto=all(*[share!name!]|targetcontrollerbattlefield) moveto(exile)
mana={2}{b}{b}
type=sorcery
[/card]

you will notice something strange above, for this change to work i had to fix the bug with "targetcontrollerBLAH" zone targetting...tho my fix was a patchwork fix, it does indeed provide the targets controller...we need to find the root cause of why initToZone is not returning the correct "target" variable to this function.
if the source does not have a target it defaults to source.
before it there was no target, which there never is a correct target returned as noted by the fact that 0 cards exist with targetcontroller zone targetting in WAGIC however theres a considerably large card pool for this.

enjoy :)
docs going to kill me for this lol.
2011-01-22 12:30:42 +00:00
wagic.the.homebrew@gmail.com d581a72c1d Erwan
- changed "putInPlay" to return "NULL" if the card cannot be found in the "from" zone. The behavior of the function before that prevented to see that we broke the "alternate" cost feature (see test Vine Dryad)
- Fixed some memory leaks introduced in r2922
2011-01-22 09:43:13 +00:00
omegablast2002@yahoo.com 094c97dec8 corrected an issue where morphing a creature would overwrite basic abilities granted by lords. it was because i was not ADDING the new basic abilities it gained to the end result of face upping the creature.
also forgot to mention in my big patch
i added a new test suite tool, its a goto command
if you start on draw and want to get to second main,
goto secondmain

instead of 
next
next
next
next
next

"next" is still valid and still needed
you can not for exsample 
goto attackers
if you are ALREADY currently in "attackers" so if you wanted to go from YOUR attackers to opponents attackers

from draw step
goto attackers
next
goto attackers

this replaces about 12 "next" commands which would have been needed in preivous test suite.
2011-01-22 02:35:11 +00:00
omegablast2002@yahoo.com 299bb4f9fa removing the rest of the originatingZone code mike added, as we already have this variable as
card->currentZone
2011-01-21 21:55:12 +00:00
omegablast2002@yahoo.com 473abd9814 im forced to do this commit in whole instead of parts as originally planned, and before my beta test period of the changes is complete BECAUSE there are people doing "clean up" and the MASSIVE amount of conflicts i have to resolve from it is WAY too much for me to take on after nearly 200 hours of coding this patch. i cant seem to get enough respect to have people hold off on "clean up" so this brings me to being forced to do a full commit before playtest period is done, so they can go ahead with there *super important* clean up.
ok i WAS going to write a full change log with code exsamples ect, but since im rushed you will get the short version of this log.

first bug fixes, and there were many, 
indestructible creature bug fixed
halimar execavator *embearessing youtube video" bug is fixed

token text now displays source name and tokens abilities

fixed a card view null pointer in an iterator when code used combinations of foreach and aslongas with CD.

epic struggle bug fixed, aslongas was only parsing one space to the right of the operator.

extra cost containing targetting fixed, cards can now have multiple extra cost in all mana...this includes giving a card 2 targeted sacrifices as its main cost.

angelic chorus bug fixed, the card will be soft coded now.

and many other minor bugs fixed, hard to remember all which were fixed.

now, new abilities = words
"legendarylandwalk",
"desertlandwalk",
"snowforestlandwalk",
"snowplainslandwalk",
"snowmountainlandwalk",
"snowislandlandwalk",
"snowswamplandwalk",
"snowlandwalk",
"nonbasiclandwalk",
"strong",//cant be blocked by creature with less power
"weak",//cant block creatures with more power
"phasing",

all true landwalks will now be supported.

new cost types:
morph which is coded as follows
[card]
name=Bloodstoke Howler
facedown={3}
autofacedown={6}{R}:morph
autofaceup=3/0 all(beast|mybattlefield))
text=Morph {6}{R} (You may cast this face down as a 2/2 creature for {3}. Turn it face up any time for its morph cost.) -- When Bloodstoke Howler is turned 
face up, Beast creatures you control get +3/+0 until end of turn.
mana={5}{R}
type=Creature
subtype=Beast
power=3
toughness=4
[/card]

you will notice new auto lines autofaceup and autofacedown
these are abilities the cards will have when theyre in that state.
the cost is coded as
facedown={cost}
when a card is faced up it gains auto= lines also.
tho is played normally it will NOT gain autofaceup=lines

card restrictions:
cards can now have restrictions placed on them the restrictions are.
all previous restrictions usable in activated abilities
with the follow additions
control two or more vampires
control less creatures
control snow land
casted a spell
one of a kind
fourth turn
before battle damage
after battle
during battle

[card]
name=Blood Frenzy
target=creature[attacking;blocking]
restriction=before battle damage
auto=4/0
auto=treason
text=Cast Blood Frenzy only before the combat damage step. -- Target attacking or blocking creature gets +4/+0 until end of turn. Destroy that creature 
at the beginning of the next end step.
mana={1}{R}
type=Instant
[/card]

other cost now can have specail restrictions also:
otherrestriction=mytypemin:1 type(swamp),opponenttypemin:1 opponenttype(plains)
these are minimums required inplay of a type
it can be just you, or you and opponent or just opponent
you can also use the words "more" and "less" and * to compare the 2 players fields.

[card]
name=Cho-Arrim Legate
abilities=protection from black
other={0}
otherrestriction=mytypemin:1 type(swamp) , opponenttypemin:1 opponenttype(plains)
text=Protection from black -- If an opponent controls a Swamp and you control a Plains, you may cast Cho-Arrim Legate without paying its mana cost.
mana={2}{W}
type=Creature
subtype=Human Soldier
power=1
toughness=2
[/card]

activated ability gained a new restriction "opponentturnonly"

variables will now be recalculated during the resolve of the major abilities to produce the most current number.
{x}:draw:x <----
new number variables words:
using draw as an exsample
draw:auras <--auras on a creature

draw:type:ally <---counts the allys in your field. self explanitory

draw:thatmuch <--mostly a triggered effects number.
when you take damage draw that much

draw:lifelost
draw:oplifelost
these return the value of the life lost that turn.

new TRIGGER restricitions
sourcenottap
sourceTap
foelostthree<--card cycle uses opponent lost life
foelosttwo<--same as above
once<--this trigger will only ever trigger one time and never again.

new card discriptor words
[multicolor]
[leveler]
[enchanted]
[blackandgreen]
[blackandwhite]
[redandblue]
[blueandgreen]
[redandwhite]
CD will now recalculate the number again on resolve
meaning {x}:target(CreatureTargetChooser[manacost <=x]) will work, with an added bonus {x}:target(CreatureTargetChooser[manacost <=any word variable])

new this(:
this(tapped)<--for strange case cards.
this(untapped)
this(auras)

new MTGAbility keywords
(blink)
(blink)forsrc <--stay blinked while source inplay
hand(blink <---adding hand to the front makes it target hand.

livingweapon
this is an extension of token, simple attach the words "livingweapon" to the front of token( and it will autoamtically token that and attach the card to it.

token( gained:
"targetcontroller" targetting.
"battleready" if put in the tokens abilities it will be a attacker and tapped as it is entering play.


phaseout <--self explanitory

spiritlink <--stacking lifelink style effect that benifits the OWNER of the card.
combatspiritlink same as above.

stacking flanking, requires 2 abilities unfortunately

[card]
name=Agility
target=creature
auto=teach(creature) flanker
auto=teach(creature) flanking
text=Enchant creature -- Enchanted creature gets +1/+1 and has flanking. (Whenever a creature without flanking blocks this creature, the blocking 
creature gets -1/-1 until end of turn.)
mana={1}{R}
type=Enchantment
subtype=Aura
[/card]

removeallcounters(number/number,name)
removes all counters of the type from a card, can all be
"all"
vampire hexmage effect.

added new tools for transforms
,setpower=number
,settoughness=number
removetypes

morph
autofacedown={0}:morph

eradicate <---same as the card name.

cumulativeupcost[ <--self explanitory

upcostmulti[ <--an upcost that will resolve with a && ability

phaseaction[ phase name ] ability

an ability that will trigger on the stated phase name.
also support for phaseactionmulti[

new triggers added:
@vampired( <--sengir vampire effect
@targeted( 
@lifeloss(
@lifed(

add a special ability builder called dynamicability
it acts alot like a choose your own adventure book

dynamicability<! variable 1, variable 2, variable 3,variable 4!> optional ability targetting the original target.

variable list 1:
this is the primary amount source
source
mytgt
myself
myfoe
variable list 2:
this is the variable we're after, or the amount
power
toughness
manacost
colors
age
charge
oneonecounters
thatmuch
variable list 3:
this is the main effect
strike
draw
lifeloss
lifegain
pumppow
pumptough
pumpboth
deplete
countersoneone
variable list 4:
how it will do this effect to.
itself
eachother
targetcontroller
targetopponent
tosrc
srccontroller
srcopponent

the best way to explain its usage is to look at cards coded with this ability. or experiment with combinations.

new gameoption
First turn player:player, opponent, random
who takes the first turn

added poisoned status, tho not complete since MBS hasnt spoiled enough cards to see where this variable will be used.

taught ai how to counter spell
improved ai, it will now cast instants during interupts and during your turn.
previously ai treated instant cards the same as it treated sorceries, which was not fair to the ai.

im sure there is some messed items, but the rev directly before this one had formatting in the code that created hundreds of conflicts with this one, so i had to dig this info out of red and green sections.

cards and test are coming soon, i ask PLEASE do not alter these new additions until the test are commited.
im commiting without the test because instead of allowing me to proceed with my beta test period, there are some that wish to rush me into a commit. if you do not like this commit revert it, i absolutely on no grounds give permission to recommit afterwards. and i will not recommit if a revert is called.
2011-01-21 20:18:56 +00:00
techdragon.nguyen@gmail.com b836c97a1b fix to previous checkin. adding new parameter to specify originating zone of card 2011-01-21 18:46:13 +00:00
omegablast2002@yahoo.com 0e49775f27 the back image quad for morph. 2011-01-21 18:39:25 +00:00
techdragon.nguyen@gmail.com e53c16f700 No code change just reformatting of header files.
finishing up my reformatting of the source from November/December following the guidelines that were posted.
some extra things I added:
   * Any empty virtual declarations were kept to one line.  
   * Enums were split up into separate lines to promote uniformity across all headers. ( each header file had a different style for enums)
2011-01-21 18:01:14 +00:00
wagic.the.homebrew@gmail.com 6d3d4c1792 Erwan
- refactor of MTGRules.cpp (buyback/flashback/retrace/alternative).
This change has been reviewed by myself, Wil, and Mike. The test suite passes.
More cleanup can be done, I will work on that later on.
2011-01-21 10:27:45 +00:00
guzhenjie1@gmail.com b6713c02ec Fixed two cards' name in ME4 _cards.dat:
primitive=Lim-D鹟's Cohort
 ==> 
primitive=Lim-Dul's Cohort

primitive=Jun鷑 Efreet
 ==> 
primitive=Junun Efreet
2011-01-20 10:56:15 +00:00
wrenczes@gmail.com df77cc584f Err, sorry, that's not fair - I was forcing this pspsdk change on everyone. Put it back to off by default - to turn on the signing, simply uncomment SIGN_PRX = 1 in the makefile. 2011-01-19 11:05:42 +00:00
wrenczes@gmail.com 0b16401c88 Some tweaks to support automatic signing of the wagic eboot on psp. To use, you'll need to unzip the mods I made into your pspsdk folder - you should end up with two utils in the bin folder, and some slight mods to the build.mak file (under pspsdk/psp/sdk/lib/).
(Erwan, pls give this a sanity check for me).

Nice side effect:  running the signed version seems to clear up a crash I'd get when putting my psp into sleep mode in the middle of a match.
2011-01-19 11:03:09 +00:00
Xawotihs f90709403f - Fixed scissor bug introduced in r2912.
- Adds code to support TapAndHold gesture, it does not seem to work with
the N900, but it works fine on Linux.
- Removed code checking opengl version as it's no more needed.
2011-01-16 22:47:07 +00:00
Ittobaal@gmail.com 7eaa30e996 add newline @ end of JLogger.h 2011-01-16 17:48:11 +00:00
Xawotihs 04c1ff23dd Fixed OpenGL 1.1 code with Qt. The Qt version on windows now uses it by default instead of OpenGL 2.0. 2011-01-16 17:31:24 +00:00
Xawotihs 963730536e Mouse/touch support for the options menu (issue 576). Still missing support for the virtual keyboard. 2011-01-16 11:05:02 +00:00
techdragon.nguyen@gmail.com 44c101bf6b removed extra variable that I shouldn't have 2011-01-16 08:27:32 +00:00
techdragon.nguyen@gmail.com 1be97b76f8 code cleanup. No code changes
- removed unused variables
- added line breaks between methods (not everywhere just where i saw it while removing unused variables)
2011-01-16 07:49:34 +00:00
solo81@web.de a79164e800 Fixed Spike Weaver. 2011-01-15 13:12:56 +00:00
wrenczes@gmail.com e5edf779f5 Reworked a patch sent to us (http://wololo.net/forum/viewtopic.php?f=15&t=2464) that replaces the text symbols for the psp buttons with the actual icons. While at it, I found a bunch of issues with the ActionStack's render code (ie when you get the popup menu to interrupt a spell being played & the like) - the bounding rect actually went above the screen's region, clipping problems (the interrupt text was previously drawing over the interrupt effect), alignment problems when the avatar was being drawn, vertical text alignment, fudged alignment numbers for the quads that didn't make any sense, etc.
I also tweaked slightly the psp icons to center the symbols, as they were too much to the right.  (Be sure to copy the updated graphics/iconspsp.png to your Res folder.)
2011-01-13 09:56:55 +00:00
omegablast2002@yahoo.com bd529c3618 this is the base shadow for a fix to multitargetted extracost which i will be commiting as soon as the cards are coded.
doc was having issues getting this image in its correct format so i figure i would commit this ahead of time and it would do no harm
2011-01-12 20:01:25 +00:00
guzhenjie1@gmail.com 3f81a8d238 2011-01-12 14:07:25 +00:00
wrenczes@gmail.com eac6d74ebd Added a couple of null guards against invalid quads / textures in the render() call, with JLOG calls to trace this out if we should hit one of these cases. (Reformatted tabbing in the function while I was there.) 2011-01-11 10:36:15 +00:00
wrenczes@gmail.com 2063e27681 Added a debug helper override class for ifstream - this normally washes out to std::ifstream. If #define TRACK_FILE_USAGE_STATS is enabled, it derives from ifstream, but additionally tracks each time we create an instance for a given file name & counts each hit in a map, and dump the statistics on shutdown. This is to help track how often we open up certain files, since i/o is costly on the psp.
Here's an sample run on my win box where I launched & ran the test suite once (note that for more interesting stats, forcing a low memory condition would be more interesting so that it'll thrash more):

-------------------
File Usage Statistics

../../../wagic_res/graphics/simon.dat  -- 1
../../wagic_res/graphics/simon.dat  -- 1
../wagic_res/graphics/simon.dat  -- 1
22222220.jpg  -- 1
42187t.jpg  -- 1
4514111t.jpg  -- 1
4838511t.jpg  -- 1
4838512t.jpg  -- 1
51613t.jpg  -- 1
89069t.jpg  -- 1
Advisor.wav  -- 1
Ally.wav  -- 1
Angel Token.jpg  -- 1
Angel.wav  -- 1
Ape.wav  -- 1
Archer.wav  -- 1
Assassin.wav  -- 1
Atog.wav  -- 1
Aura.wav  -- 1
Barbarian.wav  -- 1
Basic.wav  -- 1
Bat.wav  -- 1
Bear.jpg  -- 1
Beast Token.jpg  -- 1
Berserker.wav  -- 1
Bird.wav  -- 1
Centaur.wav  -- 1
Cleric.wav  -- 1
Cockatrice.wav  -- 1
Construct.wav  -- 1
Crocodile.wav  -- 1
Cyclops.wav  -- 1
Dauthi.wav  -- 1
Demon.wav  -- 1
Dragon.jpg  -- 1
Drake.wav  -- 1
Druid.wav  -- 1
Dryad.wav  -- 1
Dwarf.wav  -- 1
Efreet.wav  -- 1
Elemental.wav  -- 1
Elephant.wav  -- 1
Elf.wav  -- 1
Elk.wav  -- 1
Equipment.wav  -- 1
Forest.wav  -- 1
Frog.wav  -- 1
Fungus.wav  -- 1
Giant.wav  -- 1
Gnome.wav  -- 1
Golem.wav  -- 1
Horror.wav  -- 1
Horse.wav  -- 1
Hydra.wav  -- 1
Illusion.wav  -- 1
Insect Token.jpg  -- 1
Insect.jpg  -- 1
Insect.wav  -- 1
Island.wav  -- 1
Juggernaut.wav  -- 1
Kithkin.wav  -- 1
Kobold.wav  -- 1
Kor.wav  -- 1
Kraken.wav  -- 1
Lair.wav  -- 1
Land.wav  -- 1
Leech.wav  -- 1
Legendary.wav  -- 1
Leviathan.wav  -- 1
Lhurgoyf.wav  -- 1
Lizard.wav  -- 1
Masticore.wav  -- 1
Mercenary.wav  -- 1
Merfolk.wav  -- 1
Metathran.wav  -- 1
Minion.wav  -- 1
Minotaur.wav  -- 1
Monk.wav  -- 1
Mountain.wav  -- 1
Mutant.wav  -- 1
Myr.wav  -- 1
Nightmare.wav  -- 1
Nothing.wav  -- 1
Ogre.wav  -- 1
Ooze.wav  -- 1
Orc.wav  -- 1
Orgg.wav  -- 1
Ouphe.wav  -- 1
Pirate.wav  -- 1
Plains.wav  -- 1
Plant.wav  -- 1
Rat.wav  -- 1
Rebel.wav  -- 1
Res.txt  -- 1
Res/../../../wagic_res/graphics/simon.dat  -- 1
Res/../../wagic_res/graphics/simon.dat  -- 1
Res/../wagic_res/graphics/simon.dat  -- 1
Res//test/Amugaba.txt  -- 1
Res//test/Auriok_Sunchaser_ASLONGAS_1.txt  -- 1
Res//test/Auriok_Sunchaser_ASLONGAS_2.txt  -- 1
Res//test/Call_to_Heel_1.txt  -- 1
Res//test/Call_to_Heel_2.txt  -- 1
Res//test/Covetous_Dragon_ASLONGAS_3.txt  -- 1
Res//test/Covetous_Dragon_ASLONGAS_4.txt  -- 1
Res//test/Glimmervoid_ASLONGAS&TRIGGER.txt  -- 1
Res//test/Nevinyrrals_Disk.txt  -- 1
Res//test/Nevinyrrals_Disk2.txt  -- 1
Res//test/Nyxathid.txt  -- 1
Res//test/OneDozenEyes.txt  -- 1
Res//test/Zombie_Infestation.txt  -- 1
Res//test/act_of_treason.txt  -- 1
Res//test/aegis_of_the_meek.txt  -- 1
Res//test/aether_flash.txt  -- 1
Res//test/aether_mutation.txt  -- 1
Res//test/afflict.txt  -- 1
Res//test/akron_legionnaire.txt  -- 1
Res//test/alabaster_dragon.txt  -- 1
Res//test/alabaster_leech.txt  -- 1
Res//test/alabaster_leech2.txt  -- 1
Res//test/alluring_siren.txt  -- 1
Res//test/anarchy.txt  -- 1
Res//test/ancestors_chosen.txt  -- 1
Res//test/angry_mob1.txt  -- 1
Res//test/angry_mob2.txt  -- 1
Res//test/angry_mob3.txt  -- 1
Res//test/angry_mob4.txt  -- 1
Res//test/angry_mob4b.txt  -- 1
Res//test/angry_mob5.txt  -- 1
Res//test/angry_mob7.txt  -- 1
Res//test/animate_artifact.txt  -- 1
Res//test/animate_artifact2.txt  -- 1
Res//test/animate_dead.txt  -- 1
Res//test/animate_dead2.txt  -- 1
Res//test/animate_dead3.txt  -- 1
Res//test/animated_legendaries1_i221.txt  -- 1
Res//test/animated_legendaries2_i221.txt  -- 1
Res//test/animated_legendaries3_i221.txt  -- 1
Res//test/ankh_of_mishra.txt  -- 1
Res//test/arcanis_the_omnipotent.txt  -- 1
Res//test/arcanis_the_omnipotent2.txt  -- 1
Res//test/arcbound.txt  -- 1
Res//test/ardakar_wastes.txt  -- 1
Res//test/ardent_soldier.txt  -- 1
Res//test/argothian_enchantress.txt  -- 1
Res//test/armadillo_cloak.txt  -- 1
Res//test/ascendant_evincar.txt  -- 1
Res//test/ascendant_evincar2.txt  -- 1
Res//test/ascendant_evincar3.txt  -- 1
Res//test/ashen_firebeast.txt  -- 1
Res//test/ashen_firebeast2.txt  -- 1
Res//test/aura_mutation.txt  -- 1
Res//test/avarice_totem.txt  -- 1
Res//test/aven_riftwatcher.txt  -- 1
Res//test/aven_riftwatcher2.txt  -- 1
Res//test/aysen_bureaucrats.txt  -- 1
Res//test/balduvian_conjurer.txt  -- 1
Res//test/baneslayer_angel.txt  -- 1
Res//test/baneslayer_angel2.txt  -- 1
Res//test/barbed_sliver.txt  -- 1
Res//test/basal_sliver.txt  -- 1
Res//test/beacon_of_creation.txt  -- 1
Res//test/beacon_of_destruction.txt  -- 1
Res//test/beacon_of_unrest.txt  -- 1
Res//test/behemoth_sledge.txt  -- 1
Res//test/behemoth_sledge2.txt  -- 1
Res//test/behemoth_sledge3.txt  -- 1
Res//test/behemoth_sledge4.txt  -- 1
Res//test/behemoth_sledge5.txt  -- 1
Res//test/belligerent_hatchling.txt  -- 1
Res//test/benalish_knight.txt  -- 1
Res//test/biorhythm.txt  -- 1
Res//test/black_market.txt  -- 1
Res//test/black_vise.txt  -- 1
Res//test/blessed_wind.txt  -- 1
Res//test/blessed_wine.txt  -- 1
Res//test/blinking_spirit.txt  -- 1
Res//test/blinkmoth_nexus.txt  -- 1
Res//test/bloated_toad1.txt  -- 1
Res//test/bloated_toad2.txt  -- 1
Res//test/bloodfire_colossus.txt  -- 1
Res//test/bloodhall_ooze.txt  -- 1
Res//test/bloodscale_prowler.txt  -- 1
Res//test/body_double.txt  -- 1
Res//test/boggart_arsonists.txt  -- 1
Res//test/borderland_behemoth.txt  -- 1
Res//test/bottle_gnomes.txt  -- 1
Res//test/bottle_gnomes2.txt  -- 1
Res//test/brainstorm.txt  -- 1
Res//test/bramblewood_paragon.txt  -- 1
Res//test/brass_man.txt  -- 1
Res//test/brass_man_i161.txt  -- 1
Res//test/briarhorn.txt  -- 1
Res//test/cage_of_hands.txt  -- 1
Res//test/castle.txt  -- 1
Res//test/cathodion.txt  -- 1
Res//test/celestial_purge.txt  -- 1
Res//test/chainbreaker.txt  -- 1
Res//test/circle_of_protection.txt  -- 1
Res//test/circle_of_protection_i211.txt  -- 1
Res//test/civic_wayfinder.txt  -- 1
Res//test/clone.txt  -- 1
Res//test/clone2.txt  -- 1
Res//test/clone3.txt  -- 1
Res//test/cockatrice.txt  -- 1
Res//test/cockatrice_i228.txt  -- 1
Res//test/colossus_of_sardia1.txt  -- 1
Res//test/colossus_of_sardia2.txt  -- 1
Res//test/composite_golem.txt  -- 1
Res//test/conservator.txt  -- 1
Res//test/control_magic.txt  -- 1
Res//test/control_magic2.txt  -- 1
Res//test/control_magic3.txt  -- 1
Res//test/control_magic4.txt  -- 1
Res//test/corrupt.txt  -- 1
Res//test/counsel_of_the_soratami.txt  -- 1
Res//test/counterspell.txt  -- 1
Res//test/counterspell2.txt  -- 1
Res//test/counterspell3.txt  -- 1
Res//test/counterspell4.txt  -- 1
Res//test/cranial_plating.txt  -- 1
Res//test/creature_bond.txt  -- 1
Res//test/crimson_kobolds.txt  -- 1
Res//test/crosis_s_catacombs_1.txt  -- 1
Res//test/crosis_s_catacombs_2.txt  -- 1
Res//test/crumble.txt  -- 1
Res//test/crystal_rod_i172.txt  -- 1
Res//test/curiosity1_i217.txt  -- 1
Res//test/curiosity2_i217.txt  -- 1
Res//test/dark_banishing.txt  -- 1
Res//test/dauntless_escort.txt  -- 1
Res//test/dauthi_embrace.txt  -- 1
Res//test/death_grasp.txt  -- 1
Res//test/death_ward.txt  -- 1
Res//test/decree_of_justice.txt  -- 1
Res//test/deja_vu.txt  -- 1
Res//test/delusions_of_mediocrity.txt  -- 1
Res//test/dematerialize_flashback.txt  -- 1
Res//test/dingus_egg.txt  -- 1
Res//test/dingus_staff_i153.txt  -- 1
Res//test/divergent_growth.txt  -- 1
Res//test/doomed_necromancer.txt  -- 1
Res//test/double_strike2_i145.txt  -- 1
Res//test/double_strike_i145.txt  -- 1
Res//test/dragon_broodmother_i491.txt  -- 1
Res//test/dragon_fodder.txt  -- 1
Res//test/dragon_fodder2.txt  -- 1
Res//test/dragon_whelp_i154.txt  -- 1
Res//test/drain_life.txt  -- 1
Res//test/dream_fracture_i142.txt  -- 1
Res//test/drift_of_the_dead.txt  -- 1
Res//test/dromad_purebred.txt  -- 1
Res//test/dross_golem.txt  -- 1
Res//test/dross_harvester.txt  -- 1
Res//test/duskwalker.txt  -- 1
Res//test/dust_corona.txt  -- 1
Res//test/dwarven_warriors.txt  -- 1
Res//test/ebony_horse.txt  -- 1
Res//test/ekundu_cyclops1_i218.txt  -- 1
Res//test/ekundu_cyclops2_i218.txt  -- 1
Res//test/elvish_piper.txt  -- 1
Res//test/elvish_promenade.txt  -- 1
Res//test/emblem_of_the_warmind.txt  -- 1
Res//test/enchanted evening.txt  -- 1
Res//test/enchantress_s_presence.txt  -- 1
Res//test/enervate.txt  -- 1
Res//test/erg_raiders_i157.txt  -- 1
Res//test/explore.txt  -- 1
Res//test/fangren_pathcutter.txt  -- 1
Res//test/farhaven_elf.txt  -- 1
Res//test/farmstead.txt  -- 1
Res//test/fastbond.txt  -- 1
Res//test/fastbond2.txt  -- 1
Res//test/fault_line.txt  -- 1
Res//test/feral_hydra.txt  -- 1
Res//test/fieldmist_borderpost.txt  -- 1
Res//test/fire_tempest.txt  -- 1
Res//test/firebreathing.txt  -- 1
Res//test/fists_of_ironwood.txt  -- 1
Res//test/flagstones.txt  -- 1
Res//test/flame_fusillade_i265.txt  -- 1
Res//test/flare.txt  -- 1
Res//test/fledgling_imp.txt  -- 1
Res//test/fledgling_imp2.txt  -- 1
Res//test/fleshformer.txt  -- 1
Res//test/flowstone_hellion.txt  -- 1
Res//test/flowstone_slide.txt  -- 1
Res//test/fog.txt  -- 1
Res//test/fog_bank.txt  -- 1
Res//test/foratog.txt  -- 1
Res//test/force_of_nature.txt  -- 1
Res//test/force_of_nature2.txt  -- 1
Res//test/force_of_nature3.txt  -- 1
Res//test/fountain_of_youth.txt  -- 1
Res//test/frogmite.txt  -- 1
Res//test/fungus_sliver.txt  -- 1
Res//test/gamble.txt  -- 1
Res//test/gelatinous_generation.txt  -- 1
Res//test/gempalm_avenger.txt  -- 1
Res//test/generic/attacks_each_turn.txt  -- 1
Res//test/generic/becomes_transform_i559.txt  -- 1
Res//test/generic/becomes_transform_i559_2.txt  -- 1
Res//test/generic/bushido_1.txt  -- 1
Res//test/generic/bushido_2.txt  -- 1
Res//test/generic/cycling.txt  -- 1
Res//test/generic/cycling2.txt  -- 1
Res//test/generic/deathtouch.txt  -- 1
Res//test/generic/doesnotuntap.txt  -- 1
Res//test/generic/doesnotuntap2.txt  -- 1
Res//test/generic/double_strike.txt  -- 1
Res//test/generic/equip_landfall_buff.txt  -- 1
Res//test/generic/equip_reach.txt  -- 1
Res//test/generic/equip_shroud.txt  -- 1
Res//test/generic/equip_shroud2.txt  -- 1
Res//test/generic/equip_wither.txt  -- 1
Res//test/generic/equipment_i252.txt  -- 1
Res//test/generic/exalted.txt  -- 1
Res//test/generic/exalted_i143.txt  -- 1
Res//test/generic/exalted_i310.txt  -- 1
Res//test/generic/fear.txt  -- 1
Res//test/generic/fear_i147.txt  -- 1
Res//test/generic/first_and_double_strike1_i187.txt  -- 1
Res//test/generic/first_and_double_strike2_i187.txt  -- 1
Res//test/generic/first_strike.txt  -- 1
Res//test/generic/first_strike2.txt  -- 1
Res//test/generic/first_strike3.txt  -- 1
Res//test/generic/flanking.txt  -- 1
Res//test/generic/fresh.txt  -- 1
Res//test/generic/hybrid_mana.txt  -- 1
Res//test/generic/hybrid_mana_2.txt  -- 1
Res//test/generic/hybrid_mana_3.txt  -- 1
Res//test/generic/indestructible.txt  -- 1
Res//test/generic/kicker.txt  -- 1
Res//test/generic/kicker2.txt  -- 1
Res//test/generic/landwalk.txt  -- 1
Res//test/generic/legendary.txt  -- 1
Res//test/generic/level_up.txt  -- 1
Res//test/generic/level_up2.txt  -- 1
Res//test/generic/lifelink.txt  -- 1
Res//test/generic/lord_counter.txt  -- 1
Res//test/generic/lord_counter_any.txt  -- 1
Res//test/generic/m10_blockers.txt  -- 1
Res//test/generic/m10_blockers2.txt  -- 1
Res//test/generic/must1.txt  -- 1
Res//test/generic/must2.txt  -- 1
Res//test/generic/nofizzle.txt  -- 1
Res//test/generic/oneblocker.txt  -- 1
Res//test/generic/persist.txt  -- 1
Res//test/generic/persist2.txt  -- 1
Res//test/generic/persist3.txt  -- 1
Res//test/generic/phases.txt  -- 1
Res//test/generic/preventalldamage.txt  -- 1
Res//test/generic/rampage.txt  -- 1
Res//test/generic/rampage2.txt  -- 1
Res//test/generic/rampage3.txt  -- 1
Res//test/generic/rampage_vs_first_strike.txt  -- 1
Res//test/generic/regenerate.txt  -- 1
Res//test/generic/regenerate_wither_i146.txt  -- 1
Res//test/generic/sacrifice.txt  -- 1
Res//test/generic/summoning_sickness.txt  -- 1
Res//test/generic/sunburst.txt  -- 1
Res//test/generic/tap_other_card_as_cost.txt  -- 1
Res//test/generic/targetController_damage.txt  -- 1
Res//test/generic/targetController_life.txt  -- 1
Res//test/generic/targetController_life2.txt  -- 1
Res//test/generic/thisforeach.txt  -- 1
Res//test/generic/tokens.txt  -- 1
Res//test/generic/tokens2.txt  -- 1
Res//test/generic/trample.txt  -- 1
Res//test/generic/trample_vs_indestructible.txt  -- 1
Res//test/generic/trample_vs_multiblock.txt  -- 1
Res//test/generic/triggers_at_movedto_i179.txt  -- 1
Res//test/generic/triggers_attacking.txt  -- 1
Res//test/generic/triggers_blocking.txt  -- 1
Res//test/generic/triggers_combatdamaged_1.txt  -- 1
Res//test/generic/triggers_combatdamaged_2.txt  -- 1
Res//test/generic/triggers_drawn.txt  -- 1
Res//test/generic/triggers_noncombatdamaged.txt  -- 1
Res//test/generic/triggers_untapped.txt  -- 1
Res//test/generic/wither.txt  -- 1
Res//test/ghost_warden.txt  -- 1
Res//test/giant_growth.txt  -- 1
Res//test/giant_growth2.txt  -- 1
Res//test/glen_elendra_archmage_i222.txt  -- 1
Res//test/glimpse_the_unthinkable.txt  -- 1
Res//test/gnarled_effigy.txt  -- 1
Res//test/gnat_alley_creeper1.txt  -- 1
Res//test/gnat_alley_creeper2.txt  -- 1
Res//test/goblin_balloon_brigade.txt  -- 1
Res//test/goblin_balloon_brigade2.txt  -- 1
Res//test/goblin_gardener.txt  -- 1
Res//test/goblin_king.txt  -- 1
Res//test/goblin_lackey1.txt  -- 1
Res//test/goblin_lackey2.txt  -- 1
Res//test/goblin_lackey3.txt  -- 1
Res//test/goblin_lackey4.txt  -- 1
Res//test/goblin_offensive.txt  -- 1
Res//test/goblin_razerunners.txt  -- 1
Res//test/golgari_germination_i153.txt  -- 1
Res//test/gravedigger.txt  -- 1
Res//test/gravity_well.txt  -- 1
Res//test/gravity_well2.txt  -- 1
Res//test/great_defender.txt  -- 1
Res//test/hannas_custody.txt  -- 1
Res//test/harpoon_sniper.txt  -- 1
Res//test/hellfire.txt  -- 1
Res//test/helm_of_kaldra1.txt  -- 1
Res//test/holy_day_i226.txt  -- 1
Res//test/hope_charm_i267.txt  -- 1
Res//test/hopping_automaton_i232.txt  -- 1
Res//test/horned_helm.txt  -- 1
Res//test/howl_from_beyond.txt  -- 1
Res//test/howl_of_the_night_pack.txt  -- 1
Res//test/hunted_dragon.txt  -- 1
Res//test/hunting_pack.txt  -- 1
Res//test/hurricane.txt  -- 1
Res//test/hyalopterous_lemure.txt  -- 1
Res//test/hymn_of_rebirth.txt  -- 1
Res//test/hypnotic_specter.txt  -- 1
Res//test/icatian_priest.txt  -- 1
Res//test/imaginary_pet.txt  -- 1
Res//test/immaculate_magistrate.txt  -- 1
Res//test/incinerate.txt  -- 1
Res//test/instill_energy_i166.txt  -- 1
Res//test/iron_will_i270.txt  -- 1
Res//test/ivy_elemental.txt  -- 1
Res//test/jodahs_avenger.txt  -- 1
Res//test/juggernaut.txt  -- 1
Res//test/jump.txt  -- 1
Res//test/juniper_order_ranger.txt  -- 1
Res//test/karns_touch_i233.txt  -- 1
Res//test/keldon_warlord.txt  -- 1
Res//test/keldon_warlord2.txt  -- 1
Res//test/khalni_hydra.txt  -- 1
Res//test/kird_ape.txt  -- 1
Res//test/kjeldoran_frostbeast1.txt  -- 1
Res//test/kjeldoran_frostbeast2_i167.txt  -- 1
Res//test/knight_captain_of_eos_i294.txt  -- 1
Res//test/knight_captain_of_eos_i294_2.txt  -- 1
Res//test/kormus_bell_i301.txt  -- 1
Res//test/kraken_eye.txt  -- 1
Res//test/kraken_eye2.txt  -- 1
Res//test/kraken_eye3.txt  -- 1
Res//test/kraken_eye4.txt  -- 1
Res//test/krosan_beast.txt  -- 1
Res//test/krosan_beast2.txt  -- 1
Res//test/kudzu.txt  -- 1
Res//test/kudzu2.txt  -- 1
Res//test/kudzu_i168.txt  -- 1
Res//test/leveler.txt  -- 1
Res//test/lhurgoyf.txt  -- 1
Res//test/liability.txt  -- 1
Res//test/lifeforce.txt  -- 1
Res//test/lifetap.txt  -- 1
Res//test/lightmine_field1.txt  -- 1
Res//test/lightmine_field2.txt  -- 1
Res//test/living_artifact_i169.txt  -- 1
Res//test/living_lands.txt  -- 1
Res//test/lord_of_the_pit.txt  -- 1
Res//test/lord_of_the_pit2.txt  -- 1
Res//test/magma_spray.txt  -- 1
Res//test/martial_coup.txt  -- 1
Res//test/martial_coup2.txt  -- 1
Res//test/master_decoy.txt  -- 1
Res//test/master_of_etherium.txt  -- 1
Res//test/masticore.txt  -- 1
Res//test/masticore2.txt  -- 1
Res//test/maze_of_ith.txt  -- 1
Res//test/meekstone.txt  -- 1
Res//test/memnarch.txt  -- 1
Res//test/memory_erosion.txt  -- 1
Res//test/mephidross_vampire.txt  -- 1
Res//test/millstone.txt  -- 1
Res//test/mirri_the_cursed.txt  -- 1
Res//test/mirri_the_cursed2_i284.txt  -- 1
Res//test/misc01.txt  -- 1
Res//test/moat.txt  -- 1
Res//test/mobile_fort.txt  -- 1
Res//test/momir/keldon_warlord.txt  -- 1
Res//test/momir/overcost.txt  -- 1
Res//test/momir/persist_i304.txt  -- 1
Res//test/mortuary.txt  -- 1
Res//test/nantuko_husk.txt  -- 1
Res//test/natural_order.txt  -- 1
Res//test/necrogenesis.txt  -- 1
Res//test/nightmare.txt  -- 1
Res//test/northern_paladin.txt  -- 1
Res//test/northern_paladin2.txt  -- 1
Res//test/ondu_cleric.txt  -- 1
Res//test/orcish_artillery.txt  -- 1
Res//test/orcish_lumberjack.txt  -- 1
Res//test/overrun.txt  -- 1
Res//test/paradise_mantle.txt  -- 1
Res//test/paralysis.txt  -- 1
Res//test/paralysis2.txt  -- 1
Res//test/persuasion.txt  -- 1
Res//test/phytohydra.txt  -- 1
Res//test/plague_rats.txt  -- 1
Res//test/plumes_of_peace_i260.txt  -- 1
Res//test/pouncing_jaguar_i425.txt  -- 1
Res//test/promise_of_bunrei_i305.txt  -- 1
Res//test/prosperity.txt  -- 1
Res//test/protomatter_powder.txt  -- 1
Res//test/prowess_of_the_fair.txt  -- 1
Res//test/prowess_of_the_fair2.txt  -- 1
Res//test/prowess_of_the_fair3.txt  -- 1
Res//test/pygmy_troll.txt  -- 1
Res//test/pyknite_i426.txt  -- 1
Res//test/pyroclasm.txt  -- 1
Res//test/quilled_sliver.txt  -- 1
Res//test/rain_of_filth_i206.txt  -- 1
Res//test/rain_of_filth_i283.txt  -- 1
Res//test/rampant_growth.txt  -- 1
Res//test/rancid_earth_with_threshold.txt  -- 1
Res//test/rancid_earth_without_threshold.txt  -- 1
Res//test/rancor.txt  -- 1
Res//test/ray_of_command.txt  -- 1
Res//test/ray_of_command_i176.txt  -- 1
Res//test/razor_golem.txt  -- 1
Res//test/reclusive_wight.txt  -- 1
Res//test/reclusive_wight2.txt  -- 1
Res//test/recover.txt  -- 1
Res//test/regal_force.txt  -- 1
Res//test/reinforcements_1.txt  -- 1
Res//test/resounding_roar.txt  -- 1
Res//test/resurrection.txt  -- 1
Res//test/resuscitate_i210.txt  -- 1
Res//test/righteous_cause.txt  -- 1
Res//test/river_kelpie2_i335.txt  -- 1
Res//test/rockslide_elemental.txt  -- 1
Res//test/rootwalla.txt  -- 1
Res//test/royal_assassin.txt  -- 1
Res//test/sacred_foundry_i275.txt  -- 1
Res//test/safe_passage.txt  -- 1
Res//test/safehold_duo.txt  -- 1
Res//test/samite_healer.txt  -- 1
Res//test/scourge_of_kher_ridges.txt  -- 1
Res//test/scourge_of_kher_ridges2.txt  -- 1
Res//test/scourglass.txt  -- 1
Res//test/scouts_warning.txt  -- 1
Res//test/scute_mob.txt  -- 1
Res//test/sedge_sliver.txt  -- 1
Res//test/seedcradle_witch.txt  -- 1
Res//test/seismic_assault.txt  -- 1
Res//test/seismic_spike_i191.txt  -- 1
Res//test/selesnya_guildmage.txt  -- 1
Res//test/shard_volley.txt  -- 1
Res//test/shepherd_of_rot.txt  -- 1
Res//test/shivan_hellkite.txt  -- 1
Res//test/shock.txt  -- 1
Res//test/shock2.txt  -- 1
Res//test/siege_gang_commander.txt  -- 1
Res//test/sigil_captain_i467.txt  -- 1
Res//test/silver_seraph_i300.txt  -- 1
Res//test/simic_initiate.txt  -- 1
Res//test/skullcage0_i239.txt  -- 1
Res//test/skullcage1_i239.txt  -- 1
Res//test/skullcage2_i239.txt  -- 1
Res//test/skullcage3_i239.txt  -- 1
Res//test/skullcage4_i239.txt  -- 1
Res//test/skullcage5_i239.txt  -- 1
Res//test/skullcage6_i239.txt  -- 1
Res//test/skullcage7_i239.txt  -- 1
Res//test/skullclamp.txt  -- 1
Res//test/skullclamp2_i439.txt  -- 1
Res//test/slate_of_ancestry.txt  -- 1
Res//test/sleeper_agent.txt  -- 1
Res//test/slith_bloodletter.txt  -- 1
Res//test/sneak_attack.txt  -- 1
Res//test/soulblast.txt  -- 1
Res//test/souls_attendant_i489.txt  -- 1
Res//test/spark_elemental.txt  -- 1
Res//test/sphinx_summoner.txt  -- 1
Res//test/spirit_link.txt  -- 1
Res//test/spitting_earth.txt  -- 1
Res//test/spoils_of_evil.txt  -- 1
Res//test/spore_frog.txt  -- 1
Res//test/stasis.txt  -- 1
Res//test/steelclad_serpent1.txt  -- 1
Res//test/steelclad_serpent2.txt  -- 1
Res//test/stillmoon_cavalier.txt  -- 1
Res//test/stonebrow2.txt  -- 1
Res//test/stonebrow_i159.txt  -- 1
Res//test/stronghold_discipline.txt  -- 1
Res//test/sword_to_plowshares.txt  -- 1
Res//test/sylvan_scrying_i195.txt  -- 1
Res//test/symbiotic_wurm.txt  -- 1
Res//test/tangle_golem.txt  -- 1
Res//test/tanglesap.txt  -- 1
Res//test/telekinetic_sliver.txt  -- 1
Res//test/terror.txt  -- 1
Res//test/terror2.txt  -- 1
Res//test/thallid.txt  -- 1
Res//test/thellon_of_havenwood.txt  -- 1
Res//test/threaten.txt  -- 1
Res//test/throne_of_bone.txt  -- 1
Res//test/thunder-thrash_elder.txt  -- 1
Res//test/titanic_ultimatum.txt  -- 1
Res//test/tolsimir_wolfblood.txt  -- 1
Res//test/torture.txt  -- 1
Res//test/tranquil_domain.txt  -- 1
Res//test/twinstrike.txt  -- 1
Res//test/twinstrike2.txt  -- 1
Res//test/twinstrike3.txt  -- 1
Res//test/twitch.txt  -- 1
Res//test/uncle_istvan.txt  -- 1
Res//test/undermine_i408.txt  -- 1
Res//test/underworld_dreams.txt  -- 1
Res//test/unearth1.txt  -- 1
Res//test/unearth2.txt  -- 1
Res//test/unearth3.txt  -- 1
Res//test/unstable_mutation.txt  -- 1
Res//test/unstable_mutation2.txt  -- 1
Res//test/unwilling_recruit.txt  -- 1
Res//test/urzas_lands.txt  -- 1
Res//test/urzas_lands2.txt  -- 1
Res//test/urzas_mine_i287.txt  -- 1
Res//test/vampire_bats.txt  -- 1
Res//test/vampiric_link.txt  -- 1
Res//test/vine_dryad.txt  -- 1
Res//test/volcanic_eruption.txt  -- 1
Res//test/walking_wall.txt  -- 1
Res//test/wall_of_diffusion.txt  -- 1
Res//test/wall_of_diffusion2.txt  -- 1
Res//test/warren_instigator.txt  -- 1
Res//test/welkin_hawk.txt  -- 1
Res//test/whispers_of_the_muse.txt  -- 1
Res//test/white_knight1.txt  -- 1
Res//test/windswept_heath.txt  -- 1
Res//test/wrath_of_god.txt  -- 1
Res//test/wrath_of_god2.txt  -- 1
Res//test/wreak_havoc.txt  -- 1
Res//test/zombie_master.txt  -- 1
Res//test/zombify.txt  -- 1
Res/22222220.jpg  -- 1
Res/42187t.jpg  -- 1
Res/4514111t.jpg  -- 1
Res/4838511t.jpg  -- 1
Res/4838512t.jpg  -- 1
Res/51613t.jpg  -- 1
Res/89069t.jpg  -- 1
Res/Advisor.wav  -- 1
Res/Ally.wav  -- 1
Res/Angel Token.jpg  -- 1
Res/Angel.wav  -- 1
Res/Ape.wav  -- 1
Res/Archer.wav  -- 1
Res/Assassin.wav  -- 1
Res/Atog.wav  -- 1
Res/Aura.wav  -- 1
Res/Barbarian.wav  -- 1
Res/Basic.wav  -- 1
Res/Bat.wav  -- 1
Res/Bear.jpg  -- 1
Res/Beast Token.jpg  -- 1
Res/Berserker.wav  -- 1
Res/Bird.wav  -- 1
Res/Centaur.wav  -- 1
Res/Cleric.wav  -- 1
Res/Cockatrice.wav  -- 1
Res/Construct.wav  -- 1
Res/Crocodile.wav  -- 1
Res/Cyclops.wav  -- 1
Res/Dauthi.wav  -- 1
Res/Demon.wav  -- 1
Res/Dragon.jpg  -- 1
Res/Drake.wav  -- 1
Res/Druid.wav  -- 1
Res/Dryad.wav  -- 1
Res/Dwarf.wav  -- 1
Res/Efreet.wav  -- 1
Res/Elemental.wav  -- 1
Res/Elephant.wav  -- 1
Res/Elf.wav  -- 1
Res/Elk.wav  -- 1
Res/Equipment.wav  -- 1
Res/Forest.wav  -- 1
Res/Frog.wav  -- 1
Res/Fungus.wav  -- 1
Res/Giant.wav  -- 1
Res/Gnome.wav  -- 1
Res/Golem.wav  -- 1
Res/Horror.wav  -- 1
Res/Horse.wav  -- 1
Res/Hydra.wav  -- 1
Res/Illusion.wav  -- 1
Res/Insect Token.jpg  -- 1
Res/Insect.jpg  -- 1
Res/Insect.wav  -- 1
Res/Island.wav  -- 1
Res/Juggernaut.wav  -- 1
Res/Kithkin.wav  -- 1
Res/Kobold.wav  -- 1
Res/Kor.wav  -- 1
Res/Kraken.wav  -- 1
Res/Lair.wav  -- 1
Res/Land.wav  -- 1
Res/Leech.wav  -- 1
Res/Legendary.wav  -- 1
Res/Leviathan.wav  -- 1
Res/Lhurgoyf.wav  -- 1
Res/Lizard.wav  -- 1
Res/Masticore.wav  -- 1
Res/Mercenary.wav  -- 1
Res/Merfolk.wav  -- 1
Res/Metathran.wav  -- 1
Res/Minion.wav  -- 1
Res/Minotaur.wav  -- 1
Res/Monk.wav  -- 1
Res/Mountain.wav  -- 1
Res/Mutant.wav  -- 1
Res/Myr.wav  -- 1
Res/Nightmare.wav  -- 1
Res/Nothing.wav  -- 1
Res/Ogre.wav  -- 1
Res/Ooze.wav  -- 1
Res/Orc.wav  -- 1
Res/Orgg.wav  -- 1
Res/Ouphe.wav  -- 1
Res/Pirate.wav  -- 1
Res/Plains.wav  -- 1
Res/Plant.wav  -- 1
Res/Rat.wav  -- 1
Res/Rebel.wav  -- 1
Res/Res/ai/baka/deck107.txt  -- 1
Res/Rhino.wav  -- 1
Res/Rogue.wav  -- 1
Res/Samurai.wav  -- 1
Res/Saproling.jpg  -- 1
Res/Saproling.wav  -- 1
Res/Scarecrow.wav  -- 1
Res/Scout.wav  -- 1
Res/Serpent.wav  -- 1
Res/Shade.wav  -- 1
Res/Shaman.wav  -- 1
Res/Shapeshifter.wav  -- 1
Res/Siren.wav  -- 1
Res/Skeleton.wav  -- 1
Res/Slith.wav  -- 1
Res/Sliver.wav  -- 1
Res/Snake.wav  -- 1
Res/Snow.wav  -- 1
Res/Soldier.wav  -- 1
Res/Specter.wav  -- 1
Res/Sphinx.wav  -- 1
Res/Spider.wav  -- 1
Res/Spirit.wav  -- 1
Res/Swamp.wav  -- 1
Res/Thopter.wav  -- 1
Res/Treefolk.wav  -- 1
Res/Vedalken.wav  -- 1
Res/Viashino.wav  -- 1
Res/Wall.wav  -- 1
Res/Warrior.wav  -- 1
Res/Wizard.wav  -- 1
Res/Wolf.wav  -- 1
Res/Wraith.wav  -- 1
Res/affinitygreencreatures.wav  -- 1
Res/ai/baka/avatars/baka.jpg  -- 521
Res/ai/baka/deck1.txt  -- 2
Res/ai/baka/deck10.txt  -- 2
Res/ai/baka/deck100.txt  -- 2
Res/ai/baka/deck101.txt  -- 2
Res/ai/baka/deck102.txt  -- 2
Res/ai/baka/deck103.txt  -- 2
Res/ai/baka/deck104.txt  -- 2
Res/ai/baka/deck105.txt  -- 2
Res/ai/baka/deck106.txt  -- 2
Res/ai/baka/deck107.txt  -- 1
Res/ai/baka/deck11.txt  -- 2
Res/ai/baka/deck12.txt  -- 2
Res/ai/baka/deck13.txt  -- 2
Res/ai/baka/deck14.txt  -- 2
Res/ai/baka/deck15.txt  -- 2
Res/ai/baka/deck16.txt  -- 2
Res/ai/baka/deck17.txt  -- 2
Res/ai/baka/deck18.txt  -- 2
Res/ai/baka/deck19.txt  -- 2
Res/ai/baka/deck2.txt  -- 2
Res/ai/baka/deck20.txt  -- 2
Res/ai/baka/deck21.txt  -- 2
Res/ai/baka/deck22.txt  -- 2
Res/ai/baka/deck23.txt  -- 2
Res/ai/baka/deck24.txt  -- 2
Res/ai/baka/deck25.txt  -- 2
Res/ai/baka/deck26.txt  -- 2
Res/ai/baka/deck27.txt  -- 2
Res/ai/baka/deck28.txt  -- 2
Res/ai/baka/deck29.txt  -- 2
Res/ai/baka/deck3.txt  -- 2
Res/ai/baka/deck30.txt  -- 2
Res/ai/baka/deck31.txt  -- 2
Res/ai/baka/deck32.txt  -- 2
Res/ai/baka/deck33.txt  -- 2
Res/ai/baka/deck34.txt  -- 2
Res/ai/baka/deck35.txt  -- 2
Res/ai/baka/deck36.txt  -- 2
Res/ai/baka/deck37.txt  -- 2
Res/ai/baka/deck38.txt  -- 2
Res/ai/baka/deck39.txt  -- 2
Res/ai/baka/deck4.txt  -- 2
Res/ai/baka/deck40.txt  -- 2
Res/ai/baka/deck41.txt  -- 2
Res/ai/baka/deck42.txt  -- 2
Res/ai/baka/deck43.txt  -- 2
Res/ai/baka/deck44.txt  -- 2
Res/ai/baka/deck45.txt  -- 2
Res/ai/baka/deck46.txt  -- 2
Res/ai/baka/deck47.txt  -- 2
Res/ai/baka/deck48.txt  -- 2
Res/ai/baka/deck49.txt  -- 2
Res/ai/baka/deck5.txt  -- 2
Res/ai/baka/deck50.txt  -- 2
Res/ai/baka/deck51.txt  -- 2
Res/ai/baka/deck52.txt  -- 2
Res/ai/baka/deck53.txt  -- 2
Res/ai/baka/deck54.txt  -- 2
Res/ai/baka/deck55.txt  -- 2
Res/ai/baka/deck56.txt  -- 2
Res/ai/baka/deck57.txt  -- 2
Res/ai/baka/deck58.txt  -- 2
Res/ai/baka/deck59.txt  -- 2
Res/ai/baka/deck6.txt  -- 2
Res/ai/baka/deck60.txt  -- 2
Res/ai/baka/deck61.txt  -- 2
Res/ai/baka/deck62.txt  -- 2
Res/ai/baka/deck63.txt  -- 2
Res/ai/baka/deck64.txt  -- 2
Res/ai/baka/deck65.txt  -- 2
Res/ai/baka/deck66.txt  -- 2
Res/ai/baka/deck67.txt  -- 2
Res/ai/baka/deck68.txt  -- 2
Res/ai/baka/deck69.txt  -- 2
Res/ai/baka/deck7.txt  -- 2
Res/ai/baka/deck70.txt  -- 2
Res/ai/baka/deck71.txt  -- 2
Res/ai/baka/deck72.txt  -- 2
Res/ai/baka/deck73.txt  -- 2
Res/ai/baka/deck74.txt  -- 2
Res/ai/baka/deck75.txt  -- 2
Res/ai/baka/deck76.txt  -- 2
Res/ai/baka/deck77.txt  -- 2
Res/ai/baka/deck78.txt  -- 2
Res/ai/baka/deck79.txt  -- 2
Res/ai/baka/deck8.txt  -- 2
Res/ai/baka/deck80.txt  -- 2
Res/ai/baka/deck81.txt  -- 2
Res/ai/baka/deck82.txt  -- 2
Res/ai/baka/deck83.txt  -- 2
Res/ai/baka/deck84.txt  -- 2
Res/ai/baka/deck85.txt  -- 2
Res/ai/baka/deck86.txt  -- 2
Res/ai/baka/deck87.txt  -- 2
Res/ai/baka/deck88.txt  -- 2
Res/ai/baka/deck89.txt  -- 2
Res/ai/baka/deck9.txt  -- 2
Res/ai/baka/deck90.txt  -- 2
Res/ai/baka/deck91.txt  -- 2
Res/ai/baka/deck92.txt  -- 2
Res/ai/baka/deck93.txt  -- 2
Res/ai/baka/deck94.txt  -- 2
Res/ai/baka/deck95.txt  -- 2
Res/ai/baka/deck96.txt  -- 2
Res/ai/baka/deck97.txt  -- 2
Res/ai/baka/deck98.txt  -- 2
Res/ai/baka/deck99.txt  -- 2
Res/ai/baka/stats/testsuite.stats  -- 1042
Res/defender.wav  -- 1
Res/fear.wav  -- 1
Res/first strike.wav  -- 1
Res/flash.wav  -- 1
Res/forestwalk.wav  -- 1
Res/graphics/BattleIcon.png  -- 1
Res/graphics/DefenderIcon.png  -- 1
Res/graphics/Ok.png  -- 521
Res/graphics/artifact_thumb.jpg  -- 34
Res/graphics/black_thumb.jpg  -- 1
Res/graphics/button_shoulder.png  -- 2
Res/graphics/f3.png  -- 1
Res/graphics/gold.png  -- 1
Res/graphics/gold_thumb.jpg  -- 1
Res/graphics/goldglow.png  -- 1
Res/graphics/green.jpg  -- 1
Res/graphics/green_thumb.jpg  -- 5
Res/graphics/magic.png  -- 1
Res/graphics/mana.psi  -- 1
Res/graphics/manablack.psi  -- 1
Res/graphics/manablue.psi  -- 1
Res/graphics/managreen.psi  -- 1
Res/graphics/manared.psi  -- 1
Res/graphics/manawhite.psi  -- 1
Res/graphics/menuicons.png  -- 1
Res/graphics/menuside.png  -- 1
Res/graphics/menutitle.png  -- 2
Res/graphics/particle1.psi  -- 1
Res/graphics/particle2.psi  -- 1
Res/graphics/particle3.psi  -- 1
Res/graphics/particle4.psi  -- 1
Res/graphics/particle5.psi  -- 1
Res/graphics/particles.png  -- 1
Res/graphics/phasebar.png  -- 1
Res/graphics/shadow.png  -- 1
Res/graphics/simon.png  -- 1
Res/graphics/smallface.png  -- 1
Res/graphics/spade_ul.png  -- 1
Res/graphics/spade_ur.png  -- 1
Res/graphics/splash.jpg  -- 2
Res/graphics/stars.psi  -- 1
Res/graphics/style.txt  -- 1
Res/graphics/wallpapers.txt  -- 1
Res/graphics/wallpapers/final_saga2.jpg  -- 1
Res/graphics/white_thumb.jpg  -- 1
Res/haste.wav  -- 1
Res/lang/dontcare.txt  -- 2
Res/lang/en.txt  -- 3
Res/lang/en_cards.txt  -- 1
Res/lang/en_decks.txt  -- 1
Res/lifelink.wav  -- 1
Res/ms0:/PSP/wagic_res/graphics/simon.dat  -- 1
Res/ms0:/wagic_res/graphics/simon.dat  -- 1
Res/mustattack.wav  -- 1
Res/nofizzle.wav  -- 1
Res/none  -- 1
Res/persist.wav  -- 1
Res/player/baka.jpg  -- 521
Res/player/collection.dat  -- 4
Res/player/data.dat  -- 2
Res/player/deck1.txt  -- 2
Res/player/deck2.txt  -- 2
Res/player/deck3.txt  -- 2
Res/player/deck4.txt  -- 2
Res/player/deck5.txt  -- 2
Res/player/deck6.txt  -- 2
Res/player/options.txt  -- 2
Res/player/stats/player_deck1.txt  -- 4
Res/player/stats/player_deck2.txt  -- 4
Res/player/stats/player_deck3.txt  -- 4
Res/player/stats/player_deck4.txt  -- 4
Res/player/stats/player_deck5.txt  -- 4
Res/player/stats/player_deck6.txt  -- 4
Res/player/tasks.dat  -- 2
Res/protection from black.wav  -- 1
Res/protection from blue.wav  -- 1
Res/protection from white.wav  -- 1
Res/reach.wav  -- 1
Res/reachshadow.wav  -- 1
Res/rules/testsuite.txt  -- 1
Res/sets//../_cards.dat  -- 1
Res/sets//./_cards.dat  -- 1
Res/sets//.svn/_cards.dat  -- 1
Res/sets//10E/_cards.dat  -- 2
Res/sets//1111114t.jpg  -- 1
Res/sets//1924t.jpg  -- 1
Res/sets//220579112.jpg  -- 1
Res/sets//2ED/_cards.dat  -- 2
Res/sets//483851111t.jpg  -- 1
Res/sets//4ED/_cards.dat  -- 2
Res/sets//5DN/_cards.dat  -- 2
Res/sets//5ED/_cards.dat  -- 2
Res/sets//6ED/_cards.dat  -- 2
Res/sets//7ED/_cards.dat  -- 2
Res/sets//8ED/_cards.dat  -- 2
Res/sets//9ED/_cards.dat  -- 2
Res/sets//ALA/_cards.dat  -- 2
Res/sets//ALL/_cards.dat  -- 2
Res/sets//APC/_cards.dat  -- 2
Res/sets//ARB/_cards.dat  -- 2
Res/sets//ARC/_cards.dat  -- 2
Res/sets//ARN/_cards.dat  -- 2
Res/sets//ATQ/_cards.dat  -- 2
Res/sets//BOK/_cards.dat  -- 2
Res/sets//BRB/_cards.dat  -- 2
Res/sets//BTD/_cards.dat  -- 2
Res/sets//Brainstorm's 2nd MoveToTop.jpg  -- 1
Res/sets//CFX/_cards.dat  -- 2
Res/sets//CHK/_cards.dat  -- 2
Res/sets//CHR/_cards.dat  -- 2
Res/sets//CSP/_cards.dat  -- 2
Res/sets//DIS/_cards.dat  -- 2
Res/sets//DRK/_cards.dat  -- 2
Res/sets//DST/_cards.dat  -- 2
Res/sets//DVD/_cards.dat  -- 2
Res/sets//EVE/_cards.dat  -- 2
Res/sets//EVG/_cards.dat  -- 2
Res/sets//EVT/_cards.dat  -- 2
Res/sets//EXO/_cards.dat  -- 2
Res/sets//FEM/_cards.dat  -- 2
Res/sets//FUT/_cards.dat  -- 2
Res/sets//FVD/_cards.dat  -- 2
Res/sets//FVE/_cards.dat  -- 2
Res/sets//FVR/_cards.dat  -- 2
Res/sets//GPT/_cards.dat  -- 2
Res/sets//GVL/_cards.dat  -- 2
Res/sets//HML/_cards.dat  -- 2
Res/sets//HOP/_cards.dat  -- 2
Res/sets//ICE/_cards.dat  -- 2
Res/sets//INV/_cards.dat  -- 2
Res/sets//JUD/_cards.dat  -- 2
Res/sets//JVC/_cards.dat  -- 2
Res/sets//LEA/_cards.dat  -- 2
Res/sets//LEB/_cards.dat  -- 2
Res/sets//LEG/_cards.dat  -- 2
Res/sets//LGN/_cards.dat  -- 2
Res/sets//LRW/_cards.dat  -- 2
Res/sets//M10/_cards.dat  -- 2
Res/sets//M11/_cards.dat  -- 2
Res/sets//ME2/_cards.dat  -- 2
Res/sets//ME3/_cards.dat  -- 2
Res/sets//ME4/_cards.dat  -- 2
Res/sets//MED/_cards.dat  -- 2
Res/sets//MIR/_cards.dat  -- 2
Res/sets//MOR/_cards.dat  -- 2
Res/sets//MRD/_cards.dat  -- 2
Res/sets//MRQ/_cards.dat  -- 2
Res/sets//NMS/_cards.dat  -- 2
Res/sets//ODY/_cards.dat  -- 2
Res/sets//ONS/_cards.dat  -- 2
Res/sets//One Dozen Eyes Entwine.jpg  -- 1
Res/sets//P02/_cards.dat  -- 2
Res/sets//PCY/_cards.dat  -- 2
Res/sets//PD2/_cards.dat  -- 2
Res/sets//PDS/_cards.dat  -- 2
Res/sets//PLC/_cards.dat  -- 2
Res/sets//PLS/_cards.dat  -- 2
Res/sets//POR/_cards.dat  -- 2
Res/sets//PPR/_cards.dat  -- 2
Res/sets//PTK/_cards.dat  -- 2
Res/sets//PVC/_cards.dat  -- 2
Res/sets//RAV/_cards.dat  -- 2
Res/sets//ROE/_cards.dat  -- 2
Res/sets//RV/_cards.dat  -- 2
Res/sets//S00/_cards.dat  -- 2
Res/sets//S99/_cards.dat  -- 2
Res/sets//SCG/_cards.dat  -- 2
Res/sets//SHM/_cards.dat  -- 2
Res/sets//SOK/_cards.dat  -- 2
Res/sets//SOM/_cards.dat  -- 2
Res/sets//STH/_cards.dat  -- 2
Res/sets//Saproling.jpg  -- 1
Res/sets//TMP/_cards.dat  -- 2
Res/sets//TOR/_cards.dat  -- 2
Res/sets//TSB/_cards.dat  -- 2
Res/sets//TSP/_cards.dat  -- 2
Res/sets//UDS/_cards.dat  -- 2
Res/sets//UGL/_cards.dat  -- 2
Res/sets//ULG/_cards.dat  -- 2
Res/sets//UNH/_cards.dat  -- 2
Res/sets//USG/_cards.dat  -- 2
Res/sets//VIS/_cards.dat  -- 2
Res/sets//WTH/_cards.dat  -- 2
Res/sets//WWK/_cards.dat  -- 2
Res/sets//ZEN/_cards.dat  -- 2
Res/sets//Zombie.jpg  -- 1
Res/sets//artifact.jpg/_cards.dat  -- 1
Res/sets//artifact_thumb.jpg/_cards.dat  -- 1
Res/sets//back.jpg/_cards.dat  -- 1
Res/sets//back_thumb.jpg/_cards.dat  -- 1
Res/sets//black.jpg/_cards.dat  -- 1
Res/sets//black_thumb.jpg/_cards.dat  -- 1
Res/sets//blue.jpg/_cards.dat  -- 1
Res/sets//blue_thumb.jpg/_cards.dat  -- 1
Res/sets//gold.jpg/_cards.dat  -- 1
Res/sets//gold_thumb.jpg/_cards.dat  -- 1
Res/sets//green.jpg/_cards.dat  -- 1
Res/sets//green_thumb.jpg/_cards.dat  -- 1
Res/sets//land.jpg/_cards.dat  -- 1
Res/sets//land_thumb.jpg/_cards.dat  -- 1
Res/sets//mtg_todo.dat/_cards.dat  -- 1
Res/sets//primitives/_cards.dat  -- 1
Res/sets//red.jpg/_cards.dat  -- 1
Res/sets//red_thumb.jpg/_cards.dat  -- 1
Res/sets//scheme_todo.dat/_cards.dat  -- 1
Res/sets//thumbnails/1111114t.jpg  -- 1
Res/sets//thumbnails/1111135t.jpg  -- 1
Res/sets//thumbnails/1924t.jpg  -- 1
Res/sets//thumbnails/220579111t.jpg  -- 1
Res/sets//thumbnails/220579112.jpg  -- 1
Res/sets//thumbnails/220579112t.jpg  -- 1
Res/sets//thumbnails/22222223.jpg  -- 1
Res/sets//thumbnails/22222226.jpg  -- 1
Res/sets//thumbnails/483851111t.jpg  -- 1
Res/sets//thumbnails/Brainstorm's 2nd MoveToTop.jpg  -- 1
Res/sets//thumbnails/Devour 3 (Mechanic).jpg  -- 1
Res/sets//thumbnails/Devour Sac 3.jpg  -- 1
Res/sets//thumbnails/One Dozen Eyes Entwine.jpg  -- 1
Res/sets//thumbnails/Reinforcements' 3rd Return.jpg  -- 1
Res/sets//thumbnails/Saproling.jpg  -- 1
Res/sets//thumbnails/ZombInfs First Discard.jpg  -- 1
Res/sets//thumbnails/ZombInfs Second Discard.jpg  -- 1
Res/sets//thumbnails/Zombie.jpg  -- 1
Res/sets//white.jpg/_cards.dat  -- 1
Res/sets//white_thumb.jpg/_cards.dat  -- 1
Res/sets/artifact_thumb.jpg  -- 34
Res/sets/black_thumb.jpg  -- 1
Res/sets/gold_thumb.jpg  -- 1
Res/sets/green.jpg  -- 1
Res/sets/green_thumb.jpg  -- 5
Res/sets/primitives/.  -- 1
Res/sets/primitives/..  -- 1
Res/sets/primitives/.svn  -- 1
Res/sets/primitives/borderline.txt  -- 2
Res/sets/primitives/mtg.txt  -- 2
Res/sets/splash.jpg  -- 1
Res/sets/style.txt  -- 1
Res/sets/white_thumb.jpg  -- 1
Res/settings/options.txt  -- 1
Res/settings/prices.dat  -- 1
Res/shadow.wav  -- 1
Res/sound/Track0.mp3  -- 3
Res/sound/Track1.mp3  -- 2
Res/sound/none  -- 1
Res/sound/sfx/Advisor.wav  -- 1
Res/sound/sfx/Ally.wav  -- 1
Res/sound/sfx/Angel.wav  -- 1
Res/sound/sfx/Ape.wav  -- 1
Res/sound/sfx/Archer.wav  -- 1
Res/sound/sfx/Artifact.wav  -- 1
Res/sound/sfx/Assassin.wav  -- 1
Res/sound/sfx/Atog.wav  -- 1
Res/sound/sfx/Aura.wav  -- 1
Res/sound/sfx/Barbarian.wav  -- 1
Res/sound/sfx/Basic.wav  -- 1
Res/sound/sfx/Bat.wav  -- 1
Res/sound/sfx/Bear.wav  -- 1
Res/sound/sfx/Beast.wav  -- 1
Res/sound/sfx/Berserker.wav  -- 1
Res/sound/sfx/Bird.wav  -- 1
Res/sound/sfx/Cat.wav  -- 1
Res/sound/sfx/Centaur.wav  -- 1
Res/sound/sfx/Cleric.wav  -- 1
Res/sound/sfx/Cockatrice.wav  -- 1
Res/sound/sfx/Construct.wav  -- 1
Res/sound/sfx/Creature.wav  -- 1
Res/sound/sfx/Crocodile.wav  -- 1
Res/sound/sfx/Cyclops.wav  -- 1
Res/sound/sfx/Dauthi.wav  -- 1
Res/sound/sfx/Demon.wav  -- 1
Res/sound/sfx/Dragon.wav  -- 1
Res/sound/sfx/Drake.wav  -- 1
Res/sound/sfx/Druid.wav  -- 1
Res/sound/sfx/Dryad.wav  -- 1
Res/sound/sfx/Dwarf.wav  -- 1
Res/sound/sfx/Efreet.wav  -- 1
Res/sound/sfx/Elemental.wav  -- 1
Res/sound/sfx/Elephant.wav  -- 1
Res/sound/sfx/Elf.wav  -- 1
Res/sound/sfx/Elk.wav  -- 1
Res/sound/sfx/Enchantment.wav  -- 1
Res/sound/sfx/Equipment.wav  -- 1
Res/sound/sfx/Faerie.wav  -- 1
Res/sound/sfx/Forest.wav  -- 1
Res/sound/sfx/Frog.wav  -- 1
Res/sound/sfx/Fungus.wav  -- 1
Res/sound/sfx/Giant.wav  -- 1
Res/sound/sfx/Gnome.wav  -- 1
Res/sound/sfx/Goblin.wav  -- 1
Res/sound/sfx/Golem.wav  -- 1
Res/sound/sfx/Horror.wav  -- 1
Res/sound/sfx/Horse.wav  -- 1
Res/sound/sfx/Human.wav  -- 1
Res/sound/sfx/Hydra.wav  -- 1
Res/sound/sfx/Illusion.wav  -- 1
Res/sound/sfx/Imp.wav  -- 1
Res/sound/sfx/Insect.wav  -- 1
Res/sound/sfx/Instant.wav  -- 1
Res/sound/sfx/Island.wav  -- 1
Res/sound/sfx/Juggernaut.wav  -- 1
Res/sound/sfx/Kithkin.wav  -- 1
Res/sound/sfx/Knight.wav  -- 1
Res/sound/sfx/Kobold.wav  -- 1
Res/sound/sfx/Kor.wav  -- 1
Res/sound/sfx/Kraken.wav  -- 1
Res/sound/sfx/Lair.wav  -- 1
Res/sound/sfx/Land.wav  -- 1
Res/sound/sfx/Leech.wav  -- 1
Res/sound/sfx/Legendary.wav  -- 1
Res/sound/sfx/Leviathan.wav  -- 1
Res/sound/sfx/Lhurgoyf.wav  -- 1
Res/sound/sfx/Lizard.wav  -- 1
Res/sound/sfx/Masticore.wav  -- 1
Res/sound/sfx/Mercenary.wav  -- 1
Res/sound/sfx/Merfolk.wav  -- 1
Res/sound/sfx/Metathran.wav  -- 1
Res/sound/sfx/Minion.wav  -- 1
Res/sound/sfx/Minotaur.wav  -- 1
Res/sound/sfx/Monk.wav  -- 1
Res/sound/sfx/Mountain.wav  -- 1
Res/sound/sfx/Mutant.wav  -- 1
Res/sound/sfx/Myr.wav  -- 1
Res/sound/sfx/Nightmare.wav  -- 1
Res/sound/sfx/Nothing.wav  -- 1
Res/sound/sfx/Ogre.wav  -- 1
Res/sound/sfx/Ooze.wav  -- 1
Res/sound/sfx/Orc.wav  -- 1
Res/sound/sfx/Orgg.wav  -- 1
Res/sound/sfx/Ouphe.wav  -- 1
Res/sound/sfx/Pirate.wav  -- 1
Res/sound/sfx/Plains.wav  -- 1
Res/sound/sfx/Plant.wav  -- 1
Res/sound/sfx/Rat.wav  -- 1
Res/sound/sfx/Rebel.wav  -- 1
Res/sound/sfx/Rhino.wav  -- 1
Res/sound/sfx/Rogue.wav  -- 1
Res/sound/sfx/Samurai.wav  -- 1
Res/sound/sfx/Saproling.wav  -- 1
Res/sound/sfx/Scarecrow.wav  -- 1
Res/sound/sfx/Scout.wav  -- 1
Res/sound/sfx/Serpent.wav  -- 1
Res/sound/sfx/Shade.wav  -- 1
Res/sound/sfx/Shaman.wav  -- 1
Res/sound/sfx/Shapeshifter.wav  -- 1
Res/sound/sfx/Siren.wav  -- 1
Res/sound/sfx/Skeleton.wav  -- 1
Res/sound/sfx/Slith.wav  -- 1
Res/sound/sfx/Sliver.wav  -- 1
Res/sound/sfx/Snake.wav  -- 1
Res/sound/sfx/Snow.wav  -- 1
Res/sound/sfx/Soldier.wav  -- 1
Res/sound/sfx/Sorcery.wav  -- 1
Res/sound/sfx/Specter.wav  -- 1
Res/sound/sfx/Sphinx.wav  -- 1
Res/sound/sfx/Spider.wav  -- 1
Res/sound/sfx/Spirit.wav  -- 1
Res/sound/sfx/Swamp.wav  -- 1
Res/sound/sfx/Thopter.wav  -- 1
Res/sound/sfx/Treefolk.wav  -- 1
Res/sound/sfx/Troll.wav  -- 1
Res/sound/sfx/Vampire.wav  -- 1
Res/sound/sfx/Vedalken.wav  -- 1
Res/sound/sfx/Viashino.wav  -- 1
Res/sound/sfx/Wall.wav  -- 1
Res/sound/sfx/Warrior.wav  -- 1
Res/sound/sfx/Wizard.wav  -- 1
Res/sound/sfx/Wolf.wav  -- 1
Res/sound/sfx/Wraith.wav  -- 1
Res/sound/sfx/Wurm.wav  -- 1
Res/sound/sfx/Zombie.wav  -- 1
Res/sound/sfx/affinitygreencreatures.wav  -- 1
Res/sound/sfx/defender.wav  -- 1
Res/sound/sfx/fear.wav  -- 1
Res/sound/sfx/first strike.wav  -- 1
Res/sound/sfx/flash.wav  -- 1
Res/sound/sfx/flying.wav  -- 1
Res/sound/sfx/forestwalk.wav  -- 1
Res/sound/sfx/graveyard.wav  -- 1
Res/sound/sfx/haste.wav  -- 1
Res/sound/sfx/lifelink.wav  -- 1
Res/sound/sfx/mana.wav  -- 1
Res/sound/sfx/mustattack.wav  -- 1
Res/sound/sfx/nofizzle.wav  -- 1
Res/sound/sfx/persist.wav  -- 1
Res/sound/sfx/protection from black.wav  -- 1
Res/sound/sfx/protection from blue.wav  -- 1
Res/sound/sfx/protection from white.wav  -- 1
Res/sound/sfx/reach.wav  -- 1
Res/sound/sfx/reachshadow.wav  -- 1
Res/sound/sfx/shadow.wav  -- 1
Res/sound/sfx/storm.wav  -- 1
Res/sound/sfx/swampwalk.wav  -- 1
Res/sound/sfx/trample.wav  -- 1
Res/sound/sfx/vigor.wav  -- 1
Res/sound/sfx/wither.wav  -- 1
Res/splash.jpg  -- 1
Res/storm.wav  -- 1
Res/style.txt  -- 1
Res/swampwalk.wav  -- 1
Res/test/_tests.txt  -- 1
Res/testsuite.txt  -- 1
Res/themes/White Shrine/BattleIcon.png  -- 1
Res/themes/White Shrine/DefenderIcon.png  -- 1
Res/themes/White Shrine/Ok.png  -- 521
Res/themes/White Shrine/artifact_thumb.jpg  -- 34
Res/themes/White Shrine/back.jpg  -- 1
Res/themes/White Shrine/back_thumb.jpg  -- 1
Res/themes/White Shrine/backdrop.jpg  -- 1
Res/themes/White Shrine/baka.jpg  -- 521
Res/themes/White Shrine/black_thumb.jpg  -- 1
Res/themes/White Shrine/button_shoulder.png  -- 2
Res/themes/White Shrine/f3.png  -- 1
Res/themes/White Shrine/gold.png  -- 1
Res/themes/White Shrine/gold_thumb.jpg  -- 1
Res/themes/White Shrine/goldglow.png  -- 1
Res/themes/White Shrine/green.jpg  -- 1
Res/themes/White Shrine/green_thumb.jpg  -- 5
Res/themes/White Shrine/handback.png  -- 1
Res/themes/White Shrine/magic.png  -- 1
Res/themes/White Shrine/mana.psi  -- 1
Res/themes/White Shrine/manablack.psi  -- 1
Res/themes/White Shrine/manablue.psi  -- 1
Res/themes/White Shrine/managreen.psi  -- 1
Res/themes/White Shrine/manared.psi  -- 1
Res/themes/White Shrine/manawhite.psi  -- 1
Res/themes/White Shrine/menuicons.png  -- 1
Res/themes/White Shrine/menuside.png  -- 1
Res/themes/White Shrine/menutitle.png  -- 2
Res/themes/White Shrine/particle1.psi  -- 1
Res/themes/White Shrine/particle2.psi  -- 1
Res/themes/White Shrine/particle3.psi  -- 1
Res/themes/White Shrine/particle4.psi  -- 1
Res/themes/White Shrine/particle5.psi  -- 1
Res/themes/White Shrine/particles.png  -- 1
Res/themes/White Shrine/phasebar.png  -- 1
Res/themes/White Shrine/shadow.png  -- 1
Res/themes/White Shrine/simon.png  -- 1
Res/themes/White Shrine/smallface.png  -- 1
Res/themes/White Shrine/sound/Track0.mp3  -- 2
Res/themes/White Shrine/sound/Track1.mp3  -- 1
Res/themes/White Shrine/sound/none  -- 1
Res/themes/White Shrine/sound/sfx/Advisor.wav  -- 1
Res/themes/White Shrine/sound/sfx/Ally.wav  -- 1
Res/themes/White Shrine/sound/sfx/Angel.wav  -- 1
Res/themes/White Shrine/sound/sfx/Ape.wav  -- 1
Res/themes/White Shrine/sound/sfx/Archer.wav  -- 1
Res/themes/White Shrine/sound/sfx/Artifact.wav  -- 1
Res/themes/White Shrine/sound/sfx/Assassin.wav  -- 1
Res/themes/White Shrine/sound/sfx/Atog.wav  -- 1
Res/themes/White Shrine/sound/sfx/Aura.wav  -- 1
Res/themes/White Shrine/sound/sfx/Barbarian.wav  -- 1
Res/themes/White Shrine/sound/sfx/Basic.wav  -- 1
Res/themes/White Shrine/sound/sfx/Bat.wav  -- 1
Res/themes/White Shrine/sound/sfx/Bear.wav  -- 1
Res/themes/White Shrine/sound/sfx/Beast.wav  -- 1
Res/themes/White Shrine/sound/sfx/Berserker.wav  -- 1
Res/themes/White Shrine/sound/sfx/Bird.wav  -- 1
Res/themes/White Shrine/sound/sfx/Cat.wav  -- 1
Res/themes/White Shrine/sound/sfx/Centaur.wav  -- 1
Res/themes/White Shrine/sound/sfx/Cleric.wav  -- 1
Res/themes/White Shrine/sound/sfx/Cockatrice.wav  -- 1
Res/themes/White Shrine/sound/sfx/Construct.wav  -- 1
Res/themes/White Shrine/sound/sfx/Creature.wav  -- 1
Res/themes/White Shrine/sound/sfx/Crocodile.wav  -- 1
Res/themes/White Shrine/sound/sfx/Cyclops.wav  -- 1
Res/themes/White Shrine/sound/sfx/Dauthi.wav  -- 1
Res/themes/White Shrine/sound/sfx/Demon.wav  -- 1
Res/themes/White Shrine/sound/sfx/Dragon.wav  -- 1
Res/themes/White Shrine/sound/sfx/Drake.wav  -- 1
Res/themes/White Shrine/sound/sfx/Druid.wav  -- 1
Res/themes/White Shrine/sound/sfx/Dryad.wav  -- 1
Res/themes/White Shrine/sound/sfx/Dwarf.wav  -- 1
Res/themes/White Shrine/sound/sfx/Efreet.wav  -- 1
Res/themes/White Shrine/sound/sfx/Elemental.wav  -- 1
Res/themes/White Shrine/sound/sfx/Elephant.wav  -- 1
Res/themes/White Shrine/sound/sfx/Elf.wav  -- 1
Res/themes/White Shrine/sound/sfx/Elk.wav  -- 1
Res/themes/White Shrine/sound/sfx/Enchantment.wav  -- 1
Res/themes/White Shrine/sound/sfx/Equipment.wav  -- 1
Res/themes/White Shrine/sound/sfx/Faerie.wav  -- 1
Res/themes/White Shrine/sound/sfx/Forest.wav  -- 1
Res/themes/White Shrine/sound/sfx/Frog.wav  -- 1
Res/themes/White Shrine/sound/sfx/Fungus.wav  -- 1
Res/themes/White Shrine/sound/sfx/Giant.wav  -- 1
Res/themes/White Shrine/sound/sfx/Gnome.wav  -- 1
Res/themes/White Shrine/sound/sfx/Goblin.wav  -- 1
Res/themes/White Shrine/sound/sfx/Golem.wav  -- 1
Res/themes/White Shrine/sound/sfx/Horror.wav  -- 1
Res/themes/White Shrine/sound/sfx/Horse.wav  -- 1
Res/themes/White Shrine/sound/sfx/Human.wav  -- 1
Res/themes/White Shrine/sound/sfx/Hydra.wav  -- 1
Res/themes/White Shrine/sound/sfx/Illusion.wav  -- 1
Res/themes/White Shrine/sound/sfx/Imp.wav  -- 1
Res/themes/White Shrine/sound/sfx/Insect.wav  -- 1
Res/themes/White Shrine/sound/sfx/Instant.wav  -- 1
Res/themes/White Shrine/sound/sfx/Island.wav  -- 1
Res/themes/White Shrine/sound/sfx/Juggernaut.wav  -- 1
Res/themes/White Shrine/sound/sfx/Kithkin.wav  -- 1
Res/themes/White Shrine/sound/sfx/Knight.wav  -- 1
Res/themes/White Shrine/sound/sfx/Kobold.wav  -- 1
Res/themes/White Shrine/sound/sfx/Kor.wav  -- 1
Res/themes/White Shrine/sound/sfx/Kraken.wav  -- 1
Res/themes/White Shrine/sound/sfx/Lair.wav  -- 1
Res/themes/White Shrine/sound/sfx/Land.wav  -- 1
Res/themes/White Shrine/sound/sfx/Leech.wav  -- 1
Res/themes/White Shrine/sound/sfx/Legendary.wav  -- 1
Res/themes/White Shrine/sound/sfx/Leviathan.wav  -- 1
Res/themes/White Shrine/sound/sfx/Lhurgoyf.wav  -- 1
Res/themes/White Shrine/sound/sfx/Lizard.wav  -- 1
Res/themes/White Shrine/sound/sfx/Masticore.wav  -- 1
Res/themes/White Shrine/sound/sfx/Mercenary.wav  -- 1
Res/themes/White Shrine/sound/sfx/Merfolk.wav  -- 1
Res/themes/White Shrine/sound/sfx/Metathran.wav  -- 1
Res/themes/White Shrine/sound/sfx/Minion.wav  -- 1
Res/themes/White Shrine/sound/sfx/Minotaur.wav  -- 1
Res/themes/White Shrine/sound/sfx/Monk.wav  -- 1
Res/themes/White Shrine/sound/sfx/Mountain.wav  -- 1
Res/themes/White Shrine/sound/sfx/Mutant.wav  -- 1
Res/themes/White Shrine/sound/sfx/Myr.wav  -- 1
Res/themes/White Shrine/sound/sfx/Nightmare.wav  -- 1
Res/themes/White Shrine/sound/sfx/Nothing.wav  -- 1
Res/themes/White Shrine/sound/sfx/Ogre.wav  -- 1
Res/themes/White Shrine/sound/sfx/Ooze.wav  -- 1
Res/themes/White Shrine/sound/sfx/Orc.wav  -- 1
Res/themes/White Shrine/sound/sfx/Orgg.wav  -- 1
Res/themes/White Shrine/sound/sfx/Ouphe.wav  -- 1
Res/themes/White Shrine/sound/sfx/Pirate.wav  -- 1
Res/themes/White Shrine/sound/sfx/Plains.wav  -- 1
Res/themes/White Shrine/sound/sfx/Plant.wav  -- 1
Res/themes/White Shrine/sound/sfx/Rat.wav  -- 1
Res/themes/White Shrine/sound/sfx/Rebel.wav  -- 1
Res/themes/White Shrine/sound/sfx/Rhino.wav  -- 1
Res/themes/White Shrine/sound/sfx/Rogue.wav  -- 1
Res/themes/White Shrine/sound/sfx/Samurai.wav  -- 1
Res/themes/White Shrine/sound/sfx/Saproling.wav  -- 1
Res/themes/White Shrine/sound/sfx/Scarecrow.wav  -- 1
Res/themes/White Shrine/sound/sfx/Scout.wav  -- 1
Res/themes/White Shrine/sound/sfx/Serpent.wav  -- 1
Res/themes/White Shrine/sound/sfx/Shade.wav  -- 1
Res/themes/White Shrine/sound/sfx/Shaman.wav  -- 1
Res/themes/White Shrine/sound/sfx/Shapeshifter.wav  -- 1
Res/themes/White Shrine/sound/sfx/Siren.wav  -- 1
Res/themes/White Shrine/sound/sfx/Skeleton.wav  -- 1
Res/themes/White Shrine/sound/sfx/Slith.wav  -- 1
Res/themes/White Shrine/sound/sfx/Sliver.wav  -- 1
Res/themes/White Shrine/sound/sfx/Snake.wav  -- 1
Res/themes/White Shrine/sound/sfx/Snow.wav  -- 1
Res/themes/White Shrine/sound/sfx/Soldier.wav  -- 1
Res/themes/White Shrine/sound/sfx/Sorcery.wav  -- 1
Res/themes/White Shrine/sound/sfx/Specter.wav  -- 1
Res/themes/White Shrine/sound/sfx/Sphinx.wav  -- 1
Res/themes/White Shrine/sound/sfx/Spider.wav  -- 1
Res/themes/White Shrine/sound/sfx/Spirit.wav  -- 1
Res/themes/White Shrine/sound/sfx/Swamp.wav  -- 1
Res/themes/White Shrine/sound/sfx/Thopter.wav  -- 1
Res/themes/White Shrine/sound/sfx/Treefolk.wav  -- 1
Res/themes/White Shrine/sound/sfx/Troll.wav  -- 1
Res/themes/White Shrine/sound/sfx/Vampire.wav  -- 1
Res/themes/White Shrine/sound/sfx/Vedalken.wav  -- 1
Res/themes/White Shrine/sound/sfx/Viashino.wav  -- 1
Res/themes/White Shrine/sound/sfx/Wall.wav  -- 1
Res/themes/White Shrine/sound/sfx/Warrior.wav  -- 1
Res/themes/White Shrine/sound/sfx/Wizard.wav  -- 1
Res/themes/White Shrine/sound/sfx/Wolf.wav  -- 1
Res/themes/White Shrine/sound/sfx/Wraith.wav  -- 1
Res/themes/White Shrine/sound/sfx/Wurm.wav  -- 1
Res/themes/White Shrine/sound/sfx/Zombie.wav  -- 1
Res/themes/White Shrine/sound/sfx/affinitygreencreatures.wav  -- 1
Res/themes/White Shrine/sound/sfx/defender.wav  -- 1
Res/themes/White Shrine/sound/sfx/fear.wav  -- 1
Res/themes/White Shrine/sound/sfx/first strike.wav  -- 1
Res/themes/White Shrine/sound/sfx/flash.wav  -- 1
Res/themes/White Shrine/sound/sfx/flying.wav  -- 1
Res/themes/White Shrine/sound/sfx/forestwalk.wav  -- 1
Res/themes/White Shrine/sound/sfx/graveyard.wav  -- 1
Res/themes/White Shrine/sound/sfx/haste.wav  -- 1
Res/themes/White Shrine/sound/sfx/lifelink.wav  -- 1
Res/themes/White Shrine/sound/sfx/mana.wav  -- 1
Res/themes/White Shrine/sound/sfx/mustattack.wav  -- 1
Res/themes/White Shrine/sound/sfx/nofizzle.wav  -- 1
Res/themes/White Shrine/sound/sfx/persist.wav  -- 1
Res/themes/White Shrine/sound/sfx/protection from black.wav  -- 1
Res/themes/White Shrine/sound/sfx/protection from blue.wav  -- 1
Res/themes/White Shrine/sound/sfx/protection from white.wav  -- 1
Res/themes/White Shrine/sound/sfx/reach.wav  -- 1
Res/themes/White Shrine/sound/sfx/reachshadow.wav  -- 1
Res/themes/White Shrine/sound/sfx/shadow.wav  -- 1
Res/themes/White Shrine/sound/sfx/storm.wav  -- 1
Res/themes/White Shrine/sound/sfx/swampwalk.wav  -- 1
Res/themes/White Shrine/sound/sfx/trample.wav  -- 1
Res/themes/White Shrine/sound/sfx/vigor.wav  -- 1
Res/themes/White Shrine/sound/sfx/wither.wav  -- 1
Res/themes/White Shrine/spade_ul.png  -- 1
Res/themes/White Shrine/spade_ur.png  -- 1
Res/themes/White Shrine/splash.jpg  -- 1
Res/themes/White Shrine/stars.psi  -- 1
Res/themes/White Shrine/style.txt  -- 1
Res/themes/White Shrine/wallpapers/final_saga2.jpg  -- 1
Res/themes/White Shrine/white_thumb.jpg  -- 1
Res/themes/White Shrine/wood.png  -- 1
Res/thumbnails/  -- 1
Res/thumbnails/.jpg  -- 1
Res/thumbnails/194078.jpg  -- 1
Res/thumbnails/208249.jpg  -- 1
Res/thumbnails/209000.jpg  -- 1
Res/thumbnails/22222220.jpg  -- 1
Res/thumbnails/42187t.jpg  -- 1
Res/thumbnails/4514111t.jpg  -- 1
Res/thumbnails/4838511t.jpg  -- 1
Res/thumbnails/4838512t.jpg  -- 1
Res/thumbnails/51613t.jpg  -- 1
Res/thumbnails/89069t.jpg  -- 1
Res/thumbnails/Angel Token.jpg  -- 1
Res/thumbnails/Auriok Sunchaser.jpg  -- 1
Res/thumbnails/Bear.jpg  -- 1
Res/thumbnails/Beast Token.jpg  -- 1
Res/thumbnails/Darksteel Myr.jpg  -- 1
Res/thumbnails/Dragon.jpg  -- 1
Res/thumbnails/Insect Token.jpg  -- 1
Res/thumbnails/Insect.jpg  -- 1
Res/thumbnails/Memnite.jpg  -- 1
Res/thumbnails/Saproling.jpg  -- 1
Res/trample.wav  -- 1
Res/vigor.wav  -- 1
Res/wagic_res/graphics/simon.dat  -- 1
Res/wither.wav  -- 1
Rhino.wav  -- 1
Rogue.wav  -- 1
Samurai.wav  -- 1
Saproling.jpg  -- 1
Saproling.wav  -- 1
Scarecrow.wav  -- 1
Scout.wav  -- 1
Serpent.wav  -- 1
Shade.wav  -- 1
Shaman.wav  -- 1
Shapeshifter.wav  -- 1
Siren.wav  -- 1
Skeleton.wav  -- 1
Slith.wav  -- 1
Sliver.wav  -- 1
Snake.wav  -- 1
Snow.wav  -- 1
Soldier.wav  -- 1
Specter.wav  -- 1
Sphinx.wav  -- 1
Spider.wav  -- 1
Spirit.wav  -- 1
Swamp.wav  -- 1
Thopter.wav  -- 1
Treefolk.wav  -- 1
Vedalken.wav  -- 1
Viashino.wav  -- 1
Wall.wav  -- 1
Warrior.wav  -- 1
Wizard.wav  -- 1
Wolf.wav  -- 1
Wraith.wav  -- 1
affinitygreencreatures.wav  -- 1
defender.wav  -- 1
fear.wav  -- 1
first strike.wav  -- 1
flash.wav  -- 1
forestwalk.wav  -- 1
graphics/splash.jpg  -- 1
haste.wav  -- 1
lifelink.wav  -- 1
ms0:/PSP/wagic_res/graphics/simon.dat  -- 1
ms0:/wagic_res/graphics/simon.dat  -- 1
mustattack.wav  -- 1
nofizzle.wav  -- 1
persist.wav  -- 1
protection from black.wav  -- 1
protection from blue.wav  -- 1
protection from white.wav  -- 1
reach.wav  -- 1
reachshadow.wav  -- 1
shadow.wav  -- 1
storm.wav  -- 1
swampwalk.wav  -- 1
testsuite.txt  -- 1
thumbnails/  -- 1
thumbnails/.jpg  -- 1
thumbnails/194078.jpg  -- 1
thumbnails/208249.jpg  -- 1
thumbnails/209000.jpg  -- 1
thumbnails/22222220.jpg  -- 1
thumbnails/42187t.jpg  -- 1
thumbnails/4514111t.jpg  -- 1
thumbnails/4838511t.jpg  -- 1
thumbnails/4838512t.jpg  -- 1
thumbnails/51613t.jpg  -- 1
thumbnails/89069t.jpg  -- 1
thumbnails/Angel Token.jpg  -- 1
thumbnails/Auriok Sunchaser.jpg  -- 1
thumbnails/Bear.jpg  -- 1
thumbnails/Beast Token.jpg  -- 1
thumbnails/Darksteel Myr.jpg  -- 1
thumbnails/Dragon.jpg  -- 1
thumbnails/Insect Token.jpg  -- 1
thumbnails/Insect.jpg  -- 1
thumbnails/Memnite.jpg  -- 1
thumbnails/Saproling.jpg  -- 1
trample.wav  -- 1
vigor.wav  -- 1
wagic_res/graphics/simon.dat  -- 1
wither.wav  -- 1
End File Usage Statistics
-------------------
2011-01-11 10:11:15 +00:00
wrenczes@gmail.com ccd972ada3 Eliminated some spurious string copy construction - changed a couple string return functions to return a reference instead. 2011-01-11 09:32:23 +00:00
wrenczes@gmail.com 85bd7aa145 2011-01-11 09:28:27 +00:00
wrenczes@gmail.com 1c011e568a Missed checking this file in along with the other leak fixes from Ittobaal. 2011-01-11 09:12:56 +00:00
guzhenjie1@gmail.com 9c52b834f0 Fixed Overgrown Tomb, Thorntooth Witch and Tornado Elemental. 2011-01-10 15:34:34 +00:00
Xawotihs e0823b82c4 Fix for issue 568. It was a hard one, it probably happened more
frequently with the touch/mouse interface, but this bug potentially
affected all the platforms.
2011-01-08 18:26:22 +00:00
Ittobaal@gmail.com 07ef902d85 Added newline to end-of-file 2011-01-08 12:24:39 +00:00
Xawotihs c3b926830a [Maemo] Readded the resources copy in the postinstall script 2011-01-06 22:07:28 +00:00
Xawotihs 98214db702 [Maemo] references the new launcher in the .desktop file 2011-01-06 20:33:21 +00:00
Xawotihs 5ea6c1b890 [Maemo] Moved the copy of the ressources from the installation into a launcher script 2011-01-06 20:17:34 +00:00
omegablast2002@yahoo.com 6b3d1bcbc9 Viridian Lorebearers pump effect was not ending 2011-01-06 12:52:20 +00:00
omegablast2002@yahoo.com cb7ecbc0e9 updated thelon of havenwood to use exile cost. 2011-01-06 12:42:57 +00:00
guzhenjie1@gmail.com 532261d36c Fixed Thelon of Havenwood reported in forum by Niegen and Knight Token from Waylay:
1. Fodder Launch
2. Knight Token from Waylay
3. Sword of Kaldra
4. Thelon of Havenwood

Changed following cards which can produce multiple kinds of tokens to make them display token images correctly: 
1. Bestial Menace(WWK)
2. Decree of Justice(SCG)
3. Fable of Wolf and Owl(EVE)
4. One Dozen Eyes(MRD)
5. Sarpadian Empires, Vol. VII(TSP)
6. Wand of the Elements(DST)
7. Wurmcoil Engine(SOM)

Added the following token in their _cards.dat:  

1. DST (Wand of the Elements):
Blue Elemental Token(id=-4977511)
Red Elemental Token(id=-4977512)

2. EVE (Fable of Wolf and Owl):
Green Wolf Token(id=-15208711)
Blue Bird Token(id=-15208712)

3. MRD (One Dozen Eyes):
Beast Token(id=-4838511)
Insect Token(id=-4838512)

4. SCG (Decree of Justice):
Angel Token(id=-4514111)
Soldier Token(id=-4514112)

5. SOM (Wurmcoil Engine):
Wurm Token with Deathtouch(id=-20787511)
Wurm Token with Lifelink(id=-20787512)

6. TSP (Sarpadian Empires, Vol. VII):
Citizen Token(id=-11492111)
Camarid Token(id=-11492112)
Thrull Token(id=-11492113)
Goblin Token(id=-11492114)
Saproling Token(id=-11492115)

7. WWK (Bestial Menace):
Snake Token(id=-19784311)
Wolf Token(id=-19784312)
Elephant Token(id=-19784313)

You also need abrasax's image set and rename or add following tokens' pictures:
1. DST (Wand of the Elements):
Blue Elemental Token: Rename to 4977511t
Red Elemental Token: Rename to 4977512t

2. EVE (Fable of Wolf and Owl):
Green Wolf Token: Rename to 15208711t
Blue Bird Token: Rename to 15208712t

3. MRD (One Dozen Eyes):
Beast Token: Rename to 4838511t
Insect Token: Rename to 4838512t

4. SCG (Decree of Justice):
Angel Token: Rename to 4514111t
Soldier Token: Rename to 4514112t

5. SOM (Wurmcoil Engine):
Wurm Token with Deathtouch: Rename to 20787511t
Wurm Token with Lifelink: Rename to 20787512t

6. TSP (Sarpadian Empires, Vol. VII):
Citizen Token: Rename to 11492111t
Camarid Token: Rename to 11492112t
Thrull Token: Rename to 11492113t
Goblin Token: Rename to 11492114t
Saproling Token: Rename to 11492115t

7. WWK (Bestial Menace):
Snake Token: Rename to 19784311t
Wolf Token: Rename to 19784312t
Elephant Token: Rename to 19784313t
2011-01-06 12:33:26 +00:00
solo81@web.de 2e20ffd99b Fixed Rakdos Pit Dragon.
This fixes issue555.
2011-01-04 10:58:44 +00:00
Xawotihs 2e4f8b2326 Fixed permissions of the resources 2011-01-02 00:01:33 +00:00
omegablast2002@yahoo.com 925c159cef readded deck 101, doc accidently commited a different deck 101 2011-01-01 11:50:15 +00:00
solo81@web.de c3477f64aa Fixed Dark Depths.
This was a bug reported by a guy in the forum: Dakr Depths produced a token every time it hit the graveyard, even it it had a counter on it. ^^


[card]
name=Dark Depths
auto=counter(0/0,10,Ice)
auto={3}:(counter(0/0,-1,Ice) all(this) && bury all(dark depths[-counter{0/0.1.Ice}])
auto=@movedTo(mygraveyard) from(dark depths[-counter{0/0.1.Ice}]|myBattlefield):token(Marit Lage,legendary creature avatar, 20/20,flying,indestructible,black)
text=Dark Depths enters the battlefield with ten ice counters on it. -- {3}: Remove an ice counter from Dark Depths. -- When Dark Depths has no ice counters on it, sacrifice it. If you do, put a legendary 20/20 black Avatar creature token with flying and "This creature is indestructible" named Marit Lage onto the battlefield.
type=Legendary Snow Land
[/card]
2011-01-01 11:26:17 +00:00
guzhenjie1@gmail.com 937e1c2f5c Fixed Consuming Bonfire, Honorable Scout and Piety Charm. 2010-12-31 16:38:03 +00:00
Xawotihs 692be829fa Updated maemo packaging files for 0.14.1 release 2010-12-30 22:13:10 +00:00
Xawotihs cab5b973ac Changed the Res installation paths on Maemo and added a Res.txt to reference them 2010-12-30 22:08:42 +00:00
Xawotihs 58f4631dc2 Removed a phonon warning on maemo, added a debug trace for the launching path 2010-12-30 22:03:52 +00:00
guzhenjie1@gmail.com 552603e7a0 Fixed two typo of Enclave Cryptologist and Undead Warchief reported by Niegen in forum. 2010-12-30 13:54:47 +00:00
guzhenjie1@gmail.com b38716a9e8 Reverted Master Transmuter 2010-12-30 13:41:45 +00:00
guzhenjie1@gmail.com bc89b275a3 Fixed Master Transmuter reported in forum:
1. Master Transmuter: 
auto={H(artifact|mybattlefield)}{U}{T}:moveTo(mybattlefield) notatarget(artifact|myhand)
 ==> 
auto={H(artifact|mybattlefield)}{U}{T}:token(-17925211)

Added following card for Master Transmuter: 
[card]
name=Master Transmuter's Artifact
auto=@movedTo(this|exile) from(Battlefield):may moveTo(mybattlefield) notatarget(artifact|myhand)
auto=moveto(exile)
id=-17925211
type=Nothing
[/card]

Other fixed cards: 

1. Aysen Highway
2. Hoverguard Sweeper's 2nd Bounce
3. Novijen, Heart of Progress
2010-12-30 10:50:19 +00:00
Xawotihs a77e550bff Fixed compilation on Linux and a resizing issue 2010-12-30 02:17:22 +00:00
leungclj@googlemail.com 434d527833 leungclj - correction of last submission 2010-12-29 13:06:51 +00:00
leungclj@googlemail.com 0311cfd1eb leungclj - Added test for indestructible, also submitted issue for indestructible bug. Please refer to "indestructible_2_i569.txt" 2010-12-29 12:55:44 +00:00
wrenczes@gmail.com f2f9ae3168 Renamed ensureOpponentMenu() => ConstructOpponentMenu() for clarity. 2010-12-29 11:04:37 +00:00
Xawotihs 11b65fe006 Added default options.txt for both settings and player. They are named options.orig.txt. 2010-12-28 23:29:31 +00:00
Xawotihs dc0c7afd20 Updated dependencies of maemo package control 2010-12-28 23:17:19 +00:00
wrenczes@gmail.com 961d6191dc Out of paranoia (since I haven't compiled against Linux), switch out min() for our defined version of MIN. 2010-12-28 06:37:35 +00:00
wrenczes@gmail.com 2cb95076a0 Revert unwanted additions from Intel Amplifier profiling to the VS 2010 project files. AnkhSVN strikes again! 2010-12-28 06:34:33 +00:00
wrenczes@gmail.com 9005fd7af7 Fixed a problem I noticed after adding Z's 6 new decks to my res folder: if the number of AI decks wasn't a multiple of 10, the game would slow to a crawl, since there was a check that compared the number of actual decks against the number of unlocked AI decks (which is always incremented by 10 when new decks are unlocked) to determine whether the list of AI deck names should be refreshed or not. This was a pointless check, since we can load all the names once, and simply use the unlocked AI count value when determining what decks to allow to be used during random match playing.
This change restores the performance on psp back to where it was with 0.13.1, where the ai deck number happened to be a neat 100 count.
2010-12-28 06:31:50 +00:00
wrenczes 39e6d4f2b5 Reworked some fixes submitted to us by ittobaal. Several fclose calls he suggested had no bearing (if fopen fails, calling fclose on a null pointer is pointless), but the (missing) array deletions were definitely valid bugs. The fix for CreateTexture() was a little loose, so I cleaned it up somewhat.
Issue: 566
2010-12-27 20:00:33 +00:00
techdragon.nguyen@gmail.com 814993ac1c tools for generating supported card list 2010-12-27 09:22:52 +00:00
techdragon.nguyen@gmail.com 6cf5212bab fixed definition for Acid Web Spider. Card states "may destroy", definition forced destruction. 2010-12-25 01:10:06 +00:00
omegablast2002@yahoo.com 6f51c4f36f name=world slayer
auto=@damaged(player) from(mytgt[attacking]):destroy all(other *|battlefield)
====>
@combatdamaged(opponent) from(mytgt):

i added this trigger ages ago :)

name=Talon of Pain
auto=@damaged(opponent) from(other *|battlefield,mystack):counter(0/0,1,charge)
====>
name=Talon of Pain
auto=@damaged(opponent) from(other *|mystack):counter(0/0,1,charge)
auto=@damaged(opponent) from(other *|mybattlefield):counter(0/0,1,charge)
2010-12-24 20:56:51 +00:00
guzhenjie1@gmail.com df14ae3b85 Fixed following cards according Zethfox's reminding:
1. General's Kabuto
2. Lightning Greaves
3. Neurok Stealthsuit
4. Whispersilk Cloak
5. Darksteel Garrison
6. Shield of Kaldra

Fixed following cards according MTG rules:

1. Lord of the Pit
2. That Which Was Taken
3. Vigor
4. Worldslayer
5. Yomiji, Who Bars the Way

Other fixed cards:

1. Magebane Armor
2. Talon of Pain
2010-12-24 13:19:33 +00:00
Xawotihs 53c68f4104 Replaced double left click support for desktop version by simple left click. Maemo still uses double click. 2010-12-24 03:19:26 +00:00
Xawotihs b3fb8022a0 Deactivated the QImage code as it causes problems on win7 and vista. This implies that the Qt version still depends on libjpeg, libpng and libgif 2010-12-23 07:57:50 +00:00
Xawotihs 093d229c50 Basic check of GL versions supported before starting. 2010-12-23 00:51:38 +00:00
Xawotihs 7a0bf2c78c Changed the Qt images to load in buffers using dimensions multiple of power 2. Simplified the memory management as well. 2010-12-22 22:20:20 +00:00
Xawotihs a5c5a9d60b Fix resize management for the mac version 2010-12-21 16:05:59 +00:00
Xawotihs 6fde01fe03 not defined => !defined 2010-12-21 11:19:42 +00:00
Xawotihs 164b9837d9 Merged the iOS resizing/selecting code into the Qt frontend. It works perfectly with OpenGL 2.0, it's buggy with OpenGl 1.1. 2010-12-21 01:10:01 +00:00
Xawotihs ad348b2466 Bumped version to 0.14.1 in the Qt project 2010-12-20 21:58:47 +00:00
techdragon.nguyen@gmail.com 840e6e078f initialized stats information so that PSP can render it properly when keypress is too quick on the player deck selection screen. 2010-12-20 01:53:39 +00:00
omegablast2002@yahoo.com d8d4977e5b fixed a rare crash when more then one creature had either treason or unearth in the battlefield at the same turn...they would be put in graveyard and the z->nbcards would change in value, meaning that the incrementer was now able to accidently step out of the vector and hit an invalid pointer. now once it hits the bottom of each pass if the number of cards changed in the field start the cycle over. 2010-12-19 21:20:30 +00:00
wagic.the.homebrew@gmail.com 9d68164132 Erwan
- Adding Zethfox's AI decks
- bumping version to 0.14.1
2010-12-19 08:37:26 +00:00
Xawotihs 3459a04d2a Final fix for maemo dependency and fix the release of keys in the Qt frontend 2010-12-18 19:37:16 +00:00
wrenczes@gmail.com 9ea61766cd At the risk of being mildly obnoxious, inserting my handle into the dev list. (Anybody else missing from the credits?) 2010-12-18 06:04:02 +00:00
wrenczes@gmail.com 62fa860da4 Split out a different keybindings string if QT_CONFIG is defined. This should prevent key collisions between the different Win32 builds. 2010-12-18 05:55:03 +00:00
wrenczes@gmail.com ba975d1b37 When I consolidated the two duplicate lord string sets, the ordering of 'prelords' wasn't the same as 'lords'. I didn't realize that it mattered when I picked the first set of the two. Reinstated the 'lords' ordering, so far all the cases that broke are working again. I've left in the 'prelords' variant in, stubbed out, in case we encounter a reason why this is still required. 2010-12-18 04:01:13 +00:00
wrenczes@gmail.com c7666a933a Revert changes to CardSelector. This wasn't meant to be part of my previous check in, another case of AnkhSVN selecting a file automatically for submission when it was in a different changelist. Sorry! 2010-12-18 03:47:52 +00:00
guzhenjie1@gmail.com 64eefeb0f4 Fix Genju of the Fields and Grand Arbiter Augustin IV. 2010-12-18 03:38:38 +00:00
wrenczes@gmail.com e4dd50766f Reverting/reworking Mike's change on thises/prelords. Zeth says that this is crashing on psp - while sizeof(string) shouldn't eval to 0, I don't fully trust this to evaluate correctly on psp, so I'm reverting out the change. Since these are staticly sized arrays, there's no point in trying to calculate their size programatically. (If they were true dynamic containers, then it would make more sense, but then you'd simply call size() on them anyway.)
While at it, moved the string arrays to be global const declarations - there were two duplicate sets of keywords for lords, and they were being created/destroyed on each call to parseMagicLine.  No point in constantly reallocating these strings, we know we're going to contantly reuse them.
2010-12-18 01:59:07 +00:00
omegablast2002@yahoo.com d2a96e69df few small items, first since card view are now correctly null'ed, i ran into a few cases while watching demo mode where the game would trigger a stop on the battle hint that uses card views, apon checking the card view would be null at the time. so added a condiational check to prevent the game from trying to alter a null'ed pointer.
2nd, added a block out for optimizedhand in demo mode, ie any time its cpu player vs cpu player, noticed demo was starting matches with no cards.

3rd, added a hackish workaround to allow Ai to get eff returns on abilities using the all(this) lord workaround to target the source. Ai was not getting any returns on these abilities. now basically if the ability is a lord && !target...lets calculate this as tho source == target....
2010-12-17 20:59:08 +00:00
solo81@web.de f5aa68b330 Fixed Hell-Bent Raider. 2010-12-17 18:46:33 +00:00
omegablast2002@yahoo.com 681f4ddc0e recommiting this, some of my testing stuff snuck in last commit. 2010-12-16 22:23:44 +00:00
wrenczes@gmail.com 60078c34c7 Additional fix to go along with r2834 - the previous fix revealed an ugly interdependency between CardView and MTGCardInstance. Neither object owns the other, but they each have a pointer reference to each other, which is a recipe for disaster if not managed correctly. I had fixed half of the problem, where the status of a CardView being destroyed wasn't reflected in the MTGCardInstance; meanwhile, it introduced another problem where if the MTGCardInstance was destroyed first, the CardView would crash when trying to do the cleanup.
This is a classic example of why naked pointers suck!  The right way to fix an interdependency would be to have these objects hold onto weak references to each other. But that's way too big a change at this point in time, so I've added this ugly hack instead.

This will fix an intermittent crash when either accessing the library or exiting a match.
2010-12-16 21:17:18 +00:00
Xawotihs 02fcf48869 Fixed maemo zlib dependency 2010-12-16 20:11:07 +00:00
Xawotihs eaeb9cc2a6 Fixed for issue 564. Now we do nothing if we use the "menu key" in the language selection menu. 2010-12-16 18:36:07 +00:00
Xawotihs ae9ae7783b gcc does not like iomanip stuff without namespace around 2010-12-16 18:24:39 +00:00
omegablast2002@yahoo.com 4458e61b75 2 things, moved poison count wingame to the top with the life, there were cases where it wasnt respecting "cantlose" cards. and 2nd gave Ai *some* direction as to what to do with poison counters. i saw him place poison counters on himself to death in a single round...its was embarrassing. 2010-12-16 16:09:35 +00:00
techdragon.nguyen@gmail.com 84e4213615 fixed sizing issue. I keep forgetting array size calculation in C++ isn't just a property like in other languages. Sorry guys. 2010-12-16 14:13:09 +00:00
techdragon.nguyen@gmail.com e600c34852 changed ints to size_t for psp compilation warnings. 2010-12-16 13:47:39 +00:00
techdragon.nguyen@gmail.com afdeae6901 fixed some formatting issues.
changed conditional for lord and thises evaluation from hardcoded value to length of the array being evaluated.  This doesn't change current functionality, but minimizes code change if these arrays were ever to change in size.
2010-12-16 12:53:48 +00:00
techdragon.nguyen@gmail.com 038fef7742 issue 561
initialized deck stats number.  The value wasn't being initialized correctly and thus retained the last set of values for a given deck.
2010-12-16 12:50:01 +00:00
wrenczes@gmail.com 1cc516193e Sidecar fix to the CardView change: running the test suite revealed a few other places where bad assumptions were being made that an event's card view pointer was legitimate. Now they properly evaluate whether the view is null and adjust accordingly. 2010-12-16 09:41:14 +00:00
wrenczes@gmail.com 87909bed08 Fix for issue 550, heap crashed game in turn 6.
The core problem I fixed was in CardView's (missing) destructor - on construction, a CardView will set itself as a member of its parent CardInstance, so it stands to reason that when it's about to be destroyed, it should do the inverse and remove itself in the same fashion from its parent.   This explains why weird graphic glitches were seen when casting Animate Dead on cards in a graveyard - the position data it was trying to use was already deleted from memory (a cardview is deleted on cleanup at the end of a turn if it's gone to the graveyard), but no one nulled out the deleted card view reference from the instance, so we'd access invalid data.

Some peripheral changes in this checkin:  two helper functions in CardGui (GetCenterX, GetCenterY)  that are part of my navigation patch are included.  They're unused in the current code base, so this has zero impact. (I'm only checking them in as it's more work than it's worth to refactor them into a separate changelist.  The core of the nav patch requires my mods to Closest.cpp / CardSelector.cpp to have any effect.)  I also included a helper function in the debug routines to spit out hex pointer addresses in trace outputs, which I used to chase down this bug.
2010-12-16 09:32:42 +00:00
omegablast2002@yahoo.com 6c06544838 fixed 562 special lands not sending tap events. activatedability was over riding the reacttoclick of manaproducer...therefore not sending out the tapformana event.
Issue: 562
2010-12-15 19:29:30 +00:00
omegablast2002@yahoo.com 99266ebae4 corrected mikes ABSOLUTE fail attempt at a test. yes, im pissed off. RUN YOUR TEST IN SLOW MOTION PLEASE!!!! THANKS! 2010-12-15 19:26:22 +00:00
omegablast2002@yahoo.com 7682af893b fixed plummets mana cost, it was incorrectly {g} and should have been {g}{1} <---look mike..... 2010-12-15 19:24:53 +00:00
wagic.the.homebrew@gmail.com 6c9d2db493 Erwand
-adding tests for issue 562 and issue 563
2010-12-15 13:36:11 +00:00
wrenczes@gmail.com 5778fa7ba2 Fixed a reported crash with 'Throat Slitter' per this response on the public beta post:
http://wololo.net/forum/viewtopic.php?f=18&t=2486#p18701

Also fixed a typo in Thrull Surgeon's code that I just happened to notice while making this fix.
2010-12-15 07:57:51 +00:00
Xawotihs eab131f8be [iOS] Fixed icon and targets in xcode project 2010-12-14 17:01:07 +00:00
techdragon.nguyen@gmail.com fcefd6385b 2010-12-14 11:54:53 +00:00
techdragon.nguyen@gmail.com cb29f47fe3 2010-12-14 11:54:44 +00:00
techdragon.nguyen@gmail.com f4ec87dbb0 reverted previous change. 2010-12-14 11:45:43 +00:00
techdragon.nguyen@gmail.com 61011b8924 No code changes.
* removed extraneous braces for case statements.
* changed tabs to spaces.
2010-12-14 11:37:32 +00:00
omegablast2002@yahoo.com b247a7e83c just a brace moved, in cases of all(this) the 2nd statement would overide the first one which checks if its an attacker or blocker. 2010-12-14 11:25:01 +00:00
omegablast2002@yahoo.com 91347b38d9 sorry had to add this too, aparently simply putting BLAH_GOOD/BLAH_BAD without actually comparing it to the suggestion from af always returns true... 2010-12-14 11:02:49 +00:00
omegablast2002@yahoo.com cf8cb213cc pump granting needed to be a little more specific, it is not enough to simply tell the Ai if it is "good" it has to also know if its the controller of the creature. otherwise i witnessned it pump opponents creature. small change no huge impact except correcting the use of ai good effects on human player creatures. 2010-12-13 18:54:41 +00:00
techdragon.nguyen@gmail.com 2fdf538014 Added another test for 559 to verify cards like Halcyon Glaze works as specified.
Note this particular aspect of the "becomes" ability was not broken prior to the fix for 559.  This is a sanity check as it has nothing to do with color change. but tests ability changes due to "becomes" ability.

Issue: 559
2010-12-13 16:58:37 +00:00
omegablast2002@yahoo.com 448099825a just moved a bracket in ai STANDARD_LEVELUP. the 3 condiational was outside of the bracket, causing it to over ride previous. it should ALWAYS consider the "maxlevel" hint. 2010-12-13 14:58:24 +00:00
wagic.the.homebrew@gmail.com 1046ffac02 Erwan
- fix for issue 559 based on Mike's suggestions. The test suite passes
2010-12-13 13:59:07 +00:00
wagic.the.homebrew@gmail.com 19fe04b882 Erwan
- fix for issue 558 (compilation issues in release mode on most platforms)
2010-12-13 13:16:01 +00:00
omegablast2002@yahoo.com 64af4470e4 further improved "prevent" training on ai, while polishing off a Ai deck based on cleric i noticed it was using WAY too much prevent on a creature...sometimes 6 points or more then it should have been using...we only ever want to use *just* enough to survive. this way we can spread the love to the other creatures.
i hope to have a polished cleric Ai deck for release 14.1 within the next day or so. trying to include a couple decks that take adventage of all this great training.

hopefully i can get prevent working as good as equip does...the Ai deck i constructed called
"the kor" is almost an unbeatable white weenie deck.
2010-12-13 12:33:35 +00:00
omegablast2002@yahoo.com 3c0ac6b3f5 this one didnt work. sorry! 2010-12-13 01:26:54 +00:00
Xawotihs 69d652fdcc Upgraded maemo release files 2010-12-12 22:51:36 +00:00
omegablast2002@yahoo.com a46596672b bug fix for something reported in the forums, becomes( and transforms( were not correctly giving creatures abilities...this is just because of a small overlooked issue, the string would read "flying)" instead of "flying" and was there for rejected by mikes new abilities hash. same with transforms( it would read ",flying" and reject it...just had to correct the "ends" and "begins" of those strings...mike you told me you tested this change when we got into it...shame on you! 2010-12-12 17:02:41 +00:00
solo81@web.de e5754cbfb4 Fixed issue531. 2010-12-12 16:18:19 +00:00
Xawotihs 3cb652087d iOS frontend and XCode project 2010-12-12 15:58:47 +00:00
solo81@web.de 32d614e23b Fixed Baku Altar (activation cost). 2010-12-12 13:22:35 +00:00
solo81@web.de b609fa2cb1 Fixed Energy Storm. 2010-12-12 11:51:52 +00:00
wrenczes@gmail.com 4d0296d628 Fixed issue 551, "this vector contains over 1 million members" crash.
Thanks to Mike for helping me with the repro & debug session on his machine.
2010-12-12 09:44:45 +00:00
Xawotihs 01ac3d1a55 - cleanup image dependencies in QT project 2010-12-11 22:46:15 +00:00
techdragon.nguyen@gmail.com fe75493ffa No code change. Reformat code 2010-12-11 22:42:48 +00:00
Xawotihs b3650bcccf - deactivate testsuite if _DEBUG is not defined 2010-12-11 22:39:35 +00:00
Xawotihs ce7f62cac3 - Qt project cleanup, in particulary removed testsuite and traces in
release.
2010-12-11 22:32:06 +00:00
solo81@web.de e2440af09e Fixed Goblin Piledriver.
It had a typo in its abilities-line.
2010-12-11 17:35:56 +00:00
wagic.the.homebrew@gmail.com 6ea7eb2b87 Erwan
- fix for issue 292 . This fixes the classical theme, which had been broken by the initial fix for the final Saga glitch
2010-12-11 16:00:59 +00:00
omegablast2002@yahoo.com c54de679d4 couple bug fixes, a slight refactor,
ok here goes, first, fixed a crash that would happen when ever a player would gain more then 2000 life or take more then 2000 damage...the buffer was becoming corrupted i imagine because it was too small, increasing it to 10 slots allowed players to successfully take massive amounts of damage, highest i bothered checking was about 35k gained/lost, no crash...

2nd, removed the and refactored cantcaster rule, moved it to stateEffects() and renamed stateeffects to better reflect what it will be handling,

removed sneak attack rule and moved it into stateeffects

the following ints have been converted into bool, 
all the cantcasters, canputlandsintoplay is becoming a bool, the amount of lands you can play is now handled by a new varible int landsPlayerCanStillPlay (this is for my ability additional lands increase in support on perminents coming after the release)

the changes to bools were for an obvious reason, they were all ints pretending to be bools, my varibles were confusing as you would often see code like this if(cantblahblah > 0)
which to another coder might not make any sense.

these varible ints were returning 0 as false and 1 as true...changed them all to bools, same goes for putlandsinplay int, in half the places it was being used as a bool, AND it was tracking the amount, when i was coding additional land ability, this made it impossible to maintain correct amounts without damaging the rest of the code.
as a bool, controlled by stateeffects, it can now be used correctly as a bool in all cases, and the stateEffects manages the switch on it to false if you no longer have any landsPlayerCanStillPlay left.

the refactor on cantcaster was also a bug fix, it was reported to me that cantcasters were not correctly working, sometimes ai or player would still be allowed to play a card with one in play, because of the old way i had it setup somecases of bothcantcaster were reseting the cantcast to 0, basically making the check do nothing.

it is now handled in stateeffects if you have one in play, then its true, if not then false...this returns very accurate tracking of the cards instantly instead of checking as cards enter or left play.

the "both" versions now have their own bools to avoid future conflicts with the single player cantcast...

added a case for the fancy moving text, some move to library effects were incorrectly returing fetch.
2010-12-10 20:51:50 +00:00
wrenczes@gmail.com f894056e74 Fixed the order of initializers to make the psp warnings go away. (Stupid gcc, I don't understand why it cares about the order of initializers in the first place...) 2010-12-10 10:25:35 +00:00
wrenczes@gmail.com 4ac3c01cb0 Fixed the include guards. This had disabled the _CrtSetDbgFlag() call, so we were no longer detecting memory leaks in debug under Win32 when exiting the app. Ouch!
(Confirmed that the leak I just fixed was present & reported by the debugger with this change in place.)
2010-12-10 09:18:29 +00:00
wrenczes@gmail.com 4fd67bd1fd line endings -> Unix. No code changes here. 2010-12-10 08:38:09 +00:00
wrenczes@gmail.com f8368d01c4 Found & fixed two memory leaks:
- computeActions would leak a ManaCost.  This was fairly minor.
- AIPlayer::SelectAbility had a major leak.  Basically, there's some code that pulls a random number for an efficiency check - if the action's efficiency value was below that random number, the action pointer was cleared, and none of the actions that were to be discarded would be deleted out of the rankings map.  I've switched out the rankings container to not contain action pointers, but real action objects, so regardless what kind of logic is implemented, the map will properly clear out its objects upon destruction.
2010-12-10 08:37:41 +00:00
Xawotihs 40c1ed074b Fixed Qt windows project and activated precompiled header 2010-12-09 21:21:55 +00:00
Xawotihs 1e9746a2eb Fixed Qt project on Linux 2010-12-09 19:52:57 +00:00
omegablast2002@yahoo.com 1fe35da5b3 forgot to change back one line i changed, this is part of the manual revert i did earlier. 2010-12-09 18:34:23 +00:00
omegablast2002@yahoo.com 5d0029a2eb fixed "*square* No to all" choice...
someone just forgot that both cases need to check if the interupt decision is 2 before changing it back to 0 (interupt) btw, once a stack is ready any NEW stack actions added, such as Ai interrupting your choice to not interrupt you will see the new stack actions to either cancel manuelly or "no to all"

sorry its not a bug fix for crashes! im really not skilled enough yet to fix the kinds of crashes were having.
2010-12-09 17:37:11 +00:00
wagic.the.homebrew@gmail.com 6360734ea3 Erwan
-Attempt at fixing issue 538. This is a wild guess, but basically 1 000 000 bytes is NOT enough to decompress a 512*512*4 texture (32bits png). We need at least 1MB (1024*1024) AND some additional space for the decompression process. Based on that, bumped the 1 000 000 (minimum contiguous ram necessary to start decompressing a picture) to 1 500 000. I've had pretty good results so far but this needs confirmation
- GameObserver <- changes from Win to *nix carriage returns.
2010-12-09 13:47:04 +00:00
omegablast2002@yahoo.com 5713a45006 reverting this test back to yesterday 2010-12-09 13:32:34 +00:00
omegablast2002@yahoo.com 5d96f68d21 reverted my changes in rev 2774 which intruduced bugs, coincidently stumbled across what really fixed triggers substep, which was moving it into stateeffects...this revert reintruduces the double interrupt offer to combatdamage in some specail cases. 2010-12-09 13:31:09 +00:00
techdragon.nguyen@gmail.com b595091855 moved tests for rakdos pit dragon into bugs folder until issue 555 is resolved. 2010-12-09 07:58:58 +00:00
techdragon.nguyen@gmail.com dbb3e04de1 replacing old tests with new more complete tests for radkos pit dragon.
Note: currently two of the four tests fail due to issue 555 which is unresolved.
2010-12-09 06:14:33 +00:00
techdragon.nguyen@gmail.com 36c096a33c fixed line endingsin AIPlayer.cpp
modified debug output for Manacost.  ToString() wasn't defined correctly.  I refactored the output
for Dump() to just call ToString().
2010-12-09 01:37:49 +00:00
techdragon.nguyen@gmail.com 833bd4714d reformatted indentations as they were slightly off.
refactored latest changes to group similar menu texts.
2010-12-09 01:28:25 +00:00
omegablast2002@yahoo.com 585eae1852 added fancy location based move menutext return to lord...it was a case we must have messed when we were trying to get rid of generic "move" messages...lord returns ability menutext which in case of amover is "move"...and "all(" is a lord. so ran into a deck where i had a couple "move" menus display and i didnt know which i was choosing, moving creatures to hand or moving theirs to grave...
death to generic messages!!!
2010-12-08 20:16:27 +00:00
omegablast2002@yahoo.com f227c4775d moved phase pass automation into stateeffects() where it should have been from the start, it really shouldnt be run as part of "update()" it bothered me enough to actually move it. 2010-12-08 15:33:02 +00:00
omegablast2002@yahoo.com 682af98bf7 moot pointed out i made a boo boo in STANDARDABILITYGRANT thanks you! forgot to add the "suggest good" part of the condiation...as we dont act to give a creature the ability 2 times. (atleast until stacking abilities are added) 2010-12-08 14:37:39 +00:00
omegablast2002@yahoo.com 079d2dbd22 updated this test as it uses the trigger step, note: the 7 or so trigger based test dont want to actually test in test suite...i tried correct a typo in the _test.txt they have an extra "S"...but still they did not get tested...any ideas? if you can get them testing, please remember the combat ones need an extra next directly before the "next for combatdamage. 2010-12-08 14:34:17 +00:00
omegablast2002@yahoo.com 6348940dc6 added a automatic move forward if trigger step if playmode == test suite...this will still trigger the steps actual functions and test that are using trigger step will require an extra "next" test that are not using trigger step for anything will not need the extra "next" 2010-12-08 14:32:12 +00:00
wagic.the.homebrew@gmail.com 70a1a03fee Erwan - reverting r2779 per my comment in that revision 2010-12-08 14:18:41 +00:00
wrenczes@gmail.com 2a442ad2f5 Swapped the DeckMenu background from a png to a jpg, as the transparency wasn't being used at all in the image, so it wasn't buying us anything. Flipped the rendering order so that the background is now truly drawn in the background (ie first), and everything else is drawn on top.
(Make sure you update your res/graphics folder on your psp!)
2010-12-08 11:02:25 +00:00
guzhenjie1@gmail.com d638ac28b1 Fix Graypelt Hunter and Doomsday Specter. 2010-12-08 10:51:04 +00:00
techdragon.nguyen@gmail.com def9a8b229 added additional debug statement to show current turn. 2010-12-08 08:21:54 +00:00
wrenczes@gmail.com bfb6f396df Removed a spurious call to GetInstance(). 2010-12-08 07:58:20 +00:00
wrenczes@gmail.com 5c819a3b3c Found & fixed a crash while testing trample. The bug: if the AI's player hand dropped to zero cards. This broke in r2696.
Zeth, please review, I put in a comment where there's something that doesn't make sense- probably an early change that's now obsolete.
2010-12-08 07:53:51 +00:00
omegablast2002@yahoo.com d3a4745686 did a couple things here, fixed issue507 but also, very very very possibly fixed issue548, tho i will leave the closing of those 2 tickets to wololo, as he was the one who originally reported them.
another issue i fixed, when last trigger would be resolving in "trigger" substep, the game was moving to next combatstep before you could finish it, NOW the game correctly finishes resolving any triggers that might have fired off in "Triggers" substep, THEN it adds combatdamage step to the stack. this also fixes an issue where if you were multiblocked and combattriggers fired off, then your trigger would be UNDER the "ordering window" and unresolvable.

added waitingforanwsers return to userRequestNextGamePhase
when youre "waiting for anwsers" that means you have a menu box open and the game is waiting for you to decide....this was one of the causes of the rush to combat damage while youre still selecting something on a menu.

moved Trigger step call to requestnextgamephase into stateEffects() and out of updates, works MUCH better this way. i wonder why this isnt handling more of the automated functions, i suggest we consider moving the autopassphase into stateEffects() also as it will most likely be handled much better in there then in the update function.


also,
adjust Ailessons on Adrawer, it was still getting a little too excited about drawing cards. 
moved around the eff setting on grantingability lessons.
having it set to 0 BEFORE actually giving it a value was conter productive.

added a peice of commented out code in "isintop" function that if you uncomment will allow you to have Ai ALWAYS multiblock you.

im pushing this in as i feel comfortable with the positives and havent really come across an adverse effect yet.
however i am just one person and testing something like this is much easier with alot more then 1 person on it.
2010-12-07 17:58:46 +00:00
wagic.the.homebrew@gmail.com c28c14171f Erwan
-fix for issue 489 (protection prevents some triggers to happen)
2010-12-07 14:12:04 +00:00
techdragon.nguyen@gmail.com 7676ad5e79 removed blank entry. caused an error to appear in console on startup 2010-12-07 05:43:23 +00:00
Xawotihs 594b3abf1e Qt project fixes on Mac 2010-12-06 22:30:25 +00:00
Xawotihs e8f5d2d349 iOS texture management fixes 2010-12-06 22:25:28 +00:00
Xawotihs 13f467a9ef Activated QT image support, removed freetype, jpeg, png, gif libs dependencies in the Qt project. 2010-12-06 20:06:03 +00:00
omegablast2002@yahoo.com 8ba23dd99f Bug Fix for issue 464, multipling the secs you set to interrupt by the amount of unresolved stack actions. this extends you time giving you essentially X sec of interrupt offer for each stack action.
exsample, 3 unresolved stack actions. with interrupt set to 5 secs, will allot you 15 secs to decide the first action, then 10 secs to decide the 2nd action, then 5 secs to decide the last action.

note: its multiplicative, this does not make each stack action into 15 sec interrupt.

as they resolve "extraTime" gets recalculated.
2010-12-06 12:12:53 +00:00
omegablast2002@yahoo.com 336cf0bc32 jace's erasure fix, this is only temporary until i add all the abilitie varibles, currently theres no system beside a workaround we use "thisforeach(varible) effect" to return a value, when im done with the varible returning for abilities then the code will be replaced with @drawn(controller):may deplete:cardamount. for now tho this makes the addDraw send 1 event for each card drawn, essentially making all the @drawn cards 100%. 2010-12-06 11:28:11 +00:00
wrenczes ed321e2df5 Linux specific changes to allow linking against Boost::threads. Not used by the current build. Also turned off 'unused' warnings in QTCreator to match more closely the warnings that we pay attention to in the psp build. 2010-12-06 07:44:16 +00:00
wrenczes@gmail.com ffd3b7b074 At Z's request, fixed Issue 184, ExtraCost types with targets such as Siege-Gang Commander/Drowner of secrets combined with targeted abilities bug.
This one was a bit of a doozy to fix correctly, but the actual fix ended up being fairly simple - the upshot is that TargetAbility never checked for whether an extra cost needed setting prior doing a target selection.  While at it, I discovered and fixed another bug:  if you're in the middle of an extra cost choice (like sacrifice, for instance) and hit the next phase button, the game would let you proceed, and then hang in an endless loop.

While at it, did a little cleanup/refactoring around GameObserver's waitForExtraPayment - any time a bool has something that sounds like a verb, it probably deserves to be a function.  Now it is. (I needed to refactor it anyway, as I reused that code for the next phase hang.)

Note that after this fix, I had to patch two test cases (siege_gang_commander.txt & seismic_assault.txt) - since I've change the selection order (ie a target ability with a sacrifice cost requires the cost to be paid up front before picking the target), this means that tests involving targeting & sacrifices need to switch the order of the cards to pass.
2010-12-06 06:49:36 +00:00
solo81@web.de 4de3b4a3c0 Fixed Twisted Image. 2010-12-05 15:23:45 +00:00
wagic.the.homebrew@gmail.com c7a17a0e57 Erwan
- some code cleanup, as I am trying to figure out the root cause for issue 548
2010-12-05 14:13:42 +00:00
omegablast2002@yahoo.com 59864cbcb7 removed a variable mike readded accidently(?) which i converted into a static local variable 2010-12-04 21:59:08 +00:00
techdragon.nguyen@gmail.com a7675ec216 issue 547
fixed the bug where the ai "attacks/blocks" its own attackers during the combat phase.
Strangely, creatures only die in this bug when there are two or more suffering from
summoning sickness.

If somebody can double check this code change to make sure that it is appropriate.
My playtesting indicates a success but I don't have the variety of player decks others have.
2010-12-04 21:26:12 +00:00
omegablast2002@yahoo.com ba3ca7018b reduced the Eff by 50 up from 20 on Adrawer, and reduced to 0 if more then 10 cards in hand, theres too high of a chance that Ai will not be able to actually cast any of that and is just milling himself. 2010-12-04 21:12:58 +00:00
omegablast2002@yahoo.com e8582e1413 told Ai not to block its own attacking creatures(?), hopefully this is whats happening in issue 547.
its been discovered and maybe even known that Ai can do alot of illegal actions as if the rules we set inplace for the player don't apply to it.
2010-12-04 20:01:22 +00:00
omegablast2002@yahoo.com 7805e52910 Attempt to fix a bug with Ai and how it manages mana, if an ability or effect would add for exsample 3 black to the manapool, the old way this was set up would be either/or but never both, current mana was always just what was in the pool or what it could make.
with this change, currentmana is now what it could make and if anything is in the pool then add whats in the pool as potential mana., if it could potentially make mana then THIS is its currentpool. as getpotentialMana already handles the rest.

i originally added the manapool at the end of potential as my first attempt to stop this behavior, but this either/or if statement really got in the way of producing the result i wanted, which is, if 
Ai has a 3 swamps, and a dark ritual, and it cast darkritual.
in hand Ai has a 5 black drop.

in OLD set up Ai would see it has 3 mana, then it would see it had 2 mana from the untapped swamps. it would pass the phase thinking that it could not cast the creature.

NOW ai looks for how much it has in mana, it see 3 swamps, it cast dark ritual, it now see what it can create on the next call to findcards, it see 2 swamps + 3 mana in pool, it cast the 5 drop creature.


mind you that this does not fix Ai mindlessly casting dark ritual as we have no current system to tell AI "hey dont cast that card now its useless to do so" like the fancy system to tell it what abilities it should use on cards :) *maybe someday*
2010-12-04 19:45:39 +00:00
omegablast2002@yahoo.com 8a49d2af51 moved the gaurds i introduced in r2734 into the function selectAbility() as a static bool as suggested by jean, its much cleaner this way. 2010-12-04 18:25:59 +00:00
omegablast2002@yahoo.com 15e6fabd9f redid the counters menutext function to be more like the one "add mana" uses. makes it easier to read and add to later if needed. 2010-12-04 16:08:51 +00:00
omegablast2002@yahoo.com bd1253702f fixed the 3 urza's lands, for future refference please dont use card names as subtypes, wagic is completely capable of finding a card by name through targetchooser, thanks! 2010-12-04 14:29:19 +00:00
Xawotihs 488a055736 Added code to use Qt instead of libpng, libgif and libjpeg. Deactivated for the moment (works fine on Linux). 2010-12-04 14:19:09 +00:00
Xawotihs fb75d31887 activated log on iOS 2010-12-04 14:15:29 +00:00
omegablast2002@yahoo.com 142d6b4609 bug fixs, added colon to "damage" parsing so we can finally not worry about "damage" wanting to build a ability. it now has to look for "damage:" which makes it more consistent with how we made the other abilities. did the same with lifeset however no bug there.
2nd bug fix, 
commented out a peice of code that compared if power and toughness would be cancelled out by a new counter. exsample:
1/1 is cancelled by -1/-1...this is actually extremely incorrect, 

if you "put a 1/1 on a creature"
then you "put a -1/-1" on the same one. it does NOT remove the 1/1 as per MTG rules. the counters all all treated as NEW objects on a card. so a creature that had both those abilities used on it should have BOTH a 1/1 and a -1/-1 counter.
commenting out the section of code corrected this probelm.
modular creature, phantom creatures,sunburst and many many more will now correctly be able to use their counters even if they recieved "cancelling" Counters

last was just an improvement, as i got overly frustraited tonight while fighting with a deck that slaps many different types of counters on cards, i was having a very hard time telling what exactly i was about to put on a creature.

so what i did to correct this is create a much better menuText return on aacounter class.

PLEASE let me know if i missed a case where a counter is not showing correct text.
2010-12-04 12:32:33 +00:00
guzhenjie1@gmail.com 55de150aac Fix following cards:
Chainer, Dementia Master
Golem Artisan
Corpsehatch
Imps' Taunt(Imp's Mischief)
Samurai of the Pale Curtain
Summoning Station
2010-12-04 12:08:19 +00:00
solo81@web.de 9cb05ad07b Fixed Fire Dragon. 2010-12-04 11:09:54 +00:00
omegablast2002@yahoo.com 35742e57a3 opps i typoed in the card code fix lol. 2010-12-04 09:51:45 +00:00
wrenczes@gmail.com 1b876d61af Issue 494: "Valuable Collection" trophy is gone?
The check to give the award was lost in some of Jeck's reorg work (R1825), as ShopItem was deprecated & folded into GameStateShop. While at it, I took the liberty to delete ShopItem.h/cpp since they're not used.
2010-12-04 09:46:31 +00:00
omegablast2002@yahoo.com 7b8a9c851f Heliophial had no actual ability, corrected this. 2010-12-04 09:16:10 +00:00
wrenczes@gmail.com bb9ad159c3 Fix for Issue 530: wither vs daily regimen = crash?. Turns out that it was a simple missing NULL check in the code that draws counter info on the large format cards. 2010-12-04 09:09:24 +00:00
wrenczes@gmail.com 793f6245f0 Reinstated the call to setExtraCostsAction() in reactToClick, as removing it breaks Basal Sliver (when sacrificing another sliver, it would kill off Basal Sliver instead of the other sliver that inherited the ability). 2010-12-04 08:36:10 +00:00
wrenczes@gmail.com 6e327379fd Fix for Issue 529, May abilities with counters shouldn't present selection dialog when counters == 0.
The problem I found was specific to ManaProducer.  I added an additional check when calling isReactingToClick(), if the cost has an extra cost, check if it can be paid.  For this to work though, I had to change things around a little - there was a hack in the parsing code for ManaProducer abilities, where the cost wasn't being passed into the constructor.  To compensate, the extra cost was being set during reactToClick, but this is too late, as isReactingToClick is called first.  Now, where the hack occurs, after we construct the ManaProducer, if there's a cost, make sure we set the extra cost action immediately.

This seems to work well for the Vivid Creek card case: once the counters are tapped out, the menu system doesn't add the extra card abilities anymore, and you simply get the land tap without the menu popping up.  I'm not seeing any adverse effects so far with other mana producer cards, but I'd appreciate a sanity check from other people here in case there's some other fallout I'm not seeing from this change.
2010-12-04 07:39:32 +00:00
wrenczes@gmail.com 08761d294e The right way to fix the cast warning for PSP. 2010-12-04 06:46:25 +00:00
omegablast2002@yahoo.com e8e8553cd0 fixed psp compiling. 2010-12-04 06:26:05 +00:00
wrenczes@gmail.com 92bbb78ed1 Fix for [PSP|PC]ability menus and card view switch causes a crash. This broke as a side effect to the addition of the 'details' option that Mike added - the ActionStack had very rigid interpretations of what a valid control ID would be (either -1, or a valid id in its container). As kInfoMenuID is assigned a value of -200, this would crash when attempting to look up that index value in the vector.
I've patched the problem so that ActionLayer checks for a valid ID before doing anything, and does a no-op for IDs it doesn't know how to handle. However, this only fixes the problem during gameplay.  It's quite possible that hitting the triangle button in other places in the app might equally cause a crash.


Issue: 544
2010-12-04 04:25:43 +00:00
omegablast2002@yahoo.com b5ec029d79 couple changes, first i re-added my fancy getMenuText for becomes/transforms abilities, somewhere in the refactor these were forgotten. Fix "Swap" ueot menutext display, it was returning "ability".
fixed a Ai related bug, taught Ai not to mill itself to death basically. played a few matches which Ai was just destroying himself with a creature that allowed him to draw cards for each(whatever) in play. Ai will be a little more careful not to kill himself by Mill, also not to draw 30 cards in a turn when it clearly cant play them.
2010-12-03 20:59:46 +00:00
omegablast2002@yahoo.com b07b772c8e MAJOR fix to something was was causing very weird results ingame.
the tag "other " vs tag " other"

using "other " in target choosers will always work, however more often then not using " other" at the end of a line would produce weird effects, this was brought to my attention in a bug report by KF1, i moved all the " other" from outside target chooser into the actual target lines, as this always produces correct results in code, i imagine the tag at end of line was added before "other " was intruduced into targetchooser.

i will leave support for using " other" in code, however, i ask that we try not to use this code unless for some strange reason the targetchooser "other" doesnt take to the code.

stranger was that i noticed alot of mixed code, as in lord(other blahblah) 1/1 and this version with other tag at end, it was very inconsistent aside from causing weird weird results in game which i was actually able to confirm.

please update your primitive!!! this was ALOT of work.

correct syntax for "other "
lord(other blah)
all(other blah,blah,blah)
damage:1 target(other blah)
target(other *|somewhere)
notice its always first followed by a space. you only need one instence "other " in a targetchooser.
2010-12-03 13:08:53 +00:00
omegablast2002@yahoo.com 336b25c0f5 init'ed the variable "mFindingAbility" bool in Aiplayer constructor and changed its name from previous name "findingAbility" to keep in line with recent code rules.
added COMMENTS to explain the variable.
2010-12-03 12:10:35 +00:00
guzhenjie1@gmail.com e71fb8ff46 Add text for follow duel lands:
Blackcleave Cliffs
Copperline Gorge
Darkslick Shores
Razorverge Thicket
Seachrome Coast
2010-12-03 11:09:08 +00:00
wrenczes@gmail.com 4b7e024ce6 added DebugRoutines.h to the JGE VS2010 project. 2010-12-03 09:51:12 +00:00
techdragon.nguyen@gmail.com fab5f9da29 fixed formatting 2010-12-03 01:09:30 +00:00
omegablast2002@yahoo.com 0f419144b5 Fixed a bug where Ai was able to do actions such as sacrifice Mogg fanatic 3 time in a row by tripping over its own clickstream, added gaurds to selectAbility() function calls to prevent Ai from running multiple instences of selectAbility before its completed running another which occurs when Ai is offered an interupt after player cast/does an action.
this also fixes the spamming of Abilities like Ai atempting to untap something more then once, or Ai uses regenerate ability multiple times on the same creature.

there will be no noticible difference in Ai game play except now it actually doesnt do the above mentioned bugs.
2010-12-02 21:30:14 +00:00
Xawotihs 802937573d Fixed a crash occuring when trying to select card with the mouse in an empty list 2010-12-02 20:35:42 +00:00
omegablast2002@yahoo.com fb3129cad9 readding afiya grove, not sure when it was removed, but its back 2010-12-02 19:35:49 +00:00
omegablast2002@yahoo.com 08b6779d59 forcing Ai to attack with creature that have "treason" ( the ability that sacrifices cards like ball lightining at end of turn)
since the creature is going to die anyways, might as well send it in and see if it can kill something.

and yes i consider ai being THAT stupid a bug :P
2010-12-02 18:43:39 +00:00
omegablast2002@yahoo.com 2a4b0e28f0 another tweak, sorry! forgot i needed to compensate for removing the base by increasing the actual. 2010-12-02 17:06:20 +00:00
omegablast2002@yahoo.com 03bc34101f reduced abilitygranting base eff to 0, aparently when Ai has nothing better to do it spams ability grantings, but it should be playing cards. 2010-12-02 16:46:45 +00:00
techdragon.nguyen@gmail.com b8658bf04f modified final sentence for it to be grammatically correct. LOL 2010-12-02 16:23:23 +00:00
omegablast2002@yahoo.com d693887df9 wei ambush had a typo in the trigger. attcking( missing an "a" 2010-12-02 15:36:41 +00:00
wagic.the.homebrew@gmail.com 81153939f9 Erwan
- Fix a bug where AI would not check for the NULL status of some variables before calling functions on them. This would cause crashes that could seem random ingame. Possibly fixes issue 541
2010-12-02 14:03:10 +00:00
wagic.the.homebrew@gmail.com 15d504c160 Erwan
- fix for issue 539 . It is now possible to provide several possible paths in Res.txt, the game will use the first one that matches. If none of them works, it reverts to the oldschool "Res" folder
2010-12-02 12:56:18 +00:00
techdragon.nguyen@gmail.com bcca766cb6 Premade decks will not create/update stats on battles.
Update description for default premade deck to allow proper wrapping of text.  
Issue: 540
2010-12-02 08:36:36 +00:00
wrenczes@gmail.com 720ee30c9a Fix for issue 518, Shop "background light" image "candle effect" not working. Basically some bad math made the alpha clamp all the time at its max value of 50. Now we pick a random number distribution between -25 and + 25 for the alpha offset value. 2010-12-02 07:42:32 +00:00
wrenczes@gmail.com 2693f35506 Fixed the graphics whiteout bug I introduced when switching profiles. When Refresh() was being called on the texture, the bitmap wasn't been re-transferred back into the openGL context.
While debugging this, I noticed a separate issue:  when changing profiles, we'd actually call refresh twice.  Removed the spurious call, as reloading profiles doesn't need to concern itself with the image cache - that's already covered by the game options menu.

Also did some minor formatting / cleanup in the JGfx code for PSP - stubbed out a bunch of JLOG calls I had put in while debugging the PNG loading code.
2010-12-02 04:04:03 +00:00
techdragon.nguyen@gmail.com 8fa6578757 adding me4 for abra 2010-12-01 16:29:36 +00:00
omegablast2002@yahoo.com 68a7d418e9 Hiding "New Deck" option when "Create a Deck!" option is showing.
it was redundent.
2010-12-01 13:35:53 +00:00
guzhenjie1@gmail.com 17f61df89e Fix following cards:
Kashi-Tribe Elite
Kashi-Tribe Reaver
Kashi-Tribe Warriors
Matsu-Tribe Birdstalker
Orochi Ranger
Rancor
Vulshok Heartstoker
Wei Ambush Force
2010-12-01 12:56:32 +00:00
wrenczes@gmail.com af6c7bd1f0 Ran VS formatting on this file, as the indentation was all over the place. No actual code changes here. 2010-12-01 08:54:45 +00:00
wrenczes@gmail.com 65e38b0694 Another change that looks bigger than it is: changed out the global extern WResourceManager to a real singleton. This means that it's no longer being init'ed at static initialization time, and we can debug construction/destruction properly; it's also safer in a multithreaded context. 2010-12-01 08:22:17 +00:00
linshier aa6aa20ba5 Fixed left offset parameter handling for center/right align string drawing. A brief note about string drawing, offset and display width is added in the WFont.h 2010-12-01 08:01:13 +00:00
wrenczes@gmail.com a0427d99df These files were meant to be part of the previous checkin. I blame AnkhSVN yet again. Someone needs to write a Subversion tool with proper changelist support! 2010-12-01 07:20:26 +00:00
wrenczes@gmail.com 69c1ba8717 PC specific change (ie PSP not impacted) - OpenGL is not thread safe, only one thread is allowed to have the context at any given time. The JGE library was not written with multithreading in mind, so the LoadTexture call doesn't work when called on a worker thread. In order to get my threading changes to work, I had to split out the OpenGL calls to happen on a point where we're guaranteed to be back on the main thread.
Functionally, this has no impact to the current build - all I've done is effectively the texture loading to happen in JQuad's constructor instead of inside the LoadTexture() function.

Side note - I probably broke the IOS build with this change.  Sorry, but I can only build so many targets at a time - I'm simply not set up to build this platform.  As it's not a shipping target, I have to consider it a 2nd class citizen...
2010-12-01 07:19:12 +00:00
wrenczes@gmail.com 3a927dace9 Scope checkGlError() calls to be only active in debug targets (no-op in release). 2010-12-01 05:28:01 +00:00
wrenczes@gmail.com 609ece329e Splitting up my threading changes into smaller pieces, as it's getting too large. This change: pass strings by reference, never by value; some minor formatting cleanup in WResourceManager. 2010-12-01 04:27:56 +00:00
jean.chalard f9b4f248aa J :
* Add languages in their own language
2010-11-30 18:57:28 +00:00
wagic.the.homebrew@gmail.com 50c0f1dd8e Erwan
- reduced requirements for ai decks unlocks
- attempt to fix a Quad issue when unlocking something
2010-11-30 13:29:57 +00:00
techdragon.nguyen@gmail.com 96cdb7353a fixed line endings
fixed horizontal scrolling to be controlled by a function of dt as per linshier suggestion.
  * this allows compatibility for multi-byte character sets
2010-11-30 12:15:32 +00:00
techdragon.nguyen@gmail.com be707e2396 limiting the number of deck lookups to 6 to reduce load time 2010-11-30 05:39:17 +00:00
linshier 970cd456de Fixed some utf-8 decoding for Japanese and tweaked card text formating for multi-encoding support. 2010-11-29 17:40:21 +00:00
techdragon.nguyen@gmail.com 0c9f5cd558 moved word wrap function from Vertical Scroller into utils.
moved MTG specific functions out of utils.cpp into AllAbilities
added word wrapping to descriptions while viewing deck information.
2010-11-29 13:38:36 +00:00
techdragon.nguyen@gmail.com 4badcc374f * modified task window to define what the bracketed numbers mean.
* modified main page banner to use actual deck names and not the filename when
   displaying stats information.
2010-11-29 12:45:48 +00:00
omegablast2002@yahoo.com 8de00561d5 added 3 pixels to the y scale of the background image to cover up part of the scroller text for task which was visible under the back ground 2010-11-29 12:29:41 +00:00
techdragon.nguyen@gmail.com b46112dfcd reverting change made in r2701
The conditions on which to "updateStats" during the rebuilding of filters needed to be updated.  stw is NULL
when rebuilding the filters due to a "UNLOCK CARDS" action.  Thus the call to stw->updateStats throws a NPE.
stw is not null only when a deck has been selected to edit.  Otherwise, it makes no sense to actually update the
stats of a non-selected deck.
2010-11-29 11:50:12 +00:00
techdragon.nguyen@gmail.com 0856ddaeb2 added missing semicolon. missed it in the check in somehow... 2010-11-29 10:12:39 +00:00
omegablast2002@yahoo.com 6e6ca0394b seperated an if( statement that was causing a crash in deck editor when you used the "unlock cards" cheat. this->needsUpdate is actually a Null Pointer at the time its checked, so having it checked in the same if ( would instantly cause the game to crash.
Issue: 536
2010-11-29 00:36:38 +00:00
techdragon.nguyen@gmail.com 83daafb3bf Issue 537: The initializer for the options needs to be told how many different values are available. 2010-11-29 00:15:01 +00:00
techdragon.nguyen@gmail.com 8fd35ac513 Improved Vertical Scrolling 2010-11-28 23:54:36 +00:00
techdragon.nguyen@gmail.com 3205ebdc8b minor formatting issue 2010-11-28 22:14:20 +00:00
omegablast2002@yahoo.com 9932e81be1 whoops was double vectoring causing names to desync, sorry! this should fix it :) 2010-11-28 21:53:20 +00:00
omegablast2002@yahoo.com 29fc58388d Added 2 new cheats, "Optimize starting hand" and "Unlock all Ai decks"
added new mana display option "No Glitter" acciddently(?) lost "both" options somehow.
the new "no glitter mana display is basically "eye candy without particle effects" on PC created 2000 mana...no FPS drop...on PSP created an EXTREMELY large amount of mana before i noticed an FPS drop of any kind, this is dramatically better then 
what was in previous rev, create 20 mana and crash.

if someone could figure out how i manage to lose the "Both" option, please explain to me why it wasnt showing up, i spent 2 hours trying to get it back.

both "optimize starting hand" and "Unlock all Ai Decks" appear in options under the option to "enable cheats"

optimize gives you decent starting hands, and Unlock all Ai decks is basically just a bypass options for the unlock deck mode varible wololo added.

tweaked abilitygranting Eff in Ai lessons to be divided by the number of cards in hand, this will mean Ai will tend to focus on using mana to cast spells instead of using them to grant abilities, until theres only 1 or less cards in hand, at this point it will go all out. there is a splash of randomness in Ai so it will still often do whatever it freaking wants lol, you should notice a proformence increase from Ai in this aspect. no more giving unblockable to a creature in 2nd main.

please note, one of the recent previous revs broke cheat mode "unlock cards" in deck editor, i filed a bug report. its a probelm i was not able to fix myself so there is no fix included in this rev....i came across the bug while testing cheat mode stuff.
2010-11-28 20:55:04 +00:00
solo81@web.de ca3417bd40 Fixed issue495. 2010-11-28 14:53:50 +00:00
solo81@web.de 4c2d631921 Moved Eye for an Eye to the mtg_todo.dat. It probably never worked.
Closing issue521.
2010-11-28 14:50:56 +00:00
solo81@web.de 181e861e73 Fixed issue522. 2010-11-28 14:46:47 +00:00
solo81@web.de 01da70f9dc Changed the name of FAL to PD2 (thanks to KF1!). 2010-11-28 14:36:54 +00:00
solo81@web.de 790d1ffce6 Added "Premium Deck Series: Fire and Lightning". 2010-11-28 11:14:53 +00:00
wagic.the.homebrew@gmail.com 36391e271f Erwan
- fix a bug where deck unlocks wouldn't be saved (and reset after quitting the game)
2010-11-28 05:14:47 +00:00
wagic.the.homebrew@gmail.com 3253006cb9 Erwan
- Adding Kaioshin's new background
2010-11-28 04:27:15 +00:00
wagic.the.homebrew@gmail.com 1f83f21127 Erwan
- version string update / replaced "beg for donation" text in game end screen
2010-11-28 04:23:30 +00:00
wagic.the.homebrew@gmail.com 52fce24bf8 Erwan
- Added AI Decks unlock system. Please update your graphics folder, and crossing fingers that Ilya B. is still around as I don't have the correct fonts.
2010-11-28 04:15:58 +00:00
omegablast2002@yahoo.com 84c2bd5a1e fresh eboot 2010-11-27 20:50:17 +00:00
omegablast2002@yahoo.com 62e1dfa0d0 last adjustment for today, promise...Ai will now use tappers/untappers religously based on card ranking. 2010-11-27 20:47:34 +00:00
omegablast2002@yahoo.com 0dae942cd0 final adjustment, moved a couple things in the foreach and altered a condiation to suit unknown foreachs, generally its always a good idea to use these cards, since thier effects only get better and better. 2010-11-27 19:56:00 +00:00
omegablast2002@yahoo.com 7c7280a8de forcing eff of ability modifying to 0 if creature already has it. 2010-11-27 19:29:18 +00:00
omegablast2002@yahoo.com 01d46fd0d1 changed the target checking function of lifer in Ai training, sometimes it would return the creature as the target and Ai would refuse to use it. 2010-11-27 18:53:52 +00:00
omegablast2002@yahoo.com 6467ab5aa8 reduced abilitymodify eff slightly increased base eff, added abilitygranted to activated. 2010-11-27 18:28:38 +00:00
omegablast2002@yahoo.com e23e3d0728 more Ai training: use ability modifiers on creatures that dont already have the ability and prefferedly during first mains, use life altering cards as often as possible, improved foreach a little more, use untappers on card that are tapped that belong to Ai and tappers on cards that are not tapped that belong to player 2010-11-27 18:05:35 +00:00
techdragon.nguyen@gmail.com 76dc9a2379 Issue 533: restoring "glowing" effect of stars in menu items. 2010-11-27 16:57:14 +00:00
Xawotihs 4f54425fb3 Added return and esc key as binding to MENU 2010-11-27 16:08:11 +00:00
omegablast2002@yahoo.com 3151dfd348 Better Ai: Foreach training, reduced Eff on "levelingup" based on cards in hand/maxxed in 2nd main, added a selectAbility() call after lands are played and after all cards were searched if none were found to play. after much playtesting i found that if given the chance to find an ability BEFORE playing cards, Ai does dramatically better during a match, the same goes if its given a chance to find one after it looked for stuff to play.
with this change please try playing a few matchs against vanguards chosen and wraith feast, my 2 most favorate decks to fight now. youre in for a treat :)

keep in mind that even tho ive taught Ai Foreach in a somewhat crude manner it still does not understand how much mana it can gain from a foreach manaproducer, and this does not make it suddenly use dark ritual correctly. however this change was dramatic enough that i wanted it in for 14.1

this is also still under massive play testing, however no issues were found so far with it as it is presented here.
2010-11-26 22:10:43 +00:00
wrenczes@gmail.com 75345469ee File addition for my threading work. This has no impact on the build until I tie in my other changes. 2010-11-26 19:41:15 +00:00
techdragon.nguyen@gmail.com 5bb435d525 restoring rendering of stars 2010-11-26 11:22:05 +00:00
Xawotihs 4951442499 Improved texture loading on iOS 2010-11-25 23:18:57 +00:00
techdragon.nguyen@gmail.com 29805852c8 changed vertical scroller as per wololo's suggestion. Scroll speed is a function of the
dt value gathered from Update() instead of ticks.
2010-11-25 16:39:22 +00:00
techdragon.nguyen@gmail.com 22b743ccdf restoring scroller on main page to normal speed 2010-11-25 13:52:36 +00:00
techdragon.nguyen@gmail.com 77cfdf4571 implemented wrapping horizontal scrolling for deck selection screens 2010-11-25 11:32:18 +00:00
techdragon.nguyen@gmail.com e4c8469490 implemented vertical scrolling.
created new class VerticalTextScroller to handle task display in deck selection screens
modified detailed popup placement on deck selection screen to compensate for lack of border
2010-11-24 16:12:18 +00:00
omegablast2002@yahoo.com 2aa47cd68b reverted the change i made, found specail cases where this cause bugs. 2010-11-24 14:40:06 +00:00
omegablast2002@yahoo.com d1577ef35e corrected an issue where the player was being offered interupt 2 times for "combat damage" not closing the ticket until i can get some help verifying that it covers all cases where it might be true. 2010-11-24 13:46:27 +00:00
techdragon.nguyen@gmail.com de60166440 disabled popup border until solution can be made to work on PSP in an acceptable manner. 2010-11-24 00:35:57 +00:00
Xawotihs 6ae7717de2 included debug files in Qt project 2010-11-23 23:36:55 +00:00
Xawotihs 7e37e68755 more iOS port fix 2010-11-23 23:35:40 +00:00
techdragon.nguyen@gmail.com ba027c9f8e addresses r2659
http://code.google.com/p/wagic/source/detail?r=2659
2010-11-23 22:26:16 +00:00
techdragon.nguyen@gmail.com a512b12014 fix for issue 527: Reinforcements definition caused AI to crash. ( buffer overflow of ability string for token )
* updated definition for Heliophial, changed counter naming for auto abilities to match.
2010-11-23 19:25:53 +00:00
wrenczes dcd8c96c7b boost static threading lib for linux. 2010-11-23 19:08:38 +00:00
wrenczes@gmail.com 1baf9776d5 Some additional boost headers required for linux thread support. 2010-11-23 19:05:23 +00:00
omegablast2002@yahoo.com bce5b9e54b Ai training: some Foreach training, optimizted the equip training to have Ai better use equipment, it should no longer leave equipment sitting around, enticed Ai into paying upcost on cards YAY! no more summon now and lose it next turn! :) enjoy. 2010-11-23 16:52:46 +00:00
techdragon.nguyen@gmail.com b5ff86b14c adding images for popup menu changes in previous check in 2010-11-23 14:03:02 +00:00
techdragon.nguyen@gmail.com e39c94756b added border to extra details popup as per design at
http://wololo.net/forum/viewtopic.php?f=37&t=2380
and
http://wololo.net/forum/viewtopic.php?f=37&t=2382
2010-11-23 14:02:02 +00:00
Xawotihs 8d758d4775 Changed fps on desktop to run at 200 fps, changed mobile to start in
fullscreen
2010-11-22 22:58:57 +00:00
techdragon.nguyen@gmail.com 8c7e06b6dc fix for issue found in forums with reinforcements. Not sure how wide spread the original coding will cause errors but this solution avoids it entirely.
Issue: 527
2010-11-22 21:38:12 +00:00
Xawotihs b057532a2e Fixed library include path in the Qt project on Windows 2010-11-22 19:26:33 +00:00
techdragon.nguyen@gmail.com 22fd66493a added in commas for abilities string. This was supposed to go into the last check in. 2010-11-22 15:54:15 +00:00
techdragon.nguyen@gmail.com 064dad3085 reverted ability/color parser for AATokenCreator.
fixed color parsing error for Transformer classes
2010-11-22 09:51:36 +00:00
linshier 4c7b4f4df9 Fixed texture binding in JRenderer. Note that if we want to bind or rebind a texture, we should set mCurrentTex to the target texture id first. Otherwise, it can cause some display bugs in some situation as BindTexture() tracks down the mCurrentTex for an optimization. 2010-11-21 16:09:45 +00:00
Xawotihs fcd2f61c39 Fixed psp warning 2010-11-21 08:51:05 +00:00
wrenczes e2659b63f1 Fixed a couple of sprintfs that wouldn't compile on Linux. 2010-11-21 04:11:23 +00:00
Xawotihs 2b6469e391 Mouse support in deck editor 2010-11-20 21:30:15 +00:00
techdragon.nguyen@gmail.com f1a4f26c79 fixed unsigned vs signed int comparison for vector iteration. 2010-11-20 19:50:06 +00:00
techdragon.nguyen@gmail.com 7e55039b0a * added hashmap for all basic abilities.
* created three new utility functions that return a vector of matching abilities, colors and types
* migrated all activated ability impl into AllAbilities.cpp.  Perhaps we could break AllAbilities up into separate impl files for manageability?
    One for Activated abilities, another for triggers,etc
2010-11-20 19:41:26 +00:00
Xawotihs 048ecb3324 Mouse support in Shop 2010-11-20 17:46:53 +00:00
linshier bf3d01ae74 Added linebreak support for JTTFont in JGE. 2010-11-20 15:40:53 +00:00
linshier deea874591 Fixed the setsize bug for JTTFont in JGE. 2010-11-20 15:24:11 +00:00
linshier c51321d292 Fixed makefile for Boost including on linux. 2010-11-20 15:13:16 +00:00
techdragon.nguyen@gmail.com 510b91935f modified phase error statement to be more descriptive. Added phase name to message. It was previously showing only the index number which is unhelpful. 2010-11-20 11:49:28 +00:00
techdragon.nguyen@gmail.com 36d25441e2 * fixed some boundary conditions for menu initialization
* changed # victories to be calculated value
* removed nbVictories accessor
2010-11-20 10:11:06 +00:00
wrenczes@gmail.com 4a0965c853 Initial drop of Boost v1.44. This isn't the full library, just a subset that includes the more useful ones like shared_ptr and threads. Currently not wired into anything. 2010-11-20 07:52:11 +00:00
wrenczes@gmail.com 0c4b43a491 Added an additional clean option for stale versions of the precompiled header that might have been orphaned in the include folder. 2010-11-20 07:08:25 +00:00
wrenczes@gmail.com e0872b852d Fixed the PSP build. Turns out that the make file wasn't properly cleaning out the .pch file when running make clean. Also renamed JgeRect to JRect for consistency with other class definitions in JTypes. 2010-11-20 06:34:13 +00:00
Xawotihs 3725958fc3 Fix mouse support in menus and first screen 2010-11-20 00:33:37 +00:00
Xawotihs 58abfaa8e6 Fixed crash on Linux introduced with the iOS patch 2010-11-19 23:38:56 +00:00
Xawotihs 8339cdd3b3 iOS compilation fixes 2010-11-19 23:16:31 +00:00
techdragon.nguyen@gmail.com 6d855e6cda fixed unsigned int comparison issue. Replaced int with size_t 2010-11-19 23:03:16 +00:00
techdragon.nguyen@gmail.com 5f70d1cff1 * Renamed AManaRedux to AAlterCost since the latter is more representative of the effect
* moved more implementations from AllAbilities header file into the impl file.
2010-11-19 14:55:29 +00:00
techdragon.nguyen@gmail.com e553d83098 added SAFE_DELETE 2010-11-19 11:33:00 +00:00
techdragon.nguyen@gmail.com badbc1c040 more reformatting 2010-11-19 11:30:23 +00:00
techdragon.nguyen@gmail.com 6958411f4d Issue 525: fixed NPE for ABecomes
Reformatted AllAbilities.h
2010-11-19 11:11:22 +00:00
wrenczes@gmail.com 76d5b57c1e More VS2010 configuration changes - includes a boost include/lib path (not currently in the trunk), and new file additions/deletions. 2010-11-19 07:14:19 +00:00
techdragon.nguyen@gmail.com e0da1b2565 added override to enable details view for Player deck selection screen. 2010-11-19 06:48:51 +00:00
techdragon.nguyen@gmail.com f684795810 refactored menu classes
fixed some layout issues with detailed info popup
changed requirements for detailed info popup button to be determined by the number of wins aginst AI deck instead of just the number of games.
2010-11-19 04:19:03 +00:00
techdragon.nguyen@gmail.com 4aaa93439a code clean up. removed unneeded methods for stats generation
synced stats info for mana curve on detailed display on deck selection screen so only up to
   Constants::STATS_MAX_MANA_COST+1 is used instead of the currently hard coded 15.
2010-11-19 03:18:48 +00:00
wrenczes c3f99786fc Don't draw counter text when the draw mode is kHidden; removed two unused member functions. 2010-11-19 01:30:00 +00:00
techdragon.nguyen@gmail.com 2a8f8074e6 New descriptive text popup feature for deck selection
http://wololo.net/forum/viewtopic.php?f=13&t=2423
2010-11-18 15:48:48 +00:00
wagic.the.homebrew@gmail.com f7bcbb42dc Erwan
- had some problems compiling for the PSP. I assume I was the only one, please let me know if the "include JLogger" lines are not needed (they were needed for me)
- Fix a memory leak when playing in "random deck" mode
- Prevent the AI from playing cards with a cost it cannot understand (ExtraCosts with a target).
2010-11-18 14:04:24 +00:00
omegablast2002@yahoo.com 09afcea7da rhox-added regenerate, knights of cliffhaven added maxlevel. 2010-11-17 11:37:47 +00:00
solo81@web.de 9a32c507b6 Fixed Vebulid.
Readded Footsteps of the Goryo. Zethfox had a solution for this!
2010-11-16 12:09:46 +00:00
techdragon.nguyen@gmail.com 79f0fef835 fixed missing brace 2010-11-16 01:18:11 +00:00
techdragon.nguyen@gmail.com acd7bb1aa4 reformatting code according to guidelines defined at
http://wololo.net/forum/viewtopic.php?f=35&t=2235&start=10
2010-11-16 00:55:16 +00:00
solo81@web.de c79fdcbf50 Fixed several cards.
Blitz Hellion
Deathcoil Wurm
Laccolith Grunt
Laccolith Titan
Laccolith Warrior
Laccolith Whelp
Line Wolf
Pride of Lions
Righteous Fury
Rhox
Thorn Elemental
Tornado Elemental
Wolf Pack


Removed Foosteps of the Goryo. It cannot work right now for the same reason as Miraculous Recovery cannot work.
2010-11-15 21:03:09 +00:00
wrenczes b0c826ca01 Fixed the crash I just introduced when buying boosters. 2010-11-15 16:32:48 +00:00
jean.chalard 1317eb0d29 J :
* Add multilingual support for utf-8.
* Use japanese as a test case (removing the old tentative support).
* A number of shortcomings affect this code.
  + Bugs :
    - This splits algorithms used to determine the length of a string
      and to render it in two: either the string starts with an ascii
      char and the monobyte, variable-space algorithm is used, or it
      does not and a multibyte but fixed-space algorithm is used.
      This shortcoming also exists in the code to support chinese.
    - From the above comes the biggest limitation: any string that
      starts with an ascii character but include non-ascii characters
      will not be rendered correctly.
    - This does not and cannot support chars outside the BMP. This
      probably won't matter, ever.
  + Todos, fixmes, wishlist :
    - Single-width characters with diacritics are reported as
      double-space chars. It doesn't matter too much at the moment, but
      should be fixed in the future.
    - Font support currently only includes japanese.
  + Performance and compatibility notes :
    - Chinese code has not been switched to utf-8, to maintain backward
      compatibility. We should switch it at some point in the future,
      but ponder the right way to do it first.
    - Retaining the support for chinese with a non-international
      charset hurts performance (by making some methods uselessly
      virtual).
* Still, this generally works and is extensible (it can be used to
  implement korean, traditional chinese, etc, without any more code).
  Implementing languages with diacritics needs an improvement of the
  bool doubleWidthChar() method.
2010-11-14 16:24:29 +00:00
solo81@web.de 3cedeb4d85 Fixed issue513. 2010-11-14 10:15:02 +00:00
wrenczes@gmail.com 27fd107208 1st step in refactoring some of the card rendering logic - currently, each 'client' has duplicated code having to deal with how to render the full card graphic vs text mode vs using a 'back' image if a card isn't found. This is a first pass at consolidating some of that logic to one location - the ultimate goal being, eventually, the resource cache will actually own the notion of whether it's handing out a real card image or a default filler if the card isn't available, and the client code rendering the card should be oblivious.
In this change, I made the CardGui's RenderBig() and AlternateRender() functions protected; anyone wanting to render a card simply calls RenderCard(), and the card drawing mode is passed along as a param.
2010-11-14 08:15:26 +00:00
wagic.the.homebrew@gmail.com e758c7eea1 Erwan
- trim long deck names in deck editor/ deck selection
- fixed a bug were the background was rendered in the items loop of the deck selection screen
2010-11-14 02:25:01 +00:00
wagic.the.homebrew@gmail.com b934f0a5ab Erwan
- reimplement r2609 with inheritance, and cleaned up the function code.
2010-11-14 01:35:26 +00:00
wagic.the.homebrew@gmail.com d668fbb45c - unix endings for GameStateDeckViewer.h
- fix for issue 509 (font color was incorrect at end of some tests)
- Fixed Dregscape Zombie (fix for test unearth3.txt)
2010-11-14 01:15:46 +00:00
wrenczes@gmail.com fe9c43bc81 Fixed the makefile - the precompiled header additions I previously made wasn't quite syntactically correct, causing unnecessary rebuilds of untouched object files. Now only touched cpps will be rebuilt as expected. 2010-11-13 08:53:22 +00:00
omegablast2002@yahoo.com 2c1e18050c had to add this to prevent crashing in the shop from buying a booster, i understand the need to reduce code but does every single function have to share every other classes functions? this was originally supposed to be a tiny change, but there was no way to define the difference between the card display used by shop and the ones used by grave and library. 2010-11-12 19:12:19 +00:00
omegablast2002@yahoo.com f24a7410db Roc egg was reported to have been a uncommon card, was incorrectly listed as a rare in the card.dat. 2010-11-12 18:41:02 +00:00
omegablast2002@yahoo.com 6adf96e20c added up and down to the buttons that can close a card display box. now while in graveyards, opponentshand, libraries, if you pressed up or down rather then being tossed into the card selector zones above or below it will close the box and move to the new area. 2010-11-12 18:35:22 +00:00
omegablast2002@yahoo.com 71b0a7dee4 Exuberant Firestoker tweaked, appears to work just fine, please let me know if any futher issues ariase from this.
Issue: 458
2010-11-12 17:35:28 +00:00
omegablast2002@yahoo.com e2d9662845 Quirion Ranger was coded with untap land instead of creature.
Issue: 510
2010-11-12 17:28:06 +00:00
omegablast2002@yahoo.com 87bf93365e Simulacrum fix again, dejavu. 2010-11-12 13:13:28 +00:00
techdragon.nguyen@gmail.com 49726799ff updated comment on maxlevel 2010-11-12 11:55:43 +00:00
techdragon.nguyen@gmail.com 7aa76630fa changing leveler coding to use "maxlevel" syntax as "level=" is not supported. 2010-11-12 10:01:20 +00:00
techdragon.nguyen@gmail.com 2d546f111a corrected casting cost for Argentum Armor, it should be {6} not {2}
removed duplicate entry for Oblivion Crown. I'm assuming the def with "teach" is the correct one.
2010-11-12 08:16:40 +00:00
techdragon.nguyen@gmail.com f16192f685 added in missing tests for primeval titan and sun titan. ( these were not added on initial change )
fixed definitions for sun titan and primeval titan. ( these were clobbered with the latest changes. )
2010-11-11 17:05:28 +00:00
solo81@web.de 87f31121f5 Fixed Pentad Prism and Yomiji, Who Bars the Way. 2010-11-11 11:52:25 +00:00
techdragon.nguyen@gmail.com 708b82b060 changed manaredux to altercost to match parser 2010-11-11 07:15:33 +00:00
techdragon.nguyen@gmail.com 7d291747a1 changing keyword manaredux to altercost as it is more misleading for manaredux to also mean cost increase.
altercost is more representative of the actual effect than manaredux.
2010-11-11 07:14:49 +00:00
techdragon.nguyen@gmail.com f73da58a9a reinstating new manaredux syntax as the last update clobbered the changes. 2010-11-11 07:01:15 +00:00
wrenczes@gmail.com 8ad597f565 Fixed the swizzle functions for the PNG loading support in JGE. (This is a psp-only fix, it has no impact on the win build.)
This is the main fix for the situation where we try to load PNGs after the image cache has been saturated - instead of requiring 1 Meg as a temporary buffer to perform the swizzle operation on a full image (ie 512 * 512 texture size), these mods allow the swizzle to work in line with a temp buffer of  512 * 8 lines (ie 16K of memory).  I also fixed a case where the swizzle didn't operate correctly on PNGs that weren't an even multiplier height of 8 - we'd drop the remaining lines on the floor, creating garbage lines at the bottom of those images.
2010-11-10 23:50:26 +00:00
solo81@web.de b5e451d529 Added 130 successfully tested cards, mainly based on rev2554 (!!THANK YOU ZETH!!)
Maybe 30 of those cards have been found during a scan of every Magic set, they could have been in for quiet some time... .

Card list -->> First comment
2010-11-10 22:00:16 +00:00
omegablast2002@yahoo.com eff32303c7 changed the MENU_FONT size to 1.0f until mike can find a nicer solution to the menu text font size issues. THIS WASNT A PROBELM UNTIL THE FONT WAS CHANGED!!!!! find out what this font is missing that the other font had!!!
previous font was able to correctly display deck menus names that were MUCH larger in sie then the new font.
2010-11-10 19:34:28 +00:00
omegablast2002@yahoo.com 0773e9470b seperated a varible that determined the amount of sliding of cards based on how many noncreatures and nonland cards you had.
what this change does is this. if i have 20 enchantments on the battlefield Ai's creatures and lands no longer slide to the right. and vice versa. made no sense that if the other player had no artifacts/enchantments that HIS lands and creatures would slide simply because the OTHER player had artifacts/enchantments.
2010-11-10 19:32:37 +00:00
wrenczes@gmail.com f4fddda4ab Sidecar fix for the Deck menu hang bug: now the psp doesn't hang, but it goes to a crawl as we keep trying to reload the image on every render. Added a stopgap so that if we fail, we don't try to load the background anymore. To be reverted once we fix the PNG load failure on low memory. 2010-11-10 02:43:28 +00:00
wrenczes@gmail.com eea91e9a1a Two changes here:
1) Consolidated the Loggers so that we only have one in JGE.  Added a helper constructor/destructor to the JLogger class so that you can instantiate one at the top of a function, it'll trace out a 'start' and 'end' message when it goes in & out of scope.
2) Fixed the crash part of a bug I've been chasing down where, on the psp, after saturating the cache, the game dies when trying to reload the background PNG image of the deck menu. We still need to fix the root cause of the failure (not enough memory to allocate a temporary buffer for the swizzle operation), but at least the psp doesn't lock up anymore.  I've also left behind all the log traces I inserted into the LoadPNG code, since we'll probably need them again.
2010-11-10 02:24:39 +00:00
techdragon.nguyen@gmail.com 2c3e1b551b 1) When "Cancel" from the 2nd deck selection was introduced, proper clean up was not implemented of the player information.
It was only handled at the end of the game or when somebody quit in the middle of a game.
    Nothing was done if somebody wanted to choose a differnet Player deck.
2) making clean up of objects a little more explicit in the mtggamezone and GameStateDuel objects
2010-11-10 00:56:30 +00:00
techdragon.nguyen@gmail.com f176f7378d removed redundant delete of mPlayer[i]->game as it is already taken care of in the destructor for Player in the next line. 2010-11-10 00:53:56 +00:00
wrenczes@gmail.com 3525696523 Fixed the build - missing file from my last submit. 2010-11-09 23:17:40 +00:00
wrenczes@gmail.com 3eeb8a6465 - renamed WResourceManager::autoResize() to ResetCacheLimits(), since the function doesn't actually resize anything. It's merely setting clamping limits on when we should purge the cache.
- fixed the debug framerate calculation / drawing code (consolidated duplicated functions & variables mDelta vs a win-only mDeltaTime, no reason to have two), repositioned it to draw on the bottom left (it was colliding with other debug text for the cache info).
 - for debug testing purposes, added a #define override to force the image cache to work with less memory (I've picked 8 megs, which is what the psp seems to use - the normal default on win/linux is 20 megs).
2010-11-09 19:01:38 +00:00
techdragon.nguyen@gmail.com c1f8e95a11 changed call to new to NEW 2010-11-09 12:29:33 +00:00
techdragon.nguyen@gmail.com 286d18847b code cleanup: removed dead code/ unused variables. 2010-11-09 12:19:17 +00:00
linshier c71f8f4a46 Fixed traslation code of deck descriptions for new deckmenu. 2010-11-09 11:19:06 +00:00
techdragon.nguyen@gmail.com 164f2c5205 modified font size so deck name fits on screen when selecting deck for game play. 2010-11-09 05:45:24 +00:00
linshier 17c358cb12 Fixed a compiling error for GCC-4.4.5. 2010-11-09 02:57:52 +00:00
wagic.the.homebrew@gmail.com 09f01a9eae Erwan
-remove DOLOG committed by mistake
2010-11-08 13:46:21 +00:00
techdragon.nguyen@gmail.com 1e988ef6bb make rendering of retrieval and rendering of background more tightly bounded. 2010-11-08 13:41:32 +00:00
techdragon.nguyen@gmail.com 7fe03d52fd resolved linux compilation issues 2010-11-08 11:59:28 +00:00
techdragon.nguyen@gmail.com 23937f593e clean up of headers 2010-11-08 11:44:20 +00:00
techdragon.nguyen@gmail.com 7d25523a19 fixed line endings 2010-11-08 11:36:28 +00:00
techdragon.nguyen@gmail.com 8ba33c9b58 * updated title font size for deck selection screen to ensure it will always fit
* added deck name max pixel size to ensure no deck name overflows into borders of menu.
2010-11-08 11:15:16 +00:00
wrenczes eec0c5b717 More theoretical fixes to the scroller. I didn't repro this on win, but I had a couple of cases on my psp - I suspect that the missing reset on the currentID counter was causing problems should the task list shrink after a duel. Also added a modulus calculation to make sure that we never go outside the bounds of the string vector. 2010-11-08 09:26:21 +00:00
wrenczes 52a2823f7b Fixed the build; line endings -> Unix. 2010-11-08 09:23:16 +00:00
wrenczes@gmail.com 6d8e7edcbf Improvements against http://code.google.com/p/wagic/issues/detail?id=50, Mana animation slows PSP down.
Two things: 1) there was an extremely inefficient implementation in the particle system of a queue where, when particles expired, each expired element would be copied over(replaced) by one at the rear of the container. Depending on the performance of the update, this could range anywhere from 100 to 500 (the max particle count) memcpy operations per update loop.  I replaced the flat array with a std::list, and simply pop the unneeded elements when they expire now.  This seems to shave ~30% off the time spent in the Update() call.

2) Hardcoded the number of emitters for the mana particles to 60 (the default in the psi file seems to be around 114).  This reduces the amount of iterations per tapped mana by just over half, which also helps the performance, and it's not really noticeable - the glow effect is a *tiny* bit more muted, but chances are, if you didn't read this comment, you probably wouldn't have noticed.

I've gone from having my psp start lagging noticeably at 8 tapped mana to about 12 - at this point, I think the bigger remaining lag is the fact that when there's a cache miss for a card image, we're doing synchronous i/o on the main thread - the framerate drop this causes is far more noticable than the mana particle lag.
2010-11-08 07:27:19 +00:00
techdragon.nguyen@gmail.com 61cc3692a5 promoted StatsWrapper struct into class
altered deck editor information display for statistics
2010-11-07 18:28:54 +00:00
wrenczes@gmail.com 2d31cbdaf5 Some tweaks to the fonts in the game deck selection screen - the 'wagic' green cursive font was a bit of an eyesore, and wasn't consistent color-wise with the other main font used for the stats & description. 2010-11-07 14:21:21 +00:00
wrenczes@gmail.com a90d2ed2e7 Fixed two double->float conversion warnings. 2010-11-07 13:49:17 +00:00
wrenczes@gmail.com 7818277e3a Fixed a bug in the text scroller that caused it to display only the first item. 2010-11-07 13:03:36 +00:00
wrenczes@gmail.com 471cbd6ba4 More type conversion warning cleanup. 2010-11-07 12:09:04 +00:00
wrenczes@gmail.com e717b2f260 Line endings -> Unix. 2010-11-07 12:02:55 +00:00
wrenczes@gmail.com a053c0d59e More type conversion warning cleanup. 2010-11-07 12:00:23 +00:00
wagic.the.homebrew@gmail.com 5d907f5abe Erwan
- Added a possibility to put a file "Res.txt" instead of the folder "Res". The file Res.txt is a simple 1 line text file, telling where to find the Res folder, terminated by "/". For example: "../../wagic_res".
This addresses issue 428 . This could also help us in the future, to develop mods.
2010-11-07 09:26:29 +00:00
wrenczes@gmail.com b14e3808db Minor code cleanup - pass by reference instead of value; instead of creating temp char arrays on each deck loop while building deck metadata, use an ostringstream when needed. 2010-11-07 03:55:56 +00:00
wagic.the.homebrew@gmail.com 416617fc0d Erwan
- fixed memory leak in AEquip/ATeach 
- Test suite now trims strings correctly (allows to have space between comma-separated card names)
- Added Paradise Mantle (for ATeach test)
- removed a missing wallpaper from wallpapers list
2010-11-07 02:27:54 +00:00
wrenczes@gmail.com b2ee9c0f41 More VS 2010 solution files. The props file is required; the filter is a nice to have (ie, the solution file organization is broken out into a separate file now in 2010, whereas it used to be embedded in each vcproj file). 2010-11-07 02:12:50 +00:00
wrenczes@gmail.com 3c19533a4c Added the notion of a 'cancel' button, and unified all the 'cancel' menu IDs to be kCancelMenuID (ie -1). I've slaved the Menu button (ie Esc on win, 'Start' button on PSP) to this - the idea being, if you hit the Menu button to bring up a menu, hitting it again will dismiss it without doing anything, which is pretty standard behavior for most console/computer games. 2010-11-07 02:08:17 +00:00
techdragon.nguyen@gmail.com b0c61049da tweaked menus a bit.
fixed possible NPE with background image retrieval
2010-11-06 10:05:54 +00:00
omegablast2002@yahoo.com f5d7f03086 final fix for affinity, thanks mike for pointing it out. 2010-11-06 09:19:07 +00:00
omegablast2002@yahoo.com ce1a079646 fixed another boo boo with affinity. *facepalm* 2010-11-06 09:04:44 +00:00
omegablast2002@yahoo.com 21dabf94c1 Simulacrum coded now
Issue: 502
2010-11-06 08:09:37 +00:00
omegablast2002@yahoo.com 6c616f2741 added pdcount varible. playerdamagecount for the turn. this is for Simulacrum style cards.
Issue: 502
2010-11-06 08:07:48 +00:00
omegablast2002@yahoo.com ed03d2f3ef added optimizing of opponents hand if the opponent deck is listed as "easy". slight optimize if listed as "normal" none if listed as "hard" this provides slightly more challange from even poorly constructed Ai decks. taught Ai to pump creatures during combat, and more so if its heading directly at player, taught Ai that its better to use "becomes" and "transforms" during first main. this allow its to actually attack with the manlands ect.
new ability lord...teach(whatever[whatever]) ability.
teach is a targeted lord, it takes the cards current target and lords it the ability. im aware of a tiny memleak it contains, but the leak is happening on parser lvl, so i need more eyes to look at it. teach is ideally used for equipment, and was designed to fix issue 244 taught abilities are not given to the source cards.

forced Ai to pay for sunburst correctly. it was choosing to pay with all of one type of mana. now it pays either max or 1 from max sunburst.

added a tiny double check for Ai to try and find something to use if it suddenly has mana in its pool. it is only a single check in a turn, but i notice it actually does slightly improve the usages of dark ritual and foreach mana producers. ideally i wanted it to check EVERYTIME. but i could not achieve it without putting the game in danger of looping. so once is better then none :/

fixed a bug with affinity where it was not counting duel lands, this is becuase of not setting it up correctly for lands with multiple types SORRY!
2010-11-06 06:59:43 +00:00
techdragon.nguyen@gmail.com 0c34d7a04f removed dead code
reformatted statements
removed unnecessary debug statements
fixed a few floating point warnings
2010-11-06 03:49:15 +00:00
techdragon.nguyen@gmail.com 8908e86857 removed some compiler warnings
changed variables to float where appropriate
2010-11-05 08:07:50 +00:00
Xawotihs 91cf0c8d37 Added missing files 2010-11-05 07:26:01 +00:00
Xawotihs 1bde7b1dea Make it at least compile ... 2010-11-05 07:20:01 +00:00
techdragon.nguyen@gmail.com 842596d4fc fixed sun titan and primeval titan card definitions.
**  Sun Titan: missing exclusion of instants and sorceries for special ability
**  Primeval titan: fixed token placement so that tokens went into exile and not the graveyard
2010-11-04 09:37:25 +00:00
techdragon.nguyen@gmail.com 2d9c2b3341 removed extra "." from TextScroller text as reported in forums
following up on wrenczes cleanup,
   changing ints to floats
   fixing calculations such as ( 16.0 / <some float>) to ( 16.0f / <some float>) to remove compiler warnings.
2010-11-04 09:18:12 +00:00
wrenczes@gmail.com ab49a0c6e1 Added new files to the VS2010 sln; Fixed a bunch of int to float warnings.
Minor note to others:  if you're writing drawing code, the coordinate system in JGE uses floats, so don't bother with ints for x/y coords & the like.  You're forcing the processor to do float to long conversions for nothing.
2010-11-04 04:33:04 +00:00
techdragon.nguyen@gmail.com 41e95ccfc0 reverted unintentional exclude. 2010-11-03 16:50:40 +00:00
techdragon.nguyen@gmail.com dd163c8807 ***Note***
please copy "DeckEditorMenuBackdrop.png" into your PSP folder.  Otherwise you will have a crash when you start up!

ChangesLog:
minor refactoring of DeckMenu
added a new DeckEditorMenu which is derived from DeckMenu.  This customizes the deck editor menus with the exception of the confirmation screens (yes/no)
Still more work to be done to round out some font issues.  
TODO:
put more information text in bottom row of menu.
reorganize statistical data to allow more info to be shown.
2010-11-03 16:49:39 +00:00
techdragon.nguyen@gmail.com b7a2196878 fixed signed vs unsigned comparison that caused psp build to fail 2010-11-03 16:16:53 +00:00
techdragon.nguyen@gmail.com 4a3d7faf0a added Reward and Expiration to task list
moved text scroller into DeckMenu class since it is specific to DeckMenu and not GameStateDuel
added new util function "wordWrap"
2010-11-03 00:15:12 +00:00
wrenczes@gmail.com 685626128a Minor refactor of AACloner::resolve() - two code paths were complete duplicates except for the MTGCard*. 2010-11-02 09:26:37 +00:00
wrenczes@gmail.com eef54c259b Fixed a compile warning treated as an error on psp - switched an int loop var to size_t. 2010-11-02 07:05:04 +00:00
wrenczes@gmail.com 8cb0cf1dae Fixed a crash in the vertical text scroller. Mike, pls review. 2010-11-02 05:50:07 +00:00
wrenczes@gmail.com 4288e7c236 Normalizing line endings to Unix style, per coding guidelines. 2010-11-02 05:29:20 +00:00
wrenczes@gmail.com 2d30dece25 Sigh - revert out changes relating to my boost::shared_ptr experiments. (Did I mention I hate AnkhSvn? Why does it auto-select files in other changelists?? ) 2010-11-02 04:31:10 +00:00
wrenczes@gmail.com 1325fff26b Fixed the vs2010 solution - included newly added files to the project. 2010-11-02 04:28:32 +00:00
wrenczes 5799ebb0e2 Same actualWidth/Height changes for QTmain. 2010-11-02 04:08:05 +00:00
wrenczes 858950fb9d Incremental fix on my Navigator work - switched out global to JGE vars actualWidth/Height to be real accessible members of the JRenderer instance, so that we can actually access what the real display width is from within the MTG project. This makes the fix for enchantment zone targetting work when the window is resized on Win32. 2010-11-02 04:07:25 +00:00
techdragon.nguyen@gmail.com f472c48a8a fixed avatar image issue when selecting ai decks outside of the default 100 ai decks.
installed a horizontal text scroller for the deck selection screens in normal play
TODO:-> Need to make it smoother transition.  It currently just replaces the text with the new text.
2010-11-02 02:20:44 +00:00
Xawotihs afe52d883a Added recent new sources and headers 2010-11-01 23:18:55 +00:00
wagic.laurent a666b8cc14 Laurent - daily build
Just built this one to test new deck selection screen... very nice....
2010-11-01 21:41:16 +00:00
techdragon.nguyen@gmail.com a458da051d refactored how manaredux coding works
replaced literals with constants in some places.
migrated some abilities out of headers and into implementation files.
2010-11-01 13:04:06 +00:00
techdragon.nguyen@gmail.com f0d3072091 updated VS 2008 solution file with the latest DeckMenu classes 2010-11-01 11:32:37 +00:00
techdragon.nguyen@gmail.com 911189da3d added DeckMenu and DeckMenuItem to the object list. 2010-11-01 11:01:08 +00:00
techdragon.nguyen@gmail.com 149b9efd9f fixed rename bug. rename state was not initialized. 2010-11-01 10:56:20 +00:00
techdragon.nguyen@gmail.com 6c1497bbd5 Revamped Deck Selection Screen using abrasax's design as a template.
TODO:  
     change literals to use constants, 
     refactor the rendering code for the menu to have be leaner.
     add text scroller to list all the tasks. 
         * 1st implementation will list all the tasks.dat  
         * 2nd round will try to get the scroller to only display relevant tasks to ai

Special thanks to wololo and MootPoint for helping me hammer this out.  To abrasax, for the initial design of the layout.
2010-11-01 08:22:55 +00:00
omegablast2002@yahoo.com 63eca8ebfe fresh EBOOT.PBP 2010-10-31 19:02:33 +00:00
omegablast2002@yahoo.com 2640fc8280 fixed a bug where affinity was not counting when cards were being bounced back to your hand. 2010-10-31 17:24:49 +00:00
omegablast2002@yahoo.com e463be5ad0 updated level up creatures to remove level= and replace with auto=maxlevel:number 2010-10-31 17:22:37 +00:00
omegablast2002@yahoo.com 150c5f4c99 turned the "ai hint" for level up creatures into an MTGAbility.
this fixes a bug(?) that had high priority and maintains same effect as before. removed all traces of the "bugged(?) hint" from CardPrimitive.
Issue: 498
2010-10-31 17:19:20 +00:00
omegablast2002@yahoo.com 777098f763 fixed a bug where CHANGELING was not giving all creature subtypes. Changelings now set creature types in MTGCardInstance::initMTGCI
moved removed it from the setType function of cardprimitive.
Issue: 501
2010-10-31 16:55:05 +00:00
techdragon.nguyen@gmail.com 4cfb266d14 code cleanup: removed commented out code. 2010-10-31 10:12:20 +00:00
guzhenjie1@gmail.com d125c245b3 Fixed following cards reported in the bug section:
Chainer, Dementia Master, Corpsehatch, Golem Artisan, Imps' Taunt, Samurai of the Pale Curtain, Summoning Station
Add missing text of following duel land: 
Blackcleave Cliffs, Copperline Gorge, Darkslick Shores, Razorverge Thicket, Seachrome Coast
2010-10-31 10:11:33 +00:00
wagic.the.homebrew@gmail.com 6fbbb22e96 Erwan
- adding missing CardSelectorSingleton files in VC2008 Project. Fixes compilation in VC2008
2010-10-31 09:36:20 +00:00
wrenczes@gmail.com 5a1e8e6ffe More reorganization work around CardSelector and the singleton pattern. Broke the source for the singleton into its own separate source file, to keep things clean. Also broke apart a circular header dependency: CardSelector defines and uses a SelectorZone, which is a member inside of CardView. CardView in turn is used heavily by CardSelector. Instead SelectorZone is now defined within CardView (where it's set & controlled anyway).
I've also added my current work on the zone navigation system (class Navigator) - it's currently turned off for now (the override for this is inside of CardSelectorSingleton's Instance() call, simply comment out the NEW CardSelector and uncomment out the NEW Navigator line.)  It's functional, but I want to do more testing before considering wiring it into the game options or something similar.  (Also, note that it currently doesn't support the mouse functionality added by DJardin.)

Lastly, there's a bug crash fix in ActionStack that I tripped across while testing - basically, an illegal index value would have us walk off the bounds of a vector.
2010-10-31 07:50:53 +00:00
jean.chalard dfb9d76829 J :
* Fix a broken argument
2010-10-31 07:12:04 +00:00
wagic.the.homebrew@gmail.com f847bff1d4 Erwan
- adding a test for issue 501 (changeling creatures do not get correct creature types)
2010-10-31 03:19:25 +00:00
techdragon.nguyen@gmail.com ab37002fd7 modified text for "Save as AI deck" option
added descriptions for editor menu items
code clean up.
2010-10-30 06:46:58 +00:00
wrenczes@gmail.com a88ea7cb54 Removed some redundant #ifdef win32 includes. (This should have been part of my previous precompiled header changes.) 2010-10-30 05:40:52 +00:00
wrenczes fadd36c0c4 More type conversion warning cleanup; some minor refactoring in the phase bar while I was cleaning up the warnings. 2010-10-28 06:57:34 +00:00
techdragon.nguyen@gmail.com 98627d96ba fixed minor bug with Ai deck saving routine.
fixed psp compilation, changed use of char* to ostringstream for menu text.
2010-10-27 17:26:32 +00:00
omegablast2002@yahoo.com 7a13f562c7 fixed "ink-eyes,servent of oni" coding. 2010-10-27 15:17:17 +00:00
techdragon.nguyen@gmail.com cd3ad9b9fd fixed menu size and text information for when saving deck as an AI deck. 2010-10-27 11:24:49 +00:00
techdragon.nguyen@gmail.com 28d3b9b9a9 fixes ai deck saving bug pointed out by Zethfox.
TODO: fix text to the right of the box when saving ai deck.
2010-10-27 03:00:39 +00:00
omegablast2002@yahoo.com 56ba37feec fixed errors reported by 840126 http://wololo.net/forum/viewtopic.php?f=4&p=17769&sid=b5337dd78cbad56a7c4ec93ccf4a3b71#p17769
thank you!
2010-10-25 17:33:58 +00:00
omegablast2002@yahoo.com de01d5216d fresh eboot. 2010-10-25 14:44:54 +00:00
omegablast2002@yahoo.com 73b7e8d361 adding a test to insure that a <1 aslongas actually remains on the field if the considiation is false. 2010-10-25 14:42:53 +00:00
omegablast2002@yahoo.com fbd5cffbbd taught told Ai bushido is a good thing. laid ground for Foreach lesson for Ai :) fixed yet another reported bug with aslongas. gave becomes( a better menu name system for the manlands to use.
it will now say "becomes [types]"
2010-10-25 14:41:09 +00:00
omegablast2002@yahoo.com 142dfab57c changed 3 creatures that were incorrectly using "clone" instead of "token(thier id number)" 2010-10-25 14:37:16 +00:00
techdragon.nguyen@gmail.com d358f14eed reverting change. thought the card was a black permenant. 2010-10-24 19:14:42 +00:00
techdragon.nguyen@gmail.com 219fdbf4f8 test broke due to omission of response to second counter request, if the test is for 1 counter, it needs to cancel the other counter request. So please test each change individually as well as part of the entire suite. If there are differences, than there is something fundamentally wrong with the suite. 2010-10-24 19:00:56 +00:00
omegablast2002@yahoo.com 4e6cd4309c changed bloodhall ooze test BACK to the way it was, please read cards before commiting a test change, also, re-run test suite when you make changes to test. 2010-10-24 18:36:13 +00:00
techdragon.nguyen@gmail.com ddc07a4e40 removed duplicate tests. these were prefixed with trigger_ instead of @ 2010-10-24 17:25:02 +00:00
techdragon.nguyen@gmail.com ad4543b968 fixed test. missing an assignment of a counter and end condition was incorrect. life should be 17 not 18 since ooze gets two counters it is a 3/3 monster not 2/2. The test was stalling on the interrupt screen for the second counter. 2010-10-24 17:23:19 +00:00
linshier 60ef07a025 Added basic Japanese font support. 2010-10-24 07:56:28 +00:00
linshier 0ce36747a7 Fixed a compiling error for GCC-4.4.5 2010-10-24 07:34:12 +00:00
linshier eb043eba5d Fixed Makefile for Linux 2010-10-24 07:20:52 +00:00
wrenczes@gmail.com e74c0fcc7c Moved a few more common shared includes into the precompiled header. 2010-10-24 06:55:40 +00:00
wrenczes@gmail.com 8f7e4850ba Apply the same precompiler modifications to the VS2010 solution. Also turned off the C++ code analysis entirely for the debug target. Old build time: 5 minutes. New build time: 30 seconds. (note that the VS2010 code analysis slows things down considerably - but it also shows that one major bottleneck is AllAbilities.h, as it's included multiple times. That file should be refactored asap.) 2010-10-24 06:29:20 +00:00
wrenczes d5f3e4cfea Enabled precompiled headers for the build. This cuts the win compile time in debug by at least half on my laptop; on the psp compile, it shaves it down by ~ 45 seconds. I only did a cursory inspection of what to add to PrecompiledHeader.h, there's probably more that we can throw in there for more incremental speed improvements.
Also fixed the project includes so that we don't need to always use the indirect include path, ie:
#include "../include/foo.h" -> #include "foo.h"

I'm don't know much about make files - if I busted the linux build, mea culpa, but I think we're okay on that front too.  For future reference, here's the most straightforward link on the topic of adding pch support to make files:

http://www.mercs-eng.com/~hulud/index.php?2008/06/13/6-writing-a-good-makefile-for-a-c-project
2010-10-24 05:55:24 +00:00
omegablast2002@yahoo.com c83a4b8d19 fresh eboot. sorry about the other one. 2010-10-23 23:57:01 +00:00
omegablast2002@yahoo.com 8cb1f0cc7c moved the level varible from MTGcard to MTGprimitive. 2010-10-23 23:48:02 +00:00
omegablast2002@yahoo.com d7f58285f4 missed a couple levelup creatures 2010-10-23 22:52:25 +00:00
omegablast2002@yahoo.com 5ee1a695ae fresh daily 2010-10-23 22:36:20 +00:00
omegablast2002@yahoo.com 34f63056dd updated level up creatures to include a hint to ai when it should stop investing. 2010-10-23 22:34:51 +00:00
omegablast2002@yahoo.com a9e4c58af2 taught Ai how to use levelup creatures, taught Ai how to use Equip, taught Ai how to use prevent the cleric ability.
this is by no means absolutely perfect, i like it tho, and makes for some real good times with level up deck built with equips. 

you will notice i added a level=number...to the level up creatures, this has no effect on players, this is just a small hint to the Ai as to when it should stop investing mana in that creature. the chances are a little over half that ai will want to level a creature, increased ever so slightly with each level up.

for equipment, the Ai will now want to equip its best Creature(determined by power+toughness+convertedcost+how many abilities it has) and will want to equip these "better" cards atleast 2 times before it is reduced. same system for prevent damage, it will want to save its "better creature" more then a 1/1 token.

for both tho i added slight bonuses...
to equip, there is a higher chance that the ai will want to target a white creature, with an extra bonus if the creature is a 1/1 and nontoken. this is to encourage Ai to equip in white weenie decks

in prevent, there is a slight bonus if the creature is a 1/1 and the blocker/blockee has a power of 1. 

currently prevent damage treated this way is not coded for direct damage spell, sorry ! but for combat you will notice ai taking a stand and fighting back hard.
2010-10-23 22:34:07 +00:00
omegablast2002@yahoo.com ba590395b1 fresh EBOOT.PBP 2010-10-22 21:26:35 +00:00
omegablast2002@yahoo.com d5ca6b0207 added a few subtypes to exclude from changeling, noticed subtypes that are not true MTG subtypes. in the future can we please try to refrain from making up fake subtypes, for exsample "level" and "levelup" are NOT MTG subtypes 2010-10-22 21:23:47 +00:00
omegablast2002@yahoo.com 1ac488b959 fresh daily Eboot 2010-10-22 20:33:13 +00:00
omegablast2002@yahoo.com 165d9df5c9 added a string support to transforms(...cards can now transforms(allsubtypes) or transforms(removesubtypes) 2010-10-22 20:29:55 +00:00
solo81@web.de 04efd4f78f Added 37 cards based on rev2444 and rev2479. (Card list -> First comment)
Fixed Sun Titan and some other reported card bugs.
2010-10-22 19:37:43 +00:00
omegablast2002@yahoo.com 3032393a9c fresh EBOOT 2010-10-22 18:13:44 +00:00
omegablast2002@yahoo.com 32cc74bd93 just a couple comments to say what "basicabilities[55]" is to make it clear. 2010-10-22 17:58:25 +00:00
omegablast2002@yahoo.com 90fb03aba7 finally fixed Changeling abilities= keyword. 2010-10-22 17:45:56 +00:00
omegablast2002@yahoo.com f3449592de Fixed a bug where "Maxglee" cheat was adding token workaround cards to the collection. also, removed subtype search "nothing" from the Wfilters...before anyone jumps on me, there are over 18000s MTG cards, NOT a single ones of those cards have subtype="nothing" or any variations of "nothing" 2010-10-22 14:53:39 +00:00
omegablast2002@yahoo.com e6bc59fa97 goblin piledriver change. 2010-10-22 13:08:19 +00:00
omegablast2002@yahoo.com b4d9a0cbd0 forgot the taps. 2010-10-22 10:37:40 +00:00
omegablast2002@yahoo.com 7b065b5076 recoded Primeval Titan. 2010-10-22 10:35:20 +00:00
techdragon.nguyen@gmail.com 1652308bfe added missing file. 2010-10-22 09:33:55 +00:00
techdragon.nguyen@gmail.com 34bdfab36f fixed bug with saving brand new AI decks. 2010-10-22 09:22:25 +00:00
wrenczes@gmail.com e2de03d987 Some organisational prep work before I start working on a new navigation method (ie replacement for CardSelector). The current design was to allocate a CardSelector and pass in its pointer to a variety of classes via their constructors. To simplify things, now we use a singleton style pattern with an Instance() function - this means that when I implement a new class to replace CardSelector, I only need to modify what's returned by the singleton callback - as long as the new pointer class supports the same function calls, it'll be a straight drop-in. 2010-10-22 08:41:44 +00:00
techdragon.nguyen@gmail.com 84004c7c7f added separator to debug output when running test suite. This will visually help
with identifying when a test ends and another begins.
2010-10-22 08:29:47 +00:00
techdragon.nguyen@gmail.com 34335ba2aa added option to save deck in editor as an AI deck.
No option to delete or edit the AI deck once it has been created.
The deck gets saved as the canonical form of the deck to match other AI deck formats.
2010-10-22 08:28:52 +00:00
omegablast2002@yahoo.com 3e601a950c fresh daily builds. 2010-10-21 20:59:03 +00:00
omegablast2002@yahoo.com 4eea325802 opps forgot golem-skin gaunlets 2010-10-21 20:53:05 +00:00
omegablast2002@yahoo.com f678e52d2f updated this(equip) to this(gear) in cards that use it. 2010-10-21 20:50:08 +00:00
omegablast2002@yahoo.com 5e34cce734 changed This(equip) to ThisAttacked(gear) and changed varible name also, there was a discovered conflict using these as equip, with the MTGAbility equip 2010-10-21 20:48:39 +00:00
solo81@web.de ab0de05033 Fixed several cards reported in the bug section.
Changed the name of all new trigger tests.

Removed some obsolete information in some card_dats.
2010-10-21 20:21:44 +00:00
omegablast2002@yahoo.com 34580856d3 untaught Ai how to use prevent until someone with more knowledge then i can look at why the enum list wont allow for it to be listed. its commented out for now, and it works on PC just fine, not perfect but atleast Ai actually trys to keep all their creatures with atleast 1-3 prevent point on them during combat. the probelm it has is with compiling to PSPSDK, it doesnt like having STANDARD_PREVENT = 13, If someone could look into why it would dramatically help Ai using clerics. 2010-10-21 18:44:01 +00:00
omegablast2002@yahoo.com 42dca6dd88 fixed a line that PSPsdk didnt like. 2010-10-21 16:17:27 +00:00
omegablast2002@yahoo.com 18ff503bd9 fixed Ai not using regenerate during combat, taught Ai a little about prevent:number, changed "removepoison" mtgability to "alterpoison" as it made more sense. 2010-10-21 15:52:04 +00:00
omegablast2002@yahoo.com f209dd7b89 changed removepoison to alterpoison as it made more sense. 2010-10-21 15:50:00 +00:00
omegablast2002@yahoo.com aba714f89d fixed a couple errors with new cards.
Gempalm Incinerator
inner-flame acolyte
dwarven berserker
lord of shatterskull pass
goblin piledriver
2010-10-21 09:22:47 +00:00
omegablast2002@yahoo.com 87d501f0ab removed tangle asp and gauntlet of might from boarderline since its not fully supported. 2010-10-20 20:11:47 +00:00
omegablast2002@yahoo.com 306fd5e4f7 changed twist to "swap" cause it made more sense, added a couple more menutext returns, change enumerator exilebury to match its const char, this was causing massive confusion amongst the crowd. 2010-10-20 19:30:17 +00:00
solo81@web.de e8a44cc375 - Added 242 successfully tested cards based on rev2444 (Card list --> First comment).
- Optimized 163 cards (Card list --> First comment). 
Most of them profit from the much more detailed combat trigger system and the new types of damage prevention.


- Added 17 tests to save Zethfox's additions for the future.


- Fixed issue182.
2010-10-20 19:13:17 +00:00
wrenczes@gmail.com 7d8eb055e6 Last set of OutputDebugString() -> DebugTrace() conversions. 2010-10-20 04:35:20 +00:00
Xawotihs a5cb21fb3f Added dbus support 2010-10-19 22:11:27 +00:00
Xawotihs 44e097e88c reduced framerate to 30 fps, stopped refreshing the UI when the window is hidden or when the screen is off. 2010-10-19 22:09:16 +00:00
omegablast2002@yahoo.com c9e5aaa2c5 added getMenuText() functions to lord, aslongas, foreach, and thisforeach, to return correct names for the ability in cases where theyre being used in instants, activated abilities with "&&", "choice" and "may" 2010-10-19 19:52:57 +00:00
omegablast2002@yahoo.com 037b5c3598 corrected an issue where basicability modifier was not returning the name but "ability instead..did minor correctsions to some Substr values. 2010-10-19 19:26:46 +00:00
wrenczes@gmail.com d35367503d Modifications required to build against the latest (0.10.0) PSPSDK. Note that this is a breaking change, these mods are not backwards compatible with the 0.8.9 version of the PSPSDK.
To download the latest Minimalist SDK, go here:

http://sourceforge.net/projects/minpspw/
2010-10-19 08:45:36 +00:00
wrenczes@gmail.com 5aa3dc6fd3 Refactoring of some of the font management in WResourceManager. This change looks bigger than it actually is - most of the touched files are simply renaming of some font enums that I moved out of MTGDefinitions into the resource manager header files. The main points of this change: collapsing the font containers into a single map, eliminating duplicated functions, and migrating the font building logic into the resource manager class. GameApp doesn't need to know anything about the fonts it uses, and likewise, font users don't need to know what the name of their chosen font is, just the FONT_TYPE enum.
(I did a cursory check to make sure chinese still displays correctly - at a glance, I'm seeing what looks correct to someone who doesn't read the language :) )
2010-10-19 07:51:32 +00:00
Xawotihs f64c2b0183 Missing file for the upgrage fix 2010-10-18 20:50:03 +00:00
Xawotihs ea32581676 Fixed upgrade problem 2010-10-18 20:27:23 +00:00
Xawotihs 0789d6e7e9 Activates mouse tracking 2010-10-18 20:25:01 +00:00
omegablast2002@yahoo.com 98e34c4eca changed some of the ability names as requested, autoformatted ability.cpp as it was getting pretty messy. added @attackedalone( trigger. added "removefromcombat" mtgability. im going on vacation, whoosh :P 2010-10-18 15:56:32 +00:00
wagic.the.homebrew@gmail.com f5575ac68e Erwan
- Updated fix for Dragon Broodmother
2010-10-18 13:33:54 +00:00
omegablast2002@yahoo.com d13e8904b5 massive update, additions and changelog in first comment. 2010-10-18 10:46:36 +00:00
wrenczes@gmail.com 211deca011 I'm still planning on a more ambitious navigation mod, but this is a simple interim change to the existing navigation model that allows you to use the up/down keys to navigate directly to an avatar. This means that if you open your card hand & need to cast a spell that targets the enemy avatar, you can simply hit the up key a couple of times instead of navigating left (through potentially a huge number of cards if you're in a long, drawn out match). 2010-10-18 04:01:18 +00:00
wrenczes@gmail.com 832f11c153 Switched the managed JQuad container implementation from a vector to a map. This speeds up the cache lookup time from O(n) to O(log n). Hard to see a noticeable difference on win, but it definitely feels snappier on my psp, for instance, when browsing your library for a card, or your graveyard, etc.
I'm also noticing that the GetQuad(int) variant never seems to get hit, so I suspect that the ID lookup map is redundant.  I left it alone as the JResourceManager base class forces the need for the function; I need to spend more time looking at just how much of JResourceManager we actually use at this point.
2010-10-17 16:54:08 +00:00
omegablast2002@yahoo.com 1071dbf738 2010-10-17 14:03:51 +00:00
omegablast2002@yahoo.com 35fa4d9786 made the fix to color= a fancy loop deal by request of wololo 2010-10-17 13:48:59 +00:00
omegablast2002@yahoo.com 6a81228275 fixed an issue where color= was not setting multiple colors on a card with this line.
Issue: 491
2010-10-17 13:17:27 +00:00
wagic.the.homebrew@gmail.com 8fdb64e9ce Erwan
- adding tests for issue 489 and issue 491
- check for null pointers in Credits.cpp
- Test suite can now select tokens by their name
- Fixed Dragon Broodmothere's token name
2010-10-17 10:21:08 +00:00
wagic.the.homebrew@gmail.com d9f5b1586c Erwan
- fixing buggy test for kicker introduced in r2414
- removed old translation tool scripts (not needed anymore)
- simplified "borderline.txt" using the global "borderline" grade.
2010-10-17 05:37:22 +00:00
wrenczes@gmail.com a7ffe4990b Cleaned up the SimpleMenu drawing routines. I was seeing intermittently weird edge lines on the spades of the menu system, as well as gaps. The code was doing a lot of hacky +/- of arbitrary pixel values for the positioning, so I fixed it up to do everything relative to the widths of the pole & the actual spade graphic's size. Also cleaned up the pngs themselves, as they had no need for a transparent pixel rim.
Also moved some static value definitions used in the drawing code from the class header to a private namespace in the cpp file, as they don't need to be seen by any clients of the class.
2010-10-17 00:20:25 +00:00
wrenczes@gmail.com 7e780e18c1 For the windows version, if running with fullscreen disabled, center the main window instead of creating it top-left all the time.
Also renamed WindowRect to windowRect & PixelFormat to pixelFormat for consistency with other locally declared variables.  (Uppercase should be reserved for class names, ie WindowRect is the class/struct, windowRect is an local object in your code.)
2010-10-16 15:28:41 +00:00
wrenczes@gmail.com 0ef555dca9 Minor tweaks to the VS2010 project files, including turning down the code analysis verbosity. 2010-10-16 15:20:27 +00:00
Xawotihs 0abe60542a Fixed Qt project on windows 2010-10-16 12:19:44 +00:00
Xawotihs e082deaddf Fixed Qt project compile on Windows 2010-10-16 12:17:25 +00:00
Xawotihs 817a666a2f Fixed Qt compilation on Windows 2010-10-16 12:13:07 +00:00
solo81@web.de ddc08d6512 Small correction from last revision. 2010-10-15 20:37:28 +00:00
solo81@web.de 98926caaa8 Added 5 tests to safe
aslongas + <
aslongas + >
aslongas + trigger

for future code changes.
2010-10-15 20:32:15 +00:00
solo81@web.de 5bff069d6d Fixed Arcbound Fiend, Sombaer Hoverguard and Proclamation of Rebirth. 2010-10-15 18:46:02 +00:00
omegablast2002@yahoo.com 2f73400cbb updated _test, and rewrote bug test to safe "aslongas" effects in the future. 2010-10-15 15:21:55 +00:00
omegablast2002@yahoo.com b8a5e7512a fixed bug with aslongas not triggering correctly for "<" and removing to soon for ">".
please note:
generic kicker test was broken before this rev.
Issue: 483
2010-10-15 15:20:45 +00:00
techdragon.nguyen@gmail.com 640a9392f6 fixed typos reported in http://wololo.net/forum/viewtopic.php?f=4&t=2283&p=17578#p17578 2010-10-15 05:20:42 +00:00
solo81@web.de dde0df9e19 Fixed Plated Seastrider, Decree of Savagery and Proclamation of Rebirth. 2010-10-14 19:47:00 +00:00
techdragon.nguyen@gmail.com da4ab477ae The Test Suite was incorrectly updating and writing player save data.
( ie task list was being updated, set information being evaluated, etc )
put a guard around the endgame stat update process to only update when non-testsuite games are played.

Issue: 488
2010-10-14 16:13:45 +00:00
wrenczes@gmail.com 5d26989f2c Force the line endings to Unix on this file. 2010-10-14 10:02:16 +00:00
wrenczes@gmail.com 80edf7279c Fixed a problem with the release target - it wasn't inheriting correctly the property sheet I had recently added. Thanks to Mike for catching this. 2010-10-14 09:26:27 +00:00
wrenczes@gmail.com 847ec5b7c5 Reinstate the MillExileCost pay variant, as pointed out by Z. 2010-10-14 08:14:49 +00:00
wrenczes@gmail.com f7361fb030 More type conversion warning fixes, with some minor refactoring thrown in. 2010-10-14 07:39:00 +00:00
wrenczes@gmail.com 3ca5a7261d More warning conversion cleanup. 2010-10-14 05:05:37 +00:00
wrenczes@gmail.com 356ce1b8ba Giant refactor of all the ExtraCost variants. Reduced the .cpp code by literally half (~350 lines!)
Some of the things refactored to the base class:
- isPaymentSet()
- canPay()
- Render()
- setSource()
- setPayment()
- the target instance
- duplicated constructor initialization crap

I'm not interested in pointing fingers as to how the code got this way, but I'll ask that everyone who's altered this code in one fashion or another to carefully diff this change and understand what I refactored.  This code is a poster child for neglect & what happens when people start blindly copy & pasting code instead of paying attention to the commonality between code paths.  If you see the same lines of code happening over & over, and you're about to make yet another copy, please stop yourself & think about how you can refactor the code to be in a single shared function (or, more explicitly, a shared base member function when possible).

If you don't understand what I mean by a shared base member function, then I would suggest at the very least reading up on this topic:

http://www.cplusplus.com/doc/tutorial/inheritance/

(And, after all that, if you're still unsure how to proceed, ping someone else for advice!)
2010-10-14 04:45:10 +00:00
wrenczes@gmail.com 25cb9dde54 Cleaned up some compile warnings (double to float/ int to float conversions). 2010-10-13 23:34:36 +00:00
Xawotihs e8ecd74361 Mouse support in graveyards an library browsing during battle 2010-10-13 22:28:19 +00:00
techdragon.nguyen@gmail.com 4a0331cbb9 corrected kicker test end conditions. 2010-10-13 21:24:50 +00:00
techdragon.nguyen@gmail.com 5005f69a69 added current AI deck name to "start" menu while dueling 2010-10-13 15:24:52 +00:00
Xawotihs bb6267bbe4 Fixed possible deadlock added in the mouse support code 2010-10-12 21:53:41 +00:00
solo81@web.de ce934123b0 Added a test for issue483.
Fixed Lux Cannon.
2010-10-12 15:05:52 +00:00
omegablast2002@yahoo.com 7a3577748e fresh eboot 2010-10-11 21:29:32 +00:00
solo81@web.de b5ef7ff4e7 Fixed Semblance Anvil and Spikeshot Goblin. 2010-10-11 20:06:37 +00:00
solo81@web.de 3c998d6a31 Fixed issue485. 2010-10-11 14:07:38 +00:00
Xawotihs 93b1656f13 Added left mouse click support for menu, submenu and battle 2010-10-10 21:59:18 +00:00
Xawotihs e342103204 Added support for left mouse click and zoom buttons 2010-10-10 21:58:02 +00:00
Xawotihs 75b8a0c328 Added support for left mouse click 2010-10-10 21:57:27 +00:00
solo81@web.de 0a484237b2 Fixed several card bugs.
Card list -> First comment.
2010-10-10 19:47:07 +00:00
omegablast2002@yahoo.com 93fe22d282 added a small fix to further reduce attacker phase exploiting. explaination in comments. 2010-10-10 15:11:30 +00:00
wrenczes@gmail.com a08217ba53 Sorry, I keep modifying this line accidentally since I'm building with the newer pspsdk version. 2010-10-10 07:38:17 +00:00
wrenczes@gmail.com 810069f0a6 Added an SVN ignore rule on MS performance analysis projects, MS .filter files (a VS2010 sidecar file), Intel Amplifier sidecar files. 2010-10-10 07:34:43 +00:00
wrenczes@gmail.com 33e45c9635 More incremental work of converting code to use DebugTrace(). 2010-10-10 07:30:18 +00:00
wrenczes@gmail.com 2d86e86603 Follow up on this comment from Xawotihs:
"It's currently unclear for me why several instances of the same hgeparticlesystem with the same .psi file are created..."

The GameApp::Create() call was initializing an array of particles, but it wasn't actually stashing them in the psi cache.  The MenuItems also create the particles, but these are stashed correctly in the cache at that point.  So, I simply removed the unused particle array loading code since it wasn't actually caching anything correctly & therefore simply adding redundant reading of the same particle files.
2010-10-10 05:10:25 +00:00
solo81@web.de 7cfd9d981a Fixed several card bugs reported in the bug section of the forum. 2010-10-09 17:48:10 +00:00
Xawotihs 241583df02 release 0.13.1meamo1 2010-10-09 10:45:02 +00:00
Xawotihs 318aee5aec Work around issue 457, not fully fixed. 2010-10-09 10:37:47 +00:00
Xawotihs 7439d81454 Work around issue 457, not fully fixed. 2010-10-09 10:36:42 +00:00
Xawotihs fcb8aeaa28 Added error handling and moved glEnable(GL_TEXTURE_2D) to fix issue 484 2010-10-09 10:18:59 +00:00
Xawotihs 977257aee3 moved glEnable(GL_TEXTURE_2D) to fix issue 484 2010-10-09 10:08:59 +00:00
wrenczes@gmail.com 62e0a789eb Fix for the Snap card not triggering the 2nd untap. Basically, stole the method from GrimmHatter's post:
http://www.wololo.net/forum/viewtopic.php?f=21&t=1430&start=40#p13465

Seems to work from my testing so far.  If this is the preferred route, we should probably sweep through & track down all the other cards that use the token counter hack, as that method used to work in 0.12.1 and broke some time after that.

(Somebody please sanity check this for me, as this is my first foray in messing with card rules.)
2010-10-09 04:07:31 +00:00
Xawotihs d331b93e66 Removed X dependency when compiled with Qt 2010-10-07 21:44:04 +00:00
Xawotihs f2a6a3e46e Fixed stripping 2010-10-07 21:42:52 +00:00
Xawotihs 996f665ae9 Complete build dependencies to make the autobuilder happy 2010-10-07 21:42:13 +00:00
Xawotihs fb484f0f00 Removed X dependency when compiled with Qt 2010-10-07 21:40:09 +00:00
solo81@web.de 038f9c2ba0 Fixed Gempalm Incinerator and Eldrazi Monument.
Removed Armament Master (never supported!).
2010-10-07 20:13:14 +00:00
wrenczes@gmail.com e45735267b More work on cleaning up debug trace logs. Added getDisplayName() overrides to the Ability & NextGamePhase interrupts so that there's now more contextual info in the output log. You'll now see what game phase is being added/resolved on the stack, and instead of a generic 'StackAbility' entry, it'll tell you what source it's coming from.
Also deleted a few debug output traces that were truly uninformative.
2010-10-07 08:13:22 +00:00
wrenczes@gmail.com 6109fe1912 Fix a compile error on the psp. 2010-10-07 08:10:08 +00:00
wrenczes@gmail.com df2b145a42 Minor project changes - use a vsprops file to locate the extra includes instead of requiring folks to manually copy dirent.h & stdint.h into your VC include dir. 2010-10-07 04:06:16 +00:00
wrenczes@gmail.com 69a5c52ea8 Revert out a file that wasn't meant to be part of that last submit. 2010-10-07 03:49:42 +00:00
wrenczes@gmail.com def3293fac Fixed my trace - removed the spurious addressof(). 2010-10-07 03:45:57 +00:00
techdragon.nguyen@gmail.com 34027bcabc adding DebugRoutines.h and mtg.txt to solution. 2010-10-07 03:03:04 +00:00
techdragon.nguyen@gmail.com be11b96775 adding trim to card loading. if player deck has multiple spaces separating card name from set name, the parser fails. Trimming ensures that there are no problems with trailing and leading spaces concerning card and set names.
previously:
[card name]         ([set name]) *d

would fail because when the parser when looking for the card name, it would use 
[[card name]        ]
and not 
[[card name]]
since the card lookup is case insensitive but not whitespace insensitive the lookup would fail.
2010-10-07 03:01:05 +00:00
techdragon.nguyen@gmail.com 652358b8c4 commented out last check in as "addressof" is not defined in current code set. Is it possibly out of the boost library? 2010-10-06 16:05:58 +00:00
techdragon.nguyen@gmail.com c15bc268b2 added box for issue # when commtting changes. 2010-10-06 15:38:27 +00:00
wrenczes@gmail.com 78f8ff98bb more OutputDebugString() conversions, and removed a useless trace in the base WResource destructor - instead, moved it up to WCachedResource so that we can output the filename of the resource that is being destroyed. 2010-10-06 11:46:10 +00:00
wrenczes@gmail.com 5595c0d3d8 More OutputDebugString() -> DebugTrace changes. 2010-10-06 10:45:29 +00:00
wrenczes@gmail.com 291a0d0312 1) swap out the pattern of
CODE: SELECT ALL
#if defined (WIN32) || defined (LINUX)
  char    buf[4096], *p = buf;
  sprintf(buf, "Some debug message showing  variables %i and %i\n", variableA, variableB);
  OutputDebugString(buf);
#endif


new paradigm:
CODE: SELECT ALL
DebugTrace("Some debug message showing variables " << variableA <<" and " << variableB);


No more dealing with formatting sprintf crap, just stream out variables. Also, DebugTrace washes out in release automatically. (TODO, need to sweep through the rest of the app to apply the changes to all the cases where OutputDebugString() is being called)

2) added two traces to follow adding/resolving things on the stack;

3) changed the uninformative "stack object" string that was the default for base class interrupts to use typeinfo(*this).name() so that you can actually see the derived class in the trace output. Here's a sample of what my trace output looks like now:
Action added to stack: Devoted Hero
Resolving Action on stack: Devoted Hero
Action added to stack: class NextGamePhase
Resolving Action on stack: class NextGamePhase
Action added to stack: class NextGamePhase
Resolving Action on stack: class NextGamePhase
Action added to stack: class StackAbility
Resolving Action on stack: class StackAbility
Action added to stack: class DrawAction
Resolving Action on stack: class DrawAction

4) replaced some hardcoded 0 / -1 values with their proper enums.
2010-10-06 09:28:45 +00:00
wrenczes@gmail.com 9c982475fe Some minor casting issues that trip up the 0.9.6 pspsdk when compiling. 2010-10-06 09:22:44 +00:00
wrenczes@gmail.com 1e7f2507f0 Removed an extra vector allocation from the previous card loading optimization. 2010-10-06 08:53:05 +00:00
wrenczes@gmail.com 88ac1dd9a6 2010-10-06 08:45:55 +00:00
Xawotihs 1d57d517ed Update to have the garage autobuilder complain a bit less 2010-10-05 23:46:17 +00:00
Xawotihs 4fc54f63d9 Update to have the garage autobuilder complain a bit less 2010-10-05 23:45:42 +00:00
Xawotihs 5bbee0eed9 Avoid failing during application reinstallation 2010-10-05 21:32:44 +00:00
techdragon.nguyen@gmail.com b485690968 fixed card issues pointed out by user Toben:
http://wololo.net/forum/viewtopic.php?f=4&t=2264&p=17263#p17263
2010-10-05 21:28:00 +00:00
Xawotihs 9ea77bda6e Added icon, desktop description and updated .pro for maemo packaging instruction 2010-10-05 20:01:26 +00:00
Xawotihs f4a9730525 Added Maemo packaging files 2010-10-05 19:48:22 +00:00
techdragon.nguyen@gmail.com 94961d350d made fixes found in debugging session with "Lovisa Coldeyes" and "Lotus Cobra" 2010-10-05 13:19:58 +00:00
solo81@web.de 4d9fd35c55 Fixed issue452, issue471 and issue476 2010-10-04 18:26:11 +00:00
techdragon.nguyen@gmail.com a2d6880d72 added bugtraq properties to svn 2010-10-04 16:30:07 +00:00
techdragon.nguyen@gmail.com 703a9b7c6c Issue: 474
modified player status to recognize that test suite has been activated.  This is to allow deactivation of "phase skip automation" game setting during test suite.  
TODO: fix "Phase Skip Automation" such that if turned on the test suite does not break.  This fix should be considered temporary
2010-10-04 16:27:39 +00:00
techdragon.nguyen@gmail.com 8e83e0d632 Issue: 474
modified player status to recognize that test suite has been activated.  This is to allow deactivation of "phase skip automation" game setting during test suite.  
TODO: fix "Phase Skip Automation" such that if turned on the test suite does not break.  This fix should be considered temporary
2010-10-04 16:26:55 +00:00
techdragon.nguyen@gmail.com 154ccc2555 issue 475.
two cards coded incorrectly, "Shelter" and "Sejiri Steppe" they are to use protection from and not fog from
2010-10-04 15:38:45 +00:00
wagic.the.homebrew@gmail.com 4fe3156ff2 Erwan
- downsized mp3 quality (people who want the best quality can still get it from jamendo) to reduce size of the final package
- removed unnecessary Jade them (Jeck already removed it a while ago, it was reintroduced by mistake). Jade is now part of "Gemstones"
2010-10-04 12:55:08 +00:00
techdragon.nguyen@gmail.com 5d2e948b05 fixed unearth cost for Extractor Demon. Was set to {B} should have been {2}{B} 2010-10-03 17:53:02 +00:00
omegablast2002@yahoo.com cf63c83754 Fixed a bug/exploit with declaring attackers and @tapped triggers. 2010-10-03 14:19:52 +00:00
wagic.the.homebrew@gmail.com 31f58b1da5 Erwan
- Bump version number up
2010-10-03 12:15:10 +00:00
wagic.laurent f21419cff9 Laurent - Changed Trade Caravan to UpkeepOnly since you cannot play this during opponentupkeep, this is not correct but needed for Brother's War Campaign 2010-10-03 10:57:46 +00:00
wagic.the.homebrew@gmail.com c3c5d893d1 Erwan
- attempt at fixing some crashes in shop (related to bad usage of the cache)
- Fix typo reported with Qumulox
2010-10-03 07:36:01 +00:00
omegablast2002@yahoo.com 33d8ad5e9b trigon of mending coded incorrectly 2010-10-03 04:32:38 +00:00
omegablast2002@yahoo.com 08b762276b fix a bug where affinity wasnt triggering on card entering hand 2010-10-02 01:19:33 +00:00
wagic.the.homebrew@gmail.com 508040b3a7 Erwan
- fix for issue 467 (simultaneous triggers + "trigger" keyword)
- MootPoint's patch for some string parsing
- some random int/float compilation warning fixes
2010-10-01 16:33:07 +00:00
wagic.the.homebrew@gmail.com f4e87b7daf Erwan
- adding test to repro issue 467
2010-10-01 14:18:05 +00:00
wagic.the.homebrew@gmail.com 65ae7039a7 Erwan
- collection load time speed increase by MootPoint
2010-09-30 10:34:38 +00:00
techdragon.nguyen@gmail.com be6566361a fixed some card coding errors reported in forum by KF1 2010-09-29 16:38:02 +00:00
techdragon.nguyen@gmail.com 5d215c29a4 resolves issue 466 2010-09-29 16:28:36 +00:00
linshier d8122e441e Tweaked translation codes for deck and opponents choosing menus. 2010-09-29 08:18:09 +00:00
linshier 2544700f38 Added Chinese translation for set SOM. 2010-09-29 07:12:16 +00:00
wagic.the.homebrew@gmail.com 5de20792fd Erwan
- revert a mistake with tests from r2342
2010-09-28 22:37:28 +00:00
Xawotihs 2881543b78 added support of right and middle mouse button and also wheel mouse while I was at it. 2010-09-28 20:00:31 +00:00
wagic.the.homebrew@gmail.com b79c7eea53 Erwan
- fix for issue 462 (graphical glitch when cards come back from graveyard)
- adding Kaioshin's wallpaper
- fixed minor issue in mtg.txt
2010-09-28 13:58:22 +00:00
techdragon.nguyen@gmail.com 3b0fad54e4 fixed typo for Carrion Call, Kuldotha Rebirth and Vedalken Certarch
the auto line had "Crature" inplace of "Creature", this caused tokens generated by those cards to be treated as "workaround" tokens instead of real playable tokens.
2010-09-28 07:05:03 +00:00
solo81@web.de 524ec5b962 Readded all cards which had to be removed once due to issue284.
"@damaged(creature)" is already safed by 2 test suite tests (Mirri & Mephidross Vampire).
2010-09-27 19:42:49 +00:00
omegablast2002@yahoo.com aba3f784c5 attempt to fix an issue with prevent:1 on instants and sorceries. thanks for the tip wololo! :) 2010-09-27 02:07:11 +00:00
Xawotihs 81cdfb8c9b basic support for a touch interfacing 2010-09-26 22:21:52 +00:00
techdragon.nguyen@gmail.com 7ec7fe2577 modified debug string for card id collision 2010-09-26 16:05:19 +00:00
solo81@web.de 56a6c7b6f6 Readded Mephidross Vampire.
Added a few tests.
2010-09-26 13:53:25 +00:00
wagic.the.homebrew@gmail.com 82ab92a61f Erwan
-fix for issue 408 (issues with life + targetcontroller + targets on the stack)
2010-09-26 12:57:12 +00:00
Xawotihs cc668e98b9 Adding Jade theme 2010-09-26 10:58:44 +00:00
wagic.the.homebrew@gmail.com 361c39e86f Erwan
- fix for issue 405 (unlocking ALL twice through Cheat mode in deck editor crashes the game)
2010-09-26 10:54:39 +00:00
Xawotihs 292b61e61e Adding default music files 2010-09-26 10:49:13 +00:00
solo81@web.de 3b526a3555 Removed Dance of the the Dead from the primitives.
An attempt to fix it by aliasing it with Animate Dead failed: All additional bonuses from Dance of the Dead were ignored.

Closing issue404.
2010-09-26 09:21:44 +00:00
wagic.the.homebrew@gmail.com 252104fb51 Erwan
- reverted Rancor's code to fix the test suite (bug introduced in r 2323) (also see related issue 462)
2010-09-26 09:12:48 +00:00
wagic.the.homebrew@gmail.com ed865ce29a Erwan
- Fix for issue 371 (Deck Editor resets to letter "A")
- Changed music behavior when switching menus. It shouldn't "restart" the music anymore.
2010-09-26 08:41:25 +00:00
solo81@web.de 5277ba525d Fixed Three Visits, Spoils of Victory and several typos in text-lines.
Fixed card type of Soliton and Snapsial Glider (SOM).
2010-09-26 08:00:10 +00:00
solo81@web.de 776232d07a Fixed several cards from SOM.
Fixed Phage the Untouchable's subtype.
2010-09-26 07:52:22 +00:00
techdragon.nguyen@gmail.com 715ee56d9e added more debug info (name of card with conflict ) for id conflicts. Don't have the name of the card it conflicts with however 2010-09-26 07:39:13 +00:00
wagic.the.homebrew@gmail.com ac435980ce Erwan
- Attempt at solving issue 247 (missing background image for trophy room). I think I attempted that a while ago and it caused some crashes, so let's revert this change if this happens
2010-09-26 06:22:46 +00:00
solo81@web.de 04ae98466b Added the correct test.txt. 2010-09-25 22:13:03 +00:00
solo81@web.de 73e420626e Fixed several card bug reports from the forum. 2010-09-25 21:59:48 +00:00
leungclj 8f4b2d9559 leungclj - fixed line 3482, 13262 & 36519. Added missing "}"
also- can someone verify line 28637. Thanks
2010-09-25 20:17:13 +00:00
Xawotihs 69b30b82cb - tab cleanup
- replace unix path management code by Qt one
2010-09-25 17:21:34 +00:00
wagic.the.homebrew@gmail.com 29d1982414 erwan
- submitting file I forgot in r2318
2010-09-25 14:38:22 +00:00
wagic.the.homebrew@gmail.com 3525c97cb2 Erwan
- replaced blightning (not available anymore) from Deck 77, and replaced it to keep the deck wiith 60 cards. Fixes issue 419
2010-09-25 09:31:08 +00:00
wagic.the.homebrew@gmail.com a6e4fba26b Erwan
- fix issue 304 (Momir + persist)
- some minor cleanup
2010-09-25 09:13:30 +00:00
wagic.the.homebrew@gmail.com f3cc20eb31 Erwan
- Fix for issue 284 (Damage not triggering when creature dies in combat phase)
2010-09-25 05:15:09 +00:00
omegablast2002@yahoo.com e94d39e115 autoformatted the spaces in MTGRules.cpp since i pretty much made it look like a mess..very pretty now :D 2010-09-24 20:04:19 +00:00
omegablast2002@yahoo.com 75c0733a38 Condensed castrestrictions/handsize rule massively. handled by 1 rule now and checked in one pass. 2010-09-24 19:26:32 +00:00
solo81@web.de 27ae3b834b Added around 155 codable cards from Scars of Mirrodin (SOM). 2010-09-24 18:10:53 +00:00
omegablast2002@yahoo.com 9b5a3b15aa tiny boo boo, forgot getManaCost() for the colored removel 2010-09-24 17:40:41 +00:00
omegablast2002@yahoo.com 3ee09742b6 bug fix for Token Crash when Id was not found in Card.dat. 2010-09-24 17:11:50 +00:00
omegablast2002@yahoo.com 4ae00372a4 resubmitting my affinity refactor, improved since the original issue was not even related to this code 7 hours later :/ 2010-09-24 16:05:22 +00:00
techdragon.nguyen 5eab87345a initializespatch fix for issue 459. This patch encapsulates the metadata object more and initializes the stat values. 2010-09-24 11:27:34 +00:00
techdragon.nguyen f7d2b774e3 reverting changes made by request of Zethfox. code needs more testing. 2010-09-24 11:26:35 +00:00
omegablast2002@yahoo.com d3b96a8723 refactored and cleaned up affinityrule..630ish line DOWN to 120ish 2010-09-24 08:53:01 +00:00
wagic.laurent f0fe35786c Laurent - Adding Scars of Mirrodin 2010-09-24 01:01:43 +00:00
wagic.the.homebrew@gmail.com b6d7496798 Erwan
- some code cleanup in Damage.cpp (the test suite passes)
2010-09-23 13:06:49 +00:00
wagic.the.homebrew@gmail.com a6a75af52a Erwan
- Partial fix for issue 335. This fixes the general problem of triggers not working in the case @movedTo(Battlefield) from(anywhere), but not the specific case of River kelpie not getting to draw a card after being "persisted"
2010-09-23 08:29:35 +00:00
linshier 326ecf84b0 Added Chinese translation for sets MIR, unofficial and for wagic only. 2010-09-23 05:55:47 +00:00
linshier 5867b9679e Additional fix for issue 460. Tested on Linux. 2010-09-23 05:11:05 +00:00
wagic.the.homebrew@gmail.com e02fe57cc0 Erwan
- fix for issue 442 (Creature bond). I believe this is the same issue as issue 439. Fix untested, please verify
2010-09-23 05:01:04 +00:00
wagic.the.homebrew@gmail.com bba6274f8b Erwan
- fix from issue 439 (skullclamp)
- reorganized a few files in VC++ project
2010-09-23 04:46:43 +00:00
wagic.the.homebrew@gmail.com e94c070050 erwan
- long term fix for issue 460 and issue 461
2010-09-23 04:00:22 +00:00
Xawotihs 4ba8badabd - Fixed issue 460 on Linux with Qt, this configuration will still use OpenGl 1.1. Linux with Qt will use OpenGl 2.0 and thus display the bug while it's not fixed.
- Fixed issue 461 for all the platforms.
2010-09-22 22:51:49 +00:00
wagic.the.homebrew@gmail.com 1c0218326e Erwan
- {z} cost becomes l2e (Library To Exile)
- {q} cost becomes s2l (Send to Library) <- from any place to Library
- subtypes leyline, controllsershroud, playershroud become ability keywords
2010-09-21 12:18:37 +00:00
wagic.the.homebrew@gmail.com e2727cb7c3 Erwan
- Fixed a mistake introduced in 2296, I basically reverted lots of important changes made in mtg.txt, sorry for that :(
2010-09-20 13:48:42 +00:00
wagic.the.homebrew@gmail.com 342d1c1bf3 - fix text for Phage the untouchable
- some cleanup of ManaCost parser's code (please avoid copy/paste whenever possible. Less lines == less bugs)
2010-09-20 09:25:30 +00:00
wagic.the.homebrew@gmail.com bdc43052d3 Erwan
- support for tinyCrops see http://wololo.net/forum/viewtopic.php?f=15&t=2197
- card images can now be named after the card's name (ex: sets/10E/Ancestor's Chosen.jpg , or sets/10E/10E.zip:Ancestor's Chosen.jpg)
- yet another attempt at fixing tokens in the shop
2010-09-20 07:10:21 +00:00
solo81@web.de e654f01307 Added Flame-Kin Zealot, Kor Line-Slinger and Torch Slinger. 2010-09-19 11:14:50 +00:00
omegablast2002@yahoo.com 2aa8664973 removed my "Zeths add on" there have been an overwhelming amount of bug reports for cards in it. more info in comment 2010-09-19 09:22:29 +00:00
solo81@web.de 01666d2f2e Added 21 successfully tested cards based on several additions from Zethfox. 2010-09-19 09:03:25 +00:00
solo81@web.de d7b649ed1c Added 22 successfully tested cards based on rev2286.
Example code:

[card]
name=Serra Avatar
auto=thisforeach(controllerlife) 1/1
autograveyard=moveTo(ownerlibrary) && shuffle
text=Serra Avatar's power and toughness are each equal to your life total. -- When Serra Avatar is put into a graveyard from anywhere, shuffle it into its owner's library.
mana={4}{W}{W}{W}
type=Creature
subtype=Avatar
power=*
toughness=*
[/card]

[card]
name=Divinity of Pride
abilities=flying,lifelink
auto=this(controllerlife > 24) 4/4
text=Flying, lifelink -- Divinity of Pride gets +4/+4 as long as you have 25 or more life.
mana={WB}{WB}{WB}{WB}{WB}
type=Creature
subtype=Spirit Avatar
power=4
toughness=4
[/card]
2010-09-18 18:05:37 +00:00
wagic.the.homebrew@gmail.com 279dcaebbe Erwan
- Adding kaioshin's wallpapers
- Reformatting some things in the credits text
2010-09-18 10:40:39 +00:00
omegablast2002@yahoo.com a1885790dd SMALL TWEAK the last one was facepalm worthy 2010-09-17 18:14:33 +00:00
omegablast2002@yahoo.com 10a4cc61a6 small tweak 2010-09-17 18:02:03 +00:00
omegablast2002@yahoo.com 5caab088a0 fresh psp eboot in daily folder 2010-09-17 17:50:13 +00:00
omegablast2002@yahoo.com 65673ca0b2 added support for no max hand size, added nonstatic lifetotal checks, added a check for how many equips a card has, added a fix for a typo in affinityswamp. 2010-09-17 17:37:18 +00:00
wagic.the.homebrew@gmail.com 341c48eb61 Erwan
- swapped StyleManager.h and .StyleManager.cpp files in VC++ project
- attempt at fixing issue 451 (tokens in momir), please verify. Also attempt at fixing tokens in shop.
2010-09-17 11:25:33 +00:00
omegablast2002@yahoo.com 291b600bed Sprouting Phytohydra token had rarity=c 2010-09-17 10:16:08 +00:00
omegablast2002@yahoo.com 29baed7d4a tweaked MNguyens menu improvements by Mnguyen 2010-09-17 09:07:09 +00:00
omegablast2002@yahoo.com 5939cbded8 added MnGuyens further improved menu handling and extra options. 2010-09-17 06:34:12 +00:00
wagic.the.homebrew@gmail.com 3965505b15 wololo
- Adding DJardin's port to N900
2010-09-16 13:12:05 +00:00
solo81@web.de 46c499be5f Added 6 cards based on rev2278.
Example code:

[card]
name=Arc-Slogger
auto={R}{z}{z}{z}{z}{z}{z}{z}{z}{z}{z}:damage:2 target(creature,player)
text={R}, Exile the top ten cards of your library: Arc-Slogger deals 2 damage to target creature or player.
mana={3}{R}{R}
type=Creature
subtype=Beast
power=4
toughness=5
[/card]

[card]
name=Deep Spawn
abilities=trample
auto=upcost[{M}{M}] moveTo(mygraveyard)
auto={U}:shroud && tap && frozen
text=Trample -- At the beginning of your upkeep, sacrifice Deep Spawn unless you put the top two cards of your library into your graveyard. -- {U}: Deep Spawn gains shroud until end of turn and doesn't untap during your next untap step. Tap Deep Spawn. (A permanent with shroud can't be the target of spells or abilities.)
mana={5}{U}{U}{U}
type=Creature
subtype=Homarid
power=6
toughness=6
[/card]

[card]
name=Leashling
auto={q(*|myhand)}:moveTo(myhand)
text=Put a card in your hand on top of your library: Return Leashling to its owner's hand.
mana={6}
type=Artifact Creature
subtype=Hound
power=3
toughness=3
[/card]


Optimized the code for all cards with RETRACE.


Fixed issue411. 


Fixed some cards.
2010-09-14 22:05:02 +00:00
omegablast2002@yahoo.com d64ba7646f new daily eboot 2010-09-14 17:22:26 +00:00
omegablast2002@yahoo.com b507053a1d fixed storm spellcount, affinity/manaredux invis mana, added true "retrace" added 3 new extra cost types. 2010-09-14 17:15:33 +00:00
linshier 58d67d630a Fixed for choosing Chinese at first time play. 2010-09-13 16:35:34 +00:00
solo81@web.de be06be1343 Fixed Tendrils of Agony. 2010-09-13 16:23:28 +00:00
linshier 16fe2d8a4f Fixed bug for translated deck descriptions in DeckManager. 2010-09-13 10:59:59 +00:00
linshier 9d3707386b Fixed memleak by ability BloodThirst 2010-09-13 10:30:12 +00:00
solo81@web.de 2b81ba33f2 Added 33 successfully tested cards mainly based on rev2272.
2 example cards:

[card]
name=Decree of Justice
auto=token(Angel,Creature Angel,4/4,flying,white)*XX
autohand={2}{W}:cycling
autohand={X}{W}:name(cycle and soldier tokens) && cycling && thisforeach(X) token(Soldier,Creature Soldier,1/1,white)*X
text=Put X 4/4 white Angel creature tokens with flying onto the battlefield. -- Cycling {2}{W} ({2}{W}, Discard this card: Draw a card.) -- When you cycle Decree of Justice, you may pay {X}. If you do, put X 1/1 white Soldier creature tokens onto the battlefield.
mana={X}{X}{2}{W}{W}
type=Sorcery
[/card]

[card]
name=Stormbind
auto={2}{D}:damage:2 target(creature,player)
text={2}, Discard a card at random: Stormbind deals 2 damage to target creature or player.
mana={1}{R}{G}
type=Enchantment
[/card]


Added 2 tests for the keywords introduced in rev2272.


Corrected several card bugs.
2010-09-12 17:45:59 +00:00
omegablast2002@yahoo.com c408e5d588 added support for {X}{X} in cost, added support for token(creature, X/X or XX/XX)*XX or X or #. added discard card at random as cost type {d} 2010-09-12 16:15:24 +00:00
wagic.jeck 6063ddcf55 Jeck - Note to self: next time you write a unit test, check it better. 2010-09-12 05:10:10 +00:00
solo81@web.de fc8c8e5a66 Fixed several card bugs reported by 840126. 2010-09-11 21:42:30 +00:00
solo81@web.de 693435b0ae Added "Dueldecks: Elspeth vs. Tezzeret" (EVT).
Added Kemba's Skyguard to the primitives.

Added Contagion Clasp to the mtg_todo.dat.
2010-09-11 21:13:13 +00:00
omegablast2002@yahoo.com 120da0388c fixed 3 memleaks in ability "transforms" 2010-09-11 18:00:48 +00:00
solo81@web.de 39a30f7542 Fixed issue450. 2010-09-11 13:08:03 +00:00
solo81@web.de a417da60c7 Added a test for flashback. 2010-09-11 13:02:04 +00:00
solo81@web.de 1136cbf04f Fixed the test for Whispers of the Muse. 2010-09-11 12:21:42 +00:00
solo81@web.de b336bc85d4 1) Optimized the code of 38 cards based on rev2262.
Cards with FLASHBACK are finally 100%. Here is one example to see the changes:

OLD:

[card]
name=Lava Dart
auto=damage:1 target(creature,player)
autograveyard={S(mountain|mybattlefield)}:copy(this) && moveTo(mystack)
text=Lava Dart deals 1 damage to target creature. -- Flashback - Sacrifice a Mountain. (You may cast this card from your graveyard for its flashback cost. Then exile it.)
mana={R}
type=Instant
[/card]


NEW:

[card]
name=Lava Dart
target=creature,player
auto=damage:1
flashback={S(mountain|mybattlefield)}
text=Lava Dart deals 1 damage to target creature. -- Flashback - Sacrifice a Mountain. (You may cast this card from your graveyard for its flashback cost. Then exile it.)
mana={R}
type=Instant
[/card]


2)Added 21 successfully tested cards based on rev2262. Most of these cards have BUYBACK.


Tests for both keywords will follow in one of the next revisions.
2010-09-10 22:13:41 +00:00
omegablast2002@yahoo.com 4d8efce075 fresh psp eboot 2010-09-10 18:00:57 +00:00
omegablast2002@yahoo.com 99da45f400 Added support for "buyback" and "flashback" with optional auto=buyback/flashback line support. 2010-09-10 18:00:37 +00:00
solo81@web.de 5658b1887b Readded the correct test.txt. Sorry! 2010-09-10 16:53:29 +00:00
solo81@web.de ca50a2a5a2 Added 21 successfully cards. Most of them profit from the newly introduced keyword=AFFINITY (thanks to Zethfox!)
[card]
name=Frogmite
abilities=affinityartifacts
text=Affinity for artifacts (This spell costs {1} less to cast for each artifact you control.)
mana={4}
type=Artifact Creature
subtype=Frog
power=2
toughness=2
[/card]

Added tests for that.

Have fun!
2010-09-10 16:19:19 +00:00
omegablast2002@yahoo.com b2d93e5c70 added a few tweaks MNguyen sent me for his deck manager 2010-09-09 06:46:01 +00:00
omegablast2002@yahoo.com 001ffebab9 fresh daily eboot. 2010-09-08 11:52:59 +00:00
omegablast2002@yahoo.com 79ea200d97 Added MNGuyen's improved and alphabatized deck handling(noticeable speed increase btween menus) and almosthumane's automated pass phase option. 2010-09-08 11:44:11 +00:00
leungclj 1f01b10010 leungclj - corrected "Leyline of Vitality" description. 2010-09-07 09:14:03 +00:00
omegablast2002@yahoo.com bcee2c8077 fresh EBOOT.PBP 2010-09-07 00:05:04 +00:00
omegablast2002@yahoo.com 00453513fa added phage the unstoppable, removed phage from my addon, this version uses no counter, tokens, or workarounds :) 2010-09-06 23:13:06 +00:00
omegablast2002@yahoo.com 8ba887689e readded Rhox Meditant please read comment 2010-09-06 22:42:21 +00:00
solo81@web.de 7b33d8382d Added 24 successfully tested cards based on rev2243 (many thx to Zethfox!!)
This addition includes
- cards with STORM (Dragonstorm,Tendrils of Agony,etc.) --> IT'S FINALLY THERE!
- cards which restrict the casting of spells (Arcane Laboratory,Silence)
- PLATINUM ANGEL (keyword: CANTLOSE)

Added tests for STORM;LAND:number,Sneak Attack

Removed Rhox Meditant and its tests.
2010-09-06 19:48:38 +00:00
omegablast2002@yahoo.com 44ae17122e added affinity.... 2010-09-06 14:22:00 +00:00
omegablast2002@yahoo.com 99b058c221 complete revamp of alternative cost, changes in comment 2010-09-06 05:38:04 +00:00
omegablast2002@yahoo.com 1086abd3d7 daily eboot 2010-09-05 01:17:15 +00:00
omegablast2002@yahoo.com 9a1a7b3a11 tweaked cant cast. 2010-09-05 01:11:59 +00:00
omegablast2002@yahoo.com 978086ee61 fresh daily PSP eboot 2010-09-04 15:17:25 +00:00
omegablast2002@yahoo.com e65b3f223f Complete Overhaul of the cantcast abilities, changes in first comment. 2010-09-04 15:16:57 +00:00
omegablast2002@yahoo.com 972e7d7207 fixed dragonsoul knight's and its variants, it will now correctly give a P/T bonus. 2010-09-04 08:59:33 +00:00
omegablast2002@yahoo.com 485f7bab5c fresh daily EBOOT 2010-09-04 00:23:15 +00:00
omegablast2002@yahoo.com c83950a5d4 storm,cantwin/lose,additionallands,cast restricting 2010-09-04 00:16:20 +00:00
solo81@web.de 3eb8e64a3e Added 43 successfully tested cards based on rev2234 + tests. 2010-09-03 23:17:17 +00:00
omegablast2002@yahoo.com ea1b538882 fixed strenght of night, it was coded incorrectly. 2010-09-03 11:27:28 +00:00
linshier c7fc2b934d Cleaned up addition parsing works in general language file loader, only the language file for deck description now can control where a line ends by using '@' ('@' is translated into '\n' in the memory). 2010-09-02 07:49:41 +00:00
omegablast2002@yahoo.com 7d61e0693e removed draw:1 controller from card "lay bare" 2010-09-02 01:33:09 +00:00
omegablast2002@yahoo.com 7ead8eae9a fixed a typo in the mtg.txt 2010-09-02 01:30:01 +00:00
omegablast2002@yahoo.com 8b205c741f changed Lichenthrope, that ability was renamed to wilting 2010-09-02 01:26:17 +00:00
solo81@web.de d47b6fd4ec Added 66 successfully tested cards based on the last revisions. There are several cards groups in this package:
- Phantom creatures (Phantom Centaur, etc.)
- Soratami
- Cards with alternative casting cost (Force of Will) including almost all cards with EVOKE.
- Creatures which let you look at target players hand.


Added tests for several card groups.


Fixed issue148. Bloodhall Ooze works now as it should.
2010-09-01 23:37:18 +00:00
omegablast2002@yahoo.com a789cd4d08 tweaked mana redux to allow redux on alternative cost as per MTG rule 117.9d 2010-09-01 22:32:10 +00:00
omegablast2002@yahoo.com 45f37b7545 fix windswept_heath.txt missing choice 1, added unearth support without workaround, tweaked alternative cost, added treason/sneak attack ability, added frozen. 2010-09-01 21:31:27 +00:00
omegablast2002@yahoo.com 17eef3ef6f changed "counterasdamage" to "wilting" parser would understand it fine in abilities=, but the ability could not be granted in lords ect. 2010-08-31 17:52:38 +00:00
omegablast2002@yahoo.com 498967ec66 added virulent sliver 2010-08-31 17:41:08 +00:00
omegablast2002@yahoo.com e49ec7e61c forced to change "poisondamage" to "poisontoxic" also poisontwotoxic, poisonthreetoxic 2010-08-31 17:40:44 +00:00
omegablast2002@yahoo.com 527eb9d8f1 Chainer,Dementia Master added 2010-08-31 01:46:15 +00:00
omegablast2002@yahoo.com 0b4dde558b added support for alternative casting cost, evoke, added support for phantom cycle,hydras, added support for exile/bounce as casting cost 2010-08-30 18:45:38 +00:00
omegablast2002@yahoo.com e6769fcfe9 fixed a error in plumes_of_peace_i260.txt it was missing a "choice 1" to select the tap function. 2010-08-30 07:42:17 +00:00
solo81@web.de 327b43d209 Added the 3 missing tests from last revision. 2010-08-29 15:08:05 +00:00
solo81@web.de 4dc2e4c401 1) Added 76 successfully tested cards based on rev2220.
Card list --> first comment


2) Added 3 tests for "PREVENT:*number*".


3) Fixed issue403.
2010-08-29 15:06:39 +00:00
omegablast2002@yahoo.com 3a40050794 remade daily buid/eboot 2010-08-29 00:25:02 +00:00
omegablast2002@yahoo.com feaa0e0963 tweaks to prevent next damage code 2010-08-28 23:17:13 +00:00
solo81@web.de d67701a3b0 Added 7 successfully tested cards based on rev2209 (bloodthirst).
Added 1 test for creatures with Bloodthirst.

Removed 1 test (Tolsimir Wolfblood: This was related to a Voja workaround, which does not exist anymore!).
2010-08-28 22:11:57 +00:00
omegablast2002@yahoo.com 282e1f5ce4 tweaked prevent next damage 2010-08-28 20:55:14 +00:00
omegablast2002@yahoo.com 5f27b749ac daily eboot/templete 2010-08-28 20:20:03 +00:00
omegablast2002@yahoo.com 98d908f403 added support for "prevent next [number] damage" to player/creature. 2010-08-28 19:50:26 +00:00
wagic.jeck 33d0577366 Jeck - Removed redundant Jade theme. To use Jade, select Gemstones and set style to Jade instead of Dynamic. 2010-08-28 11:03:24 +00:00
wagic.jeck 8114944db9 Jeck - Added theme substyles, which are chosen dynamically based on the player's deck composition. Also added lazy unit test for booster packs, though there should be a better way to framework this. 2010-08-28 10:51:38 +00:00
omegablast2002@yahoo.com 3ad28096b1 removed an unrefferenced variable 2010-08-27 17:40:44 +00:00
omegablast2002@yahoo.com 24ae404c3a player requested "bazaar trader" allow yourself as a target also. 2010-08-27 13:27:02 +00:00
omegablast2002@yahoo.com cff4009d2b new PSP Eboot in daily build, cant update the templete tho, users complain it doesnt work for them when i do it. 2010-08-27 12:57:32 +00:00
omegablast2002@yahoo.com 15f2dd99d9 Corrected a bug i created in guiavatar. was using an incorrect method to alpha green letters, Fixed now. 2010-08-27 12:49:14 +00:00
omegablast2002@yahoo.com 3bda949ad5 fixed all "cohort" creatures, they were giving thier bonus "for each" colored creature matching the aslongas. 2010-08-27 11:22:48 +00:00
omegablast2002@yahoo.com fd8b1788f0 removed a little peice of another project that snuck into bloddthirst patch. 2010-08-27 11:04:58 +00:00
solo81@web.de a856d2908e Added 4 cards based on rev2206.
Fixed several card bugs.

Added some missing info to some sets.
2010-08-26 23:11:13 +00:00
wagic.jeck 7af251ba12 Jeck - Resolved (hopefully) issue 383. The problem was faulty "optimization" for PSP. One of the symptoms of this was that, if a set had no mythic cards, and the player succeeded on the 1:8 chance of drawing a mythic, instead of falling back to rares it fell straight to uncommons. 2010-08-26 18:56:02 +00:00
omegablast2002@yahoo.com aef30e6e0d added bloodthirst:number ability 2010-08-26 16:05:48 +00:00
omegablast2002@yahoo.com 3b9b79bb6e fixed an issue where Ai was able to target you when you had shroud. thanks mnguyen! 2010-08-26 10:57:48 +00:00
omegablast2002@yahoo.com 20e563e5ed adjust green poison counter to only display when player poisoned. 2010-08-26 06:19:36 +00:00
omegablast2002@yahoo.com e644aaae3a added poison support, guicounter, "infect" ability, poisonous ability. 2010-08-25 18:56:34 +00:00
omegablast2002@yahoo.com a9850317ff added leyline of meek, Anticipation. [token] WORKS!!! ive mentioned before. 2010-08-24 01:44:53 +00:00
solo81@web.de e59b883011 Added 8 cards based on the last 2 revisions.
Added 4 additional successfully tested cards.


Card list --> first comment
2010-08-23 23:06:44 +00:00
omegablast2002@yahoo.com 1e4b5b356f added support for player shroud using subtype. 2010-08-22 20:17:43 +00:00
omegablast2002@yahoo.com 140200246e tweaked leylines 2010-08-22 18:23:46 +00:00
omegablast2002@yahoo.com aa1521b613 added support for cards like leyline using subtype=leyline 2010-08-22 17:09:37 +00:00
omegablast2002@yahoo.com d31a7f74d4 fixed identity crisis 2010-08-22 11:18:33 +00:00
omegablast2002@yahoo.com 70ec1d4c8c added turnabout, with the new parser tools its 100% now. 2010-08-21 22:40:10 +00:00
omegablast2002@yahoo.com d111614a41 optimized a few cards to use name(..i hate ability ability ability as menus D: 2010-08-21 22:34:49 +00:00
solo81@web.de a28b3fd708 Added 51 successfully tested cards. Most of these cards profit from the latest additions. Card list --> first comment 2010-08-21 21:33:58 +00:00
omegablast2002@yahoo.com 69cd29e2c4 added set color artifact to the list of color you can set 2010-08-20 01:46:26 +00:00
omegablast2002@yahoo.com 6ce502f88c misinformations 3'rd return was missing a type= 2010-08-20 00:11:30 +00:00
omegablast2002@yahoo.com 0f34b88d08 added card Ashnod's Transmogrant 2010-08-19 11:10:25 +00:00
omegablast2002@yahoo.com 3f1bc8a90e myhopes to condense the transforms code was not successful, altho test suite passed all test. 2010-08-19 11:02:36 +00:00
omegablast2002@yahoo.com e0c523d07f rewrote transformsFOREVER to be better handled and condense previous code. 2010-08-19 01:00:03 +00:00
omegablast2002@yahoo.com 19e07a649f added support for transfroming after being moved. ie:card"raise from the grave" 2010-08-18 23:13:43 +00:00
omegablast2002@yahoo.com 5ef6091ca6 corrected an issue with types when not assigning colors using transforms 2010-08-18 13:57:56 +00:00
omegablast2002@yahoo.com eac8afbfb8 corrected typo in card-Memnarch 2010-08-18 10:28:37 +00:00
omegablast2002@yahoo.com af048ca230 slight tweaks to transforms( 2010-08-18 01:47:10 +00:00
solo81@web.de 704a3018fa Added 23 cards based on rev2185. (Card list ---> first comment)
Added tests for manacost changers and TRANSFORM.
2010-08-17 23:22:00 +00:00
omegablast2002@yahoo.com 251684136c daily build/included daily build eboot 2010-08-17 20:12:38 +00:00
omegablast2002@yahoo.com 8a11d818cb modified transforms( ability. mods in first comment. 2010-08-17 19:41:23 +00:00
solo81@web.de 5d42bfa88f 1) Added a support for MANACOST CHANGING cards. (by Zethfox)
Two example codes:

[card]
name=Alabaster Leech
auto=lord(*[white]|myhand) white:+1
autoexile=all(*|myhand) resetcost
autograveyard=all(*|myhand) resetcost
autohand=all(*|myhand) resetcost
autolibrary=all(*|myhand) resetcost
text=White spells you cast cost {W} more to cast.
mana={W}
type=Creature
subtype=Leech
power=1
toughness=3
[/card]

[card]
name=Helm of Awakening
auto=lord(*|myhand) colorless:-1
auto=lord(*|opponenthand) colorless:-1
autoexile=all(*|myhand) resetcost
autograveyard=all(*|myhand) resetcost
autohand=all(*|myhand) resetcost
autolibrary=all(*|myhand) resetcost
text=Spells cost {1} less to cast.
mana={2}
type=Artifact
[/card]

autoexile=all(*|myhand) resetcost
autograveyard=all(*|myhand) resetcost
autohand=all(*|myhand) resetcost
autolibrary=all(*|myhand) resetcost

----> This code section is necessary, because manacost altering cards will keep their effect even when they have left the battlefield. RESETCOST erases all alterations which have no existing source on the battlefield anymore.


2) Added the new keyword TRANSFORM, which is similar to BECOMES. The main difference is that you can change single parameters of a permanent (color,type,...).

Example codes:

[card]
name=Memnarch
auto={1}{U}{U}:target(*) transforms(artifact)
auto={3}{U}:moveTo(myBattlefield) target(arifact)
text={1}{U}{U}: Target permanent becomes an artifact in addition to its other types. (This effect lasts indefinitely.) -- {3}{U}: Gain control of target artifact. (This effect lasts indefinitely.)
mana={7}
type=Legendary Artifact Creature
subtype=Wizard
power=4
toughness=5
[/card]

[card]
name=Dralnu's Crusade
auto=lord(goblin) 1/1
auto=lord(goblin) transforms(zombie,black)
text=Goblin creatures get +1/+1. -- All Goblins are black and are Zombies in addition to their other creature types.
mana={1}{B}{R}
type=Enchantment
[/card]

Important notes concerning TRANSFORM:
- IF YOU TARGET A CREATURE THE EFFECT IS PERMINENT.
- IF YOU TARGET THE SOURCE THE EFFECT IS UNTIL END OF TURN. 
- IF YOU USE LORD THE EFFECT LAST TIL PERMINENT SOURCE LEAVES PLAY.

These restrictions will probably be changed in the near future!


3) Added 57 successfully tested cards.
Card list ---> first comment


4) Changed the name of several tokens: "()" used to cuase crashes when used in the name-line.


5) Added the new keyword NONBATTLEZONE for leaves play trigger optimizing. It can be used to replace the phrase "EXILE,GRAVEYARD,HAND,LIBRARY".

I will add tests for test suite in one of the next revisions!!



####### TEST SUITE PROVEN ########
2010-08-17 00:23:48 +00:00
omegablast2002@yahoo.com 667df139ed increase menutext char array from 25 -> 50. 2010-08-15 13:37:34 +00:00
linshier e8431047de Fixed some of tools/neofont generation code to make neofont a monospace one. 2010-08-15 12:40:27 +00:00
linshier 14f2b6288a Added a new feature for Chinese support: using icons to display the mana cost in the rule description. Updated the Chinese language file for more cards' tranlation and the case fixing like 'Konda Lord of Eiganjo'. 2010-08-15 12:13:48 +00:00
linshier 8247c22ff0 Fixed loading/option-saving slowdown brought in by Chinese support to other languages. 2010-08-15 11:57:31 +00:00
linshier 4c4310ac1e Fixed a missing Chinese font bug. In the patch r2145 which introduced Chinese support, options[Options::LANG] is tested to determine which language wagic is using, while on some PSP2000 system the value would be upper case so that the code will lost itself with 'CN' option and no words will be displayed. 2010-08-15 11:50:46 +00:00
solo81@web.de 6b680cd041 Fixed Boggart Birth Rite. 2010-08-14 20:03:57 +00:00
solo81@web.de 7aebe54107 Fixed Blood Rites (missing ")" ). 2010-08-14 19:55:37 +00:00
solo81@web.de 2c0867ea0c Added 6 cards (card list --> first comment).
All these cards are creatures which have a certain effect when being cast ("played" from owners hand).

Their code profits from the fact that KICKER is not optional in Wagic: This means that whenever you are able to pay Myojin's kicker cost for example (in this case it is {0} --> rate: 100%), it will enter the battlefield with a Divinity counter on it.
- Myojin won't get the Divinity counter
----> when brought into play from the hand with cards like Elvish Piper.
----> when brought into play from any other zone.
2010-08-14 17:58:48 +00:00
solo81@web.de eb22a5f543 Added "From the Vault: Relics" (FVR).
This small set includes one new card, Sword of Body and Mind, which will also be in the upcoming "Scars of Mirrodin".
2010-08-14 17:08:16 +00:00
solo81@web.de 78af5386b3 Fixed almost 40 card coding errors posted by 840126. 2010-08-14 10:13:07 +00:00
omegablast2002@yahoo.com 41fd255990 fixed confirmed bug with Bramblewood Paragon 2010-08-14 04:30:01 +00:00
omegablast2002@yahoo.com 815ce90942 fixed Chronozia crash , door to nothing added auto=tap 2010-08-14 04:14:12 +00:00
omegablast2002@yahoo.com a83610b347 Optimizted coding for 2 card. cards in first comment 2010-08-14 01:50:30 +00:00
omegablast2002@yahoo.com f7fb6b8b82 2010-08-14 01:35:47 +00:00
wagic.laurent 8fb8dc2b69 Laurent - small correction to ARC - Daily build 2010-08-14 00:10:56 +00:00
solo81@web.de 897114af70 Added the new zone "OPPONENTHAND" (by Zethfox).
Zethfox: "Opponenthand gui access, cards that target(*|opponenthand) can now be coded as such, target chooser will activate allowing you to click the new icon under the avatar of the opponent and open the opponents hand Gui so you may select the target card."

Cards in opponents hand are only viewable when target choosing would allow you to enter that zone! ;)


- Added the new keyword "NAME". (by Zethfox). 
When used in an autoline it replaces an autoline's "ability" text with a custom ability name. 
The basic phrase is: "auto=name(whatever you want) &&".

Example card:
[card]
name=Order of the Stars
abilities=defender
auto=choice name(white) && counter(0/0,1,White) all(this)
auto=choice name(blue) && counter(0/0,1,Blue) all(this)
auto=choice name(black) && counter(0/0,1,Black) all(this)
auto=choice name(red) && counter(0/0,1,Red) all(this)
auto=choice name(green) && counter(0/0,1,Green) all(this)
auto=this(counter{0/0.1.White}) protection from white
auto=this(counter{0/0.1.Blue}) protection from blue
auto=this(counter{0/0.1.Black}) protection from black
auto=this(counter{0/0.1.Red}) protection from red
auto=this(counter{0/0.1.Green}) protection from green
text=Defender (This creature can't attack.) -- As Order of the Stars enters the battlefield, choose a color. -- Order of the Stars has protection from the chosen color.
mana={W}
type=Creature
subtype=Human Cleric
power=0
toughness=1
[/card]

The popup window for this card will now contain a list with 

"white,"blue","black","red" and "green" 
instead of 
"ability","ability","ability","ability","ability".

This will make a lot of cards much easier to handle!


- Added 42 successfully test using one (or both) new keywords.
Card list --> First comment


Note that we did not add tests for both new keywords:
It is simply not possible to write them yet! They will follow as soon as they are possible. We guarantee that everything we submitted in this revision has been tested excessively!
2010-08-13 00:38:56 +00:00
leungclj fb3733a947 added missing "]" to line: 18776, 33985, "(" to line 43308, ")" to line 7594, 18776, 23862, 28399, 37885. 2010-08-12 19:57:02 +00:00
leungclj 02903ec9e8 added missing "}" to line: 13005, 13006, 19169, 31385, 42935, 47481 and removed an extra ] @ line 25187 2010-08-12 15:44:23 +00:00
leungclj 083cec787b added missing "]" @ line 489 and line 6040 2010-08-12 15:08:00 +00:00
solo81@web.de b0337db057 Fixed Giant Growth & Aether Vial. 2010-08-12 12:06:03 +00:00
wagic.laurent 54943eaf8f Laurent - added ARC, daily build, borderline.txt, modified mtg.txt added scheme_todo.dat
Added ARC (although the set does not have official abbreviation. I putted the scheme in a separate todo.dat, mainly because I'm lazy of adding all the scheme alphabetically ordered into the todo.dat. Some cards do not have official ID now I've used ID from the numbering sequence of ARC that were unusued, will provide a full list later for tracking purpose.
modified the m11 cards.dat name, otherwise it does not load correctly.
moved some cards from mtg.txt into a "borderline.txt", probably some others should be added...
Daily build
2010-08-11 22:15:10 +00:00
leungclj 50093b4cda removed the "|" from Hickory Woodlot. 2010-08-11 12:46:03 +00:00
solo81@web.de 8a72e76bcf Fixed some small typos from the last revisions
Thx to leungclj!!!
2010-08-10 11:27:50 +00:00
leungclj 15d20a4cd3 improved card description, changed a few "E" to "--" 2010-08-10 11:06:29 +00:00
solo81@web.de 477439773b - Fixed the "CANTREGENERATE" keyword (by Zethfox).
The engine always handled it as "REGENERATE" and thus had to be renamed. Its new name is "CANTREGEN". It has been tested excessively by me and Zethfox. Now all cards with the former "cantregenerate" work as they should.

- I also added a test for "CANTREGEN" (Incinerate).


- Added the new keyword "FOG" (by Zethfox). 
This is an equivalent for "PREVENTALLCOMBATDAMAGE", which only worked for instants and sorceries. "Fog" works only for permanents and is used in combination with the newly introduced parameter "ONESHOT"!

- I also added 2 tests for "FOG" (Maze of Ith, Spore Frog).

Both additions lead to several issue fixes:
Fixed issue286.
Fixed issue328.
Fixed issue332.
Fixed issue416.

- Removed Demonic Torment, Gaseous Form, General's Kabuto, Sandskin. Those cards never worked and could even not be fixed with "FOG".


- Optimized the code of the dragon-lair land-cycle from PLS and added 2 tests for them.

- Added 8 successfully tested cards. Card list -> first comment.
2010-08-09 23:49:31 +00:00
solo81@web.de 9e549f3e88 (Re)Added 16 successfully tested cards based on rev2155.
Card list -> first comment.

Optimized code for 9 cards (now 100%).
Card list -> first comment

Fixed issue355.
2010-08-09 14:35:18 +00:00
solo81@web.de a3376bf08c Added 18 successfully tested cards based on rev2155.
Card list -> first comment

- Added tests for "lifeset" (Biorhythm,Blessed Wind)

- Removed test for Hope Charm.

- Optimized all cards with life payment as activation cost or mana cost.

- Optimized all spells with a must choice.
2010-08-08 23:52:34 +00:00
solo81@web.de ab88dfcda9 Fixed the "oneshot" parameter introduced in rev2155. 2010-08-08 22:06:46 +00:00
wagic.the.homebrew@gmail.com 47c9ad1b65 Erwan
- new features by Zethfox:
-- "oneshot" optional parameters for lords (helps fixing issues with bouncelands)
-- Life as a cost (avoids using a dirty trick of paying life as an effect)
-- set life total abilitiy (lifeset
-- new auto lines: autostack, autoexile

The test suite passes with these changes, also no test using these abilities has been added yet
2010-08-08 14:04:37 +00:00
wagic.the.homebrew@gmail.com 3d3b4112cb Erwan
- minor font fixes by linshier
2010-08-08 11:45:53 +00:00
solo81@web.de e8470d6f71 Added Sword of Kaldra. 2010-08-05 19:42:05 +00:00
solo81@web.de fac262078f Fixed issue432. 2010-08-04 19:00:49 +00:00
solo81@web.de 91be52e50e Added 18 successfully tested cards based on rev2146.
Card list --> First comment.
2010-08-01 18:06:04 +00:00
leungclj 71e3216bf2 removed the "?" from Goblin Razerunners and Azami, Lady of Scrolls 2010-08-01 13:48:26 +00:00
leungclj b687c6f79e re-include leveler back to _test.txt 2010-08-01 13:13:16 +00:00
leungclj 1aff826a0a test for Twinstrike, don't remember seeing card that allows targeting 2 things.
improved description on Twinstrike too.
2010-08-01 13:01:14 +00:00
wagic.the.homebrew@gmail.com e224223a43 Erwan
- daily build
2010-08-01 05:33:15 +00:00
wagic.the.homebrew@gmail.com ce69e23357 Erwan
- minor fix in Zethfox cards addon (Bad lines error from parser)
- Zethfox's patch for {t(target)} as an extra Cost. Works the same way as sacrifice, check Azami, Lady of Scrolls for an example
- fixed compilation on the PSP (sorry!)
2010-08-01 03:21:59 +00:00
wagic.the.homebrew@gmail.com f40af0b1cb Erwan
- Chinese patch by linshier
2010-07-31 14:41:04 +00:00
wagic.superhiro 1704a20d09 Fixed Mulldrifter. 2010-07-31 13:58:47 +00:00
solo81@web.de fc60ddff64 Removed cards from Zeth's addon that were already moved to the mtg.txt in rev2136. 2010-07-30 14:04:25 +00:00
wagic.the.homebrew@gmail.com b0d81dc8c1 Erwan
- almosthumane's code for Mulligan
- added better wording for menu of "move" abilities (with help from Zthfox)
- updated Zethfox's card addon
2010-07-30 12:14:10 +00:00
solo81@web.de d92643f5d6 Fixed Knight Exemplar. 2010-07-30 11:34:38 +00:00
solo81@web.de df1036d690 Fixed Trade Caravan. 2010-07-30 11:29:30 +00:00
leungclj db8259fbc7 fixed Student of Warfare 2010-07-29 12:07:48 +00:00
leungclj 59bff80e6b "re-implant" Gobhobbler Rats from r2137 2010-07-29 08:42:38 +00:00
solo81@web.de 8159071849 Added 4 successfully tested cards with Hellbent. (card list ->> first comment)
Added 2 tests for hellbent.
2010-07-28 20:45:50 +00:00
solo81@web.de a537522770 - Added 22 successful tested cards (card list --> first comment)
Zethfox found out that a single sacrifice cost as an addition to a normal manacost can be added to the manacost-line of a card!

Here is a code example from the famous card Natural Order (VIS):

[card]
name=Natural Order
auto=moveTo(myBattlefield) target(creature[green]|myLibrary)
text=As an additional cost to cast Natural Order, sacrifice a green creature. -- Search your library for a green creature card and put it onto the battlefield. Then shuffle your library.
mana={2}{G}{G}{s;notatarget(creature[green]|mybattlefield)}
type=Sorcery
[/card]

I tested this excessively and I have to say: This kind of code leads to absolute 100%ers.


- Added 2 tests for this to save it from being broken by future code changes.


- Removed the land cycle from Visions (Coral Atoll, everglades, etc.).
2010-07-28 18:30:16 +00:00
leungclj 7e5add2b3c Optimized code: Feral Hydra 2010-07-25 08:42:03 +00:00
wagic.the.homebrew@gmail.com c1073c83e6 Erwan
- Removed some none working cards from mtg.txt
- Added the "unofficial" grade 
- Added a system to give a grade to an entire file, avoids reading the file any further if not necessary
- Added Zeth's addons to the primitives folder, with a grade of "Unofficial"
2010-07-25 06:29:33 +00:00
wagic.the.homebrew@gmail.com 35e5b64dfd Erwan
-fix issue 387 (can't save "dangerous" grade from the options)
2010-07-25 04:39:22 +00:00
solo81@web.de 9a66dec391 Readded a fixed version of Enclave Cryptologist. --- Thx to Zethfox!! 2010-07-24 08:54:34 +00:00
solo81@web.de f071cbde38 Added Opalescence. --- Many thanks to moxen!
Fixed Keldon Megaliths.
2010-07-24 08:28:26 +00:00
wagic.the.homebrew@gmail.com 1332842025 Erwan
- bug fix in JGE++ audio (improve HBL compatibility)
- Added new rewards in story mode: random card, card (either by "name" or id), specific set
- Story mode: added possibility to choose music, and bg for duel.
-- See "01. Where it all begins" for examples of new features
2010-07-19 13:44:26 +00:00
leungclj acf06d0181 rename the file, forgot to write a ticket for the issue 2010-07-17 13:42:49 +00:00
leungclj 9fb7114b43 leungclj - test for Skullclamp
When equipped creature is put into a graveyard, draw two cards.
this will also trigger if equipped creature goes else where.
2010-07-16 12:05:02 +00:00
solo81@web.de 352394cfd8 Optimized code for:
Demon's Jester
Fen Stalker
Rakdos Pit Dragon
Scoria Cat
Slithering Shade
Spur Grappler
Taste for Mayhem


Fixed:

Tectonic Edge


ADDED:

Cackling Flames
Cutthroat il-Dal
Keldon Megaliths
Sarcomancy
Spirit Mirror
2010-07-15 21:34:22 +00:00
solo81@web.de d18dbe0ac8 Added Scute Mob.
Thanks to Zethfox!
2010-07-15 14:29:05 +00:00
leungclj 9e47e3c42b leungclj - fixed Waning Wurm 2010-07-14 13:30:06 +00:00
leungclj b0246ee40a leungclj - fixed Gemstone Array 2010-07-14 08:51:18 +00:00
leungclj@googlemail.com 82c803c11b leungclj - fixed Tectonic Edge & Snapping Creeper 2010-07-13 09:20:56 +00:00
leungclj@googlemail.com cf5491a08e leungclj - "fixed" Tolsimir Wolfblood by giving the token milticolour manacost. Test included. 2010-07-12 08:01:13 +00:00
solo81@web.de b02ce88b87 Fixed Charging Bandits. 2010-07-11 16:22:11 +00:00
wagic.the.homebrew@gmail.com fd8645d1a4 Erwan
- JGE updates : main accepts argv/argc. Compilation variables for MP3 and Network support
- Minor fix in Wagic (potentially fixes crashes when using activated abilities several times in onr turn. Couldn't reproduce the issue)
2010-07-11 10:56:12 +00:00
solo81@web.de 672e53d58c Fixed issue433. 2010-07-11 07:42:58 +00:00
solo81@web.de 03d0b8a2fa Added M11. 2010-07-09 23:34:55 +00:00
solo81@web.de 852e6e5bf1 Fixed several bugs.
Removed Mystic Snake.

Removed Utopia Vow.
2010-07-09 20:59:12 +00:00
leungclj 2ef035e417 leungclj - Fixed: Tawnos's Wand: {2}{T} instead of {T},
Armored Griffin, from auto=flying, vigilance, to: ability: flying, vigilance
Carrion Howler RAV, from:+2/+1 to:+2/-1
2010-07-07 17:57:07 +00:00
leungclj 171b3b3412 leungclj - fixed Prowling Nightstalker 2010-07-07 15:46:25 +00:00
leungclj@googlemail.com 5c5969fc0a leungclj - Fixed Cadaver Imp 2010-07-04 09:05:23 +00:00
leungclj@googlemail.com 158bf13f1c Added Halimar Wavewatch
thanks ph34rbot
2010-07-03 15:07:27 +00:00
leungclj@googlemail.com b56c687599 leungclj - Fixed Affa Guard Hound 2010-07-03 08:33:23 +00:00
leungclj@googlemail.com 4679741c0c leungclj - Fixed Lightmine field 2010-07-03 08:30:26 +00:00
leungclj@googlemail.com 31619aad06 leungclj - fixed gravity well(ROE). test included. 2010-07-02 18:59:47 +00:00
solo81@web.de 6daf858c78 Fixed Pelakka Wurm. 2010-07-02 14:00:39 +00:00
solo81@web.de 0f6093fbc3 Fixed Battle-Rattle Shaman and Walking Atlas.
Removed the Lair-land-cycle (PLS). hey obviously never worked as they should.
2010-07-02 13:52:22 +00:00
solo81@web.de da4f99c18b Fixed Wayfaring Giant. 2010-07-01 16:00:30 +00:00
solo81@web.de 5bfa677e91 Fixed Sunweb. 2010-07-01 15:58:01 +00:00
solo81@web.de d83bd9fd4f Fixed Kokusho, the Evening Star. 2010-06-30 16:19:06 +00:00
solo81@web.de 4d7141894b Fixed Nezumi Ronin. 2010-06-30 16:16:36 +00:00
solo81@web.de aa33af43b8 Added Zombie Infestation.
Added a test for Zombie Infestation.


Thanks to moxen & Zethfox!
2010-06-28 16:34:24 +00:00
solo81@web.de 053c09c417 Fixed Flame Fusillade. 2010-06-28 15:17:22 +00:00
solo81@web.de d7f7da74c8 Fixed Merfolk Looter 2010-06-26 11:21:57 +00:00
solo81@web.de 7bb569a679 Fixed Loxodon Hierarch, Phyrexian Bloodstock and Undead Gladiator. 2010-06-25 22:13:36 +00:00
wagic.the.homebrew@gmail.com 5cbc8e4b4a Erwan
- fix issue 425 (Echo)
2010-06-21 12:25:38 +00:00
jean.chalard 9218e67971 J :
* Add the name of the current test to the display, to ease finding
  which test is currently crashing.
2010-06-20 04:23:26 +00:00
solo81@web.de 8ee5bfa48a Fixed Endless Wurm. 2010-06-19 16:56:22 +00:00
solo81@web.de cd57fcff7d Moved Presence of the Master and Null Brooch to the mtg_todo.dat.
Both cards have been reported not to work. Because there are no tests for them in the test suite, it is very likely that they never worked at all.
2010-06-16 21:40:18 +00:00
wagic.laurent 982ca52939 laurent - corrected the french translation... cancel slipped by my search for duplicate during my last modification... sorry 2010-06-16 20:25:37 +00:00
wagic.the.homebrew@gmail.com 12ee47ad24 Erwan
-fix for issue 424 (memory leak in thisforeach)
2010-06-14 13:21:08 +00:00
jean.chalard 7b2c4f84a0 J :
* Fix a bug where a cast life spell would randomly not work.
2010-06-13 14:22:47 +00:00
jean.chalard 32352161cc J :
* Fix a segfault case.
* Improve the trash system to handle several types more gracefully.
2010-06-13 14:03:02 +00:00
jean.chalard f14f56b9ce J :
* Fix 64-bit compilation
2010-06-13 09:38:58 +00:00
wagic.the.homebrew@gmail.com 3c6c561753 Erwan
- Added abrasax's game manual to the campaigns list
- Added a duel in the tutorial campaign, so that it becomes a bit meaningful (and therefore it's now not so easy to unlock the set)
2010-06-13 04:43:15 +00:00
solo81@web.de 4176e1b286 Added One Dozen Eyes (the first card with Entwine in Wagic).
Added a test for One Dozen Eyes and Glimmervoid.
2010-06-12 20:16:52 +00:00
wagic.the.homebrew@gmail.com 0b1fd9359f Erwan
- fixed a duplicate id in primitives (please be careful!)
- fixed issue 426
2010-06-12 14:35:19 +00:00
solo81@web.de 454d1af366 Fixed Avenging Angel 2010-06-12 08:59:50 +00:00
wagic.the.homebrew@gmail.com d756005093 Erwan
- fix for issue 390 (tokens available in shop)
- added "log" features in makefile
2010-06-12 06:06:27 +00:00
jean.chalard b25cd5d041 J :
* Replace index() with strchr(), which is the same but also exists
  in windows.
2010-06-12 04:13:12 +00:00
solo81@web.de d618aa4e6e 1) Added several successfully tested cards based on the fact that "<1" now seems to work completely for any permanents.
Card list -> first comment.

2) Fixed issue422.

3) Optimized 3 cards:

Covetous Dragon
Emperor Crocodile
Tethered Griffin


All additions and changes don't cause test suite to crash.

Will also add some tests in the next few days.
2010-06-09 20:47:38 +00:00
solo81@web.de a75e6fd5b8 Added Bazaar of Baghdad and Magus of the Bazaar. 2010-06-09 13:20:15 +00:00
d32.wagic 1b9147b084 Daddy32 - Single new task type:
"Pacifism" - requiring player to win a game without (much) damage dealing and milling, taking advantage of newly added instant-win cards.
2010-06-09 08:10:36 +00:00
jean.chalard fc9fccd93b J :
* Improve loading performance by about 25%.
  - This is certainly not the kind of change I was aiming at, but it
    just happened to get done, so why not commit it.
  - Little point for users in this change actually, since the loading
    times get down from 15 to 11 secs or so, it's not even that
    obvious.
  - I get about 25% on my PSP. Valgrind reports 36% improvement on PC.
    I wish it was the opposite ;_;
  - Feedback welcome
2010-06-08 17:42:35 +00:00
jean.chalard dfca20c90b J :
* Damn why did that compile.
* Okay, I hope this works as intended now
2010-06-08 16:55:24 +00:00
jean.chalard aa6f7ac63c J :
* The smallest bugfix ever
2010-06-07 17:51:44 +00:00
solo81@web.de aa6a3cf1a9 Removed Calcite Snapper.
Added Glimpse of Nature.
2010-06-06 20:35:12 +00:00
solo81@web.de e330c5fa65 Fixed Runed Servitor. 2010-06-06 18:35:58 +00:00
solo81@web.de 45da246d27 Fixed Oracle of Nectars. 2010-06-06 10:25:51 +00:00
solo81@web.de 3090a0b4de Fixed Anathemancer and Drana, Kalastria Bloodchief. 2010-06-05 18:41:50 +00:00
solo81@web.de ce34e4c73a Fixed Buried Alive.
Moved Reiver Demon to mtg_todo.dat. This card can only work after some engine fixing... .
2010-06-05 18:05:14 +00:00
solo81@web.de 235039e055 Fixed Rusting Golem. 2010-06-05 13:36:49 +00:00
solo81@web.de 7ce3b9bbde Fixed Phyrexian War Beast. 2010-06-05 12:49:06 +00:00
solo81@web.de dbf6ac1e90 Fixed Prophetic Prism. 2010-06-05 12:29:15 +00:00
solo81@web.de c23f1f508a Fixed Survivor of the Unseen. 2010-06-04 20:50:45 +00:00
solo81@web.de 6c29bd7a86 Fixed Chromatic Star and Kinsbaile Cavalier. 2010-06-04 18:52:37 +00:00
solo81@web.de be79d80fcf Fixed Ticking Gnomes and Parallax Dementia. 2010-06-04 18:30:40 +00:00
wagic.superhiro 8d22b68781 Fixed Ondu Giant & Temple of the False God. 2010-05-30 17:29:48 +00:00
solo81@web.de b2860c24c6 Fixed Antler Skulkin, Keldon Marauders and Zendikar Shrine Expedition. 2010-05-25 11:41:08 +00:00
wagic.superhiro 7a07d35763 Fixed Temporal Spring. 2010-05-20 17:10:01 +00:00
wagic.superhiro 35a38d328f Fixed Ranger of Eos, I think. 2010-05-18 23:18:43 +00:00
wagic.the.homebrew@gmail.com e98eda0028 Erwan
- daily build.
2010-05-18 14:04:08 +00:00
wagic.the.homebrew@gmail.com 2eb5043972 Erwan
- added Salmelo to credits
- updated version number
- fixed some bugs with the Story mode on the PSP
2010-05-18 13:50:33 +00:00
wagic.superhiro f85a78198c Fixed Emrakul's Hatcher. 2010-05-16 14:59:32 +00:00
solo81@web.de d73416440b Fixed Quirion Trailblazer 2010-05-15 10:19:39 +00:00
wagic.superhiro 1da93c8337 Fixed Hellspark Elemental. 2010-05-12 22:25:25 +00:00
solo81@web.de 1e25fc44d4 Added 10 successfully tested cards with Devour.
Added a test script creatures with Devour.

Card list -> First comment
2010-05-12 22:02:14 +00:00
solo81@web.de 998e17ef25 Added all remaining codable cards with Unearth.
Card list -> First comment
2010-05-11 21:05:19 +00:00
leungclj d92cdfacc1 1 more test script for unearth - pass 2010-05-11 12:00:26 +00:00
leungclj b9aa9b3df5 test script for unearth - pass 2010-05-11 11:50:51 +00:00
wagic.the.homebrew@gmail.com fd8c0c6eca Erwan
- fix compilation bug in Credits.cpp
2010-05-09 22:51:07 +00:00
solo81@web.de a4faacc7e1 Added some successfully tested cards with Unearth.
Example code:

[card]
name=Dregscape Zombie
autograveyard={B}:moveto(exile) && token(17483511) asSorcery
text=Unearth {B} ({B}: Return this card from your graveyard to the battlefield. It gains haste. Exile it at the beginning of the next end step or if it would leave the battlefield. Unearth only as a sorcery.)
mana={1}{B}
type=Creature
subtype=Zombie
power=2
toughness=1
[/card]
[card]
name=Dregscape Zombie Unearthed
type=Creature
subtype=Zombie
abilities=haste
auto=@next end:moveTo(exile)
power=2
toughness=1
mana={1}{B}
[/card]

Added a test script for this card as an example for cards with Unearth.

Card list -> First comment


More cards with Unearth will follow tomorrow.
2010-05-09 22:09:18 +00:00
wagic.the.homebrew@gmail.com b1079942af Erwan
- Reward system in Story mode (currently, either credits or random set)
- Rules now accept for player 2 to start (see story mode "block" stage)
- Story mode now has an autosave/autoload mechanism. This is for convenience but also to prevent people from abusing the reward mechanism too easily.
- possibility to choose an avatar for both players through the rules (see example in story mode)
2010-05-09 08:14:01 +00:00
solo81@web.de 11a259d786 Optimized and corrected several creaures with Level Up.
This fixes issue413.
2010-05-09 07:03:53 +00:00
solo81@web.de dc8c492137 Added several other card tests. 2010-05-08 23:11:42 +00:00
solo81@web.de f0896a29d9 Added a test for Brainstorm.
This is my first test addition! 

^^ I will now do my best to create tests for all new greater card groups for Wagic 0.12.1.
2010-05-08 18:35:27 +00:00
solo81@web.de 295a32c3d7 Fixed Brainstorm and Careful Study. 2010-05-07 15:15:40 +00:00
wagic.superhiro b4c75e63fd Fixed tape=nothing mistake :) 2010-05-07 12:49:49 +00:00
wagic.the.homebrew@gmail.com ded3736c6b Erwan
-fix issue 410
2010-05-07 12:46:00 +00:00
wagic.superhiro 7a593f2b2d Fixed Kargan Dragonlord and Lord of Shatterskull Pass. 2010-05-07 12:37:26 +00:00
solo81@web.de 4b719dc474 Fixed Ophidian Eye.
Altered the code of Countersquall, Punish Ignorance and Undermine by changing "targetController" to "opponent". 

This is a workaround for issue408, not a fix. I think we can live with that because no one wants to counter his own spells with Undermine, I think...
2010-05-06 21:26:13 +00:00
solo81@web.de 64367d27a4 Added 37 successfully tested cards based on this discussion
--> http://wololo.net/forum/viewtopic.php?f=21&t=1430

!!!!Many thanks to Kaioshin!!!!


One example card code:

[card]
name=Arc Lightning
target=creature,player
auto=damage:1
auto=damage:1 target(creature,player)
auto=token(-1111112)
text=Arc Lightning deals 3 damage divided as you choose among one, two, or three target creatures and/or players.
mana={2}{R}
type=Sorcery
[/card]
[card]
name=Arc Lightning's 3rd Damage
auto=counter(0/0,1,Arc Lightning)
auto=@damaged(creature,player):thisforeach(counter{0/0.1.Arc Lightning}>0) damage:1 target(creature,player) && counter(0/0,-1,Arc Lightning) && counter(0/0,1,Bury)
auto=thisforeach(counter{0/0.1.Bury}>0) bury
type=Nothing
id=-1111112
[/card]

This new introduced use for fullcoded tokens seems more borderline than it in fact is:

- The tokens cannot be targeted or destroyed except for their own sac-effect.
- They don't cause any effects on the board to trigger.
- The interactions with their "mothercard" cannot be interrupted.
- They are invisible (this is true for most of the cards), because they exist as short as a permanent can exist, vanishing immediately after entering the board.

I couldn't believe it when I saw this way of coding the first time, but it just works wonderfully! Very few people will recognize any difference between this and the usually coded cards.

THIS ADDITION DOES NOT CAUSE TEST SUITE TO CRASH!! ;)


Card List -> First Comment
2010-05-06 21:02:49 +00:00
wagic.the.homebrew@gmail.com 0149512412 Erwan
- fixed bugs introduced in revision 2034 (Giant Growth)
- Extended Story mode xml: much easier to write basic thing, font selection, possibility to position answers, answers now in correct order
- moved story in the menu because it is not major for now
2010-05-06 13:47:56 +00:00
jean.chalard f7e55bbc9e J :
* Fix the last pending bug of issue 380.
* This avoids calling the translator before it is initialized.
  - Removing the call is harmless because it is done later anyway,
    late enough that we know the translator is initialized, but soon
    enough for the data gathered by the call hasn't been used yet.
* This doesn't protect against future early uses of the translator.
  - This is quite hard to fix. The translator is initialized really
    early, pretty much as soon as we know what language is in
    use. However, there is a little interval and it is possible to call
    upon it inside (this is what caused this bug). It might also be
    called before we know the language at all, with obvious problems.
2010-05-05 11:45:24 +00:00
jean.chalard db96cb5142 J :
* Partial fix for issue 380.
* This remove a bug where a variable was not initialized in profiles.
* The impact on this could have ranged all the way to a full trashing
  of the user configuration files (though it requires some bad luck)
2010-05-05 06:27:52 +00:00
jean.chalard b0f1d301b8 J :
* Add a suppressions file for valgrind for those errors we can't
  do anything about.
* Please be *extremely* careful before adding anything in this file,
  and please document well any additions with the reasons why it
  should indeed be in here and pointers to web pages explaining why
  this is happening.
2010-05-05 02:50:49 +00:00
jean.chalard ef16aa45a1 J :
* Little compilation problem fix.
2010-05-04 16:18:56 +00:00
wagic.laurent 6f053ab419 Laurent - jamais 2 sans trois !!!
just made a mistake with the last commit and erased the subtypes... now corrected. (I hope)...
2010-05-03 21:39:39 +00:00
wagic.laurent ddc9899248 Laurent - updated french translation, just remove some duplicate did not notice them in the first place because there was some extra space in the original file, now removed. 2010-05-03 21:27:58 +00:00
wagic.laurent ba039d4fac Laurent - Updated the french translation.
Added SHM,EVE,ALA,ARB and CFX
Was a pain, some sets were added "partially" so I had to review them completly + there was some english text !!!
I also added some subtypes, for the set I added.
2010-05-03 21:14:03 +00:00
solo81@web.de f5b08ade13 Fixed issue397.
Fixed issue398.

Removed Silent Arbiter: This card does not work. Opponent can always attack or block with more then one creature although Silent Arbiter is on the battlefield. Closing issue400.
2010-05-02 19:42:38 +00:00
wagic.the.homebrew@gmail.com 755bb04475 Erwan
- updated pt translation (thanks to almosthumane)
- Added/updated some Themes by Ilya B
- Added a random wallpaper loading at loading screen (see wallpapers.txt in Res/graphics)
- Saving decks and collection should now be a bit more secure (attempt at minimizing issue 393)
2010-05-02 12:49:36 +00:00
solo81@web.de c26f453b16 Added Helix Pinnacle.
Fixed Puppet Conjurer.
2010-05-01 18:47:47 +00:00
solo81@web.de ba91fcfcac Fixed Beastmasters Ascension.
Optimized all cards with Graft.

Removed Merrow Reejerey: Permanents with two or more "may"-lines never worked because all these lines will always trigger, so you could use them all. Closing issue362.
2010-05-01 17:25:42 +00:00
solo81@web.de ebff6e7872 Removed Miraculous Recovery.
This card cannot work for now: The engine always tries to let the "+1/+1 counter"-effect trigger first, so it tries to give a creature in a graveyard a +1/+1 counter, and this is not possible in wagic for the moment.

Closing issue306.
2010-05-01 14:49:22 +00:00
solo81@web.de e832acad3b Fixed issue396. 2010-05-01 14:31:11 +00:00
solo81@web.de 7db3583a31 Added Drana, Kalastria Bloodchief.
Fixed issue395.
2010-05-01 09:39:18 +00:00
wagic.laurent bfa825e0e2 Laurent - update of the french and spanish translation.
I did not add the italian cards because the file provided on the forum needs to be cleaned,
2010-05-01 07:43:03 +00:00
solo81@web.de 7ccf9e8a0f Fixed Masticore. 2010-04-30 15:16:56 +00:00
solo81@web.de c887ef808a Added 6 successfully tested cards based on rev2021
(winGame keyword).

Added 2 interesting draw spells (they work 100% as they should!)

Added 6 other yet undiscovered, but perfectly working cards.


Card list -> First post
2010-04-27 21:28:01 +00:00
d32.wagic 2814165140 Fixed reward calculation for TaskWisdom, tweaked its difficulty. 2010-04-27 11:07:13 +00:00
salmelo16 4ee2f26e7b Fix bug with upcost and countercosts, daily build. 2010-04-27 04:57:13 +00:00
wagic.the.homebrew@gmail.com b0e92d68a8 Erwan
-missing files (JLogger)
2010-04-26 22:47:46 +00:00
wagic.the.homebrew@gmail.com a3cbbedd3c Erwan
- fix issue 392 (broken tests)
- Fix a bunch of memory leaks (guys please be careful!)
- Added Logging facility in JGE
- HBL Compatibility (cleaned up some code with MP3 in JGE)
- Added "winGame" ability. Currently used mostly by the story mode, but some cards could probably need it too
- Improved story mode and uncommented it from the source.
-- The current campaign is of course very basic, anybody who wants to improve it or create other ones feel free to do so
-- TODO (short term): save progress, rewards system, improve tutorial campaign
-- I'll talk a bit more about this on the forums/email after a night of sleep
2010-04-26 14:27:34 +00:00
wagic.superhiro d311f88f93 Fixed Elvish Archdruid and Lord of Shatterskull Pass. 2010-04-25 15:56:59 +00:00
solo81@web.de f566d8d146 Added 41 successfully tested cards with Cumulative Upkeep. This addition is based on the bug fix in rev2018.
Added 10 other successfully tested cards. These are instants or sorceries with up to two optional targets.

Card list -> First comment
2010-04-24 20:30:00 +00:00
salmelo16 aa5f091568 Fix bug with the interaction between thisforeach and upcost that made the cost essentially unpayable. 2010-04-24 14:29:24 +00:00
salmelo16 fa4ed3d3f5 Stop rarity=t cards from appearing in the shop. 2010-04-24 03:59:44 +00:00
wagic.laurent 2235ca333e Laurent - Added Duel Decks: Phyrexia vs. the Coalition 2010-04-23 20:05:59 +00:00
solo81@web.de 117f7b3954 Added ROE folder with the card_dat. :) 2010-04-22 21:35:22 +00:00
solo81@web.de 3c8396bcea Added Rise of the Eldrazi (ROE).
- Added 117 codable cards to the mtg_txt.
- Added a ROE folder with a card_dat.

The todo_dat will be updated later!
2010-04-22 21:28:57 +00:00
solo81@web.de c6eff5d83e Added 71 successfully tested cards based on rev2012.
- Several creatures with upkeep costs.
- Almost all creatures with Echo. 
- Force of Nature and Lord o f the Pit are softcoded now.

Card list -> First comment

Fixed issue389.
2010-04-21 18:26:00 +00:00
salmelo16 3339b6b6a8 Add Upkeep costs to parser.
upcost[cost[,phase]] effect

cost is any cost that you might use for an auto line, including sacrifice and counters, phase is optional and defaults to upkeep, phase can have an optional prefix next which will make it so you only need to pay the cost once.

Effect is any effect that can go in an auto line and only goes off if cost is not paid during phase. For example, force of nature would be: auto=upcost[{G}{G}{G}{G}] damage:4 controller.
goblin patrol would have: auto=upcost[{R},next upkeep] moveto(mygraveyard)
2010-04-21 01:56:44 +00:00
solo81@web.de 73cfbce0ae Added 36 cards with Flashback.
Thanks to Norrin who initiated the idea of coding cards with flashback this way (-> Wagic Forum -> Card/Sets)

Card list -> First post
2010-04-19 13:20:03 +00:00
solo81@web.de 3ba4bd0cfc Added 4 successfully tested cards with buyback.
Buyback spells with a target don't work yet (see for the reason in my post in this revision).

Card List -> First post
2010-04-18 09:58:11 +00:00
solo81@web.de 52503efaab Added 9 successfully tested cards based on rev2007.
Card list -> First comment
2010-04-18 08:49:15 +00:00
leungclj ed6361598c addition to r2007 2010-04-17 20:35:37 +00:00
salmelo16 be1a52f660 Update this(X) so that it works with spells as well as activated abilities. Also fixed a bug were this(X) did not work with targeting.
Adds Martial Coup
2010-04-17 19:45:57 +00:00
solo81@web.de 27a922db38 Added 11 successfully tested cards based on rev2003.
Activated abilities with {X}-costs that have a target don't work yet.

Card list -> First comment


Fixed issue386. It was just a little typo in Nekrataals autoline.
2010-04-17 12:07:57 +00:00
solo81@web.de 47b5b5f7df Added 84 successfully tested cards.
Most of the cards are based on the last adds by salmelo, while some few cards could have been added for half a year or more.

2 weeks of intensive testing are over, and I think all cards will do what they should but if you still find something discussable after testing them by yourself, plz post it here!

Card list -> First post.
2010-04-16 20:04:23 +00:00
salmelo16 c8b573d029 fix changes from r2003 so that they will work with multiple effects through &&. 2010-04-15 00:00:11 +00:00
salmelo16 74d2bbf324 Added X to the filters for this() and thisforeach(), for use with {X} costed activated abilities, although it should theoretically work with spells as well if necessary. 2010-04-14 23:42:47 +00:00
salmelo16 73b494c32d Fix bug where new this() ability continuous effects would not deactivate if the condition became false after having already turned true. 2010-04-12 16:27:10 +00:00
wagic.the.homebrew@gmail.com 16101f2bef Erwan
- Fix PSP Compilation
2010-04-05 13:31:08 +00:00
solo81@web.de 12974729c6 Added 14 successfully tested cards based on rev 1999.
Card list --> first comment
2010-04-04 00:19:27 +00:00
salmelo16 9cf4c7587b added ability to have triggered abilities target based on the event that triggered, bramblewood paragon, graft, etc.
use "trigger" inside target code of triggered ability.
does not work with @each and @next.
@damaged can use trigger[to] and trigger[from] to specify the target or source of the damage, respectively.

Adds cards:
Aether Flash
Bramblewood Paragon
In the Web of War
Juniper Order Ranger
Mortuary
Primal Forcemage
Fungus Sliver
Simic Initiate

as well as a test file for feral hydra, missing from my last commit.
and daily build.
2010-04-03 23:50:39 +00:00
solo81@web.de b9d82a55c7 Fixed Rhys the Exiled, Spike Worker & Wandering Goblins. 2010-04-01 20:26:11 +00:00
solo81@web.de 90da515334 Added 6 cards based on rev1996.
Card list --> first comment
2010-03-30 23:37:14 +00:00
salmelo16 3a61eba007 allow to use X as the number of counters. daily build.
Added feral hydra.
2010-03-30 22:34:25 +00:00
solo81@web.de 9cb8cd68d5 Added 16 successfully tested cards.
Card list --> first comment
2010-03-30 22:05:32 +00:00
solo81@web.de 5af82ca96b Added 10 creatures with 'Modular' (DST). All cards have been tested successfully.
Card list --> first comment
2010-03-30 13:10:22 +00:00
solo81@web.de cbed8ae1d4 Fixed Quirion Trailblazer 2010-03-29 22:26:56 +00:00
solo81@web.de 31ae05b79e Fixed several cards. 2010-03-29 15:28:56 +00:00
solo81@web.de 906e51b371 Updated mtg_todo.dat 2010-03-28 22:54:52 +00:00
solo81@web.de e02c75a6d5 Added 22 successfully tested cards based on rev1986.
Card list --> First comment
2010-03-28 22:35:19 +00:00
wagic.laurent 1408f2ef09 Added a few cards; corrected manavault
#Added Incinerate, raking canopy, Aphetto Vulture, Barishi, Cho-Manno, Revolutionary, Marton Stromgald (thanks to entferno).
2010-03-28 17:20:52 +00:00
wagic.the.homebrew@gmail.com 22336b7839 Erwan
-fix psp compilation
2010-03-28 04:10:15 +00:00
salmelo16 4d5eeead5d daily build 2010-03-28 02:34:50 +00:00
salmelo16 a06980a197 added new auto keys, this and thisforeach, functionallity similair to aslongas and foreach, but for properties of the card as opposed to cards on the field. More details in first comment. 2010-03-28 02:21:25 +00:00
solo81@web.de a2987f7b0e This is another patch by salmelo.
It fixes several problems with the newly introduced improvements concerning Counters.

Added 8 successfully tested cards, 1 of them is DARK DEPTHS!

Daily_Build update

Complete list in the first comment.
2010-03-25 23:28:55 +00:00
solo81@web.de 9a63fa9dec Added 15 successfully tested cards based on rev1981.
Most of the cards belong to 2 categories:

1.Cards with Fading (NEM).
2.Depletion land cycle from (ICE).

-> Card list in the first comment.
2010-03-25 20:30:12 +00:00
solo81@web.de 36780dd53a Fixed some cards. 2010-03-25 14:00:04 +00:00
solo81@web.de e5874d1b89 Added several successfully tested cards based on rev1981.
You can find a list of those cards in the first comment.
2010-03-24 23:02:14 +00:00
solo81@web.de 07361b19f5 This is another patch by the great newcomer salmelo.
Salmelo:"Here is another patch, this time adding counters to target specifications, so now you should be able to target things with counters on them as well as use counters for criterion for Lord, aslongas, foreach, etc.
I had to muddle the syntax a little bit though, so heres an example, taken from gwafa hazid, whom I added to the primitives to test with.

lord(creature[counter{0/0.1.Bribe}]|opponentbattlefield) cantattack

obviously the part we are worried about is the counter part, note that those are curly braces { } and periods . instead of parentheses ( ) and commas , this is so that it does not conflict with how targets are normally parsed, which it did before I changed those. Counters still work the same way everywhere else though, you only need to use { } and periods in target code.

Also, you can use counter{any} to specify that it should look for things with any kind of counter on them, not just specific ones, this is used by Kulrath Knight, for example.

I also consolidated most of the code used to parse counter specifications, as it seemed unnecessary duplicating it three times.

Anyway, aside from this major addition, I also added Gwafa Hazid, Profiteer; and Kulrath Knight to the primitives, as well as a test file for each to make sure it worked.

Hopefully y'all will find this patch useful.

Oh, and I should point out that it only works with one Counter in the target specification, i imagine if you put two in the same one then it would either overwrite the first with the second or merge them into some sort of hybrid counter monstrosity, either way, I wouldn't suggest it. "

Cards with vanishing are also codable now. Have a look at the comments for explanation.

daily_build.
2010-03-24 21:15:34 +00:00
solo81@web.de 68d8da296a Added 6 successfully tested cards.
"@movedTo" in combination with "autograveyard" WORKS!" Thanks to Abrasax!

Fixed 18 cards, 1 of them is Rancor. Now works 100%, so issue311 is fixed.

You find a list of all added and fixed cards in the first comment.
2010-03-23 20:54:30 +00:00
solo81@web.de d924881466 Updated mtg_todo.dat 2010-03-23 16:45:59 +00:00
wagic.the.homebrew@gmail.com f2c405566f Erwan
- fix psp compilation, thanks to the people who reported the issue
2010-03-23 12:32:25 +00:00
solo81@web.de dfb52368c4 Fixed issue188.
Just changed the the phase name in the auto line from "@each opponent upkeep" to "@each targetController upkeep". Works.
2010-03-23 00:07:28 +00:00
solo81@web.de 49b00c7419 Removed Carpet of Flowers.
This card cannot be coded for now.
2010-03-22 23:53:33 +00:00
solo81@web.de 81ca43d313 Added 36 successfully tested cards based on rev1971.
Fixed 7 cards based on rev1971.
I posted a list of all added and all fixed cards in the first comment.
2010-03-22 23:22:27 +00:00
solo81@web.de 3f14452a7f Added most Spikes.
This update is based on rev1971 and successful tests.
2010-03-22 17:16:00 +00:00
solo81@web.de 085a86d551 Added all Fungi.
This update is based on rev1971 and successful tests.
2010-03-22 16:52:08 +00:00
wagic.the.homebrew@gmail.com 61ddbf19ed erwan
- daily build
2010-03-22 11:19:38 +00:00
wagic.the.homebrew@gmail.com 22a35d2265 Erwan
- Added remove/add counters as a cost, patch by Salmelo, thanks man!. See primitives/mtg.txt -> Thallid to see how it works
- added test for i286 by salmelo
- added basic display for counters (this needs improvement) by salmelo
2010-03-22 04:26:42 +00:00
wagic.the.homebrew@gmail.com 99db31fe9d Erwan
-Kjeldoran_frostbeast fix i167 by salmelo
2010-03-22 03:13:40 +00:00
wagic.the.homebrew@gmail.com 731ef290ea Erwan
-Tiny fix for Roterothopter (1/0 instead of 2/0)
2010-03-14 07:57:24 +00:00
wagic.the.homebrew@gmail.com 55a23bb359 Erwan
- fix issue 382
2010-03-13 09:51:49 +00:00
wagic.the.homebrew@gmail.com e7bb2caf29 Erwan
- Fix issue 291 (cantbeblockedby segfault)
- Fix some issues with pricing
2010-03-13 09:34:20 +00:00
wagic.the.homebrew@gmail.com fa0d98988d Erwan
- quick patches, attempt at fixing a few crashes
2010-03-13 08:48:40 +00:00
wagic.the.homebrew@gmail.com 8a4797a06a Erwan
- quick patch for i379
2010-03-13 07:25:07 +00:00
jean.chalard e7a1c96d4a J :
* Remove annoying debug printf's.
2010-03-07 13:49:11 +00:00
jean.chalard 76e373f64e J :
* Fix issue 378, where the particles would not appear upon the second
  opening of an existing menu.
* Fix for one of the issues of issue 380, where the selectionY
  attribute would be used uninitialized - reported by valgrind as
  an access to an uninitialized value in sinf and cosf.
2010-03-07 09:28:53 +00:00
jean.chalard ec0354f630 J :
* Fix issue 357, where the hand loses focus when the opponent declares
  attackers while the hand is open.
* Harmonize the code for CardSelector.cpp to the coding style.
2010-03-05 17:01:00 +00:00
wagic.the.homebrew@gmail.com a04c0eff00 Erwan
-fix issue 375
2010-03-04 13:15:24 +00:00
wagic.the.homebrew@gmail.com d1d465c50f Erwan
- added test for issue 335
2010-03-04 13:09:43 +00:00
wagic.the.homebrew@gmail.com 01135b34b7 Erwan
-fix with fog elemental
2010-03-04 12:23:19 +00:00
wagic.the.homebrew@gmail.com cf1e419aaf Erwan
- fix for issue 348
- Fix a bug when going out of the deck editor then back to it again would show an incorrect color icon instead of nothing
- Fix a bug where the AI tries to play a spell with a target instead of just checking if it can play it. (visually, this showed as the AI tapping mana, then "freezing" for a few seconds with some cards grayed out on the battlefield)
2010-03-04 11:43:22 +00:00
wagic.the.homebrew@gmail.com 882724ab4b Erwan
- Yet Another Attempt at fixing i319,i365, i372
2010-03-03 14:56:12 +00:00
jean.chalard eaf944fa62 J :
* Fix the name of a file that was wrong.
2010-03-03 03:09:45 +00:00
wagic.jeck 6894553c07 Jeck - fix signed/unsigned issue with prior revision. 2010-03-02 04:36:52 +00:00
wagic.jeck b5dc729f58 Jeck - Change to deck viewer mana producer counting function, fix potential problem with mana producer filtering. 2010-03-02 04:04:11 +00:00
wagic.jeck 034e61e9fa Jeck - partial revert of r1948, minor optimizations to where validate() is called. 2010-03-02 03:05:26 +00:00
wagic.the.homebrew@gmail.com c09dabfdbf Erwan
- attempt to fix issue 319. Jeck please review :)
2010-03-01 13:43:46 +00:00
wagic.jeck 855288fa87 Jeck - Fixed an issue which caused deck switching to crash. 2010-03-01 07:27:10 +00:00
wagic.jeck 96f021ac2d Jeck - Reverting accidental commit. 2010-02-28 22:56:45 +00:00
wagic.jeck 4159aad221 Jeck - Fix to WSrcDeck's card counting, so it correctly handles negative numbers (removing cards). 2010-02-28 22:55:06 +00:00
wagic.jeck 706ebca249 Jeck - Quick fix for issue 370, issue 365, (and hopefully) issue 319 . Thanks for the report, Psy.
(Counts weren't being updated as often as they should be. Now they might be updated too often, but that's better than the alternative.)
2010-02-28 22:12:17 +00:00
wagic.the.homebrew@gmail.com e273ade745 Erwan
-daily build (1942)
2010-02-28 13:35:52 +00:00
wagic.the.homebrew@gmail.com f627f92557 Erwxan
-fix compilation issue on windows
2010-02-28 13:24:31 +00:00
jean.chalard db49a49a78 J :
* Remove the binding for HOME from the default bindings.
  (this key cannot be detected or used anyway)
2010-02-28 13:24:29 +00:00
jean.chalard 168154b52d J :
* Add the confirmation screen for bindings.
  - Add support for asking confirmations before exiting the menu.
  - Add support for cancelling saving of options.
  - Add support for requesting focus when the parent allows to yield.
* Recenter most options' text.
* Change the background color of the selected options (else, there is
  no way of knowing where is the cursor when both option text and
  option value are icons).
* Change symbol names to their equivalent PSP icon use in wagic.
2010-02-28 12:36:09 +00:00
jean.chalard c2549af81d J :
* Make the FULLSCREEN function bindable on platforms that support it.
* Linux has F as default binding.
* Windows support is not implemented, but is there ; applications will
  just not suggest it under windows for the moment.
2010-02-28 12:31:51 +00:00
wagic.the.homebrew@gmail.com db8724e045 Erwan
-removing ctrl M garbage
2010-02-28 08:05:47 +00:00
wagic.the.homebrew@gmail.com d3d34c6290 Erwan
- Key texts for Windows
2010-02-28 08:02:16 +00:00
jean.chalard 2566d780b1 J :
* Display pictures for buttons on PSP in the keybinding screen.
* Fix a bug where the New Binding... button would disappear when
  creating a new binding.
* Fix a bug where the menu to choose the bound symbol was not modal.
2010-02-27 18:49:03 +00:00
jean.chalard a255ddc06e J :
* Make debug compilation possible on PSP.
2010-02-27 17:25:15 +00:00
jean.chalard ea1d8c6ebe J :
* Change the image so as for it to be usable on PSP in its entirety.
  No code uses the part this update is changing at the moment.
2010-02-27 16:52:39 +00:00
jean.chalard ee689e2fce J :
* Remove default bindings for keys we don't use.
2010-02-27 16:01:08 +00:00
Psyyringe 2fa4e9a1d3 Psyringe - fixed a missing activation cost and a mistyped characteristic, thanks to kmtzz for the bug reports. :) 2010-02-27 14:13:48 +00:00
jean.chalard 2ef8fa338c J :
* Fix issue 340 for good.
* On X systems this still depends on a working X detectable repeat,
  which is not the case in stable releases of some popular linux
  distributons at this time. This is expected to be fixed soon.
  I haven't chosen yet whether I wait for the fix on X side or if
  I work around the bug.
2010-02-27 10:57:32 +00:00
jean.chalard 80fdb0a38f J :
* Mostly fix issue 340.
* There are still detail problems :
  - There are still problems when two keys are pressed at the same time.
    This is not a release blocker ; what happens exactly is :
    while maintaining two keys, when one is released, the enqueued
    autorepeat keypresses for the others are flushed too. I don't
    think anyone will notice but for the sake of correctness I'll fix
    it.
  - A bug in xorg prevents the linux version to work correctly at the
    moment. The bug is current as of 2009/08 and fixed as of 2010/01,
    but major releases still include the bug at this time, so I'll
    have to work around it somehow.
  - I expect the windows version to work, but I can't test it.
  - I'll test on mac later today.
2010-02-26 03:08:20 +00:00
wagic.jeck e9b6860923 Jeck - reverted fix for invalid issue 359. 2010-02-26 00:46:03 +00:00
jean.chalard 4248ddd3a0 J :
* Preparation for auto-repeat-stopping code.
2010-02-25 20:00:53 +00:00
wagic.jeck 5e0be442b0 Jeck - Removed "Reverse Triggers" option, as per issue 359. 2010-02-25 15:22:19 +00:00
wagic.jeck 233c1d8383 Jeck - Potential fix to issue 319. 2010-02-25 15:13:01 +00:00
wagic.jeck 44044bc99b Jeck - Fix to deck statistics regarding land. 2010-02-25 15:09:53 +00:00
wagic.jeck febad680b1 Jeck - Fixed issue 361. 2010-02-25 14:10:13 +00:00
wagic.the.homebrew@gmail.com ff6f437e9a Erwan
- Fix issue 360 (gray out cards with quantity 0)
2010-02-25 11:56:37 +00:00
jean.chalard 79d142f968 J :
* Some cosmetic cleanup.
* Have the unix version report analog control the same way the
  windows version does.
* Move back Run() into JGE::Run(). The code for ::Run() is still
  inside main.cpp.
  - This fixes the "blinking screen problem", issue 341. I think.
  - I have no idea WHY it does, but it's better than not fixing it.
  - Run() would be better in ::Run() in main.cpp than in JGE, should
    be moved back when we know more about the problem.
2010-02-24 18:28:36 +00:00
jean.chalard 39c5a3d465 J :
* Fix u32 into JButtons.
* Add a few comments.
* Remove useless variables.
2010-02-24 17:28:17 +00:00
Psyyringe 3ac6bc3ec3 Psyringe - small fix to Stoneforge Mystic, thanks to arcaneous for the bug report. This closes issue 356. 2010-02-22 06:11:01 +00:00
wagic.jeck 9998a2bdf3 Jeck - fix to idiotic sprintf mistake (was printing the enum itself, not the value indexed by the enum). 2010-02-19 23:40:35 +00:00
wagic.jeck 5dd2388b6f Jeck - More deck editor fixes, quick hack to subtypes filter. I've noticed some slowdown while scrolling up/down in the deck editor, I think this is due to some recent changes that removed a few of the filter system's optimizations. I'll re-implement them tonight. 2010-02-19 23:06:44 +00:00
jean.chalard 4254d8cb9f J :
* Put in text instead of numbers for the time being
2010-02-19 22:47:24 +00:00
jean.chalard de94069829 J :
* Remove a crash
* This removes images for PSP buttons for the moment
2010-02-19 22:43:55 +00:00
wagic.jeck bb82dc38f2 Jeck - Linked both sets into one filter menu. Requires more testing, but appears to work on PSP/PC as it should. 2010-02-19 22:38:09 +00:00
wagic.jeck 25e6906149 Jeck - More deck editor fixes, linked in prior coded subtype filter. 2010-02-19 21:54:39 +00:00
wagic.jeck afffd4509f Jeck - fixed issue 354, cleaned up mixed boosters, fixed a few issues with pack loading (slot pools weren't working), fixed TSP boosters to use 'S' rarity, removed some unused code. 2010-02-19 20:10:30 +00:00
jean.chalard c67390be88 J :
* Fix a wrong cast.
2010-02-19 10:20:18 +00:00
jean.chalard b63e9f9847 J :
* Use images for PSP buttons.
* Um not tested. I don't have my PSP on me
2010-02-19 06:42:47 +00:00
jean.chalard 72e395d1e1 J :
* Fix a bug on key bindings on PSP.
2010-02-18 20:54:18 +00:00
jean.chalard abd92ffcbf J :
* This finalizes the functionality for key bindings.
* Key bindings are saved in the user's configuration file and read
  back the next time.
* Still got to do : display, instead of a number, an icon on PSP and a
  string on windows (linux/mac already done).
2010-02-18 20:36:31 +00:00
jean.chalard ad933ecdf6 J :
* Change the name of a define to harmonize stuff.
2010-02-18 20:09:19 +00:00
jean.chalard e40691411a J :
* Don't forget to enqueue unbound keys.
2010-02-18 18:05:19 +00:00
jean.chalard c87a98eb14 J :
* Grab the keyboard and display the grabbed key.
* Include a tentative interface for the initial message. It's ugly.
2010-02-18 08:03:22 +00:00
jean.chalard 3c1377fe47 J :
* Re-add the ReadLocalKey function that I had forgotten to
  re-implement with the key bindings.
2010-02-18 07:18:21 +00:00
wagic.jeck 5d275391f2 Jeck - More incremental deck editor fixes. It'll be at 100% eventually, as soon as I rewrite some code so that there aren't individual filter lists per deck/collection. 2010-02-18 00:58:24 +00:00
wagic.jeck 71e0792cde Jeck - Additional fixes for deck editor. Unfortunately, it still has separate filters for deck and collection, but I'm working on that. 2010-02-17 23:27:17 +00:00
wagic.jeck 76fa3221d7 Jeck - Deck editor fixes. 2010-02-17 20:52:30 +00:00
wagic.jeck 78b864666e Jeck - Fix for issue 338. Please see the note in that issue for details. 2010-02-17 20:35:37 +00:00
wagic.jeck ce2f8aebea Jeck - fix to issue 347. 2010-02-17 19:29:22 +00:00
wagic.jeck 8b1a812e02 Jeck - Normal and Hard economic difficulty no longer display visible prices before the player asks about a card. This allows Wololo's clever pricing algorithm to work :) 2010-02-17 19:02:35 +00:00
jean.chalard 436da6fcc0 J :
* Very small addition to the key bindings menu.
2010-02-17 15:24:14 +00:00
wagic.jeck 4fd38766b1 Jeck - Daily build & fix to r1895. Now the deck editor does what I thought it did. 2010-02-17 15:16:59 +00:00
Psyyringe 8f130856da Psyringe - fixed Book of Rass (thanks to Crodley for the bug report) 2010-02-17 11:17:49 +00:00
wagic.jeck 49a6ee18fc Jeck - "Trophy Room" button now uses generic image. I'm not certain I like the way this looks, but it's necessary for internationalization. 2010-02-17 04:53:06 +00:00
wagic.jeck ab22719e4d Jeck - Deck editor filtering now works much better- single filter, automatically recolors itself to match the active color. 2010-02-17 04:08:51 +00:00
wagic.jeck a123cebfe5 Jeck - Fixed an error with packs, fixed basic info in deck editor, removed duplicated code in DeckDataWrapper. 2010-02-17 03:10:56 +00:00
wagic.jeck ebaeb96450 Jeck - Reordered deck basic info to be more in keeping with main screen (copies, then unique) 2010-02-17 01:13:08 +00:00
wagic.jeck 92b0c80563 Jeck - Simple scaling of the options tabs. 2010-02-16 17:48:31 +00:00
wagic.the.homebrew@gmail.com d6fd768248 Erwan
-cosmetic change to JGE makefile
2010-02-16 13:09:22 +00:00
jean.chalard 3bb13aa81c J :
* Attempt at making windows happy
2010-02-16 12:32:39 +00:00
wagic.the.homebrew@gmail.com e4c3cdbe3d Erwan
-JGUI Bugfix
2010-02-16 11:37:05 +00:00
wagic.the.homebrew@gmail.com 391c608b1a Erwan
- daily build (0.11.0 Alpha)
2010-02-16 11:16:13 +00:00
wagic.the.homebrew@gmail.com d5be045859 Erwan
- Adding (dead) code for Story mode. This is FAR from being ready so it's deactivated in the code. I just don't want to create a branch (I'm lazy) and I'm fed up with synching. My Goal is to have a tutorial ready with this for the release after this one. If you want to test it (Note: the sample story is not interesting at ALL), just look for "Story mode" and uncomment (3 occurrences). PSP Or Linux need additions to the Makefile...
2010-02-16 10:55:03 +00:00
jean.chalard 8a19b0567b J :
* Add support for key icons in the keybinding menu
2010-02-16 02:30:11 +00:00
wagic.jeck 7104eff946 Jeck - for HQ users, added flexible image scales to task board backdrop. 2010-02-16 01:22:47 +00:00
wagic.jeck 62609ee1b1 Jeck - Some cleanup, fixed a double-deletion error in GameStateDeckViewer (when unlocking all cards). 2010-02-15 23:29:54 +00:00
wagic.jeck 92979fb184 Jeck - Linked task menu into shop's r-trigger. 2010-02-15 22:02:28 +00:00
jean.chalard 2faabf98b5 J :
* Little progress on the interface for key bindings.
* This seems to still be stable so I commit while I'm at it.
2010-02-15 18:14:24 +00:00
jean.chalard e7d72b7722 J :
* The key bindings now display (semi-)correctly.
  - Here, "semi-" means the local keys display as a string under X and
    a number everywhere else. The number is all but helpful and will
    have to be replaced before it is usable, but at the moment, the
    code is stable afaik.
2010-02-15 17:34:30 +00:00
jean.chalard 16ca1a929f J :
* Some interface for key bindings
2010-02-15 14:32:56 +00:00
jean.chalard 16abaa249c J :
* Remove a useless debug print
2010-02-15 11:01:09 +00:00
jean.chalard 6d2857c341 J :
* Remove an ugly debug print :o
2010-02-15 10:28:13 +00:00
jean.chalard ec61fede8d J :
* Restore the old Alt key behavior.
2010-02-15 10:26:07 +00:00
jean.chalard 162621c09a J :
* Remove a now-useless #define
2010-02-14 23:53:04 +00:00
wagic.jeck 350f06fab8 Jeck - Jean, please review for cross-platform compatibility. Fix stupid error in GameStateDeckViewer.cpp, also fix windows compile of JGE.cpp. 2010-02-14 18:41:08 +00:00
wagic.jeck cd746e7cbc Jeck - Fix potential memory leak. 2010-02-14 17:40:52 +00:00
jean.chalard ac29f9715c J :
* Seems Visual doesn't understand #elsif... lol
2010-02-14 14:25:23 +00:00
jean.chalard 376022c2f0 J :
* Try fix NAN under windows
2010-02-14 14:10:12 +00:00
jean.chalard f0dae9e87e J :
* Bugfix
2010-02-14 14:04:45 +00:00
jean.chalard 4f0a2794d1 J :
* Remove useless, deprecated, and ill-willed files
2010-02-14 14:02:08 +00:00
jean.chalard 8c86752e1d J :
* Bugfix
2010-02-14 13:57:43 +00:00
jean.chalard a42e726b4a J :
* Some bugfixes
2010-02-14 13:55:57 +00:00
jean.chalard 56ce4a14ae J :
* Create the subsystem for keybindings.
2010-02-14 13:21:12 +00:00
wagic.jeck 4913eec2fb Jeck - fix for cheat menu. No longer checks for "has 1 of each card" (we wanted "has 4 of each card", but I think the value of writing a specific check for that is pretty low in this case). 2010-02-14 12:19:00 +00:00
wagic.jeck a4bd6728f6 Jeck - Minor updates to GameStateDeckViewer.cpp. Cosmetic change to cheat placement, possible fix for statistics. 2010-02-14 10:02:33 +00:00
Psyyringe 4911ee05a9 Psringe - fixed mantle of Leadership (thanks to arcaneous for bug report and solution) 2010-02-11 22:43:02 +00:00
wagic.jeck 470e3321e4 Jeck - Potential crash fix, removed unused variable. 2010-02-11 21:03:27 +00:00
wagic.jeck b7c66657f6 Jeck - Quick fix to pack loading in cases where no pack directory exists. 2010-02-11 19:04:12 +00:00
wagic.jeck ab34fc16f9 Jeck - Added custom booster packs (see miki), numerous small fixes. Once we hit feature-freeze I'll be reviewing this stuff in depth, as again there's likely a lot of room for cleaning... just wanted to get it in first :).
I cut some bits out that weren't ready for SVN, hopefully I've committed everything correctly.
2010-02-11 18:32:44 +00:00
solo81@web.de 103a3d2822 Fixed issue323, issue327 and issue 329. 2010-02-11 18:22:18 +00:00
Psyyringe 1e5acc6ade Psyringe - added some Metadata (thanks to Niegen for reporting the sets which lacked it). BRB and BTD have been added to the "Duel" block, which is questionable, but imho better than leaving them without a block. 2010-02-11 10:39:18 +00:00
Psyyringe 3b7281cfe8 Psyringe - fixed bugs with Yavimaya Dryad (thanks PrimsSoup), Ogre Arsonist and Crosis's Charm (thanks Niegen), and added a missing text= identifier to "Call of the Herd" (in mtg_todo.dat) 2010-02-11 07:54:09 +00:00
solo81@web.de 64cc648179 Fixed Mercenary Knight. 2010-02-10 16:40:44 +00:00
wagic.jeck cf03d4cc64 Jeck - fix to issue 318. 2010-02-10 15:48:38 +00:00
wagic.jeck 4189c238b9 Jeck - Fix for issue 315. 2010-02-10 15:36:09 +00:00
wagic.jeck 3d6829a7d1 Jeck - fix for issue 317. 2010-02-10 14:50:01 +00:00
wagic.jeck e59aca67b7 Jeck - Fix for issue 320, also fix for countByName. 2010-02-10 14:46:10 +00:00
wagic.jeck 9806edc6d0 Jeck - Fix for issue 316 (shop selection not cyclical). 2010-02-10 14:03:08 +00:00
wagic.jeck 7fd2956399 Jeck - Added option to disable screen transitions. 2010-02-10 02:38:41 +00:00
wagic.jeck f962297d6b Jeck - Repair faulty merge from r1845. 2010-02-09 19:37:25 +00:00
wagic.jeck 4be2dddaf9 Jeck - Cleaned up filters a tiny bit (they no longer use idiotically duplicated vector<pair<string,string>>'s), added colorless mana filter ability, "exclusively X color" filter. 2010-02-09 19:25:53 +00:00
wagic.jeck 3c2d57508e Jeck - Increased shop "text list" fade-in time, changed alternateRender to display "Land" rarity as well as common-mythic. 2010-02-09 17:13:49 +00:00
wagic.jeck 2a2bcef71a Jeck - Hooked economic difficulty into booster prices. 2010-02-09 16:56:39 +00:00
wagic.jeck 5444c4e507 Jeck - Changed filter pricing scheme- filter tax is now inversely proportional to the amount of results. Added preliminary "economic difficulty" option. Note that it requires difficulty modes to be unlocked (at least to appear in the gui). Should we make it available from the start? 2010-02-09 16:23:29 +00:00
Psyyringe 8de2d4a892 Psyringe - bugfix to r1843 (one text= identifier was missing). Also fixed added one missing "auto=trample" to Vorrac battlehorns. Cosmetic change: Reordered the lines added in r1844 to keep current order (anything derived from the card's rules text gets written before the text= line) consistent. That's not compulsory by any means, I just like the efficiency of not having to look at anything below the text= line when checking / debugging / updating cards. :) 2010-02-09 01:46:55 +00:00
wagic.jeck 69967b6d9c Jeck - Added 7 primitives with the "can't be blocked by more than one blocker" ability: Charging Rhino, Familiar Ground, "Huang Zhong, Shu General", Ironhoof Ox, Norwood Riders, Vorrac Battlehorns, "Yuan Shao, the indecisive". 2010-02-09 01:17:02 +00:00
Psyyringe d84ce36c55 Psyringe - complete wording update for all cards in mtg.txt and mtg_todo.dat. As a side effect, there shouldn't be any non-basic-ASCII characters left in these files anymore.
Note: I replaced paragraphs (which Wagic can't display at the moment) with the sequence " -- ". If that's not desired, they can be easily replaced, but I think they improve readability. Previously, paragraphs where transcribed into slightly larger spaces, and I found that slightly confusing when reading the texts in-game.
2010-02-09 00:28:20 +00:00
wagic.jeck 2508a64634 Jeck - Completing a collection using the cheat profile now also unlocks all sets in trophy room. 2010-02-08 23:53:04 +00:00
wagic.jeck e5be940766 Jeck - Added filtering by card's first letter. This is pretty much the last filter I can think of, except possibly some more complex ones like the mana producer filter. 2010-02-08 23:10:45 +00:00
wagic.jeck 251f89d7b9 Jeck - Consolidated card price functions from deckviewer/shop into PriceList. Also moved price discount hash variable. (As of around r1825, price discount has been based on (mtgid + static int randomKey) % 20. randomKey updates at the end of any won game, making prices for a given fixed between visits to the shop on the same "day") 2010-02-08 20:13:48 +00:00
wagic.jeck 907c0b7b5d Jeck - Test for Oneblocker ability, r1837. 2010-02-08 18:32:42 +00:00
wagic.jeck b348ab5d24 Jeck - Added and tested "oneblocker" ability, which allows for cards that "can't be blocked by more than one creature.". I've put in Stalking Tiger (I think... these primitives are cool! I just added the prim and all of a sudden it was in 10E), but this should also add Charging Rhino, Familiar Ground, "Huang Zhong, Shu General", Ironhoof Ox, Krosan Vorine, Norwood Riders, Vorrac Battlehorns, "Yuan Shao, the indecisive".
Test and more cards (the ones I can figure out how to do) forthcoming.
2010-02-08 18:18:44 +00:00
wagic.jeck 4279658379 Jeck - Removed parts of code that were mistakenly committed. 2010-02-08 14:03:46 +00:00
wagic.jeck 8c187f8d12 Jeck - Updated some metadata. Gave a few sets an appropriate block name. 2010-02-08 10:08:50 +00:00
wagic.jeck 5a597dfc65 Jeck - Fix to shop. 2010-02-08 09:37:32 +00:00
wagic.jeck 76f012cc99 Jeck - More fixes to r1827. 2010-02-08 09:05:09 +00:00
wagic.jeck a747d4ef1d Jeck - Fixed leak introduced in r1827. 2010-02-08 09:01:44 +00:00
wagic.jeck e96d4b9a07 Jeck - Cleaned up and reordered some menus, fixed potential heap corruption in GameStateShop. 2010-02-08 08:54:55 +00:00
wagic.jeck 74254e4721 Jeck - Fixes to deck-viewer loading. 2010-02-08 07:07:37 +00:00
wagic.jeck bf4595ee70 Jeck - Added filter for mana-producing abilities. 2010-02-08 06:08:29 +00:00
wagic.jeck 07ebd926fe Jeck - Added 4 additional filters: CMC, Power, Toughness, and "Exclusively this color". That last one isn't hooked into the gui, as it might be confusing for too little gain... but it's there for future use of filters as a deck/format validation tool. 2010-02-08 05:36:51 +00:00
wagic.jeck 513795b316 Jeck - Fix for booster pack purchases not saving. 2010-02-08 02:16:39 +00:00
wagic.jeck bdf958de34 Jeck - Daily build, fixed alignment issue in shop prices. 2010-02-08 01:35:16 +00:00
wagic.jeck 83e2b04547 Jeck - Added full filtering system to deck editor and shop. I've spent 24hours on pure debugging, but there are likely a couple bugs I've missed. So please, if you find something, make an issue of it! :P Also split OptionItem classes into separate files, and added support for mixed-set boosters (which I think are way, way cool). 2010-02-08 01:03:07 +00:00
Psyyringe 64d592f588 Psyringe - small addition to r1823: fixed 4 bugs in WWK cards (which I hadn't checked for the previous update, now these are checked too). 2010-02-07 22:02:03 +00:00
Psyyringe 70ac1e5d52 Psyringe - Checked the manacost, color, type, subtype, power, toughness, and loyalty data of all cards in mtg.txt and mtg_todo.dat, and did about 200 bugfixes, optimizations, and cosmetic changes. All cards in both files should now have correct values for the keywords mentioned above.
Note: I checked all changes manually, so in the cases where the value *has* to be different for the card to work (e.g.Covetous Dragon), I left the values as they were. In these cases I added a comment to the card code which notes why the values need to be different, so that no one else breaks the card by "correcting" them.

Note 2: You may have noticed that I used a fixed sequence of lines for all cards. That was a byproduct of the file unification process, but I think it's also rather useful. Above the "text=" line are the lines that we need to code (abilities=, target=, auto= etc.). Below the "text=" line are the fixed values (mana=, type=, power= etc.) which we only need to touch if either the card gets errata'd, or we need to do some tricky coding (e.g. Covetous Dragon). So, in other words, everything below the "text=" line should be okay now in both files, and doesn't need to be checked when implementing or debugging a card.
2010-02-07 20:57:51 +00:00
Psyyringe af585ab2d6 Psyringe - fixed a bug with Sun Quan, thanks to coolguy824 for the bug report. 2010-02-07 09:41:09 +00:00
Psyyringe 26bcdb11d6 Psyringe - removed a wrong "fix" 2010-02-06 22:10:45 +00:00
Psyyringe 55ba75d348 Psyringe - compared the complete code of all cards that were coded in at least two different ways prior to r1774. Fixed a number of bugs. This closes issue 204. 2010-02-06 22:09:20 +00:00
wagic.the.homebrew@gmail.com b645f1cff4 Erwan
- remove Kor Haven and other incorrectly coded "prevent damage" cards
2010-02-06 08:23:32 +00:00
wagic.the.homebrew@gmail.com 21eb34d0fa Erwan
-fix Scourglass. I'm not happy with the fix but there's a huge limitation with the parser here and I'm too lazy to deal with it currently...
2010-02-06 08:04:12 +00:00
wagic.the.homebrew@gmail.com d50aecdde4 Erwan
-fix issue related to drawing card (underworld dreams)
2010-02-06 07:32:59 +00:00
wagic.the.homebrew@gmail.com cc1d479070 Erwan
-fix goblin gardener
-fix slithering shade
2010-02-06 06:35:09 +00:00
wagic.the.homebrew@gmail.com 24b4bf2b8a Erwan
- Reclaim->Instant
2010-02-06 04:37:25 +00:00
wagic.the.homebrew@gmail.com 77769c5e37 Erwan
- Fixed a bug with "must" abilities and the AI, such as Noggle Bridgebreaker
2010-02-06 04:34:09 +00:00
wagic.the.homebrew@gmail.com 8847681b4a Erwan
-fix getMenuText for tokens
2010-02-06 03:56:22 +00:00
wagic.the.homebrew@gmail.com 3f06c9b6c9 Erwan
- put sound back on WIN32 platform (J please review)
- Added menu text for token abilities (needs testing)
2010-02-06 03:21:38 +00:00
wagic.jeck 709a1ae237 Jeck - Gah, missed one of these earlier. 2010-02-06 03:13:05 +00:00
solo81@web.de 8484432a9c Fixed some cards. 2010-02-05 19:18:46 +00:00
jean.chalard 3bb91bdd94 J :
* 30sec tool to spot unsupported characters
2010-02-05 12:48:12 +00:00
jean.chalard 5c8e99b4d6 J :
* Re-add the part of the file that was truncated.
2010-02-05 11:47:24 +00:00
Psyyringe 694efe96b7 Psyringe - even more card cleanup. Added some cards that were mysteriously missing (thanks to bcdiscman for spotting this!). 2010-02-04 20:21:44 +00:00
wagic.the.homebrew@gmail.com ab9366f035 Erwan
- fix issue 310 (exalted)
- fix issue 312 (heap corruption)
2010-02-04 13:28:04 +00:00
Psyyringe ba11d414a5 Psyringe - more card cleanup, added some S99 cards, and some that apparently got lost earlier. 2010-02-03 23:13:35 +00:00
Psyyringe ce4ac55441 Psyringe - added missing cards from Alpha / Beta / Unlimited to mtg.txt and mtg_todo.dat. Wagic finally supports Black Lotus, the Moxes, Ancestral Recall etc. out of the box now. 2010-02-03 20:55:35 +00:00
wagic.jeck 4a86166568 Jeck - Potential fixes for issue 312. 2010-02-03 20:18:06 +00:00
Psyyringe 9aa8d37b50 Psyringe - further card cleanup:
- matched card names of flip cards and split cards in _cards.dat and mtg:todo.dat

- removed the now superfluous todo.dat files, the file mtg_todo.dat replaces these.
2010-02-03 19:01:16 +00:00
wagic.jeck d37d080752 Jeck - More minor fixes. 2010-02-03 14:45:05 +00:00
wagic.jeck 657abc2714 Jeck - Extremely minor fixes. 2010-02-03 14:41:14 +00:00
wagic.jeck 568f482b5c Jeck - debug output for r1796. 2010-02-03 02:03:32 +00:00
Psyyringe 388276e3a0 Psyringe - some more card cleanup 2010-02-02 22:51:37 +00:00
Psyyringe 0e746f6a0b Psyringe - some cleanup: fixed misspelled cards and cards that appeared tn mtg.txt as well as mtg_todo.dat.
Also re-enabled the cards which had their names changed to make them work. (Example: the card code for "Vorosh, the Hunter" only works if thecomma is removed from the card's name.) These cards are a maintenance hazard since they a) require changes to _cards.dat if their names are corrected later, b) disrupt translation, and c) cause problems for external tools like MTG Studio which have the correct names in their database. However, only a few cards are affected by this, and I didn't want to remove them because Dr. Solomat has invested quite some effort top make them work. I added comments to these cards in mtg.txt as well as in the respective _cards.dat files to reduce the risk of further maintenance problems for these cards. In any case changing a card's name to make it work should be considered as a makeshift solution at best, please try to prevent it when possible.
2010-02-02 22:21:25 +00:00
wagic.jeck b3da3f1843 Jeck - Fix a crash bug. 2010-02-02 19:39:30 +00:00
solo81@web.de ce0380af60 Fixed Vulshok Gauntlets. 2010-02-02 11:05:46 +00:00
jean.chalard c44eb85742 J :
* Remove a (seemingly) useless debug function that prevents compilation
  on freebsd
2010-02-02 10:58:53 +00:00
jean.chalard 23ddb6f7e2 J :
* Add a newline
2010-02-02 10:56:45 +00:00
jean.chalard 7c319bc77e J :
* Try fix psp compilation under windows
2010-02-02 10:41:18 +00:00
jean.chalard 79b562755d J :
* Fix a syntax error
2010-02-02 10:39:18 +00:00
jean.chalard 5a2bae75d5 J :
* Add newlines at end of files. This is for better portability.
* Fix a direct reference to g++ in the makefile
2010-02-02 10:19:43 +00:00
jean.chalard 8f56dad259 J :
* Fix features again.
2010-02-02 09:41:58 +00:00
jean.chalard 2163bdbec5 J :
* Fix the way features are tested.
2010-02-02 09:38:22 +00:00
jean.chalard 64260f5787 J :
* Fix linux32 compilation.
* Wagic+JGE are now expected to compile on any unix that
  has an X and an OpenGL library. If fmod is correctly
  installed it will use it, else there won't be any sound.
2010-02-02 09:15:39 +00:00
jean.chalard 4f0a264146 J :
* Add a method to abstract the file size.
2010-02-02 09:11:44 +00:00
jean.chalard 02e3932017 J :
* Fix linux compilation that had been broken by the last update.
2010-02-02 08:34:54 +00:00
jean.chalard 18c18822c9 J :
* This update has Wagic compile and work under Darwin 64-bits.
  - Linux 64-bits is expected to compile and work from now on, but
    was not tested. As with before, Linux 64 bits can still run
    the 32 bits version.
  - Darwin version is not using Carbon but X emulation.
  - 64-bits versions have no sound because there is no 64-bits
    version of fmod.
  - Windows 64-bits probably does not compile. Windows 64-bits can
    still run the 32 bits version.
  - Darwin 32-bits probably does not work at the moment because the
    libfmod requires another name to work on Macs, but as 64-bits
    disables it it works.
  - Other unix flavors are expected to work as long as they have
    a working OpenGL library, X11, and *either* 64-bits *or* a
    working fmod. Thus in the practice Tru64, Irix and the like
    probably work, as should FreeBSD and other BSDs in 64 bits
    versions, but 32 bits versions will search for a non-existing
    fmod. All of this is pure conjecture and none was tested.
  - All 64-bits versions have no sound.
  - The mac version does not display the particles at the moment.
    This is not critical, but the cause is unknown yet. I would
    like to know if other 64 bits unices share the same bug or if
    it is mac-specific.
* Test is needed in particular to see whether the program still
  compiles and works in Linux and PSP. Windows is probably all
  right, but compiling PSP in windows may be broken by this
  update.
2010-02-02 08:27:10 +00:00
Psyyringe c4043b08a3 Psyringe - removed some cards from mtg_todo.dat which had actually been coded in mtg.txt as well. This means that these cards must have been in some set's _cards.dat and in some set's todo.dat previously. 2010-02-02 03:43:54 +00:00
Psyyringe aad27bd80d Psyringe - renamed mtg.todo to mtg_todo.dat. This makes the file easier to open. 2010-02-01 22:19:19 +00:00
wagic.jeck fa57de0418 Jeck - Final fix for issue 258. Added missing NO_TRANSLATE flag. 2010-02-01 21:26:49 +00:00
Psyyringe fb3fdf01f7 Psyringe - fixed a problem with Cinder Wall (SVN Merge gone wrong) 2010-02-01 21:21:25 +00:00
wagic.jeck 46215a2bc0 Jeck - Updated the WGui/OptionItem classes to all use ReadButton. Also updated daily build. 2010-02-01 20:58:52 +00:00
wagic.jeck b9a4a819a9 Jeck - Minor fix to r1776. 2010-02-01 19:03:50 +00:00
wagic.jeck 79eb0818c2 Jeck - Tiny formatting fix to task board. Restored header font size when using image. 2010-02-01 18:40:21 +00:00
wagic.jeck 0a863bcbad Jeck - [JGE recompile needed] Shop cleanup, Interface enhancements.
Added basic transition system that works with GameApp's phases. Currently does a fade-out between elements, which works well in some places and not-so-well in others. We'll definitely want to think about where and where not to use it... they'd work a lot better if we could spawn a thread to handle loading the next state while transitioning.

Also cleaned up the shop a bit, so it uses ReadButton() instead of GetButtonClick()-- hence the slight change to JGE. Added a tiled image for the task board, which loads conservatively (I tried 128x128, but it didn't look as good).
2010-02-01 18:27:25 +00:00
jean.chalard e999da6ef7 J :
* Fix a bug where "Deutsch" would get printed twice at the language
  selection menu at first run.
2010-02-01 09:31:43 +00:00
Psyyringe 9150a5b13c Psyringe - made all cards using the primitives system, added some sets. Important: This update changes the file where we store the card code, now all card code is in primitives/mtg.txt. We also have only one "todo" file now, it's mtg.todo. Note: mtg.todo had to be put out of the "primitives" folder for the being, since Wagic currently loads everthing in this folder, regardless of file extension. Once this is fixed, mtg.todo will be moved into the "primitives" folder.
More detailed instructions will follow shortly.
2010-02-01 07:40:39 +00:00
jean.chalard e3e50c19a5 J :
* Have JGE compile on Darwin architecture.
* I'm not saying it works, just that it compiles.
* This needs testing on other macs than just mine.
2010-02-01 02:49:26 +00:00
wagic.jeck aa5eb90299 Jeck - Fixes for set metadata. 2010-01-31 23:44:10 +00:00
wagic.jeck cf2dfec105 Jeck - Changes to WGui, potential fix to issue 258 (please verify). 2010-01-31 21:38:07 +00:00
solo81@web.de 3dec7e0a00 Fixed Cinder Wall (WTH) 2010-01-31 21:18:51 +00:00
solo81@web.de 1e351fdcbd Some fixes from last revision. 2010-01-31 21:07:01 +00:00
solo81@web.de de47b25866 Added 51 successfully tested cards based on rev1757. 2010-01-31 20:56:25 +00:00
wagic.jeck c8cae60071 Jeck - Fix memory leak in collection stats page. Thanks, Psyringe! 2010-01-31 15:59:29 +00:00
wagic.the.homebrew@gmail.com da7591288d Erwan
-removed an unnecessary translation step in card text rendering (see issue 258)
2010-01-31 11:50:25 +00:00
wagic.the.homebrew@gmail.com 25e9e05a43 Erwan
-removed Reverse Polarity (the card doesn't work anymore and was hardcoded). This closes issue 303
2010-01-31 09:49:09 +00:00
wagic.the.homebrew@gmail.com 1f88c30cfd Erwan
-code cleanup
2010-01-31 06:56:40 +00:00
wagic.the.homebrew@gmail.com e3d98f23f9 Erwan
- fix issue 308
- daily build
2010-01-31 06:24:28 +00:00
wagic.the.homebrew@gmail.com f863dca678 Erwan
- Adding Dr.Solomat's WorldWake initial set :)
2010-01-31 03:08:52 +00:00
wagic.jeck 5e477f89fb Jeck - SimplePad now uses ReadButton, rather than GetButtonClick.
I'll upload the changes for the OptionItem code in a bit-- I'm a little concerned with that side of things, as I think I recall the reason for using GetButtonClick had something to do with what point in the process the game "eats" the button press... OptionItem stuff relies a lot on button presses falling through to other UI items.
2010-01-30 17:11:37 +00:00
wagic.the.homebrew@gmail.com 1747f3af16 Erwan
- fixed test suite typo
- added test for issue 306
2010-01-30 14:31:05 +00:00
wagic.the.homebrew@gmail.com 536ca897bc Erwan
-adding test for error 305 (promise of bunrei). Can't reproduce the issue.
2010-01-30 14:19:15 +00:00
wagic.the.homebrew@gmail.com ee3d7b6ffe 2010-01-30 14:03:57 +00:00
wagic.the.homebrew@gmail.com 54969a2179 Erwan
- Fix an issue with "becomes ueot". See blinkmoth nexus in DST
- Daily build
2010-01-30 12:58:49 +00:00
solo81@web.de 616e0d00bf Fixed Cursed Ronin (CHK) 2010-01-30 10:00:33 +00:00
wagic.the.homebrew@gmail.com d0212ddfa8 Erwan
- Adding "turn" information when pressing start ingame. This closes issue 248
2010-01-30 09:19:57 +00:00
wagic.the.homebrew@gmail.com abe66333d5 Erwan
- Spanish interface update by Inquisidor
- German Cards update by Funky H.
2010-01-30 07:46:55 +00:00
wagic.the.homebrew@gmail.com 00d06329b2 Erwan
-fix issue 307 (new decks don't appear)
2010-01-30 07:41:33 +00:00
wagic.the.homebrew@gmail.com dd01706527 Erwan
- introducing "grade" system for cards
- Fixed a few typos in _cards.dat
2010-01-30 06:33:40 +00:00
jean.chalard ccdda4e7a8 J :
* Fix some coding style misses.
2010-01-30 02:40:48 +00:00
solo81@web.de c64c184903 Small fixes to last revision. 2010-01-29 18:14:08 +00:00
solo81@web.de 8ca821c284 Added 36 Cards.
All cards have been tested successfully.

This update contains 2 card groups:

1) Creatures which get a certain power- and or toughness bonus when blocking and/or being blocked. This includes

2) Creatures with "bushido". Works 100%!
2010-01-29 17:59:34 +00:00
solo81@web.de 84f5aea7d5 Small fix to rev1747 2010-01-29 13:19:31 +00:00
solo81@web.de bec268df16 Added 38 successfully tested cards.
This update contents:

1. Creatures which get a certain power- and/or toughness-bonus when attacking or blocking.

2. Creatures which leave the battlefield at end of combat after having attacked or blocked.

3. Clockwork-"family" from Mirrodin.
2010-01-28 19:16:39 +00:00
jean.chalard e31ddd96ae J :
* Change a printf for some architectures.
2010-01-27 14:59:21 +00:00
jean.chalard f38dbf1746 J :
* Fix another set of 64-bits related problems.
* The code is now expected to compile on linux-64bits, but as I
  can't test, I can't be positive about it really compiling,
  much less working.
2010-01-27 07:25:48 +00:00
solo81@web.de dc35b32dac Added Mox Diamond (STH). Tested and working.
The 3rd auto-line is necessary because without it Mox Diamond will give you the chance to add mana without discarding a land when the "action-choice-window" opens.
2010-01-25 14:49:30 +00:00
solo81@web.de b5db708aac Small fixes from rev1740 2010-01-25 11:58:27 +00:00
jean.chalard 0a083f4385 J :
* Fixes for compilation on 64-bit architectures :
  string position-returning functions return size_t, not uint.
  Fix that.
* Fixes warnings with new gcc about non-fixed string AND no arguments.

NOTE : 64-bit architectures still do not compile. There are 2 different places
where printf is used with a specifier that is not large enough on 64-bit because
size_t is now a ulong and not a uint. The solution on GNU systems is the %zu
specifier, but as I'm not sure it is supported on windows I don't want to
introduce a huge hard-to-notice bug, so I'll do it at a time when I got a
windowser to back me up.
2010-01-25 09:58:30 +00:00
Psyyringe 9b91fab61b Fixed a typo (aut0 instead of auto) 2010-01-25 03:13:25 +00:00
solo81@web.de e48f9bd7f1 Added 102! successfully tested cards.
After weeks of hard work, I can proudly present you this huge package of cards, based only on already existing card code elements.

Some examples and important notes:

- Cards that get buried if you don't fulfill a condition
1. when they enter the battlefield (Hidden Horror[WEL]; Mercenary Knight, Thundering Wurm [both POR])
2. during your upkeep (Endless Wurm[USG]).

- Cards that allow to draw a card, then discard a card when entering the battlefield or damaging an opponent (Owl Familiar[POR], Looter il-Kor[TSP]).

IMPORTANT NOTE: Those cards work only correctly because the draw effect resolves before the discard effect. 
Instants and Sorceries with such effects or permanents that have an activation cost for drawing, then discarding a card won't work because the two effects don't trigger in the correct order.

- Land cycle from Visions and Planeshift (both very puzzling, but working perfectly!)


I also updated World enchantments (tested & working, see rules for them in Gatherer!)

Several card fixes.


If you have any questions, post them! ;)
2010-01-24 20:43:21 +00:00
wagic.the.homebrew@gmail.com d22b7b5e37 Erwan
-some fixes for HQ cards support
2010-01-23 03:35:43 +00:00
d32.wagic feab777815 Daddy32 - fix for 33 credits task reward bug. 2010-01-21 15:12:15 +00:00
wagic.the.homebrew@gmail.com 3edc364d8e Erwan
- fix for issue 301 (creatures go to graveyard)
- This adds an important change to "movedTo", which now accepts a "full" target description in both "from" and "movedTo". The point is that a card does not move to "creature|graveyard" from "battlefield" but moves from "creature|battlefield" to "graveyard".
2010-01-21 14:12:11 +00:00
wagic.the.homebrew@gmail.com 0948dc611a Erwan
- Merge some linux and Windows code in JGE to improve maintenance
2010-01-21 11:37:31 +00:00
jean.chalard b8d46db0a8 J :
* Unify with the windows version.
2010-01-20 16:46:47 +00:00
jean.chalard 175f8eca09 J :
* Fix the name of a standard include.
2010-01-20 15:22:08 +00:00
d32.wagic 7fad293991 Daddy32 -Added one more task type, motivating the player to conserve cards in hand. 2010-01-19 22:45:15 +00:00
d32.wagic d93b44b894 Daddy32 -fixed small graphical (scrolling) issues in deck statistics. 2010-01-19 20:48:17 +00:00
d32.wagic 859319cef1 Daddy32: Fixed live/life spelling (guess this will require an update of translations?), tweaked conditions and rewards for 'defeat before/after turn x' type of tasks. 2010-01-19 20:22:50 +00:00
wagic.the.homebrew@gmail.com bd6c1a2407 Erwan
- fix compilation issues introduced in r1727
2010-01-18 12:43:30 +00:00
solo81@web.de 2df6a71c87 Added several successfully tested cards. 2010-01-17 22:00:19 +00:00
wagic.the.homebrew@gmail.com 1966e214c5 Erwan
-fix issue 298 (tethered griffin)
2010-01-17 12:09:57 +00:00
wagic.the.homebrew@gmail.com ffbcd3f2d0 ERwan
-fix issue 297
- also removed the "untapBlockers" system. The idea was nice but incorrectly implemented, and only 2 cards were using it so far.
2010-01-17 12:05:40 +00:00
wagic.superhiro 6830d850f2 Fixed Kor Skyfisher. 2010-01-17 11:34:14 +00:00
wagic.the.homebrew@gmail.com 3b12abb803 Erwan
-submit test for issue 301
2010-01-17 11:13:36 +00:00
wagic.the.homebrew@gmail.com fe6ec307d9 Erwan
-fix issue 300 (silver seraph)
2010-01-17 10:34:36 +00:00
wagic.the.homebrew@gmail.com 9d4e9ab5de Erwan
-fix issue 275
2010-01-16 06:26:22 +00:00
wagic.the.homebrew@gmail.com b9b3810bd9 Erwan
-adding test for issue 275
2010-01-16 04:42:58 +00:00
wagic.the.homebrew@gmail.com 7de479b73b Erwan
-adding tests for issue 294 (can't reproduce)
2010-01-16 04:33:04 +00:00
wagic.the.homebrew@gmail.com 3e8c11b29f Erwan
-"fix" issue 257
2010-01-16 03:16:35 +00:00
wagic.the.homebrew@gmail.com 3be21618d5 Erwan
-fix issue 283 (lord sorcery effects last indefinitely)
2010-01-16 03:10:10 +00:00
wagic.the.homebrew@gmail.com 11ed497ebb Erwan
-fix issue 209 (Clone loops AI)
2010-01-15 16:49:17 +00:00
wagic.the.homebrew@gmail.com 187e108cdb Erwan
-fix issue 192 (graphical issue when tapped card changes controller)
2010-01-15 15:09:41 +00:00
wagic.the.homebrew@gmail.com fea7985212 Erwan
- fix issue 228 (cockatrice VS regenerate)
2010-01-15 14:44:55 +00:00
wagic.the.homebrew@gmail.com 866f1c3e1c Erwan
-fix issue 170 (testsuite + library shuffle)
2010-01-15 14:12:57 +00:00
wagic.the.homebrew@gmail.com 2b39f576d7 Erwan
- fix issue 143 (exalted should be a triggered ability)
2010-01-15 13:29:49 +00:00
wagic.the.homebrew@gmail.com 26f96c3443 Erwan
- cache system for Deck Meta Data. let's improve it as needs arise
2010-01-15 12:19:47 +00:00
wagic.the.homebrew 9e4e7fe1ae Erwan - add missing "Cabal ritual" to todo.dat in TOR. I think this card can be coded, by the way. 2010-01-13 00:57:07 +00:00
wagic.the.homebrew 96d2f6259b Erwan
-fix typo
2010-01-13 00:51:34 +00:00
wagic.the.homebrew 75b40341d9 Erwan
- fix a typo (Villainous Ogre)
2010-01-13 00:46:06 +00:00
solo81@web.de ea5a07857b Fixed Pyre Zombie (INV).
Added a few tested cards.
2010-01-12 14:18:39 +00:00
jean.chalard ec1a7f73d4 J :
* Remove a useless debug line.
2010-01-12 01:30:44 +00:00
jean.chalard edad6a5c97 J :
* Fix a bug where the closest card to the old coordinates of a no more
  inplay card would be chosen regardless of whether it complies with the
  user's request.
2010-01-11 16:36:58 +00:00
wagic.the.homebrew@gmail.com 26aecc8224 Erwan
-fix a typo introduced recently in UDS
2010-01-10 14:45:42 +00:00
wagic.the.homebrew@gmail.com 53bf185473 Erwan
- fix one bug with Aladdin's Lamp
- fix Drain life MIR
2010-01-10 14:42:47 +00:00
solo81@web.de 0efa84d56d Added several successfully tested cards based on rev1685. 2010-01-10 11:08:36 +00:00
wagic.the.homebrew@gmail.com cee2da600d Erwan
- fix a bug where the AI would crash when playing cards with cycling or any other "autohand" ability
2010-01-10 09:48:26 +00:00
wagic.the.homebrew@gmail.com b3dc2bcda2 Erwan
- fixed issue 267 (hope charm)
- fixed an issue in which the core Rules where not correctly loaded for the test suite
2010-01-10 03:32:18 +00:00
solo81@web.de 0892516ef4 Added huge amount of successfully tested cards.
Updated wordings (10E).
2010-01-09 22:03:21 +00:00
wagic.the.homebrew@gmail.com 192103b105 Erwan
- fix issue 260
- ad test for issue 267
2010-01-09 11:09:44 +00:00
Psyyringe 869a6b3535 Psyringe - quick fix to Drain the Well (EVE), a user reported to me that the opponent got the life bonus (instead of the caster) 2010-01-09 02:36:20 +00:00
wagic.the.homebrew@gmail.com dabd93b5d7 Erwan
-fix issue 287 (urza's mine)
2010-01-08 15:07:56 +00:00
solo81@web.de 83c054e5b8 Added huge amount of successfully tested cards, mainly based on revision 1685.
The new introduced "must" also works with "@movedTo..." events (Fire Snake (POR) for example)!
2010-01-07 20:59:01 +00:00
wagic.the.homebrew@gmail.com 6e2e351239 Erwan
-fix issue 144
2010-01-07 13:56:57 +00:00
wagic.the.homebrew@gmail.com feb1d27ebb Erwan
- daily build
2010-01-07 12:01:58 +00:00
solo81@web.de 74c0628018 Added card based on rev1685. 2010-01-06 17:30:42 +00:00
solo81@web.de 5e2551f682 Added several cards based on rev1685. 2010-01-06 16:54:38 +00:00
solo81@web.de f3be1c8b74 Fixed Mystic Snake(APC) based on rev1685. 2010-01-06 16:34:44 +00:00
solo81@web.de 2e6ec731ec Added Gerrard Capashen (APC) 2010-01-06 16:28:59 +00:00
wagic.jeck 0913954268 Jeck - Small edit to credits screen, now displays total turns taken... so players know how far they missed their task deadline by :P. 2010-01-06 16:08:34 +00:00
solo81@web.de b95a094b4c Small corrections from last revision. 2010-01-06 15:17:47 +00:00
solo81@web.de 3737f7b978 Added huge amount of successfully tested cards.
Plz read my comment below for explanation!
2010-01-06 15:13:49 +00:00
wagic.the.homebrew@gmail.com 28a9b83c1b Erwan
-"minor" fixes in Aven cloudchaser
2010-01-06 14:27:02 +00:00
wagic.the.homebrew@gmail.com 6f5b603912 Erwan
-missing todo.dat from previous update
2010-01-06 14:23:26 +00:00
wagic.the.homebrew@gmail.com da07370243 Erwan
- (Finally) adding "must" abilities. Usage is as natural as possible, check Aven cloudchaser in 10E.
2010-01-06 14:22:41 +00:00
wagic.jeck 50169eb5fb Jeck - Metadata edits.
* Set names redacted pending further research.
* Blocks assigned "safe", vaguely similar words.
2010-01-06 09:52:18 +00:00
wagic.jeck 3cdae99e46 Jeck - Rudimentary metadata for all current sets. 2010-01-06 00:06:43 +00:00
wagic.jeck bd0e139e6d Jeck - Minor update to trophy room, moved metadata into cards.dat
* updated daily build
* Card spoiler now sorts by collector's number.
* Metadata looks for "[m" (for speed reasons), I've been using "[meta]" in files. No sets currently use metadata.
2010-01-05 23:32:31 +00:00
wagic.the.homebrew@gmail.com 2285821d36 Erwan
-fix issue 252 (equipment goes to graveyard)
2010-01-05 13:48:17 +00:00
wagic.the.homebrew@gmail.com 2ea7de5a3a Erwan
- removed Channel and Shield of the ages, which technically solves issues 174 and 178...
2010-01-05 12:56:43 +00:00
solo81@web.de 21307ef1f7 Added several successfully tested cards (MIR).
Note: Rampant Growth was missing in the todo_dat!?
2010-01-04 21:56:48 +00:00
wagic.the.homebrew@gmail.com 3e33e2b756 Erwan
-fix issue 270
2010-01-04 13:51:39 +00:00
solo81@web.de 441b8a0f3a Added some cards (MRQ) 2010-01-04 13:51:37 +00:00
wagic.jeck 4ea8234f79 Jeck - quick fix to issue 285. Meant to do this later today with some other stuff, but had it ready now, so...
Eventually, the WDataSource stuff will need to be analyzed more in depth. WSrcMTGSet is very similar (though simplified) in functionality to the deck data wrapper stuff.
2010-01-04 12:59:57 +00:00
wagic.the.homebrew@gmail.com 7f46793031 Erwan
- fix issue 289 and issue 265. Please verify the fix.
2010-01-04 12:29:54 +00:00
solo81@web.de c33e748f30 Fixed Glassdust Hulk (ARB) && Ogre Warrior (GPT) 2010-01-04 11:52:54 +00:00
solo81@web.de ced7b570ce Fixed Magma Phoenix (M10) 2010-01-04 11:32:45 +00:00
solo81@web.de 756af5e135 Fixed Pledge of Loyality (INV) 2010-01-04 11:30:06 +00:00
solo81@web.de 0bac62d3d1 Added several successfully tested cards. 2010-01-03 12:16:36 +00:00
wagic.the.homebrew@gmail.com 73e3c24c5c Erwan
- fix issue 274 (kudzu)
2010-01-03 11:56:31 +00:00
wagic.the.homebrew@gmail.com 23fe54ae6f Erwan
- fix issue 153 (Tokens should go to graveyard)
- "token" keyword can now be used in the parser with things such as Creature[-token] for "noncreature token"
- Let's stop using "token" as a type
2010-01-03 10:08:36 +00:00
wagic.the.homebrew@gmail.com 69c5dee979 Erwan
- IMPORTANT: Legendary is not an ability anymore, creating cards with super types should be much more natural. You can now say "type=Snow Land", and stuff like that. No backward compatibility!!!
2010-01-03 03:11:30 +00:00
solo81@web.de 79a98e1c8f Small corrections 2010-01-03 02:51:41 +00:00
solo81@web.de 3f35d6e573 Added several successfully tested cards (INV). 2010-01-03 02:42:49 +00:00
solo81@web.de c045f4e01b Added several successfully tested cards (ICE). 2010-01-02 15:53:55 +00:00
Psyyringe e748a40302 Psyringe - fixed 3 cards:
Crosswinds (USG) - wrong manacost, also copy/pasted to the wrong position in the file
Akroma's Blessing (ONS) - cycling was in an auto= rule instead of an autohand= rule
Riptide Crab (INV) - was missing vigilance

Thanks to Raphael_Carlo for the bug reports
2010-01-02 12:00:23 +00:00
wagic.the.homebrew@gmail.com 0494e3eb33 Erwan
- Fixed language loading (previously broken with primitives code)
2010-01-02 07:05:39 +00:00
wagic.the.homebrew@gmail.com 57f2f582ab Erwan
- Update to fr_cards. Needs spell checking, and test of performance/crashes on a PSP (1MB file...)
2010-01-02 06:01:17 +00:00
Psyyringe c1097a2a58 Psyringe - fixed Spell Snare (DIS), thanks to baldersmashed for the bug report. 2010-01-01 17:46:13 +00:00
Psyyringe 3c11ab01ac Psyringe - fixed the 4 Tainted lands in TOR. The previous code made the ability available even when it shouldn't be there, and also worked only for one activation (due to an engine bug, see issue 282). The new code is closer to what the card is supposed to do, and works more than once. 2010-01-01 17:12:11 +00:00
Psyyringe 6956074877 Psyringe - fixed Mirri the Cursed (PLC). Temporarily fixed Reiver Demon (MRD). Thanks to Raphael_Carlo for the bug report.
Important: I just realized that the fix to Reiver Demon will probably lead to problems later on. The problem is this: Reiver Demon has an ability "When yu play this from your hand ...". This was coded as @moveto(this|mybattlefield) from(mayhand). Which doesn't work, because the card doesn't actually enter the battlefield from the hand, it enters from the stack. So, "@moveto(this|mybattlefield) from(maystack)" has the desired effect. However, IIUC, spells played from anywhere else (e.g. from the graveyard, if they allow that) should be placed on the stack to. Hence, the "fixed" trigger will also fire in this case, which is wrong.

This means that we can't actually code "played from ..." entirely correct at the moment. Is there a solution for this?

According to the rules, only a copy of a spell enters the stack (never the spell itself), so could the "from()" part access where the card actually came from?

Do we need an @played trigger to differentiate between moving a card and actually playing it?
2010-01-01 13:33:22 +00:00
Psyyringe 62065e4602 Psyringe - fixed Vengeful Dead (SCG). Thanks to mickey_brown for the bug report. 2010-01-01 12:44:39 +00:00
Psyyringe 53d8960b5d Psyringe - fixed Golgari Germination (RAV), thanks to mickey_brown for the bug report. 2009-12-31 23:36:04 +00:00
Psyyringe b8a2051f95 Psyringe - removed Cabal Ritual, it's a TOR card (and already present there). Thanks to baldersmashed for the bug report. 2009-12-31 20:03:17 +00:00
solo81@web.de ef9a90ba68 Added several successfully tested cards. 2009-12-31 17:01:05 +00:00
wagic.jeck 2dcf55c45d Jeck - Quick fix to issue 279. Requires testing, see issue for details. 2009-12-31 05:12:35 +00:00
Psyyringe ea31a5cf1c Psyringe - fixed Seismic Shudder (ZEN), thanks to mickey_brown for the bug report. Fixed Dragon Roost (ONS) - a character was missed during copy/paste and broke the card. 2009-12-30 21:11:54 +00:00
solo81@web.de 245661d52e Added Mangara of Corondor (TSP) Tested and Working. 2009-12-30 20:14:55 +00:00
solo81@web.de 12c2eaf073 Added RECURRING NIGHTMARE (EXO) Tested and working!
Added Serrated Biskelion (STH) Tested and working.
2009-12-30 19:38:42 +00:00
solo81@web.de d9462ecfc1 Several bug fixes, removed some cards, added 1 card (P02) 2009-12-30 17:42:18 +00:00
solo81@web.de 9900b2ec76 Removed Morselhoarder (SHM)
Fixed Consumptive Goo (SCG), code tested successfully ingame.
2009-12-30 13:25:42 +00:00
solo81@web.de 2e3d1041e3 Fixed Miraculous recovery (VIS)
Fixed Purge (DST)

Added ...tatatataaaa: Shauku Endbringer (MIR)! I tested this Vampiric Lady Gaga of Doom successfully ingame.
2009-12-30 13:07:40 +00:00
Psyyringe 1125a2aeaf Psyringe - fixed a typo in "mountainhome" that prevented it from working. This is probably the bugfix of the century considering that the number of cards with Mountainhome in Wagic (and actually in the whole Magic universe) is exactly zero. ;) 2009-12-30 01:11:23 +00:00
solo81@web.de 74d74d7c35 Small fix from last revision 2009-12-29 18:20:28 +00:00
solo81@web.de 79b248a152 Added many cards with "cantbeblockedby". 2009-12-29 18:17:06 +00:00
solo81@web.de 830b2a12c7 Added some cards with activation restriction "asSorcery". 2009-12-29 13:22:45 +00:00
Psyyringe c5e5e6a8c2 Psyringe - removed Tower o Coireall, a remnant of my testing which slipped through in r1639. Thanks to Dr. Solomat for noticing that! 2009-12-29 12:36:01 +00:00
solo81@web.de e361eecdd2 Fixed Fog Bank (USG).
Fixed Vampiric Spirit (P02).
2009-12-29 12:26:23 +00:00
Psyyringe 1f2a5bd4bd Psyringe - softcoded Great Defender (LEG), provided test script. 2009-12-29 00:39:16 +00:00
Psyyringe 219c69914a Psyringe - fixed Angel of Mercy (P02), it couldn't fly. Thanks to garlen for the bug report. 2009-12-28 20:02:09 +00:00
Psyyringe 49536fce44 Psyringe - introducing new ability: cantBeBlockedBy(T). T can be any targez specification, like "wall", "creature[flying]", etc. See added cards for examples. Note: This ability currently has the same restrictions as "protection from(T)", i.e. it can't be used in activated abilities or instants/sorceries. It *can* be used for creatures,auras, and other continuous abilities (e.g. an enchantment which grants "unblockable by walls" to all rats should be possible, although I didn't test that). There are 47 cards which use the phrase "can't be blocked by", so we should be able to get another fair mount of cards out of that.
Notes to programmers:
1. This feature uses an awful lot of copy-pasta, using "protetcion from()" as a base. While I'm learning the architecture, it's easier for me to have a dedicated single-purpose piece of code to work with, than trying to create multi-purpose code. I'm aware that this isn't a very elegant approach though, and I hope to be able to refactor additions like this into multi-purpose code once I have a better understanding of the architecture as a whole.

2. Please check the questions I'll add in my next code comments, specifically about AI integration and activated abilities / instants / sorceries.

3. I did have a crash (with the debugger complaining about stack corruption around the cd variable) during testing. I wasn't able to reproduce it though. I did have to clean the solution in-between when I updated to the primitives system, so perhaps there was this cleaning solved whatever corruption was in my files. I'm mentioning the issue in case someone has an idea on where my code might be risky (I'm still probne to making beginners mistakes).
2009-12-28 18:19:17 +00:00
Psyyringe 365c854e90 Psyringe - fixed toughness of Mountain Yeti, thanks to garlen for the bug report 2009-12-28 17:09:26 +00:00
wagic.the.homebrew@gmail.com 3ba9d84889 Erwan
- Italian update by icarus
- Portuguese update by vesgo
2009-12-28 13:15:34 +00:00
wagic.the.homebrew@gmail.com b366994397 Erwan
-manual test for issue 140
2009-12-28 13:04:24 +00:00
Psyyringe d7bcc41ccc Psyringe - fixed Myr Servitor (5DN), it returned cards to the hand, not to the battlefield. Thanks to mickey_brown for the bug report. 2009-12-27 22:21:42 +00:00
Psyyringe dbd8df5070 Psyringe - fixed Penumbra creatures from APC: Missing colon in the trigger specification caused the effect to be executed when the trigger was set, not when it was fired. Also, from() information was missing, so the trigger would have fired on discarding the card as well. Also, Penumbra Wurm had the rules text of the Kavu. Thanks to mickey-brown for the bug report. 2009-12-27 21:08:56 +00:00
Psyyringe 667a7f6a8e Psyringe - reverted Urza's lands to abrasax' original way of coding them, plus minor adjustments. The previously used code made themwork only once. Added a test script for that condition. Also removed test script for Thought Courier (which would fail now, since the card was removed in a recent revision).
Thanks to TheDark for the bug report on Urza's lands.

Note that the lands still don't work entirely correct, they give you the option to tap them for one mana even when they shouldn't anymore. This can be fixed when aslongas(cards) <1 is working.
2009-12-27 19:43:36 +00:00
Psyyringe 48a7ca6d37 Psyringe - fixed non-working abilities of Mind over Matter (EXO) and Firemane Angel (RAV). "may" does not work foraczivated abilities (see issue 267). 2009-12-27 16:56:22 +00:00
wagic.the.homebrew@gmail.com 05a72de5bc Erwan
- Card Primitives system. Check Royal Assassin in RV, 10E, M10
- Please review, is sets/primitives a good directory? Should we rename MTGCard into "CardPrint"? 
- Unfortunately for now it is not possible to "override" a Primitive. A card that links to a primitive but also defines new "values" will create its own data and ignore the data in the "linked" primitive for the time being. I hope to solve that at some point...
2009-12-27 12:14:36 +00:00
Psyyringe 6135774016 Psyringe - added two test scripts for cycling, and a bug demonstartion script for a conflict between cycling and casting instants/sorceries. 2009-12-27 00:20:42 +00:00
solo81@web.de 6e13ac53d7 Added huge amount of cards with mana cost restrictions.
Some new main categories are:

- Cards with Soulshift
- Cards with Transmute
- Rebels and Mercenaries
2009-12-26 23:37:35 +00:00
Psyyringe 26d49a292c Psyringe - fixed Dandan (ARN), it was using a non-standard character in its name. Thanks to wins22 for the bug report. 2009-12-26 22:34:12 +00:00
Psyyringe cca741439b Psyringe - fixed color of Mountain Bandit (PTK), thanks to wins22 for the bug report. 2009-12-26 22:30:08 +00:00
solo81@web.de 9af240fb90 Added more cards with toughness restrictions. 2009-12-26 20:39:28 +00:00
solo81@web.de 7689c3bbdc Added more cards with power restrictions. 2009-12-26 20:27:34 +00:00
Psyyringe 0856fcc931 Psyringe - fixed Stun (10E). Thanks to Rob for the bug report. 2009-12-26 19:19:21 +00:00
Psyyringe dd2c815780 Psyringe - Fixed Urza's Tower and its associated test. Thanks to TheDark for the bug report. 2009-12-26 18:55:01 +00:00
Psyyringe f57aacd020 Psyringe - fixed Enchantress's Presence (ONS). Triggers which fire upon "playing a card" need to be coded with "from(mystack), not "from(myhand)" - the latter would only trigger if you put the card into play without casting it.
Thanks to TheDark for the bug report.
2009-12-26 18:43:16 +00:00
Psyyringe 086dab7a7a Psyringe - adding test script for Enchantress's Presence, following a non-reproducible bug report. 2009-12-26 18:09:14 +00:00
solo81@web.de 0655f5da95 Added some cards with power/toughness restriction 2009-12-26 12:44:18 +00:00
wagic.the.homebrew@gmail.com 98b6f914df Erwan
- splash screen issue fix
2009-12-26 06:41:58 +00:00
Psyyringe 5c3b3f1d03 Psyringe - added quantifiable target restrictions. Whenever you use square brackets [] to specify attributes of a target, you can use the operators <=, >= and = to specify quantities for power, toughness, and/or converted manacost. See added cards for examples.
Limitations:
- Operators for "greater than", "less than", "unequal" have not been implemented, but if a card actually needs them, you can use a preceding minus sign to negate a comparison. Example: -power=3 means "power not equal to 3", -toughness<=3 means "toughness>3".
- You can't use spaces when specifying such restrictions. Write "power<=3" instead of "power <= 3"
- You now need to use a space before the "<" and ">" commands that count the matches for lord(), foreach(), all() and aslongas(). So far we always did use spaces in front of them without actually needing to, now we need to.
- manacost restrictions don't take "X" costs into account. Example: Mistmeadow Skulkin (FUT) has protection from manacost>=3. Blaze has a converted manacost of 1, but when you cast it with an X of 2, then it actually has a converted manacost of 3 while on the stack, and Mistmeadow Skulkin would be protected from it, but currently it isn't.

Please review the code, I'll add a few remarks/questions of my own.
2009-12-26 01:50:33 +00:00
Psyyringe ddb9ce251b Psyringe - Fixed Delusions of Mediocrity (ULG). Solution is inelegant. How useful would a trigger @movedfrom be, or (alternatively) the option to specify zones as "|*" ("anywhere") or as "|-battlefield" ("any zone but the battlefield")? Here's how this card could be coded then:
Now: auto=@movedTo(this|graveyard,library,hand,exile) from(battlefield) ...

Alternatives:
auto=@movedFrom(this|battlefield) ...
auto=@movedTo(this|*) from(battlefield) ...
auto=@movedTo(this|-battlefield) from(battlefield) ...

Suggestions? How many cards would benefit from such an addition?
2009-12-25 22:44:05 +00:00
Psyyringe 331f57cb41 Psyringe - fixed power of Yellow Scarves General (PTK), thanks to wins22 for the bug report. 2009-12-25 18:17:27 +00:00
Psyyringe 43dd27065d Psyringe - fixed Water Wurm (DRK). Parantheses have to follow the respective command immediately, without a space. The parser is looking for "aslongas(", "from(" etc., so it will not recognize the command if a space is introduced there. 2009-12-25 10:05:27 +00:00
Psyyringe c626ddafa7 Psyringe - fixed non-working protection in 3 DST cards. 2009-12-25 09:58:04 +00:00
leungclj e0a13e78c0 JON4TH4N - Fixed forest!! 2009-12-23 15:26:16 +00:00
wagic.the.homebrew@gmail.com a821f67cbf Erwan
- Adding Christmas theme by Lakeesha
2009-12-23 14:46:16 +00:00
wagic.laurent f4cf5b5532 Laurent - Small Cards bug correction - Yavimaya Druid (TSP) was missing Forestwalk. Removed Coral Helm from ATQ (need discard random as a cost). 2009-12-23 09:36:31 +00:00
wagic.the.homebrew@gmail.com 4be7d5ebd3 Erwan
- pumped version up to 0.10.1
- Added fleshformer, so that conflux gets 80 cards :)
2009-12-23 06:21:30 +00:00
wagic.the.homebrew@gmail.com d80e72e8c7 Erwan
- fix psp compilation
2009-12-22 15:24:30 +00:00
wagic.the.homebrew@gmail.com 2984bb7405 Erwan
- fix issue 265
2009-12-22 15:04:56 +00:00
leungclj b762a7e3a9 JON4TH4N - applied the same change from r1604, the reason because "may" will not work with "moveto" follow with a cost, and since you already paid for your ability cost, why pay a "may" there? Pay {G} and you dont have to use this ability XD. Tested asSorcery, works, but also found Flame Jab not working, reasons attached, so its removed. 2009-12-22 14:19:29 +00:00
wagic.the.homebrew@gmail.com 54142cc816 Erwan
- fix a segfault with Shivan Gorge
- Fix a memory leak in the AI
- Commit a test for issue 265
2009-12-22 13:11:08 +00:00
wagic.the.homebrew@gmail.com 4eb6850c41 Erwan
- update french translation
2009-12-22 10:58:55 +00:00
leungclj ccb07a25d1 JON4TH4N - fixed Skyshroud Ranger, yes, tested, no bug, no crash from this fix, no segfault (not sure what segfault is XD) 2009-12-22 02:20:03 +00:00
Psyyringe adf797e20e Psyringe - fixed typo in deck description 2009-12-20 04:40:44 +00:00
Psyyringe 99ae66dee2 Psyringe - updated German translation to r1601 2009-12-20 04:33:04 +00:00
wagic.the.homebrew@gmail.com 1b91bbdff7 Erwan
- Adding option to interrupt AI after main phase 2
2009-12-20 02:48:25 +00:00
Psyyringe 8bc2249b9b Psyringe - added some DST cards 2009-12-20 02:21:12 +00:00
Psyyringe ff0331c801 Psyringe - reimplemented Goblin Cannon (5DN) after successful test following discussion on r1508 2009-12-20 00:53:50 +00:00
Psyyringe ded02f5e0b Psyringe - Fixed a language-specific line in new "info for translators" 2009-12-19 22:54:01 +00:00
Psyyringe 165d4b173b Psyringe - deleted deck names from dontcare.txt - AFAICT they make no sense there. Deck names aren't fed into the translation routine anyway, hence so the translation routine doesn't need to be told that it shouldn't generate an entry for them in "missing.txt" when it can't translate them. Hence, the entries in this file were unnecessarily occupying memory and slowing down the processing of failed translations. 2009-12-19 22:51:35 +00:00
Psyyringe 4adfa9669f Psyringe - updated "note to translators" in Spanish, French, Italian, and Portuguese translations. 2009-12-19 22:39:59 +00:00
solo81@web.de 3c8a1dd685 Reordering (CSP) 2009-12-19 22:07:28 +00:00
Psyyringe 4288751b7f Psyringe - added and/or updated flavor texts for lots of decks. Each decks has a flavor text now. Replaced references to out-of-game material like "8/8 creature", "aggro deck", or real-life quotes, to maintain artistic consistency and not disrupt a player's immersion into the fantasy world. I tried to use a wide range of diverse texts (descriptive, taunting, bizarre, comical). Feedback and suggestions for improvement are welcome. 2009-12-19 21:38:13 +00:00
wagic.jeck a80035e2a0 Jeck - Removed set metadata loading. We're in feature-freeze, and this feature wasn't fully implemented in time for release. I've removed the partial-implementation to prevent use of the outdated format... next release will feature set metadata integrated with _cards.dat. 2009-12-19 20:52:37 +00:00
solo81@web.de 93674f7cc5 Added Elvish Spirit Guide (ALL)
Added Keen Sense, Mirri & Simian Spirit Guide (PLC)
2009-12-19 20:52:18 +00:00
solo81@web.de 0f6da1f076 Fixed Into the North (CSP) 2009-12-19 15:21:11 +00:00
solo81@web.de 5286b51d5c Small fixes
Removed some cards

Added Skyshroud Ranger (TMP)
2009-12-19 14:40:58 +00:00
wagic.superhiro 2c31280a8d Fixed Stomping Grounds. 2009-12-18 21:59:35 +00:00
solo81@web.de 4256a2f512 Added some cards (MIR) 2009-12-18 21:20:13 +00:00
solo81@web.de 3c2b51607d Added most cards with Channel-ability (SOK).
Added Worldheart Phoenix (CFX)
2009-12-18 19:56:59 +00:00
solo81@web.de d1ee26d3a2 Added Magma Phoenix (M10) and Pyre Zombie (INV) 2009-12-18 16:52:35 +00:00
solo81@web.de bacae53c1c Added Gigapede (ONS) (tested and working) 2009-12-18 16:28:56 +00:00
solo81@web.de bb7965cd9a Fixed Scourglass (ALA) 2009-12-18 16:09:09 +00:00
solo81@web.de 8307d62e68 Small fixes from my last card additions 2009-12-18 15:45:36 +00:00
wagic.laurent 26a44c672e Laurent - small correction to R1581 (sorry) 2009-12-18 15:41:56 +00:00
wagic.laurent c8bdb3b37e Laurent - Added few cards with reinforce (MOR ability similar to cycling). Tested Hunting Triad "in game" and works fine. Did not add Rustic Clachan (will need to test it first). 2009-12-18 15:39:23 +00:00
solo81@web.de e978664d18 Added Genesis and Glory (JUD) (tested and working).
Added almost all cards with retrace-ability (EVE) (tested and working).
2009-12-18 15:35:47 +00:00
wagic.the.homebrew@gmail.com d58b0ffac5 Erwan
- fix issue 263
2009-12-18 15:16:38 +00:00
wagic.the.homebrew@gmail.com b892bce44c Erwan
- Fixing issue 234 (segfault risk with "becomes")
2009-12-18 14:47:07 +00:00
wagic.the.homebrew@gmail.com c78eef002a Erwan
-reduce Ram used by Kernel threads (PSP). Attempt at minimizing issue 261
2009-12-18 11:14:06 +00:00
wagic.the.homebrew@gmail.com edd83ea2e1 Erwan
- Fix id collision
2009-12-18 11:06:18 +00:00
jean.chalard d6ad963f68 J :
* Remove a useless debug print
2009-12-18 10:20:25 +00:00
jean.chalard 6af5563103 J :
* Re-input a close that had been deleted by mistake.
2009-12-18 10:12:07 +00:00
solo81@web.de cecfa80ca0 added more successfully tested cards 2009-12-17 21:47:43 +00:00
Psyyringe 05aed90b84 Psyringe - fixed rarity of Fire Bowman (PTK) 2009-12-17 21:36:51 +00:00
Psyyringe 7544f3d198 Psyringe - added missing rules text to Fire Bowman (PTK) 2009-12-17 21:35:13 +00:00
solo81@web.de 13b3ffecfb Added some cards with myUpkeepOnly. All have been successfully tested ingame!
There is one important thing about coding such cards in direct combination with "limit:x". You have to put "limit:x" always before "myUpkeepOnly", see Firemane Angel as an example.

An auto line with "...myUpkeepOnly limit:x" does not work! So, the only working combination is "...limit:x myUpkeepOnly".
2009-12-17 20:44:57 +00:00
Psyyringe ee70461d9d Psyringe - added Goblin Welder (ULG), as per forum discussion here: http://wololo.net/forum/viewtopic.php?f=15&t=915&p=8239&hilit=welder#p8239 2009-12-17 20:16:08 +00:00
Psyyringe e12bcb83dc Psyringe - minor update to German translation 2009-12-17 19:54:19 +00:00
Psyyringe a479fed3eb Psyringe - Copy/Pasted 50 avatar files so that every deck has one. We have 36 avatars for 100 decks, so duplicates are inevitable, but I took care that each avatar occurs 2 or 3 times, so none are extremely frequent. 2009-12-17 19:31:39 +00:00
jean.chalard 1d67773097 J :
* Use the adaptative size system for hand representations.
2009-12-17 18:15:59 +00:00
jean.chalard a89458bca8 J :
* Remove a useless debug print.
2009-12-17 18:15:36 +00:00
jean.chalard 1cc89e63c6 J :
* Fix a compilation problem on PSP.
2009-12-17 17:44:27 +00:00
jean.chalard 54791762b1 J :
* Fix a bug where valid directories would be ignored and invalid ones
  would be accepted for profiles and themes.
* Fix a compilation fault when compiling in debug mode.
2009-12-17 17:29:24 +00:00
wagic.the.homebrew@gmail.com 92e7d8831b Erwan
- Adding credits back
2009-12-17 13:43:53 +00:00
leungclj 8ebdf91eea JON4TH4N - corrected Crovax, Ascendant Hero 2009-12-17 13:21:44 +00:00
leungclj 4251ceb6be JON4TH4N - corrected Restrain, come on! Bring on the fix! 2009-12-17 13:19:41 +00:00
wagic.the.homebrew@gmail.com 35745a55ef Erwan
- Loading the "awardback.jpg" file in 16bits instead of 32. This should extremely reduce the probability of crashes (issue 247)
- Added some error debug message for the test suite when a card cannot be found
2009-12-17 13:09:47 +00:00
leungclj 6ed9fd2be4 JON4TH4N - addition to r1553 2009-12-17 13:03:25 +00:00
solo81@web.de 6087c34ad9 Added some cards (P02) 2009-12-17 13:01:42 +00:00
wagic.the.homebrew@gmail.com fa772f0528 Erwan
-adding test case for issue 251
2009-12-17 12:52:59 +00:00
leungclj 4676220134 JON4TH4N - corrected Ivory Tower 2009-12-17 12:52:25 +00:00
leungclj 3eac4ea854 JON4TH4N - corrected Brutal Nightstalker 2009-12-17 12:48:38 +00:00
solo81@web.de 5e9e0b6348 Added Squee, Goblin Nabob (MRQ,10E). Card has been successfully tested ingame! 2009-12-17 12:44:22 +00:00
wagic.the.homebrew@gmail.com fad1699960 Erwan
-update Ilya's Theme. Would be great if someone could copy/paste the avatars for the 50 remaining decks...
2009-12-17 12:35:16 +00:00
Psyyringe d7495e80be Psyringe - Removed erroneous "opponentbattlefield" limitation from Pit Trap. Updated the card's rules text. 2009-12-17 11:51:43 +00:00
wagic.laurent 0d6bd27d85 Laurent - fix Issue 259 - Storm Crow (ALL) Wrong ID 2009-12-17 11:34:58 +00:00
wagic.laurent 9b9968cc91 Laurent - removing Amok (STH) 2009-12-17 11:05:28 +00:00
jean.chalard 033adea8e4 J :
* Move this test to where it really belongs.
2009-12-17 03:14:33 +00:00
jean.chalard 82ac1add24 J :
* Fix a bug where a char* would be passed instead of a String to _()
2009-12-17 03:12:35 +00:00
Psyyringe af10c4d0e9 Psyringe - updated German translation. Also sent "Days left" and "Reward" from task board screen to translation function. I did check the results, but not as thorough as I'd like to, so there may still be rough edges.
Note: If you design the layout of a screen, please keep in mind that translators usually need more space than the English terms do, English is a very space-efficient language. I found that I sometimes have to resort to suboptimal translations because the better ones don't fit into the space reserved for them.

Note 2: I've heard about problems with characters taking up a different amount of screen space on Windows and the PSP, so could someone check whether the German texts are inside their boundaries on the PSP? I can only test on Windows.
2009-12-16 23:08:36 +00:00
leungclj e1a1281088 JON4TH4N - nothing important 2009-12-16 18:07:54 +00:00
jean.chalard 9cfa274d6f J :
* Fix a bug where the little card names would be displayed
  untranslated.
* This addresses issue 255.
2009-12-16 15:41:27 +00:00
jean.chalard 8648cb8810 J :
* Remove an old and useless debug print.
2009-12-16 15:40:45 +00:00
jean.chalard aefc5f7b6e J :
* Fix the damage assignment interface to take Deathtouch into account.
* This addresses issue 32.
2009-12-16 15:29:44 +00:00
Psyyringe 28a5b3f490 Psyringe - delete some stray spaces which were screwing up translation and deck file reading. This has happened repeatedly, perhaps we should run a test script over the _cards.dat and todo.dat files which strips spaces from line ends. 2009-12-16 15:29:01 +00:00
jean.chalard 09b37e4f5a J :
* Add a test for damage assignment for deathtouch.
2009-12-16 15:28:55 +00:00
Psyyringe 1a13ca4750 Psyringe - fixed minor spelling error 2009-12-16 13:36:34 +00:00
wagic.the.homebrew@gmail.com d508505379 Erwan
- lowercase rules folder step2
2009-12-16 12:03:20 +00:00
wagic.the.homebrew@gmail.com 9eee80a30d Erwan
-lowercase rules folder step 1
2009-12-16 12:02:32 +00:00
wagic.the.homebrew@gmail.com 8a48e3aba4 Erwan
- Theme rename phase 2
2009-12-16 12:00:29 +00:00
wagic.the.homebrew@gmail.com 0d748229bd Erwan
- Theme renama phase 1
2009-12-16 11:59:48 +00:00
wagic.the.homebrew@gmail.com 76ae493b7a Erwan
- Fixing some language issues + fr update
2009-12-16 11:55:18 +00:00
wagic.laurent a2205c013a Laurent - Fix issue 253 (ZEN) few additions/corrections related to the addition made in R1485 (myUpkeepOnly). I did not add all of them, some that might work are still in the todo.dat with a tag "#Require Testing".
Removed Minotaur Explorer (ODY)
2009-12-16 10:42:16 +00:00
Psyyringe 637dac9673 Psyringe - reverted previous revision 2009-12-16 08:52:35 +00:00
Psyyringe d80083ed01 Psyringe - added the deck authors to our credits page. Not certain if it's desired (could grow quite large over time), but some of the guys spend hours tweaking their decks for others to enjoy, so I guess a bit of recognition isn't misplaced. ;) 2009-12-15 23:12:35 +00:00
Psyyringe d3cbc12969 Psyringe - Added 50 more AI decks: 25 from the competition (with slight adjustments to some), 7 from the forums, rest by myself. All decks have been tested, though some only quickly. Flavor text will be added later, I hope I'll be able to do so before the official release. 2009-12-15 22:54:43 +00:00
wagic.jeck b7b48a0ab3 Jeck - "Fix" to issue 247 (see issue for notes), added additional award ("Collection valued over 10,000 credits"), minor enhancement to trophy room UI (floating "O - Details" notification).
The new award will need some art before we ship, but it won't take too much work to add that :)
2009-12-15 18:03:42 +00:00
leungclj 5fc790ff7e JON4TH4N - (ZEN) added 1 card 2009-12-15 13:30:33 +00:00
wagic.the.homebrew@gmail.com 9f8a394a9f Erwan
- Test for invalid issue 249. closing the issue
2009-12-15 12:05:55 +00:00
wagic.laurent 94b2e28a56 Laurent - Removing Balduvian Horde.
Sorry for the confusion (I was confuse myself...)
2009-12-15 08:51:21 +00:00
leungclj dc44978e39 JON4TH4N - minor clean up 2009-12-15 03:06:33 +00:00
leungclj 24894daf3d JON4TH4N - added a few things 2009-12-14 22:03:11 +00:00
solo81@web.de 028a52b23b Small fixes (SHM) 2009-12-14 18:08:41 +00:00
wagic.laurent f48a0062e5 Laurent - Removing Ring of Renewal (FEM) - This one does not work correctly, the old version let you activate it even if you have no cards in hand. Trying to correct this bug but without success. 2009-12-14 16:37:46 +00:00
d32.wagic bd12054c62 Daddy32 - Fix for PSP menu broken in r1518; sorry for that. 2009-12-14 16:16:57 +00:00
leungclj c75b41cb9b JON4TH4N - added a bunch of "or more" cards, sorry, no test script, but tested in game, working 2009-12-14 15:02:12 +00:00
wagic.laurent 677ea869eb Laurent - Adding Balduvian Horde. Works fine if you play the card but have nothing else in hand the cards go directly to graveyard.
Bring a lot of memory... was one of my favorite cards back when I played "real" tournament...
2009-12-14 15:02:09 +00:00
d32.wagic 697926fcb3 Daddy32 - Tasks
Reward tweaks, fixes, spelling fix, one minor task subtype added, removed debug options.
2009-12-14 14:52:25 +00:00
wagic.laurent 346d415d7a Laurent - Added Deep Slumber Titan (SHM), Feldon's cane (ATQ) - Tested and working.
Very Small correction POR
2009-12-14 14:03:14 +00:00
leungclj a6bf4a1263 JON4TH4N - fixed and clean up~! 2009-12-14 03:00:39 +00:00
d32.wagic e5451e1cf2 Daddy32 - Updated project file to cover r1514 2009-12-13 22:29:14 +00:00
d32.wagic 002851a943 Daddy32: Tasks Mode
Gives the user the opportunity to earn some credits for performing various tasks.

Known bugs removed, tested stability-wise, not so much game-wise.
Lots of to-dos and ideas still remaining, better balance between task difficulty and their rewards needed - please comment.

Usage:
Enter shop, open menu, select 'See available tasks'.
All tasks in the list are active, until they expire ('Days left'; day passes after each duel (won, lost or quited)).
You can finish any of the tasks and get bonus. For particular task, the bonus gets a bit smaller every day (until expiration).
2009-12-13 22:12:14 +00:00
leungclj dedff9ff39 JON4TH4N - fixed a few things 2009-12-13 22:12:02 +00:00
Psyyringe 81e37c0c52 Psyringe - typo fix for SCG: authand -> autohand 2009-12-13 20:04:28 +00:00
solo81@web.de bf6bda5144 Removed Sword of the Meek (FUT) 2009-12-13 18:31:25 +00:00
Psyyringe a94ea29866 Psyringe - Gah. Fixed wrong tag. Going to look for my brain now, must've lost it on my last trip to the fridge. 2009-12-13 18:31:01 +00:00
Psyyringe a95cd2c388 Psyringe - added a missing "legendary" tag. 2009-12-13 18:25:51 +00:00
Psyyringe 5b38c6b6a3 Psyringe - added some test scripts for 5DN equipment. Also found some differences between my local version and the recently uploaded one and merged those. 2009-12-13 18:21:10 +00:00
leungclj 9ecf7afad1 JON4TH4N - added a whole bunch of equipments 2009-12-13 17:18:47 +00:00
leungclj 91204cdc08 JON4TH4N - fixed Gempalm Avenger 2009-12-13 16:50:02 +00:00
leungclj 1b3b600ca2 JON4TH4N - fixed my last revision 2009-12-13 16:47:24 +00:00
leungclj 1e503bc86e JON4TH4N - added more cycling cards, added gempalm avenger and test script, it passed 2009-12-13 16:34:38 +00:00
wagic.jeck d873b573f8 Jeck - Minor improvement to delayed loading in card spoiler. 2009-12-13 16:34:35 +00:00
solo81@web.de 160b06f616 Added cards with cycling (SCG) 2009-12-13 16:27:30 +00:00
leungclj b063b8d8c1 JON4TH4N - (FUT) added cycling cards 2009-12-13 16:10:15 +00:00
solo81@web.de 32f7c31aea Added cards with cycling (LGN) 2009-12-13 15:57:42 +00:00
solo81@web.de 55b2e6e3d1 Wording update, card fixes for rev1494. 2009-12-13 15:41:13 +00:00
leungclj 3888d71fe4 JON4TH4N - (CFX) added cycling cards 2009-12-13 15:34:35 +00:00
wagic.jeck 87d8922207 Jeck - quick fix to r1496. 2009-12-13 15:03:56 +00:00
wagic.jeck b766dd6e4a Jeck - Fixes for how options handle first boot, should resolve trophy room issue (no unlocked set on first boot). 2009-12-13 15:00:53 +00:00
leungclj 61f38b7494 JON4TH4N - fixed my last revision 2009-12-13 14:49:00 +00:00
leungclj 25a2bc4781 JON4TH4N - (ARB) added cycling cards 2009-12-13 14:44:08 +00:00
wagic.jeck 608255e251 Jeck - Fix signed/unsigned in AllAbilities (please review), bug fixes for trophy room (new status now saves). 2009-12-13 14:36:58 +00:00
solo81@web.de 0d39c0177d Changed the code of all cards with optional cycling effects (ONS).
EXAMPLE: The older code of Death Pulse was:

autohand={1}{B}{B}:cycling && may -1/-1 target(creature)

I tested this ingame and the following happened: 
1. I pay the cycling cost. 
2. The engine gives me the option to target a creature. 
3. I choose a creature.
4. The cycling effect resolves: Death Pulse goes to the graveyard and I draw a card, but the targeted creature does not get the p/t malus.

This is seems to be because the cycling effect is coded as  option ("may") and the cycle process (dicard this:Draw:1) is coded as a "must".

I found a new, successfully tested way to code such cards by giving them 2 autohand-lines instead of only one: 
The first one is without optional effect and the second one is with optional effect.
Ingame, if you cycle Death Pulse f.e., a window will appear to choose between those two auto-lines. WORKS GREAT AND DOES NOT BREAK THE CARD!! :)
2009-12-13 13:54:38 +00:00
wagic.the.homebrew@gmail.com 444706f316 Erwan
-daily build windows
2009-12-13 13:43:32 +00:00
leungclj ec4aa092ec JON4TH4N - fixed last revision, removed undead gladiator for now, my test script wont produce correct result, unless the "myupkeeponly" is not working properly 2009-12-13 13:24:57 +00:00
leungclj 6753454871 JON4TH4N - (ONS) added cycling cards, test script coming up 2009-12-13 13:04:47 +00:00
leungclj f35ec32653 JON4TH4N - added a few cards with attach, need testing, new daily_build please.
- also need to test equipment a bit more, think I found a bug.
-test script for Resounding Thunder
2009-12-13 12:29:47 +00:00
wagic.the.homebrew@gmail.com 86c72b7d15 Erwan
-fix issue 239 (skullcage)
2009-12-13 11:18:55 +00:00
wagic.the.homebrew@gmail.com cc46be7fbe Erwan
-close issue 171 (remove Soul net from the game)
2009-12-13 10:21:33 +00:00
wagic.the.homebrew@gmail.com ee4e9f2262 Erwan
-fix issue 161 (brass man can untap outside of upkeep). Use "myUpkeepOnly" keyword. Other keywords such as "myDrawOnly" of course work. Haven't implemented "opponent" yet, is it needed ?
2009-12-13 10:18:37 +00:00
wagic.the.homebrew@gmail.com f9c810058d Erwan
-closing issue 165 (glasses of urza). Removed the card from the game, won't fix.
2009-12-13 09:48:29 +00:00
wagic.the.homebrew@gmail.com 927382ac8b Erwan
-Remove disrupting scepter from the game, closing issue 163
2009-12-13 09:45:10 +00:00
wagic.the.homebrew@gmail.com ee3286ff2a Erwan
-Fix issue 206 (rain of filth)
2009-12-13 09:33:51 +00:00
wagic.the.homebrew@gmail.com f7bd1dcef4 Erwan
- Fix issue 210 (Resuscitate)
2009-12-13 07:20:31 +00:00
wagic.the.homebrew@gmail.com a7493154fa Erwan
- fix issue 168 (kudzu)
- Fix issue 162 (copy VS shroud). This fix introduces a new keyword: NotATarget() instead of Target(). (Which was the best way for me to keep some kind of backward compatibility/ not alter the code too much / fix the bug)
2009-12-13 07:03:28 +00:00
wagic.the.homebrew@gmail.com 999256e6ab Erwan
- fixed divergent growth (issue 243). Unfortunately the underlying issue is quite complex, and Wagic doesn't handle it very well. Basically, all "until end of turn" effects run the risk of being partially deleted before the end of the turn, leading to segfaults or memory leaks. This is because some abilities' "clone" method doesn't actually clone them entirely... The fix for divergent growth is a hack that works only for lords+mana producer combination, but I need a more "generic fix" in the long run...
2009-12-13 05:59:17 +00:00
wagic.the.homebrew@gmail.com 7cc072bf77 Erwan
- fix a memory leak with "Prevent All combat damages" ability
- Fix issue 242 (Equip can be used outside of the main phases)
- introducing "attach" keyword. Same as equip but can be used anytime. Untested
- introducing "asSorcery" keyword. Can be used the same way as "myTurnOnly" on activated abilities to restrict their usage. Untested. Other similar keywords will follow, please let me know which ones would be useful
2009-12-13 03:28:50 +00:00
leungclj c7f23f2e5c JON4TH4N - (ALA) added a few cycling cards 2009-12-13 01:34:58 +00:00
Psyyringe 001ebc5976 Psyringe - typo fix for Rejuvenate (USG): authand -> autohand 2009-12-12 18:28:16 +00:00
leungclj f84cd15c4b JON4TH4N - added a few more cards + test script 2009-12-12 17:26:26 +00:00
Psyyringe b4e9541cb8 Psyringe:
- added Warren Instigator (ZEN) and test script. Thanks to Niegen for finding it.
- temporarily removed angry_mob6.txt from the test suite and added it to the "bugs" section, since the script occasionally fails and we haven't found the reason yet. See issue 240.
- added test script for Fog Bank
- added recently uploaded equipment scripts to test suite (not sure why the weren't added upon uploading them, looks like an oversight)
- fixed another bug in recently uploaded MRD file, it contained Vulshok Morningstar (a DST card with a wrong 9ED id and was inserted at the wrong position in the alphabetical order).
2009-12-12 17:10:08 +00:00
solo81@web.de 48592cc405 Small fix from last revision. 2009-12-12 15:49:58 +00:00
leungclj e65d1bda75 JON4TH4N - added a few more cards 2009-12-12 15:46:09 +00:00
Psyyringe 098969cd07 Psyringe - fixed segfault in debug mode; this caused the crash observed with r1467. Wagic's debug mode should now handle buggy _cards.dat files more gracefully by displaying the intended error message instead of crashing. 2009-12-12 15:12:52 +00:00
wagic.the.homebrew@gmail.com 74accec275 Erwan
- Fix issue 144 (Sound is either 0 or 100%), for PSP ONLY. The methods are now here for linux/windows, but only the music volume method will work currently, and it sets the volume globally. Patch by Yeshua with some cleanup by myself.
2009-12-12 15:10:32 +00:00
solo81@web.de f6c4350b38 Added some cards with Cycling (ULG,UDS) 2009-12-12 14:28:25 +00:00
Psyyringe 1085764e5d Psyringe - fixed several problems with recently committed MRD file (wrong ID, superfluous "color=Artifact" lines, stray line feed, doubled [card] tags). Wagic now shouldn't crash anymore upon loading it. 2009-12-12 14:06:04 +00:00
wagic.superhiro 2a150714b2 Added Equipment to Mirroding. Not tested, but they should work... please check. Is Nightmare Lash codable? 2009-12-12 13:14:33 +00:00
solo81@web.de 5ffe95a3a9 Added cards with Cycling (USG) 2009-12-12 13:05:05 +00:00
wagic.the.homebrew@gmail.com 99654c06c4 Erwan
- (exe) daily build
2009-12-12 12:26:04 +00:00
wagic.jeck 2387cd23f3 Jeck - Yes, I really did just do this twice. Another missing file from r1640. 2009-12-12 11:26:50 +00:00
wagic.jeck 61c9772a66 Jeck - Included missing file for r1460, updated trophy room. Trophies now render from bottom left, so any size png can be used. 2009-12-12 11:24:23 +00:00
wagic.the.homebrew@gmail.com 512f649147 Erwan
- Adding cycling. Check Akroma's vengeance in ONS for an example. Note that this uses autohand instead of auto, this is important! You can also use autograveyard. 
- All "auto" activated abilities should work with autohand, so this is not only for cycling, but could be used for other abilities as well. For example autohand={3}:cycling can also be written autohand={3}{S}:Draw:1
2009-12-12 11:09:13 +00:00
wagic.the.homebrew@gmail.com 3d23a4f3c8 Erwan
- fix twitch in 10E
2009-12-12 10:46:08 +00:00
wagic.jeck 70411f025f Jeck - Trophy room added, triangle is now dedicated alt-render toggle. Hopefully I'm not forgetting anything... 2009-12-12 10:23:28 +00:00
leungclj 11b2a4b288 JON4TH4N - (SHM)(EVE) added equipment and test script 2009-12-12 08:21:54 +00:00
leungclj d8bd95d5ed JON4TH4N - (ARB) added equipment, sorry, no idea how to write this test script, so I tested it manually, works fine 2009-12-12 08:01:26 +00:00
leungclj 826f7e5116 JON4TH4N - (5DN) added equipment, fixed twitch test, improved equip_shroud test 2009-12-12 07:23:43 +00:00
leungclj aa27e4ca16 JON4TH4N - (10E) added equipment 2009-12-12 06:57:26 +00:00
leungclj c1ff977afd JON4TH4N - minor clean up, not sure if this will make any difference, just in case tho 2009-12-12 06:28:09 +00:00
wagic.laurent 55cbdec5c6 Laurent - Update HML (finally).
Was a pain(bis) because of the duplicated card.
Note that 6 cards in this set could be added by implementing @blocked trigger : Folk of An-Havva (*2), Ghost Hound, Rashka the Slayer, Root Spider, Serra Inquisitors.
See Todo.dat
2009-12-11 17:29:25 +00:00
solo81@web.de 82c2d56692 Several card additions, card fixes, etc. 2009-12-11 16:55:49 +00:00
solo81@web.de f23e6971ac Updated (TOR):
- Removed some cards
- Added some cards with threshold
- Some card fixes
2009-12-11 11:53:33 +00:00
solo81@web.de 15e7cb906c Added Twitch (TMP) 2009-12-11 10:54:43 +00:00
solo81@web.de 7e94c8282b Some card fixes (PCY)
Removed Phantom Wings (WTH)
2009-12-11 10:13:28 +00:00
leungclj fd5731969e JON4TH4N - many minor fixes 2009-12-11 01:12:21 +00:00
leungclj 9f38fa5b06 JON4TH4N - improved test 2009-12-11 00:53:43 +00:00
wagic.the.homebrew@gmail.com c9da603bfa Erwan
-fix a typo in PCY
2009-12-10 22:46:10 +00:00
solo81@web.de 2cf20f4f92 Added some cards (WTH) 2009-12-10 21:10:57 +00:00
solo81@web.de f78ec2e49c Updated (PCY) 2009-12-10 20:57:51 +00:00
Psyyringe 4ebc5f66ed Psyringe - fixed 40 bugs in LGN. Yay! ;) (Okay, it sounds worse than it actually is ... but this one would actually have been somewhat embarrassing for us if it had slipped through ...) 2009-12-10 20:24:59 +00:00
solo81@web.de 11b15a355d Updated LGN 2009-12-10 20:06:10 +00:00
solo81@web.de 3f1aa0fad8 Fixed Adventuring Gear (ZEN) 2009-12-10 19:40:23 +00:00
solo81@web.de 75a1e314c7 Fixed Piety Charm (ONS) 2009-12-10 19:37:49 +00:00
leungclj c779c626b2 JON4TH4N - (ZEN) equipment added, please look at the todo, and perhaps expand on "mytgt" or "this" 2009-12-10 17:50:45 +00:00
wagic.jeck 9b0afb7105 Jeck - Minor bugfix: prevent garbage characters from appearing in JLBFont. 2009-12-10 15:53:23 +00:00
wagic.the.homebrew@gmail.com ee36281fa0 Erwan
- Adding Mind spring (M10)
2009-12-10 14:28:04 +00:00
Psyyringe e56c985f64 Psyringe - extending wololo's r1435 fix for Sculpting Steel (10E) to Sculpting Steel (MRD) 2009-12-10 14:04:48 +00:00
wagic.the.homebrew@gmail.com 71a05f48cd Erwan
-Daily build for windows
2009-12-10 14:00:54 +00:00
wagic.the.homebrew@gmail.com 04ab044438 Erwan
-fix conviction,scultping steel, whip silk
2009-12-10 13:47:31 +00:00
wagic.the.homebrew@gmail.com ca35754273 Erwan
- Adding equipments. They work like auras, except you have to add an "auto={cost}:equip" line. See Behemoth sledge in ARB for an example. Please test a lot before committing, thanks :)
2009-12-10 13:44:05 +00:00
Psyyringe 86ad1ef8c7 Psyringe - removed Copy Enchantment (RAV). It's a cool card, but we can't code it yet. When copying an aura, the copied aura will remain unattached, there is no way to attach it to anything, though it won't automatically go to the graveyard either. The only way to keep tze card would be to limit it to global enchantments until we implement a way of choosing targets for copied auras. This would mean that the card does only 50% of what it should, which is too little to justify keeping it (imho). 2009-12-10 13:24:13 +00:00
Psyyringe 12d2c87aef Psyringe - added test script for Rampage(2/2,1) - result of hunting a bug that didn't reproduce 2009-12-10 12:13:02 +00:00
Psyyringe 847dd111ca Psyringe - removed a stray comment in the rules text of Scout's Warning (FUT). Added a test script to check that card's functionality. Note that the card doesn't exactly what the rules text says (but it's probably close enough). 2009-12-10 11:35:27 +00:00
Psyyringe f3408cb4e6 Psyringe - fixed Nimbus Maze (FUT) and Sliversmith (FUT). Thanks to forum member masaru20100 for the bug report. 2009-12-10 10:05:56 +00:00
leungclj 635256bd5c JON4TH4N - cards added according to r1424 2009-12-10 08:16:28 +00:00
jean.chalard 63d54a7993 J :
* Fix an include bug which would prevent compilation.
2009-12-10 03:30:19 +00:00
solo81@web.de 04458e3c11 Added some cards (ALA,PLS) 2009-12-09 20:37:30 +00:00
solo81@web.de 9e8a841164 Added all shock lands from Ravnica Block.
Tested a few days and working!!!
2009-12-09 19:12:06 +00:00
leungclj 4b9223b125 JON4TH4N - requesting a new daily_build to verify r1424 2009-12-09 14:52:56 +00:00
wagic.laurent 7c2615886f Laurent - PLEASE Have a look at the following.
This is an atempt to code instant/sorcery with multiple effect.
It work fine, the only borderline effect is that you can "cancel" the card (which in this case does nothing).
+ The AI may be totally unable to use such cards.

My personal feeling is that such card could and should be added.

What do you think about it ?
2009-12-08 15:20:22 +00:00
Psyyringe 0ec6c7bf37 Psyringe - 5DN overhaul: added 6 cards (some borderline) and fixed 11 bugs. Added test scripts for most added cards. Please check/review as I'm still inexperienced with card code.
Additions:
- Added Avarice Totem. Code works, but uses a trick to circumvent a parser limitation. Feedback welcome.
- Added Fangren Pathcutter. Code works, but will fail if Fangren Pathcutter gets removed during the combatattackers phase (currently unlikely though). Feedback welcome.
- Added Goblin Cannon (spectacularly useless card, but codeable)
- Added Silent Arbiter (code works pretty well imho)
- Added Skullcage (doesn't work correctly yet due to bug; issue will be opened shortly)
- Added Thought Courier (has wrong sequence of actions, but is acceptable imho)

Bugfixes:
- Arachnoid didn't have Reach
- Battered Golem was missing a "may"
- softcoded Beacon of Creation
- Beacon of Destruction was missing an alias
- Beacon of Immortality was missing an alias
- Cackling Imp couldn't use its ability
- removed Crucible of Worlds (didn't work on several accounts)
- Krark-Clan Ironworks had an incorrect {T} cost
- Krark-Clan Ogre had an incorrect cost
- Screaming Fury was missing a target
- Skyhunter Skirmisher had double strike spelled wrong

Other:
- experimented with several more cards but couldn't implement them correctly, check the comments in todo.dat for details.
2009-12-08 08:39:34 +00:00
wagic.laurent c13b178b5a Laurent - Small correction 5DN (Loxodon missing vigilance) MRD (Solemn Simulacrum missing the may). 2009-12-07 16:32:02 +00:00
wagic.laurent 226c132946 Laurent - Code Clean-Up removed some Hardcode replace with softcode, mostly RV. Tested most of them (except exile from ALL but that should be the same as Swords to plowshares)...
Did not manage to remove/softcode The Rack.
2009-12-07 16:16:01 +00:00
wagic.laurent 3a513d4ec9 Laurent - Update SCG - Removed "Ambush Commander" this one really does not work yet... see todo.dat for my comments. Also tryed to add "one with Nature" does not function 100%... if someone find a trick for this one be my guest because it's a great card for an AI deck...
Also note "Silver Knight" a great card in a "knight" deck...
2009-12-07 14:04:45 +00:00
wagic.the.homebrew@gmail.com afc08b4b6e Erwan
- fix issue 92 (purple screen). Many thanks to Yeshua and Raphael!
- Switched valloc to vram, more recent and faster.
2009-12-07 11:54:59 +00:00
wagic.the.homebrew@gmail.com ca6f507d0a Erwan
- putting valloc.c back in the project as some persons have problem using/finding the valloc library
2009-12-06 12:38:23 +00:00
wagic.the.homebrew@gmail.com 85adde6c61 Erwan
-shortcut to reset the GU is now start+square
2009-12-06 11:34:00 +00:00
wagic.the.homebrew@gmail.com 0d2c6cf3e5 Erwan
- Adding external rules mechanism. It is very crude for the moment, but I hope it will grow. Have a look at Rules/mtg.txt for basic usage
2009-12-06 04:47:29 +00:00
Psyyringe c5e106ba27 Psyringe - removed leftover "human" command in test script for Karn's touch (sorry. problems to concentrate today) 2009-12-05 10:47:07 +00:00
Psyyringe 5c2be8229e Psyringe - adding test script for issue 233. Fixing targeting issue with Karn's Touch (card still doesn't work though, see issue 233). Also (unrelated) adding script for (non-reproducible) problem reported in i232. 2009-12-05 10:37:40 +00:00
Psyyringe 6da34f642f Psyringe - fixed issue 230. Also softcoded Braingeyser (RV) and Stroke of Genius (USG) and removed interfering obsolete hardcode for Braingeyser. Please review, this is my first attempt of moving hardcode to softcode. 2009-12-05 08:31:09 +00:00
Psyyringe bad617ad2b Psyringe - fixed issue 231 2009-12-05 08:07:49 +00:00
wagic.laurent 28f65d4970 Laurent - 1st SCG update (not finished yet)
Ambush Commander works perfectly fine... meaning RV card could be removed from Hardcode and softcoded...
2009-12-04 17:06:36 +00:00
Psyyringe 13f49fe395 Psyringe - minor maintenance: removed some superfluous color= lines 2009-12-04 16:48:29 +00:00
Psyyringe 78946f6d64 Psyringe - removed now obsolete notice in Urza's lands test script - sorry, forgot that in the previous release. Also (unrelated) fixed rarity of Akroma, Angel of Wrath (LGN) 2009-12-04 13:37:20 +00:00
Psyyringe 35a6ff3730 Psyringe - updated Urza's lands (ATQ) and their test script, using code suggested by abrasax, fixing a minor issue with them (see r1376). 2009-12-04 13:34:12 +00:00
wagic.laurent a27f86b729 Laurent - Update ALL, was painfull (Id were incorrect, missing alternative cards ID...etc...) just added the one working 100%... the todo contains a lot of experimental code that I don't have time to test ATM, will add them progressively if working correctly. 2009-12-04 11:50:18 +00:00
Psyyringe 3264220b6d Psyringe - added some cards with the nofizzle ability.
Question: I also tried to code Root Sliver (LGN) with the line "auto=lord(sliver|stack) nofizzle", but this didn't work, Slivers could still be countered. Did I choose a wrong approach, or is there a limitation of the lord ability with regard to spells on thee stack?
2009-12-04 04:55:54 +00:00
wagic.the.homebrew@gmail.com 73661a58d7 Erwan
- [PSP] pressing START + TRIANGLE on the PSP will attempt to reset the GU. If/when you get the purple screen, try to press start+triangle in the main menu and let me know if it changes something
2009-12-04 03:44:47 +00:00
leungclj e3f44344fb JON4TH4N - (ZEN) added 1 card 2009-12-03 21:23:39 +00:00
leungclj 1f071abe74 JON4TH4N - minor change 2009-12-03 20:32:11 +00:00
Psyyringe 93852a386e Psyringe - fixed tanglesap test. A forest was present in the INIT and DO stages, but not accounted for in the Assert stage. 2009-12-03 17:47:50 +00:00
Psyyringe 1a8bd648d8 Psyringe - added test scripts for recently added cards and mechanics (nofizzle, manacost, X-effects). Also added thorough testing for Angry Mob to help clearing up recent discussion. 2009-12-03 17:37:05 +00:00
leungclj 6061601c77 JON4TH4N - (ZEN) tanglesap fixed and tested and work but my test told me there was error regarding number of cards in play.... please check. 2009-12-03 17:32:40 +00:00
solo81@web.de 0a894e72d0 Fixed Undermine (INV) 2009-12-03 16:43:19 +00:00
solo81@web.de a7481ac0f8 Refixing Angry Mob (DRK) 2009-12-03 16:21:06 +00:00
wagic.the.homebrew@gmail.com f224dc0a25 ERwan
-fix issue 145 (double strike damages)
2009-12-03 15:02:34 +00:00
wagic.the.homebrew@gmail.com 51b53595bc Erwan
-closing issue 207 (psyonic sliver)
2009-12-03 14:22:23 +00:00
wagic.the.homebrew@gmail.com 57a320dbef Erwan
- fix issue 211 (circle of protection VS Black knight)
2009-12-03 14:14:27 +00:00
wagic.the.homebrew@gmail.com 6c50c3d02a Erwan
-fix issue 219 (Tokens rarity)
2009-12-03 14:08:20 +00:00
wagic.the.homebrew@gmail.com 5020d41023 Erwan
-fix issue 221 (legendaries+animate dead)
2009-12-03 14:04:05 +00:00
wagic.the.homebrew@gmail.com a58e414a5f Erwan
- fix issue 226 (holy day)
- fix issue 213 (random deck NB of cards)
2009-12-03 13:40:48 +00:00
wagic.jeck 8b8abafe59 Jeck - Updated daily build to r1389. 2009-12-03 10:00:24 +00:00
wagic.the.homebrew@gmail.com f24546c0eb Erwan
-adding missing test "prosperity.txt"
2009-12-03 09:54:15 +00:00
leungclj 7f1a1a244f JON4TH4N - requesting new template to test 2009-12-03 07:53:24 +00:00
wagic.the.homebrew@gmail.com e94bb52e35 Erwan
- adding some debugging stuff for the purple screen
2009-12-03 07:17:36 +00:00
wagic.the.homebrew@gmail.com ea3ed7061f Erwan
- Lords are now taken into account in AI statistics. (To display information, uncomment RENDER_AI_STATS in config.h)
- fixed a potential segfault with NoFizzle
2009-12-03 02:05:03 +00:00
solo81@web.de 88d771b3be Some corrections from last revision. 2009-12-02 21:06:41 +00:00
solo81@web.de 4d7468f854 Added a lot of damage prevention cards. This is related to rev1367. 2009-12-02 20:45:21 +00:00
wagic.the.homebrew@gmail.com b2d0940c5b Erwan
-adding Yeshua's code to record some GU values after init
2009-12-01 12:52:56 +00:00
wagic.the.homebrew@gmail.com dfbdd1e4e5 Erwan
-added WParsedInt (X, p, t, manacost) for "Draw" effects. See prosperity
- Fixed denizen of the deep (P02), it had broken the test suite, sorry for that!
2009-12-01 12:43:18 +00:00
wagic.jeck 023287f11b Jeck - Gah. Fixing Great Sable Stag's protection from blue. 2009-12-01 11:53:00 +00:00
wagic.jeck 2430aa66a6 Jeck - Added "nofizzle" ability (ala Great Sable Stag), please review.
I'm fairly certain this works as intended, cards with nofizzle "can be targeted by spells that try to counter it (such as Cancel). Those spells will resolve, but the part of their effect that would counter [it] won't do anything. Any other effects those spells have will work as normal."

Still, I don't work much with card logic, so it's possible this has some kind of unintended side effect.
2009-12-01 11:50:42 +00:00
wagic.laurent 90cf95d3d4 Laurent - Update DST (mistakenly removed the ID in my first upload). 2009-11-30 15:11:55 +00:00
solo81@web.de d6abd56454 Fixed Angry Mob (DRK). PLz read my comment below. 2009-11-30 14:05:29 +00:00
wagic.laurent 248d5eb171 Laurent - small update SOK (Deathmask Nezumi), CFX (Soul's majesty) 2009-11-30 12:24:45 +00:00
wagic.laurent 1d11a0ce2b Laurent - Update DST 2009-11-30 08:48:34 +00:00
wagic.laurent fa3e224ecf Laurent - update ATQ (added alias from RV and urza's mine,power-plant and tower). Update DRK (angry mob) 2009-11-30 08:45:16 +00:00
wagic.the.homebrew d7ce776d09 Erwan -Adding a few cards 2009-11-30 05:12:53 +00:00
wagic.the.homebrew 1d816b3277 Erwan
- P02
2009-11-30 04:41:58 +00:00
solo81@web.de d87a99d2e1 Added Borrowing the East Wind (PTK) 2009-11-29 21:15:55 +00:00
solo81@web.de 699e811364 Small fix from last revision. 2009-11-29 21:07:48 +00:00
solo81@web.de 80d6e455e5 Added huge amount of cards referring to Wololo's descriptions in rev1322. 2009-11-29 21:04:32 +00:00
solo81@web.de 3de03178ef Updated (DRK) 2009-11-29 19:51:57 +00:00
solo81@web.de 0cdfd2d8ee Added Respite (TMP) 2009-11-29 18:58:55 +00:00
solo81@web.de 348b926bae Added Darkness (LEG), Fog (M10,MIR) and Holy Day (10E,INV,LEG). 2009-11-29 18:31:53 +00:00
wagic.the.homebrew@gmail.com 1d38a4794d Erwan
- Adding Fog
2009-11-29 12:54:00 +00:00
solo81@web.de 2763acf9a9 Updated (BOK) 2 2009-11-29 11:32:43 +00:00
solo81@web.de 9c7d7a00ff Updated (BOK) 2009-11-29 11:31:41 +00:00
wagic.the.homebrew@gmail.com 1b6074277c Erwan
- Ilya B's Theme is now the default one, plese make sure everything works as expected.
- I moved the "original" theme in a "classic" subfolder
2009-11-29 09:13:15 +00:00
wagic.the.homebrew@gmail.com d2c4c18a7d Erwan
- update portuguese by Shinoobi
- update Italian by Icarus
- Wagic Manual Italian by Icarus
-removed test for purple screen, doesn't work :(
2009-11-29 06:45:50 +00:00
wagic.the.homebrew@gmail.com 5eb6256df6 Erwan
-Fix issue 223 by Yeshua. Thanks :)
2009-11-29 06:25:03 +00:00
wagic.the.homebrew@gmail.com 5af8d83c03 Erwan
- cleanup ingame music patch. Let's not use this patch until we fix issue 144 maybe?
2009-11-29 06:11:02 +00:00
wagic.the.homebrew@gmail.com ec553ddfb8 Erwan
- Yeshua's patch for ingame music
2009-11-29 05:52:12 +00:00
wagic.the.homebrew@gmail.com b275b6f758 Erwan
- JGE bug fixes (network)
- increased the size of kernel ram. 2048 might bee too much though, let's see if we can go with 1024
2009-11-29 04:44:38 +00:00
leungclj 3f21dad546 JON4TH4N - Contaminated Bond may be codeable, please check 2009-11-28 16:26:42 +00:00
leungclj 19da9e09a4 JON4TH4N - few bug fix 2009-11-28 16:16:52 +00:00
Psyyringe 459eef4435 Psyringe - fixed Tempest (POR). Thanks to furiousone for finding the bug and providing the test script. 2009-11-28 08:51:37 +00:00
solo81@web.de 2c61270000 Updated (ANT)
Added Aether Mutation, Death Mutation and Death Grasp (APO)
2009-11-27 22:09:59 +00:00
solo81@web.de b5b1573bfa Updated (ARN) 2009-11-27 20:28:55 +00:00
solo81@web.de f189ef5e3c Added cards with "cantregenerate". 2009-11-27 14:22:12 +00:00
solo81@web.de 45d67f9f4d Removed Gorilla Titan (ODY) 2009-11-27 13:23:45 +00:00
solo81@web.de fb55e8a4b3 Removed Synod Centurion (5DN) 2009-11-27 12:46:42 +00:00
solo81@web.de 0228b32547 Small fix (PTK) 2009-11-27 12:44:12 +00:00
wagic.laurent 61a06ab40f Laurent - update SOK 2009-11-27 12:29:42 +00:00
wagic.laurent 0974d1b1bd Laurent - TOR update 2009-11-27 11:41:52 +00:00
wagic.laurent 28e6d64426 Laurent - Small correction 5DN 2009-11-27 11:20:50 +00:00
wagic.laurent de789f6f02 Laurent - CSP update 2009-11-27 11:17:06 +00:00
Psyyringe 2817925f0d Psyringe - Added Goblin Lackey (USG) and 4 scripts to test its functionality. Also improved the test script for the Spirit Link bug (issue 173) a bit. 2009-11-27 07:09:06 +00:00
wagic.the.homebrew@gmail.com 0e49fde01a Erwan
- Fix issue 222 (Glen Elendra Archmage)
2009-11-26 23:03:47 +00:00
Psyyringe cdb3248a95 Psyringe - added test script for issue 222. 2009-11-26 10:30:25 +00:00
Psyyringe 75bf91127a Psyringe - added test script for issue 210. 2009-11-26 09:54:40 +00:00
Psyyringe 2175359378 Psyringe - fix for issue 217. Curiosity now works correctly by means of the new mytgt keyword. Test scripts which check the behavior of Curiosity when cast an one's own creature, and when cast on an opponent's creature, have been added. 2009-11-26 07:16:17 +00:00
Psyyringe 89e894da75 Psyringe - Fix for Ekundu Cyclpos, as suggested by Dr. Solomat (thanks!). This fixes issue 218. Test Scripts added to ensure that the card keeps working correctly in the future. 2009-11-26 05:38:49 +00:00
Psyyringe d0e5f3c24c Psyringe - added test scripts for issue 221. 2009-11-26 04:03:08 +00:00
Psyyringe 15ce94ceaf Psyringe - fixed Dark Banishing (MIR). The bug has been reported before, but it only occurred on the MIR version of the card, which is the reason why it eluded us so far (the ICE and TMP versions work correctly). 2009-11-26 00:21:09 +00:00
wagic.the.homebrew 22875def74 Erwan
- Small card fixes
2009-11-25 04:18:20 +00:00
Psyyringe f58c1e5537 Psyringe - Cremate: Changed line "auto=draw:1 control" to "auto=draw:1 controller". I haven't tested it, but according to the docs, "control" is not a keyword and thus wouldn't be recognized, so I guess the original line was a typo. 2009-11-25 00:43:48 +00:00
wagic.superhiro 9f36bcb145 Fixed more Cantrips. 2009-11-23 16:59:35 +00:00
wagic.superhiro 1888a4bee2 Fixed a lot of cantrip cards that sometimes used to draw a card for the opponent. 2009-11-23 16:58:00 +00:00
wagic.the.homebrew@gmail.com 66a505969e Erwan
- fix issue 215
- added test for purple screen (this is the small white square on top of the loading screen)
2009-11-23 08:25:27 +00:00
wagic.jeck e364b17117 Jeck - Fix to issue 181, SimplePad now strips all trailing whitespace before returning results. 2009-11-23 06:20:21 +00:00
wagic.jeck f4f11f9018 Jeck - Quick fix to issue 212. I'll do some debugging to make certain there aren't any other causes, but this is the major problem-- language and theme options had the same id, so were saving in the same place. 2009-11-23 05:50:42 +00:00
wagic.the.homebrew@gmail.com 8d673065f8 Erwan
- Initial Portuguese translation provided by Shinobi. The file unfortunately contains characters beyond the first 128 ascii ones, that will need to be updated
2009-11-23 04:29:58 +00:00
wagic.the.homebrew@gmail.com a2ba31c6e5 Erwan
- Added missing "cantregenerate" ability
2009-11-22 01:14:24 +00:00
solo81@web.de 8701ad0f37 Small fix from last revision. 2009-11-21 14:24:41 +00:00
solo81@web.de 171eaf0234 Added lots of cards with protection from non-color stuff. 2009-11-21 14:22:47 +00:00
wagic.the.homebrew@gmail.com ac50198962 Erwan
-random cleanup
-fix issue 180 (for AI issues) by exchanging the two lines
2009-11-21 14:01:02 +00:00
wagic.the.homebrew@gmail.com e1720415d1 Erwan
-adding script to reproduce issue 206
2009-11-21 13:29:55 +00:00
solo81@web.de 67fe3a71de Fixed issue 190 by fusing Bravados auto lines. 2009-11-21 13:24:31 +00:00
wagic.the.homebrew@gmail.com 734c7e6496 Erwan
- Actually fix issue 142
2009-11-21 10:06:32 +00:00
wagic.the.homebrew@gmail.com f924546dcc Erwan
- Code cleanup
- fix issue 142 . This will lead to other issues for some cards. These issues can be fixed by using targetcontroller/controller...etc
- Added a few cards
2009-11-21 09:40:14 +00:00
wagic.the.homebrew@gmail.com da9a82cff4 Erwan
- removed some unused code. Please review!
- Added protection from() auto keyword. It is still possible to use protection from [color] in abilities, but when it is not possible, please use protection from([target]) in auto=
2009-11-21 07:26:26 +00:00
wagic.the.homebrew@gmail.com a7a3ecb596 Erwan
- remove dead code
2009-11-21 03:24:31 +00:00
Psyyringe 34d66e9a99 Fixed some ID conflicts: Spark Elemental (5DN); Lu Su, Wu Advisor (PTK), Pang Tong, "Young Phoenix" (PTK)
Fixed ignored auto= rule (was spelled autO=) in Matopi Golem (VIS)
2009-11-19 21:55:04 +00:00
solo81@web.de a688b08dac Added some cards (5DN) 2009-11-19 21:44:08 +00:00
solo81@web.de 34ad06322a Updated JUD 2009-11-19 21:21:26 +00:00
solo81@web.de 6701e8f2e9 Added many cards with horsemanship (PTK) 2009-11-19 19:49:10 +00:00
solo81@web.de be3903f350 New, more elegant coding for Covetous Dragon, Emperor Crocodile and Tethered Griffin (UDS) 2009-11-19 18:30:58 +00:00
solo81@web.de 69a380ce9c Added huge amount of cards with Threshold (ODY) 2009-11-19 10:38:24 +00:00
wagic.jeck a96b3b50aa Jeck - Quick fix to r1305. Because card text is only loaded on reboot, language can not be a per profile option. Switching profiles would result in partially translated cards. 2009-11-19 09:58:12 +00:00
solo81@web.de e4b3502ada Added "myTurnOnly" keyword to some cards (PTK) 2009-11-19 09:42:27 +00:00
solo81@web.de d94367b400 Reordering code for Star Compass (PLS) 2009-11-19 09:34:36 +00:00
solo81@web.de ab93e9517e Fixed issue 202 2009-11-19 09:31:47 +00:00
wagic.jeck 101854af77 Jeck - Small fix to r1305. This still leaves card text untranslated, but at least clears the translated text out of memory.
The thing complicating a "100% functionality" fix for this is that all translation changes are destructive- they overwrite the original text. We want this behavior, as it prevents having two sets of strings in memory (the untranslated and translated sets) when card text currently takes hundreds of kb... however, to switch languages we'd want the original text available, which means reloading all the set files. That's not optimal either...

As it is, the player must reset their PSP for translated card text. Again, not optimal. I'm submitting an issue on this topic.
2009-11-19 09:27:11 +00:00
solo81@web.de cd7d711449 Fixed issue 200. 2009-11-19 09:27:00 +00:00
solo81@web.de 54e78ee604 Fixed Mind Shatter (MOR)
Fixed Sculpting Steel (10E,MRD)

Fixed Kris Mage (MRQ)
2009-11-19 08:55:43 +00:00
Psyyringe a70df07fb8 Psyringe - fixed Star Compass (PLS). Thanks to user Jeremy for bringing the problem to my attention. 2009-11-19 03:48:38 +00:00
wagic.jeck e27fbac7be Jeck - Language is now a per-profile option settable in the options menu. Also, game no longer crashes when no language files are present. 2009-11-19 03:13:55 +00:00
wagic.jeck 0085c9b548 Jeck - Quick fix to issue 198, options loading. Unknown options are now preserved: this should prevent any future options lossage... assuming the file loads properly. 2009-11-19 01:58:18 +00:00
wagic.jeck 68ecdb0d05 Jeck - Fix a PSP compiler error. (I'd never heard of an "X will be initialized before Y" error before, but the compiler is always right :) ) 2009-11-19 00:14:03 +00:00
solo81@web.de 775f64edda Updated 5DN 2009-11-18 22:03:59 +00:00
solo81@web.de da2e13c589 Updated PTK 2009-11-18 21:51:17 +00:00
solo81@web.de af53bd447a Updated WTH 2009-11-18 21:35:17 +00:00
solo81@web.de 73a8313785 Updated PLS 2009-11-18 21:17:22 +00:00
solo81@web.de 6a0d85c72d Updated PLS 2009-11-18 21:06:12 +00:00
solo81@web.de 015b74518f Updated APC 2009-11-18 20:58:56 +00:00
solo81@web.de a5113d5bd3 Updated ULG 2009-11-18 20:51:06 +00:00
d32.wagic 46e21fb94d Daddy32 - Fix for issue 196. 2009-11-18 20:37:42 +00:00
leungclj ad5aa10ed6 JON4TH4N - corrected r1293 2009-11-18 18:35:52 +00:00
wagic.the.homebrew@gmail.com 1d55211245 Erwan
- Added ">" and "<" for foreach and aslongas. Can be used to code threshold cards. See black vise (RV) and korsan beast (ODY)
2009-11-18 14:37:28 +00:00
wagic.the.homebrew@gmail.com 7f9d22e0aa Erwan
-fixed a memory leak
- Added P02 and PTK 
- New way to create tokens in the parser, much more flexible, see the Hive in RV. Tokens can now be written as other cards, with a rarity of "T". I suggest their id to be the negative value of the card that generates them when possible. Naming convention for images is the same as before: a negative id such as -1138 will need a [id]t.jpg image (1138t.jpg). Positive ids work as "normal" pictures
2009-11-18 13:14:08 +00:00
wagic.jeck ca4c1ca2a8 Jeck - Removed WOTC trademark cheat profile. 2009-11-18 10:24:43 +00:00
wagic.jeck 37ad16d90e Jeck - Basic set metadata support. Also a minor improvement to WGuiImage.
* Metadata is currently only used in exactly one place: the set's "Pretty Name" is displayed when the set is first unlocked. 
* WGuiImage now has a function to set scaling.
2009-11-18 09:27:24 +00:00
leungclj 2f327edb6a JON4TH4N - resolve issue 197 2009-11-18 09:15:46 +00:00
wagic.jeck a2c8637a3e Jeck - Resolve issue 183. Momir decks are now automatically generated. 2009-11-18 02:07:33 +00:00
Psyyringe 5558cae58b Psyringe - added 3 test scripts for (non-reproducible) bug reports. Also fixed a stray space after the name of a ZEN card. Due to this space the card would never be found when read in from a deck file, the card name in the deck file could never match the card name in _cards.dat. 2009-11-18 01:26:52 +00:00
wagic.jeck 2204c097aa Jeck - Fixed a debug-mode crash.
* Crash was caused by null pointer dereference after card ID conflict deletes tempCard.
2009-11-17 23:05:24 +00:00
wagic.jeck 51525d4ab8 Jeck - Fixed ID collision on Thieving Magpie (was using ID from 10E, not UDS) 2009-11-17 22:52:40 +00:00
solo81@web.de a4f30a3cd2 Added UDS (0.9.1 updated) 2009-11-17 17:09:28 +00:00
leungclj bc70b965f5 JON4TH4N - (NMS) changes applied also to other set 2009-11-17 08:40:16 +00:00
leungclj 9e593379d3 JON4TH4N - (NMS) addition of cards, please review since its been awhile, a little rusty. 2009-11-16 23:15:36 +00:00
wagic.the.homebrew@gmail.com 1d1bcef983 Erwan
- Adding most missing sets. _cards.dat only contain 1 card so that the file is not submitted empty, but other than that...hundreds of cards to add... feel free to copy/paste existing files from the forum if you trust their content
2009-11-16 13:54:06 +00:00
Psyyringe 013b9ff91f Psyringe - r1273 reverted my additions/changes to _tests.txt. I don't see a reason why we shouldn't have the four added scripts in the test suite, so I assume this was an oversight in yesterday's rush of additions, and provide a merged version here. If the scripts were removed from the list for a reason, please revert this change and explain. :) 2009-11-15 17:41:41 +00:00
solo81@web.de bf7fd76728 Added Mindless Automaton and Workhorse (EXO) 2009-11-15 13:15:32 +00:00
solo81@web.de 7a6ee562c2 Added Putrid Leech (ARB) 2009-11-15 12:21:49 +00:00
solo81@web.de f639ecf16a small corrections 2009-11-15 12:06:43 +00:00
solo81@web.de e8fbdd7b66 small corrections, added some cards with {0} activation cost 2009-11-15 11:58:42 +00:00
wagic.the.homebrew@gmail.com 04a950c911 Erwan
- fix issue 172 (crystal rod)
2009-11-15 10:37:33 +00:00
wagic.the.homebrew@gmail.com d85b1d66de Erwan
-fix issue 187 (Double Strike + First Strike)
2009-11-15 10:23:37 +00:00
wagic.the.homebrew@gmail.com f6a75a0e43 Erwan
- Fix issue 194
- Attempt at doing basic AI tests
2009-11-15 09:31:33 +00:00
Psyyringe 072c3d15d5 Psyringe - added some cards with zero activation cost: Blinking Spirit (ICE), Hyalopterous Lemure (ICE), Hopping Automaton (USG), Flowstone Hellion (STH), Viscid Lemures (TSP), Jodah's Avenger (PLC). Added couple of scripts to the test suite to make sure that the creatures work, and keep working. 2009-11-15 04:55:40 +00:00
Psyyringe 203967cb2f Psyringe - added new myTurnOnly keyword to some creatures. 2009-11-14 23:35:05 +00:00
Psyyringe bc7681e78c Psyringe - added test scripts for issue 188, issue 192, issue 193. Removed Sonic Burst and Acceptable Losses (as oer wololo's forum post), both cards could be cast from an otherwise empty hand without discarding a card. 2009-11-14 23:03:27 +00:00
wagic.the.homebrew@gmail.com e2d282637c Erwan
- Activated abilities can now use the extra "myTurnOnly" keyword
- {0} Activated abilities should now work
- Fixed issue 166 (instill energy)
2009-11-14 14:17:01 +00:00
Psyyringe 0d4a767303 Psyringe - relocated some more currently unused test scripts. Fixed a syntax error in script "ebony_horse.txt" - the command is "endinterruptin", not "endofinterruption". The latter didn't do any harm in this script, but we're encouraging people to look at existing scripts for inspiration, so we should make sure that they only use correct syntax. :) Also "fixed" alphabetic order of tests in _tests.txt (very minor thing, but it helped me discover that one test was unnecessarily run twice - I probably introduced this duplication myself). 2009-11-14 13:19:00 +00:00
wagic.the.homebrew@gmail.com aa2121e4fa Erwan
- Fix issue 156 (artifact colors)
2009-11-14 13:15:22 +00:00
wagic.the.homebrew@gmail.com dc5195a475 Erwan
-Fix alluring Siren (issue 177)
2009-11-14 12:54:09 +00:00
Psyyringe 5ffe7c3b00 Psyringe - created new folder "wontfix" for the Test Suite. This folder is for tests that were written for things that currently don't work and that we currently won't fix either. Nevertheless it's good to have the tests available in case some of these problems become fixable later on.
There were a couple of scripts in _tests.txt which were commented out for this reason, I moved them to the new wontfix folder too. I think it's cleaner and easier mto maintain to only have tests in the "tests" folder which actually work and are meant to succeed.
2009-11-14 12:36:12 +00:00
wagic.the.homebrew@gmail.com 852d88233f Erwan
- remove Glimpse of Nature (CHK)
2009-11-14 11:39:54 +00:00
wagic.the.homebrew@gmail.com 9ca552093e Erwan
- Added "PreventAllCombatDamage" [from(...)] [to(...)] keyword. Please test it on a few cards before we "mass" use it. As a side effect, fixed issue 155 (ebony horse target).
2009-11-14 11:35:29 +00:00
wagic.the.homebrew@gmail.com 5781060d83 Erwan
- fix issue 179 (@movedTo battlefield triggers when a creature changes controller)
- fix issue 176 (Ray of Command)
2009-11-14 08:28:29 +00:00
wagic.the.homebrew@gmail.com 7b2ac9e610 Erwan
- added "targetplayer" functionality to ManaProducer objects. As a collateral benefit, this fixes issue 191 (seismic spike)
2009-11-14 07:07:58 +00:00
wagic.the.homebrew@gmail.com 8390a94440 Erwan
- Language is now an option at startup
- "text" line translation for cards made easier, check Res/lang/xx_cards.txt
- TODO: test on PSP/Linux, performance issues ? Allow possibility to change language in options menu
2009-11-13 16:10:06 +00:00
Psyyringe 3b49f65958 Psyringe - last batch of test scripts from the wiki / forum / bugtracker cleanup. Wiki and bugtracker are now completely up to date. 2009-11-13 04:39:21 +00:00
Psyyringe 749f36419c Psyringe - minor fix for Fable of Wolf and Owl (EVE): Bird tokens generated by it didn't have flying. 2009-11-13 00:50:38 +00:00
Psyyringe d7f4cb66ad Psyringe - added test scripts for issues i176 - i182. Again added some more scripts that were written to verify bug reports (but where the card behaved correctly). 2009-11-12 17:29:00 +00:00
wagic.the.homebrew@gmail.com ce0051e545 Erwan
- fix issue 154 (dragon whelp)
- Fix issue 157 (erg raiders)
- fix issue 169 (living artifact)
- fix issue 159 (stonebrow) although I believe this card doesn't work correctly...
2009-11-12 13:57:22 +00:00
wagic.the.homebrew@gmail.com e059890446 Erwan
-reduced SFX Quality. This seems to fix the Bug with samples getting silent on the PSP (issue 112), and improves loading times. If you think this is unacceptable, let's discuss it
- AI now should play fetchlands' ability, although still not "efficiently"
- Fix a bug where the game would crash if a card has a valid alias to a hardcoded card that is in no _cards.dat (starwars mod cards aliasing a MTG card)
2009-11-12 11:39:47 +00:00
Psyyringe efc01b6ddc Psyringe - very minor addition to POR: added the missing 4th Swamp, Island, and Mountain. 2009-11-11 23:51:19 +00:00
Psyyringe b9b9180898 Psyringe - minor fix for Gamble (USG). The sequence of actions was wrong - you first search for a card, put it into your hand, and THEN discard a card at random. This means you may end up discarding the card you just searched for. Previously that wasn't possible, so the card was more powerful than it should be, especially when played from an otherwise empty hand.
Test script "gamble.txt" added to test suite.
2009-11-11 22:51:52 +00:00
d32.wagic 6de1856698 Added mana production statistics to the deck viewer.
Two new screens (5,6):
5.) Counts of manasources per color and type.
- Basic lands
- Non basic lands
- Other source
6.) Focusing on mana produced by lands only, displaying amounts of each mana potentialy produced graphically, along with percentages - to be easily compared with following screen (detailing mana cost per colors)
2009-11-11 21:19:11 +00:00
wagic.jeck 5e9da1634e Jeck - Small update to Jade's unused files, reducing pixel size to bare minimum.
I'm back from my break :). I've been using these files over the past few weeks to no ill effect, so have uploaded them here. This is what I've been doing with the other gemstones, as well. I'll look into more elegant solutions later.
2009-11-11 02:38:32 +00:00
Psyyringe 71160be490 Psyringe - minor fix: Shadowmage Infiltrator (ODY) was missing the Fear keyword. 2009-11-10 22:31:20 +00:00
Psyyringe ba460dfcf3 Psyringe - added test suite scripts for i169 - i175, Added several non-bug scripts. Replaced symbiotic_wurm.txt - it now tests token generation after the wurm has been killed. Removed description mentioning Akron Legionnaires which had nothing to do with the rest of the script. Renamed volcanic_island.txt to volcanic_eruption.txt since the script actually has nothing to do with Volcanic Island, updated in-script description as well. Corrected erroneous "endinterrupt" command in three scripts to "endinterruption".
(I actually spent half an hour fiddling with my first interruption script, because the tutorial on the blog doesn't mention the any command to end interrupt sequences. Then I checked the "Counterspell" script, was happy to find the "endinterrupt" keyword, and fiddled for another 30 minutes with it before I found out that this keyword is actually wrong and the parser doesn't understand it at all, it just so happens that the Counterspell script (and two others) work nevertheless because in these scripts the interruption doesn't need to end. I wholeheartedly agree with the passage in wololo's mail in which he says that we could use a "real" test suite tutorial / reference.
2009-11-10 05:50:11 +00:00
Psyyringe 7121958efa Minor fix to DIS, two creatures were missing the Flying ability keyword. 2009-11-09 02:39:53 +00:00
Psyyringe ff008059e8 Psyringe - added test suite scripts for issues i163 to i168.
Also added two scripts that don't demonstrate bugs (apparently the bug reports that I used to write the scripts were either false or outdated). nevertheless it doesn't hurt to have these scripts in the test suite, it prevents us from breaking something for the respective cards in the future and not noticing it.

The script fear_i147.txt has been moved into the "generic" folder and added to the regular test sequence for the same reason.

Also fixed the script generic/tokens.txt. It was referencing The Hive once via name and once via ID. This caused problems when (unofficial) Beta edition _cards.dat was installed.
2009-11-08 21:34:24 +00:00
Psyyringe 62eddef65b Psyringe - added bug test scripts for i159, i160, i161. 2009-11-08 04:59:20 +00:00
jean.chalard 073070c9b9 J :
* Add a symbolic link to help running with PSPlink.
2009-11-08 02:55:14 +00:00
Psyyringe 7ea4258a21 Psyringe - fixed a bug with Aura Mutation (INV) - it only targeted auras, but should target all enchantments. Test suite script for Aura Mutation has been added and activated. Please check, this is the first time I'm doing changes to a _cards.dat file.
Also fixed a typo in Argothian Swine (USG) (missing capitalization) which caused the card not to be translated.
2009-11-08 00:32:40 +00:00
d32.wagic af343a4a7f Some additions to the deck statistics.
- Displaying title for each page
- In screen showing games against AI, displaying actual number of games won/played in addition to percentage
- Added two new screens (3,4) - mana cost/color breakdown for creatures (3) and non-creature spells (4)

More to come...
2009-11-07 20:04:09 +00:00
wagic.laurent 245cfc625c Laurent - Bug corrections ICE: Enervate, removed: Forbidden Lore, Krovikan Fetish (@next upkeep works same as @each upkeep not really a bug since only this card as such effect). ODY Squirrel mob (wrong p/T). 10E tentatively fixed Twitch (not sure about it yet) POR: Fixed devastation, changed Vampiric Touch (to better reflect the card wording) 2009-11-07 18:25:38 +00:00
wagic.laurent d31c0b2f97 Laurent - small correction ID of Kokusho (CHK) 2009-11-07 14:06:49 +00:00
solo81@web.de b4dc38f4d9 Some card fixes. 2009-11-06 12:28:32 +00:00
wagic.the.homebrew@gmail.com a43c779d1f Erwan
-fixed graphical glitches in the shop when going to fullscreen (issues with bilinear filtering, as usual...)
2009-11-04 13:53:01 +00:00
wagic.the.homebrew@gmail.com f33d37d9f2 Erwan
-attempt at fixing shop crash introduced in r1231 (size needed in ram divided by 4)
2009-11-04 13:33:21 +00:00
Psyyringe 500c1fc1a2 Psyringe - major update/rewrite for the German translation. Added a lot of missing strings, removed some obsolete ones, corrected some spelling / grammar / translation mistakes, addressed the player consistently with the informal "Du" (previously there was a mix of "Du" and the more formal "Sie"), added the cards from M10, PLC, and ZEN along with their German names, repaired a wagonload of lowercase umlauts in the existing card names (please use case sensitive fuctions when replacing umlauts), and provided translations for all 251 types, subtypes, and supertypes in the game. Also, totally restructured the file so that it now follows the structire of the in-game menus. I think the file is in good shape now and might be useful as a base for other translation efforts. I can't guarantee that I caught every single string, but I'm pretty sure that this is now the most complete translation available.
Please note that I don't plan to update this file for future Wagic versions, so if anybody wants to take over, please do. :)

Some files were updated in the process:

- CardGui.cpp - exposed the card rarity info on the alternate render cards to the translation engine. Also switched the color of said info to white on green and blue cards, imho they are much easier to read now.

- GameStateDeckViewer.cpp - exposed the term "Collection" (shown under the scrollbar) to the translation engine.

- GuiPhaseBar.cpp - exposed the strings denoting "your turn", "opponent's turn", "you play", "opponent plays", to the translation engine.

- SimplePad.cpp - exposed the special keys ("Spacebar", "Confirm" etc.) to the translation engine. Had to increase the keypad width to make room for "Abbrechen" (Cancel). I couldn't translate it differently because there's also a *spell* called cancel, and to have a different translation in SimplePad, I would have had to change the official German name of the Cancel spell, which wasn't an option.

- MTGAbility.cpp - exposed the words from which the text of mana-producing abilities is constructed to the translation engine. Please review this one and suggest a better solution - the one I chose is somewhat awkward. The translation works, but when the whole translated sentence is constructed and gets returned, the calling procedure tries to translate it again (all other ability descriptions work this way, translation takes place *after* the string has been returned). However, for mana producing abilities this doesn't work, since the costructed string can take an infinite number of diffeent forms, depending on the mana produced, and we can't translate that. Hence I chose to translate the individual words during construction, with the described side effect that the engine now tries to translate them again later in the process (and the sentence ends up in missing.txt).

- Also, cheat mode menu items now aren't denoted by the ugly "(cheat)" appended to them, instead they are enclosed by asterisks. Uses less space.
2009-11-03 22:25:16 +00:00
wagic.jeck ffa8408a5f Jeck - The shop anti-aliasing stuff is rendered inside of shop->Render(), so that it renders on top of the cards, but under other UI elements handled by ShopItems (the price dialog, etc). Moved the light flicker inside of ShopItems instead (for now, as this is pretty damn inelegant). As far as the 5551 issue goes, I don't see how using a jpeg would do much harm, but leave the decision up to others :) 2009-11-03 20:55:04 +00:00
wagic.laurent 7f0f632b2c Laurent- Fixed Spontaneus Generation (MRQ) 2009-11-03 10:56:14 +00:00
wagic.the.homebrew@gmail.com 60e9b2c1df Erwan
-fix issue 146
2009-11-03 10:31:57 +00:00
wagic.the.homebrew@gmail.com d2bcb90799 Erwan
-fix for issue 120
2009-11-03 10:12:01 +00:00
wagic.the.homebrew@gmail.com a7034bbcb4 Erwan
-Fix mark of mutiny
2009-11-03 09:37:44 +00:00
wagic.the.homebrew@gmail.com 9de98c3032 Erwan
- "Fix" issue 152. Please review. There is an extra cost when loading the shop...could probably be improved...the image is huge, and it's a png (so no 5551 improvement here...should we switch to a jpeg ?)
2009-11-03 09:18:52 +00:00
wagic.the.homebrew@gmail.com befb3f246b Erwan
- fix issue 149
2009-11-03 07:40:14 +00:00
wagic.the.homebrew@gmail.com ff947737dc Erwan
- Fix symbiotic beasts in ONS. IMPORTANT NOTE: the trigger keyword is @movedTo, not @moved ;)
2009-11-03 07:30:14 +00:00
wagic.the.homebrew@gmail.com 1d20f37ded Erwan
- fix issue 151 (I hope)
- small french translation Update
- Nezumi Cutthroat fix
2009-11-03 03:51:05 +00:00
solo81@web.de 7fd44a077e Fixed Undermine (INV) 2009-11-02 17:38:36 +00:00
wagic.jeck e10130b718 Jeck - Whoops. Forgot to make invisible cheats unselectable. Fixed. 2009-11-02 06:25:03 +00:00
wagic.jeck 6946544a2a Jeck - Minor language support fiddling, gui decorator for cheat-profile only options. 2009-11-02 06:15:37 +00:00
Psyyringe 779921a53f Psyringe - This revision adds "cheat mode", as suggested and pre-reviewed here:
http://wololo.net/forum/viewtopic.php?f=15&t=730

Although the feature is named "cheat mode", its main purpose is to provide a toolbox for content creators. Currently this means to help AI deck creators, but the cheat mode is easily extensible.

Features:
- To enable cheat mode, create a new profile with the super secret cheat name (shouldn't be hard to find - or just mail me if you don't want to look). Then, leave and re-enter the Options menu. You can now enable cheat mode on the first tab. Note: The secret profile name is *not* my original suggestion from the forum, I went with Jeck's alternative suggestion so that he won't have to cringe over bad puns everytime he's using it. ;)

- Complete collection: In cheat mode, there's a new option in the deck viewer, which makes sure that you have at least 4 of any card available.

- Deck integrity: When in cheat mode, and you load a deck with cards that are not present in your collection, then these cards won't be stripped from your deck any more. Instead, they are added to your collection.

- Money cheat: In cheat mode, when you click on an item in the shop, you get the option to steal 1,000 credits from the shopkeeper.

Please review my code - I just started with C++, I may make very obvious mistakes or use inelegant style. The sooner you point this out, the sooner I'll improve.

thanks to wololo and jeck for comments and suggestions.

Jeck: Do the setVisible and setHidden methods currently work? I tried to use them to hide a menu item, but they all seem to lead to empty methods - Perhaps placeholders for a not yet implemented functionality?
2009-11-02 04:27:14 +00:00
wagic.jeck 7a108c3604 Jeck - Additional deutsch language fiddling. 2009-11-02 00:30:04 +00:00
wagic.jeck 92a765b1ed Jeck - Updated German translation while testing options menu. Entschuldigung, Meine deutsche Grammatik ist nicht sehr gut... 2009-11-01 23:52:55 +00:00
wagic.jeck a4a19a1c9a Jeck - Fix to r1220. Apparently, _() doesn't like \n. 2009-11-01 23:13:30 +00:00
wagic.jeck 29219be4df Jeck - Added "# of unlocked sets" info to profile switcher, ran profile stats through _(). 2009-11-01 23:01:19 +00:00
wagic.jeck c501d96336 Jeck - TEMPORARY fix for AllAbilities, which was preventing PSP compilation. Please address this, as I'm not certain what the intended return value was. 2009-11-01 22:40:33 +00:00
wagic.jeck f3ad432d9b Jeck - Applied booster rarity sorting patch (issue 133), added horsemanship ability.
* The horsemanship ability literally required only one line of code, and could add an additional ~36 cards to Dr. Solomat's PT3 set. It seems functional, but someone please double check it anyways, as I've not worked with much of the actual game code yet.
2009-11-01 20:21:32 +00:00
wagic.the.homebrew@gmail.com 18293ba07c Erwan
-fix Issue 150 (hypnotic specter)
2009-11-01 12:15:37 +00:00
wagic.the.homebrew@gmail.com 5b92639cca Erwan
- Translation updates
- JGE: DrawString now allows std::string objects
2009-11-01 02:52:41 +00:00
wagic.the.homebrew@gmail.com efbfc0a1b9 Erwan
- Fix an uninitialized variable warning with JGE
- Added -O2 to JGE compilation
2009-10-31 13:41:17 +00:00
wagic.laurent b09f879140 Laurent - Removed reign of terror (MIR), corrected Merfolk Seastalker (ZEN), Beacon Hawk (DIS) 2009-10-31 08:17:45 +00:00
wagic.the.homebrew@gmail.com 01c949f881 Erwan
- Fixed a few tranlsation issues in the code
- Updated French translation
2009-10-31 07:58:21 +00:00
Psyyringe 41012eecde 2009-10-31 05:14:55 +00:00
leungclj 9e608d10b1 JON4TH4N - fixed (ZEN) Hideous End and similar card, there is a bug on targetcontroller, test included 2009-10-30 17:54:48 +00:00
solo81@web.de 3919b1cf1d Fixed Kazuul Warlord (ZEN) 2009-10-30 15:46:04 +00:00
solo81@web.de b1f52119a4 Fixed Winged Sliver (TMP) 2009-10-30 14:08:20 +00:00
wagic.the.homebrew@gmail.com d7dae0dcd9 Erwan
- Added -O2 option in the PSP Makefile. In my tests, this highly increases the probability of getting a purple screen. Fixing this bug is THE priority :)
2009-10-29 13:12:16 +00:00
wagic.laurent 32ab4a6c1c Laurent - small Card bug fix: Wall of Wonder (LEG); Sword of the Chosen (STH) 2009-10-29 11:36:45 +00:00
leungclj 7d838dbfb5 JON4TH4N - minor error 2009-10-28 23:08:03 +00:00
leungclj b201e1827b JON4TH4N - fixes from user "snaxington" 2009-10-28 23:06:02 +00:00
jean.chalard 0e4832dcd6 J :
* Fix a bug where a variable would be used uninitialized.
2009-10-28 18:51:53 +00:00
solo81@web.de 548a512776 Fixed Cursed Land (RV)
Yes, the card still does not for 100% do what the original card should do, but as long as no one will enchant a land of its own everything will be alright.
2009-10-28 14:36:16 +00:00
solo81@web.de 18982aa0d6 Fixed Scare Tactics cost (EXO) 2009-10-28 14:24:58 +00:00
solo81@web.de 7cadff6830 Fixed Wild Nacatl (ALA) 2009-10-28 14:17:25 +00:00
wagic.jeck 3347fd020b Jeck - Removed some unused bits of code, added zip support to themes' card overrides. @Jean, please check WResourceManager::dirOK() on Linux.
This needs some impact testing, to be certain it doesn't noticeably slow anything down. In a future version I'd like to memoize checking for zip file existence in each "Res/sets/XXX/" directory once during boot, and in the themed directory whenever switching themes.
2009-10-28 04:06:45 +00:00
leungclj 6279cc894c JON4TH4N - fixes from user "gdspsp" http://wololo.net/forum/viewtopic.php?f=4&t=739&start=20#p6388 2009-10-28 02:01:33 +00:00
wagic.the.homebrew@gmail.com 75b0044f11 Erwan
-Load shop and backdrop in 5551. @Jeck feel free to implement the "default as 5551" for jpegs as well if you think it's worth it. I think this change is the safest for the time being, but that's mostly because I'm too lazy to touch JGE
2009-10-27 13:50:31 +00:00
leungclj 3d918cc2b3 JON4TH4N - couple of fixes 2009-10-27 11:18:43 +00:00
wagic.laurent dfa7fbb5f8 Laurent - few card buggy card identified during playtest (random deck as usual) fixed. 2009-10-27 11:05:12 +00:00
wagic.jeck fea10bdf21 Jeck - Quad locking restored, minor cache fiddling.
* Restored quad locking to textures, but ignore quad locks when Release(JTexture*) is explicitly called. (I just copied and modified the code from the template, rather than do anything elegant). 
* Some minor fiddling with cache error states.
2009-10-27 07:00:16 +00:00
wagic.jeck daf3c249b7 Jeck - This commit does not actually change any graphics files (or at least, it shouldn't.). What it does do is strip all the EXIF data from these files, saving us around 20%... of the 1MB used by graphics. Minor, but should save bandwidth in the long run. 2009-10-27 06:40:10 +00:00
wagic.jeck f7d25cfe2e Jeck - Uncommenting the last resort code from r1192 (removes any misses for shop background when entering shop). 2009-10-27 03:09:02 +00:00
wagic.jeck fb7f48f26b Jeck - Please review: this makes minor changes to a lot of files, and major changes to the WCache flatten() function.
* Removed all calls to Release(JQuad*).
* Updated flatten(). Prior flatten was buggy beyond belief.
* Done some extensive testing, but if this causes more trouble than it fixes, we'll have to revert. It's too close to release time.
2009-10-27 02:46:39 +00:00
solo81@web.de 538248d979 (POR):
- Wording update
2009-10-26 17:40:46 +00:00
leungclj b5e049e1be JON4TH4N - apply the same change as r1189 2009-10-26 16:55:24 +00:00
wagic.laurent 0c79d97bd9 Laurent - Bug fixes - some buggy cards identified during playtest in random deck mode (great to test cards) 2009-10-26 15:13:28 +00:00
wagic.the.homebrew@gmail.com e762a5f983 Erwan
- revert r1187
- fix a bug with "@damaged" (see slith bloodletter test)
2009-10-26 13:31:30 +00:00
wagic.laurent 772ddd9ced Laurent - fixed a bug with @damaged.
Without this quick and dirty fix if you have 2 thieving magpie in play you get twice the bonus if only 1 deals damage (also you draw 2 cards instead of 1).
2009-10-26 13:20:08 +00:00
wagic.the.homebrew@gmail.com 36657b03ee Erwan
-Fix Basic Lands rarity in TSP
2009-10-26 12:42:44 +00:00
wagic.jeck 8e0bcef6e9 Jeck - Removed a ton of unreached or unused code from the cache, to make debugging easier. None of this actually effects execution at all. Some of these functions (though not many) are potentially useful, but as they aren't actually used there's no reason to have them cluttering up the files. 2009-10-26 05:55:52 +00:00
wagic.jeck eefd03ad84 Jeck - Reverting r1183. 2009-10-26 05:10:06 +00:00
wagic.jeck 8a6162ba15 Jeck - Please review.
Disconcertingly enough, this seems to resolve issue 109. Ran demo mode for 1 hour (w00t no crashes!), played five manual games, shop appeared fine... but why would an mObject ever be null? I'm not so sure about this commit. It "fixes" the issue, but doesn't do anything for the underlying cause. For all I know, I might just not have re-encountered issue 109 yet... still, it's not a /bad/ commit. In the worst case, it does some unnecessary sanity checking. There's potential for a a hang if item is NULL in Update(), if input doesn't get passed along in a way that allows the player to exit... But I think that's what the call to JGuiController::Update is for.

Thoughts?
2009-10-26 02:27:55 +00:00
leungclj 2d49747da9 JON4TH4N - couple of fixes 2009-10-25 19:14:07 +00:00
Psyyringe eaec76d22f Added two deck descriptions provided by Niegen.
Corrected non-working tags (lowercase characters) "Dragons" deck description.
2009-10-25 15:32:12 +00:00
wagic.the.homebrew@gmail.com dd7c307c7a Erwan
-Fix issue 107 as well as another issue with doesnotuntap mentioned by leungcl
-Changed wording for Paralyzing Graps (to match oracle), please verify
2009-10-25 14:01:25 +00:00
Psyyringe eab2086160 Changed the description (flavor text) in several AI decks. the old descriptions consisted of flavor texts of existing cards. Even though the flavor texts are often just a few words long, I'm pretty certain that this is copyrighted material, and before we go to great lengths to find out whether any interpretation of "fair use" would allow us to use them nevertheless, I think it's better to just remove them and come up with texts that we don't have to worry about.
Note: I used Google to match our deck descriptions with existing card flavor texts, and then used Google again to check whether the text was in the public domain (the fact that a verse from the Rime of the Ancient Mariner appears on the Scathe Zombies card, does obviously not preclude us from using Coleridge's work ourselves). I may have missed something in wither process, please report if I did.

For the time being, this is unfortunately a loss in quality, since the official flavor texts were obviously better than the replacement texts I thought up in a few minutes. Feel free to replace my texts with something better. This could be original work of yours, or something that's clearly in the public domain. The latter includes classical literature and poetry btw. We already have Milton, Browning, and Coleridge in the flavor texts, and we could certainly use more of that. Unfortunately I've read about 100 SciFi/Fantasy books for every book of classical poetry I even touched, so I'm in a bad position to provide such material, but perhaps someone else can.

I discussed this change with wololo beforehand, because it required changes to decks that weren't made by me.

Please review / criticize.
2009-10-25 12:12:19 +00:00
solo81@web.de b9f08bd69a Fixed Ethercaste Knight (ARB) 2009-10-25 11:17:40 +00:00
leungclj d04ce83c1b JON4TH4N - (ZEN) fixes Baloth Woodcrasher, it won't loss its +4/+4 ueot. I also did similar change to other cards, not sure if this has fix them, but sure it functions just the same, and less chance to have error. Please review, please. 2009-10-25 11:14:30 +00:00
wagic.the.homebrew@gmail.com 24ea5b7b6a Erwan
- Fix issue 42
2009-10-25 08:55:56 +00:00
wagic.jeck cc0b67fb17 Jeck - Fix to issue 136, which caused the "unlocked set/mode" noise to play regardless of SFX volume. 2009-10-25 07:19:42 +00:00
wagic.jeck 638d3940ca Jeck - Turns out background.png is no longer referenced anywhere in code. Deleted. 2009-10-25 05:06:30 +00:00
wagic.jeck 1df69fd490 Jeck - Batch script to copy resources on PC over to PSP. Does not copy SFX or settings/profiles. 2009-10-25 04:33:09 +00:00
wagic.jeck 0efb205469 Jeck - Final theme updates. Reverted backdrop.jpg to 255H, expanded wood.png to 32H, though only 28 are used (to prevent gray box issue). Also minor change to OptionItem.cpp so that themeinfo.txt loads on Default theme. 2009-10-25 01:37:23 +00:00
wagic.jeck 80be924614 Jeck - Some theme work. Reverted default theme background. Added Jade theme, mana colors for Inverted.
* In GuiBackground, we now load and use all of backdrop.jpg. This is for effects like that in Jade. It's an extremely minor change, so shouldn't effect stability.
2009-10-24 23:42:06 +00:00
wagic.the.homebrew@gmail.com 8d0f3a4c81 Erwan
- minor string corrections
2009-10-24 14:59:35 +00:00
wagic.the.homebrew@gmail.com 18ef910e6a Erwan
-"daily build" - Note: We recently switched to VC2008, so you might need to download the VC2008 runtimes
2009-10-24 14:32:53 +00:00
wagic.the.homebrew@gmail.com 6f1772e938 Erwan
-fix issue mentioned at http://wololo.net/forum/viewtopic.php?f=4&t=371&p=6296#p6296 . I touched a very sensitive area of the code so please let me know if something goes wrong with this revision with spells or abilities that involve targets and/or sacrifice
2009-10-24 14:15:08 +00:00
leungclj 97043870ed JON4TH4N - few fixes and tested, working now 2009-10-24 13:32:56 +00:00
wagic.the.homebrew@gmail.com 60845ee3b3 Erwan
- fix issue 111
2009-10-24 13:06:02 +00:00
wagic.the.homebrew@gmail.com fb52ea5452 Erwan
- fix for issue 113
2009-10-24 11:52:55 +00:00
wagic.the.homebrew@gmail.com da6d650c3d Erwan
-fix issue 128
2009-10-24 11:17:38 +00:00
leungclj e601d671ee JON4TH4N - couple of fixes 2009-10-24 10:53:42 +00:00
leungclj c00a93e0a6 JON4TH4N - (ZEN) fixes 2009-10-24 10:42:21 +00:00
wagic.jeck 2546b521b1 Jeck - Proposed alteration to the gameplay background.
* I've tried to keep the same kind of luminosity as the old backdrop.jpg, and matched the psuedo-jade to the colors of the phase icons. I'm still not certain what to do with wood/gold/goldglow, as they clash terribly. 
 * The whole "recessed playarea" thing was inspired by the recent forum posts of Kaioshin.

Thoughts, comments, suggestions, etc?
2009-10-24 07:01:46 +00:00
wagic.jeck 19913b8a63 Jeck - Quick spellcheck to r1159 2009-10-24 02:23:57 +00:00
wagic.the.homebrew@gmail.com b41a03f332 Erwan
- Updated credits, please let me know if I misspelled your name, or if I forgot someone you think is important (don't feel offended if I did, I have bad memory)
2009-10-24 01:54:01 +00:00
wagic.the.homebrew@gmail.com ed27514f73 Erwan
- Finally upgraded the project to VC2008. People who are still on VC2005 need to download VC2008 (it's free)
2009-10-24 01:42:37 +00:00
leungclj 8556956bcf JON4TH4N - addition to r1156 2009-10-23 21:01:52 +00:00
leungclj e5576ab5c2 JON4TH4N - minor fix 2009-10-23 21:01:23 +00:00
wagic.jeck fe70dbacc3 Jeck - Revised manual. Thanks Psyringe!
* The button icons are still too dark, you're right. I'll see what I can do about that later :)
2009-10-23 11:50:21 +00:00
wagic.jeck f117b04dea Jeck - And this is why I shouldn't code at 3 AM. Fix to r1152, which potentially closed a non-existent file descriptor. Not a major bug, but it's better to do it this way. 2009-10-23 07:29:21 +00:00
wagic.jeck c552a47087 Jeck - Fix to r1151, which left an open file descriptor. 2009-10-23 07:26:12 +00:00
wagic.jeck c87343a7f2 Jeck - Simplistic solution to issue 131. Reads only the first line of themeinfo.txt and uses the first 16 characters as the author name, if present. The rest of the file is completely ignored. Not exactly the most elegant solution, but I don't think we really need much metadata beyond who the theme's author is. My suggestion would be to let the authors use the rest of the file as a "Readme.txt" with whatever details they want to put in it. (Art credits, etc.).
The next version of Wagic will use XML-like themes, so I think it's alright to use such a non-extensible format.
2009-10-23 07:16:58 +00:00
wagic.jeck ddb9a166e4 Jeck - Rough draft of Wagic manual update. Please review for style, clarity, and content :) 2009-10-23 07:03:55 +00:00
Psyyringe dea29a8515 My uploading of the lower-case new deck49.txt has left the upper-case old DECK49.TXT still in the repository. I'm now deleting the old file from within the repo-browser. 2009-10-22 19:29:39 +00:00
Psyyringe fe866ee175 AI Deck audit finished. I applied 31 changes, many to decks that weren't mine, so please review and correct/improve where appropriate, thanks.
Change list:

Taiga: Power Surge not available any more, replaced with a third Orcish Oriflamme
Taiga: removed a stray "a" in the deck description

Savannah: 2x Benalish Hero not available any more, removed (deck has still >60 cards)
Savannah: 2x Mesa Pegasus not available any more, removed (deck has still >60 cards)

Plateau: only 59 cards, added a third Bull Cerodon
Plateau: corrected an (arguable) spelling mistake (goblin -> goblins)

Badlands: only 59 cards, added another Swamp (still only 19 lands in this deck)

Yavimaya: Timber Wolves not available any more, replaced with Scryb Sprites

Shatter: corrected a spelling mistake (you -> your)

Howlins: (supposedly) corrected deckname spelling to "Howlings"
Howlings: only 56 cards, added 2 Mountains, 1 Black Vise, 1 Howling Mine (would've been better to add creatures, but all creatures in the deck were already at 4 pieces)

Alliance: Corrected a spelling mistake in the deck description (castel -> castle)

Djungle: Corrected deckname spelling to "Jungle"
Jungle: Only 56 cards, added 1x Tundra Wolves, 1x Scryb Sprites, 1x Forest, 1x Mountain

Deep Blue: Only 56 cards, added 3 Islands (the comment read "24 Islands" but only 21 were present) and 1 Merfolk

Soldiers (deck24): 4x Balefire Liege not available any more, replaced with 4x Thistledown Liege. This card was not originally present in the deck, but all present cards already had 4 pieces in the deck. The replacement is also pretty weak, please change it if you find a better one.

Kithkin: Added a missing "#" sign

Soldiers (deck29): Renamed deck to "Vigilant Watch" to prevent confusion with deck24.
Vigilant Watch: Corrected a spelling mistake in the deck description (held -> hold)

Depletion: 52 cards, added 2x Swamp, 2x Island, 1x Psychic Drain, 1x Forced Fruition, 1x Tome Scour, 1x Traumatize

Spectral Rack: Corrected "Volrath's Stronghold (TMP)" to "Volrath's Stronghold (STH)"

Kinsbaile Cavalier: Sortened name so that it fits into the menu

Bad Dreams: Corrected "Font of Mythos (ALA)" to "Font of Mythos (CFX)"

Viashino Warrior: Viashino Bladescout not available any more, replaced with Viashino Sandscout

Ashenmoor Cohort: Corrected "Smoldering Butcher (CFX)" to "Smoldering Butcher (EVE)"

Treefolk: Corrected "Mirri, Cat Warrior (M10)" to "Mirri, Cat Warrior (10E)"
Treefolk: Corrected a spelling mistake in the deck description (hidding -> hiding)

Dragon: Changed filename to lowercase
Dragon: 2x Ashenmoor Liege not available, removed (deck still at 61 cards)
Dragon: corrected some spelling mistakes in the deck description (Dragon -> Dragons, wil -> will). Changed deck name to "Dragons" since it's evident from the deck description that plural was intended.

several of my decks: Corrected comments that weren't recognized as such (the "#" sign has to be the in the first column)

Notes:
Three decks have more than 60 cards: Savannah 62, Giants 64, Dragons 61. It's unusual, but no illegal, so I didn't change it. But I didn't see any particular reason for having additional cards in these decks either, so I'm bringing the matter to your attention.

Also, "Howlings" uses 2x Wheel of Fortune (erroneausly listed as "Wheel of Fate", which is a different card that's not yet implemented). Wheel of Fortune is restricted in Vintage. AFAIK we there's no official standing on whether or not AI decks should be Vintage legal, so again I'm leaving this as it is, but bring it to your attention.
2009-10-22 17:44:48 +00:00
leungclj dc5612e910 JON4TH4N - addition to r1141 2009-10-22 15:44:16 +00:00
leungclj 5ccda99be2 JON4TH4N - bug fix? not sure, but sure it will work 2009-10-22 15:38:13 +00:00
wagic.the.homebrew@gmail.com f0124ce53a Erwan
- fix issue 125 (Ondu Cleric)
2009-10-22 13:57:49 +00:00
wagic.the.homebrew@gmail.com 5ef7a5978f Erwan
-fix issue 116 (Borderland behemoth)
2009-10-22 13:15:46 +00:00
wagic.the.homebrew@gmail.com 2c1a44ed43 Erwan
-fix for issue 123 (Cockatrice)
2009-10-22 13:08:33 +00:00
Psyyringe 386bcf2bc7 AI Deck cleanup in preparation for the upcoming beta release:
1. temporarily removed my "Pyromancer" and "Terravore Turmoil" decks. Both performed very badly in my AI comparison done here: http://wololo.net/forum/viewtopic.php?f=3&t=736

While having low-performing decks is not a bad thing per se (actually we *need* some low-performers, as stepping stones for beginners), these two decks currently throw AI deficiencies into the face of the players (targeting problems / fetchlands), and we don't want to do that. Players should feel that they beat the low-perfoming decks because of their own improving skills, not because the AI can't play its own deck.

I'll re-add both decks after the next release, hoping that we can improve the AI until the release after that.

2. Added "Millage" and "Bad Dreams" decks by Niegen. I see that we are in "bug fixes only" mode since yesterday, but I had announced these additions to Niegen two days ago, and he liked the prospect, so I didn't want to cancel the additions.

3. Updated "Kobold Overlord" deck with two flyers, this is actually a week-old change that I just hadn't submitted so far because it was so minor.

I'll also do a general deck audit to prepare for the next release (respective task will be added to Googlecode tracker). Since we're in "bug fixes only" mode, I'll just fix some obvious mistakes - it's always tempting to do last-minute tweaks and improvements, but I wouldn't want a card or deck that was added late, and hardly tested, to cause problems after the release.

This means we can release the next version with 50 AI decks, more than double than the previous version (which had 24). :)
2009-10-22 11:20:49 +00:00
solo81@web.de 14fba35ebf (FEM):
- Wording update
2009-10-22 10:48:38 +00:00
solo81@web.de 1a3053d5d2 (ZEN):
- Some card corrections
- Readded Hedron Crab with altered auto-line (see comment)
2009-10-22 10:15:19 +00:00
wagic.jeck 4dc217edcb Jeck - Potential fix to issue 109, issue 112. Looks hopeful so far, please confirm (or confirm failure).
* We only want to record misses when the file doesn't exist. Item can be null if we're out of memory for whatever reason, resulting in an invalid miss.
2009-10-22 09:33:16 +00:00
leungclj 1c62c0450a JON4TH4N - (ZEN) removed my favorite Zen card.... 2009-10-22 07:26:07 +00:00
wagic.jeck f005aabe30 Jeck - Possible fix for issue 112. 2009-10-22 07:11:07 +00:00
wagic.jeck 34ef5016f5 Jeck - Possible fix for issue 109, issue 112. Please confirm.
* mError status was being reset properly. What I'm thinking happened is that somewhere along the line, a file would miss and return CACHE_ERROR_404. Then, cache.find() would fail because the file was not in the cache, but because mError wasn't reset it would still report CACHE_ERROR_404. In some cases, this would be overwritten (causing the flickering single frame wrong image), and in others this would erroneously report a miss. 
 * Tested through three demo games and three player games. Shop screen still shows, didn't notice any missing sounds.
2009-10-22 05:54:45 +00:00
wagic.jeck 3c84fe3830 Jeck - Fix for issue 126. System didn't reset "I'm using a premade deck" boolean, so would look in the wrong place for decks if profiles were switched after playing with a premade deck. 2009-10-22 05:16:14 +00:00
wagic.jeck 7d9d2907e5 Jeck - Copied avatar image into graphics folder. This solves an issue with new profiles not having an avatar. I suppose we could delete the player/avatar.jpg, but I think it's small enough that leaving it in as a "Oh, and I can put my own avatar here" reminder might be a good idea. 2009-10-21 23:27:18 +00:00
leungclj 879c8914aa JON4TH4N - (ZEN) fixed Nimbus Wings 2009-10-21 20:52:57 +00:00
leungclj f849051458 JON4TH4N - minor fixes 2009-10-21 14:48:46 +00:00
leungclj ec306ce615 JON4TH4N - (RV) fixed Fungusaur 2009-10-21 14:39:45 +00:00
leungclj 74401289a4 JON4TH4N - (ZEN) fixed Slaughter Cry 2009-10-21 14:38:17 +00:00
wagic.the.homebrew@gmail.com 3af15e9901 Erwan - 2nd part for issue 119 (bad commit) 2009-10-21 13:54:41 +00:00
wagic.the.homebrew@gmail.com c02f65eda2 Erwan
-fix issue 119
2009-10-21 13:53:53 +00:00
wagic.the.homebrew@gmail.com c1dc258ef0 Erwan - fix issue 118 2009-10-21 13:49:31 +00:00
wagic.laurent 8583d8a3d4 Laurent . Few additions with @damaged (ARB, ODY, RV) small correction (Idyllic Tutor from MOR) 2009-10-21 13:41:05 +00:00
solo81@web.de f928bd9443 - Fixed Ondu Clerics Cost (ZEN)
(ALA):
- Wording update
- Bug fixes
2009-10-21 11:59:37 +00:00
wagic.the.homebrew@gmail.com 68c0251824 Erwan
- fix Cage of hands typo
2009-10-21 11:15:27 +00:00
solo81@web.de e04153aa6a (ARB):
- Wording update
- Bug fixes
- Removed Nulltread Gargantua
2009-10-21 10:52:03 +00:00
wagic.jeck 6d62c013df Jeck - Fix for two obscure edge case bugs in the options menu.
* Confirmable options used to only check for confirmation when selecting another option. They now autoconfirm when saving & exiting. This bug could possibly result in loading the wrong theme. Fixed.
 * Changing profiles, canceling, then changing to the profile again could also result in improper theme loading. Fixed.
2009-10-21 02:34:29 +00:00
wagic.jeck 63ddbd52ad Jeck - Hopefully fixes issue 114.
* Options before the desired optionID were not using the correct option class.
 * Enums were expected to be lower-case.
2009-10-20 16:54:53 +00:00
wagic.the.homebrew@gmail.com 83bc12a275 Erwan
- Fix issue 102 (Rampage not working correctly)
2009-10-20 13:24:12 +00:00
wagic.the.homebrew@gmail.com 771b6d75be Erwan
- fix for Dromad Purebred and other @damaged effects
2009-10-20 11:22:12 +00:00
solo81@web.de 0de8a1bef4 Several card corrections 2009-10-20 10:27:04 +00:00
solo81@web.de 878eaa385f Reduced Dromar Purebreads code (RAV) 2009-10-20 08:43:53 +00:00
wagic.jeck 8c4c3f2418 Jeck - Final fix to r1109. It was reloading the old options halfway through saving the new ones. 2009-10-20 04:33:43 +00:00
wagic.jeck 3a4dd403e2 Jeck - Quick fix to r1109. 2009-10-20 04:14:13 +00:00
wagic.jeck 7f7320f904 Jeck - Some basic options handling rewrites, main menu update, example alternate theme (for testing). I'm closing issues 44 and 45, as hopefully this resolves them satisfactorily.
* The alternate theme is just useful for testing themes, but please comment on the changes to the main theme.
 * Options reading and initializing separated from UI.
 * Options UI abstracted a bit, made more easily extensible.
 * With some extension, the options UI could be used as the basis for more complicated themes, if we load a file and use it to do stuff like GameStateOptions::Start()
2009-10-20 03:46:18 +00:00
wagic.laurent af41e28180 Laurent - small set additions/corrections 2009-10-19 21:12:16 +00:00
wagic.the.homebrew@gmail.com 9d55a43ef0 Erwan
- fix for issue 108 (mana icon disappears)
- potential fix for issue 110 (victory bonus texts). Need to check
- Fix for issue 100. A better solution would be to "stretch" the cards in hand the way it is done for the rest of the game, but this will do for now as it is a border case
- Fix for issue 55. We'll remove 2 players mode for now, and put it back when/if we get network play
2009-10-19 13:48:09 +00:00
jean.chalard 77a00a3c4d J :
* Some cleaning after r1062 code review.
- Remove code that was never reached.
- Remove a useless function.
- Make GuiPlay treat cards that are both spells and creatures as
  creatures and not spells.
2009-10-19 13:36:42 +00:00
wagic.the.homebrew@gmail.com 273b0672e4 Erwan
- various optimization fixes
2009-10-19 11:37:47 +00:00
wagic.jeck d557dde656 Jeck - Whoops, committed the wrong quality gold.jpg. Sorry about that. 2009-10-19 00:30:42 +00:00
wagic.jeck 0e885e548a Jeck - Greener gold.jpg. Had this one laying around for awhile, thought I'd finally commit it. 2009-10-19 00:26:19 +00:00
wagic.laurent 0bc7322277 Laurent - Added 2 AI deck (treefolk and Dragons). + re-added behemoth to giant deck (22) 2009-10-17 17:08:38 +00:00
wagic.the.homebrew@gmail.com cf0bb89ff7 Erwan
-fix typo
2009-10-17 14:00:02 +00:00
solo81@web.de 6e400dd510 (CFX):
- Small corrections
- Removed Progenitus
- Added Charnelhoard Wurm
2009-10-17 12:51:59 +00:00
solo81@web.de 1f577d615f (CHK):
- Wording update
- Bug fixes
- Added some cards
2009-10-16 20:13:59 +00:00
solo81@web.de bfd819d95a (EVE):
- Wording update
- Bug fixes
- Added Chaotic Backlash
2009-10-16 19:22:28 +00:00
solo81@web.de d08bdecedb (EXO):
- Wording update
- Bug fixes
- Added some cards
2009-10-16 18:35:33 +00:00
solo81@web.de 379a60c834 (FUT):
- Wording update
- Bug fixes
- Added some cards
2009-10-16 18:06:46 +00:00
solo81@web.de fac8ccd477 (IA):
- Wording update
- Bug fixes
- Removed some cards
2009-10-16 17:39:33 +00:00
solo81@web.de 29a81b69b7 (GPT):
- Removed color-lines
- Wording update
- Bug fixes
- Removed Tibor and Lumia
- Added 2 cards with "@damaged..."
2009-10-16 16:31:56 +00:00
solo81@web.de 46a1bf80b5 (LEG):
- Wording update
- Bug Fixes
- Removed Hammerheim
- Added Typhoon
2009-10-16 16:04:45 +00:00
wagic.laurent 323fd4100c Laurent - Corrected "plainswalk" 2009-10-16 15:28:34 +00:00
solo81@web.de 7093fa48a8 Fixed Drain Life (MIR)
(MRQ):

- Wording update
- Bug Fixes
- Added several cards
2009-10-16 15:22:35 +00:00
wagic.laurent 399698d11a Laurent - Small correction (bis) to R1088 2009-10-16 15:20:33 +00:00
leungclj 61a27b19c9 JON4TH4N - addition to r1088 2009-10-16 15:19:05 +00:00
wagic.laurent cd815a4b76 Laurent - added few cards with @damaged (CHK,MRD) small correction ICE 2009-10-16 15:13:54 +00:00
wagic.the.homebrew@gmail.com 8c50e71b33 Erwan
- Fix a bug when a token would be removed from game while being an attacker or a blocker. Potentially fix issue 42
2009-10-16 14:41:27 +00:00
solo81@web.de cdd8c4579e (MOR):
- Wording update
- Bug fixes
2009-10-16 14:31:03 +00:00
solo81@web.de 9046a33980 (MIR):
- Wording update
- Bug fixes
- Added 2 cards
2009-10-16 14:23:10 +00:00
wagic.laurent 6d440b0423 Laurent - Added a few cards to DIS,small correction on ZEN, ONS, addition/removal in ICE
DIS additions:cards with Hellbent and some cards with @damaged. Note that "opponent" is not a valid target and "player|opponentinplay" will not work. So for some addition we assume that the creature will never deal damage to its owner (e.g trygon in DIS). Hellbent works fine in the situation described.
2009-10-16 09:24:24 +00:00
wagic.jeck 8984f690b4 Jeck — Minor fix, removed unnecessary options save. 2009-10-16 01:40:33 +00:00
wagic.jeck 08a9f00100 Jeck - Fixed issue 106. 2009-10-15 23:43:19 +00:00
wagic.the.homebrew@gmail.com 0e74773b57 Erwan
- Fix issue 105 (threaten on own creature)
2009-10-15 14:36:24 +00:00
wagic.the.homebrew@gmail.com 97a0732682 Erwan
- Fix issue 97. Please review. How about performance ?
2009-10-15 13:58:35 +00:00
wagic.laurent f95b46f256 - Laurent Oops correction to 10E (thieving magpie)... was the old wrong code for thieving magpie...(opponent is not a valid target and was missing the from() )
Sorry for that...
2009-10-15 09:41:02 +00:00
wagic.laurent adba482340 -Laurent Added @damaged, cards to 10E and LEG, small correction to ALA, ARB, CHK, EVE and ZEN
- Added @damaged works fine (tested with thieving magpie), please test your additions if you plan to add some cards with this keyword and report if buggy. As the other trigger, you cannot have a target unless there is a may ability.
- Added 2 cards to 10E - Reminisce and Thieving Magpie both tested and working.
- Added 2 cards to LEG - Jovial Evil and Spiritual Sanctuary (not tested yet) but should work.
2009-10-15 09:30:09 +00:00
wagic.jeck e23fac82e0 Jeck - Resolved issue 101, fixed "Cancel" after "Switch decks without saving". 2009-10-14 20:58:38 +00:00
wagic.the.homebrew@gmail.com ad1492b888 Erwan
-some small performance enhancements
2009-10-14 14:35:26 +00:00
wagic.jeck 0bff0c564b Jeck - Fixed potential bug in INTIMIDATE. Please review. 2009-10-13 23:00:59 +00:00
wagic.jeck c9b22709ac Jeck - Alternate card renders now display X costs. 2009-10-13 17:01:52 +00:00
wagic.the.homebrew@gmail.com 6f159fb39c Erwan - cache fixes - Code review highly appreciated, please criticize my code!
- fix issue 65 (quads when no image  load slowly in shop/deck editor)
- Possibly fix issue 92, please let me know if it reproduces
- Fix issue 97 (Deck editor: weird behavior of deck display)
- Fix issue 39 - please verify
- Issue 56 can probably be closed as well
- Fix issue 86
2009-10-13 14:16:30 +00:00
solo81@web.de 90a29437d2 Fixed Vesuva (TSP) 2009-10-13 07:25:38 +00:00
wagic.jeck 405a725cd0 Jeck - Quick hack fix for cache miss recording, proving that's the source of the cache speed issue. Runs at full speed with card images and unmanaged textures... but still too slow without. I think I can clear this up in the next six hours. Hopefully :) 2009-10-13 00:43:32 +00:00
wagic.jeck d5556d0a43 Jeck - Fix issue 96. 2009-10-12 23:46:30 +00:00
solo81@web.de 5b4f703f4e (TSP):
- Fixed Penumbra Spider
- Fixed and Readded Flagstones of Trokair (THX to Abra)
2009-10-12 19:47:23 +00:00
solo81@web.de e84f40d8e7 (ODY):
- wording update
- bug fixes
- Added some cards: Earnest Fellowship, Confessor, Diligent Farmhand & Pardic Firecat. 

Diligent Farmhand and Pardic Firecat were easier to add than you would expect (look at Flame Burst & Muscle Burst!). They work 100%!
2009-10-12 19:38:29 +00:00
solo81@web.de 912974307b (RV):
- wording update (->Gatherer)
- reordering
- bug fixes
- removed Power Surge (cannot work for now!)
2009-10-12 18:18:15 +00:00
solo81@web.de 9790248e60 (SHM):
- wording update
- bug fixes
2009-10-12 16:47:34 +00:00
solo81@web.de 7e27338ce5 (STR):
-Removed color-lines.
2009-10-11 13:04:36 +00:00
solo81@web.de 4f38f0d4f5 (TMP):
- Wording update
- Removed Commander Greven
- Added Field of Souls
2009-10-11 12:46:32 +00:00
solo81@web.de 2d6de01793 (TSP):
-Bug fixes
-Wording update
-Removed some cards
-Added some cards (tested,working)
2009-10-11 12:12:08 +00:00
jean.chalard 38d7a96095 J :
* Change inplay balance.
- Spells now stack three by three.
- Spells try to space a little more.
- Creatures and land stack to the left until they hit the big card,
  at which point they start displaying more compactly. At some point,
  they start using all the screen even if it's under the hand.
2009-10-11 05:47:31 +00:00
leungclj 9688d923a7 JON4TH4N - (RAV) fixed Seismic Spike 2009-10-10 15:45:42 +00:00
wagic.the.homebrew@gmail.com 4193cb1d28 Erwan
- Fix the rest of issue 29 for PSP
2009-10-09 11:48:58 +00:00
leungclj 9b05f73371 J0N4TH4N - (GPT) fix Skeletal Vampire again 2009-10-08 20:57:09 +00:00
leungclj 066512e234 Psyringe - (GPT) fix Skeletal Vampire 2009-10-08 20:54:53 +00:00
wagic.the.homebrew@gmail.com 46ef86b9d8 Erwan
- some performance improvements
- "daily build". The daily build was compiled in "profile" mode. If you have problems running the exe, or problems with Visual Studio please let me know
2009-10-08 12:17:07 +00:00
wagic.the.homebrew@gmail.com e4a277f9ff Erwan
- Added some outputs in debug mode for bad formatted _cards.dat
2009-10-07 13:44:43 +00:00
leungclj 177768a0a5 Psyringe - fix on id and rarity 2009-10-07 07:26:20 +00:00
solo81@web.de 9fbc0b2dcb Fixed Progenitus ^^ 2009-10-06 13:24:22 +00:00
solo81@web.de e6098e4826 (CFX):
- Wording update
- Bug fixes
- Added a few cards. One of them is Progenitus, and this is discussable, because "shuffle" has not been tested successfully yet!
The improvised ability line will always make Progenitus work as it should.
2009-10-06 13:03:14 +00:00
solo81@web.de ac56d6dc19 (RAV):
- wording update
- bug fixes
2009-10-06 12:16:12 +00:00
wagic.laurent 009239d645 Laurent - Added Shuffle still require testing.
Wanted to add a bunch of cards that use "shuffle" as a keyword.. after the remedy from Herr Doktor in R1050 and the removal of oblation from ONS  it gave me the idea that this could be implemented... I wanted to add some cards like darksteel collosus (M10) with something like auto=@movedto(this|graveyard) from(battlefield):moveto(mylibrary) && shuffle well the above does not work ...

Anyway... i'm not sure the shuffle keyword is working... I don't really have a way to test it. Also if some willing soul could have a quick look would be great..

some cards could be added like Boggart Forager (LRW), Oblation (ONS)...
2009-10-05 17:16:56 +00:00
solo81@web.de a0bc931614 (ONS):
-Wording update
-bug fixes
-removed some cards
-added a lot of good cards (no one did recognize them?? ^^)!
2009-10-05 15:20:05 +00:00
leungclj df6ef02a85 Psyringe - Correction on a few sets 2009-10-05 12:20:16 +00:00
wagic.the.homebrew@gmail.com 2c863867d2 Fix for issue 29, please review both code and result, thanks :) 2009-10-05 12:07:38 +00:00
wagic.laurent 7184adba67 Laurent - Additions ODY 2009-10-05 10:54:48 +00:00
leungclj a15ebc26d2 J0N4TH4N - minor correction 2009-10-05 10:46:35 +00:00
wagic.laurent 34045737c7 Laurent - Few additions and corrections (RAV, STH,TMP, TSP) 2009-10-05 10:14:57 +00:00
solo81@web.de 8885b535d0 Added several cards (INV) 2009-10-04 18:03:23 +00:00
leungclj 12ab50e199 J0N4TH4N - small correction on r1042 2009-10-04 17:16:47 +00:00
leungclj 5ca1292344 J0N4TH4N - (RV) update, removed a few hardcoded cards
-minor update on other sets
2009-10-04 17:13:44 +00:00
wagic.the.homebrew@gmail.com b2b88f1f23 Erwan
-fix issue 76. There's a huge performance cost for this fix, I hope it won't show too much in the PSP version.
2009-10-04 10:52:13 +00:00
wagic.laurent c7aa12054d Laurent - small correction to R1039 on ONS wheel and Deal.
PS: this card  is working great in a megrim deck....
2009-10-04 10:15:44 +00:00
wagic.laurent 21a324796b Laurent - Additions, correction on LRW,ZEN, ONS, STH, MOR.
@tapped(this) works fine...
2009-10-04 10:10:10 +00:00
Psyyringe 91698facf1 Minor updates to two AI decks, also added two more AI decks 2009-10-04 09:49:07 +00:00
wagic.the.homebrew@gmail.com 81a45553d6 Erwan
-fix for issue 71, J please review.
2009-10-04 09:32:41 +00:00
wagic.the.homebrew@gmail.com 763a148547 Erwan
-Fix for Issue 72. I'm not sure anything's actually necessary for the 3Verticla" hand, what do you guys think?
2009-10-04 09:24:46 +00:00
leungclj 87ca35f752 J0N4TH4N - (ZEN) removed Gigantiform 2009-10-04 09:14:26 +00:00
wagic.the.homebrew@gmail.com 61cb849d33 Erwan
-attempt at issue 81. It will do for now
2009-10-04 08:39:34 +00:00
wagic.the.homebrew@gmail.com 6a2f454e64 Erwan
- fix issue 95
- unlocking new sets made easier
2009-10-04 07:54:41 +00:00
wagic.the.homebrew@gmail.com 620ea034b8 Erwan
-Issue 26: added an option for Mana Display. This needs a bit testing, but it should also lower the priority of "manapool slowness" as this mode probably fixes performance issue as well.
-I can't seem to be able to "save" some options (hand position, mana display) ion the windows version, does this change break something ?
2009-10-04 06:01:00 +00:00
leungclj 8ab5b5cfd5 J0N4TH4N - readded back "AUntapManaBlocker" 2009-10-04 01:55:53 +00:00
leungclj f882fd437b J0N4TH4N - removed hard code for Dreamborn Muse 2009-10-04 01:39:23 +00:00
leungclj 7f833b963e J0N4TH4N - test for generic fear & test for auto=kicker + abilities, which answers the confusion for r1025 2009-10-03 17:55:35 +00:00
leungclj b6e97c1f17 J0N4TH4N - please review the removal of Dehydration in MTGAbility.cpp 2009-10-03 15:36:53 +00:00
wagic.laurent 5f020bac87 Laurent - AI deck update (including psyringe modification from the forum) 2009-10-03 09:49:30 +00:00
wagic.the.homebrew@gmail.com 888edfd5b8 Erwan
-more JGE cleanup
-removed calls to BindTexture that were made out of the Render methods. Please let me know if this has side effects (and let's discuss it in that case)
-Still no luck with the purple screen bug :(
2009-10-03 08:50:44 +00:00
solo81@web.de a8607ebf64 Some cards added (INV) 2009-10-02 18:15:16 +00:00
solo81@web.de 23135f107b Bug fixes, new wordings, some new cards (PLC) 2009-10-02 17:54:54 +00:00
solo81@web.de b7338d2533 Wording update (INV) 2009-10-02 17:00:12 +00:00
leungclj 5216faa756 J0N4TH4N - added "ueot" to all "@movedTo". Currently "@movedTo" abilities requires "ueot" 2009-10-02 16:47:41 +00:00
wagic.the.homebrew@gmail.com 924574b0a1 Erwan
- Some cleanup in JGE
2009-10-02 14:33:05 +00:00
leungclj 998de6c247 J0N4TH4N - small update 2009-10-01 15:18:29 +00:00
wagic.the.homebrew@gmail.com e7cd458b6b Erwan
-fix issue 85 (simpleMenu limitation) - this requires to recompile JGE
2009-10-01 14:06:47 +00:00
wagic.the.homebrew@gmail.com 59eb79fc47 Erwan
- fix issue 94 (enchant enchantments)
2009-10-01 13:33:40 +00:00
wagic.jeck 706f17113b Jeck - Fix a prior commit, which changed shop.jpg to a version used for debugging the card placement. 2009-09-30 23:07:18 +00:00
wagic.jeck 98223b66f0 Jeck - Fixed issue 93, duplicate issue 91.
* Deck editor menus no longer fall through into each other.
2009-09-30 22:24:21 +00:00
wagic.jeck 247fb8d3ef Jeck - minor fix to r995, misplaced brackets prevented alternateRender when card images disabled. 2009-09-30 22:06:36 +00:00
leungclj 7807f59b57 J0N4TH4N - fix r1013 2009-09-30 19:10:34 +00:00
leungclj f04404d5df J0N4TH4N - removed cards that "draw and discard a card" 2009-09-30 19:05:34 +00:00
wagic.the.homebrew@gmail.com d77960ede9 Erwan
-fix a display bug (shadow over non targettable cards) intriduced in revision 1007
2009-09-30 15:12:07 +00:00
wagic.the.homebrew@gmail.com 25ab86ab88 Erwan
- fix issue 57 - needs verification when one of the quads is not here /both -  target is player/card - ability/spell
2009-09-30 15:02:57 +00:00
wagic.the.homebrew@gmail.com 91986abe2d Erwan
-fix issue 70 - J, please review
2009-09-30 13:27:48 +00:00
wagic.the.homebrew@gmail.com 78da055dd2 Erwan
-Adding "becomes(types,p/t,color abilities)" to the parser. Please do not use yet as it requires more testing
2009-09-30 12:28:50 +00:00
leungclj c5e51826ec J0N4TH4N - (MIR) big update 2009-09-30 10:33:11 +00:00
wagic.the.homebrew@gmail.com 08bf8781cc Erwan
- fix issue 69 (Shadow.png load issue) - I put it back to a black 16x16 image. If you need more alpha, use the facilities provided by JGE rather than touching the file, thanks ;)
2009-09-29 14:07:14 +00:00
wagic.the.homebrew@gmail.com 2520a642c0 Erwan
-fix issue 84 (control magic on a token)
2009-09-29 13:27:31 +00:00
wagic.the.homebrew@gmail.com 5443e6ff89 Erwan
- fix issue 89 and issue 90 - In the future, we will probably want cardSelector to handle CardDisplay somehow (although carddisplay is used in the Shop as well...)
2009-09-29 12:31:26 +00:00
leungclj a3717b7269 J0N4TH4N - (ODY) added Acceptable Losses 2009-09-29 10:07:50 +00:00
leungclj 649d7003a7 J0N4TH4N - added a lot of deathtouch cards 2009-09-29 09:53:36 +00:00
leungclj 111a6c986c J0N4TH4N - revert Bravado 2009-09-29 08:20:28 +00:00
leungclj 41578abc91 J0N4TH4N - (MOR) update 2009-09-29 06:54:54 +00:00
leungclj c511739c10 J0N4TH4N - minor update 2009-09-28 19:56:18 +00:00
leungclj 2491967d8a J0N4TH4N - (RAV) fix Copy Enchantment 2009-09-28 19:36:29 +00:00
leungclj 57f5949eae J0N4TH4N - (r997) correction 2009-09-28 19:25:21 +00:00
leungclj 1234dfef99 J0N4TH4N - (INV) added few more kicker 2009-09-28 17:08:09 +00:00
wagic.the.homebrew@gmail.com 3f2bf948eb Erwan
-fix issue 79 (AI and legendary cards)
2009-09-28 15:18:54 +00:00
wagic.the.homebrew@gmail.com 5b9fe719ae Erwan
-Adding Daddy32's statistics code
2009-09-28 14:28:39 +00:00
wagic.the.homebrew@gmail.com d9464f53c2 Erwan
-fix a crash when the AI tries to use a spell with X in the manacost
2009-09-28 14:12:50 +00:00
wagic.the.homebrew@gmail.com f7331b7066 Erwan
- Fix one card in ZEN
- Fix AI and counters (issue 75, see tests/manual/torture_ai.txt)
- Fix counters target
2009-09-28 13:34:49 +00:00
leungclj 7efdad82de J0N4TH4N - (EXO) fix City of Traitors 2009-09-28 13:32:57 +00:00
leungclj d272948195 J0N4TH4N - (M10) fix Goblin Artillery 2009-09-28 13:11:25 +00:00
leungclj b698393dd8 J0N4TH4N - (USG) fix Bravado 2009-09-28 13:08:42 +00:00
leungclj 764f826b5f J0N4TH4N - (ZEN)(INV) few fixes 2009-09-28 12:32:32 +00:00
wagic.jeck aa90b53a87 Jeck - Please review. Shop antialiasing, multicolored card recieves gold texture.
* Moved shop text ("press square for other cards") etc, to ShopItems, so they rendered properly (all in one place, after AA)
 * The AA is really more a proof of concept than anything else. To do it properly I'd need a double-resolution copy of shop.jpg.
 * The real multicolored card has a greenish tint, and is darker. What do you think of gold.jpg? Should we tint it more that way?
2009-09-28 03:01:19 +00:00
wagic.jeck e1027d81cb Jeck - Fixed edging on alternate card renders, slight hue modifications. 2009-09-27 17:53:59 +00:00
wagic.the.homebrew@gmail.com 431d7f822c Erwan
-fix issue 66 (graveyard segfault)
2009-09-27 14:58:18 +00:00
wagic.the.homebrew@gmail.com 8709273def Erwan
-PLC Cards with Kicker
2009-09-27 14:06:45 +00:00
wagic.the.homebrew@gmail.com 23d499bc58 Erwan
-Add 1 creature with Deathtouch
2009-09-27 14:01:03 +00:00
wagic.the.homebrew@gmail.com e758f2b2f1 Erwan
-Adding a few Zendikar cards
2009-09-27 13:41:05 +00:00
leungclj 82cd8ced1e J0N4TH4N - fix an error in r981 2009-09-27 12:16:20 +00:00
leungclj a5c7399be6 J0N4TH4N - (INV) added basic kicker cards 2009-09-27 12:08:19 +00:00
wagic.the.homebrew@gmail.com aa29fa2b76 Erwan
-fix ardent soldier (INV)
2009-09-27 11:12:36 +00:00
leungclj 433729bd43 J0N4TH4N - kicker and counter half work (this will not pass test suit) 2009-09-27 10:56:21 +00:00
leungclj 5f652558b3 J0N4TH4N - small fix 2009-09-27 10:18:32 +00:00
wagic.the.homebrew@gmail.com 9704ee4a24 Erwan
- opponentshroud small bug fix
- added "kicker=" line and "kicker" auto keyword. See Vines of Vastwood (ZEN) for an example. WARNING: kicker= line has to be AFTER "mana=" line
- daily build
2009-09-27 09:53:29 +00:00
wagic.the.homebrew@gmail.com e464b8616a Erwan
- removing creatures with banding. Banding is not supported in Wagic anymore, sorry :(
2009-09-27 08:22:18 +00:00
leungclj 2c80f657aa J0N4TH4N - (EVE) added Unwilling Recruit 2009-09-27 07:58:53 +00:00
wagic.the.homebrew@gmail.com cbacfdbfd7 Erwan
- Added "X" cost for token multiplier
-"daily" build
2009-09-27 07:15:23 +00:00
wagic.the.homebrew@gmail.com 30ef39d49d Erwan
- "fix" issue 25
- A few AI fixes for Deck 36 (artifact lands deck)
2009-09-27 06:37:24 +00:00
wagic.the.homebrew@gmail.com 515c5ef0db Erwan
-new trigger: @tapped(...
-Parser now supports X for P/T. WARNING: this does not work for activated abilities. And currently this works only for P/T but will be added progressively to other things
2009-09-27 03:41:28 +00:00
wagic.jeck f922c21ad2 Jeck - Cache misses report CACHE_ERROR_404. This allows alternate card renders to display steadily (that is, without reverting to cardback) in deck viewer. 2009-09-27 02:55:59 +00:00
wagic.jeck ec7b257531 Jeck - Minor change to alternateRender, please review.
* Displays card set and rarity where artist info would go on a real card. This makes the shop a little more user friendly, and also helps prevent "Card X, possibly from MRQ" confusion.
* Land.jpg contrast in lower left corner modified to work better with white text in that space. I might also modify the green card a bit if others feel it's necessary.
2009-09-27 02:34:35 +00:00
wagic.jeck 28cb659a2e Jeck - Restored cache resets between game states, fixed minor issue with deck editor displaying the wrong first 7 cards when starting to edit a deck. 2009-09-27 00:50:30 +00:00
leungclj 74170e9ee9 J0N4TH4N - (ZEN) update 2009-09-26 19:52:24 +00:00
solo81@web.de 597061581c Zendikar finish 2009-09-26 18:42:16 +00:00
jean.chalard c7ece1078b J :
* Fix a little compilation problem.
2009-09-26 15:07:38 +00:00
wagic.the.homebrew@gmail.com 0bf83b6bf5 Erwan
- fixed a bug with Flagstones of Trokair. There was no easy fix (cloned objects deleting stuff from their parents...) and I ended up using a "garbage collect at end of turn" technique the way I did with the ActionStack. As a result, the memory print of a turn will become bigger, and even more bugs might occur at the end of a turn... I'm ready to discuss this, although I think it's the best solution (in terms of result/amount of work) given the way abilities work right now
- Test suite now gives the number of failed/success at the end of the tests
2009-09-26 14:25:29 +00:00
wagic.the.homebrew@gmail.com bb83817c82 Erwan
-fix potential segfault introduced earlier
2009-09-26 11:32:09 +00:00
wagic.the.homebrew@gmail.com 48c57a4fed Erwan
- fix issue 36 (Life points hidden by big card)
2009-09-26 11:08:20 +00:00
wagic.the.homebrew@gmail.com 33c081858e Erwan
- Fix issue 43 (Combat zone sometimes stay open)
2009-09-26 10:50:48 +00:00
solo81@web.de 923d46c8f9 Adding ZEN.dat (will finish in a few hours) 2009-09-26 10:07:39 +00:00
wagic.the.homebrew@gmail.com 833fbba6c2 Erwan
- fix issue 22 (Graveyard display messed up)
- fix issue 38 (graveyard and library unusable)
- fix issue 59 (can't cancel a spell with a target)
2009-09-26 10:03:52 +00:00
leungclj 9a6f85ecab J0N4TH4N - remove Accursed Centaur 2009-09-26 08:30:23 +00:00
wagic.the.homebrew@gmail.com a3721e2454 Erwan
-"daily" build
2009-09-26 06:04:57 +00:00
leungclj 1db434fc7d J0N4TH4N - fix Kindled Fury 2009-09-26 06:02:45 +00:00
wagic.the.homebrew@gmail.com 58c57288f5 Erwan
-Adding Zendikar todo.dat
2009-09-26 06:01:57 +00:00
wagic.the.homebrew@gmail.com dd5b053d1b Erwan
- a few card fixes
2009-09-26 04:35:11 +00:00
wagic.the.homebrew@gmail.com 6df665c340 Erwan
-check athat act of treason works correctly
-Fixed emblem of warmind
-removed incorrect cards ("When this enters the battlefield, target..." please see http://wololo.net/forum/viewtopic.php?f=6&t=669
2009-09-26 04:10:29 +00:00
leungclj c5b48df138 J0N4TH4N - minor fix 2009-09-25 21:53:53 +00:00
leungclj e616a5bdd7 J0N4TH4N - forget the bug I mention in r951, just me being stupid 2009-09-25 21:49:13 +00:00
leungclj 75b8970070 J0N4TH4N - (GPT) update, bug found with negative counter, see Hellion Hydra test. 2009-09-25 21:32:34 +00:00
wagic.the.homebrew@gmail.com 8915fe2807 Erwan
- "daily" build
2009-09-25 17:15:40 +00:00
wagic.the.homebrew@gmail.com df9110d246 Erwan
-reverting mistake introduced in rev 948
2009-09-25 17:11:05 +00:00
leungclj 0d9214df4d J0N4TH4N - kraken_eye4 expected wrong life 2009-09-25 16:12:50 +00:00
wagic.the.homebrew@gmail.com ac120266a9 Erwan
-fix issue 48 (dragon claw endless ability list)
-switched incorrect unsigned int to size_t
2009-09-25 15:35:19 +00:00
leungclj d7e1e73ca3 J0N4TH4N - (r944) fix 2009-09-25 15:14:06 +00:00
leungclj 439efd9d6f J0N4TH4N - (MOR) fix Negate 2009-09-25 15:05:32 +00:00
leungclj 8608cfb2f2 J0N4TH4N - (STH) updated, cards would like to work but didn't, Burgeoning, Soltari Champion, Spike Breeder (and all the other spike creatures)
-minor update other sets
2009-09-25 14:48:26 +00:00
wagic.the.homebrew@gmail.com e5751957dd Erwan
-fix issue 35 - Card duplicated when moved from inplay to inplay
- fix issue 54 - Token not going away - (duplicate of issue 35)
2009-09-25 14:40:49 +00:00
wagic.the.homebrew@gmail.com 09d438b32a Erwan
-fix issue 46 (ai casts fear on opponent's cards)
2009-09-25 14:19:47 +00:00
wagic.the.homebrew@gmail.com 1534397f2b Erwan
-fix issue 33
2009-09-25 14:06:31 +00:00
wagic.the.homebrew@gmail.com eabb99c675 Erwan
- fix armadillo cloak test + fix damage assignation step. A side effect is that when clicking on "Go", the game goes to the Damage step instead of going to the combat step. I believe this is acceptable but let me know if this feels weird when playing
- daily build
2009-09-25 13:38:08 +00:00
leungclj 74c9a00f8e J0N4TH4N - (SHM) fix Emberstrike Duo 2009-09-25 11:54:57 +00:00
leungclj d0ee682abe J0N4TH4N - (MOR) fix letter case error 2009-09-25 11:53:00 +00:00
leungclj c68ad46ee8 J0N4TH4N - tokens problem 2009-09-25 10:32:29 +00:00
leungclj e85f2afec8 J0N4TH4N - (10E) fixed Nekrataal 2009-09-25 10:00:42 +00:00
wagic.jeck 24611fedd3 Jeck - Fix for issue 53, r908. optionNames && Options::enum didn't match. 2009-09-25 05:17:44 +00:00
leungclj 252f1bb100 J0N4TH4N - a lot of update, review welcome, none tested, all based on previous updates 2009-09-25 00:00:27 +00:00
wagic.jeck 2020dce4fd Jeck - unsigned/signed fix, options fixes
* Abstracted out option calls to "f3" behind Constants::OPTION_FONT
 * Added option to disable card image loading.
2009-09-24 23:26:32 +00:00
leungclj 6d9b488878 J0N4TH4N - (ALA) fixed Blister Beetle, currently needs ueot to work, tested 2009-09-24 22:31:17 +00:00
leungclj 6adca76a56 J0N4TH4N - few updates, tested manually as well as tested similar cards in r930 2009-09-24 22:00:00 +00:00
leungclj 0c20a62f8c J0N4TH4N - (MRD) added Looming Hoverguard, tested both automatically and manually, works great, and yes, it does move to the top of library just in case you are wondering 2009-09-24 21:39:44 +00:00
solo81@web.de 56e55fca79 Fixed Venser's Diffusion (FUT) 2009-09-24 19:00:46 +00:00
leungclj 3781e1daa0 J0N4TH4N - fix r927 2009-09-24 17:24:53 +00:00
leungclj bd450df542 J0N4TH4N - few more updates 2009-09-24 17:22:18 +00:00
leungclj e95b6ef7b8 J0N4TH4N - few updates
-don't understand why Aphetto Vulture won't work
2009-09-24 17:03:02 +00:00
leungclj 5387d25919 J0N4TH4N - answer to r913 2009-09-24 16:13:10 +00:00
wagic.the.homebrew@gmail.com 48dccada3b Erwan
- fix issue 52 (valid target notification problem) and issue 21 (duplicate)
- fix issue 28 (P/T Position)
- put back shadow for currently selected Card
- Armadillo cloak test is failing, I assume this is related to the Trample fix earlier, and I'll try to fix the test later on
2009-09-24 13:54:03 +00:00
wagic.the.homebrew@gmail.com 7bc8bba6f1 Erwan
- fix issue 20 (triangle button usage inplay)
- close issue 27 (gold effect on the gold bar). Please feel free to change the gold glow if you come up with something better, but I consider this perfectly releasable now
- code cleanup
2009-09-24 12:32:08 +00:00
jean.chalard 8d6f3567ed J :
* Fix interface (when a creature has trample and exactly one blocker,
  show the damage assignation screen)
2009-09-24 00:56:32 +00:00
wagic.jeck 6557c64bc0 Jeck - Deck editor no longer asks for a name for new decks. Use the rename option instead. 2009-09-24 00:36:31 +00:00
wagic.jeck b4d261de2f Jeck - Fix for set loading / unloading.
* This is a little dirty, as it's loading the profile multiple times. The proper way to do it would be to add any line starting with "unlocked_" to an array for deferred loading. This would also allow us to write those lines back even without the associated set being loaded. The clean solution is on my todo-list now :)
2009-09-23 20:36:10 +00:00
wagic.jeck db8247ddd7 Jeck - Bugfix: repaired set unlocking.
* Checks for unlocked sets /after/ they've finished loading.
2009-09-23 20:03:19 +00:00
wagic.jeck efc47e84d5 Jeck - Canceling the name for a new deck drops the player back to deck selection. 2009-09-23 19:46:08 +00:00
jean.chalard f907f39334 J :
* Affect overflowing damage.
* Reinstate Armadillo cloak test.
  . Note that this test does not work at the moment : my understanding
    is the TEST is wrong and not the implementation, but I'd like a
    double check before changing the test.
2009-09-23 16:22:56 +00:00
solo81@web.de 02c41695a3 Fixed Viashino Slasher (RAV) 2009-09-23 15:39:24 +00:00
jean.chalard 5461785e9f J :
* Put back a change that was inadvertently reverted.
2009-09-23 15:15:39 +00:00
wagic.the.homebrew@gmail.com b1d8331482 Erwan
-Fixed issue 24 using a Limitor...probably not the best solution, but I think it's clean enough...
2009-09-23 11:16:24 +00:00
leungclj 380a5a040e J0N4TH4N - (DIS) few updates, sorry, don't know how to test Swift Silence, not sure if it works 2009-09-23 10:35:12 +00:00
wagic.jeck e2e92f58af Jeck - Keypad and deck editor fixes.
* Fixed a call to profileFile() in deck editor that was using the wrong form.
 * Spacebar works, keypad now does smart capitalization (switches to lower case on second letter)
2009-09-23 09:45:58 +00:00
wagic.the.homebrew@gmail.com 7577a588ec Erwan
-fix issue 47 (all creatures have haste)
2009-09-23 09:31:15 +00:00
leungclj decd70d4cf J0N4TH4N - (PLC) updated, note: Pongify "target=creature
text=Destroy target creature. It can't be regenerated. That creature's controller puts a 3/3 green Ape creature token onto the battlefield.
auto=bury && token(Ape,creature,3/3,green) targetcontroller"
Doesn't work, if cast on creature the player is controlling, it works, but when cast on opponent's creature, token ends up on player's side.
2009-09-23 08:54:54 +00:00
wagic.the.homebrew@gmail.com 9f755c7b27 Erwan
-print phase name on the screen. In the middle-term I'd like this zone to be some scrolling text: it will usually show the phase name, but after some inactivity from the player, it would start scrolling and show help messages
2009-09-23 08:26:05 +00:00
jean.chalard 28f93c035f J :
CAREFUL : this update REVERSES the triggers default actions.
* Make the right trigger opens the hand and the left trigger skips to
  next phase.
* Add an option to reverse triggers (and thus revert to old style).
2009-09-23 07:25:39 +00:00
wagic.the.homebrew@gmail.com 82551174d9 Erwan - Fix issue 30 (memory leaks in GuiCombat.cpp) 2009-09-23 06:56:05 +00:00
wagic.the.homebrew@gmail.com 311ec5fbad Erwan
- Fixed issue 5 (Sell menu default option)
- Verified issue 2 (Moat does not work) -> can't reproduce
-Fixe Magus of Moat (FUT)
2009-09-23 06:00:23 +00:00
wagic.the.homebrew@gmail.com 3ce216d5e6 Erwan
-adding exception handler to JGE. Copy the exception.prx file to the same directory as the EBOOT from now on
2009-09-23 03:33:02 +00:00
wagic.jeck e577f3e378 Jeck - Resolved issue 44 and issue 45.
* Options can now use specialized loading functions. OptionEnum should work now.
 * Options are now stored in memory as a map<integer,GameOption>.
2009-09-23 00:24:43 +00:00
wagic.the.homebrew@gmail.com 433897bf38 Erwan - daily build based on rev 902 2009-09-22 14:53:12 +00:00
wagic.the.homebrew@gmail.com f5ddbd2396 Erwan
-Issue 31 fixed. Land and tokens don't use the stack anymore. Taking control of a card in opponent's battlefield doesn't trigger "spell cast" triggers either
2009-09-22 14:45:01 +00:00
jean.chalard 7f396b13b4 J :
* Shift mana to the bottom of the screen to make them easier to count.
2009-09-22 08:44:42 +00:00
wagic.the.homebrew@gmail.com 202d461767 Erwan
-Adding AI decks provided on the forums. Let's test them, and let me know if some of them crash the game or are just too bad
2009-09-22 07:41:18 +00:00
jean.chalard f6aba5c5cb J :
* Hand option.
2009-09-22 07:39:24 +00:00
wagic.the.homebrew@gmail.com 71d4818646 Erwan
- Fix issue #16 (testsuite segfaults if file does not exist)
- Fix issue #37 (Normal Combat Damage is not dealt to creatures when the AI attacks)
- TestSuite now has an "AI" mode (see test/manual/p2_attacks.txt)
2009-09-22 06:15:32 +00:00
wagic.jeck d7657e8bdf Jeck - Less irritating version of gold glow. Please review. 2009-09-22 05:52:33 +00:00
wagic.jeck d9786dfdc2 Jeck - (Probable) fix for issue 41. Turns out AttachZipFile is very robust, and already handles all the unattach / reattach optimizing & checking for us. 2009-09-22 05:33:01 +00:00
jean.chalard 694df9dc13 J :
* Minor fixes
2009-09-22 04:37:36 +00:00
wagic.jeck 07fab74945 Jeck - Updates to proposed manual thanks to Psyringe's proofreading. 2009-09-22 04:28:23 +00:00
wagic.jeck 3675099c85 Jeck - Took proposed manual changes and shrunk the files to something more net friendly. 2009-09-22 03:12:39 +00:00
wagic.jeck 7510ee165f Jeck - Daily build, deck renaming, small keypad bugfix, profileFile() fix, proposed new iconspsp.png.
* Decks now support naming and renaming. Also added a "Switch decks without saving" option.
 * Removed unused static const char * menuTexts, from old 6-deck limited system
 * Keypad didn't display correctly when not given a title, and was never destructed. Fixed.
 * profileFile() default behavior was to fall back to RESPATH/player. Fixed.
 * New iconspsp.png, updated look to seem like PSP buttons, added some extra (unused) button icons.
2009-09-22 02:47:48 +00:00
wagic.jeck 643b37d8b2 Jeck - Proposed update to game manual. Please comment with suggestions, corrections, or criticisms. 2009-09-21 19:47:32 +00:00
jean.chalard 5f04e7245c J :
* Fix carriage returns.
* Fix linux compilation.
* Make flags more common between linux/psp to help reducing occurences
  of flags being different.
2009-09-21 17:40:29 +00:00
wagic.jeck 67ef5b026c Jeck - Extremely subtle lighting effect fades in on boot screen sword.
* Yeah, it's kinda gratuitous. I was playing with various overlays, and this is really the only thing I could think of, given the limited space. Blood and rust just look wrong, fading in like that... and the area for text is really limited the card, from the Wagic logo down. Feature notes like "Single and multiplayer! Over 3000 cards!" just look cramped there, and detract from the overall image.
2009-09-21 07:44:22 +00:00
wagic.jeck 6de4f5612e Jeck - Resource manager zipfile fix.
* Only attaches when necessary.
2009-09-21 06:59:28 +00:00
wagic.jeck f7eadb839b Jeck - Proposed pic1.png. Please comment here with thoughts / suggestions. 2009-09-21 06:40:02 +00:00
wagic.jeck 334938840b Jeck - Lock and release alternate thumbnails in shop view. 2009-09-21 05:16:42 +00:00
wagic.the.homebrew@gmail.com ae93341a98 Erwan
- Stop calling the PNG Loading routine if not a .png file
2009-09-21 03:58:19 +00:00
leungclj 2bb4377f80 J0N4TH4N - small fix, plz leave (PLC), I almost finished, n dont want to clash with anyone. 2009-09-21 01:25:21 +00:00
wagic.jeck e2adadd1bd Jeck - Re-enable sound effects. 2009-09-21 00:37:31 +00:00
wagic.jeck 20b41ab569 Jeck - Larger small cache size, to reduce likelihood of issue 39. 2009-09-21 00:02:10 +00:00
wagic.jeck 8c9374fe1f Jeck - GameStateMenu releases background image from cache, minor cache fixes. 2009-09-20 23:56:08 +00:00
wagic.laurent 31cf4ac884 Laurent - Fix to R878 (forgot some abilities) 2009-09-20 12:24:53 +00:00
wagic.laurent 8da116a4da Laurent - Small addition FUT tested and working. Nimbus maze works great sure there is some other cards like this one that could be coded. 2009-09-20 12:18:08 +00:00
wagic.laurent 4284e685e6 Laurent - Small addition CFX tested and working. Blood Tyrant is not technically 100% but in current wagic is 100% correct since there is no real "loose life" protection and no multiplayer option. 2009-09-20 12:15:50 +00:00
wagic.jeck be723369ba Jeck - Restore proper deck stat save/loading. 2009-09-20 05:42:06 +00:00
wagic.jeck e0b225bad9 Jeck - TEMPORARY enabling of exceptions. (~6hrs) Sorry, I've been an idiot lately and coded myself into a corner with stuff that "should only take a minute" to fine tune. I honestly shouldn't have committed r871+, but I'd sworn to high heaven that the damn thing was fixed. In reality getting the cache 100% needs a bit more time, so I'm committing this in the hopes that it'll prevent sloppy cache work from interrupting other people's coding.
Exception handling in the cache means that Wagic runs slightly, but noticeably slower. However, it also means that the cache works the way it was intended to, and should prevent all sorts of awkward errors I introduced because things were half-allocated or worse. 

I've learned my lesson from tonight, and once I get this stuff put back together without exception handling I think I'll self-impose a manditory 24 hours debugging time before any commits. Sorry for the inconvenience. 

If for some reason you can't compile with exceptions, r862 should be completely without them. Again, wow, this was stupid-- I hadn't even realized exceptions were off for like 24 hours, as the compiler wasn't producing warnings. 

Apologies,
—Jeck
2009-09-20 03:10:34 +00:00
wagic.jeck 00c5b8cd7d Jeck - CACHESIZE option does something again. 2009-09-20 00:39:55 +00:00
wagic.jeck 1689edc69b Jeck - Cleanup some debug messages, cache now clears unlocked items between states. 2009-09-20 00:05:23 +00:00
wagic.jeck 1ba7f108b0 Jeck - Cache is using map<> again. The implementation is cleaner and seems a little faster. 2009-09-19 23:20:43 +00:00
wagic.jeck 8cc9bff484 Jeck - Stricter cache limits. 2009-09-19 22:34:48 +00:00
wagic.jeck 0d3686e65a Jeck - Cache fix, booster duplicate fix.
* Restored OptionItem saving fix.
 * Booster duplicate replacement was picking random cards from the wrong set. My fault, but I've fixed it :)
 * The problem with cache had nothing to do with memory fragmentation, but I've switched to an array rather than map<> just in case. The actual issue was that in GameStateDeckViewer, I'd given the cache unlimited space, thinking that AttemptNew would recover from any bad_allocs. Unfortunately, the image loading routines and similar stuff called by various implementations of WResource::Attempt() could fail halfway through, leaking memory. 

The temporary solution is to set a proper limit (8000000 px, more or less) and (in case we still run out of memory) test to make certain CACHE_SPACE_RESERVED can be malloc'd/free'd. The proper solution would be to keep byte-perfect records of memory used (right now we're kinda fuzzy-- we track pixels per image and bytes per sound, but not the space for jquads or other incidentals) instead of testing a malloc, and potentially cleaning up all calls inside of Attempt() so they fail without leaks. That's what I'm working on now.

Still, it's nice to have identified the problem. This version of the cache should be fully functional, it's just a bit inelegant.
2009-09-19 21:11:35 +00:00
wagic.the.homebrew@gmail.com e0f5a81dad Erwan
- Minor cleanup
2009-09-19 10:51:45 +00:00
wagic.jeck f1670f2394 Jeck - Revert to r867. r868 logic sucks. 2009-09-19 04:17:42 +00:00
wagic.jeck a5ded3e836 Jeck - Cleaned up logic a little in Cache::Get() 2009-09-19 04:11:07 +00:00
wagic.jeck 3ea5ab9b88 Jeck - Minor fix to r866, quads are now invalidated before being recycled. 2009-09-19 02:03:49 +00:00
wagic.jeck 4b8d344bcd Jeck - Card ID collisions, cache fixes, cache deleted pooling.
* mtgid now defaults to 0.
 * TextScroller will not update when empty.
 * Cache now moves WCachedResources we're finished with to a garbage pool for later use (to reduce memory fragmentation). 
 * Demo still crashes... but I'm thinking that has to do with fragmentation, not a leak?
2009-09-19 01:48:42 +00:00
wagic.the.homebrew 5d57693d31 Erwan
-adding dissension cards
2009-09-18 10:26:13 +00:00
wagic.the.homebrew 265d82c136 Erwan
- card fix Stronghold
2009-09-18 09:21:46 +00:00
wagic.the.homebrew 8cb3daa3ad Erwan
-Adding a few sets, please add/correct/remove cards, have fun :)
2009-09-18 08:13:16 +00:00
wagic.jeck 8ba34dafca Jeck - WResourceManager / Cache should now be leak free. Demo mode still crashes around EnstackBlocker. 2009-09-18 01:20:46 +00:00
solo81@web.de 6abd3cc160 Fixed Kindle (TMP) 2009-09-17 17:32:20 +00:00
leungclj 074b7fc391 J0N4TH4N - minor fix 2009-09-17 16:21:44 +00:00
leungclj 09ed6d149d J0N4TH4N - few updates 2009-09-17 03:33:55 +00:00
leungclj 626e13f1ed J0N4TH4N - few fixes 2009-09-16 01:40:02 +00:00
leungclj 63504a00c4 JON4TH4N - sets update, "ueot" added to a few cards 2009-09-16 01:14:15 +00:00
jean.chalard 5fe68bc8a2 J :
* Un-revert compiling fixes
2009-09-15 16:15:46 +00:00
wagic.the.homebrew@gmail.com 11ffebf29f Erwan
-bug fix (credits cheat with empty deck evil twin mode)
-bug fix ("combat ends" message instead of "Combat Damage(2)" in stack)
2009-09-15 13:35:08 +00:00
jean.chalard ce39961d78 J :
* Fix the filename
2009-09-15 12:28:19 +00:00
leungclj 3d5a9caeca JON4TH4N - (ALA) updated, tested 100% working 2009-09-15 10:26:42 +00:00
wagic.jeck 505ee8d1eb Jeck - I somehow managed to break the test suite. Rolled back my changes to r843, won't commit until they're properly debugged. 2009-09-15 01:53:02 +00:00
wagic.jeck 1b468bde14 Jeck - Replaced ok_quad with ok_tex, which won't expire until the duel is over. 2009-09-14 21:09:58 +00:00
wagic.jeck a84ed94954 Jeck - Cache Leakfix. Quads now individually lock/unlock. Demo still crashes PSP. 2009-09-14 20:54:49 +00:00
wagic.jeck 5467fd379f Jeck - Signed/unsigned fix in resource manager, options save fix. 2009-09-14 18:30:47 +00:00
solo81@web.de 0eb79c23b9 Fixes, Clean Up, Reordering (LRW) 2009-09-14 17:55:46 +00:00
solo81@web.de 124354125e Removed Wall of Blood (MRD) 2009-09-14 16:42:36 +00:00
solo81@web.de 1f20520420 Fixes, Clean Up, Reordering (MRD) 2009-09-14 16:41:13 +00:00
wagic.the.homebrew@gmail.com c80245b3e8 Erwan - daily build template.exe 2009-09-14 14:09:01 +00:00
wagic.the.homebrew@gmail.com 67755a4428 Erwan
- fix prowess of the fair
- add "other " keyword to all targets. ex: @movedTo(other elf|graveyard)
2009-09-14 14:07:30 +00:00
wagic.jeck ce31194358 Jeck - Daily build recompile as release version. Is this or the debug version preferred? 2009-09-14 09:10:54 +00:00
wagic.jeck 0a38623746 Jeck - Minor fixes to cache: Splash.jpg releases properly, pspicons no longer use the same quad. 2009-09-14 08:46:18 +00:00
wagic.jeck d55fc91112 Jeck - [Requires JGE rebuild] Extensive cache improvements.
* Numerous cache fixes, reduced filesystem access.
 * Cache fails very gracefully. 
 * Cache is now a templated class, with individual caches per data-type.
 * Much easier to extend.
 * Extensively debugged. Try compiling with -DDEBUG_CACHE.
 * Caches limits can be set on a per-item basis.
 * hgeParticleSystemInfo are now cached, mana particles now fall back to defaults.
 * Samples are not cached, but track filesystem misses using the cache backbone. 
 * Avatars are cached. Default baka avatar is now baka.jpg, to prevent collision with player.

A note on the retrieval types: 
  RETRIEVE_MANAGE puts a resource into a seperate, managed resource list.
    Managed resources are guarenteed valid for the lifetime of the program. 
    Retrieving a managed quad promotes the associated texture to managed. Don't do that by mistake.
    Calls to Resources.Refresh() will attempt to reload managed resources in place.

  RETRIVE_LOCK (and by extension, RETRIEVE_VRAM), returns a resource after locking it.
    A resource may have many locks, and remains in cache until they are all released. 
    If the resource is managed, it returns it unmodified.

A note on quads:
Unlike all other RetrieveWhatever() functions, the default behavior for RetrieveQuad is RETRIEVE_LOCK. Worse, Release(JQuad*) is slow, and will /always/ release one lock from the associated texture.   

There's a long and complicated explanation for this, involving support for live relinking of textures to existing quads, but basically what it means is that we only use RetrieveQuad for quads we intend to store and later Release(). If a temporary quad is needed, the preferred method is to use NEW JQuad* and SAFE_DELETE with RetrieveTexture(). RetrieveTempQuad is also provided, but is only guaranteed until the next call to the cache.

Note that RetrieveCard has none of these problems.
2009-09-14 08:28:49 +00:00
wagic.the.homebrew@gmail.com a696b65ffb Erwan
- fix compilation issues
2009-09-13 12:52:24 +00:00
wagic.the.homebrew@gmail.com 7ce2c563e1 Erwan
- Fixed empty ActionStack "interrupt" messages
- If no attackers are declared, go straight to Combat end phase
- Once First strike damage is declared, attacking player needs to "actively" request a next phase event to go to the next damage step
- Second Damage step is called "Combat Damage (2)"
- UserRequestNextPhase is to be used knowing that it might not succeed
- Step change for GuiCombat is now computed at GameObserver::nextGamePhase

Note: Combat damage to creatures is not assigned when AI attacks. As this seems to be a problem with the previous SVN version, I4m still committing this change
2009-09-13 12:42:18 +00:00
jean.chalard 1f67998d7a J :
* Some interface updates.
2009-09-13 10:57:55 +00:00
wagic.the.homebrew@gmail.com 7c4fbde7d3 Erwan
-Fix farhaven elf
2009-09-12 14:03:22 +00:00
jean.chalard 34d973c60d J :
* Create selection zones to remember the last card the cursor was on.
2009-09-12 12:57:50 +00:00
wagic.the.homebrew@gmail.com 23fb17e58e Erwan
- Added deathtouch (TODO: update Combat rules for damage on multiple blockers)
- Added intimidate (untested)
2009-09-12 12:40:14 +00:00
wagic.the.homebrew@gmail.com baf49c9ebf Erwan
-fixed problem with lifelink+wither, although combat damages are not entirely correct. Once combat damages actually deal the correct amount of damage, let's put test "armadillo_cloak" back in the suite
2009-09-12 11:40:48 +00:00
wagic.the.homebrew@gmail.com 5bbf9137ad Erwan
-add missing file
2009-09-12 10:16:06 +00:00
wagic.the.homebrew@gmail.com f34ba20478 Erwan
-fix Seedcradle Witch
2009-09-12 09:13:17 +00:00
solo81@web.de 8a8ab2f2c1 Fixed Survival of the Fittest (EXO) 2009-09-12 06:57:25 +00:00
wagic.the.homebrew@gmail.com 40f2fab205 Erwan
- Reverted Rockslide Elemental to fix test issue
- Removed old gatherer scripts
- Added "daily_build" directory for people who can't compile
2009-09-12 06:44:36 +00:00
leungclj 4b39301074 reverted & updated 2009-09-11 14:38:42 +00:00
leungclj ca5187d54f JON4TH4N - (TSP) fix Kher Keep 2009-09-11 14:15:10 +00:00
leungclj dd6d317dbb JON4TH4N - updated permanents with "lord" abilities which requires either cost or other conditions to trigger, they all requires "ueot".
Example: all creature gets +1/+1
auto=lord(creature) 1/1

Example2: pay {2} all other creatures get +2/+2 and flying until end of turn.

auto={2}:lord(creature) 2/2 other ueot && lord(creature) flying other ueot.

Example3: Whenever a player put a creature onto the battlefield, all creature that player controllers attack this turn if able.

auto=@movedTo(creature|battlefield):lord(creature|XYZ player) mustattack ueot
2009-09-11 10:57:56 +00:00
wagic.jeck 9d203619aa Jeck - Extremely minor speedup for cache access in GameStateDeckViewer, minor fix to WResourceManager::cleanup(). 2009-09-11 08:17:05 +00:00
leungclj 421d2655ee JON4TH4N - (FUT) fix Akroma's Memorial 2009-09-10 22:40:41 +00:00
leungclj 7e70aadc1d JON4TH4N - (M10) hypnotic specter can now fly 2009-09-10 22:22:49 +00:00
leungclj ed20be6277 JON4TH4N - sets update 2009-09-10 12:56:39 +00:00
leungclj 5aa654d8fd JON4TH4N - (ALA) fixes, removed cards explanations are now included in the todo, much better the future references. 2009-09-10 07:08:25 +00:00
leungclj 85f6f15947 JON4TH4N - removed cards that "destroy target when comes into play" "may" is required, but that is incorrect. 2009-09-10 04:12:12 +00:00
wagic.the.homebrew@gmail.com c0be024093 Erwan
- Put back delayed loading functionality for the Deck editor
2009-09-09 13:51:29 +00:00
wagic.jeck 91a9387e33 Jeck - Profile loading fix, minor options menu improvements, minor cleanup. 2009-09-09 11:11:17 +00:00
wagic.jeck 4993cc5dea Jeck - Cache now pretty damn near guarantees successful retrieval.
* The only fail condition is if all resources are locked, or the file doesn't exist at all.
2009-09-09 05:02:08 +00:00
wagic.jeck e3d86f0824 Jeck - Improved cache size tracking. 2009-09-09 00:15:33 +00:00
wagic.jeck a03c35e440 Jeck - Bugfix for createUsersFirstDeck and isDefault. 2009-09-08 19:28:07 +00:00
jean.chalard 457266184d J :
* Add a helper function.
2009-09-08 14:53:23 +00:00
wagic.the.homebrew@gmail.com 471da5d9d9 Erwan
-better fix for psp compilation
2009-09-08 14:11:47 +00:00
wagic.the.homebrew@gmail.com bc74cea1aa Erwan
- fix psp compilation
2009-09-08 13:23:22 +00:00
wagic.the.homebrew@gmail.com f9a2d8283a Erwan
- A few card fixes
2009-09-08 13:07:19 +00:00
wagic.jeck c76d8a3976 Jeck - Separated GameStateDeckViewer.h code into GameStateDeckViewer.cpp. 2009-09-08 07:53:54 +00:00
wagic.jeck ad7006e2de Jeck - Profile and cache improvements, booster duplicate likelihood reduced.
* Cache now tracks missing textures for RetrieveQuad, not just RetrieveCard/RetrieveTexture.
* Profile options are no longer overwritten when switching profiles.
* Main menu notifies of alternate profile- "Database: X" becomes "Profile: Y of X cards."
* Boosters iterates through cards, replacing duplicates. Stops after 15 tries to prevent infinite loops on small sets.
* Very simplistic theme switcher, only displays when alternate themes are present.
2009-09-08 03:23:19 +00:00
jean.chalard a0b1da9810 J :
* Remove an unused variable.
2009-09-08 01:32:30 +00:00
jean.chalard 6f183fd8ec J :
* Temporarily remove the PIC1 option that prevents compilation.
* Fix the carriage returns.
2009-09-07 17:30:16 +00:00
jean.chalard ea92876d7b J :
* Fix a little memory leak.
2009-09-07 17:18:46 +00:00
jean.chalard e7fb9282ce J :
* Fix the last tests that didn't work, Rampage ability.
2009-09-07 16:40:03 +00:00
jean.chalard 5b473a1505 J :
* Fix almost all tests.
* This version "nearly" works.
2009-09-07 14:37:32 +00:00
wagic.jeck 635c87202a Jeck - More f3 fiddling. 2009-09-06 21:35:53 +00:00
wagic.jeck eef4be363e Jeck - Restored credits to all tabs, fixed f3 graphic alignment issues.
* F3 font had an issue where the j and y dangled into the characters below them. I fixed this by shifting all characters one pixel up, but this does change the way f3 fits when rendered. The alternative would be just to clip the dangling pixels off entirely.
2009-09-06 21:22:23 +00:00
wagic.the.homebrew@gmail.com 8771ee7579 Erwan
-Various card fixes
2009-09-06 09:55:11 +00:00
wagic.the.homebrew@gmail.com 5a2a4a7617 Erwan
- display name of cards in the shop, when it loads, and any time by pressing triangle
2009-09-06 06:35:29 +00:00
wagic.the.homebrew@gmail.com 1d4b8ef177 Erwan
-Bug fix: Selesnya Guildmage ability ueot
2009-09-06 04:55:05 +00:00
wagic.jeck 4e7db4423d Jeck - Oops. Adding unversioned alternate card images. 2009-09-06 03:11:32 +00:00
wagic.jeck f9dbfcf025 Jeck - Alternate card rendering for land and artifacts, minor graphical tweaking. 2009-09-06 03:05:01 +00:00
wagic.the.homebrew@gmail.com d73951ecfc Erwan
-some bug fixes (test suite)
2009-09-06 02:50:54 +00:00
wagic.the.homebrew@gmail.com c1accf5c6e Erwan
- fix global effect cards (wrath of god) VS protection 
- Removed/updated a few debug outputs
2009-09-06 01:11:51 +00:00
jean.chalard 74bd57cb55 J :
* Fix a bug where a creature dying would not leave the battlefield.
2009-09-05 15:38:01 +00:00
jean.chalard e5b09cf5ec J :
* Fix a bug where combat damage would be wrongly assigned.
2009-09-05 15:05:16 +00:00
wagic.the.homebrew@gmail.com 293d9af5a1 erwan
-Update VisualC++ project with Trash.cpp
2009-09-05 13:11:55 +00:00
jean.chalard b6781e82f1 J :
* Add the Trash facility and use it for CardViews.
* Fix a graphical bug with card shadows.
* Fix a graphical bug with limitors.
* Enhance the graphical appearance of cards going to graveyard.
2009-09-05 11:44:34 +00:00
jean.chalard 44738399dc J :
* Make the SAFE_DELETE syntactically safe.
2009-09-05 11:34:51 +00:00
wagic.the.homebrew@gmail.com 380014b2a6 Erwan
-removed memory leak introduced in r.789
-added "blocked" bool in MTGCardInstance
2009-09-05 09:17:30 +00:00
wagic.jeck bf42825be8 Jeck - Fixed zipfile loading on PSP. 2009-09-05 07:14:01 +00:00
wagic.the.homebrew@gmail.com 681122f018 Erwan
- prevent a segfault in the test suite (does not fix the root cause)
2009-09-05 04:58:44 +00:00
leungclj 69a20f24c2 JON4TH4N - (ARB) fix 2009-09-05 01:20:19 +00:00
wagic.jeck 62be1e1c72 Jeck — Cache refresh functionality, forcing in situ reload of textures.
* Changing profiles will now reload graphics, in case the profile has a different theme/mode/whatever.
2009-09-04 22:33:39 +00:00
wagic.jeck 78b9d61baf Jeck - Crashfix for cache, proposed replacement for icon.png
* Please comment on new icon.png with any suggestions.
* Prevents RemoveOldestTexture from deleting things it shouldn't
2009-09-04 20:41:31 +00:00
jean.chalard c8af1836a0 J :
* Fix a bug where some event chains could result in reading from a
  freed memory space.
2009-09-04 17:21:34 +00:00
jean.chalard 01fe3b76f7 J :
* Minor bugfixes (mostly graphical bugs)
2009-09-04 16:58:17 +00:00
jean.chalard 2e7570fdea J :
* Add some pretty printers to help debugging.
2009-09-04 13:22:15 +00:00
wagic.jeck 2a7d6819bb Jeck - More minor WResourceManager fixes.
* Locked resources are now guaranteed, though they currently share memory limits with the cache, so be certain to release them when you're done.
* RetrieveQuad now returns different quads for different resource names, regardless of if they share size and position.
2009-09-03 22:41:25 +00:00
wagic.jeck 0689b01536 Jeck - WResourceManager now tracks filesystem misses for cards (up to MAX_CACHE_OBJECTS) and sfx, so disk use is much reduced. 2009-09-03 21:52:41 +00:00
wagic.jeck 805a78e39d Jeck - Some logic fixes, reducing number of filesys calls when loading graphics. (Cards still check filesys way too often, but I'm working on that) 2009-09-03 21:10:04 +00:00
wagic.jeck b78d25d16b Jeck - Tempory fix for missing GuiHand.h. Please commit if your copy differs. 2009-09-03 20:14:29 +00:00
wagic.jeck 8ea9222122 Jeck - Initialize player avatar to NULL, cleanup some minor debug leftovers. Still eventually crashes with corrupted MTGCardInstance reference. 2009-09-03 20:10:59 +00:00
wagic.jeck c6f319d685 Jeck - Some minor fiddling with cache. 2009-09-03 19:08:09 +00:00
wagic.jeck 8340fdbd5b Jeck - It wasn't emptying the cache properly, so this is a step in the right direction. I'll keep looking for more issues, though. 2009-09-03 18:21:57 +00:00
jean.chalard 3db0969c0e J :
* Fix the speed of the animation.
* Use a Pos for the animation of the back.
2009-09-03 17:25:15 +00:00
jean.chalard 30e416b0b3 J :
* Animation smoothing (and bugfix on slow machines).
2009-09-03 17:24:42 +00:00
jean.chalard 4e7b172846 J :
* Code cleaning
2009-09-03 17:23:26 +00:00
jean.chalard dd2a541c2b J :
* Fix the acting player.
* This should make most things work.
* I still witness some segfaults.
2009-09-03 17:23:03 +00:00
jean.chalard a0cc143261 J :
* Some animation smoothing.
2009-09-03 17:21:28 +00:00
jean.chalard 1e42fc65d1 J :
* Fix a leak on opening a non-existing file.
2009-09-03 16:05:37 +00:00
jean.chalard 4c0b0e2933 J :
* Find out when a dependancy has been erased and remake the deps file
  anyway.
2009-09-03 14:12:04 +00:00
wagic.the.homebrew@gmail.com 37ea7f95b4 Erwan
-cache fix(?)
2009-09-03 12:47:40 +00:00
wagic.the.homebrew@gmail.com 83d573f11e Erwan
-prevent a segfault (not fixing the root cause)
2009-09-03 12:17:28 +00:00
wagic.the.homebrew@gmail.com e004bd3939 - hge distortion leak fix
- windows project update to take into account Jecks changes
2009-09-03 11:00:21 +00:00
wagic.jeck f220d2e9b9 Jeck - Cache and resource manager merged, streamlined.
This is pretty major, so there'll probably be something wrong with it... even though I did spend a few hours looking.
NOTES:
 * If you've Retrieved it, don't delete it--- Use resources.Release(Whatever). 
    Textures automatically release subordinate quads.
 * Most of the time, use resources.RetrieveQuad to grab a quad. Should handle everything for you.
    RetrieveQuad will load the required texture, if needed.
    Only managed resources have a resource name ("back", "simon", etc). 
    Managed resources can be retrieved with GetTexture/GetQuad/GetWhatever.
    Non managed quads lookup by position/dimensions, defaulting to the whole texture.
 * Use resources.RetrieveTexture only when you need to do something special to it. 
    Calling retrieve texture with RETRIEVE_MANAGE will permanently add a texture to the manager
    RETRIEVE_LOCK and RETRIEVE_VRAM will lock a texture. It will not leave the cache until
    Release(JTexture*) is called, or as a last resort during cache overflow.
 * Try to only store (as a class member) pointers to textures retrieved with RETRIEVE_MANAGE. 
    All others may become invalid, although locked textures do have a high degree of stability. It's
    pretty safe to store a locked texture if you're not going to load much between uses.

There's a lot going on here, so I might have missed something... but it runs through the test suite alright.

TODO: 
 * When called without any arguments, RetrieveQuad sometimes leaves a thin border around the image. 
    This can be bypassed by specifying a quad one or two pixels less than the image size. Why?
 * I've had a crash while runing the Demo mode, something to do with receiveEventMinus? 
    This hasn't exactly reproduced on a clean SVN copy, (being a hang, rather than a crash) so 
    I've probably done something to worsen the problem somehow? I'll look into it tomorrow.
 * Clean up lock/unlock system, memory usage. Streamline interface, consider phasing out calls using GetWhatever() format.
2009-09-03 09:28:16 +00:00
jean.chalard 7214248494 J :
* Some more tweaking for combat.
* This still doesn't work, but it's closer.
2009-09-03 02:16:53 +00:00
wagic.the.homebrew@gmail.com a7bef9142c Erwan
-removing unpackDamageStack/repackDamageStack obsolete functions
2009-09-02 12:59:55 +00:00
solo81@web.de 65731051ab fixes, clean up, new wordings (TMP) 2009-09-01 14:38:56 +00:00
jean.chalard 336412f006 J :
* Fix PSP compilation errors
* This does not magically make it work
2009-08-31 16:55:03 +00:00
wagic.the.homebrew@gmail.com cc550cf7b9 Erwan
-fix righteous avengers cost
2009-08-31 12:53:18 +00:00
jean.chalard f407fa31ef J :
* Display the avatar in the damaged list if the attacker has trample.
2009-08-31 12:35:16 +00:00
wagic.the.homebrew@gmail.com 0454fb20ec Erwan
- fixed textures cache bug
- fixed one card in TMP
2009-08-31 12:22:43 +00:00
jean.chalard ca337ad653 J :
* Add missing resource
2009-08-31 11:59:22 +00:00
wagic.the.homebrew@gmail.com 794eec8bb8 Erwan
-code cleanup
-fix one card in TSP
2009-08-31 10:17:28 +00:00
solo81@web.de 368dfb94dc try to fix Dauntless Escort (ARB) 2009-08-31 08:00:30 +00:00
solo81@web.de 7601834803 Removed Merrow Reejerey and Judge of Currents (LRW) 2009-08-31 07:55:58 +00:00
jean.chalard 6dab048a9e J :
* Interface for damage assignment.
2009-08-31 02:00:33 +00:00
solo81@web.de c9f5519ba6 clean up, fixes (USG) 2009-08-30 16:23:10 +00:00
wagic.the.homebrew@gmail.com 8709b6d74a Erwan
-added toggle for attacker choice
2009-08-30 10:15:37 +00:00
wagic.the.homebrew@gmail.com e4a2c39683 Erwan
-removed unneeded file
2009-08-30 10:08:29 +00:00
wagic.the.homebrew@gmail.com 89419f90a7 Erwan
-moved card backs to Cache instead of ResourceManager
2009-08-30 08:11:38 +00:00
wagic.the.homebrew@gmail.com 5afd1a45a2 Erwan
-some memory leaks fixes
2009-08-29 14:16:58 +00:00
wagic.jeck 79fe55c71c Jeck - Quick patch to GuiCombat so it continues without the missing file. Did someone forget to commit OK.png? 2009-08-29 08:39:46 +00:00
wagic.jeck b13593c958 Jeck - Small fix to GameOptions theme/profile loading. 2009-08-29 05:34:56 +00:00
leungclj cd5acb8125 JON4TH4N - fix r737 2009-08-28 15:36:42 +00:00
jean.chalard 1496f9ecd2 J :
* Really not pop out when not my turn
2009-08-28 15:16:03 +00:00
jean.chalard fe6e811f0b J :
* Add a forgotten file.
2009-08-28 15:09:21 +00:00
jean.chalard 71e9a3b2cc J :
* Attempt not to display when it's not my turn.
  Does not work because of the internals of GameObs, will ask when I get
  the chance
2009-08-28 14:22:06 +00:00
jean.chalard 2ff279fad8 J :
* Order blocker interface.
2009-08-28 13:57:12 +00:00
wagic.the.homebrew@gmail.com 163d296bb5 Erwan
- removed useless "color=" lines
- Added color override for cards such as crimson kobolds (note: color should be after the "mana" line to avoid side effects)
2009-08-28 13:40:14 +00:00
solo81@web.de bbccb9f238 Added Collapsing Borders 2009-08-28 13:37:49 +00:00
solo81@web.de 9396b6dff9 Clean up, wording update, big fixes (ONS) 2009-08-28 13:19:22 +00:00
jean.chalard a8dfd62f3c J :
* Sync class/struct
2009-08-28 13:13:51 +00:00
solo81@web.de 2fdb669b27 Fixed some cards (EVE) 2009-08-28 12:39:14 +00:00
jean.chalard 9723f18827 J :
* Fix the last warning and reinstate -Werror on PSP.
2009-08-28 11:25:03 +00:00
solo81@web.de 32204e8c37 Removed Crazed Armodon (TMP).
3 "&&" in one auto-line does not seem to work right now.
2009-08-28 09:40:33 +00:00
wagic.jeck d1f6cdcd96 Jeck - Some warnings cleanup. 2009-08-28 05:40:10 +00:00
jean.chalard e5bbbb358f J :
* Fix a few compilation issues.
2009-08-28 01:58:57 +00:00
wagic.jeck 62e12380a4 Jeck - Stopgap update fixing WResourceManager slowdown until complete rewrite. 2009-08-27 23:24:55 +00:00
wagic.jeck c5b530bd3b Jeck - Forgot to commit headers. Ooops. 2009-08-27 14:13:39 +00:00
wagic.jeck db1730ee7f Jeck - Fixed issue with destructor not being called on OptionProfile, split settings into tabs. 2009-08-27 14:08:38 +00:00
wagic.the.homebrew@gmail.com 99aa284431 Erwan
-code cleanup
-memory leaks fixes
2009-08-27 13:32:12 +00:00
wagic.the.homebrew@gmail.com 890c893c94 Erwan
-a few warning fixes
2009-08-27 13:11:29 +00:00
wagic.the.homebrew@gmail.com a18b163b17 Erwna
-replace "new" with "NEW" for memory leak detection
2009-08-27 12:48:54 +00:00
leungclj b02dc11f0d JON4TH4N - reverted 2009-08-27 08:49:02 +00:00
wagic.jeck 807eea7ddb Jeck - As prior, but for sounds and music as well. Use CommonRes->ssLoadMusic / CommonRes->ssLoadSample. 2009-08-27 06:31:38 +00:00
wagic.jeck 5e14efed3c Jeck - CommonRes transparently finds themed versions of files. Use JRenderer::LoadTexture for unthemed files, and CommonRes::LoadTexture for themed files. Res/graphics/back.jpg renamed to Res/graphics/backdrop.jpg due to collision with sets/back.jpg. 2009-08-27 05:58:26 +00:00
wagic.the.homebrew c6406737c5 Erwan
-fixed a few cards
2009-08-27 04:56:32 +00:00
wagic.jeck 6728794ce9 Jeck - Quick crashfix when loading without a profiles directory, slight keypad modifications. 2009-08-27 03:17:25 +00:00
solo81@web.de 5aa0aa9374 Several card fixes 2009-08-26 23:04:57 +00:00
wagic.jeck 355ee7a271 Jeck - Support for user profiles, preliminary theme support, virtual keypad, options GUI update. Still a bit unorganized, but it works. 2009-08-26 20:13:09 +00:00
wagic.the.homebrew@gmail.com 0dfa3f2e16 Erwan
-fixesRockslide Elemental, Welkin Hawk
-Added messages for Manapool updates
-Cleaned up ManaProducer code
2009-08-26 14:30:24 +00:00
jean.chalard 5e18cdb25d J :
* Fix the mana consume event so as to consume the right number of manas
2009-08-26 14:25:55 +00:00
wagic.the.homebrew 4d3c6394a8 Erwan
-Creakwood liege bug fix
2009-08-26 00:34:39 +00:00
wagic.the.homebrew@gmail.com 3b8f5fdd7e Erwan
- a few card fixes
2009-08-25 12:50:16 +00:00
wagic.the.homebrew@gmail.com fb0dccb7f3 Erwan
-added possibility for tester to take control of the test suite
2009-08-25 11:55:07 +00:00
wagic.the.homebrew@gmail.com 0454d39f79 Erwan
-fixed GameObserver::receiveEvent
2009-08-23 10:52:10 +00:00
wagic.the.homebrew@gmail.com a2149131fb Erwan
- fix bug eventBlocker
2009-08-23 10:48:06 +00:00
wagic.the.homebrew@gmail.com 846f3b2ffc Erwan
- Fixed some segfaults in Test suite
2009-08-23 10:22:54 +00:00
leungclj de8404df97 JON4TH4N - fixes, need confirmation 2009-08-23 03:49:31 +00:00
leungclj 6fdc87ef92 JON4TH4N - since when indestructible was working? 2009-08-23 03:16:45 +00:00
leungclj b9d1f86c59 JON4TH4N - fix 2009-08-23 03:06:45 +00:00
wagic.the.homebrew@gmail.com f988ff04cb Erwan
- Test suite "fixed". Tests involving combat (almost all of them) fail. Also 4 tests generate segfaults
2009-08-22 23:57:14 +00:00
wagic.the.homebrew@gmail.com 61ebbbe497 Erwan
- shop shows default thumbnails if no image available
2009-08-22 12:31:14 +00:00
wagic.the.homebrew@gmail.com a59fb35d78 -AlternatRender calls fixes
-Replaced "borderline" default cards design with something more generic
2009-08-22 12:12:43 +00:00
wagic.the.homebrew@gmail.com 34126f2393 Erwan
- a few graphical fixes in shop and DeckViewer
2009-08-22 10:42:15 +00:00
jean.chalard 53ebe1de79 J :
* Use dt for the hand opening animation.
2009-08-22 07:59:21 +00:00
wagic.the.homebrew@gmail.com 01d68f9b3c Erwan
-windows makefile update
2009-08-22 07:04:54 +00:00
jean.chalard 9eccae4e1e J :
* Unify struct/class for HandLimitor.
2009-08-22 06:46:08 +00:00
jean.chalard 384fd1ad08 J :
* Fix a warning
2009-08-22 06:43:49 +00:00
jean.chalard 1a4b90f71d J :
* Some compile warnings/errors fixed
2009-08-22 06:39:29 +00:00
jean.chalard f2ac56a7e2 J :
* Define const values in the cpp file.
2009-08-22 06:33:32 +00:00
jean.chalard 60be60b793 J :
* Help visual understand the scope of loop-defined iterators.
2009-08-22 06:30:59 +00:00
jean.chalard 8f8db8df14 J :
* Stop using the deprecated drand48().
* Define constants in the cpp file.
2009-08-22 06:27:03 +00:00
jean.chalard 73d27eec05 J :
* Unify Pos' forward declarations with its definitions.
2009-08-22 06:18:33 +00:00
jean.chalard f4ee432765 J :
* Define floats in the .cpp instead of the .h (visual says I should, that's why)
2009-08-22 06:16:04 +00:00
jean.chalard b2f75d45e7 J :
* Add missing files.
2009-08-22 06:01:52 +00:00
jean.chalard 3349f974f1 J :
* New interface.
* This breaks a lot of things. It is not feature-equivalent. It
  probably doesn't compile under windows and doesn't work on PSP.
* Damage is not resolved any more. This will have to be fixed.
* Blockers can't be ordered any more. This will have to be fixed.
* A lot of new art is included.
2009-08-22 05:59:43 +00:00
wagic.the.homebrew@gmail.com bf4262c0a0 Erwan
- New shop GUI. (don't mind the back image, it will change soon)
2009-08-22 00:46:45 +00:00
solo81@web.de ffa0c9b057 Fixed Battlewand Oak (LRW) 2009-08-22 00:39:52 +00:00
solo81@web.de 4533213bd8 Removed Cruel Revival (ONS) 2009-08-21 09:06:38 +00:00
solo81@web.de 1bf3458478 Some bug fixes 2009-08-21 09:01:53 +00:00
solo81@web.de 0bc3cbb66e Fixed Frog Tongue (TMP) and Overrun (M10) 2009-08-19 13:25:55 +00:00
solo81@web.de 9abf35fca9 Fixed Harpoon Sniper (LRW), Second Thoughts (ODY) and Solemn Offering (M10) 2009-08-19 13:13:52 +00:00
wagic.the.homebrew@gmail.com fd8dd58706 Erwan
-language oatch tool (sync.pl) bug fix
-French _cards.dat updates to 0.8.1
2009-08-16 06:13:36 +00:00
wagic.the.homebrew@gmail.com 592713338d Erwan
- language files updates
2009-08-16 06:12:28 +00:00
wagic.laurent 8f5e60ebd5 Laurent - small Bug fix ARB 2009-08-15 17:00:57 +00:00
wagic.the.homebrew@gmail.com 02d6e5e8f7 Erwan
- InGame Text display is now an option 
- Fixed *Duos in SHM, benalish knight, beeligerent hatchling, removed demigod of revenge (needs extensive testing)
- added "ueot" for p/t and abilities gaining in the parser, as part as the fix for safehold duo
2009-08-14 13:17:58 +00:00
wagic.the.homebrew@gmail.com c757a791c2 Erwan
- removed viridian shaman
- small bug fixes
2009-08-11 13:23:14 +00:00
solo81@web.de b822d841a0 refixed r675 2009-08-11 06:05:59 +00:00
solo81@web.de 0999e0ee6d Fixed Unyaro Bees (TSP) 2009-08-10 21:01:57 +00:00
solo81@web.de 93c4a2147c Fixed Centaur Safeguard 2009-08-10 19:35:51 +00:00
solo81@web.de 9515f056b8 Fixed Reya Dawnbringer 2009-08-10 18:11:34 +00:00
solo81@web.de b9c5d65b38 Some fixes (RV) 2009-08-10 15:48:27 +00:00
solo81@web.de 42d27c0af3 Some fixes (LRW) 2009-08-10 14:49:02 +00:00
wagic.the.homebrew@gmail.com 258e08786d Erwan
- fixed a few cards
- removed extra phasebar
- doesnotuntap and protection from... will now work as auras
2009-08-10 13:22:22 +00:00
wagic.superhiro f3a25b3f3d Fixed Mesa Enchantress. 2009-08-10 12:26:20 +00:00
wagic.the.homebrew@gmail.com 27af442cb5 Erwan
-a few card fixes
2009-08-10 12:15:49 +00:00
wagic.laurent 21bf3b00bd Laurent - Small correction to LRW. 2009-08-10 06:15:56 +00:00
wagic.laurent bdb0a06081 Laurent - Forgot to commit MTGAbility (necessary for morbid bloom) 2009-08-10 05:33:03 +00:00
wagic.laurent d30ca1db2e Laurent - Some additions, all tested and working. you can see in the todo.dat some tested and not working ... I don't understand why wrath of marit lage (ICE) does not work ??? 2009-08-10 05:21:57 +00:00
wagic.the.homebrew@gmail.com 4f76f50cdd Erwan - fizzle spells that have invalid targets 2009-08-09 11:18:05 +00:00
leungclj 58c90c47ca Jonathan - rerefix r665 2009-08-07 09:55:26 +00:00
leungclj 9e796ddda7 Jonathan - refix r664 2009-08-07 08:56:15 +00:00
solo81@web.de 163157083d Some fixes (10th) 2009-08-07 08:31:06 +00:00
leungclj c399915d40 2009-08-06 14:51:22 +00:00
wagic.laurent 064143fa81 Laurent few bug fix in CHK (basic land missing, wrong idea, wrong rarity).. one addition to FEM (vodalian knight) and one correction to M10.. 2009-08-01 11:26:08 +00:00
wagic.the.homebrew@gmail.com 4570879624 Erwan
- attempt to fix a few issues with threaten
- removed Lands from M10 boosters (use rarity=L instead of Rarity=C)
2009-08-01 06:14:36 +00:00
wagic.the.homebrew@gmail.com 01f4797de8 Erwan
-fix card bugs in M10
2009-08-01 00:34:02 +00:00
wagic.the.homebrew@gmail.com a90f357942 Erwan
-fix compilation issues
2009-08-01 00:31:21 +00:00
wagic.laurent 717fbd2f4f Laurent - Few addition, all tested and worked (exception Disciple of Vault (MRD) & Mercadia's downfall (MRQ) not tested yet...) 2009-07-31 22:00:43 +00:00
wagic.laurent eda36220f6 Laurent - Corrected bug following wololo instruction. + found two small bug in CFX (fixed) and POR... for thundermare i'm not sure I fixed it and that it will work correctly... 2009-07-31 07:37:58 +00:00
jean.chalard 8366169893 J :
* Add a scale factor on the phase bar.
2009-07-31 02:46:22 +00:00
wagic.laurent 5b5c528e94 Laurent - Correction to R654 made a mistake with mind spring and mind shatter (although mind spring can be very easely hardcoded). 2009-07-30 15:34:10 +00:00
wagic.laurent baab97331f Laurent - few addition to M10 mainly aliases from 10E and RV except Jackal Familiar and Burning Inquiry (not tested yet, will report if any issues).
Grü
2009-07-30 15:29:42 +00:00
wagic.the.homebrew@gmail.com aad25e8fb0 Erwan
- fix corrupt, shepherd of rot, imaginary pet, reclusive wight, rhox meditant, immaculate magistrate, wellwisher
2009-07-30 14:16:04 +00:00
wagic.laurent 9e498a0fb5 Laurent - Few addition to 10E all tested and working, although Skyshroud Range could be seen as boderline (since the abilities should be only at your turn) + underworld dream will deal damage if you "search" for a card and put in in your hand but not if you put it in play (not sure about the ruling here...)
Also you can see in the todo.dat I tried Sift, Stampeding Wildbeast and Denizen of the Deep, all not working...

Also the following cards can probably be parsed: 1205: //Lifetap; 1625: //Lifeblood; 2593: //Thoughtleech and removed from both MTGAbility.cpp and Allabilities.h (for AGiveLifeforTapped***)

Grü

L.
2009-07-30 14:15:33 +00:00
leungclj c471a9265a Jonathan - (TSP) removed Harmonic Sliver, its ability has turned into "when Harmonic Sliver comes into play, destroy all Sliver you controll" =.=".... 2009-07-30 13:16:33 +00:00
wagic.the.homebrew@gmail.com 7a8a17bd99 Erwan
-fix bloodhall ooze
2009-07-29 13:22:39 +00:00
leungclj 07ff992e4d Jonathan - so far during my testing, corrupte doesn't do damage to target player, only to creature, but still gives correct life gain to user.
Removed Reclusive Wight + Imaginary Pet, they don't work.
(10E) Stronghold Discipline is doing double the amount of life lost.

Going to test on more aslongas cards, appears some pharse doesnt go with aslongas at the moment.
2009-07-29 10:02:19 +00:00
wagic.the.homebrew 5696b650ea Fixed a few bugs mentioned by abrasax 2009-07-29 07:55:33 +00:00
wagic.the.homebrew be93e1f6d1 Erwan
-added some cards using the recent changes in draw,life,deplete. There are still lots of them to add I think
- fixed trumpet in M10
2009-07-29 04:34:27 +00:00
leungclj 8149881001 Jonathan - some clean up 2009-07-29 01:11:33 +00:00
wagic.the.homebrew@gmail.com 62048ef486 Erwan
- code cleanup
2009-07-28 14:15:59 +00:00
leungclj cd1b5e3b3b Jonathan - MTGAbility updated 2009-07-28 13:44:53 +00:00
wagic.the.homebrew@gmail.com b775eec20f Erwan
- barbed sliver, sedge sliver, basal sliver bug fix
2009-07-28 13:33:30 +00:00
jean.chalard 22c7f02fe9 J :
* Make the GetTime() function behave under Linux the same way it
  behaves under other OSes.
2009-07-28 12:43:04 +00:00
wagic.the.homebrew@gmail.com c449c6782b Erwan
-removed mind rot test (mind rot is not codable)
-removed "cantbeblockedby" creatures
2009-07-28 10:56:43 +00:00
leungclj 297fdef4de Jonathan - (10E) small fix 2009-07-28 04:04:36 +00:00
wagic.the.homebrew@gmail.com d00a5f07c3 Erwan
-bugfix deck stats
2009-07-27 11:06:25 +00:00
wagic.the.homebrew@gmail.com bb4cb3be7d Erwan
- fix soul warden
- fix counters (chainbreaker)
- removed cards that do not work
- updated version
2009-07-27 10:33:11 +00:00
solo81@web.de 7d672e091a updates & fixes (EXO) 2009-07-27 08:24:09 +00:00
solo81@web.de aa872cbc2f some fixes (CHK) 2009-07-27 08:04:10 +00:00
solo81@web.de 56c4ab2262 some fixes 2009-07-27 07:44:30 +00:00
solo81@web.de 616a4777f3 some fixes. 2009-07-27 07:38:23 +00:00
leungclj aeec36fd0a Jonathan - (10E) updated Birds of Paradise 2009-07-27 03:52:12 +00:00
wagic.laurent 192b311e05 Laurent - Few correction (CHK) and some additions (RAV) 2009-07-26 19:01:45 +00:00
leungclj 4e440998c1 Jonathan - some random update 2 2009-07-26 09:27:04 +00:00
leungclj cd040a51ec Jonathan - some random update + my first edition on MTGAbility.cpp + not tested Cruel Tutor (POR), I hope it doesn't shuffle after the card is put on to the top of the library..... 2009-07-26 08:00:23 +00:00
wagic.the.homebrew@gmail.com 94e199d92a Erwan
- some cleanup (gcc warnings)
2009-07-26 07:27:27 +00:00
wagic.the.homebrew@gmail.com 514b507e91 Erwan
- fixing a potential segfault
2009-07-26 06:20:18 +00:00
wagic.the.homebrew@gmail.com 129334b93f Erwan
-fixed shop refresh method problem (would not save correctly)
2009-07-26 06:08:39 +00:00
leungclj ada385d358 Jonathan - another one of those update 2 2009-07-26 04:23:12 +00:00
leungclj 91f8dbd355 Jonathan - another one of those update 2009-07-26 03:53:47 +00:00
leungclj ff681c9d74 Jonathan - (10E) updated 2009-07-26 03:27:42 +00:00
wagic.the.homebrew@gmail.com bf8d4fd827 Erwan
- bug fixes (civic wayfinder, fault line)
- target's quad is displayed for generictargetabilities
- added menutext for powertoughnessmodifier
2009-07-26 03:15:52 +00:00
wagic.superhiro ee61d7ad6b Fixed Balefire Liege. 2009-07-25 19:20:01 +00:00
wagic.the.homebrew@gmail.com 76d386be06 Erwan
- fixed a bug with bottle gnomes (would give life to opponent even if you steal control)
- huge update for abilities life,draw,damage,deplete,discard in the parser. This breaks some cards (so we need to fix them) but allows more flexibility in the future. See my post on the forum
2009-07-25 14:57:27 +00:00
wagic.the.homebrew@gmail.com bfccf6d55a Erwan
-bug fix: AI's decks difficulty is displayed again
2009-07-25 11:49:02 +00:00
wagic.the.homebrew@gmail.com 8cc2fc9d52 Erwan
- The AI can now use May Abilities
2009-07-25 11:43:36 +00:00
wagic.the.homebrew@gmail.com 760910709a Erwan
-fix bug with Regal force
2009-07-25 03:16:55 +00:00
wagic.the.homebrew@gmail.com 719c218552 Erwan
- fixed Beacon of unrest bug
- Fixed Kraken's eye bug
2009-07-25 02:57:30 +00:00
leungclj 3c2032a99e Jonathan - (r607) fix 2009-07-24 15:46:44 +00:00
leungclj 7e544c93ba Jonathan - added few cards 2009-07-24 15:20:53 +00:00
leungclj 89954a76e1 Jonathan - (MRD) added a few cards 2009-07-24 06:13:55 +00:00
wagic.the.homebrew@gmail.com 328aa1c9f4 Erwan
- reduced price of boosters
- Sets need to be unlocked in order to be accessed from the shop
- Added a "refresh" option in the shop
2009-07-23 13:44:50 +00:00
wagic.superhiro 749d0c1c11 Updated soldier deck to new format. Still needs a description, though. 2009-07-22 22:08:22 +00:00
wagic.superhiro 16f9075e3b Added deck24 - soldiers with a lot of M10 cards. 2009-07-22 14:12:00 +00:00
leungclj 5adf3e768c Jonathan - (ALA) added a few cards 2009-07-22 13:33:36 +00:00
leungclj 93bf4b96a8 Jonathan - (r607) fix 2009-07-22 10:28:07 +00:00
leungclj 92daa3aad6 Jonathan - fixing my mistakes 2009-07-22 07:18:57 +00:00
wagic.the.homebrew 75d801c632 Erwan
- Added all counter cards I could find that would work
2009-07-22 02:25:31 +00:00
wagic.the.homebrew 57c58805a8 Erwan
-small fix counters
2009-07-22 01:03:59 +00:00
wagic.superhiro 6e05d185ab Fixed Elvish Archdruid. 2009-07-21 16:04:31 +00:00
wagic.superhiro 6d5bb3c7c1 Fixed Windswept Heath. 2009-07-21 11:34:53 +00:00
wagic.the.homebrew@gmail.com 7f93e03c9f Erwan
- added counters to parser. They can be used as an effect, not a cost!!! counter(p/t,n) where n is the number of counters. if n is ommitted, it is 1, if it is negative, it means "remove" counter
2009-07-21 11:10:30 +00:00
leungclj 678acc0c7a Jonathan - (r601) fix 2009-07-21 09:52:55 +00:00
wagic.laurent dc80253bde Laurent - Fix to R600 + few cards added to EVE 2009-07-21 09:07:05 +00:00
wagic.laurent 7ccac4bb9e Laurent - Removed useless code + updated corresponding cards.dat 2009-07-21 08:50:40 +00:00
leungclj f567729633 Jonathan - (LRW) added a few cards, (CFX) removed Exploding Borders 2009-07-21 06:10:05 +00:00
wagic.the.homebrew 5dc37d2cf6 Erwan
-Added a few cards
2009-07-21 04:36:54 +00:00
leungclj 5a31bfd437 Jonathan - (CFX) added a card 2009-07-21 03:54:06 +00:00
wagic.the.homebrew c90d1cd695 Erwan
-Added M10 Cards
2009-07-21 02:40:56 +00:00
leungclj af9efc1ea2 Jonathan - (r594) fix 2009-07-21 02:19:43 +00:00
wagic.the.homebrew 2ca0c75c19 Erwan
-Added cards (search in your library + put into play tapped)
- Fixed issues in CHK
2009-07-21 01:12:56 +00:00
wagic.the.homebrew@gmail.com 5a1b75b8d9 Erwan
-fixed bug with Rampant growth. Other cards that do the same kind of thing can now be coded
2009-07-20 13:56:30 +00:00
wagic.the.homebrew@gmail.com 82204fd8b3 Erwan
-Added a few cards
2009-07-20 12:05:12 +00:00
wagic.the.homebrew@gmail.com b33ea8a1e1 Erwan
-cleanup + added cards (CHK)
2009-07-20 11:02:05 +00:00
wagic.the.homebrew@gmail.com ae18efe144 Erwan
-Added a few cards
2009-07-20 08:27:44 +00:00
leungclj 3d6d0fbea6 Jonathan - (r587) fix 2009-07-20 08:05:26 +00:00
leungclj edcffd3dca Jonathan - added few cards 2009-07-20 07:51:05 +00:00
wagic.the.homebrew@gmail.com 8b6148b4b1 Erwan
-added a few cards
2009-07-20 07:38:44 +00:00
wagic.the.homebrew@gmail.com 9286f1b305 Erwan
-Added a few cards
2009-07-20 06:20:54 +00:00
wagic.the.homebrew@gmail.com a376e8110b Erwan
-added "this" as valid target (still needs some work)  see cathodion
- Added mythic rares in boosters
2009-07-20 03:35:26 +00:00
wagic.the.homebrew@gmail.com 8d62b9288c Erwan
- A few card fixes
2009-07-19 14:23:29 +00:00
wagic.the.homebrew@gmail.com cca8d0f600 Erwan
-fixed bug with elvish promenade (and various instants/sorceries)
-Fixed bug with some auras that wouldn't go to graveyard in some conditions
2009-07-19 06:42:00 +00:00
wagic.the.homebrew@gmail.com 9b263eaee1 Erwan
- Dragon Whelp bug fix
- Rampage bug fix
- AI can use mana abilities.
2009-07-19 04:19:24 +00:00
leungclj 72e10fab24 Jonathan - (r580) fix 2009-07-19 03:44:44 +00:00
leungclj 09d0d159c6 Jonathan - (FEM) clean up 2009-07-19 03:39:48 +00:00
wagic.the.homebrew@gmail.com 01c62d04bf Erwan
-removing useless code
-fixed a few cards (incorrect set)
2009-07-18 14:26:58 +00:00
wagic.the.homebrew@gmail.com da80398340 Erwan
-removed useless file from the project
2009-07-18 12:59:05 +00:00
wagic.the.homebrew@gmail.com 4eb6cbf683 Erwan
- missing file
2009-07-18 10:50:26 +00:00
wagic.the.homebrew@gmail.com 70ad549611 Erwan
-fixed bug when re-ordering blockers
2009-07-18 09:31:34 +00:00
wagic.the.homebrew@gmail.com 3e7ecb3016 Erwan
- fixed a bug (crash if a card that had an ability until end of turn would be put into the graveyard before the end of the turn)
- Added a new game Mode : Random 1 or 2 color.
2009-07-18 08:50:14 +00:00
wagic.the.homebrew@gmail.com 4606d88048 Erwan
- fix with deck names overwritten when saving
- Added "premade" decks directory for people who don't want to create their own decks
2009-07-18 05:42:20 +00:00
wagic.the.homebrew@gmail.com 241d53edd2 Erwan
- Added a few cards, some untested (@...may: life:1)
2009-07-16 14:33:56 +00:00
wagic.the.homebrew@gmail.com 951065a59c Erwan
- no more 5 decks limitation for Player
- Player decks can be given a name/description the same way we do for the AI. No PSP Gui for that yet though, has to be done outside of Wagic (PSPWrite ?)
2009-07-16 11:48:59 +00:00
leungclj 03530b7e17 Jonathan - added few cards 2009-07-16 05:49:33 +00:00
wagic.the.homebrew@gmail.com 8681987f89 Erwan
- fix PSP Compilation issue
- Stillmoon cavalier (and other "until end of turn" activated abilities) bug fix
- attempt at fixing multi abilities that work "only from time to time"
2009-07-15 14:06:47 +00:00
solo81@web.de c672ec99ee Added some cards (TMP) 2009-07-14 17:22:53 +00:00
solo81@web.de 870892cc4f Removed Sliver Legion (not soft-codable yet) 2009-07-14 16:47:17 +00:00
solo81@web.de 4d0a89335b Removed Scourge of the Kher Ridges 2009-07-14 16:39:51 +00:00
leungclj 5fe25211d2 Jonathan - (ODY) added a few cards 2009-07-14 14:11:48 +00:00
leungclj a943dec8a7 Jonathan - added few cards 2009-07-14 13:57:37 +00:00
wagic.the.homebrew@gmail.com 2ba5fcb955 Erwan
- Added "@movedTo(...) trigger. See argothian enchantress in USG
2009-07-14 13:29:12 +00:00
wagic.the.homebrew@gmail.com 53e49d571f Erwan
- More fix for Captain of the watch
2009-07-14 10:34:09 +00:00
wagic.superhiro c17237be85 Fixed Captain of the Watch. Not sure if abilities=vigilance is needed though. 2009-07-14 09:27:15 +00:00
wagic.the.homebrew 1ba8407a51 Erwan
- Updated M10. some cards in the todo.dat can still be borderline added but require testing.
2009-07-14 03:39:55 +00:00
wagic.the.homebrew@gmail.com 12d8224e45 2009-07-13 12:37:44 +00:00
wagic.the.homebrew@gmail.com da6542f9a7 Erwan
- Adding M10 todo.dat
- removed dead code
2009-07-13 12:35:13 +00:00
leungclj 16280c7ecb Jonathan - added few cards 2009-07-13 08:55:25 +00:00
leungclj 7f91770850 Jonathan - (r555) fix 2009-07-13 07:44:10 +00:00
leungclj 03f48bccd8 Jonathan - (r555) fix 2009-07-13 07:40:05 +00:00
leungclj f3a6fcbf1b Jonathan - added few cards 2009-07-13 07:30:45 +00:00
leungclj 8b1d19ad41 Jonathan - (r552) fix 2009-07-12 15:16:40 +00:00
wagic.the.homebrew@gmail.com 31ec10b464 Erwan
- Added a few cards
2009-07-12 13:52:27 +00:00
wagic.the.homebrew@gmail.com ab445c9758 Erwan
- Added a few cards
- Creature attacks, blocks, is re-ordered in blocking list events
2009-07-12 12:27:55 +00:00
leungclj feedb16eae Jonathan - (EXO) updated 2009-07-12 09:10:39 +00:00
wagic.the.homebrew@gmail.com 0ecbfb5d82 Erwan
- Triggers made more generic in the parser
2009-07-12 07:47:54 +00:00
wagic.the.homebrew@gmail.com 3350ad6d03 Erwan
-added telkinetic sliver. This confirms that All lords that give a "complex" ability can now be added in cards.dat, as long as we can write the ability.
For example: lord(sliver) {T}:tap target(*) for telkinetic sliver. Please test and let me know
2009-07-12 03:02:38 +00:00
wagic.the.homebrew@gmail.com cf45e00331 Erwan
- Fix compilation issue with gcc
2009-07-12 02:37:24 +00:00
wagic.the.homebrew@gmail.com c8333e76b1 Erwan
- Updated Parser mechanism. Right now this doesn't change functionalities much, but should be more readable, and make it easier to code some new abilities in the future
- Fixed regenerate, broken with r532
- Death Ward now works
- I think "&&" now works with all abilities, needs to be tested...
2009-07-11 15:59:51 +00:00
leungclj 307c41c563 Jonathan - (ONS) fixed, added, reorder 2009-07-06 01:50:59 +00:00
leungclj 77e5e00ea5 Jonathan - (TSP) fixe Icatian Crier 2009-07-06 01:14:28 +00:00
wagic.the.homebrew@gmail.com 79d0a09de1 Erwan
- fix a bug with Arcanis the omnipotent (see tests)
2009-07-05 11:38:12 +00:00
wagic.the.homebrew@gmail.com 59bc3123e2 Erwan
-added a few cards for TSP
2009-07-05 11:17:12 +00:00
wagic.the.homebrew@gmail.com 11af671496 Erwan
- Added "Evil twin" Mode to unlock
2009-07-05 10:08:13 +00:00
wagic.the.homebrew@gmail.com d8ac4a49b1 Erwan
-translation updates (including fr.txt)
2009-07-05 09:06:51 +00:00
wagic.the.homebrew@gmail.com 810e1edec2 Erwan
-removing garbage file
2009-07-05 08:15:56 +00:00
wagic.the.homebrew@gmail.com 92027d5111 Erwan
- Adding french translated sets from PSPGen
2009-07-05 08:14:35 +00:00
wagic.the.homebrew@gmail.com ddc4636bf6 Erwan
-fixed "lord changes controller" bug
2009-07-05 04:49:21 +00:00
wagic.the.homebrew@gmail.com 20a0322ebb Erwan
- Added onslaught, future sight, exodus, champions of kamigawa, Fallen empires, Time Spiral
- NOT TESTED, I just made sure the files where not crashing Wagic on the PC version. Have fun updating these files, guys :)
2009-07-04 14:49:43 +00:00
wagic.the.homebrew@gmail.com b1e35a6bcb Erwan
- Moved "extraPayment" cancel verification into ActionLayer (was in GuiLayers)
- added "HUDDisplay" MTGAbility (displays damage/graveyard info)
- Added option to NOT interrupt own's spells and abilities. Allows smoother gameplay. We should add a "quick options" menu ingame to change those options on the fly
2009-07-04 14:10:21 +00:00
wagic.the.homebrew@gmail.com 5ff90a6f33 Erwan
- fix a risk for segv in DamageResolverLayer
2009-07-04 07:48:46 +00:00
wagic.the.homebrew@gmail.com d52f06d98d Erwan
- Magic 2010 - blockers ordering
- Fixed a memory leak introduced in a previous revision (foreach)
2009-07-04 04:15:05 +00:00
leungclj dfeada17a2 Jonathan - clean up for consistancy 2009-07-01 05:58:39 +00:00
wagic.laurent 01316167fc Laurent - Update to the foreach parser with "add" to be used for instant and sorcery (e.g. spoil of evil) also removed/added corresponding cards (spoil of evil, song of the damned and ancestor chosen).
Also added the ability "INDESTRUCTIBLE" did not test it yet + not sure about the ruling ...
2009-06-30 21:29:59 +00:00
leungclj 6c335232c7 Jonathan - a lot of card added, but not quite sure about (MRQ) Honor the Fallen 2009-06-30 15:18:34 +00:00
wagic.laurent aa4f5793b8 Laurent - Updated MoveAll, Foreach and the ALifeModifierPutinplay.
ALifeModifierPutinplay is now with TargetChooser, means it can probably be used for a wider range of cards (need to test megrim...).
Also updated MoveAll (should now be able to target graveyard and hand).
Last update is on the "countcards" means all foreach should now take graveyard and hand as legal target... .
I did not test these additions yet...but test suite runs fine (it includes ankh of mishra so it means the first modification should go fine...).

If everything work fine it means also some hardcoded cards could be removed and softcoded like spoil of war, spoil of evil, ancestor choosen.. etc...

Grü.

L.
2009-06-30 13:38:55 +00:00
leungclj 2ccec4caf4 Jonathan - (INV) minor correction 2009-06-30 07:11:03 +00:00
leungclj df2b24ee41 Jonathan - (MRD) added Cloudpost 2009-06-30 06:56:53 +00:00
leungclj 3015d85324 Jonathan - (MRQ) added Spontaneous Generation 2009-06-30 06:41:52 +00:00
leungclj ba9edc6692 Jonathan - (USG) added Priest of Titania, Serra's Sanctum, Tolarian Academy 2009-06-30 06:11:12 +00:00
leungclj 15ddd2eec5 Jonathan - (SHM) - theres been a mistake with the {T} & {Q}, its been corrected also with Pili-Pala removed. 2009-06-30 04:21:10 +00:00
leungclj 12b85ed5af Jonathan - (ALL) replaced all ' &quot; ' with ' " ' 2009-06-30 04:07:21 +00:00
wagic.the.homebrew 454bad67d8 Erwan
- it translation file
2009-06-30 00:58:17 +00:00
wagic.laurent d9265090fd Laurent - Added "add" to the foreach parser... also now functions also with add:{x}.. see addition from USG.. Will add the other one later (or somebody else can do it)...
I tested this one and it works...
2009-06-29 17:23:09 +00:00
wagic.laurent 6097b1282b Laurent - Added draw/token to the foreach parser (allow to sligthly reduce the number of lines in MTGAbility.cpp and also add few cards to different cards.dat.)
NOTE that all these additions to the foreach parser are only available for the "inplay" area... "countcards" will need to be updated in order to have thing such as graveyard or hand to be taken into consideration (but when it will be done cards such as Spontaneous Generation - MRQ, could be added)
Also updated (tentatively) the "cantbeblockedby" in the parser it still does not work...ARG... but I can feel that I'm not far away from the solution...
We need also to go through some of the cards.dat to be sure we are not missing any possible addition ...
2009-06-29 11:11:41 +00:00
wagic.the.homebrew@gmail.com 0218680ae0 Erwan
- Added translated cards.dat for German and french. You can keep them up to date with sync.pl
2009-06-28 13:06:32 +00:00
wagic.the.homebrew@gmail.com 85931c6eb2 Erwan
- updated sync script
2009-06-28 12:52:36 +00:00
wagic.laurent dcdd0a18d8 Laurent - Added damage to the foreach parser (finally did it).
I tryed everything for weeks, adding lines of codes with no success...Finally the answer was so simple as 2 lines of code...
Also added/removed from code Spitting earth and corrupt... Need to chase and remove all the lookalike/alias in the rest of the code. And also as usual will require further testing...

Grü.

L.
2009-06-27 09:49:31 +00:00
wagic.the.homebrew@gmail.com d5a253d147 Erwan
- Added a perl script to synchronize _cards.dat translations with latest "original" _card.dat
2009-06-26 14:36:24 +00:00
wagic.the.homebrew@gmail.com 910401a2e5 Erwan
- Lord+Regenerate (zombie master) memory leak fix
- "... All" memory leak fix
- Sacrifice target memory leak fix
2009-06-26 11:38:53 +00:00
wagic.laurent 708af7b675 Laurent - Added a generic ankh of mishra/dingus egg. Tested ok on ankh of mishra. Also added Soul Warden (10E) with this and Angelic Chorus (10E). Also could be made more generic and eventually at a certain point of time put in the parser....
Test suite passed with exception of Hymn of rebirth ?? also at least dingus egg is also OK.

Ideally the whenever thing should be coupled with a kind of targetchooser thing to be put in the parser (would also allow colored cards...) ..

Todo: add a may ability option since lot of cards with this function use "may"  (e.g. Deathgreeter - ALA and Leonin Elder - MRD)

I did not remove the now obsolete code dingus egg and ankh of mishra...will wait until new portion of code is tested  more..

Grü
2009-06-26 01:03:56 +00:00
wagic.the.homebrew@gmail.com 630a239f31 Erwan
- tap/untap of a card now sends an event
2009-06-25 14:23:21 +00:00
wagic.the.homebrew@gmail.com 3d414f74b3 Erwan
- Fix a memory leak with Sacrifice costs
2009-06-25 13:20:27 +00:00
wagic.the.homebrew@gmail.com 71cc79b949 Erwan
- Replaced the BasicAbilities Array with a map. This reduces the size of MTGCard from >500 bytes to 392. Should be cool for people who have memory issues
2009-06-25 11:09:51 +00:00
wagic.laurent f643f87b83 Laurent - Clean-up from code.
PLEASE REVIEW this one.

I removed all unusued portion of code, some other cleaning work could be performed (will discuss in forum).

Also just added "@each" as triggered ability in order to have it work properly with most cards "currentplayer" should be added to the TargetChooser.
2009-06-23 22:10:42 +00:00
wagic.the.homebrew@gmail.com ca3c2d30ab Erwan
- Magic 2010: Combat Damages don't go on the stack anymore
- Comp rules: "goes to graveyard" effects don't go on the stack anymore
- Regenerate "fixed" (untested)
- Basic "ReplacementEffect" mechanism for damage prevention. Can be extended to other replacement effects with some limits.
- TODO: Damages don't go on the stack, the abilities that create them do.
2009-06-23 14:22:00 +00:00
wagic.laurent 5dc98359c1 Laurent - Added Threaten (10E) - Steal creature until end of turn. Return creature at end of turn to opponent and also "untap" it.. not sure if it is quite right, but does not make any difference since it is at the end of turn just before the untap phase of opponent.
Few comments: 

I spent quite some time to make it work... made some test all working but experienced some random crash in windows version (debugging did not help much) don't know if i broke something or if it is due to other SVN addition.

Some other cards are similar and could be hardcoded/aliased (Overtake - MRQ, Ray of Command - ICE,MIR, Slave of Bolas - ARB, Spinal Embrace INV, Unwilling Recruit EVE) we could discuss about them...

I think it is the last card that was missing for the red premade 10E deck. Now 10E has 255 cards and is the set with the most cards...

Grü.
L.
2009-06-23 00:43:31 +00:00
wagic.laurent be086640eb Laurent - Added 8 cards to SHM (Flow of ideas, Fracturing Gut, Howl of the Night Pack, Poison the Well, Smash to Smithereens, Spiteflame Witch, Thoughweft Gambit, Windbrisk Raptor)
+ Forgot to upload Targetchooser.cpp by R499 :D  (needed for opponentshroud..)
2009-06-22 19:50:26 +00:00
solo81@web.de 1cdeebd3e1 Added Scattershot Archer 2009-06-22 17:10:36 +00:00
jean.chalard 2f3259fd55 J :
* Add the rolling phasebar.
* This is a preview version. It shares most of the code with the definitive
  version, but when the real code is checked in, this will be deleted.
2009-06-22 14:45:27 +00:00
solo81@web.de ed9c739963 Added Slippery Bogle 2009-06-22 08:14:53 +00:00
solo81@web.de 3f52770075 Added Privileged Position 2009-06-22 08:10:57 +00:00
solo81@web.de 256322f0fc Added Plated Slagwurm 2009-06-22 08:00:50 +00:00
solo81@web.de cdf5179cf1 Added Leonin Abunas 2009-06-22 07:57:07 +00:00
solo81@web.de f67a241f86 Removed Flame Jab and Monstrify (Retrace is not implemented). 2009-06-22 07:46:27 +00:00
solo81@web.de af008ff273 Added Troll Ascetic (10E,MRD) 2009-06-22 07:42:53 +00:00
wagic.laurent 7ade86e818 Laurent - Added new ability "opponentshroud" means "can't be the target of spells or abilities your opponents control." tested and works (see SHM _cards.dat)
Also added Flowstone Side (10E) - Tested and work probably my last addition to 10E.
2009-06-21 20:38:40 +00:00
wagic.the.homebrew@gmail.com 887336aa7c Erwan
-fixed a memory leak in Test suite
2009-06-21 13:19:15 +00:00
wagic.the.homebrew@gmail.com 61e449d02b Erwan
- Changecontroller now sends a changezone event
- Manacost bug fix (memory leak)
2009-06-21 10:46:33 +00:00
wagic.superhiro dfdc61e9db Fixed Flying for Aven Trailblazer. 2009-06-21 08:43:49 +00:00
wagic.laurent 7c3464e3ba Laurent - 10E - 6 cards added
Added Graveborn Muse (just missing one muse now, too complicated for me).
Added  Beacon of destruction,unrest and immortality.
Added Traumatize
Added Verdant Force
All tested (except beacon of unrest) and working.
2009-06-21 01:59:28 +00:00
wagic.the.homebrew@gmail.com b5139ea523 Erwan
- Fix morphling's cost
2009-06-21 01:39:37 +00:00
wagic.laurent c40d2b5cea Laurent -
Added "untap all" to the parser (not tested but should work since it is the same as tap all)
Modified "cantbeblockedby" also still don't function properly, atm it cause the creature to be "unblockable"... Should work, I don't get it !!! (Why ???)
Also added Seedborn Muse (like all the Muse a very Powerfull card), especially as combo with cards that "DOESNOTUNTAP" during your untap phase...
2009-06-20 11:01:04 +00:00
wagic.the.homebrew d1e0814315 Erwan
- Fix for Selesnya guildmage token ability
2009-06-19 07:47:58 +00:00
wagic.the.homebrew e54cee98fa Erwan
-Pendelhaven fix
2009-06-19 07:46:24 +00:00
wagic.laurent 5ce66a289e Laurent - Added new keyword "cantbeblockedby" See 10E addition Elven Riders and Juggernaut.
I tested Elven Riders successfully, but not juggernaut yet... Also if this new keyword function correctly we remove abilities like FEAR and UNBLOCKABLE... Needs to be further tested...
Feedback and extensive test are welcome on this one...
2009-06-18 23:14:47 +00:00
wagic.the.homebrew@gmail.com 2e3ccae712 Erwan
-added event when drawing from the library
2009-06-18 12:54:40 +00:00
wagic.laurent cf35acd3f3 Laurent -
Added ability DOESNOTUNTAP , see _cards.dat from 10E (Colossus of sardia, dehydratation). Test suite OK. The ability does not work with enchant creature (as for protection from...) So Dehydratation is hardcoded (can be aliased if necessary) Small bug with dehydratation, will untap creature when cast... WHY ? Any Idea/Solution welcome...
2009-06-17 23:54:05 +00:00
wagic.laurent ba83a42fa4 Laurent - Added deluge (10E) also added "all" to the tap parser, tested and work, not compatible with cost at the moment. Test suite before R486 was running fine on this update. 2009-06-17 20:50:21 +00:00
wagic.the.homebrew@gmail.com 53b1b5e9ec Erwan
- Magic 2010 - inplay becomes Battlefield. Wagic is still compatible with both, but try to use "battlefield" from now on. For example moveTo(battlefield) instead of moveTo(inPlay)
- Magic 2010 - "Removed from game" becomes "Exile". Wagic is still compatible with both, but try to use "exile" from now on. For example moveTo(exile) instead of moveTo(removedFromGame)
- Magic 2010 - "End of turn" step becomes "end" step. Wagic is still compatible with both, but try to use "end" from now on. for example: "@next end" rather than "@next endofturn" (not sure this is more clear than before, but at least it's consistent with the rules)
2009-06-17 13:11:45 +00:00
wagic.laurent 43bc3f9137 Laurent - Added Soulblast (10E) + Correction from glitch in R483 (forgot colossus and sardia and doppel target line in sudden impact) 2009-06-16 21:48:25 +00:00
wagic.the.homebrew@gmail.com 7804cbbd64 Erwan
- Send an event when Phase changes
2009-06-16 14:10:33 +00:00
wagic.laurent 96963fc5ac Laurent - AI deck update - Added some cards (Sudden impact (10E,TMP,LEG), colossus of Sardia (10E), etc...) 2009-06-15 23:46:47 +00:00
jean.chalard 6d7eb8276d J :
* Re-add Effects.cpp
2009-06-15 01:01:57 +00:00
jean.chalard a5929440e8 J :
* Remove a renamed file ?
2009-06-15 00:58:25 +00:00
jean.chalard cb91a6e40c J :
* Match the .cpp
2009-06-15 00:56:30 +00:00
jean.chalard c795bdfe96 J :
* Match the .cpp file :o
2009-06-15 00:55:15 +00:00
jean.chalard 22cf188bc9 J :
* Remove crap.
2009-06-15 00:54:17 +00:00
wagic.the.homebrew@gmail.com f1a3895fc6 Erwan
- Magic 2010 Rule: removed Manaburn
- Magic 2010 Rule: manapools empty at the end of each step
2009-06-14 09:21:49 +00:00
leungclj 56193a7656 Jonathan - (TMP) tested Escape Shapeshifter, doesn't full function correctly 2009-06-14 08:49:35 +00:00
wagic.laurent 6d42aa6e77 Laurent - Corrected Sacrifice (RV) 2009-06-13 20:39:33 +00:00
wagic.laurent 984038e5e2 Laurent - Added cards to USG - First step of Counter adding to parser (does not work yet). Update of AI deck description 2009-06-13 19:43:57 +00:00
jean.chalard 3e12e7d630 J :
* Switch to RTTI.
2009-06-13 06:12:53 +00:00
wagic.the.homebrew@gmail.com 35214a2f7e ERwan
- bug fix for zone changes
2009-06-13 05:39:18 +00:00
wagic.the.homebrew@gmail.com 54b8aab96b Erwan
- Event System for MTGGuiPlay.cpp
- THIS DOES NOT WORK
2009-06-13 05:21:24 +00:00
jean.chalard 0bc60d9a94 J :
* Replace french special characters by closest approximation.
  * Note : if you're not removing them, at least save the file in a
    safe character set, like UTF-8, NOT latin-1 or what Notepad
    calls "ANSI".
2009-06-13 04:55:43 +00:00
wagic.the.homebrew@gmail.com dd56962910 Erwan
- Events are now sent to GameObserver rather than ActionLayer
2009-06-13 03:49:52 +00:00
solo81@web.de 9be451e134 Fixed Cephalid Scout 2009-06-12 10:40:02 +00:00
wagic.laurent 3dc95152cc Laurent - AI deck update trying to give names and description to all of them. 2009-06-11 17:07:09 +00:00
wagic.the.homebrew@gmail.com a8b32bfb58 Erwan
-French small corrections
2009-06-11 15:34:14 +00:00
wagic.the.homebrew@gmail.com 26f8ac8801 Erwan
- Added some french translations
- Up to 0.7.1
2009-06-11 15:11:40 +00:00
jean.chalard 3639ac291f J :
* Make it so that we do not crash trying to play an MP3 that failed
  to load.
2009-06-11 14:47:21 +00:00
jean.chalard c1565450e5 J :
* Add ostream op
2009-06-11 13:55:03 +00:00
jean.chalard ff848d260f J :
* Fix the buggy charset
2009-06-11 13:17:03 +00:00
wagic.the.homebrew@gmail.com 8a467da18f Erwan
- Fix: cards in graveyard had shroud
- Fix :shop item "quantity" increased if bought in a booster
- Test for Recover -> no problem found, but there's a GUI issue, which will be fixed later
2009-06-11 11:48:02 +00:00
wagic.laurent a959cbf926 Laurent - Corrected some bugs in ICE (nature's lore) and POR (creature with cantblock abilities introduced in R458) 2009-06-10 15:05:50 +00:00
wagic.the.homebrew@gmail.com a703d69bda Erwan
- removed blinking spirit from ICE
- changed display order in MTGGuiPlay (auras should be under creatures most of the time...)
2009-06-10 14:00:26 +00:00
wagic.laurent 459840042d Laurent - Removed cards, added few (POR) update AI deck
POR - Removed Man'O'War + Added Hulking Cyclops, Hulking Goblin, Nature's Cloak, Gravedigger, Fire tempest, Dry Spell,Craven Knight, Craven Giant (sorry for this addition could not refrain after seeing them, were probably forgotten)
TMP  - removed Cloudchaser eagle
LEG - Corrected Concordant Crossroad
USG - Removed Dark Hatchling, Monk realist
RAV - REmoved Keening Banshee, also tentative to fix Tolsimir Wolfblood (legendary is not working)
EVE - REmoved Noggle Bridgebreaker
Also made an update and added silly name for AI deck + note that deck 22 is using cards from morningtide and deck 23 cards that the AI do not use correctly (activated abilities) but is not the only one, AI decks needs update/amelioration.
2009-06-10 11:33:41 +00:00
wagic.the.homebrew@gmail.com 75720b9459 Erwan
-Fix for sacrifice costs
2009-06-09 14:07:07 +00:00
wagic.laurent 4e4733fd2b Laurent - LEG removed Chromium, corrected Gost of the Damned. Updated the german and french translation files 2009-06-09 13:32:23 +00:00
wagic.superhiro 2877cbf7f0 Fixed Karakas. 2009-06-09 13:26:15 +00:00
wagic.the.homebrew@gmail.com 9ec582e02e Erwan
- a Few bug fix.
- I need to investigate for fledgling imp :(
2009-06-09 13:17:23 +00:00
jean.chalard 967d5744c9 J :
* Fix a credit
2009-06-09 05:08:47 +00:00
wagic.laurent 31d9f87554 Applying Orine Patch - Works perfect. Great addition. 2009-06-08 22:34:54 +00:00
wagic.laurent ef6150b42a Laurent - Update of french/german translation file (far from complete but a lot of card added)
Correction of the corrupt bug
2009-06-08 16:37:47 +00:00
wagic.the.homebrew@gmail.com 91edaca882 Erwan
- Ashen firebeast bug fix
- Small cards bug fixes
- Bloodfire colossus bug fix
- Graphical glitch in Opponent deck's choice when Deck name is too long... attempt to fix, let's be careful, no more than 9 letters in Deck names, please
- Updated Tranquil domain test. It was using cards that have been removed from the DB
- replaced /n/ with (n) in shop
2009-06-08 13:45:52 +00:00
leungclj d45d526d6d Jonathan - (ALL) updated the ":" for p/t, removed restrain. And yes, removing ":" still works 2009-06-08 10:39:23 +00:00
leungclj d668251cb2 Jonathan - (ARB) updated the ":" for p/t 2009-06-08 09:46:26 +00:00
wagic.laurent 17edd84ac8 Laurent - Removed several cards tested and not working. + added cards description for AI deck 3 & 7 2009-06-07 20:48:52 +00:00
solo81@web.de be91114ace Fixed several cards (POR) 2009-06-07 14:52:58 +00:00
solo81@web.de 0a54c1bffb Fixed several cards (EVE)
Please use ":" in auto lines correctly (only for power/toughness changes (examples: "auto=:1/1"), not for others ("auto=:trample" is wrong, won't give the ability to the creature; "auto=trample" is correct)!
2009-06-07 14:35:00 +00:00
wagic.the.homebrew@gmail.com 3450d43ce8 Erwan
-Resolving conflict with Teeka's Dragon
2009-06-07 13:23:55 +00:00
wagic.the.homebrew@gmail.com 6ecf2a7dd8 Erwan
- Adding Aco's German translation
- Fix for Teeka's Dragon
2009-06-07 13:20:50 +00:00
wagic.superhiro 10f095eb5d Added deck23 - Selesnya. It's quite cool and a blast to play against =D I am not sure whether the AI is able to use Selesnya Guildmage and Knight of the Skyward Eye correctly, though. Would love to hear feedback about that. 2009-06-07 11:46:10 +00:00
wagic.superhiro eb57b4f262 Fixed Tolsimir Wolfblood's Name (removed Comma) 2009-06-07 11:44:54 +00:00
wagic.superhiro 65cd22ceb0 Added comments, name and description for deck6 - Green/Blue. 2009-06-07 11:22:43 +00:00
wagic.superhiro 82f8c7c5cb Added comments, name and description to deck. Although the name is longer than 9 letters, I tested it and it works fine without any graphical errors. 2009-06-07 11:10:51 +00:00
wagic.superhiro a5f78593c3 Improved the description for deck8 - Inquisitor. 2009-06-07 10:57:45 +00:00
wagic.superhiro bf8806c8f1 Added deck22 - Giants!. Is still improvable, though :) 2009-06-07 10:50:30 +00:00
wagic.superhiro 1b841108f1 Fixed Wizened Cenn (Lorwyn) 2009-06-07 10:01:58 +00:00
leungclj e184c48198 Jonathan - (SHM) fixed Trip Noose 2009-06-07 09:30:34 +00:00
solo81@web.de 9ee16012a6 Several card fixes (TMP) 2009-06-07 09:05:38 +00:00
solo81@web.de 061ba961be Fixed Torpor Dust (SHM), Bloodshed Fever (SHM) 2009-06-07 09:01:47 +00:00
solo81@web.de 20933b20fa Fixed Golgari Rotwurm 2009-06-07 08:56:42 +00:00
solo81@web.de 2db63eb9af Fixed Tattered Drake 2009-06-07 08:51:31 +00:00
solo81@web.de dfe3295275 Fixed Teeka's Dragon 2009-06-07 08:44:04 +00:00
wagic.superhiro f5a32b4b06 Removed Death Baron again - sorry. 2009-06-06 13:11:31 +00:00
wagic.laurent 6f689e6aa5 Laurent - Added Description (cards) for AI deck 1 and deck 2... anyone with a good name idea ? 2009-06-06 11:38:29 +00:00
wagic.laurent ea0a414942 Laurent - Corrected a bug with Lavaborn Muse (should now work correctly). Also added some cards description and basic name and description for some AI deck, first step for further AI deck improvments. 2009-06-06 11:08:12 +00:00
wagic.superhiro bdaf17352b Added Death Baron (ALA). [Untested] 2009-06-06 10:58:10 +00:00
solo81@web.de 5c6c4016db several card fixes 2009-06-06 10:30:05 +00:00
solo81@web.de 1f5cf2807c Several card fixes 2009-06-06 10:11:12 +00:00
solo81@web.de afd82a2cca some fixes 2009-06-06 09:53:02 +00:00
solo81@web.de f47a7594a8 Several card fixes 2009-06-06 09:48:39 +00:00
wagic.the.homebrew@gmail.com 115976c264 Erwan
- cards syntax errors
- compilation errors fix for PSP
2009-06-06 09:10:43 +00:00
wagic.the.homebrew@gmail.com c5d13e7cac Erwan
- fixed a bug introduced in Momir with previous revision
- Added som french translations
2009-06-06 05:57:48 +00:00
wagic.the.homebrew@gmail.com ab42e5db06 Erwan
- fixed card id collisions in Legends, Ravnica, Portal
- Changed Deck and Database structures with better design (a bit faster, hopefully a lot cleaner)
- updated Windows project file
2009-06-06 04:46:54 +00:00
jean.chalard 01bd44025d J :
* Performance improvement for the deck editor when scrolling cards
  (transform 2*N*log(N)<Cmp1> + N*<read> into log(N)<Cmp1> +
  N*<read>). I expect this improvement to be much more significant,
  performance-wise, than last night's one.
2009-06-05 01:58:41 +00:00
jean.chalard c822b245c1 J :
* Delete useless and very-frequently called string creations.
2009-06-04 17:28:52 +00:00
wagic.laurent 7b20688b36 Laurent - Removed some cards tested and not working correctly.
RAV - Removed Empty the catacombs & Galvanic arc, tested and does not work. Note that the moveto all function is only for "inplay" you cannot target anything else at the moment (evacuation 10E works fine). Also cards like galvanic arc ("when put in play then") are not working 100%, e.g. "Sparkmage Apprentice" has a very strange behaviour, could anyone look at this one and confirm ?
LEG - Removed Abomination, make the game crash, need to look at this one, in the meantime I've removed it. Corrected Chromium
ARB - Added Intimidation Bolt
ALA - Added Rockcaster Platoon

Also note that flanking has never been added to the source, although I had planned to do so, nobody will ever notice since nobody use this stupid ability but nevertheless some cards may need to be removed...I've removed together with the old rampage ability at REV 347:
http://code.google.com/p/wagic/source/detail?r=347

Grü
L.
2009-06-04 15:40:26 +00:00
wagic.superhiro 96fe323f22 I think I fixed Ancestral Mask, but I cannot test at the moment. 2009-06-03 13:57:24 +00:00
wagic.superhiro 7ac0a04de4 Fixed Lord of Extinction's cost. 2009-06-03 13:52:16 +00:00
wagic.the.homebrew 28b37da779 Erwan
- fixed diabolic tutor cost
2009-06-03 09:02:12 +00:00
wagic.the.homebrew d5b285c171 Erwan
-fix priest of gix toughness
2009-06-03 05:45:48 +00:00
wagic.the.homebrew 0739a214f8 Erwan
- Removed the corpse of Sanctum Gargoyle that was remaining in the todo.dat :)
2009-06-03 01:28:45 +00:00
solo81@web.de d9a11b43bc Fixed Dwarven Grunt 2009-06-02 20:54:44 +00:00
solo81@web.de 413af9febd Fixed Venomous Dragonfly 2009-06-02 20:52:45 +00:00
leungclj 2ed649433e Jonathan - (r407) fixed and reordered 2009-06-02 19:45:10 +00:00
wagic.superhiro f10e063fc4 Fixed a mistake, sorry. 2009-06-02 19:33:33 +00:00
wagic.superhiro 1f5bd9407e Added Sharuum the Hegemon and Sanctum Gargoyle. 2009-06-02 19:25:05 +00:00
wagic.superhiro 8e0945aa80 Name Change "Panda Hive" Panda=Black/White :D 2009-06-02 15:52:35 +00:00
wagic.superhiro 51bfe7a112 Very small change -> Name of deck13 2009-06-02 15:51:05 +00:00
leungclj 73fb9ea2ae Jonathan - (r398) 3 cards added to their todo.dat, not tested, only based on (r398) updated version of CardDescriptor.cpp 2009-06-02 14:19:03 +00:00
wagic.the.homebrew@gmail.com ec27c29c2b Erwan
-fixed bug with Sphinx Sumoner (was an interface issue, not a an issue with the card itself)
2009-06-02 13:44:02 +00:00
wagic.the.homebrew@gmail.com 104ff23599 Erwan
- putting in a stupid name to avoid graphical glitch
2009-06-02 13:06:33 +00:00
wagic.the.homebrew@gmail.com e719b9ae62 Erwan
- removed long names from AI decks (GUI issue) - please use 9 letters or less for deck names
2009-06-02 12:59:22 +00:00
wagic.superhiro 002ff0c04e Added comments and Name for Goblin deck. 2009-06-02 12:51:56 +00:00
wagic.the.homebrew@gmail.com f09e9d6b7c Erwan
- fix bug with Akron Legionnaire (Legends). See test
2009-06-02 12:44:31 +00:00
wagic.superhiro e9a95803c7 Changed around some cards in G/R/W deck and added a name. No description yet. 2009-06-02 11:20:56 +00:00
wagic.superhiro f3ff342932 Added description for blue creature stealing deck and changed around some cards. 2009-06-01 14:18:36 +00:00
wagic.superhiro 07f1f9e226 Added description for artifact deck and changed around some cards. 2009-06-01 14:10:16 +00:00
wagic.superhiro ffb9628ce8 Added description (not to awesome, but will do until improved) for white deck and changed "Sacred Nectar" to "Swords to Plowshares". 2009-06-01 14:05:24 +00:00
wagic.superhiro ef85090724 Added Cathartic Adept (ALA) - Not tested, but should work. 2009-06-01 14:00:06 +00:00
solo81@web.de 3112c06acf fixes 2009-06-01 11:36:08 +00:00
solo81@web.de 9895d1a839 Several bug fixes 2 2009-06-01 11:29:39 +00:00
solo81@web.de 7b0a503b25 Several card fixes 2009-06-01 11:19:25 +00:00
solo81@web.de 7e68f7da1c Fixed Barrin, Master Wizard 2009-06-01 11:11:44 +00:00
solo81@web.de 50349637a6 Fixed Darklit Gargoyle 2009-05-31 21:09:59 +00:00
jean.chalard 705631328d J :
* Fix a typo in a method name
2009-05-31 11:44:56 +00:00
wagic.the.homebrew@gmail.com 2eb67d432c Erwan
- Deck description for one more Deck
2009-05-31 11:37:38 +00:00
jean.chalard 46d1bc4543 J :
* Fix a wording issue
2009-05-31 11:35:34 +00:00
solo81@web.de 725b117751 Fixed Nightscape Apprentice 2009-05-31 10:49:52 +00:00
solo81@web.de 74af069a26 Fixed Sphinx Summoner 2009-05-31 10:37:32 +00:00
jean.chalard 5007d4f376 J :
* Remove the plasma effect in the deck viewer
2009-05-31 09:44:26 +00:00
wagic.the.homebrew@gmail.com 19b0b306fe Erwan
- stats are computed only at startup now, to avoid useless computation ingame
2009-05-31 09:42:08 +00:00
wagic.the.homebrew@gmail.com 08992475fa Erwan
- added missing id for Pacifism
2009-05-31 06:50:48 +00:00
jean.chalard b21d558674 J :
* Fix a little syntax error
2009-05-31 05:57:21 +00:00
jean.chalard 6f09760d08 J :
* Remove the stupid effect on cards back, at least until release
2009-05-31 05:52:49 +00:00
wagic.the.homebrew@gmail.com a0b82b1026 Erwan
-Shop bug fix by orine
2009-05-31 05:43:19 +00:00
wagic.the.homebrew@gmail.com 03c8b5e272 Erwan
- plasma Effect made an option (plasmaEffect=1 in settings/options.txt)
- Changed plasma effect colors to something "gold-ish". J, feel free to revert
2009-05-31 05:26:16 +00:00
wagic.the.homebrew@gmail.com ca061a048b Erwan
-windows makefile update
2009-05-31 02:51:15 +00:00
leungclj d26e903393 Jonathan - removed the extra "s" after "owner" according to MTGGameZones.cpp 2009-05-30 16:15:38 +00:00
jean.chalard b4d040b263 J :
* Add a plasma effect on the cards back
2009-05-30 14:06:52 +00:00
wagic.the.homebrew@gmail.com 5de26cc509 Erwan
- more cards using library search
2009-05-30 13:50:03 +00:00
wagic.the.homebrew@gmail.com 1f25f78965 Erwan
-Added a few cards using library
2009-05-30 09:52:33 +00:00
wagic.the.homebrew@gmail.com b35195dddf Erwan
- Added crude possibility to search for the library (see Diabolic tutor)
2009-05-30 08:11:47 +00:00
leungclj b0eed5ea2e Jonathan - (10E) added Goblin Lore, Viridian Shaman 2009-05-29 22:10:19 +00:00
leungclj f5f77bfa2a Jonathan - fixed all the ";" mixed up 2009-05-29 14:10:10 +00:00
wagic.the.homebrew@gmail.com 1a21ca454a Erwan
- Fixed Damage All (Ashen Firebeast/ See test)
- Fixed Momir crash if no card with corresponding mana cost exists
2009-05-28 09:42:52 +00:00
wagic.laurent 821a422149 Laurent - USG added Corrupt, LEG small correction, added some name + description to AI deck. 2009-05-27 20:49:16 +00:00
solo81@web.de b418132d2d Added Inundate 2009-05-27 11:47:38 +00:00
solo81@web.de 0c2662ad96 Added Upheaval. Fixed Zombify 2009-05-27 11:33:36 +00:00
solo81@web.de 90b3ae931c Added Sunder 2009-05-27 11:23:10 +00:00
solo81@web.de d52d5ec510 Fixed Steam Blast 2009-05-27 10:53:08 +00:00
wagic.the.homebrew b187150908 Erwan
- Fixed Zombie master
2009-05-27 03:29:55 +00:00
wagic.the.homebrew f9340dd88a Erwan
-small fix in Legends
2009-05-27 03:19:15 +00:00
wagic.laurent d5da4a3a23 Laurent - Update LEG (complete review and clean-up , + added some card to the code) some other cards could be added (storm world, storm seeker, typhoon, spiritual sanctuary) but that will be for later ;-) 2009-05-26 23:35:51 +00:00
wagic.laurent deffc085f4 Laurent - Added Dreamborn Muse (10E) tested and work, also tested the deplete function with instant and sorcery works fine (see ray of erasure ICE) 2009-05-26 22:03:30 +00:00
leungclj c1239606cb Jonathan - (CFX) fixed Obelisk of Alara 2009-05-26 15:57:25 +00:00
leungclj ca14cc3469 Jonathan - (ARB) fixed Qasali Pridemage 2009-05-26 15:55:37 +00:00
wagic.the.homebrew@gmail.com 0e88d03c04 Erwan
- Zip file Directory cache for faster access
- Preload card images in player's hand before the game starts
2009-05-26 11:32:17 +00:00
leungclj 04dd43d180 Jonathan - (USG) fixed bug 2009-05-26 11:13:11 +00:00
leungclj a2825e0e00 Jonathan - (r346) fixed Hibernation (not tested, I just copied from r349 - Empty the Catacombs) 2009-05-26 08:38:36 +00:00
leungclj e305e8eac8 Jonathan - (r345) fixed a bug 2 2009-05-26 08:26:51 +00:00
leungclj 5c60b6bb16 Jonathan - (r345) fixed a bug 2009-05-26 08:26:25 +00:00
wagic.the.homebrew d1653ef03e Erwan
- Fix issues introduced in RAV with r.334. See the diff
2009-05-26 02:43:38 +00:00
wagic.laurent 2e6b01a6fc Laurent - RAV update also added a lot of cards with deplete function (Glimpse the Unthinkable - WTF ??? this card is HUGE !!!!) and some also to the code did not test them... :D 2009-05-25 23:14:01 +00:00
wagic.laurent 2f9df464b6 Laurent - Fixed the Basislik (not tested) and also some glitch in the token creation for Artifact Mutation and elvish promenade (added the "token" in the subtype since some cards target token). 2009-05-25 22:07:06 +00:00
wagic.laurent 182b133719 Laurent - Updated the discard function. Also you can now target the opponent or yourself. Once again this is the discard random function also mind rot (10E) is not 100% correct since if you were to play on yourself you should be able to choose which card to discard. If a card as no target(either in the target= line or in the discard:x target(X) line then it automatically applies to you.) it means cards that require you to discard a card at random in addition to its cost can now be coded (e.g. balduvian horde from alliance), but at the moment nothing will happen if you have no card to discard (did not test this one but it could be added if necessary).
Updated the deplete function. You can use deplete in instant and sorcery (not tested)
Updated rampage (add an issue with the last parameter and the annulation of the bonuses at end of turn) should be resolved now (not tested).
Added Basilik from 10E and also lavaborn (not tested yet), should try to do a more generic basilik (abomination, cockatrice, basilik, all have the same abilities but different criteria for the “type” of creature that would be or not be affected.
Also added Elvish promenade from LRW (this one is fun ;D)
2009-05-25 21:07:17 +00:00
solo81@web.de cfc76f5f22 Added several cards to Urza's Saga: Annul; Cave Tiger; Douse; Falter; Headlong Rush; Steam Blast; Viashino Weaponsmith 2009-05-25 20:17:15 +00:00
solo81@web.de f43d28d53e Added Jungle Lion (POR); Needle Storm (TMP;POR); Overrun (TMP); Shadowstorm (TMP) 2009-05-25 19:32:52 +00:00
solo81@web.de 50c818c660 Fixed all other slivers from Tempest. 2009-05-25 16:47:03 +00:00
solo81@web.de 44fa4ef7ba My first action here! :) Fixed several cards from Tempest. 2009-05-25 16:35:04 +00:00
leungclj 8169da3b17 Jonathan - (ARB) updated todo 2009-05-25 13:40:09 +00:00
leungclj c6f732d17d Jonathan - (ARB) a few things added 2009-05-25 13:31:59 +00:00
wagic.the.homebrew@gmail.com f448049b04 Erwan
-fix a DOS/Unix issue in Deck names
2009-05-25 13:20:46 +00:00
wagic.the.homebrew@gmail.com ee58109449 Erwan
- Added a way to name and describe AI Decks. Let's find cool names and descriptions :)
2009-05-25 12:43:58 +00:00
wagic.the.homebrew fc2ae93367 Erwan
- Dirty script for New gatherer parsing
2009-05-25 06:33:47 +00:00
wagic.the.homebrew a07f75df33 Erwan
- ARB todo.dat Notepad friendly
2009-05-25 06:32:15 +00:00
wagic.the.homebrew 67a934729d Erwan
- ARB todo.dat
2009-05-25 06:29:32 +00:00
leungclj d0fb122f0f Jonathan - added ARB _cards.dat for now, will add todo.dat once I have time 2009-05-24 15:59:39 +00:00
wagic.the.homebrew@gmail.com e925a209a2 Erwan
- Adding Urza's saga, Ravnica, and Legends. Let's test them :)
2009-05-24 13:42:03 +00:00
wagic.the.homebrew@gmail.com 86211a4de3 Erwan
- test to make sure "draw@ next upkeep" works fine. No problem detected
2009-05-24 02:42:36 +00:00
jean.chalard dd054c4963 J :
* ostream printing of JGui objects.
2009-05-23 08:34:50 +00:00
jean.chalard 215e23a975 J :
* Add some printing capability.
2009-05-23 08:33:28 +00:00
jean.chalard 10aa8e32d9 J :
* Write preliminary thread creation functions for Linux.
* Debug the Makefile
2009-05-23 04:44:44 +00:00
wagic.laurent d7840821ad Laurent - added rampage to the parser (see example from diverse set) could be extended...I've let the ability "rampage" (in fact rampage 1) but older set (esp. legends, would need an update later on). 2009-05-22 22:02:08 +00:00
wagic.laurent 9063a1bfa8 Laurent - Fixed rampage (final) forget to get rid of the bonus at end of turn... :D added elvish berseker as example of rampage ability (also get the bonus from the first blocking creature on)... 2009-05-22 20:59:44 +00:00
wagic.laurent 234cdc64c5 Laurent - Fixed Rampage, cleaned-up 10E. 2009-05-22 16:40:32 +00:00
wagic.laurent 52ea815193 Laurent - Some cards addition (TMP -> serene offering alias of divine offering from LEG also in MRD)
MRD added Seed of innocence
INV added aura and artifact mutation (but strange reaction if you bury target from opponent)... works anyway... test it and you will understand... ;)
2009-05-22 14:41:51 +00:00
wagic.laurent fe64587bb3 Laurent - Correction to r324 (wrong file) 2009-05-22 00:31:05 +00:00
wagic.laurent 9159ef34df Laurent - added corrupt (SHM) and spitting earth (10E,TMP,MIR). 2009-05-22 00:29:42 +00:00
leungclj 6ad49cd388 Jonathan - (POR) added Mind Knives, Mind Rot 2009-05-21 22:39:25 +00:00
wagic.laurent f566b4a8c5 Laurent - Updated discard function now function with cost & target (see update from MRD) - Note that this is the discard random function....
Did not try it yet without target (e.g. when comes intoplay auto=discard:19 probably will not work and would make the opponent discard a card randomnly...
2009-05-21 21:13:04 +00:00
wagic.laurent 37008df473 Laurent - Added "deplete" to the parser does not work for instant and sorcery at the moment (WILL NEED HELP FOR THAT)
Updated cards.dat to include the one with deplete possibility.
Also included various cards (alias from RV)
2009-05-21 16:28:13 +00:00
leungclj db912f2d34 Jonathan - (MRQ) removed Pious Warrior, Noble Purpose 2009-05-21 12:09:02 +00:00
leungclj 6668902ae0 Jonathan - (ODY) Added - Anarchist, Ashen Firebeast, Auramancer, Aven Cloudchaser, Balshan Griffin, Cartographer, Gravedigger, Krosan Archer, Magma Vein, Overrun, Resilient Wanderer, Scrivener.
Finally tested the "may moveTo" function physically, it works, but there is this slight bug (that doesnt harm anything) but say "when XYZ comes into play, you may move 123 from your graveyard to your hand" you play XYZ, and choose 123 from your graveyard, you selected 123, but it still appears to be still in the graveyard, even thought i really have returned to your hand, but if u exit the graveyard and goes back in again, it really have disappeared. 

(i think its better to see it yourself... getting too wordy)
2009-05-21 10:29:25 +00:00
wagic.laurent 215c7448c9 Laurent - 10E added Demon's Horn, dragon's claw and co. works well you have to click the card to get 1 life as the card state "may"..also added consume spirit (alias of drain life RV)
- ICE complete update, reorganized all cards alphabetically both in cards.dat and todo.dat + some few addition
- tentatively added a generic millstone, first step to add the keyword "deplete" to the parser.. still working on this one.
2009-05-20 20:03:51 +00:00
leungclj dce2adc6fc Jonathan - (MRQ) Fixed - Specter's Wail 2009-05-20 19:09:48 +00:00
leungclj 277a96ab22 Jonathan - (MRQ) added Darting Merfolk, Dust Bowl, Glowing Anemone, Groundskeeper, Magistrate's Veto, Ogre Taskmaster, Pious Warrior, Rushwood Herbalist, Specter's Wail, Squall, Strongarm Thug, Tremor, Venomous Dragonfly.
Fixed - Maggot Therapy, Tiger Claws.
2009-05-20 19:06:37 +00:00
leungclj cb0d1aceea Jonathan - (MRQ) corrected wording on Thrashing Wumpus. The alias is not correct, but I don't think anyone will ever notice 2009-05-20 16:16:28 +00:00
wagic.the.homebrew@gmail.com 04d429b82c Erwan
-display the number of cards you own with the same name for each individual card in the shop
2009-05-20 13:50:58 +00:00
wagic.the.homebrew@gmail.com 283987c0eb Erwan
- Fixed northern paladin test (the test was wrong)
2009-05-20 11:09:54 +00:00
wagic.the.homebrew@gmail.com 3ae91e8226 Erwan
- Removed 4000 cards limitation
- URGENT FIX NEEDED: Test Northern_paladin2.txt fails :(
2009-05-20 11:07:20 +00:00
laurent.rabouin c42d0d20ca Laurent - Added discard (see mind rot 10E) works did not try yet with cost (e.g {2}:discard:2) is only random discard function surely needs to be improved.
Added generic Karma Function (ADamageForTypeControlled, see ancient ruin from TMP) tested and work.
Happy to be back
2009-05-19 22:22:50 +00:00
leungclj 0becb3309d Jonathan - (LRW) added Brigid, Hero of Kinsbaile - although this is codable now, but when it is used, player will find it hard to guess which abilities is which "e.g. when select the card for the abilities, two option will emerge, both saying abilities"
recent player also have similiar problem, http://wololo.net/forum/viewtopic.php?f=4&t=305&start=60#p2628
2009-05-19 18:06:28 +00:00
wagic.the.homebrew@gmail.com f50d7e30d4 Erwan
- Added a few "stats" to the main menu. This might slow down loading times on the PSP (needs testing). In that case I'll move it to the options, or optimize it if needed
2009-05-19 13:45:53 +00:00
wagic.the.homebrew@gmail.com f32f5f3793 Erwan
- Crude networking functions:
+ Basic message works on Windows
+ Compiles on PSP but doesn't work yet
+ Nothing done for Linux -> TODO!
2009-05-18 11:22:53 +00:00
wagic.the.homebrew@gmail.com a5b59c2079 Erwan
- fixed a compilation problem for the psp
2009-05-18 10:43:56 +00:00
wagic.the.homebrew@gmail.com 494e5b4568 Erwan
-update to french translation
2009-05-16 15:24:58 +00:00
wagic.the.homebrew@gmail.com f94df3862b Erwan
- Added translation mechanism, and basic french translation as an example
2009-05-16 15:23:26 +00:00
leungclj 94bebd795c Jonathan - (TMP) fixed Pit Imp 2009-05-15 10:39:25 +00:00
leungclj 3b49e9541a Jonathan - (10E) added Puppeteer 2009-05-14 14:59:00 +00:00
wagic.the.homebrew@gmail.com d074cc4de0 Erwan
- Fix bug with Northern Paladin
2009-05-14 12:39:25 +00:00
leungclj 5a29a7103f Jonathan - (INV) fixed Repulse 2009-05-13 14:25:15 +00:00
leungclj 2a6d34b8f6 Jonathan - (MRQ) fixed Soothing Balm, (INV) fixed Strength of Unity 2009-05-13 12:23:01 +00:00
leungclj fab6b30521 Jonathan - (RV) fixed Prodigal Sorcerer 2009-05-13 12:13:43 +00:00
wagic.the.homebrew cebe3c8d7a Erwan - added maniacal rage 2009-05-12 04:59:20 +00:00
wagic.the.homebrew@gmail.com 42e6521155 Erwan
- Added "stack" as a zone in the perser
- Added "fizzle" keyword in the parser for counterspells
2009-05-11 13:23:09 +00:00
wagic.the.homebrew@gmail.com ab48516788 Erwan
- Yet another attempt at fixing counterspells. Needs testing
2009-05-10 13:31:33 +00:00
wagic.the.homebrew@gmail.com 62f6b92332 Erwan
- Zip file support for card pictures
- TODO : linux, update JGFX.cpp for zip support
- TODO : make sure there is no leak in the PSP version
2009-05-10 11:10:53 +00:00
leungclj 69903af2c8 Jonathan - (INV) fixed Restrain (even though its not exactly coded the corret way) 2009-05-05 23:42:58 +00:00
leungclj 4e4a8a30ab Jonathan - (ALA) fixed Infest 2009-04-30 17:27:03 +00:00
wagic.the.homebrew@gmail.com 89fb351979 Erwan
- Added damage all (pyroclasm) and move all (not tested)
2009-04-30 13:48:41 +00:00
wagic.the.homebrew@gmail.com 5a3d140f79 Erwan
-Added a few cards that use the "lord until end of turn" ability
2009-04-30 12:52:47 +00:00
wagic.the.homebrew@gmail.com 041b3e16bb Erwan
- Added "lord until end of turn" (see titanic ultimatum in ALA)
2009-04-30 12:45:16 +00:00
wagic.the.homebrew@gmail.com 8b008a4bda Erwan
- boosters in shop 100 cards -> 80 cards
- 2 new cards in SHM
- Added Ram checking methods for the PSP
2009-04-30 12:10:09 +00:00
jean.chalard e0e21fa2a3 J :
* Fix a number of warnings.
2009-04-29 12:06:28 +00:00
jean.chalard 789ad60723 J :
* Update for interface change.
  - The new arguments, being PSP-specific, are ignored (same as windows
    version). It might be surprising and not very readable, but it does
    what makes the most sense in our case.
2009-04-29 10:00:56 +00:00
leungclj 80e0735510 Jonathan - (INV) added Stun 2009-04-26 19:52:19 +00:00
leungclj 3331e72bda Jonathan - (TMP) added Sea Monster 2009-04-26 19:50:39 +00:00
leungclj 0d6956d5d4 Jonathan - (10E) added Stun 2009-04-26 19:48:19 +00:00
leungclj 06c3067911 Jonathan - (TMP) added Stun, Sea Monster, Pallimud. Removed Twitch. Fixed Skyshroud Vampire. (yes i know i sholdn't remove any but, it really shouldnt be there.... 2009-04-26 19:45:13 +00:00
leungclj 612c1cbbad Jonathan - (ICE) fixed Snow-Covered land, added Drift of the Dead, attempted to reorder to alphabatical order 2009-04-26 09:18:22 +00:00
leungclj 143c1684cc Jonathan - (TMP) added Dauthi Slayer 2009-04-26 08:55:39 +00:00
leungclj 149bc52a94 Jonathan - (SHM) added Bloodshed Fever & Tattermunge Maniac 2009-04-26 08:55:20 +00:00
leungclj db5cfb9751 Jonathan - (INV) added Maniacal Rage 2009-04-26 08:40:19 +00:00
leungclj 4ca83eae7c Jonathan - (MRQ) added Kyren Glider 2009-04-26 08:34:18 +00:00
leungclj f3b6073681 Jonathan - (SHM) added Whimwader 2009-04-26 08:29:28 +00:00
leungclj a6a3b406e7 Jonathan - (TMP) added Light of Day (scary card...) 2009-04-26 08:23:25 +00:00
leungclj 728a4b5d2a Jonathan - (LRW) added Blind-Spot Giant & Ethereal Whiskergill 2009-04-26 08:19:18 +00:00
leungclj e408ff29fd Jonathan - (10E)(TMP)(MIR) added Pacifism 2009-04-26 08:06:00 +00:00
leungclj 148683d93d Jonathan - (LRW) fixed Hearthcage Giant 2009-04-26 07:54:57 +00:00
leungclj a978dda7ce Jonathan - (10E) fixed Arcanis the Omnipotent 2009-04-26 07:53:30 +00:00
wagic.the.homebrew@gmail.com 0af938589b Erwan
- a few bug fixes with cards that bring other cards back to play (zombify, resurrection...)
- bug fix with abilities parsing "reachshadow"
- a few card fixes
2009-04-19 07:47:52 +00:00
wagic.the.homebrew@gmail.com 33e79e234e Erwan
- Cache size is now an option
2009-04-19 06:02:29 +00:00
leungclj 337301e039 Jonathan - (ODY) reordered cards, removed wrongly coded cards (not tested) 2009-04-14 20:26:09 +00:00
leungclj 33f45d2eba Jonathan - (INV) fixed Skittish Kavu 2009-04-13 01:00:52 +00:00
leungclj f66a233034 Jonathan - (INV) fixed Kavu Runner & Skittish Kavu 2009-04-13 00:56:05 +00:00
wagic.the.homebrew@gmail.com e7678522ee Erwan
- fixed a few memory leaks (but Wagic still crashes on the PSP after a few games :( )
2009-04-12 12:39:44 +00:00
wagic.the.homebrew@gmail.com e9cb57dbb1 Erwan
- Added new bonus system for victories. Unlock and bonuses need to be tested :/
2009-04-11 09:43:29 +00:00
wagic.the.homebrew@gmail.com fab150414b Erwan
- Added name effect for Momir
- Fixed a couple bugs with "moveTo", see test/Amugaba.txt
2009-04-11 03:59:46 +00:00
wagic.the.homebrew@gmail.com 12bd665409 Erwan
- add Mercadian Masques, Mirrodin, Odyssey -> let's do some cleanup!
- Attempt at solving a bug with AI+psychic venom (manaburn), not tested
- Added Abrasax's monocolor AI decks
- Momir better randomizer
- Removed 64 Abilities limitation, I hope...
2009-04-11 02:02:10 +00:00
wagic.the.homebrew@gmail.com c6b1027762 Erwan
- put Swizzling back!
2009-04-10 11:25:22 +00:00
wagic.the.homebrew@gmail.com 4e820b4798 Erwan
- Fixed a bug with lord of the pit
2009-04-09 13:45:39 +00:00
wagic.the.homebrew@gmail.com 387c75e16d Erwan
-Improved JGE texture loading, improved Wagic cache
- Jge small changes in mp3 methods
2009-04-09 13:31:07 +00:00
leungclj 4a8aaf5187 Jonathan - (SHM) fixed Briarberry Cohort 2009-04-08 11:15:15 +00:00
leungclj 445f7b6108 Jonathan - (LRW) fixed Imperious Perfect & Scion of Oona 2009-04-08 11:14:00 +00:00
wagic.the.homebrew@gmail.com 9d0a10756d Erwan
- Momir AI tweaks
- More cards in shop, boosters are cheaper, each card has between 1 and 4 occurrences
2009-04-07 13:38:11 +00:00
wagic.the.homebrew@gmail.com e46b199a6c Erwan
- small AI improvements for Momir
2009-04-06 13:04:00 +00:00
wagic.the.homebrew@gmail.com e9190ff19f Erwan
- fix with Momir+ */* creatures
2009-04-06 12:19:18 +00:00
wagic.the.homebrew@gmail.com a8942331eb Erwan
- Fix a bug with Nevinyrrals Disk
2009-04-05 13:22:37 +00:00
wagic.the.homebrew@gmail.com a68478dcca Erwan
- (failed) Attempt to locate a bug with Keldon Warlord in momir
2009-04-05 10:56:46 +00:00
wagic.the.homebrew@gmail.com a6c1776a90 Erwan
- 2 new ability keywords: mustattack and cantattack
2009-04-05 09:46:02 +00:00
wagic.the.homebrew@gmail.com 34c139a15d Erwan
-fixed bugs with lifelink
2009-04-05 09:01:31 +00:00
wagic.the.homebrew@gmail.com d5cf601ec7 Erwan
- new tests to unconfirm some reported bugs
2009-04-05 06:41:17 +00:00
wagic.the.homebrew@gmail.com 853d14c8cc Erwan
- selling a card in the deck editor doesn't move back to the first card anymore
- added a few tests, unconfirmed bugs for elvish piper and deja vu
2009-04-05 06:15:13 +00:00
wagic.the.homebrew@gmail.com 89caaaadb4 Erwan
-Fixed a bug with */* creatures that don't die when they come into play as 0/0
-Fixed a bug with hymn of rebirth introduced in rev 245
2009-04-04 15:09:31 +00:00
wagic.the.homebrew@gmail.com 6582a1972a Erwan
- Added Momir Basic mode :)
2009-04-04 12:52:36 +00:00
leungclj 82f418d0f3 Jonathan - (ICE) update
-Fixed: Pit Trap, Snow Covered Land

-Removed: Walking Wall
2009-04-04 06:28:13 +00:00
leungclj 5027bc49c8 Jonathan - (ICE) update
-Fixed: Dark Banishing,Walking Wall, Pyknite,Snow Fortress,Blessed Wine,Touch of Death,Lhurgoyf

-Removed: Spectral Shield, Incinerate,Stampede,Warning,Word of Undoing,Icequake, Thermokarst,Essence Filter,Legions of Lim-Dul,Rime Dryad,Rime Dryad,Soldevi Machinist,Skeleton Ship

there are worrying number of cards removed, I believe that arent hardcoded, maybe I was too tired, but I am pretty sure they weren't hardcoded.

switched all cards discription to Oracle's version
2009-04-03 23:22:14 +00:00
leungclj 6262d00c35 Jonathan - fixed Neck Snap (LRW) ♪ 2009-04-02 13:55:58 +00:00
wagic.the.homebrew@gmail.com 5952b382a2 Erwan
-Fixed bug with fountain of youth
-New alternate format for decks
2009-04-02 12:50:18 +00:00
leungclj 3e1bcbfd22 Jonathan - fixed Knight of Meadowgrain (LRW) ☺ 2009-04-02 10:51:04 +00:00
leungclj bbcba29aa7 Jonathan - added Crypt Angel (INV) ♥ 2009-04-01 23:28:35 +00:00
leungclj b0b86cc4d2 Jonathan - removed Mnemonic Sliver from TMP, also Rats of Rath also need a bit a attention, it taps itself after ability is used. 2009-04-01 14:54:15 +00:00
leungclj d659d9c355 A lots of cards added to TMP (also using "may")
Escape Shapeshifter need a bit of attention Wololo...♫
2009-04-01 14:28:30 +00:00
wagic.the.homebrew@gmail.com 6e52242a5a Erwan
- A few extra cards using may and copy
2009-04-01 13:19:19 +00:00
wagic.the.homebrew@gmail.com bdf989ffac Erwan
- fixed the "may" ability a little bit (needs testing: can it be called only once ???)
- Added "Clone", yay :)
2009-04-01 12:59:53 +00:00
wagic.the.homebrew@gmail.com 60b35f7f7f Erwan
-new keyword "may" (right now used only for : "when ... comes into play, you may ... moveTo). See Gravedigger 10E
2009-03-29 13:04:54 +00:00
wagic.the.homebrew@gmail.com 3994006d7e Erwan
- fixed a few memory leaks
2009-03-29 10:33:42 +00:00
leungclj 2f66c4953f Dr.Solomat - second update for INV 2009-03-28 22:19:40 +00:00
leungclj 2252313c53 Jonathan - added Mindwrack Liege & Noggle Bridgebreaker, but Noggle won't work yet, just the same bug as Arcanis from 10E, if the bug is fixed, it should work 2009-03-28 18:56:24 +00:00
leungclj 512613fd58 Dr.Solomat - Cards added 2009-03-28 09:57:19 +00:00
wagic.the.homebrew@gmail.com 2031577de4 Erwan
- fix Fastbond bug
- Attempt at fixing issues with Escape artist and Amugaba (not tested)
2009-03-25 14:44:48 +00:00
wagic.the.homebrew@gmail.com e8d32b2c6d Erwan
- _cards.dat parsing error fixes on erroneous files
- replaced cards array with a vector for MTGGameZones
2009-03-25 13:53:19 +00:00
leungclj 579c9e7d6f Jonathan - added Viashino Skeleton 2009-03-23 12:39:51 +00:00
leungclj 725e348111 Jonathan - quick fix from previous upload... 2009-03-23 11:26:28 +00:00
leungclj 6ff6b38336 Jonathan - added 3 cards 2009-03-23 11:19:44 +00:00
leungclj df47423c34 Jonathan - fixed Shadowfeed 2009-03-23 10:03:47 +00:00
leungclj a093bf392f fix elvish piper and something else 2009-03-22 17:17:08 +00:00
leungclj 434de4eb9e corrected subtypes for numbers of creatures 2009-03-22 15:40:56 +00:00
wagic.the.homebrew 74ee3d4148 erwan
card fix
2009-03-18 22:34:51 +00:00
wagic.the.homebrew 69e7191054 Erwan -fix one bug with animate dead 2009-03-18 14:03:18 +00:00
wagic.the.homebrew a3c3006043 Erwan
- AI bugfixes (manaburn with ankh of mishra...)
- small tweaks
2009-03-18 11:29:23 +00:00
wagic.the.homebrew 070e24ec7a Erwan
- fixed compilation issues
- fixed bug with persuasion
2009-03-18 10:39:38 +00:00
wagic.the.homebrew bc7c689eab Erwan
- Attempt to fix a bug in 0.5.0 with persuasion. Haven't tried to compile/test yet :/
2009-03-18 04:04:34 +00:00
wagic.the.homebrew 415061642d Erwan
- Added splash screen management
- fixed a ruling bug (putting sorcery, enchantments, etc.. into play while interrupting)
2009-03-17 11:46:39 +00:00
wagic.the.homebrew fd1c152cb3 Erwan
-added a few cards from 10E
2009-03-17 06:19:52 +00:00
wagic.the.homebrew 78b18435b3 Erwan
- New difficulty mode to unlock
2009-03-16 13:58:57 +00:00
wagic.the.homebrew 3a97c61f22 Erwan
-Added a test for giant growth Ice age
-fixed a bug with the shop
2009-03-16 12:08:20 +00:00
wagic.the.homebrew ff8e05cf04 Erwan
- replaced erroneous Mirrodin set with invasion set
- added a few cards with "aslongas" ability
2009-03-15 05:59:21 +00:00
wagic.the.homebrew ef53771843 Erwan
-replace "includeself" with "other" for lord and foreach keywords
-added aslongas keyword (kird ape...)
2009-03-15 05:00:06 +00:00
wagic.the.homebrew 61463d047b Erwan
- fix a bug with nyxathid
2009-03-14 15:03:55 +00:00
wagic.the.homebrew 0256e64cd9 Erwan
- a few shop changes
2009-03-14 11:52:50 +00:00
wagic.the.homebrew 658ef1fb12 Erwan
- fixed a few bugs with the parser for subtypes
- fixed a bug for plague rats
- fixed a bug for P/T parser
- First release for the following sets: Mirrodin, Mirage, Lorwyn
2009-03-14 11:00:31 +00:00
wagic.the.homebrew bb23db4b16 Erwan
- "foreach" auto keyword improved, now works like lord
- a few cards using "foreach" added
2009-03-03 14:02:40 +00:00
wagic.the.homebrew 58700417da Erwan
- Added Waldorf's changes
2009-03-03 11:03:38 +00:00
wagic.the.homebrew 7241bba0db Erwan
- fixed a bug with sacred nectar
2009-03-02 13:47:52 +00:00
wagic.the.homebrew fa05ca5225 Erwan
- cards bugfixes
- added a few zone names for moveTo
2009-03-02 13:40:04 +00:00
wagic.the.homebrew d10f8ddff7 Erwan
- Fixed a bug with sacrifice and shroud
2009-03-01 13:14:01 +00:00
wagic.the.homebrew b780b66653 Erwan
-a few card fixes
2009-03-01 10:43:16 +00:00
wagic.the.homebrew 555eb5ee02 Erwan
- the AI can now use activated abilities (stupidly though...)
- a few card bugfixes
2009-03-01 10:20:31 +00:00
wagic.the.homebrew 6412c453d1 Erwan
- bug fix with lords and -color
- added tests
2009-02-17 13:29:27 +00:00
wagic.the.homebrew 66e0695b67 Erwan
- fixed a bug with mobilization
2009-02-17 11:07:02 +00:00
wagic.the.homebrew ad097e4604 Erwan
- a few fixes in cards.dat
2009-02-17 11:06:08 +00:00
wagic.the.homebrew f87c703866 Erwan
- Added WEvent class, allows to send events to abilities
- Cards that change zones now becomes new objects (as specified in the Comprehensive rules). This should allow to fix lots of stupid bugs in the near future, but probably brings loads of new issues :(
2009-02-16 13:46:14 +00:00
wagic.the.homebrew db90797fb0 Erwan - fixed a few typos in Portal's _cards.dat 2009-02-16 04:14:38 +00:00
wagic.the.homebrew 3b16eb5020 Erwan
- Fixed a few bugs (animate dead(RV), Goblins Deathraiders(ALA), Druid of Anima(ALA))
2009-02-15 09:22:17 +00:00
wagic.the.homebrew f7a887db2a Erwan
- Bug fixes for Kird ape(RV), Dingus Egg(RV), Ankh of Mishra(RV), Ancient Tomb(TMP), Wooded Bastion (SHM)
- Added tests in the test suite to confirm/infirm  some bug reports
2009-02-15 05:32:12 +00:00
wagic.the.homebrew 6d1d5d751a Erwan
- new Ability : ALifeGiver (bottle gnomes)
- Added a few cards from Tempest
- Hybrid mana fix for hybrid mana involving uncolored mana costs (see tests/generic/hybridmana2.txt - spectral possession)
- Fixed bugs with targetting for TargetAbilities
- Fixed multiple sacrifice abilities cost (Siege gang commander, see tests)
- Fixed a small font issue
2009-02-11 09:38:20 +00:00
wagic.the.homebrew 391bdaf0d8 Erwan
- missing "removedFromGame" initialization fixed (see celestial_purge test)
2009-02-07 02:43:42 +00:00
wagic.the.homebrew 6ea40147a3 Erwan
- Fixed a bug with Composite golem (and summoning sickness for Mana abilities in general)
- Improved test suite speed
2009-02-06 16:06:37 +00:00
wagic.the.homebrew bd632ed346 Erwan
- removed a useless .h file
- fixed a bug with nantuko husk (see tests/nantuko_husk.txt)
2009-02-06 13:10:28 +00:00
wagic.the.homebrew 295fc3b94b Erwan
- Fix mind stone's cost
2009-02-05 13:52:40 +00:00
wagic.the.homebrew 92ea6684cb Erwan
- Adding conflux
2009-02-05 13:49:22 +00:00
wagic.the.homebrew 9439d5e6dd Erwan
-Fixed a bug with moveTo keyword (cf: Doomed necromancer test)
2009-02-05 13:34:40 +00:00
wagic.the.homebrew ba3b272558 Erwan
- Fixed a few font problems with alternate rendering
2009-02-05 12:48:51 +00:00
jean.chalard 2f3eaac9a5 J :
* Font unification.
2009-02-04 16:42:59 +00:00
wagic.the.homebrew 16b9b09515 Erwan
- fixed a bug with orcish lumberjack (sacrifice)
2009-02-02 12:02:52 +00:00
wagic.the.homebrew 51a4a32231 Erwan
-updated gatherer builder with Conflux
2009-02-01 13:34:47 +00:00
jean.chalard 1ab9af85a6 J :
* Fix warnings
2009-02-01 08:20:42 +00:00
wagic.the.homebrew e984b7f781 Erwan
- Added cloud ability to pass the symbolic "1000 cards" bar :)
2009-02-01 07:34:55 +00:00
wagic.the.homebrew 0de5993836 Erwan
- Add documentation and change version number
2009-02-01 07:22:52 +00:00
wagic.the.homebrew 9454ac88fe Erwan
- Added CC Avatar
- Fixed a segfault bug when selling cards
- Added a few messages in the credits
- Show types of a card in "Alternate" display
- This update should get rid of all copyrighted contents
2009-02-01 06:29:29 +00:00
wagic.the.homebrew 2d37fafe53 Erwan
-fixed psp compilation
2009-01-29 13:49:00 +00:00
wagic.the.homebrew b14e6c318e Erwan
- Updated options system
2009-01-29 13:35:19 +00:00
wagic.the.homebrew f5693e0b6f Erwan
- Added extra rendering for "text" mode
2009-01-26 13:04:58 +00:00
wagic.the.homebrew 973b155460 Erwan
- Updated Portal cards, as well as its todo.dat
2009-01-26 06:58:36 +00:00
wagic.the.homebrew 7fdad1692c Erwan
- Added todo.dat for POR and TMP (files need to be cleaned...)
- small fixes in gatherer tool for POR and TMP
2009-01-25 10:16:53 +00:00
wagic.the.homebrew b6a17098a4 Erwan
- Added Dr Solomat's TEMPEST expansion
- Added Sacrifice as part of the cost of activated abilities. Making it work as an extra cost for "put in play" still requires some work though. "Render" methods need to be written correctly
- Added cards with sacrifice in the existing sets. Most of them need testing...
2009-01-25 09:20:01 +00:00
wagic.the.homebrew f593d1289c Erwan
-added one RV card
2009-01-23 08:40:57 +00:00
wagic.the.homebrew e389ea5062 Erwan
- Moved the "putintoplay" rule as a standard MTGAbility
- reverted bad encoding for MTGGuiPlay
2009-01-22 13:25:00 +00:00
wagic.the.homebrew e831a8e400 Erwan
- a few card updates
- back to original font for menus
2009-01-20 13:15:52 +00:00
jean.chalard 6d629b7d66 J :
* Adjust tracking for big font.
2009-01-19 06:15:12 +00:00
jean.chalard 5466a7004c J :
* Fix a number of warnings
2009-01-18 14:13:13 +00:00
jean.chalard 1cbf9c32e9 J :
* Fix a macro that was missing parentheses.
2009-01-18 14:12:09 +00:00
wagic.the.homebrew 0b03dc6d40 Erwan
- font adjustments
2009-01-18 13:49:02 +00:00
wagic.the.homebrew 8378042a79 Erwan - put back standard left,up,right,down keys for windows control 2009-01-18 12:38:45 +00:00
wagic.the.homebrew 9e314720e9 Erwan
- Parser: Added possibility to add multiple abilities for one cost, using keyword && (see Ardakar wastes in 10E). Currently only works with mana and damage
- Added a dozen new cards
- Improved testing suite : new keyword "choice" to select an item in the abilities popup menu
2009-01-18 06:42:59 +00:00
jean.chalard e978a7d168 J :
* Fix some errors in the string width computation.
2009-01-17 11:00:26 +00:00
wagic.the.homebrew 027e1b9bba Erwan
- Updated alternate render
- Display hybrid mana cost on alternate Render
- Display big card in graveyard
- gray out alternate render when targetChooser is active
- Non-copyrighted avatars for the AI. They suck...
2009-01-17 10:16:10 +00:00
jean.chalard 82d8503ed4 J :
* Fix a warning on linux & PSP.
2009-01-17 02:27:08 +00:00
wagic.the.homebrew ef67ab17ce Erwan - updates tests 2009-01-17 01:51:58 +00:00
wagic.the.homebrew 1251ef0096 Erwan
- Prevent TestSuite from crashing, by not showing big cards during the test suite
- Updated font size in game, to be readable
- WARNING!!! One test (brass man) not working anymore !!! High priority
2009-01-17 01:46:11 +00:00
wagic.the.homebrew 731f925800 Erwan - Added a check for DOS Files on linux systems in Test suite 2009-01-11 04:20:04 +00:00
jean.chalard 3ec9d75905 J :
* Add a deprecation message for 3xx.
2009-01-06 14:50:18 +00:00
jean.chalard a7cb5559d3 J :
* Remove the obsolete rule 3xx
2009-01-06 14:49:11 +00:00
jean.chalard 05dea66ea8 J :
* Remove useless makefiles.
2009-01-06 13:32:33 +00:00
jean.chalard 7f97862f5e J :
* Fix a couple warnings and a bug.
2009-01-06 13:22:29 +00:00
wagic.the.homebrew f8c96737e8 Erwan - updated VC++ project, fixed a compilation bug with TestSuite 2009-01-06 13:20:13 +00:00
jean.chalard 8a29171c47 J :
* Add constant static values.
2009-01-06 13:10:24 +00:00
jean.chalard 3bb2c431c9 J :
* Split constants file to have them in a single place.
2009-01-06 13:07:28 +00:00
jean.chalard 9024cf7cf5 J :
* Remove errors when including nonexisting auto-generated makefiles,
  but still generate and re-include them (that is to say, just work).
* Remove the "generating makefile" message that is generally totally
  not interesting.
2009-01-06 12:04:21 +00:00
jean.chalard d212ef3d7a J :
* Try to have autodeps work under windows
2009-01-06 11:41:38 +00:00
wagic.the.homebrew 2071d09ae6 Erwan - fixed a graphic glitch with menus in psp 2009-01-05 12:44:14 +00:00
jean.chalard 7deb7977ec J :
* A few bugfixes.
* Remove 1xx.
2009-01-05 12:36:59 +00:00
wagic.the.homebrew 38abad1084 Erwan - fixed a blend issue with menus for psp 2009-01-05 10:57:08 +00:00
jean.chalard a00f92e008 J :
* Bugfix version again. This should work much better. Waiting for test
  under windows before calling it final.
2009-01-05 09:47:45 +00:00
jean.chalard 09ff8e21f3 J :
* Blind attempt (PSP SDK not installed here, can't tell, will test tonight) at
  fixing the 1xx/3xx mismatch build bug.
2009-01-05 04:28:12 +00:00
wagic.the.homebrew f95878cd01 Erwan - Actually put the menu selected item in yellow. I still think this is not enough in terms of user-friendliness. I liked the zoom :/ 2009-01-04 09:46:04 +00:00
wagic.the.homebrew 02a245a93a Erwan - Added missing file for VC++ compilation 2009-01-04 09:16:36 +00:00
jean.chalard a85b6f69e8 J :
* Fix PSP compilation.
2009-01-04 08:19:36 +00:00
jean.chalard e69f5f3363 J :
* Fix psp compilation.
2009-01-04 08:18:58 +00:00
jean.chalard ad42a91f96 J :
* Fix un warning.
2009-01-04 07:18:11 +00:00
jean.chalard 449d1eecb7 J :
* Put the selected item in the menu in yellow.
2009-01-04 07:04:58 +00:00
jean.chalard 7111742c4c J :
* Move rules so they are evaluated.
2009-01-04 06:59:21 +00:00
jean.chalard 21558d85b0 J :
* Add the 3xx and 1xx rules that were missing.
2009-01-04 06:55:56 +00:00
jean.chalard a85da61604 J :
* A few bugfixes, a few pixel-precise adjustments.
2009-01-04 06:34:29 +00:00
jean.chalard 0d14207247 J :
* A number of adjustments about fonts.
2009-01-04 02:49:08 +00:00
jean.chalard 45e143dd0c J :
* Clean carriage returns.
2009-01-01 23:27:32 +00:00
jean.chalard 3185e51b32 J :
* Align font on pixel.
2009-01-01 23:26:57 +00:00
jean.chalard 7c0c199175 J :
* Some resource path cleaning.
* A little bugfix.
2009-01-01 23:26:36 +00:00
jean.chalard 64c7bdf42d J :
* Some cleaning about the resource path.
2009-01-01 23:26:15 +00:00
jean.chalard f452bf89f1 J :
* Make it so that the binary can be run from anywhere.
2009-01-01 23:25:47 +00:00
jean.chalard ec8900dd5c J :
* Fix a graphical bug and a memory bug.
2009-01-01 23:25:00 +00:00
jean.chalard 64d80e119e J :
* Split the GameStateMenu.h that contained the code into a header file
  and a source file.
2008-12-30 05:47:45 +00:00
jean.chalard 55f02a1675 J :
* Remove this unused file.
2008-12-30 05:38:33 +00:00
jean.chalard 0edb300119 J :
* Remove this unused file.
2008-12-30 05:29:46 +00:00
jean.chalard 4f345878a3 J :
* Art for new menu style.
2008-12-30 05:25:43 +00:00
jean.chalard a82d4b51bb J :
* New menu style - step one.
  More improvements are to come, but this should be stable and have a good
  portion of what is to be done.
2008-12-30 05:24:38 +00:00
jean.chalard 3e9ff2b580 J :
* Change the name of debug.h into config.h and use the new RESPATH define.
2008-12-25 16:28:03 +00:00
jean.chalard 161da1d3cb J :
* Clean up the tree : don't leave objs in the middle of the source.
* A real makefile that works. - at least under a POSIX OS, we'll see the
  crap ones later
2008-12-25 13:47:35 +00:00
jean.chalard bb9f09df82 J :
* Fix a warning.
2008-12-25 13:18:54 +00:00
jean.chalard d7cd0f5bab J :
* First attempt at a multiplatform makefile for this game
2008-12-20 14:03:51 +00:00
jean.chalard 2d72f1eeac J :
* Add a dependency of linux -> hge.
2008-12-20 10:43:37 +00:00
wagic.the.homebrew 9dfc89815f Erwan
- Added Tokens (needs testing !!!)
- Added a few cards that create tokens
2008-12-16 14:20:03 +00:00
wagic.the.homebrew be4fb31ffc Erwan
- Added first strike to Ancestor's chosen
2008-12-15 02:22:07 +00:00
wagic.the.homebrew 790e2a2cdf Erwan
- improved the parser for "lord", now can take any kind of "target", not only creature types (so it can now be used to code abilities such as Bad moon and crusade)
- fixed typos for goblin lord, zombie master, lord of atlantis
- Added "moveTo" keyword
- added a dozen cards
2008-12-14 12:07:01 +00:00
jean.chalard 6df5261294 J :
* Add newline at the end, remove end-of-line whitespace.
2008-12-13 05:28:31 +00:00
jean.chalard 104df0afa6 J :
* Remove useless (and confusing) files.
2008-12-13 05:23:58 +00:00
wagic.the.homebrew 649efe7987 Erwan - reverted my previous change (Terror is hardcoded right now...) 2008-12-11 04:47:03 +00:00
wagic.the.homebrew ca60188b50 Erwan
-fixed a bug with terror (?)
2008-12-11 04:33:15 +00:00
wagic.the.homebrew bf314c9fa3 Erwan
- fixed a bug with mana producer
- fixed a graphical glitch with quads in the stack
2008-12-08 13:50:21 +00:00
wagic.the.homebrew 35b35f7672 Erwan
- Fixed a small font bug in the deck editor
2008-12-08 12:34:04 +00:00
wagic.the.homebrew 6628225c56 Erwan
- Fixed a few bugs with Ice Age cards
- removed 2 ice age cards that can not work currently
2008-12-08 12:27:48 +00:00
wagic.the.homebrew ceb2b9b7b3 Erwan
- fixed a bug with Mountain goat
- fixed a bug with Hymn of rebirth
2008-12-07 14:12:19 +00:00
wagic.the.homebrew c4aad7ce4b Erwan
- Added a few simple cards
- a few fixes in Ice Age
- implemented Shroud
2008-12-07 07:47:36 +00:00
wagic.the.homebrew 7f5312be20 Erwan
- fixed a bug with creature bond
- fixed a bug with control magic
2008-12-06 14:50:10 +00:00
wagic.the.homebrew b89c4522de Erwan
- display the thumbnail as a "shadow" over the text version of the card if the big picture is not available
- fixed a bug with circles of protection, although graphically it is difficult to understand what's going on when using those cards
- fixed a bug with a card in Ice age
2008-12-06 12:41:23 +00:00
jean.chalard 2aefd38581 J :
* Fix rotation to take over-one-ratios into account.
2008-12-06 03:30:17 +00:00
wagic.the.homebrew 88682af45b Erwan
- hopefully solved problem of AI's manaburn effect on linux
2008-12-03 13:04:45 +00:00
jean.chalard 3626fe74da J :
* Fix an improbable bug.
2008-12-02 14:34:02 +00:00
wagic.the.homebrew e160c0764c Erwan
- removed some elses
2008-12-02 14:23:31 +00:00
wagic.the.homebrew acceb55f92 Erwan
- Minor tweaks in the hope to fix some Valgrind error logs
2008-12-02 14:00:28 +00:00
wagic.the.homebrew b9a9ab6bfa Erwan
- small tweak with input frequency
2008-12-02 13:56:55 +00:00
wagic.the.homebrew d66ef78d12 Erwan
- AI:increased percentage of chance to play an "unknown" Card
- removed delay before displaying big card ingame
- added 2 new AI Decks 
- Fixed a bug with afflict (see tests/afflict.txt)
2008-12-01 12:10:55 +00:00
wagic.the.homebrew 179b7deeb8 Erwan
- fixed a bug with Damage parsing in _cards.dat (should fix damages for Lava axe)
2008-12-01 07:13:33 +00:00
wagic.the.homebrew 9ec06eb4e7 Erwan
- fixed a problem with DOS card files under psp/linux
- Added a bunch of SAFE_DELETE, not sure they're really necessary
- fixed a small interface problem in Shop
2008-11-30 11:47:47 +00:00
wagic.the.homebrew f4cb587426 Erwan
- one more missing image
2008-11-30 02:15:12 +00:00
wagic.the.homebrew d5f268ba03 Erwan
- fixed SimpleMenu Heap corruption in main menu
2008-11-30 01:06:37 +00:00
wagic.the.homebrew 64796253c7 Erwan
- Adding missing files needed at runtime
2008-11-30 00:48:28 +00:00
jean.chalard 2c7c78dfdd J :
* Fix a bug with a non-writable string.
2008-11-29 16:35:03 +00:00
jean.chalard 08113c66c8 J :
* Add a useful method.
2008-11-29 16:30:35 +00:00
wagic.the.homebrew 7bf9cc8c07 Erwan
- Fixed a bug in SampleCache
- simplified card files initial parsing
2008-11-29 15:31:56 +00:00
wagic.the.homebrew 58a50705de Erwan
- Fixed a bug with control magic (see tests/control_magic2.txt)
2008-11-29 06:47:03 +00:00
jean.chalard 5d6a7232cd J :
* Add a linux dir for holding the lib.
2008-11-29 05:29:48 +00:00
wagic.the.homebrew 1cec867b95 Erwan
- Using SAFE_DELETE macro for simplemenu object, in the hope to find the heap corruption problem
2008-11-29 05:21:54 +00:00
wagic.the.homebrew 1ca143abd7 Erwan
- Fixed a bug with royal Assassin
2008-11-28 15:38:05 +00:00
jean.chalard 4196103a03 J :
* Another bugfix.
2008-11-28 15:13:54 +00:00
jean.chalard eef151cac5 J :
* Little bugfix
2008-11-28 15:06:50 +00:00
jean.chalard ec77debc62 J :
* Release holds when key is released.
* Fix a bug that would mark the key pressed instead of released when it's
  read.
2008-11-28 14:52:12 +00:00
jean.chalard 46669050ee J :
* Implement holds for PSP.
2008-11-28 14:33:51 +00:00
jean.chalard 3488d3a498 J :
* Crank up repeat rate to 60 times a second.
2008-11-27 14:37:11 +00:00
jean.chalard 5fec3d4a3d J :
* Use readbutton in the JGuiController.
2008-11-27 14:17:15 +00:00
wagic.the.homebrew b9e2980952 Erwan
- fixed sfx issues on the psp
- removed a few debug strings
2008-11-26 14:29:43 +00:00
jean.chalard 9b04331415 J :
* Take the "PeekBuffer returning -1" case into account
2008-11-26 14:07:19 +00:00
jean.chalard 41c45766ad J :
* Fix an inversion.
* Switch an initialization at the beginning rather than at each message >.>
2008-11-26 13:06:08 +00:00
wagic.the.homebrew 4e0f87a43b Erwan
- fixed the lib to play WAV file (erased too much things in a previous update)
- Updated wav sfx to be playable on the PSP (need to update the lib to accept more formats ?)
- There is still a bug with sfx on the PSP, I suspect I'm erasing files while they are being played !
2008-11-26 11:17:05 +00:00
jean.chalard 886507c525 J :
* Restore the behavior of GetButtonClick, which had been made so that it
  would miss more clicks than it should.
2008-11-25 15:35:01 +00:00
jean.chalard 8ac9da6a7b J :
* Restore the behavior of GetButtonClick, instead of having it miss more
  clicks that it should.
2008-11-25 15:34:13 +00:00
jean.chalard cfea9ff2c0 J :
* Add key repetition.
2008-11-25 15:24:22 +00:00
jean.chalard 3b4519bbe4 J :
* First try at input buffer for PSP.
2008-11-25 15:07:33 +00:00
jean.chalard 3518166189 J :
* Input fix.
* A lot of code cleaning spread across a lot of files.
2008-11-24 12:11:16 +00:00
wagic.the.homebrew 3721247bee Erwan
- It is now possible to have avatars associated to each Deck
- Added SFX
- Added Music files
- Possibility to choose your opponent
- Opponents' difficulty is measured according to their number of victories against a given deck
2008-11-24 09:24:47 +00:00
jean.chalard a9e70c0bdc J :
* Use iterators on vectors instead of indexes.
2008-11-24 08:00:02 +00:00
jean.chalard efff231ac3 J :
* Reserve some RAM for the vector before using it.
2008-11-24 07:52:16 +00:00
jean.chalard 8ca5ae74e0 J :
* Give up on glut, and separate according to technologies rather than OSes
2008-11-24 07:49:14 +00:00
jean.chalard ffb20c2ef6 J :
* New input system, cleaning, and preparation of next API update.
* Have the thing compile under non-WIN32 systems (as a dud binary obviously)
2008-11-24 07:47:47 +00:00
jean.chalard 80784ae1bb J :
* The definitive (?) answer to the signed/unsigned conversions.
2008-11-23 06:21:25 +00:00
jean.chalard d253896b89 J :
* Use three speeds for scrolling in the deck viewer.
2008-11-21 16:35:48 +00:00
jean.chalard 2f32cc8642 J :
* Make scrolling depend on dt
2008-11-21 16:04:44 +00:00
jean.chalard e4f531639b J :
* Next try
2008-11-21 15:42:35 +00:00
jean.chalard 9a530ad6e4 J :
* Next try
2008-11-21 15:37:54 +00:00
jean.chalard 0b4139167f J :
* New try for input
2008-11-21 15:35:36 +00:00
jean.chalard 8068e8e599 J :
* Little bugfix
2008-11-21 15:23:40 +00:00
jean.chalard 15f74fbc5a J :
* Some adjustments, code fixes, cleaning
2008-11-21 15:22:21 +00:00
jean.chalard 176e551f2f J :
* Make it so that only 1 keypress for each key may be accepted for
  a single frame.
2008-11-21 14:34:55 +00:00
jean.chalard d7ea37233c J :
* Key buffer update : Add functions & clean the file
2008-11-21 14:13:01 +00:00
jean.chalard bd5df274e8 J :
* Key buffer input system.
2008-11-21 14:10:20 +00:00
jean.chalard e23ccc408d J :
* Use key buffer functions instead of instant ones.
2008-11-21 14:06:36 +00:00
jean.chalard b992815f5e J :
* Fuxbig.
2008-11-21 14:03:25 +00:00
jean.chalard 4450d559c7 J :
* Bugfix
2008-11-21 14:01:56 +00:00
jean.chalard 03e8d636fc J :
* Add support for the input buffer
2008-11-21 13:20:16 +00:00
jean.chalard 31a2202036 J :
* Fix a warning.
2008-11-21 12:43:20 +00:00
jean.chalard de3c46e143 J :
* Add files
2008-11-20 14:45:46 +00:00
wagic.the.homebrew 349de34106 Erwan
- Fixed MP3 play bug on the psp. MP3 files need to have NO Id3v2 tag, or they won't play. Also, volume control is broken
- added dt to moving W's easter egg movement.
- Added fullscreen for windows version
- other stuff ?
2008-11-19 12:21:23 +00:00
jean.chalard 2434571fa2 J :
* Dude, try Triangle.
2008-11-18 14:10:06 +00:00
jean.chalard b08bd5a8c3 J :
* Add an easter egg.
2008-11-17 17:51:14 +00:00
jean.chalard 8f282e8eae J :
* Some cleaning of the ^M's
* Fix a few warnings
2008-11-17 16:54:18 +00:00
jean.chalard 7363dcccd4 J :
* New title with the moving W.
2008-11-17 16:52:22 +00:00
jean.chalard 54c4524e85 J :
* New title with the moving W.
2008-11-17 16:51:26 +00:00
jean.chalard 79288babdd J :
* New title with the moving W.
2008-11-17 16:51:06 +00:00
jean.chalard bea8c31d86 J :
* Fullscreen support.
2008-11-16 12:31:11 +00:00
wagic.the.homebrew c50ea49e74 Erwan
- Adding new icons from J
- fixed a bug with Zombie Master (for real this time, I swear !)
- The AI should play Wrath of god in a more "clever" way
2008-11-16 10:37:13 +00:00
jean.chalard 0b5c940ae3 J :
* Fix the names of the music files
2008-11-16 10:23:29 +00:00
jean.chalard 138298833b J :
* Fix the DEL key => Square
2008-11-16 07:17:17 +00:00
jean.chalard 480b291ad4 J :
* Fix a little texturing bug.
2008-11-16 07:10:11 +00:00
jean.chalard 96ea61c1ab J :
* Use new icon positions
2008-11-16 06:34:09 +00:00
jean.chalard a5a73663dc J :
* Use new icons with new positions.
2008-11-16 05:29:48 +00:00
jean.chalard 3c603f1ec4 J :
* Remove warnings.
2008-11-16 05:20:08 +00:00
jean.chalard e86e73af2f J :
* Remove useless whitespace & carriage returns, reindent.
2008-11-16 05:17:57 +00:00
jean.chalard 0f41df8023 J :
* Remove carriage returns & whitespace, and re-indent.
2008-11-16 04:42:20 +00:00
wagic.the.homebrew c2a4e1113c Erwan
- removed the AI deck that had a dozen "Wrath of god"
2008-11-15 05:45:50 +00:00
wagic.the.homebrew ccc6332efe Erwan
-removing some unused files
2008-11-15 05:41:52 +00:00
wagic.the.homebrew 73f32d2641 Erwan
- added a few cards
- fixed a bug with spark elemental (now sacrificed at end of turn)
2008-11-15 05:28:12 +00:00
wagic.the.homebrew 28393e8f8a Erwan
- fixed a bug with "/" keyword in _cards.dat parser
- added @next [phasename] keyword in parser
- new tests for recent changes
2008-11-14 15:03:27 +00:00
jean.chalard 3d22a25100 J :
* Reinstate the necessary include.
2008-11-13 13:40:22 +00:00
wagic.the.homebrew 6954d14683 Erwan
- Added 5 lands that come into play tapped
2008-11-13 12:48:24 +00:00
jean.chalard a6a6a48846 J :
* Add linux specific code to the repository.
2008-11-13 12:17:50 +00:00
wagic.the.homebrew da1967270c Erwan
- Added destroy all(xxx) and bury all(xxx) keywords in _cards.dat
2008-11-13 11:36:14 +00:00
wagic.the.homebrew 443817a83a Erwan
- I DID NOT TEST THESE CHANGES, I Don't know if this revision compiles
- Merged my code with r21 from Abrasax (I had mistakenly removed some of his changes)
2008-11-13 04:44:21 +00:00
wagic.the.homebrew a418e10c47 Erwan
- Trying to add generic classes for Triggered abilities. PLEASE DO NOT USE THESE RIGHT NOW, Not Tested AT ALL !
2008-11-12 14:38:30 +00:00
jean.chalard c97dd1f260 J :
* Remove ^M's.
* Re-indent automatically.
* Remove whitespace at the end of lines.
2008-11-12 13:45:42 +00:00
laurent.rabouin 6ad6f9b668 - Fixed Shadow Ability now works properly
- Added Generic KirdApe give P/W modifier when cards inplay
 - Added Rampage (WIP) does not work at the moment
 - Added Cards from diverse Sets
2008-11-12 08:23:39 +00:00
jean.chalard 90238d8269 J :
* Add the Main for linux
2008-11-11 13:52:09 +00:00
jean.chalard 98d8f8c833 J :
* Fix a few warnings.
2008-11-10 14:52:52 +00:00
wagic.the.homebrew c72fbbd20c Erwan
- the testsuite now outputs an HTML result file with colors
- hopefully speed improvements for the game on PSP (needs testing on the actual device)
2008-11-10 14:38:30 +00:00
jean.chalard 5f29d6b7fc J :
* New attempt at making things work when command is not found.
2008-11-10 12:54:20 +00:00
jean.chalard e497e7c713 J :
* Attempt at solving the problem of the `which` command not found.
2008-11-10 12:26:03 +00:00
wagic.the.homebrew 37220f9e24 Erwan
- fixed a few warnings with the PSP compilation
- changed definition of DWORD to unsinged int rather than unsigned long for PSP
- fixed make 3xx. the call to "which" in the makefile still needs to be corrected with a DOS compatible call
2008-11-10 11:07:33 +00:00
wagic.the.homebrew 163512a802 Erwan
- a few cards added
- AddedShadowmoor Set (56/286 cards)
- updated PSP makefile
2008-11-09 09:51:13 +00:00
wagic.the.homebrew 62a7a0e211 Erwan
- a few extra cards in Alara
- Added missing phaseRing files (sorry...)
2008-11-09 07:34:40 +00:00
wagic.the.homebrew 01d2110e8d Erwan
- Added the possibility to narrow a spell/ability target according to color,tapped status, attacker/blocker, abilities...
- Changed the games phase system to become a phaseRing. This allows to add cards that have an impact on the phases, such as stasis
- Added a few cards
- Fixed a (windows) bug in gatherer tool
- Adding stdint.h for VC++ (see wikipedia->stdint.h)
- deleting the compiled PSP lib to avoid confusion. People who work from the sourcehave to compile the lib by themselves.
2008-11-09 04:28:03 +00:00
laurent.rabouin 45f3d6fe6e Corrected Array in MTGDefinitions that is the cause why the landshome ability was not functioning.
No the landshome function well (tested foresthome on gorillapack)
2008-11-08 16:24:48 +00:00
laurent.rabouin 4d798fe527 Added the todo.dat from ICE AGE
Added the Tap in the parser (works)
Removed the code from MTGAbility that could be added in the cards.dat and modified cards.dat
Tryed to add the shadow & landshome ability (does not work properly)
Added the maxtoughness in targechooser--> added the card Aegis from ICE AGE
2008-11-08 15:54:59 +00:00
wagic.the.homebrew cb0b68b76d Erwan
- Added Ice Age cards from Abrasax
- Added "untap" and "gainlife" abilities in script
2008-11-06 14:20:42 +00:00
jean.chalard d28fff72db J :
* Change the binding define for __attribute__ from LINUX to __GNUC__
2008-11-05 15:00:32 +00:00
jean.chalard 9a9156dd98 J :
* Remove __attribute__ when not GCC.
2008-11-05 14:55:38 +00:00
jean.chalard 098c8ce09d J :
* Change sys/types.h for stdint.h which is the standard C99 header.
2008-11-05 14:08:55 +00:00
jean.chalard ddf04e14e8 J :
* Update for linux support.
2008-11-05 13:38:39 +00:00
wagic.the.homebrew 89dae65237 -Adding some missing files to the repository
-Improved "auto" parser : added "lord", improved "draw"
2008-11-03 13:53:06 +00:00
jean.chalard 4b762565ce J :
* Add Linux Makfile (preliminary version)
* Fix a signed/unsigned bug
2008-11-03 10:30:57 +00:00
wagic.the.homebrew 440d6d7629 - fixed a Zombie Master bug
- fixed a graveyard bug
2008-11-03 04:27:58 +00:00
wagic.the.homebrew d45e3b101b 2008-11-02 09:50:16 +00:00
5594 changed files with 1257319 additions and 1554505 deletions
+243
View File
@@ -0,0 +1,243 @@
#################
## Eclipse
#################
*.pydevproject
.project
.metadata
bin/
tmp/
*.tmp
*.bak
*.swp
*~.nib
local.properties
.classpath
.settings/
.loadpath
# External tool builders
.externalToolBuilders/
# Locally stored "Eclipse launch configurations"
*.launch
# CDT-specific
.cproject
# PDT-specific
.buildpath
#################
## Visual Studio
#################
## Ignore Visual Studio temporary files, build results, and
## files generated by popular Visual Studio add-ons.
# User-specific files
*.suo
*.user
*.sln.docstates
# Build results
[Dd]ebug/
[Rr]elease/
x64/
build/
[Bb]in/
[Oo]bj/
# MSTest test Results
[Tt]est[Rr]esult*/
[Bb]uild[Ll]og.*
*_i.c
*_p.c
*.ilk
*.meta
*.obj
*.pch
*.pdb
*.pgc
*.pgd
*.rsp
*.sbr
*.tlb
*.tli
*.tlog
*.tlh
*.tmp
*.tmp_proj
*.log
*.vspscc
*.vssscc
.builds
*.pidb
*.log
*.scc
# Visual C++ cache files
ipch/
*.aps
*.ncb
*.opensdf
*.sdf
*.cachefile
# Visual Studio profiler
*.psess
*.vsp
*.vspx
# Guidance Automation Toolkit
*.gpState
# ReSharper is a .NET coding add-in
_ReSharper*/
*.[Rr]e[Ss]harper
# TeamCity is a build add-in
_TeamCity*
# DotCover is a Code Coverage Tool
*.dotCover
# NCrunch
*.ncrunch*
.*crunch*.local.xml
# Installshield output folder
[Ee]xpress/
# DocProject is a documentation generator add-in
DocProject/buildhelp/
DocProject/Help/*.HxT
DocProject/Help/*.HxC
DocProject/Help/*.hhc
DocProject/Help/*.hhk
DocProject/Help/*.hhp
DocProject/Help/Html2
DocProject/Help/html
# Click-Once directory
publish/
# Publish Web Output
*.Publish.xml
*.pubxml
# NuGet Packages Directory
## TODO: If you have NuGet Package Restore enabled, uncomment the next line
#packages/
# Windows Azure Build Output
csx
*.build.csdef
# Windows Store app package directory
AppPackages/
# Others
sql/
*.Cache
ClientBin/
[Ss]tyle[Cc]op.*
~$*
*~
*.dbmdl
*.[Pp]ublish.xml
*.pfx
*.publishsettings
# RIA/Silverlight projects
Generated_Code/
# Backup & report files from converting an old project file to a newer
# Visual Studio version. Backup files are not needed, because we have git ;-)
_UpgradeReport_Files/
Backup*/
UpgradeLog*.XML
UpgradeLog*.htm
# SQL Server files
App_Data/*.mdf
App_Data/*.ldf
#############
## Windows detritus
#############
# Windows image file caches
Thumbs.db
ehthumbs.db
# Folder config file
Desktop.ini
# Recycle Bin used on file shares
$RECYCLE.BIN/
# Mac crap
.DS_Store
#############
## Python
#############
*.py[co]
# Packages
*.egg
*.egg-info
dist/
build/
eggs/
parts/
var/
sdist/
develop-eggs/
.installed.cfg
# Installer logs
pip-log.txt
# Unit test / coverage reports
.coverage
.tox
#Translations
*.mo
#Mr Developer
.mr.developer.cfg
#for XCode and MacOS
## Mac OS X
*.DS_Store
# Xcode
*.pbxuser
*.mode1v3
*.mode2v3
*.perspectivev3
*.xcuserstate
project.xcworkspace/
xcuserdata/
# Generated files
*.o
*.pyc
#Python modules
MANIFEST
dist/
build/
# Backup files
*~.nib
+24
View File
@@ -0,0 +1,24 @@
language: cpp
before_install:
- export PSPDEV="$TRAVIS_BUILD_DIR/opt/pspsdk"
- export PSPSDK="$PSPDEV/psp/sdk"
- export PATH="$PATH:$PSPDEV/bin:$PSPSDK/bin"
- export ANDROID="android-sdk-linux/tools/android"
install:
- sudo apt-get update -qq
- if [ `uname -m` = x86_64 ]; then sudo apt-get install -qq --force-yes libgd2-xpm ia32-libs ia32-libs-multiarch jq; fi
- wget -O sdk.lzma http://sourceforge.net/projects/minpspw/files/SDK%20%2B%20devpak/pspsdk%200.11.2/minpspw_0.11.2-amd64.tar.lzma/download
- tar -x --xz -f sdk.lzma
- wget http://dl.google.com/android/ndk/android-ndk-r9-linux-x86_64.tar.bz2 -nv
- wget http://dl.google.com/android/android-sdk_r22-linux.tgz -nv
- tar --absolute-names -jxf android-ndk-r9-linux-x86_64.tar.bz2
- tar -zxf android-sdk_r22-linux.tgz
- $ANDROID list sdk -a
- echo yes | $ANDROID update sdk -a --filter 1,2,4,18 --no-ui --force > log.txt
- sudo pip install pyjavaproperties
script: ./travis-script.sh
env:
global:
secure: YocijVYZa1oDPviFubPIpmBmXyw0gQ7D0YA6tC01wExXvY+8tGUh1HQ5uXn8LotRZ+Ob5HLHDaCzkKWF8+57ILSMeHrnf6tcRyyeO7wjNY9P7WvSZyCjvqnWzsUN9tiMmsEzhTz2MaUgsY6ocB/4nbWZwfQvL7z+s7z41R4J1I4=
script: "./travis-script.sh"
after_success: ./upload-binaries.sh
+47
View File
@@ -0,0 +1,47 @@
// (C) Copyright Herve Bronnimann 2004.
//
// Distributed under the Boost Software License, Version 1.0. (See accompanying
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
/*
Revision history:
1 July 2004
Split the code into two headers to lessen dependence on
Boost.tuple. (Herve)
26 June 2004
Added the code for the boost minmax library. (Herve)
*/
#ifndef BOOST_ALGORITHM_MINMAX_HPP
#define BOOST_ALGORITHM_MINMAX_HPP
/* PROPOSED STANDARD EXTENSIONS:
*
* minmax(a, b)
* Effect: (b<a) ? std::make_pair(b,a) : std::make_pair(a,b);
*
* minmax(a, b, comp)
* Effect: comp(b,a) ? std::make_pair(b,a) : std::make_pair(a,b);
*
*/
#include <boost/tuple/tuple.hpp> // for using pairs with boost::cref
#include <boost/ref.hpp>
namespace boost {
template <typename T>
tuple< T const&, T const& >
minmax(T const& a, T const& b) {
return (b<a) ? make_tuple(cref(b),cref(a)) : make_tuple(cref(a),cref(b));
}
template <typename T, class BinaryPredicate>
tuple< T const&, T const& >
minmax(T const& a, T const& b, BinaryPredicate comp) {
return comp(b,a) ? make_tuple(cref(b),cref(a)) : make_tuple(cref(a),cref(b));
}
} // namespace boost
#endif // BOOST_ALGORITHM_MINMAX_HPP
+551
View File
@@ -0,0 +1,551 @@
// (C) Copyright Herve Bronnimann 2004.
//
// Distributed under the Boost Software License, Version 1.0. (See accompanying
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
/*
Revision history:
1 July 2004
Split the code into two headers to lessen dependence on
Boost.tuple. (Herve)
26 June 2004
Added the code for the boost minmax library. (Herve)
*/
#ifndef BOOST_ALGORITHM_MINMAX_ELEMENT_HPP
#define BOOST_ALGORITHM_MINMAX_ELEMENT_HPP
/* PROPOSED STANDARD EXTENSIONS:
*
* minmax_element(first, last)
* Effect: std::make_pair( std::min_element(first, last),
* std::max_element(first, last) );
*
* minmax_element(first, last, comp)
* Effect: std::make_pair( std::min_element(first, last, comp),
* std::max_element(first, last, comp) );
*/
#include <utility> // for std::pair and std::make_pair
namespace boost {
namespace detail { // for obtaining a uniform version of minmax_element
// that compiles with VC++ 6.0 -- avoid the iterator_traits by
// having comparison object over iterator, not over dereferenced value
template <typename Iterator>
struct less_over_iter {
bool operator()(Iterator const& it1,
Iterator const& it2) const { return *it1 < *it2; }
};
template <typename Iterator, class BinaryPredicate>
struct binary_pred_over_iter {
explicit binary_pred_over_iter(BinaryPredicate const& p ) : m_p( p ) {}
bool operator()(Iterator const& it1,
Iterator const& it2) const { return m_p(*it1, *it2); }
private:
BinaryPredicate m_p;
};
// common base for the two minmax_element overloads
template <typename ForwardIter, class Compare >
std::pair<ForwardIter,ForwardIter>
basic_minmax_element(ForwardIter first, ForwardIter last, Compare comp)
{
if (first == last)
return std::make_pair(last,last);
ForwardIter min_result = first;
ForwardIter max_result = first;
// if only one element
ForwardIter second = first; ++second;
if (second == last)
return std::make_pair(min_result, max_result);
// treat first pair separately (only one comparison for first two elements)
ForwardIter potential_min_result = last;
if (comp(first, second))
max_result = second;
else {
min_result = second;
potential_min_result = first;
}
// then each element by pairs, with at most 3 comparisons per pair
first = ++second; if (first != last) ++second;
while (second != last) {
if (comp(first, second)) {
if (comp(first, min_result)) {
min_result = first;
potential_min_result = last;
}
if (comp(max_result, second))
max_result = second;
} else {
if (comp(second, min_result)) {
min_result = second;
potential_min_result = first;
}
if (comp(max_result, first))
max_result = first;
}
first = ++second;
if (first != last) ++second;
}
// if odd number of elements, treat last element
if (first != last) { // odd number of elements
if (comp(first, min_result))
min_result = first, potential_min_result = last;
else if (comp(max_result, first))
max_result = first;
}
// resolve min_result being incorrect with one extra comparison
// (in which case potential_min_result is necessarily the correct result)
if (potential_min_result != last
&& !comp(min_result, potential_min_result))
min_result = potential_min_result;
return std::make_pair(min_result,max_result);
}
} // namespace detail
template <typename ForwardIter>
std::pair<ForwardIter,ForwardIter>
minmax_element(ForwardIter first, ForwardIter last)
{
return detail::basic_minmax_element(first, last,
detail::less_over_iter<ForwardIter>() );
}
template <typename ForwardIter, class BinaryPredicate>
std::pair<ForwardIter,ForwardIter>
minmax_element(ForwardIter first, ForwardIter last, BinaryPredicate comp)
{
return detail::basic_minmax_element(first, last,
detail::binary_pred_over_iter<ForwardIter,BinaryPredicate>(comp) );
}
}
/* PROPOSED BOOST EXTENSIONS
* In the description below, [rfirst,rlast) denotes the reversed range
* of [first,last). Even though the iterator type of first and last may
* be only a Forward Iterator, it is possible to explain the semantics
* by assuming that it is a Bidirectional Iterator. In the sequel,
* reverse(ForwardIterator&) returns the reverse_iterator adaptor.
* This is not how the functions would be implemented!
*
* first_min_element(first, last)
* Effect: std::min_element(first, last);
*
* first_min_element(first, last, comp)
* Effect: std::min_element(first, last, comp);
*
* last_min_element(first, last)
* Effect: reverse( std::min_element(reverse(last), reverse(first)) );
*
* last_min_element(first, last, comp)
* Effect: reverse( std::min_element(reverse(last), reverse(first), comp) );
*
* first_max_element(first, last)
* Effect: std::max_element(first, last);
*
* first_max_element(first, last, comp)
* Effect: max_element(first, last);
*
* last_max_element(first, last)
* Effect: reverse( std::max_element(reverse(last), reverse(first)) );
*
* last_max_element(first, last, comp)
* Effect: reverse( std::max_element(reverse(last), reverse(first), comp) );
*
* first_min_first_max_element(first, last)
* Effect: std::make_pair( first_min_element(first, last),
* first_max_element(first, last) );
*
* first_min_first_max_element(first, last, comp)
* Effect: std::make_pair( first_min_element(first, last, comp),
* first_max_element(first, last, comp) );
*
* first_min_last_max_element(first, last)
* Effect: std::make_pair( first_min_element(first, last),
* last_max_element(first, last) );
*
* first_min_last_max_element(first, last, comp)
* Effect: std::make_pair( first_min_element(first, last, comp),
* last_max_element(first, last, comp) );
*
* last_min_first_max_element(first, last)
* Effect: std::make_pair( last_min_element(first, last),
* first_max_element(first, last) );
*
* last_min_first_max_element(first, last, comp)
* Effect: std::make_pair( last_min_element(first, last, comp),
* first_max_element(first, last, comp) );
*
* last_min_last_max_element(first, last)
* Effect: std::make_pair( last_min_element(first, last),
* last_max_element(first, last) );
*
* last_min_last_max_element(first, last, comp)
* Effect: std::make_pair( last_min_element(first, last, comp),
* last_max_element(first, last, comp) );
*/
namespace boost {
// Min_element and max_element variants
namespace detail { // common base for the overloads
template <typename ForwardIter, class BinaryPredicate>
ForwardIter
basic_first_min_element(ForwardIter first, ForwardIter last,
BinaryPredicate comp)
{
if (first == last) return last;
ForwardIter min_result = first;
while (++first != last)
if (comp(first, min_result))
min_result = first;
return min_result;
}
template <typename ForwardIter, class BinaryPredicate>
ForwardIter
basic_last_min_element(ForwardIter first, ForwardIter last,
BinaryPredicate comp)
{
if (first == last) return last;
ForwardIter min_result = first;
while (++first != last)
if (!comp(min_result, first))
min_result = first;
return min_result;
}
template <typename ForwardIter, class BinaryPredicate>
ForwardIter
basic_first_max_element(ForwardIter first, ForwardIter last,
BinaryPredicate comp)
{
if (first == last) return last;
ForwardIter max_result = first;
while (++first != last)
if (comp(max_result, first))
max_result = first;
return max_result;
}
template <typename ForwardIter, class BinaryPredicate>
ForwardIter
basic_last_max_element(ForwardIter first, ForwardIter last,
BinaryPredicate comp)
{
if (first == last) return last;
ForwardIter max_result = first;
while (++first != last)
if (!comp(first, max_result))
max_result = first;
return max_result;
}
} // namespace detail
template <typename ForwardIter>
ForwardIter
first_min_element(ForwardIter first, ForwardIter last)
{
return detail::basic_first_min_element(first, last,
detail::less_over_iter<ForwardIter>() );
}
template <typename ForwardIter, class BinaryPredicate>
ForwardIter
first_min_element(ForwardIter first, ForwardIter last, BinaryPredicate comp)
{
return detail::basic_first_min_element(first, last,
detail::binary_pred_over_iter<ForwardIter,BinaryPredicate>(comp) );
}
template <typename ForwardIter>
ForwardIter
last_min_element(ForwardIter first, ForwardIter last)
{
return detail::basic_last_min_element(first, last,
detail::less_over_iter<ForwardIter>() );
}
template <typename ForwardIter, class BinaryPredicate>
ForwardIter
last_min_element(ForwardIter first, ForwardIter last, BinaryPredicate comp)
{
return detail::basic_last_min_element(first, last,
detail::binary_pred_over_iter<ForwardIter,BinaryPredicate>(comp) );
}
template <typename ForwardIter>
ForwardIter
first_max_element(ForwardIter first, ForwardIter last)
{
return detail::basic_first_max_element(first, last,
detail::less_over_iter<ForwardIter>() );
}
template <typename ForwardIter, class BinaryPredicate>
ForwardIter
first_max_element(ForwardIter first, ForwardIter last, BinaryPredicate comp)
{
return detail::basic_first_max_element(first, last,
detail::binary_pred_over_iter<ForwardIter,BinaryPredicate>(comp) );
}
template <typename ForwardIter>
ForwardIter
last_max_element(ForwardIter first, ForwardIter last)
{
return detail::basic_last_max_element(first, last,
detail::less_over_iter<ForwardIter>() );
}
template <typename ForwardIter, class BinaryPredicate>
ForwardIter
last_max_element(ForwardIter first, ForwardIter last, BinaryPredicate comp)
{
return detail::basic_last_max_element(first, last,
detail::binary_pred_over_iter<ForwardIter,BinaryPredicate>(comp) );
}
// Minmax_element variants -- comments removed
namespace detail {
template <typename ForwardIter, class BinaryPredicate>
std::pair<ForwardIter,ForwardIter>
basic_first_min_last_max_element(ForwardIter first, ForwardIter last,
BinaryPredicate comp)
{
if (first == last)
return std::make_pair(last,last);
ForwardIter min_result = first;
ForwardIter max_result = first;
ForwardIter second = ++first;
if (second == last)
return std::make_pair(min_result, max_result);
if (comp(second, min_result))
min_result = second;
else
max_result = second;
first = ++second; if (first != last) ++second;
while (second != last) {
if (!comp(second, first)) {
if (comp(first, min_result))
min_result = first;
if (!comp(second, max_result))
max_result = second;
} else {
if (comp(second, min_result))
min_result = second;
if (!comp(first, max_result))
max_result = first;
}
first = ++second; if (first != last) ++second;
}
if (first != last) {
if (comp(first, min_result))
min_result = first;
else if (!comp(first, max_result))
max_result = first;
}
return std::make_pair(min_result, max_result);
}
template <typename ForwardIter, class BinaryPredicate>
std::pair<ForwardIter,ForwardIter>
basic_last_min_first_max_element(ForwardIter first, ForwardIter last,
BinaryPredicate comp)
{
if (first == last) return std::make_pair(last,last);
ForwardIter min_result = first;
ForwardIter max_result = first;
ForwardIter second = ++first;
if (second == last)
return std::make_pair(min_result, max_result);
if (comp(max_result, second))
max_result = second;
else
min_result = second;
first = ++second; if (first != last) ++second;
while (second != last) {
if (comp(first, second)) {
if (!comp(min_result, first))
min_result = first;
if (comp(max_result, second))
max_result = second;
} else {
if (!comp(min_result, second))
min_result = second;
if (comp(max_result, first))
max_result = first;
}
first = ++second; if (first != last) ++second;
}
if (first != last) {
if (!comp(min_result, first))
min_result = first;
else if (comp(max_result, first))
max_result = first;
}
return std::make_pair(min_result, max_result);
}
template <typename ForwardIter, class BinaryPredicate>
std::pair<ForwardIter,ForwardIter>
basic_last_min_last_max_element(ForwardIter first, ForwardIter last,
BinaryPredicate comp)
{
if (first == last) return std::make_pair(last,last);
ForwardIter min_result = first;
ForwardIter max_result = first;
ForwardIter second = first; ++second;
if (second == last)
return std::make_pair(min_result,max_result);
ForwardIter potential_max_result = last;
if (comp(first, second))
max_result = second;
else {
min_result = second;
potential_max_result = second;
}
first = ++second; if (first != last) ++second;
while (second != last) {
if (comp(first, second)) {
if (!comp(min_result, first))
min_result = first;
if (!comp(second, max_result)) {
max_result = second;
potential_max_result = last;
}
} else {
if (!comp(min_result, second))
min_result = second;
if (!comp(first, max_result)) {
max_result = first;
potential_max_result = second;
}
}
first = ++second;
if (first != last) ++second;
}
if (first != last) {
if (!comp(min_result, first))
min_result = first;
if (!comp(first, max_result)) {
max_result = first;
potential_max_result = last;
}
}
if (potential_max_result != last
&& !comp(potential_max_result, max_result))
max_result = potential_max_result;
return std::make_pair(min_result,max_result);
}
} // namespace detail
template <typename ForwardIter>
inline std::pair<ForwardIter,ForwardIter>
first_min_first_max_element(ForwardIter first, ForwardIter last)
{
return minmax_element(first, last);
}
template <typename ForwardIter, class BinaryPredicate>
inline std::pair<ForwardIter,ForwardIter>
first_min_first_max_element(ForwardIter first, ForwardIter last,
BinaryPredicate comp)
{
return minmax_element(first, last, comp);
}
template <typename ForwardIter>
std::pair<ForwardIter,ForwardIter>
first_min_last_max_element(ForwardIter first, ForwardIter last)
{
return detail::basic_first_min_last_max_element(first, last,
detail::less_over_iter<ForwardIter>() );
}
template <typename ForwardIter, class BinaryPredicate>
inline std::pair<ForwardIter,ForwardIter>
first_min_last_max_element(ForwardIter first, ForwardIter last,
BinaryPredicate comp)
{
return detail::basic_first_min_last_max_element(first, last,
detail::binary_pred_over_iter<ForwardIter,BinaryPredicate>(comp) );
}
template <typename ForwardIter>
std::pair<ForwardIter,ForwardIter>
last_min_first_max_element(ForwardIter first, ForwardIter last)
{
return detail::basic_last_min_first_max_element(first, last,
detail::less_over_iter<ForwardIter>() );
}
template <typename ForwardIter, class BinaryPredicate>
inline std::pair<ForwardIter,ForwardIter>
last_min_first_max_element(ForwardIter first, ForwardIter last,
BinaryPredicate comp)
{
return detail::basic_last_min_first_max_element(first, last,
detail::binary_pred_over_iter<ForwardIter,BinaryPredicate>(comp) );
}
template <typename ForwardIter>
std::pair<ForwardIter,ForwardIter>
last_min_last_max_element(ForwardIter first, ForwardIter last)
{
return detail::basic_last_min_last_max_element(first, last,
detail::less_over_iter<ForwardIter>() );
}
template <typename ForwardIter, class BinaryPredicate>
inline std::pair<ForwardIter,ForwardIter>
last_min_last_max_element(ForwardIter first, ForwardIter last,
BinaryPredicate comp)
{
return detail::basic_last_min_last_max_element(first, last,
detail::binary_pred_over_iter<ForwardIter,BinaryPredicate>(comp) );
}
} // namespace boost
#endif // BOOST_ALGORITHM_MINMAX_ELEMENT_HPP
+31
View File
@@ -0,0 +1,31 @@
// Boost string_algo library string_algo.hpp header file ---------------------------//
// Copyright Pavol Droba 2002-2004.
//
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
// See http://www.boost.org/ for updates, documentation, and revision history.
#ifndef BOOST_STRING_ALGO_HPP
#define BOOST_STRING_ALGO_HPP
/*! \file
Cumulative include for string_algo library
*/
#include <boost/algorithm/string/std_containers_traits.hpp>
#include <boost/algorithm/string/trim.hpp>
#include <boost/algorithm/string/case_conv.hpp>
#include <boost/algorithm/string/predicate.hpp>
#include <boost/algorithm/string/find.hpp>
#include <boost/algorithm/string/split.hpp>
#include <boost/algorithm/string/join.hpp>
#include <boost/algorithm/string/replace.hpp>
#include <boost/algorithm/string/erase.hpp>
#include <boost/algorithm/string/classification.hpp>
#include <boost/algorithm/string/find_iterator.hpp>
#endif // BOOST_STRING_ALGO_HPP
+176
View File
@@ -0,0 +1,176 @@
// Boost string_algo library case_conv.hpp header file ---------------------------//
// Copyright Pavol Droba 2002-2003.
//
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
// See http://www.boost.org/ for updates, documentation, and revision history.
#ifndef BOOST_STRING_CASE_CONV_HPP
#define BOOST_STRING_CASE_CONV_HPP
#include <boost/algorithm/string/config.hpp>
#include <algorithm>
#include <locale>
#include <boost/iterator/transform_iterator.hpp>
#include <boost/range/as_literal.hpp>
#include <boost/range/begin.hpp>
#include <boost/range/end.hpp>
#include <boost/range/value_type.hpp>
#include <boost/algorithm/string/detail/case_conv.hpp>
/*! \file
Defines sequence case-conversion algorithms.
Algorithms convert each element in the input sequence to the
desired case using provided locales.
*/
namespace boost {
namespace algorithm {
// to_lower -----------------------------------------------//
//! Convert to lower case
/*!
Each element of the input sequence is converted to lower
case. The result is a copy of the input converted to lower case.
It is returned as a sequence or copied to the output iterator.
\param Output An output iterator to which the result will be copied
\param Input An input range
\param Loc A locale used for conversion
\return
An output iterator pointing just after the last inserted character or
a copy of the input
\note The second variant of this function provides the strong exception-safety guarantee
*/
template<typename OutputIteratorT, typename RangeT>
inline OutputIteratorT
to_lower_copy(
OutputIteratorT Output,
const RangeT& Input,
const std::locale& Loc=std::locale())
{
return ::boost::algorithm::detail::transform_range_copy(
Output,
::boost::as_literal(Input),
::boost::algorithm::detail::to_lowerF<
typename range_value<RangeT>::type >(Loc));
}
//! Convert to lower case
/*!
\overload
*/
template<typename SequenceT>
inline SequenceT to_lower_copy(
const SequenceT& Input,
const std::locale& Loc=std::locale())
{
return ::boost::algorithm::detail::transform_range_copy<SequenceT>(
Input,
::boost::algorithm::detail::to_lowerF<
typename range_value<SequenceT>::type >(Loc));
}
//! Convert to lower case
/*!
Each element of the input sequence is converted to lower
case. The input sequence is modified in-place.
\param Input A range
\param Loc a locale used for conversion
*/
template<typename WritableRangeT>
inline void to_lower(
WritableRangeT& Input,
const std::locale& Loc=std::locale())
{
::boost::algorithm::detail::transform_range(
::boost::as_literal(Input),
::boost::algorithm::detail::to_lowerF<
typename range_value<WritableRangeT>::type >(Loc));
}
// to_upper -----------------------------------------------//
//! Convert to upper case
/*!
Each element of the input sequence is converted to upper
case. The result is a copy of the input converted to upper case.
It is returned as a sequence or copied to the output iterator
\param Output An output iterator to which the result will be copied
\param Input An input range
\param Loc A locale used for conversion
\return
An output iterator pointing just after the last inserted character or
a copy of the input
\note The second variant of this function provides the strong exception-safety guarantee
*/
template<typename OutputIteratorT, typename RangeT>
inline OutputIteratorT
to_upper_copy(
OutputIteratorT Output,
const RangeT& Input,
const std::locale& Loc=std::locale())
{
return ::boost::algorithm::detail::transform_range_copy(
Output,
::boost::as_literal(Input),
::boost::algorithm::detail::to_upperF<
typename range_value<RangeT>::type >(Loc));
}
//! Convert to upper case
/*!
\overload
*/
template<typename SequenceT>
inline SequenceT to_upper_copy(
const SequenceT& Input,
const std::locale& Loc=std::locale())
{
return ::boost::algorithm::detail::transform_range_copy<SequenceT>(
Input,
::boost::algorithm::detail::to_upperF<
typename range_value<SequenceT>::type >(Loc));
}
//! Convert to upper case
/*!
Each element of the input sequence is converted to upper
case. The input sequence is modified in-place.
\param Input An input range
\param Loc a locale used for conversion
*/
template<typename WritableRangeT>
inline void to_upper(
WritableRangeT& Input,
const std::locale& Loc=std::locale())
{
::boost::algorithm::detail::transform_range(
::boost::as_literal(Input),
::boost::algorithm::detail::to_upperF<
typename range_value<WritableRangeT>::type >(Loc));
}
} // namespace algorithm
// pull names to the boost namespace
using algorithm::to_lower;
using algorithm::to_lower_copy;
using algorithm::to_upper;
using algorithm::to_upper_copy;
} // namespace boost
#endif // BOOST_STRING_CASE_CONV_HPP
@@ -0,0 +1,312 @@
// Boost string_algo library classification.hpp header file ---------------------------//
// Copyright Pavol Droba 2002-2003.
//
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
// See http://www.boost.org/ for updates, documentation, and revision history.
#ifndef BOOST_STRING_CLASSIFICATION_HPP
#define BOOST_STRING_CLASSIFICATION_HPP
#include <algorithm>
#include <locale>
#include <boost/range/value_type.hpp>
#include <boost/range/as_literal.hpp>
#include <boost/algorithm/string/detail/classification.hpp>
#include <boost/algorithm/string/predicate_facade.hpp>
/*! \file
Classification predicates are included in the library to give
some more convenience when using algorithms like \c trim() and \c all().
They wrap functionality of STL classification functions ( e.g. \c std::isspace() )
into generic functors.
*/
namespace boost {
namespace algorithm {
// classification functor generator -------------------------------------//
//! is_classified predicate
/*!
Construct the \c is_classified predicate. This predicate holds if the input is
of specified \c std::ctype category.
\param Type A \c std::ctype category
\param Loc A locale used for classification
\return An instance of the \c is_classified predicate
*/
inline detail::is_classifiedF
is_classified(std::ctype_base::mask Type, const std::locale& Loc=std::locale())
{
return detail::is_classifiedF(Type, Loc);
}
//! is_space predicate
/*!
Construct the \c is_classified predicate for the \c ctype_base::space category.
\param Loc A locale used for classification
\return An instance of the \c is_classified predicate
*/
inline detail::is_classifiedF
is_space(const std::locale& Loc=std::locale())
{
return detail::is_classifiedF(std::ctype_base::space, Loc);
}
//! is_alnum predicate
/*!
Construct the \c is_classified predicate for the \c ctype_base::alnum category.
\param Loc A locale used for classification
\return An instance of the \c is_classified predicate
*/
inline detail::is_classifiedF
is_alnum(const std::locale& Loc=std::locale())
{
return detail::is_classifiedF(std::ctype_base::alnum, Loc);
}
//! is_alpha predicate
/*!
Construct the \c is_classified predicate for the \c ctype_base::alpha category.
\param Loc A locale used for classification
\return An instance of the \c is_classified predicate
*/
inline detail::is_classifiedF
is_alpha(const std::locale& Loc=std::locale())
{
return detail::is_classifiedF(std::ctype_base::alpha, Loc);
}
//! is_cntrl predicate
/*!
Construct the \c is_classified predicate for the \c ctype_base::cntrl category.
\param Loc A locale used for classification
\return An instance of the \c is_classified predicate
*/
inline detail::is_classifiedF
is_cntrl(const std::locale& Loc=std::locale())
{
return detail::is_classifiedF(std::ctype_base::cntrl, Loc);
}
//! is_digit predicate
/*!
Construct the \c is_classified predicate for the \c ctype_base::digit category.
\param Loc A locale used for classification
\return An instance of the \c is_classified predicate
*/
inline detail::is_classifiedF
is_digit(const std::locale& Loc=std::locale())
{
return detail::is_classifiedF(std::ctype_base::digit, Loc);
}
//! is_graph predicate
/*!
Construct the \c is_classified predicate for the \c ctype_base::graph category.
\param Loc A locale used for classification
\return An instance of the \c is_classified predicate
*/
inline detail::is_classifiedF
is_graph(const std::locale& Loc=std::locale())
{
return detail::is_classifiedF(std::ctype_base::graph, Loc);
}
//! is_lower predicate
/*!
Construct the \c is_classified predicate for the \c ctype_base::lower category.
\param Loc A locale used for classification
\return An instance of \c is_classified predicate
*/
inline detail::is_classifiedF
is_lower(const std::locale& Loc=std::locale())
{
return detail::is_classifiedF(std::ctype_base::lower, Loc);
}
//! is_print predicate
/*!
Construct the \c is_classified predicate for the \c ctype_base::print category.
\param Loc A locale used for classification
\return An instance of the \c is_classified predicate
*/
inline detail::is_classifiedF
is_print(const std::locale& Loc=std::locale())
{
return detail::is_classifiedF(std::ctype_base::print, Loc);
}
//! is_punct predicate
/*!
Construct the \c is_classified predicate for the \c ctype_base::punct category.
\param Loc A locale used for classification
\return An instance of the \c is_classified predicate
*/
inline detail::is_classifiedF
is_punct(const std::locale& Loc=std::locale())
{
return detail::is_classifiedF(std::ctype_base::punct, Loc);
}
//! is_upper predicate
/*!
Construct the \c is_classified predicate for the \c ctype_base::upper category.
\param Loc A locale used for classification
\return An instance of the \c is_classified predicate
*/
inline detail::is_classifiedF
is_upper(const std::locale& Loc=std::locale())
{
return detail::is_classifiedF(std::ctype_base::upper, Loc);
}
//! is_xdigit predicate
/*!
Construct the \c is_classified predicate for the \c ctype_base::xdigit category.
\param Loc A locale used for classification
\return An instance of the \c is_classified predicate
*/
inline detail::is_classifiedF
is_xdigit(const std::locale& Loc=std::locale())
{
return detail::is_classifiedF(std::ctype_base::xdigit, Loc);
}
//! is_any_of predicate
/*!
Construct the \c is_any_of predicate. The predicate holds if the input
is included in the specified set of characters.
\param Set A set of characters to be recognized
\return An instance of the \c is_any_of predicate
*/
template<typename RangeT>
inline detail::is_any_ofF<
BOOST_STRING_TYPENAME range_value<RangeT>::type>
is_any_of( const RangeT& Set )
{
iterator_range<BOOST_STRING_TYPENAME range_const_iterator<RangeT>::type> lit_set(boost::as_literal(Set));
return detail::is_any_ofF<BOOST_STRING_TYPENAME range_value<RangeT>::type>(lit_set);
}
//! is_from_range predicate
/*!
Construct the \c is_from_range predicate. The predicate holds if the input
is included in the specified range. (i.e. From <= Ch <= To )
\param From The start of the range
\param To The end of the range
\return An instance of the \c is_from_range predicate
*/
template<typename CharT>
inline detail::is_from_rangeF<CharT> is_from_range(CharT From, CharT To)
{
return detail::is_from_rangeF<CharT>(From,To);
}
// predicate combinators ---------------------------------------------------//
//! predicate 'and' composition predicate
/*!
Construct the \c class_and predicate. This predicate can be used
to logically combine two classification predicates. \c class_and holds,
if both predicates return true.
\param Pred1 The first predicate
\param Pred2 The second predicate
\return An instance of the \c class_and predicate
*/
template<typename Pred1T, typename Pred2T>
inline detail::pred_andF<Pred1T, Pred2T>
operator&&(
const predicate_facade<Pred1T>& Pred1,
const predicate_facade<Pred2T>& Pred2 )
{
// Doing the static_cast with the pointer instead of the reference
// is a workaround for some compilers which have problems with
// static_cast's of template references, i.e. CW8. /grafik/
return detail::pred_andF<Pred1T,Pred2T>(
*static_cast<const Pred1T*>(&Pred1),
*static_cast<const Pred2T*>(&Pred2) );
}
//! predicate 'or' composition predicate
/*!
Construct the \c class_or predicate. This predicate can be used
to logically combine two classification predicates. \c class_or holds,
if one of the predicates return true.
\param Pred1 The first predicate
\param Pred2 The second predicate
\return An instance of the \c class_or predicate
*/
template<typename Pred1T, typename Pred2T>
inline detail::pred_orF<Pred1T, Pred2T>
operator||(
const predicate_facade<Pred1T>& Pred1,
const predicate_facade<Pred2T>& Pred2 )
{
// Doing the static_cast with the pointer instead of the reference
// is a workaround for some compilers which have problems with
// static_cast's of template references, i.e. CW8. /grafik/
return detail::pred_orF<Pred1T,Pred2T>(
*static_cast<const Pred1T*>(&Pred1),
*static_cast<const Pred2T*>(&Pred2));
}
//! predicate negation operator
/*!
Construct the \c class_not predicate. This predicate represents a negation.
\c class_or holds if of the predicates return false.
\param Pred The predicate to be negated
\return An instance of the \c class_not predicate
*/
template<typename PredT>
inline detail::pred_notF<PredT>
operator!( const predicate_facade<PredT>& Pred )
{
// Doing the static_cast with the pointer instead of the reference
// is a workaround for some compilers which have problems with
// static_cast's of template references, i.e. CW8. /grafik/
return detail::pred_notF<PredT>(*static_cast<const PredT*>(&Pred));
}
} // namespace algorithm
// pull names to the boost namespace
using algorithm::is_classified;
using algorithm::is_space;
using algorithm::is_alnum;
using algorithm::is_alpha;
using algorithm::is_cntrl;
using algorithm::is_digit;
using algorithm::is_graph;
using algorithm::is_lower;
using algorithm::is_upper;
using algorithm::is_print;
using algorithm::is_punct;
using algorithm::is_xdigit;
using algorithm::is_any_of;
using algorithm::is_from_range;
} // namespace boost
#endif // BOOST_STRING_PREDICATE_HPP
+199
View File
@@ -0,0 +1,199 @@
// Boost string_algo library compare.hpp header file -------------------------//
// Copyright Pavol Droba 2002-2006.
//
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
// See http://www.boost.org/ for updates, documentation, and revision history.
#ifndef BOOST_STRING_COMPARE_HPP
#define BOOST_STRING_COMPARE_HPP
#include <boost/algorithm/string/config.hpp>
#include <locale>
/*! \file
Defines element comparison predicates. Many algorithms in this library can
take an additional argument with a predicate used to compare elements.
This makes it possible, for instance, to have case insensitive versions
of the algorithms.
*/
namespace boost {
namespace algorithm {
// is_equal functor -----------------------------------------------//
//! is_equal functor
/*!
Standard STL equal_to only handle comparison between arguments
of the same type. This is a less restrictive version which wraps operator ==.
*/
struct is_equal
{
//! Function operator
/*!
Compare two operands for equality
*/
template< typename T1, typename T2 >
bool operator()( const T1& Arg1, const T2& Arg2 ) const
{
return Arg1==Arg2;
}
};
//! case insensitive version of is_equal
/*!
Case insensitive comparison predicate. Comparison is done using
specified locales.
*/
struct is_iequal
{
//! Constructor
/*!
\param Loc locales used for comparison
*/
is_iequal( const std::locale& Loc=std::locale() ) :
m_Loc( Loc ) {}
//! Function operator
/*!
Compare two operands. Case is ignored.
*/
template< typename T1, typename T2 >
bool operator()( const T1& Arg1, const T2& Arg2 ) const
{
#if defined(__BORLANDC__) && (__BORLANDC__ >= 0x560) && (__BORLANDC__ <= 0x564) && !defined(_USE_OLD_RW_STL)
return std::toupper(Arg1)==std::toupper(Arg2);
#else
return std::toupper<T1>(Arg1,m_Loc)==std::toupper<T2>(Arg2,m_Loc);
#endif
}
private:
std::locale m_Loc;
};
// is_less functor -----------------------------------------------//
//! is_less functor
/*!
Convenient version of standard std::less. Operation is templated, therefore it is
not required to specify the exact types upon the construction
*/
struct is_less
{
//! Functor operation
/*!
Compare two operands using > operator
*/
template< typename T1, typename T2 >
bool operator()( const T1& Arg1, const T2& Arg2 ) const
{
return Arg1<Arg2;
}
};
//! case insensitive version of is_less
/*!
Case insensitive comparison predicate. Comparison is done using
specified locales.
*/
struct is_iless
{
//! Constructor
/*!
\param Loc locales used for comparison
*/
is_iless( const std::locale& Loc=std::locale() ) :
m_Loc( Loc ) {}
//! Function operator
/*!
Compare two operands. Case is ignored.
*/
template< typename T1, typename T2 >
bool operator()( const T1& Arg1, const T2& Arg2 ) const
{
#if defined(__BORLANDC__) && (__BORLANDC__ >= 0x560) && (__BORLANDC__ <= 0x564) && !defined(_USE_OLD_RW_STL)
return std::toupper(Arg1)<std::toupper(Arg2);
#else
return std::toupper<T1>(Arg1,m_Loc)<std::toupper<T2>(Arg2,m_Loc);
#endif
}
private:
std::locale m_Loc;
};
// is_not_greater functor -----------------------------------------------//
//! is_not_greater functor
/*!
Convenient version of standard std::not_greater_to. Operation is templated, therefore it is
not required to specify the exact types upon the construction
*/
struct is_not_greater
{
//! Functor operation
/*!
Compare two operands using > operator
*/
template< typename T1, typename T2 >
bool operator()( const T1& Arg1, const T2& Arg2 ) const
{
return Arg1<=Arg2;
}
};
//! case insensitive version of is_not_greater
/*!
Case insensitive comparison predicate. Comparison is done using
specified locales.
*/
struct is_not_igreater
{
//! Constructor
/*!
\param Loc locales used for comparison
*/
is_not_igreater( const std::locale& Loc=std::locale() ) :
m_Loc( Loc ) {}
//! Function operator
/*!
Compare two operands. Case is ignored.
*/
template< typename T1, typename T2 >
bool operator()( const T1& Arg1, const T2& Arg2 ) const
{
#if defined(__BORLANDC__) && (__BORLANDC__ >= 0x560) && (__BORLANDC__ <= 0x564) && !defined(_USE_OLD_RW_STL)
return std::toupper(Arg1)<=std::toupper(Arg2);
#else
return std::toupper<T1>(Arg1,m_Loc)<=std::toupper<T2>(Arg2,m_Loc);
#endif
}
private:
std::locale m_Loc;
};
} // namespace algorithm
// pull names to the boost namespace
using algorithm::is_equal;
using algorithm::is_iequal;
using algorithm::is_less;
using algorithm::is_iless;
using algorithm::is_not_greater;
using algorithm::is_not_igreater;
} // namespace boost
#endif // BOOST_STRING_COMPARE_HPP
+83
View File
@@ -0,0 +1,83 @@
// Boost string_algo library concept.hpp header file ---------------------------//
// Copyright Pavol Droba 2002-2003.
//
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
// See http://www.boost.org/ for updates, documentation, and revision history.
#ifndef BOOST_STRING_CONCEPT_HPP
#define BOOST_STRING_CONCEPT_HPP
#include <boost/concept_check.hpp>
#include <boost/range/iterator_range.hpp>
#include <boost/range/begin.hpp>
#include <boost/range/end.hpp>
/*! \file
Defines concepts used in string_algo library
*/
namespace boost {
namespace algorithm {
//! Finder concept
/*!
Defines the Finder concept. Finder is a functor which selects
an arbitrary part of a string. Search is performed on
the range specified by starting and ending iterators.
Result of the find operation must be convertible to iterator_range.
*/
template<typename FinderT, typename IteratorT>
struct FinderConcept
{
private:
typedef iterator_range<IteratorT> range;
public:
void constraints()
{
// Operation
r=(*pF)(i,i);
}
private:
range r;
IteratorT i;
FinderT* pF;
}; // Finder_concept
//! Formatter concept
/*!
Defines the Formatter concept. Formatter is a functor, which
takes a result from a finder operation and transforms it
in a specific way.
Result must be a container supported by container_traits,
or a reference to it.
*/
template<typename FormatterT, typename FinderT, typename IteratorT>
struct FormatterConcept
{
public:
void constraints()
{
// Operation
::boost::begin((*pFo)( (*pF)(i,i) ));
::boost::end((*pFo)( (*pF)(i,i) ));
}
private:
IteratorT i;
FinderT* pF;
FormatterT *pFo;
}; // FormatterConcept;
} // namespace algorithm
} // namespace boost
#endif // BOOST_STRING_CONCEPT_HPP
+28
View File
@@ -0,0 +1,28 @@
// Boost string_algo library config.hpp header file ---------------------------//
// Copyright Pavol Droba 2002-2003.
//
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
// See http://www.boost.org/ for updates, documentation, and revision history.
#ifndef BOOST_STRING_CONFIG_HPP
#define BOOST_STRING_CONFIG_HPP
#include <boost/config.hpp>
#include <boost/detail/workaround.hpp>
#ifdef BOOST_STRING_DEDUCED_TYPENAME
# error "macro already defined!"
#endif
#define BOOST_STRING_TYPENAME BOOST_DEDUCED_TYPENAME
// Metrowerks workaround
#if BOOST_WORKAROUND(__MWERKS__, <= 0x3003) // 8.x
#pragma parse_func_templ off
#endif
#endif // BOOST_STRING_CONFIG_HPP
@@ -0,0 +1,36 @@
// Boost string_algo library constants.hpp header file ---------------------------//
// Copyright Pavol Droba 2002-2003.
//
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
// See http://www.boost.org/ for updates, documentation, and revision history.
#ifndef BOOST_STRING_CONSTANTS_HPP
#define BOOST_STRING_CONSTANTS_HPP
namespace boost {
namespace algorithm {
//! Token compression mode
/*!
Specifies token compression mode for the token_finder.
*/
enum token_compress_mode_type
{
token_compress_on, //!< Compress adjacent tokens
token_compress_off //!< Do not compress adjacent tokens
};
} // namespace algorithm
// pull the names to the boost namespace
using algorithm::token_compress_on;
using algorithm::token_compress_off;
} // namespace boost
#endif // BOOST_STRING_CONSTANTS_HPP
@@ -0,0 +1,121 @@
// Boost string_algo library string_funct.hpp header file ---------------------------//
// Copyright Pavol Droba 2002-2003.
//
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
// See http://www.boost.org/ for updates, documentation, and revision history.
#ifndef BOOST_STRING_CASE_CONV_DETAIL_HPP
#define BOOST_STRING_CASE_CONV_DETAIL_HPP
#include <boost/algorithm/string/config.hpp>
#include <locale>
#include <functional>
namespace boost {
namespace algorithm {
namespace detail {
// case conversion functors -----------------------------------------------//
#if BOOST_WORKAROUND(BOOST_MSVC, >= 1400)
#pragma warning(push)
#pragma warning(disable:4512) //assignment operator could not be generated
#endif
// a tolower functor
template<typename CharT>
struct to_lowerF : public std::unary_function<CharT, CharT>
{
// Constructor
to_lowerF( const std::locale& Loc ) : m_Loc( &Loc ) {}
// Operation
CharT operator ()( CharT Ch ) const
{
#if defined(__BORLANDC__) && (__BORLANDC__ >= 0x560) && (__BORLANDC__ <= 0x564) && !defined(_USE_OLD_RW_STL)
return std::tolower( Ch);
#else
return std::tolower<CharT>( Ch, *m_Loc );
#endif
}
private:
const std::locale* m_Loc;
};
// a toupper functor
template<typename CharT>
struct to_upperF : public std::unary_function<CharT, CharT>
{
// Constructor
to_upperF( const std::locale& Loc ) : m_Loc( &Loc ) {}
// Operation
CharT operator ()( CharT Ch ) const
{
#if defined(__BORLANDC__) && (__BORLANDC__ >= 0x560) && (__BORLANDC__ <= 0x564) && !defined(_USE_OLD_RW_STL)
return std::toupper( Ch);
#else
return std::toupper<CharT>( Ch, *m_Loc );
#endif
}
private:
const std::locale* m_Loc;
};
#if BOOST_WORKAROUND(BOOST_MSVC, >= 1400)
#pragma warning(pop)
#endif
// algorithm implementation -------------------------------------------------------------------------
// Transform a range
template<typename OutputIteratorT, typename RangeT, typename FunctorT>
OutputIteratorT transform_range_copy(
OutputIteratorT Output,
const RangeT& Input,
FunctorT Functor)
{
return std::transform(
::boost::begin(Input),
::boost::end(Input),
Output,
Functor);
}
// Transform a range (in-place)
template<typename RangeT, typename FunctorT>
void transform_range(
const RangeT& Input,
FunctorT Functor)
{
std::transform(
::boost::begin(Input),
::boost::end(Input),
::boost::begin(Input),
Functor);
}
template<typename SequenceT, typename RangeT, typename FunctorT>
inline SequenceT transform_range_copy(
const RangeT& Input,
FunctorT Functor)
{
return SequenceT(
::boost::make_transform_iterator(
::boost::begin(Input),
Functor),
::boost::make_transform_iterator(
::boost::end(Input),
Functor));
}
} // namespace detail
} // namespace algorithm
} // namespace boost
#endif // BOOST_STRING_CASE_CONV_DETAIL_HPP
@@ -0,0 +1,353 @@
// Boost string_algo library classification.hpp header file ---------------------------//
// Copyright Pavol Droba 2002-2003.
//
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
// See http://www.boost.org/ for updates, documentation, and revision history.
#ifndef BOOST_STRING_CLASSIFICATION_DETAIL_HPP
#define BOOST_STRING_CLASSIFICATION_DETAIL_HPP
#include <boost/algorithm/string/config.hpp>
#include <algorithm>
#include <functional>
#include <locale>
#include <boost/range/begin.hpp>
#include <boost/range/end.hpp>
#include <boost/algorithm/string/predicate_facade.hpp>
#include <boost/type_traits/remove_const.hpp>
namespace boost {
namespace algorithm {
namespace detail {
// classification functors -----------------------------------------------//
// is_classified functor
struct is_classifiedF :
public predicate_facade<is_classifiedF>
{
// Boost.ResultOf support
typedef bool result_type;
// Constructor from a locale
is_classifiedF(std::ctype_base::mask Type, std::locale const & Loc = std::locale()) :
m_Type(Type), m_Locale(Loc) {}
// Operation
template<typename CharT>
bool operator()( CharT Ch ) const
{
return std::use_facet< std::ctype<CharT> >(m_Locale).is( m_Type, Ch );
}
#if defined(__BORLANDC__) && (__BORLANDC__ >= 0x560) && (__BORLANDC__ <= 0x582) && !defined(_USE_OLD_RW_STL)
template<>
bool operator()( char const Ch ) const
{
return std::use_facet< std::ctype<char> >(m_Locale).is( m_Type, Ch );
}
#endif
private:
std::ctype_base::mask m_Type;
std::locale m_Locale;
};
// is_any_of functor
/*
returns true if the value is from the specified set
*/
template<typename CharT>
struct is_any_ofF :
public predicate_facade<is_any_ofF<CharT> >
{
private:
// set cannot operate on const value-type
typedef typename ::boost::remove_const<CharT>::type set_value_type;
public:
// Boost.ResultOf support
typedef bool result_type;
// Constructor
template<typename RangeT>
is_any_ofF( const RangeT& Range ) : m_Size(0)
{
// Prepare storage
m_Storage.m_dynSet=0;
std::size_t Size=::boost::distance(Range);
m_Size=Size;
set_value_type* Storage=0;
if(use_fixed_storage(m_Size))
{
// Use fixed storage
Storage=&m_Storage.m_fixSet[0];
}
else
{
// Use dynamic storage
m_Storage.m_dynSet=new set_value_type[m_Size];
Storage=m_Storage.m_dynSet;
}
// Use fixed storage
::std::copy(::boost::begin(Range), ::boost::end(Range), Storage);
::std::sort(Storage, Storage+m_Size);
}
// Copy constructor
is_any_ofF(const is_any_ofF& Other) : m_Size(Other.m_Size)
{
// Prepare storage
m_Storage.m_dynSet=0;
const set_value_type* SrcStorage=0;
set_value_type* DestStorage=0;
if(use_fixed_storage(m_Size))
{
// Use fixed storage
DestStorage=&m_Storage.m_fixSet[0];
SrcStorage=&Other.m_Storage.m_fixSet[0];
}
else
{
// Use dynamic storage
m_Storage.m_dynSet=new set_value_type[m_Size];
DestStorage=m_Storage.m_dynSet;
SrcStorage=Other.m_Storage.m_dynSet;
}
// Use fixed storage
::memcpy(DestStorage, SrcStorage, sizeof(set_value_type)*m_Size);
}
// Destructor
~is_any_ofF()
{
if(!use_fixed_storage(m_Size) && m_Storage.m_dynSet!=0)
{
delete [] m_Storage.m_dynSet;
}
}
// Assignment
is_any_ofF& operator=(const is_any_ofF& Other)
{
// Handle self assignment
if(this==&Other) return *this;
// Prepare storage
const set_value_type* SrcStorage;
set_value_type* DestStorage;
if(use_fixed_storage(Other.m_Size))
{
// Use fixed storage
DestStorage=&m_Storage.m_fixSet[0];
SrcStorage=&Other.m_Storage.m_fixSet[0];
// Delete old storage if was present
if(!use_fixed_storage(m_Size) && m_Storage.m_dynSet!=0)
{
delete [] m_Storage.m_dynSet;
}
// Set new size
m_Size=Other.m_Size;
}
else
{
// Other uses dynamic storage
SrcStorage=Other.m_Storage.m_dynSet;
// Check what kind of storage are we using right now
if(use_fixed_storage(m_Size))
{
// Using fixed storage, allocate new
set_value_type* pTemp=new set_value_type[Other.m_Size];
DestStorage=pTemp;
m_Storage.m_dynSet=pTemp;
m_Size=Other.m_Size;
}
else
{
// Using dynamic storage, check if can reuse
if(m_Storage.m_dynSet!=0 && m_Size>=Other.m_Size && m_Size<Other.m_Size*2)
{
// Reuse the current storage
DestStorage=m_Storage.m_dynSet;
m_Size=Other.m_Size;
}
else
{
// Allocate the new one
set_value_type* pTemp=new set_value_type[Other.m_Size];
DestStorage=pTemp;
// Delete old storage if necessary
if(m_Storage.m_dynSet!=0)
{
delete [] m_Storage.m_dynSet;
}
// Store the new storage
m_Storage.m_dynSet=pTemp;
// Set new size
m_Size=Other.m_Size;
}
}
}
// Copy the data
::memcpy(DestStorage, SrcStorage, sizeof(set_value_type)*m_Size);
return *this;
}
// Operation
template<typename Char2T>
bool operator()( Char2T Ch ) const
{
const set_value_type* Storage=
(use_fixed_storage(m_Size))
? &m_Storage.m_fixSet[0]
: m_Storage.m_dynSet;
return ::std::binary_search(Storage, Storage+m_Size, Ch);
}
private:
// check if the size is eligible for fixed storage
static bool use_fixed_storage(std::size_t size)
{
return size<=sizeof(set_value_type*)*2;
}
private:
// storage
// The actual used storage is selected on the type
union
{
set_value_type* m_dynSet;
set_value_type m_fixSet[sizeof(set_value_type*)*2];
}
m_Storage;
// storage size
::std::size_t m_Size;
};
// is_from_range functor
/*
returns true if the value is from the specified range.
(i.e. x>=From && x>=To)
*/
template<typename CharT>
struct is_from_rangeF :
public predicate_facade< is_from_rangeF<CharT> >
{
// Boost.ResultOf support
typedef bool result_type;
// Constructor
is_from_rangeF( CharT From, CharT To ) : m_From(From), m_To(To) {}
// Operation
template<typename Char2T>
bool operator()( Char2T Ch ) const
{
return ( m_From <= Ch ) && ( Ch <= m_To );
}
private:
CharT m_From;
CharT m_To;
};
// class_and composition predicate
template<typename Pred1T, typename Pred2T>
struct pred_andF :
public predicate_facade< pred_andF<Pred1T,Pred2T> >
{
public:
// Boost.ResultOf support
typedef bool result_type;
// Constructor
pred_andF( Pred1T Pred1, Pred2T Pred2 ) :
m_Pred1(Pred1), m_Pred2(Pred2) {}
// Operation
template<typename CharT>
bool operator()( CharT Ch ) const
{
return m_Pred1(Ch) && m_Pred2(Ch);
}
private:
Pred1T m_Pred1;
Pred2T m_Pred2;
};
// class_or composition predicate
template<typename Pred1T, typename Pred2T>
struct pred_orF :
public predicate_facade< pred_orF<Pred1T,Pred2T> >
{
public:
// Boost.ResultOf support
typedef bool result_type;
// Constructor
pred_orF( Pred1T Pred1, Pred2T Pred2 ) :
m_Pred1(Pred1), m_Pred2(Pred2) {}
// Operation
template<typename CharT>
bool operator()( CharT Ch ) const
{
return m_Pred1(Ch) || m_Pred2(Ch);
}
private:
Pred1T m_Pred1;
Pred2T m_Pred2;
};
// class_not composition predicate
template< typename PredT >
struct pred_notF :
public predicate_facade< pred_notF<PredT> >
{
public:
// Boost.ResultOf support
typedef bool result_type;
// Constructor
pred_notF( PredT Pred ) : m_Pred(Pred) {}
// Operation
template<typename CharT>
bool operator()( CharT Ch ) const
{
return !m_Pred(Ch);
}
private:
PredT m_Pred;
};
} // namespace detail
} // namespace algorithm
} // namespace boost
#endif // BOOST_STRING_CLASSIFICATION_DETAIL_HPP
@@ -0,0 +1,204 @@
// Boost string_algo library find_format.hpp header file ---------------------------//
// Copyright Pavol Droba 2002-2003.
//
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
// See http://www.boost.org/ for updates, documentation, and revision history.
#ifndef BOOST_STRING_FIND_FORMAT_DETAIL_HPP
#define BOOST_STRING_FIND_FORMAT_DETAIL_HPP
#include <boost/algorithm/string/config.hpp>
#include <boost/range/iterator_range.hpp>
#include <boost/range/const_iterator.hpp>
#include <boost/range/iterator.hpp>
#include <boost/algorithm/string/detail/find_format_store.hpp>
#include <boost/algorithm/string/detail/replace_storage.hpp>
namespace boost {
namespace algorithm {
namespace detail {
// find_format_copy (iterator variant) implementation -------------------------------//
template<
typename OutputIteratorT,
typename InputT,
typename FormatterT,
typename FindResultT,
typename FormatResultT >
inline OutputIteratorT find_format_copy_impl2(
OutputIteratorT Output,
const InputT& Input,
FormatterT Formatter,
const FindResultT& FindResult,
const FormatResultT& FormatResult )
{
typedef find_format_store<
BOOST_STRING_TYPENAME
range_const_iterator<InputT>::type,
FormatterT,
FormatResultT > store_type;
// Create store for the find result
store_type M( FindResult, FormatResult, Formatter );
if ( !M )
{
// Match not found - return original sequence
Output = std::copy( ::boost::begin(Input), ::boost::end(Input), Output );
return Output;
}
// Copy the beginning of the sequence
Output = std::copy( ::boost::begin(Input), ::boost::begin(M), Output );
// Format find result
// Copy formated result
Output = std::copy( ::boost::begin(M.format_result()), ::boost::end(M.format_result()), Output );
// Copy the rest of the sequence
Output = std::copy( M.end(), ::boost::end(Input), Output );
return Output;
}
template<
typename OutputIteratorT,
typename InputT,
typename FormatterT,
typename FindResultT >
inline OutputIteratorT find_format_copy_impl(
OutputIteratorT Output,
const InputT& Input,
FormatterT Formatter,
const FindResultT& FindResult )
{
if( ::boost::algorithm::detail::check_find_result(Input, FindResult) ) {
return ::boost::algorithm::detail::find_format_copy_impl2(
Output,
Input,
Formatter,
FindResult,
Formatter(FindResult) );
} else {
return std::copy( ::boost::begin(Input), ::boost::end(Input), Output );
}
}
// find_format_copy implementation --------------------------------------------------//
template<
typename InputT,
typename FormatterT,
typename FindResultT,
typename FormatResultT >
inline InputT find_format_copy_impl2(
const InputT& Input,
FormatterT Formatter,
const FindResultT& FindResult,
const FormatResultT& FormatResult)
{
typedef find_format_store<
BOOST_STRING_TYPENAME
range_const_iterator<InputT>::type,
FormatterT,
FormatResultT > store_type;
// Create store for the find result
store_type M( FindResult, FormatResult, Formatter );
if ( !M )
{
// Match not found - return original sequence
return InputT( Input );
}
InputT Output;
// Copy the beginning of the sequence
insert( Output, ::boost::end(Output), ::boost::begin(Input), M.begin() );
// Copy formated result
insert( Output, ::boost::end(Output), M.format_result() );
// Copy the rest of the sequence
insert( Output, ::boost::end(Output), M.end(), ::boost::end(Input) );
return Output;
}
template<
typename InputT,
typename FormatterT,
typename FindResultT >
inline InputT find_format_copy_impl(
const InputT& Input,
FormatterT Formatter,
const FindResultT& FindResult)
{
if( ::boost::algorithm::detail::check_find_result(Input, FindResult) ) {
return ::boost::algorithm::detail::find_format_copy_impl2(
Input,
Formatter,
FindResult,
Formatter(FindResult) );
} else {
return Input;
}
}
// replace implementation ----------------------------------------------------//
template<
typename InputT,
typename FormatterT,
typename FindResultT,
typename FormatResultT >
inline void find_format_impl2(
InputT& Input,
FormatterT Formatter,
const FindResultT& FindResult,
const FormatResultT& FormatResult)
{
typedef find_format_store<
BOOST_STRING_TYPENAME
range_iterator<InputT>::type,
FormatterT,
FormatResultT > store_type;
// Create store for the find result
store_type M( FindResult, FormatResult, Formatter );
if ( !M )
{
// Search not found - return original sequence
return;
}
// Replace match
::boost::algorithm::detail::replace( Input, M.begin(), M.end(), M.format_result() );
}
template<
typename InputT,
typename FormatterT,
typename FindResultT >
inline void find_format_impl(
InputT& Input,
FormatterT Formatter,
const FindResultT& FindResult)
{
if( ::boost::algorithm::detail::check_find_result(Input, FindResult) ) {
::boost::algorithm::detail::find_format_impl2(
Input,
Formatter,
FindResult,
Formatter(FindResult) );
}
}
} // namespace detail
} // namespace algorithm
} // namespace boost
#endif // BOOST_STRING_FIND_FORMAT_DETAIL_HPP
@@ -0,0 +1,273 @@
// Boost string_algo library find_format_all.hpp header file ---------------------------//
// Copyright Pavol Droba 2002-2003.
//
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
// See http://www.boost.org/ for updates, documentation, and revision history.
#ifndef BOOST_STRING_FIND_FORMAT_ALL_DETAIL_HPP
#define BOOST_STRING_FIND_FORMAT_ALL_DETAIL_HPP
#include <boost/algorithm/string/config.hpp>
#include <boost/range/iterator_range.hpp>
#include <boost/range/const_iterator.hpp>
#include <boost/range/value_type.hpp>
#include <boost/algorithm/string/detail/find_format_store.hpp>
#include <boost/algorithm/string/detail/replace_storage.hpp>
namespace boost {
namespace algorithm {
namespace detail {
// find_format_all_copy (iterator variant) implementation ---------------------------//
template<
typename OutputIteratorT,
typename InputT,
typename FinderT,
typename FormatterT,
typename FindResultT,
typename FormatResultT >
inline OutputIteratorT find_format_all_copy_impl2(
OutputIteratorT Output,
const InputT& Input,
FinderT Finder,
FormatterT Formatter,
const FindResultT& FindResult,
const FormatResultT& FormatResult )
{
typedef BOOST_STRING_TYPENAME
range_const_iterator<InputT>::type input_iterator_type;
typedef find_format_store<
input_iterator_type,
FormatterT,
FormatResultT > store_type;
// Create store for the find result
store_type M( FindResult, FormatResult, Formatter );
// Initialize last match
input_iterator_type LastMatch=::boost::begin(Input);
// Iterate through all matches
while( M )
{
// Copy the beginning of the sequence
Output = std::copy( LastMatch, M.begin(), Output );
// Copy formated result
Output = std::copy( ::boost::begin(M.format_result()), ::boost::end(M.format_result()), Output );
// Proceed to the next match
LastMatch=M.end();
M=Finder( LastMatch, ::boost::end(Input) );
}
// Copy the rest of the sequence
Output = std::copy( LastMatch, ::boost::end(Input), Output );
return Output;
}
template<
typename OutputIteratorT,
typename InputT,
typename FinderT,
typename FormatterT,
typename FindResultT >
inline OutputIteratorT find_format_all_copy_impl(
OutputIteratorT Output,
const InputT& Input,
FinderT Finder,
FormatterT Formatter,
const FindResultT& FindResult )
{
if( ::boost::algorithm::detail::check_find_result(Input, FindResult) ) {
return ::boost::algorithm::detail::find_format_all_copy_impl2(
Output,
Input,
Finder,
Formatter,
FindResult,
Formatter(FindResult) );
} else {
return std::copy( ::boost::begin(Input), ::boost::end(Input), Output );
}
}
// find_format_all_copy implementation ----------------------------------------------//
template<
typename InputT,
typename FinderT,
typename FormatterT,
typename FindResultT,
typename FormatResultT >
inline InputT find_format_all_copy_impl2(
const InputT& Input,
FinderT Finder,
FormatterT Formatter,
const FindResultT& FindResult,
const FormatResultT& FormatResult)
{
typedef BOOST_STRING_TYPENAME
range_const_iterator<InputT>::type input_iterator_type;
typedef find_format_store<
input_iterator_type,
FormatterT,
FormatResultT > store_type;
// Create store for the find result
store_type M( FindResult, FormatResult, Formatter );
// Initialize last match
input_iterator_type LastMatch=::boost::begin(Input);
// Output temporary
InputT Output;
// Iterate through all matches
while( M )
{
// Copy the beginning of the sequence
insert( Output, ::boost::end(Output), LastMatch, M.begin() );
// Copy formated result
insert( Output, ::boost::end(Output), M.format_result() );
// Proceed to the next match
LastMatch=M.end();
M=Finder( LastMatch, ::boost::end(Input) );
}
// Copy the rest of the sequence
::boost::algorithm::detail::insert( Output, ::boost::end(Output), LastMatch, ::boost::end(Input) );
return Output;
}
template<
typename InputT,
typename FinderT,
typename FormatterT,
typename FindResultT >
inline InputT find_format_all_copy_impl(
const InputT& Input,
FinderT Finder,
FormatterT Formatter,
const FindResultT& FindResult)
{
if( ::boost::algorithm::detail::check_find_result(Input, FindResult) ) {
return ::boost::algorithm::detail::find_format_all_copy_impl2(
Input,
Finder,
Formatter,
FindResult,
Formatter(FindResult) );
} else {
return Input;
}
}
// find_format_all implementation ------------------------------------------------//
template<
typename InputT,
typename FinderT,
typename FormatterT,
typename FindResultT,
typename FormatResultT >
inline void find_format_all_impl2(
InputT& Input,
FinderT Finder,
FormatterT Formatter,
FindResultT FindResult,
FormatResultT FormatResult)
{
typedef BOOST_STRING_TYPENAME
range_iterator<InputT>::type input_iterator_type;
typedef find_format_store<
input_iterator_type,
FormatterT,
FormatResultT > store_type;
// Create store for the find result
store_type M( FindResult, FormatResult, Formatter );
// Instantiate replacement storage
std::deque<
BOOST_STRING_TYPENAME range_value<InputT>::type> Storage;
// Initialize replacement iterators
input_iterator_type InsertIt=::boost::begin(Input);
input_iterator_type SearchIt=::boost::begin(Input);
while( M )
{
// process the segment
InsertIt=process_segment(
Storage,
Input,
InsertIt,
SearchIt,
M.begin() );
// Adjust search iterator
SearchIt=M.end();
// Copy formated replace to the storage
::boost::algorithm::detail::copy_to_storage( Storage, M.format_result() );
// Find range for a next match
M=Finder( SearchIt, ::boost::end(Input) );
}
// process the last segment
InsertIt=::boost::algorithm::detail::process_segment(
Storage,
Input,
InsertIt,
SearchIt,
::boost::end(Input) );
if ( Storage.empty() )
{
// Truncate input
::boost::algorithm::detail::erase( Input, InsertIt, ::boost::end(Input) );
}
else
{
// Copy remaining data to the end of input
::boost::algorithm::detail::insert( Input, ::boost::end(Input), Storage.begin(), Storage.end() );
}
}
template<
typename InputT,
typename FinderT,
typename FormatterT,
typename FindResultT >
inline void find_format_all_impl(
InputT& Input,
FinderT Finder,
FormatterT Formatter,
FindResultT FindResult)
{
if( ::boost::algorithm::detail::check_find_result(Input, FindResult) ) {
::boost::algorithm::detail::find_format_all_impl2(
Input,
Finder,
Formatter,
FindResult,
Formatter(FindResult) );
}
}
} // namespace detail
} // namespace algorithm
} // namespace boost
#endif // BOOST_STRING_FIND_FORMAT_ALL_DETAIL_HPP
@@ -0,0 +1,89 @@
// Boost string_algo library find_format_store.hpp header file ---------------------------//
// Copyright Pavol Droba 2002-2003.
//
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
// See http://www.boost.org/ for updates, documentation, and revision history.
#ifndef BOOST_STRING_FIND_FORMAT_STORE_DETAIL_HPP
#define BOOST_STRING_FIND_FORMAT_STORE_DETAIL_HPP
#include <boost/algorithm/string/config.hpp>
#include <boost/range/iterator_range.hpp>
namespace boost {
namespace algorithm {
namespace detail {
// temporary format and find result storage --------------------------------//
#if BOOST_WORKAROUND(BOOST_MSVC, >= 1400)
#pragma warning(push)
#pragma warning(disable:4512) //assignment operator could not be generated
#endif
template<
typename ForwardIteratorT,
typename FormatterT,
typename FormatResultT >
class find_format_store :
public iterator_range<ForwardIteratorT>
{
public:
// typedefs
typedef iterator_range<ForwardIteratorT> base_type;
typedef FormatterT formatter_type;
typedef FormatResultT format_result_type;
public:
// Construction
find_format_store(
const base_type& FindResult,
const format_result_type& FormatResult,
const formatter_type& Formatter ) :
base_type(FindResult),
m_FormatResult(FormatResult),
m_Formatter(Formatter) {}
// Assignment
template< typename FindResultT >
find_format_store& operator=( FindResultT FindResult )
{
iterator_range<ForwardIteratorT>::operator=(FindResult);
if( !this->empty() ) {
m_FormatResult=m_Formatter(FindResult);
}
return *this;
}
// Retrieve format result
const format_result_type& format_result()
{
return m_FormatResult;
}
private:
format_result_type m_FormatResult;
const formatter_type& m_Formatter;
};
template<typename InputT, typename FindResultT>
bool check_find_result(InputT&, FindResultT& FindResult)
{
typedef BOOST_STRING_TYPENAME
range_const_iterator<InputT>::type input_iterator_type;
iterator_range<input_iterator_type> ResultRange(FindResult);
return !ResultRange.empty();
}
#if BOOST_WORKAROUND(BOOST_MSVC, >= 1400)
#pragma warning(pop)
#endif
} // namespace detail
} // namespace algorithm
} // namespace boost
#endif // BOOST_STRING_FIND_FORMAT_STORE_DETAIL_HPP
@@ -0,0 +1,87 @@
// Boost string_algo library find_iterator.hpp header file ---------------------------//
// Copyright Pavol Droba 2002-2003.
//
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
// See http://www.boost.org/ for updates, documentation, and revision history.
#ifndef BOOST_STRING_FIND_ITERATOR_DETAIL_HPP
#define BOOST_STRING_FIND_ITERATOR_DETAIL_HPP
#include <boost/algorithm/string/config.hpp>
#include <boost/range/iterator_range.hpp>
#include <boost/iterator/iterator_facade.hpp>
#include <boost/iterator/iterator_categories.hpp>
#include <boost/function.hpp>
namespace boost {
namespace algorithm {
namespace detail {
// find_iterator base -----------------------------------------------//
// Find iterator base
template<typename IteratorT>
class find_iterator_base
{
protected:
// typedefs
typedef IteratorT input_iterator_type;
typedef iterator_range<IteratorT> match_type;
typedef function2<
match_type,
input_iterator_type,
input_iterator_type> finder_type;
protected:
// Protected construction/destruction
// Default constructor
find_iterator_base() {};
// Copy construction
find_iterator_base( const find_iterator_base& Other ) :
m_Finder(Other.m_Finder) {}
// Constructor
template<typename FinderT>
find_iterator_base( FinderT Finder, int ) :
m_Finder(Finder) {}
// Destructor
~find_iterator_base() {}
// Find operation
match_type do_find(
input_iterator_type Begin,
input_iterator_type End ) const
{
if (!m_Finder.empty())
{
return m_Finder(Begin,End);
}
else
{
return match_type(End,End);
}
}
// Check
bool is_null() const
{
return m_Finder.empty();
}
private:
// Finder
finder_type m_Finder;
};
} // namespace detail
} // namespace algorithm
} // namespace boost
#endif // BOOST_STRING_FIND_ITERATOR_DETAIL_HPP
@@ -0,0 +1,646 @@
// Boost string_algo library finder.hpp header file ---------------------------//
// Copyright Pavol Droba 2002-2006.
//
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
// See http://www.boost.org/ for updates, documentation, and revision history.
#ifndef BOOST_STRING_FINDER_DETAIL_HPP
#define BOOST_STRING_FINDER_DETAIL_HPP
#include <boost/algorithm/string/config.hpp>
#include <boost/algorithm/string/constants.hpp>
#include <boost/detail/iterator.hpp>
#include <boost/range/iterator_range.hpp>
#include <boost/range/begin.hpp>
#include <boost/range/end.hpp>
#include <boost/range/empty.hpp>
#include <boost/range/as_literal.hpp>
namespace boost {
namespace algorithm {
namespace detail {
// find first functor -----------------------------------------------//
// find a subsequence in the sequence ( functor )
/*
Returns a pair <begin,end> marking the subsequence in the sequence.
If the find fails, functor returns <End,End>
*/
template<typename SearchIteratorT,typename PredicateT>
struct first_finderF
{
typedef SearchIteratorT search_iterator_type;
// Construction
template< typename SearchT >
first_finderF( const SearchT& Search, PredicateT Comp ) :
m_Search(::boost::begin(Search), ::boost::end(Search)), m_Comp(Comp) {}
first_finderF(
search_iterator_type SearchBegin,
search_iterator_type SearchEnd,
PredicateT Comp ) :
m_Search(SearchBegin, SearchEnd), m_Comp(Comp) {}
// Operation
template< typename ForwardIteratorT >
iterator_range<ForwardIteratorT>
operator()(
ForwardIteratorT Begin,
ForwardIteratorT End ) const
{
typedef iterator_range<ForwardIteratorT> result_type;
typedef ForwardIteratorT input_iterator_type;
// Outer loop
for(input_iterator_type OuterIt=Begin;
OuterIt!=End;
++OuterIt)
{
// Sanity check
if( boost::empty(m_Search) )
return result_type( End, End );
input_iterator_type InnerIt=OuterIt;
search_iterator_type SubstrIt=m_Search.begin();
for(;
InnerIt!=End && SubstrIt!=m_Search.end();
++InnerIt,++SubstrIt)
{
if( !( m_Comp(*InnerIt,*SubstrIt) ) )
break;
}
// Substring matching succeeded
if ( SubstrIt==m_Search.end() )
return result_type( OuterIt, InnerIt );
}
return result_type( End, End );
}
private:
iterator_range<search_iterator_type> m_Search;
PredicateT m_Comp;
};
// find last functor -----------------------------------------------//
// find the last match a subseqeunce in the sequence ( functor )
/*
Returns a pair <begin,end> marking the subsequence in the sequence.
If the find fails, returns <End,End>
*/
template<typename SearchIteratorT, typename PredicateT>
struct last_finderF
{
typedef SearchIteratorT search_iterator_type;
typedef first_finderF<
search_iterator_type,
PredicateT> first_finder_type;
// Construction
template< typename SearchT >
last_finderF( const SearchT& Search, PredicateT Comp ) :
m_Search(::boost::begin(Search), ::boost::end(Search)), m_Comp(Comp) {}
last_finderF(
search_iterator_type SearchBegin,
search_iterator_type SearchEnd,
PredicateT Comp ) :
m_Search(SearchBegin, SearchEnd), m_Comp(Comp) {}
// Operation
template< typename ForwardIteratorT >
iterator_range<ForwardIteratorT>
operator()(
ForwardIteratorT Begin,
ForwardIteratorT End ) const
{
typedef iterator_range<ForwardIteratorT> result_type;
if( boost::empty(m_Search) )
return result_type( End, End );
typedef BOOST_STRING_TYPENAME boost::detail::
iterator_traits<ForwardIteratorT>::iterator_category category;
return findit( Begin, End, category() );
}
private:
// forward iterator
template< typename ForwardIteratorT >
iterator_range<ForwardIteratorT>
findit(
ForwardIteratorT Begin,
ForwardIteratorT End,
std::forward_iterator_tag ) const
{
typedef ForwardIteratorT input_iterator_type;
typedef iterator_range<ForwardIteratorT> result_type;
first_finder_type first_finder(
m_Search.begin(), m_Search.end(), m_Comp );
result_type M=first_finder( Begin, End );
result_type Last=M;
while( M )
{
Last=M;
M=first_finder( ::boost::end(M), End );
}
return Last;
}
// bidirectional iterator
template< typename ForwardIteratorT >
iterator_range<ForwardIteratorT>
findit(
ForwardIteratorT Begin,
ForwardIteratorT End,
std::bidirectional_iterator_tag ) const
{
typedef iterator_range<ForwardIteratorT> result_type;
typedef ForwardIteratorT input_iterator_type;
// Outer loop
for(input_iterator_type OuterIt=End;
OuterIt!=Begin; )
{
input_iterator_type OuterIt2=--OuterIt;
input_iterator_type InnerIt=OuterIt2;
search_iterator_type SubstrIt=m_Search.begin();
for(;
InnerIt!=End && SubstrIt!=m_Search.end();
++InnerIt,++SubstrIt)
{
if( !( m_Comp(*InnerIt,*SubstrIt) ) )
break;
}
// Substring matching succeeded
if( SubstrIt==m_Search.end() )
return result_type( OuterIt2, InnerIt );
}
return result_type( End, End );
}
private:
iterator_range<search_iterator_type> m_Search;
PredicateT m_Comp;
};
// find n-th functor -----------------------------------------------//
// find the n-th match of a subsequence in the sequence ( functor )
/*
Returns a pair <begin,end> marking the subsequence in the sequence.
If the find fails, returns <End,End>
*/
template<typename SearchIteratorT, typename PredicateT>
struct nth_finderF
{
typedef SearchIteratorT search_iterator_type;
typedef first_finderF<
search_iterator_type,
PredicateT> first_finder_type;
typedef last_finderF<
search_iterator_type,
PredicateT> last_finder_type;
// Construction
template< typename SearchT >
nth_finderF(
const SearchT& Search,
int Nth,
PredicateT Comp) :
m_Search(::boost::begin(Search), ::boost::end(Search)),
m_Nth(Nth),
m_Comp(Comp) {}
nth_finderF(
search_iterator_type SearchBegin,
search_iterator_type SearchEnd,
int Nth,
PredicateT Comp) :
m_Search(SearchBegin, SearchEnd),
m_Nth(Nth),
m_Comp(Comp) {}
// Operation
template< typename ForwardIteratorT >
iterator_range<ForwardIteratorT>
operator()(
ForwardIteratorT Begin,
ForwardIteratorT End ) const
{
if(m_Nth>=0)
{
return find_forward(Begin, End, m_Nth);
}
else
{
return find_backward(Begin, End, -m_Nth);
}
}
private:
// Implementation helpers
template< typename ForwardIteratorT >
iterator_range<ForwardIteratorT>
find_forward(
ForwardIteratorT Begin,
ForwardIteratorT End,
unsigned int N) const
{
typedef ForwardIteratorT input_iterator_type;
typedef iterator_range<ForwardIteratorT> result_type;
// Sanity check
if( boost::empty(m_Search) )
return result_type( End, End );
// Instantiate find functor
first_finder_type first_finder(
m_Search.begin(), m_Search.end(), m_Comp );
result_type M( Begin, Begin );
for( unsigned int n=0; n<=N; ++n )
{
// find next match
M=first_finder( ::boost::end(M), End );
if ( !M )
{
// Subsequence not found, return
return M;
}
}
return M;
}
template< typename ForwardIteratorT >
iterator_range<ForwardIteratorT>
find_backward(
ForwardIteratorT Begin,
ForwardIteratorT End,
unsigned int N) const
{
typedef ForwardIteratorT input_iterator_type;
typedef iterator_range<ForwardIteratorT> result_type;
// Sanity check
if( boost::empty(m_Search) )
return result_type( End, End );
// Instantiate find functor
last_finder_type last_finder(
m_Search.begin(), m_Search.end(), m_Comp );
result_type M( End, End );
for( unsigned int n=1; n<=N; ++n )
{
// find next match
M=last_finder( Begin, ::boost::begin(M) );
if ( !M )
{
// Subsequence not found, return
return M;
}
}
return M;
}
private:
iterator_range<search_iterator_type> m_Search;
int m_Nth;
PredicateT m_Comp;
};
// find head/tail implementation helpers ---------------------------//
template<typename ForwardIteratorT>
iterator_range<ForwardIteratorT>
find_head_impl(
ForwardIteratorT Begin,
ForwardIteratorT End,
unsigned int N,
std::forward_iterator_tag )
{
typedef ForwardIteratorT input_iterator_type;
typedef iterator_range<ForwardIteratorT> result_type;
input_iterator_type It=Begin;
for(
unsigned int Index=0;
Index<N && It!=End; ++Index,++It ) {};
return result_type( Begin, It );
}
template< typename ForwardIteratorT >
iterator_range<ForwardIteratorT>
find_head_impl(
ForwardIteratorT Begin,
ForwardIteratorT End,
unsigned int N,
std::random_access_iterator_tag )
{
typedef ForwardIteratorT input_iterator_type;
typedef iterator_range<ForwardIteratorT> result_type;
if ( (End<=Begin) || ( static_cast<unsigned int>(End-Begin) < N ) )
return result_type( Begin, End );
return result_type(Begin,Begin+N);
}
// Find head implementation
template<typename ForwardIteratorT>
iterator_range<ForwardIteratorT>
find_head_impl(
ForwardIteratorT Begin,
ForwardIteratorT End,
unsigned int N )
{
typedef BOOST_STRING_TYPENAME boost::detail::
iterator_traits<ForwardIteratorT>::iterator_category category;
return ::boost::algorithm::detail::find_head_impl( Begin, End, N, category() );
}
template< typename ForwardIteratorT >
iterator_range<ForwardIteratorT>
find_tail_impl(
ForwardIteratorT Begin,
ForwardIteratorT End,
unsigned int N,
std::forward_iterator_tag )
{
typedef ForwardIteratorT input_iterator_type;
typedef iterator_range<ForwardIteratorT> result_type;
unsigned int Index=0;
input_iterator_type It=Begin;
input_iterator_type It2=Begin;
// Advance It2 by N increments
for( Index=0; Index<N && It2!=End; ++Index,++It2 ) {};
// Advance It, It2 to the end
for(; It2!=End; ++It,++It2 ) {};
return result_type( It, It2 );
}
template< typename ForwardIteratorT >
iterator_range<ForwardIteratorT>
find_tail_impl(
ForwardIteratorT Begin,
ForwardIteratorT End,
unsigned int N,
std::bidirectional_iterator_tag )
{
typedef ForwardIteratorT input_iterator_type;
typedef iterator_range<ForwardIteratorT> result_type;
input_iterator_type It=End;
for(
unsigned int Index=0;
Index<N && It!=Begin; ++Index,--It ) {};
return result_type( It, End );
}
template< typename ForwardIteratorT >
iterator_range<ForwardIteratorT>
find_tail_impl(
ForwardIteratorT Begin,
ForwardIteratorT End,
unsigned int N,
std::random_access_iterator_tag )
{
typedef ForwardIteratorT input_iterator_type;
typedef iterator_range<ForwardIteratorT> result_type;
if ( (End<=Begin) || ( static_cast<unsigned int>(End-Begin) < N ) )
return result_type( Begin, End );
return result_type( End-N, End );
}
// Operation
template< typename ForwardIteratorT >
iterator_range<ForwardIteratorT>
find_tail_impl(
ForwardIteratorT Begin,
ForwardIteratorT End,
unsigned int N )
{
typedef BOOST_STRING_TYPENAME boost::detail::
iterator_traits<ForwardIteratorT>::iterator_category category;
return ::boost::algorithm::detail::find_tail_impl( Begin, End, N, category() );
}
// find head functor -----------------------------------------------//
// find a head in the sequence ( functor )
/*
This functor find a head of the specified range. For
a specified N, the head is a subsequence of N starting
elements of the range.
*/
struct head_finderF
{
// Construction
head_finderF( int N ) : m_N(N) {}
// Operation
template< typename ForwardIteratorT >
iterator_range<ForwardIteratorT>
operator()(
ForwardIteratorT Begin,
ForwardIteratorT End ) const
{
if(m_N>=0)
{
return ::boost::algorithm::detail::find_head_impl( Begin, End, m_N );
}
else
{
iterator_range<ForwardIteratorT> Res=
::boost::algorithm::detail::find_tail_impl( Begin, End, -m_N );
return ::boost::make_iterator_range(Begin, Res.begin());
}
}
private:
int m_N;
};
// find tail functor -----------------------------------------------//
// find a tail in the sequence ( functor )
/*
This functor find a tail of the specified range. For
a specified N, the head is a subsequence of N starting
elements of the range.
*/
struct tail_finderF
{
// Construction
tail_finderF( int N ) : m_N(N) {}
// Operation
template< typename ForwardIteratorT >
iterator_range<ForwardIteratorT>
operator()(
ForwardIteratorT Begin,
ForwardIteratorT End ) const
{
if(m_N>=0)
{
return ::boost::algorithm::detail::find_tail_impl( Begin, End, m_N );
}
else
{
iterator_range<ForwardIteratorT> Res=
::boost::algorithm::detail::find_head_impl( Begin, End, -m_N );
return ::boost::make_iterator_range(Res.end(), End);
}
}
private:
int m_N;
};
// find token functor -----------------------------------------------//
// find a token in a sequence ( functor )
/*
This find functor finds a token specified be a predicate
in a sequence. It is equivalent of std::find algorithm,
with an exception that it return range instead of a single
iterator.
If bCompress is set to true, adjacent matching tokens are
concatenated into one match.
*/
template< typename PredicateT >
struct token_finderF
{
// Construction
token_finderF(
PredicateT Pred,
token_compress_mode_type eCompress=token_compress_off ) :
m_Pred(Pred), m_eCompress(eCompress) {}
// Operation
template< typename ForwardIteratorT >
iterator_range<ForwardIteratorT>
operator()(
ForwardIteratorT Begin,
ForwardIteratorT End ) const
{
typedef iterator_range<ForwardIteratorT> result_type;
ForwardIteratorT It=std::find_if( Begin, End, m_Pred );
if( It==End )
{
return result_type( End, End );
}
else
{
ForwardIteratorT It2=It;
if( m_eCompress==token_compress_on )
{
// Find first non-matching character
while( It2!=End && m_Pred(*It2) ) ++It2;
}
else
{
// Advance by one position
++It2;
}
return result_type( It, It2 );
}
}
private:
PredicateT m_Pred;
token_compress_mode_type m_eCompress;
};
// find range functor -----------------------------------------------//
// find a range in the sequence ( functor )
/*
This functor actually does not perform any find operation.
It always returns given iterator range as a result.
*/
template<typename ForwardIterator1T>
struct range_finderF
{
typedef ForwardIterator1T input_iterator_type;
typedef iterator_range<input_iterator_type> result_type;
// Construction
range_finderF(
input_iterator_type Begin,
input_iterator_type End ) : m_Range(Begin, End) {}
range_finderF(const iterator_range<input_iterator_type>& Range) :
m_Range(Range) {}
// Operation
template< typename ForwardIterator2T >
iterator_range<ForwardIterator2T>
operator()(
ForwardIterator2T,
ForwardIterator2T ) const
{
#if BOOST_WORKAROUND( __MWERKS__, <= 0x3003 )
return iterator_range<const ForwardIterator2T>(this->m_Range);
#elif BOOST_WORKAROUND(BOOST_MSVC, <= 1300)
return iterator_range<ForwardIterator2T>(m_Range.begin(), m_Range.end());
#else
return m_Range;
#endif
}
private:
iterator_range<input_iterator_type> m_Range;
};
} // namespace detail
} // namespace algorithm
} // namespace boost
#endif // BOOST_STRING_FINDER_DETAIL_HPP
@@ -0,0 +1,122 @@
// Boost string_algo library find_regex.hpp header file ---------------------------//
// Copyright Pavol Droba 2002-2003.
//
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
// See http://www.boost.org/ for updates, documentation, and revision history.
#ifndef BOOST_STRING_FINDER_REGEX_DETAIL_HPP
#define BOOST_STRING_FINDER_REGEX_DETAIL_HPP
#include <boost/algorithm/string/config.hpp>
#include <boost/regex.hpp>
#include <boost/range/iterator_range.hpp>
#include <boost/range/begin.hpp>
#include <boost/range/end.hpp>
namespace boost {
namespace algorithm {
namespace detail {
// regex find functor -----------------------------------------------//
// regex search result
template<typename IteratorT>
struct regex_search_result :
public iterator_range<IteratorT>
{
typedef regex_search_result<IteratorT> type;
typedef iterator_range<IteratorT> base_type;
typedef BOOST_STRING_TYPENAME base_type::value_type value_type;
typedef BOOST_STRING_TYPENAME base_type::difference_type difference_type;
typedef BOOST_STRING_TYPENAME base_type::const_iterator const_iterator;
typedef BOOST_STRING_TYPENAME base_type::iterator iterator;
typedef boost::match_results<iterator> match_results_type;
// Construction
// Construction from the match result
regex_search_result( const match_results_type& MatchResults ) :
base_type( MatchResults[0].first, MatchResults[0].second ),
m_MatchResults( MatchResults ) {}
// Construction of empty match. End iterator has to be specified
regex_search_result( IteratorT End ) :
base_type( End, End ) {}
regex_search_result( const regex_search_result& Other ) :
base_type( Other.begin(), Other.end() ),
m_MatchResults( Other.m_MatchResults ) {}
// Assignment
regex_search_result& operator=( const regex_search_result& Other )
{
base_type::operator=( Other );
m_MatchResults=Other.m_MatchResults;
return *this;
}
// Match result retrival
const match_results_type& match_results() const
{
return m_MatchResults;
}
private:
// Saved matchresult
match_results_type m_MatchResults;
};
// find_regex
/*
Regex based search functor
*/
template<typename RegExT>
struct find_regexF
{
typedef RegExT regex_type;
typedef const RegExT& regex_reference_type;
// Construction
find_regexF( regex_reference_type Rx, match_flag_type MatchFlags = match_default ) :
m_Rx(Rx), m_MatchFlags(MatchFlags) {}
// Operation
template< typename ForwardIteratorT >
regex_search_result<ForwardIteratorT>
operator()(
ForwardIteratorT Begin,
ForwardIteratorT End ) const
{
typedef ForwardIteratorT input_iterator_type;
typedef regex_search_result<ForwardIteratorT> result_type;
// instantiate match result
match_results<input_iterator_type> result;
// search for a match
if ( ::boost::regex_search( Begin, End, result, m_Rx, m_MatchFlags ) )
{
// construct a result
return result_type( result );
}
else
{
// empty result
return result_type( End );
}
}
private:
regex_reference_type m_Rx; // Regexp
match_flag_type m_MatchFlags; // match flags
};
} // namespace detail
} // namespace algorithm
} // namespace boost
#endif // BOOST_STRING_FIND_DETAIL_HPP
@@ -0,0 +1,94 @@
// Boost string_algo library formatter.hpp header file ---------------------------//
// Copyright Pavol Droba 2002-2003.
//
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
// See http://www.boost.org for updates, documentation, and revision history.
#ifndef BOOST_STRING_FORMATTER_DETAIL_HPP
#define BOOST_STRING_FORMATTER_DETAIL_HPP
#include <boost/range/iterator_range.hpp>
#include <boost/range/begin.hpp>
#include <boost/range/end.hpp>
#include <boost/range/const_iterator.hpp>
#include <boost/algorithm/string/detail/util.hpp>
// generic replace functors -----------------------------------------------//
namespace boost {
namespace algorithm {
namespace detail {
// const format functor ----------------------------------------------------//
// constant format functor
template<typename RangeT>
struct const_formatF
{
private:
typedef BOOST_STRING_TYPENAME
range_const_iterator<RangeT>::type format_iterator;
typedef iterator_range<format_iterator> result_type;
public:
// Construction
const_formatF(const RangeT& Format) :
m_Format(::boost::begin(Format), ::boost::end(Format)) {}
// Operation
#if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564))
template<typename Range2T>
result_type& operator()(const Range2T&)
{
return m_Format;
}
#endif
template<typename Range2T>
const result_type& operator()(const Range2T&) const
{
return m_Format;
}
private:
result_type m_Format;
};
// identity format functor ----------------------------------------------------//
// identity format functor
template<typename RangeT>
struct identity_formatF
{
// Operation
template< typename Range2T >
const RangeT& operator()(const Range2T& Replace) const
{
return RangeT(::boost::begin(Replace), ::boost::end(Replace));
}
};
// empty format functor ( used by erase ) ------------------------------------//
// empty format functor
template< typename CharT >
struct empty_formatF
{
template< typename ReplaceT >
empty_container<CharT> operator()(const ReplaceT&) const
{
return empty_container<CharT>();
}
};
} // namespace detail
} // namespace algorithm
} // namespace boost
#endif // BOOST_STRING_FORMATTER_DETAIL_HPP
@@ -0,0 +1,61 @@
// Boost string_algo library formatter_regex.hpp header file ---------------------------//
// Copyright Pavol Droba 2002-2003.
//
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
// See http://www.boost.org/ for updates, documentation, and revision history.
#ifndef BOOST_STRING_FORMATTER_REGEX_DETAIL_HPP
#define BOOST_STRING_FORMATTER_REGEX_DETAIL_HPP
#include <boost/algorithm/string/config.hpp>
#include <string>
#include <boost/regex.hpp>
#include <boost/algorithm/string/detail/finder_regex.hpp>
namespace boost {
namespace algorithm {
namespace detail {
// regex format functor -----------------------------------------//
// regex format functor
template<typename StringT>
struct regex_formatF
{
private:
typedef StringT result_type;
typedef BOOST_STRING_TYPENAME StringT::value_type char_type;
public:
// Construction
regex_formatF( const StringT& Fmt, match_flag_type Flags=format_default ) :
m_Fmt(Fmt), m_Flags( Flags ) {}
template<typename InputIteratorT>
result_type operator()(
const regex_search_result<InputIteratorT>& Replace ) const
{
if ( Replace.empty() )
{
return result_type();
}
else
{
return Replace.match_results().format( m_Fmt, m_Flags );
}
}
private:
const StringT& m_Fmt;
match_flag_type m_Flags;
};
} // namespace detail
} // namespace algorithm
} // namespace boost
#endif // BOOST_STRING_FORMATTER_DETAIL_HPP
@@ -0,0 +1,77 @@
// Boost string_algo library predicate.hpp header file ---------------------------//
// Copyright Pavol Droba 2002-2003.
//
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
// See http://www.boost.org/ for updates, documentation, and revision history.
#ifndef BOOST_STRING_PREDICATE_DETAIL_HPP
#define BOOST_STRING_PREDICATE_DETAIL_HPP
#include <iterator>
#include <boost/algorithm/string/find.hpp>
namespace boost {
namespace algorithm {
namespace detail {
// ends_with predicate implementation ----------------------------------//
template<
typename ForwardIterator1T,
typename ForwardIterator2T,
typename PredicateT>
inline bool ends_with_iter_select(
ForwardIterator1T Begin,
ForwardIterator1T End,
ForwardIterator2T SubBegin,
ForwardIterator2T SubEnd,
PredicateT Comp,
std::bidirectional_iterator_tag)
{
ForwardIterator1T it=End;
ForwardIterator2T pit=SubEnd;
for(;it!=Begin && pit!=SubBegin;)
{
if( !(Comp(*(--it),*(--pit))) )
return false;
}
return pit==SubBegin;
}
template<
typename ForwardIterator1T,
typename ForwardIterator2T,
typename PredicateT>
inline bool ends_with_iter_select(
ForwardIterator1T Begin,
ForwardIterator1T End,
ForwardIterator2T SubBegin,
ForwardIterator2T SubEnd,
PredicateT Comp,
std::forward_iterator_tag)
{
if ( SubBegin==SubEnd )
{
// empty subsequence check
return true;
}
iterator_range<ForwardIterator1T> Result
=last_finder(
::boost::make_iterator_range(SubBegin, SubEnd),
Comp)(Begin, End);
return !Result.empty() && Result.end()==End;
}
} // namespace detail
} // namespace algorithm
} // namespace boost
#endif // BOOST_STRING_PREDICATE_DETAIL_HPP
@@ -0,0 +1,159 @@
// Boost string_algo library replace_storage.hpp header file ---------------------------//
// Copyright Pavol Droba 2002-2003.
//
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
// See http://www.boost.org/ for updates, documentation, and revision history.
#ifndef BOOST_STRING_REPLACE_STORAGE_DETAIL_HPP
#define BOOST_STRING_REPLACE_STORAGE_DETAIL_HPP
#include <boost/algorithm/string/config.hpp>
#include <algorithm>
#include <boost/mpl/bool.hpp>
#include <boost/algorithm/string/sequence_traits.hpp>
#include <boost/algorithm/string/detail/sequence.hpp>
namespace boost {
namespace algorithm {
namespace detail {
// storage handling routines -----------------------------------------------//
template< typename StorageT, typename OutputIteratorT >
inline OutputIteratorT move_from_storage(
StorageT& Storage,
OutputIteratorT DestBegin,
OutputIteratorT DestEnd )
{
OutputIteratorT OutputIt=DestBegin;
while( !Storage.empty() && OutputIt!=DestEnd )
{
*OutputIt=Storage.front();
Storage.pop_front();
++OutputIt;
}
return OutputIt;
}
template< typename StorageT, typename WhatT >
inline void copy_to_storage(
StorageT& Storage,
const WhatT& What )
{
Storage.insert( Storage.end(), ::boost::begin(What), ::boost::end(What) );
}
// process segment routine -----------------------------------------------//
template< bool HasStableIterators >
struct process_segment_helper
{
// Optimized version of process_segment for generic sequence
template<
typename StorageT,
typename InputT,
typename ForwardIteratorT >
ForwardIteratorT operator()(
StorageT& Storage,
InputT& /*Input*/,
ForwardIteratorT InsertIt,
ForwardIteratorT SegmentBegin,
ForwardIteratorT SegmentEnd )
{
// Copy data from the storage until the beginning of the segment
ForwardIteratorT It=::boost::algorithm::detail::move_from_storage( Storage, InsertIt, SegmentBegin );
// 3 cases are possible :
// a) Storage is empty, It==SegmentBegin
// b) Storage is empty, It!=SegmentBegin
// c) Storage is not empty
if( Storage.empty() )
{
if( It==SegmentBegin )
{
// Case a) everything is grand, just return end of segment
return SegmentEnd;
}
else
{
// Case b) move the segment backwards
return std::copy( SegmentBegin, SegmentEnd, It );
}
}
else
{
// Case c) -> shift the segment to the left and keep the overlap in the storage
while( It!=SegmentEnd )
{
// Store value into storage
Storage.push_back( *It );
// Get the top from the storage and put it here
*It=Storage.front();
Storage.pop_front();
// Advance
++It;
}
return It;
}
}
};
template<>
struct process_segment_helper< true >
{
// Optimized version of process_segment for list-like sequence
template<
typename StorageT,
typename InputT,
typename ForwardIteratorT >
ForwardIteratorT operator()(
StorageT& Storage,
InputT& Input,
ForwardIteratorT InsertIt,
ForwardIteratorT SegmentBegin,
ForwardIteratorT SegmentEnd )
{
// Call replace to do the job
::boost::algorithm::detail::replace( Input, InsertIt, SegmentBegin, Storage );
// Empty the storage
Storage.clear();
// Iterators were not changed, simply return the end of segment
return SegmentEnd;
}
};
// Process one segment in the replace_all algorithm
template<
typename StorageT,
typename InputT,
typename ForwardIteratorT >
inline ForwardIteratorT process_segment(
StorageT& Storage,
InputT& Input,
ForwardIteratorT InsertIt,
ForwardIteratorT SegmentBegin,
ForwardIteratorT SegmentEnd )
{
return
process_segment_helper<
has_stable_iterators<InputT>::value>()(
Storage, Input, InsertIt, SegmentBegin, SegmentEnd );
}
} // namespace detail
} // namespace algorithm
} // namespace boost
#endif // BOOST_STRING_REPLACE_STORAGE_DETAIL_HPP
@@ -0,0 +1,200 @@
// Boost string_algo library sequence.hpp header file ---------------------------//
// Copyright Pavol Droba 2002-2003.
//
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
// See http://www.boost.org/ for updates, documentation, and revision history.
#ifndef BOOST_STRING_DETAIL_SEQUENCE_HPP
#define BOOST_STRING_DETAIL_SEQUENCE_HPP
#include <boost/algorithm/string/config.hpp>
#include <boost/mpl/bool.hpp>
#include <boost/mpl/logical.hpp>
#include <boost/range/begin.hpp>
#include <boost/range/end.hpp>
#include <boost/algorithm/string/sequence_traits.hpp>
namespace boost {
namespace algorithm {
namespace detail {
// insert helpers -------------------------------------------------//
template< typename InputT, typename ForwardIteratorT >
inline void insert(
InputT& Input,
BOOST_STRING_TYPENAME InputT::iterator At,
ForwardIteratorT Begin,
ForwardIteratorT End )
{
Input.insert( At, Begin, End );
}
template< typename InputT, typename InsertT >
inline void insert(
InputT& Input,
BOOST_STRING_TYPENAME InputT::iterator At,
const InsertT& Insert )
{
::boost::algorithm::detail::insert( Input, At, ::boost::begin(Insert), ::boost::end(Insert) );
}
// erase helper ---------------------------------------------------//
// Erase a range in the sequence
/*
Returns the iterator pointing just after the erase subrange
*/
template< typename InputT >
inline typename InputT::iterator erase(
InputT& Input,
BOOST_STRING_TYPENAME InputT::iterator From,
BOOST_STRING_TYPENAME InputT::iterator To )
{
return Input.erase( From, To );
}
// replace helper implementation ----------------------------------//
// Optimized version of replace for generic sequence containers
// Assumption: insert and erase are expensive
template< bool HasConstTimeOperations >
struct replace_const_time_helper
{
template< typename InputT, typename ForwardIteratorT >
void operator()(
InputT& Input,
BOOST_STRING_TYPENAME InputT::iterator From,
BOOST_STRING_TYPENAME InputT::iterator To,
ForwardIteratorT Begin,
ForwardIteratorT End )
{
// Copy data to the container ( as much as possible )
ForwardIteratorT InsertIt=Begin;
BOOST_STRING_TYPENAME InputT::iterator InputIt=From;
for(; InsertIt!=End && InputIt!=To; InsertIt++, InputIt++ )
{
*InputIt=*InsertIt;
}
if ( InsertIt!=End )
{
// Replace sequence is longer, insert it
Input.insert( InputIt, InsertIt, End );
}
else
{
if ( InputIt!=To )
{
// Replace sequence is shorter, erase the rest
Input.erase( InputIt, To );
}
}
}
};
template<>
struct replace_const_time_helper< true >
{
// Const-time erase and insert methods -> use them
template< typename InputT, typename ForwardIteratorT >
void operator()(
InputT& Input,
BOOST_STRING_TYPENAME InputT::iterator From,
BOOST_STRING_TYPENAME InputT::iterator To,
ForwardIteratorT Begin,
ForwardIteratorT End )
{
BOOST_STRING_TYPENAME InputT::iterator At=Input.erase( From, To );
if ( Begin!=End )
{
if(!Input.empty())
{
Input.insert( At, Begin, End );
}
else
{
Input.insert( Input.begin(), Begin, End );
}
}
}
};
// No native replace method
template< bool HasNative >
struct replace_native_helper
{
template< typename InputT, typename ForwardIteratorT >
void operator()(
InputT& Input,
BOOST_STRING_TYPENAME InputT::iterator From,
BOOST_STRING_TYPENAME InputT::iterator To,
ForwardIteratorT Begin,
ForwardIteratorT End )
{
replace_const_time_helper<
boost::mpl::and_<
has_const_time_insert<InputT>,
has_const_time_erase<InputT> >::value >()(
Input, From, To, Begin, End );
}
};
// Container has native replace method
template<>
struct replace_native_helper< true >
{
template< typename InputT, typename ForwardIteratorT >
void operator()(
InputT& Input,
BOOST_STRING_TYPENAME InputT::iterator From,
BOOST_STRING_TYPENAME InputT::iterator To,
ForwardIteratorT Begin,
ForwardIteratorT End )
{
Input.replace( From, To, Begin, End );
}
};
// replace helper -------------------------------------------------//
template< typename InputT, typename ForwardIteratorT >
inline void replace(
InputT& Input,
BOOST_STRING_TYPENAME InputT::iterator From,
BOOST_STRING_TYPENAME InputT::iterator To,
ForwardIteratorT Begin,
ForwardIteratorT End )
{
replace_native_helper< has_native_replace<InputT>::value >()(
Input, From, To, Begin, End );
}
template< typename InputT, typename InsertT >
inline void replace(
InputT& Input,
BOOST_STRING_TYPENAME InputT::iterator From,
BOOST_STRING_TYPENAME InputT::iterator To,
const InsertT& Insert )
{
if(From!=To)
{
::boost::algorithm::detail::replace( Input, From, To, ::boost::begin(Insert), ::boost::end(Insert) );
}
else
{
::boost::algorithm::detail::insert( Input, From, ::boost::begin(Insert), ::boost::end(Insert) );
}
}
} // namespace detail
} // namespace algorithm
} // namespace boost
#endif // BOOST_STRING_DETAIL_SEQUENCE_HPP
@@ -0,0 +1,95 @@
// Boost string_algo library trim.hpp header file ---------------------------//
// Copyright Pavol Droba 2002-2003.
//
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
// See http://www.boost.org/ for updates, documentation, and revision history.
#ifndef BOOST_STRING_TRIM_DETAIL_HPP
#define BOOST_STRING_TRIM_DETAIL_HPP
#include <boost/algorithm/string/config.hpp>
#include <boost/detail/iterator.hpp>
namespace boost {
namespace algorithm {
namespace detail {
// trim iterator helper -----------------------------------------------//
template< typename ForwardIteratorT, typename PredicateT >
inline ForwardIteratorT trim_end_iter_select(
ForwardIteratorT InBegin,
ForwardIteratorT InEnd,
PredicateT IsSpace,
std::forward_iterator_tag )
{
ForwardIteratorT TrimIt=InBegin;
for( ForwardIteratorT It=InBegin; It!=InEnd; ++It )
{
if ( !IsSpace(*It) )
{
TrimIt=It;
++TrimIt;
}
}
return TrimIt;
}
template< typename ForwardIteratorT, typename PredicateT >
inline ForwardIteratorT trim_end_iter_select(
ForwardIteratorT InBegin,
ForwardIteratorT InEnd,
PredicateT IsSpace,
std::bidirectional_iterator_tag )
{
for( ForwardIteratorT It=InEnd; It!=InBegin; )
{
if ( !IsSpace(*(--It)) )
return ++It;
}
return InBegin;
}
// Search for first non matching character from the beginning of the sequence
template< typename ForwardIteratorT, typename PredicateT >
inline ForwardIteratorT trim_begin(
ForwardIteratorT InBegin,
ForwardIteratorT InEnd,
PredicateT IsSpace )
{
ForwardIteratorT It=InBegin;
for(; It!=InEnd; ++It )
{
if (!IsSpace(*It))
return It;
}
return It;
}
// Search for first non matching character from the end of the sequence
template< typename ForwardIteratorT, typename PredicateT >
inline ForwardIteratorT trim_end(
ForwardIteratorT InBegin,
ForwardIteratorT InEnd,
PredicateT IsSpace )
{
typedef BOOST_STRING_TYPENAME boost::detail::
iterator_traits<ForwardIteratorT>::iterator_category category;
return ::boost::algorithm::detail::trim_end_iter_select( InBegin, InEnd, IsSpace, category() );
}
} // namespace detail
} // namespace algorithm
} // namespace boost
#endif // BOOST_STRING_TRIM_DETAIL_HPP
@@ -0,0 +1,106 @@
// Boost string_algo library util.hpp header file ---------------------------//
// Copyright Pavol Droba 2002-2003.
//
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
// See http://www.boost.org/ for updates, documentation, and revision history.
#ifndef BOOST_STRING_UTIL_DETAIL_HPP
#define BOOST_STRING_UTIL_DETAIL_HPP
#include <boost/algorithm/string/config.hpp>
#include <functional>
#include <boost/range/iterator_range.hpp>
namespace boost {
namespace algorithm {
namespace detail {
// empty container -----------------------------------------------//
// empty_container
/*
This class represents always empty container,
containing elements of type CharT.
It is supposed to be used in a const version only
*/
template< typename CharT >
struct empty_container
{
typedef empty_container<CharT> type;
typedef CharT value_type;
typedef std::size_t size_type;
typedef std::ptrdiff_t difference_type;
typedef const value_type& reference;
typedef const value_type& const_reference;
typedef const value_type* iterator;
typedef const value_type* const_iterator;
// Operations
const_iterator begin() const
{
return reinterpret_cast<const_iterator>(0);
}
const_iterator end() const
{
return reinterpret_cast<const_iterator>(0);
}
bool empty() const
{
return false;
}
size_type size() const
{
return 0;
}
};
// bounded copy algorithm -----------------------------------------------//
// Bounded version of the std::copy algorithm
template<typename InputIteratorT, typename OutputIteratorT>
inline OutputIteratorT bounded_copy(
InputIteratorT First,
InputIteratorT Last,
OutputIteratorT DestFirst,
OutputIteratorT DestLast )
{
InputIteratorT InputIt=First;
OutputIteratorT OutputIt=DestFirst;
for(; InputIt!=Last && OutputIt!=DestLast; InputIt++, OutputIt++ )
{
*OutputIt=*InputIt;
}
return OutputIt;
}
// iterator range utilities -----------------------------------------//
// copy range functor
template<
typename SeqT,
typename IteratorT=BOOST_STRING_TYPENAME SeqT::const_iterator >
struct copy_iterator_rangeF :
public std::unary_function< iterator_range<IteratorT>, SeqT >
{
SeqT operator()( const iterator_range<IteratorT>& Range ) const
{
return copy_range<SeqT>(Range);
}
};
} // namespace detail
} // namespace algorithm
} // namespace boost
#endif // BOOST_STRING_UTIL_DETAIL_HPP
+844
View File
@@ -0,0 +1,844 @@
// Boost string_algo library erase.hpp header file ---------------------------//
// Copyright Pavol Droba 2002-2006.
//
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
// See http://www.boost.org/ for updates, documentation, and revision history.
#ifndef BOOST_STRING_ERASE_HPP
#define BOOST_STRING_ERASE_HPP
#include <boost/algorithm/string/config.hpp>
#include <boost/range/iterator_range.hpp>
#include <boost/range/begin.hpp>
#include <boost/range/end.hpp>
#include <boost/range/iterator.hpp>
#include <boost/range/const_iterator.hpp>
#include <boost/algorithm/string/find_format.hpp>
#include <boost/algorithm/string/finder.hpp>
#include <boost/algorithm/string/formatter.hpp>
/*! \file
Defines various erase algorithms. Each algorithm removes
part(s) of the input according to a searching criteria.
*/
namespace boost {
namespace algorithm {
// erase_range -------------------------------------------------------//
//! Erase range algorithm
/*!
Remove the given range from the input. The result is a modified copy of
the input. It is returned as a sequence or copied to the output iterator.
\param Output An output iterator to which the result will be copied
\param Input An input sequence
\param SearchRange A range in the input to be removed
\return An output iterator pointing just after the last inserted character or
a modified copy of the input
\note The second variant of this function provides the strong exception-safety guarantee
*/
template<typename OutputIteratorT, typename RangeT>
inline OutputIteratorT erase_range_copy(
OutputIteratorT Output,
const RangeT& Input,
const iterator_range<
BOOST_STRING_TYPENAME
range_const_iterator<RangeT>::type>& SearchRange )
{
return ::boost::algorithm::find_format_copy(
Output,
Input,
::boost::algorithm::range_finder(SearchRange),
::boost::algorithm::empty_formatter(Input) );
}
//! Erase range algorithm
/*!
\overload
*/
template<typename SequenceT>
inline SequenceT erase_range_copy(
const SequenceT& Input,
const iterator_range<
BOOST_STRING_TYPENAME
range_const_iterator<SequenceT>::type>& SearchRange )
{
return ::boost::algorithm::find_format_copy(
Input,
::boost::algorithm::range_finder(SearchRange),
::boost::algorithm::empty_formatter(Input) );
}
//! Erase range algorithm
/*!
Remove the given range from the input.
The input sequence is modified in-place.
\param Input An input sequence
\param SearchRange A range in the input to be removed
*/
template<typename SequenceT>
inline void erase_range(
SequenceT& Input,
const iterator_range<
BOOST_STRING_TYPENAME
range_iterator<SequenceT>::type>& SearchRange )
{
::boost::algorithm::find_format(
Input,
::boost::algorithm::range_finder(SearchRange),
::boost::algorithm::empty_formatter(Input) );
}
// erase_first --------------------------------------------------------//
//! Erase first algorithm
/*!
Remove the first occurrence of the substring from the input.
The result is a modified copy of the input. It is returned as a sequence
or copied to the output iterator.
\param Output An output iterator to which the result will be copied
\param Input An input string
\param Search A substring to be searched for
\return An output iterator pointing just after the last inserted character or
a modified copy of the input
\note The second variant of this function provides the strong exception-safety guarantee
*/
template<
typename OutputIteratorT,
typename Range1T,
typename Range2T>
inline OutputIteratorT erase_first_copy(
OutputIteratorT Output,
const Range1T& Input,
const Range2T& Search )
{
return ::boost::algorithm::find_format_copy(
Output,
Input,
::boost::algorithm::first_finder(Search),
::boost::algorithm::empty_formatter(Input) );
}
//! Erase first algorithm
/*!
\overload
*/
template<typename SequenceT, typename RangeT>
inline SequenceT erase_first_copy(
const SequenceT& Input,
const RangeT& Search )
{
return ::boost::algorithm::find_format_copy(
Input,
::boost::algorithm::first_finder(Search),
::boost::algorithm::empty_formatter(Input) );
}
//! Erase first algorithm
/*!
Remove the first occurrence of the substring from the input.
The input sequence is modified in-place.
\param Input An input string
\param Search A substring to be searched for.
*/
template<typename SequenceT, typename RangeT>
inline void erase_first(
SequenceT& Input,
const RangeT& Search )
{
::boost::algorithm::find_format(
Input,
::boost::algorithm::first_finder(Search),
::boost::algorithm::empty_formatter(Input) );
}
// erase_first ( case insensitive ) ------------------------------------//
//! Erase first algorithm ( case insensitive )
/*!
Remove the first occurrence of the substring from the input.
The result is a modified copy of the input. It is returned as a sequence
or copied to the output iterator.
Searching is case insensitive.
\param Output An output iterator to which the result will be copied
\param Input An input string
\param Search A substring to be searched for
\param Loc A locale used for case insensitive comparison
\return An output iterator pointing just after the last inserted character or
a modified copy of the input
\note The second variant of this function provides the strong exception-safety guarantee
*/
template<
typename OutputIteratorT,
typename Range1T,
typename Range2T>
inline OutputIteratorT ierase_first_copy(
OutputIteratorT Output,
const Range1T& Input,
const Range2T& Search,
const std::locale& Loc=std::locale() )
{
return ::boost::algorithm::find_format_copy(
Output,
Input,
::boost::algorithm::first_finder(Search, is_iequal(Loc)),
::boost::algorithm::empty_formatter(Input) );
}
//! Erase first algorithm ( case insensitive )
/*!
\overload
*/
template<typename SequenceT, typename RangeT>
inline SequenceT ierase_first_copy(
const SequenceT& Input,
const RangeT& Search,
const std::locale& Loc=std::locale() )
{
return ::boost::algorithm::find_format_copy(
Input,
::boost::algorithm::first_finder(Search, is_iequal(Loc)),
::boost::algorithm::empty_formatter(Input) );
}
//! Erase first algorithm ( case insensitive )
/*!
Remove the first occurrence of the substring from the input.
The input sequence is modified in-place. Searching is case insensitive.
\param Input An input string
\param Search A substring to be searched for
\param Loc A locale used for case insensitive comparison
*/
template<typename SequenceT, typename RangeT>
inline void ierase_first(
SequenceT& Input,
const RangeT& Search,
const std::locale& Loc=std::locale() )
{
::boost::algorithm::find_format(
Input,
::boost::algorithm::first_finder(Search, is_iequal(Loc)),
::boost::algorithm::empty_formatter(Input) );
}
// erase_last --------------------------------------------------------//
//! Erase last algorithm
/*!
Remove the last occurrence of the substring from the input.
The result is a modified copy of the input. It is returned as a sequence
or copied to the output iterator.
\param Output An output iterator to which the result will be copied
\param Input An input string
\param Search A substring to be searched for.
\return An output iterator pointing just after the last inserted character or
a modified copy of the input
\note The second variant of this function provides the strong exception-safety guarantee
*/
template<
typename OutputIteratorT,
typename Range1T,
typename Range2T>
inline OutputIteratorT erase_last_copy(
OutputIteratorT Output,
const Range1T& Input,
const Range2T& Search )
{
return ::boost::algorithm::find_format_copy(
Output,
Input,
::boost::algorithm::last_finder(Search),
::boost::algorithm::empty_formatter(Input) );
}
//! Erase last algorithm
/*!
\overload
*/
template<typename SequenceT, typename RangeT>
inline SequenceT erase_last_copy(
const SequenceT& Input,
const RangeT& Search )
{
return ::boost::algorithm::find_format_copy(
Input,
::boost::algorithm::last_finder(Search),
::boost::algorithm::empty_formatter(Input) );
}
//! Erase last algorithm
/*!
Remove the last occurrence of the substring from the input.
The input sequence is modified in-place.
\param Input An input string
\param Search A substring to be searched for
*/
template<typename SequenceT, typename RangeT>
inline void erase_last(
SequenceT& Input,
const RangeT& Search )
{
::boost::algorithm::find_format(
Input,
::boost::algorithm::last_finder(Search),
::boost::algorithm::empty_formatter(Input) );
}
// erase_last ( case insensitive ) ------------------------------------//
//! Erase last algorithm ( case insensitive )
/*!
Remove the last occurrence of the substring from the input.
The result is a modified copy of the input. It is returned as a sequence
or copied to the output iterator.
Searching is case insensitive.
\param Output An output iterator to which the result will be copied
\param Input An input string
\param Search A substring to be searched for
\param Loc A locale used for case insensitive comparison
\return An output iterator pointing just after the last inserted character or
a modified copy of the input
\note The second variant of this function provides the strong exception-safety guarantee
*/
template<
typename OutputIteratorT,
typename Range1T,
typename Range2T>
inline OutputIteratorT ierase_last_copy(
OutputIteratorT Output,
const Range1T& Input,
const Range2T& Search,
const std::locale& Loc=std::locale() )
{
return ::boost::algorithm::find_format_copy(
Output,
Input,
::boost::algorithm::last_finder(Search, is_iequal(Loc)),
::boost::algorithm::empty_formatter(Input) );
}
//! Erase last algorithm ( case insensitive )
/*!
\overload
*/
template<typename SequenceT, typename RangeT>
inline SequenceT ierase_last_copy(
const SequenceT& Input,
const RangeT& Search,
const std::locale& Loc=std::locale() )
{
return ::boost::algorithm::find_format_copy(
Input,
::boost::algorithm::last_finder(Search, is_iequal(Loc)),
::boost::algorithm::empty_formatter(Input) );
}
//! Erase last algorithm ( case insensitive )
/*!
Remove the last occurrence of the substring from the input.
The input sequence is modified in-place. Searching is case insensitive.
\param Input An input string
\param Search A substring to be searched for
\param Loc A locale used for case insensitive comparison
*/
template<typename SequenceT, typename RangeT>
inline void ierase_last(
SequenceT& Input,
const RangeT& Search,
const std::locale& Loc=std::locale() )
{
::boost::algorithm::find_format(
Input,
::boost::algorithm::last_finder(Search, is_iequal(Loc)),
::boost::algorithm::empty_formatter(Input) );
}
// erase_nth --------------------------------------------------------------------//
//! Erase nth algorithm
/*!
Remove the Nth occurrence of the substring in the input.
The result is a modified copy of the input. It is returned as a sequence
or copied to the output iterator.
\param Output An output iterator to which the result will be copied
\param Input An input string
\param Search A substring to be searched for
\param Nth An index of the match to be replaced. The index is 0-based.
For negative N, matches are counted from the end of string.
\return An output iterator pointing just after the last inserted character or
a modified copy of the input
\note The second variant of this function provides the strong exception-safety guarantee
*/
template<
typename OutputIteratorT,
typename Range1T,
typename Range2T>
inline OutputIteratorT erase_nth_copy(
OutputIteratorT Output,
const Range1T& Input,
const Range2T& Search,
int Nth )
{
return ::boost::algorithm::find_format_copy(
Output,
Input,
::boost::algorithm::nth_finder(Search, Nth),
::boost::algorithm::empty_formatter(Input) );
}
//! Erase nth algorithm
/*!
\overload
*/
template<typename SequenceT, typename RangeT>
inline SequenceT erase_nth_copy(
const SequenceT& Input,
const RangeT& Search,
int Nth )
{
return ::boost::algorithm::find_format_copy(
Input,
::boost::algorithm::nth_finder(Search, Nth),
::boost::algorithm::empty_formatter(Input) );
}
//! Erase nth algorithm
/*!
Remove the Nth occurrence of the substring in the input.
The input sequence is modified in-place.
\param Input An input string
\param Search A substring to be searched for.
\param Nth An index of the match to be replaced. The index is 0-based.
For negative N, matches are counted from the end of string.
*/
template<typename SequenceT, typename RangeT>
inline void erase_nth(
SequenceT& Input,
const RangeT& Search,
int Nth )
{
::boost::algorithm::find_format(
Input,
::boost::algorithm::nth_finder(Search, Nth),
::boost::algorithm::empty_formatter(Input) );
}
// erase_nth ( case insensitive ) ---------------------------------------------//
//! Erase nth algorithm ( case insensitive )
/*!
Remove the Nth occurrence of the substring in the input.
The result is a modified copy of the input. It is returned as a sequence
or copied to the output iterator.
Searching is case insensitive.
\param Output An output iterator to which the result will be copied
\param Input An input string
\param Search A substring to be searched for.
\param Nth An index of the match to be replaced. The index is 0-based.
For negative N, matches are counted from the end of string.
\param Loc A locale used for case insensitive comparison
\return An output iterator pointing just after the last inserted character or
a modified copy of the input
\note The second variant of this function provides the strong exception-safety guarantee
*/
template<
typename OutputIteratorT,
typename Range1T,
typename Range2T>
inline OutputIteratorT ierase_nth_copy(
OutputIteratorT Output,
const Range1T& Input,
const Range2T& Search,
int Nth,
const std::locale& Loc=std::locale() )
{
return ::boost::algorithm::find_format_copy(
Output,
Input,
::boost::algorithm::nth_finder(Search, Nth, is_iequal(Loc)),
::boost::algorithm::empty_formatter(Input) );
}
//! Erase nth algorithm
/*!
\overload
*/
template<typename SequenceT, typename RangeT>
inline SequenceT ierase_nth_copy(
const SequenceT& Input,
const RangeT& Search,
int Nth,
const std::locale& Loc=std::locale() )
{
return ::boost::algorithm::find_format_copy(
Input,
::boost::algorithm::nth_finder(Search, Nth, is_iequal(Loc)),
empty_formatter(Input) );
}
//! Erase nth algorithm
/*!
Remove the Nth occurrence of the substring in the input.
The input sequence is modified in-place. Searching is case insensitive.
\param Input An input string
\param Search A substring to be searched for.
\param Nth An index of the match to be replaced. The index is 0-based.
For negative N, matches are counted from the end of string.
\param Loc A locale used for case insensitive comparison
*/
template<typename SequenceT, typename RangeT>
inline void ierase_nth(
SequenceT& Input,
const RangeT& Search,
int Nth,
const std::locale& Loc=std::locale() )
{
::boost::algorithm::find_format(
Input,
::boost::algorithm::nth_finder(Search, Nth, is_iequal(Loc)),
::boost::algorithm::empty_formatter(Input) );
}
// erase_all --------------------------------------------------------//
//! Erase all algorithm
/*!
Remove all the occurrences of the string from the input.
The result is a modified copy of the input. It is returned as a sequence
or copied to the output iterator.
\param Output An output iterator to which the result will be copied
\param Input An input sequence
\param Search A substring to be searched for.
\return An output iterator pointing just after the last inserted character or
a modified copy of the input
\note The second variant of this function provides the strong exception-safety guarantee
*/
template<
typename OutputIteratorT,
typename Range1T,
typename Range2T>
inline OutputIteratorT erase_all_copy(
OutputIteratorT Output,
const Range1T& Input,
const Range2T& Search )
{
return ::boost::algorithm::find_format_all_copy(
Output,
Input,
::boost::algorithm::first_finder(Search),
::boost::algorithm::empty_formatter(Input) );
}
//! Erase all algorithm
/*!
\overload
*/
template<typename SequenceT, typename RangeT>
inline SequenceT erase_all_copy(
const SequenceT& Input,
const RangeT& Search )
{
return ::boost::algorithm::find_format_all_copy(
Input,
::boost::algorithm::first_finder(Search),
::boost::algorithm::empty_formatter(Input) );
}
//! Erase all algorithm
/*!
Remove all the occurrences of the string from the input.
The input sequence is modified in-place.
\param Input An input string
\param Search A substring to be searched for.
*/
template<typename SequenceT, typename RangeT>
inline void erase_all(
SequenceT& Input,
const RangeT& Search )
{
::boost::algorithm::find_format_all(
Input,
::boost::algorithm::first_finder(Search),
::boost::algorithm::empty_formatter(Input) );
}
// erase_all ( case insensitive ) ------------------------------------//
//! Erase all algorithm ( case insensitive )
/*!
Remove all the occurrences of the string from the input.
The result is a modified copy of the input. It is returned as a sequence
or copied to the output iterator.
Searching is case insensitive.
\param Output An output iterator to which the result will be copied
\param Input An input string
\param Search A substring to be searched for
\param Loc A locale used for case insensitive comparison
\return An output iterator pointing just after the last inserted character or
a modified copy of the input
\note The second variant of this function provides the strong exception-safety guarantee
*/
template<
typename OutputIteratorT,
typename Range1T,
typename Range2T>
inline OutputIteratorT ierase_all_copy(
OutputIteratorT Output,
const Range1T& Input,
const Range2T& Search,
const std::locale& Loc=std::locale() )
{
return ::boost::algorithm::find_format_all_copy(
Output,
Input,
::boost::algorithm::first_finder(Search, is_iequal(Loc)),
::boost::algorithm::empty_formatter(Input) );
}
//! Erase all algorithm ( case insensitive )
/*!
\overload
*/
template<typename SequenceT, typename RangeT>
inline SequenceT ierase_all_copy(
const SequenceT& Input,
const RangeT& Search,
const std::locale& Loc=std::locale() )
{
return ::boost::algorithm::find_format_all_copy(
Input,
::boost::algorithm::first_finder(Search, is_iequal(Loc)),
::boost::algorithm::empty_formatter(Input) );
}
//! Erase all algorithm ( case insensitive )
/*!
Remove all the occurrences of the string from the input.
The input sequence is modified in-place. Searching is case insensitive.
\param Input An input string
\param Search A substring to be searched for.
\param Loc A locale used for case insensitive comparison
*/
template<typename SequenceT, typename RangeT>
inline void ierase_all(
SequenceT& Input,
const RangeT& Search,
const std::locale& Loc=std::locale() )
{
::boost::algorithm::find_format_all(
Input,
::boost::algorithm::first_finder(Search, is_iequal(Loc)),
::boost::algorithm::empty_formatter(Input) );
}
// erase_head --------------------------------------------------------------------//
//! Erase head algorithm
/*!
Remove the head from the input. The head is a prefix of a sequence of given size.
If the sequence is shorter then required, the whole string is
considered to be the head. The result is a modified copy of the input.
It is returned as a sequence or copied to the output iterator.
\param Output An output iterator to which the result will be copied
\param Input An input string
\param N Length of the head.
For N>=0, at most N characters are extracted.
For N<0, size(Input)-|N| characters are extracted.
\return An output iterator pointing just after the last inserted character or
a modified copy of the input
\note The second variant of this function provides the strong exception-safety guarantee
*/
template<
typename OutputIteratorT,
typename RangeT>
inline OutputIteratorT erase_head_copy(
OutputIteratorT Output,
const RangeT& Input,
int N )
{
return ::boost::algorithm::find_format_copy(
Output,
Input,
::boost::algorithm::head_finder(N),
::boost::algorithm::empty_formatter( Input ) );
}
//! Erase head algorithm
/*!
\overload
*/
template<typename SequenceT>
inline SequenceT erase_head_copy(
const SequenceT& Input,
int N )
{
return ::boost::algorithm::find_format_copy(
Input,
::boost::algorithm::head_finder(N),
::boost::algorithm::empty_formatter( Input ) );
}
//! Erase head algorithm
/*!
Remove the head from the input. The head is a prefix of a sequence of given size.
If the sequence is shorter then required, the whole string is
considered to be the head. The input sequence is modified in-place.
\param Input An input string
\param N Length of the head
For N>=0, at most N characters are extracted.
For N<0, size(Input)-|N| characters are extracted.
*/
template<typename SequenceT>
inline void erase_head(
SequenceT& Input,
int N )
{
::boost::algorithm::find_format(
Input,
::boost::algorithm::head_finder(N),
::boost::algorithm::empty_formatter( Input ) );
}
// erase_tail --------------------------------------------------------------------//
//! Erase tail algorithm
/*!
Remove the tail from the input. The tail is a suffix of a sequence of given size.
If the sequence is shorter then required, the whole string is
considered to be the tail.
The result is a modified copy of the input. It is returned as a sequence
or copied to the output iterator.
\param Output An output iterator to which the result will be copied
\param Input An input string
\param N Length of the tail.
For N>=0, at most N characters are extracted.
For N<0, size(Input)-|N| characters are extracted.
\return An output iterator pointing just after the last inserted character or
a modified copy of the input
\note The second variant of this function provides the strong exception-safety guarantee
*/
template<
typename OutputIteratorT,
typename RangeT>
inline OutputIteratorT erase_tail_copy(
OutputIteratorT Output,
const RangeT& Input,
int N )
{
return ::boost::algorithm::find_format_copy(
Output,
Input,
::boost::algorithm::tail_finder(N),
::boost::algorithm::empty_formatter( Input ) );
}
//! Erase tail algorithm
/*!
\overload
*/
template<typename SequenceT>
inline SequenceT erase_tail_copy(
const SequenceT& Input,
int N )
{
return ::boost::algorithm::find_format_copy(
Input,
::boost::algorithm::tail_finder(N),
::boost::algorithm::empty_formatter( Input ) );
}
//! Erase tail algorithm
/*!
Remove the tail from the input. The tail is a suffix of a sequence of given size.
If the sequence is shorter then required, the whole string is
considered to be the tail. The input sequence is modified in-place.
\param Input An input string
\param N Length of the tail
For N>=0, at most N characters are extracted.
For N<0, size(Input)-|N| characters are extracted.
*/
template<typename SequenceT>
inline void erase_tail(
SequenceT& Input,
int N )
{
::boost::algorithm::find_format(
Input,
::boost::algorithm::tail_finder(N),
::boost::algorithm::empty_formatter( Input ) );
}
} // namespace algorithm
// pull names into the boost namespace
using algorithm::erase_range_copy;
using algorithm::erase_range;
using algorithm::erase_first_copy;
using algorithm::erase_first;
using algorithm::ierase_first_copy;
using algorithm::ierase_first;
using algorithm::erase_last_copy;
using algorithm::erase_last;
using algorithm::ierase_last_copy;
using algorithm::ierase_last;
using algorithm::erase_nth_copy;
using algorithm::erase_nth;
using algorithm::ierase_nth_copy;
using algorithm::ierase_nth;
using algorithm::erase_all_copy;
using algorithm::erase_all;
using algorithm::ierase_all_copy;
using algorithm::ierase_all;
using algorithm::erase_head_copy;
using algorithm::erase_head;
using algorithm::erase_tail_copy;
using algorithm::erase_tail;
} // namespace boost
#endif // BOOST_ERASE_HPP
+334
View File
@@ -0,0 +1,334 @@
// Boost string_algo library find.hpp header file ---------------------------//
// Copyright Pavol Droba 2002-2003.
//
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
// See http://www.boost.org/ for updates, documentation, and revision history.
#ifndef BOOST_STRING_FIND_HPP
#define BOOST_STRING_FIND_HPP
#include <boost/algorithm/string/config.hpp>
#include <boost/range/iterator_range.hpp>
#include <boost/range/begin.hpp>
#include <boost/range/end.hpp>
#include <boost/range/iterator.hpp>
#include <boost/range/as_literal.hpp>
#include <boost/algorithm/string/finder.hpp>
#include <boost/algorithm/string/compare.hpp>
#include <boost/algorithm/string/constants.hpp>
/*! \file
Defines a set of find algorithms. The algorithms are searching
for a substring of the input. The result is given as an \c iterator_range
delimiting the substring.
*/
namespace boost {
namespace algorithm {
// Generic find -----------------------------------------------//
//! Generic find algorithm
/*!
Search the input using the given finder.
\param Input A string which will be searched.
\param Finder Finder object used for searching.
\return
An \c iterator_range delimiting the match.
Returned iterator is either \c RangeT::iterator or
\c RangeT::const_iterator, depending on the constness of
the input parameter.
*/
template<typename RangeT, typename FinderT>
inline iterator_range<
BOOST_STRING_TYPENAME range_iterator<RangeT>::type>
find(
RangeT& Input,
const FinderT& Finder)
{
iterator_range<BOOST_STRING_TYPENAME range_iterator<RangeT>::type> lit_input(::boost::as_literal(Input));
return Finder(::boost::begin(lit_input),::boost::end(lit_input));
}
// find_first -----------------------------------------------//
//! Find first algorithm
/*!
Search for the first occurrence of the substring in the input.
\param Input A string which will be searched.
\param Search A substring to be searched for.
\return
An \c iterator_range delimiting the match.
Returned iterator is either \c RangeT::iterator or
\c RangeT::const_iterator, depending on the constness of
the input parameter.
\note This function provides the strong exception-safety guarantee
*/
template<typename Range1T, typename Range2T>
inline iterator_range<
BOOST_STRING_TYPENAME range_iterator<Range1T>::type>
find_first(
Range1T& Input,
const Range2T& Search)
{
return ::boost::algorithm::find(Input, ::boost::algorithm::first_finder(Search));
}
//! Find first algorithm ( case insensitive )
/*!
Search for the first occurence of the substring in the input.
Searching is case insensitive.
\param Input A string which will be searched.
\param Search A substring to be searched for.
\param Loc A locale used for case insensitive comparison
\return
An \c iterator_range delimiting the match.
Returned iterator is either \c Range1T::iterator or
\c Range1T::const_iterator, depending on the constness of
the input parameter.
\note This function provides the strong exception-safety guarantee
*/
template<typename Range1T, typename Range2T>
inline iterator_range<
BOOST_STRING_TYPENAME range_iterator<Range1T>::type>
ifind_first(
Range1T& Input,
const Range2T& Search,
const std::locale& Loc=std::locale())
{
return ::boost::algorithm::find(Input, ::boost::algorithm::first_finder(Search,is_iequal(Loc)));
}
// find_last -----------------------------------------------//
//! Find last algorithm
/*!
Search for the last occurrence of the substring in the input.
\param Input A string which will be searched.
\param Search A substring to be searched for.
\return
An \c iterator_range delimiting the match.
Returned iterator is either \c Range1T::iterator or
\c Range1T::const_iterator, depending on the constness of
the input parameter.
\note This function provides the strong exception-safety guarantee
*/
template<typename Range1T, typename Range2T>
inline iterator_range<
BOOST_STRING_TYPENAME range_iterator<Range1T>::type>
find_last(
Range1T& Input,
const Range2T& Search)
{
return ::boost::algorithm::find(Input, ::boost::algorithm::last_finder(Search));
}
//! Find last algorithm ( case insensitive )
/*!
Search for the last match a string in the input.
Searching is case insensitive.
\param Input A string which will be searched.
\param Search A substring to be searched for.
\param Loc A locale used for case insensitive comparison
\return
An \c iterator_range delimiting the match.
Returned iterator is either \c Range1T::iterator or
\c Range1T::const_iterator, depending on the constness of
the input parameter.
\note This function provides the strong exception-safety guarantee
*/
template<typename Range1T, typename Range2T>
inline iterator_range<
BOOST_STRING_TYPENAME range_iterator<Range1T>::type>
ifind_last(
Range1T& Input,
const Range2T& Search,
const std::locale& Loc=std::locale())
{
return ::boost::algorithm::find(Input, ::boost::algorithm::last_finder(Search, is_iequal(Loc)));
}
// find_nth ----------------------------------------------------------------------//
//! Find n-th algorithm
/*!
Search for the n-th (zero-indexed) occurrence of the substring in the
input.
\param Input A string which will be searched.
\param Search A substring to be searched for.
\param Nth An index (zero-indexed) of the match to be found.
For negative N, the matches are counted from the end of string.
\return
An \c iterator_range delimiting the match.
Returned iterator is either \c Range1T::iterator or
\c Range1T::const_iterator, depending on the constness of
the input parameter.
*/
template<typename Range1T, typename Range2T>
inline iterator_range<
BOOST_STRING_TYPENAME range_iterator<Range1T>::type>
find_nth(
Range1T& Input,
const Range2T& Search,
int Nth)
{
return ::boost::algorithm::find(Input, ::boost::algorithm::nth_finder(Search,Nth));
}
//! Find n-th algorithm ( case insensitive ).
/*!
Search for the n-th (zero-indexed) occurrence of the substring in the
input. Searching is case insensitive.
\param Input A string which will be searched.
\param Search A substring to be searched for.
\param Nth An index (zero-indexed) of the match to be found.
For negative N, the matches are counted from the end of string.
\param Loc A locale used for case insensitive comparison
\return
An \c iterator_range delimiting the match.
Returned iterator is either \c Range1T::iterator or
\c Range1T::const_iterator, depending on the constness of
the input parameter.
\note This function provides the strong exception-safety guarantee
*/
template<typename Range1T, typename Range2T>
inline iterator_range<
BOOST_STRING_TYPENAME range_iterator<Range1T>::type>
ifind_nth(
Range1T& Input,
const Range2T& Search,
int Nth,
const std::locale& Loc=std::locale())
{
return ::boost::algorithm::find(Input, ::boost::algorithm::nth_finder(Search,Nth,is_iequal(Loc)));
}
// find_head ----------------------------------------------------------------------//
//! Find head algorithm
/*!
Get the head of the input. Head is a prefix of the string of the
given size. If the input is shorter then required, whole input if considered
to be the head.
\param Input An input string
\param N Length of the head
For N>=0, at most N characters are extracted.
For N<0, size(Input)-|N| characters are extracted.
\return
An \c iterator_range delimiting the match.
Returned iterator is either \c Range1T::iterator or
\c Range1T::const_iterator, depending on the constness of
the input parameter.
\note This function provides the strong exception-safety guarantee
*/
template<typename RangeT>
inline iterator_range<
BOOST_STRING_TYPENAME range_iterator<RangeT>::type>
find_head(
RangeT& Input,
int N)
{
return ::boost::algorithm::find(Input, ::boost::algorithm::head_finder(N));
}
// find_tail ----------------------------------------------------------------------//
//! Find tail algorithm
/*!
Get the tail of the input. Tail is a suffix of the string of the
given size. If the input is shorter then required, whole input if considered
to be the tail.
\param Input An input string
\param N Length of the tail.
For N>=0, at most N characters are extracted.
For N<0, size(Input)-|N| characters are extracted.
\return
An \c iterator_range delimiting the match.
Returned iterator is either \c RangeT::iterator or
\c RangeT::const_iterator, depending on the constness of
the input parameter.
\note This function provides the strong exception-safety guarantee
*/
template<typename RangeT>
inline iterator_range<
BOOST_STRING_TYPENAME range_iterator<RangeT>::type>
find_tail(
RangeT& Input,
int N)
{
return ::boost::algorithm::find(Input, ::boost::algorithm::tail_finder(N));
}
// find_token --------------------------------------------------------------------//
//! Find token algorithm
/*!
Look for a given token in the string. Token is a character that matches the
given predicate.
If the "token compress mode" is enabled, adjacent tokens are considered to be one match.
\param Input A input string.
\param Pred An unary predicate to identify a token
\param eCompress Enable/Disable compressing of adjacent tokens
\return
An \c iterator_range delimiting the match.
Returned iterator is either \c RangeT::iterator or
\c RangeT::const_iterator, depending on the constness of
the input parameter.
\note This function provides the strong exception-safety guarantee
*/
template<typename RangeT, typename PredicateT>
inline iterator_range<
BOOST_STRING_TYPENAME range_iterator<RangeT>::type>
find_token(
RangeT& Input,
PredicateT Pred,
token_compress_mode_type eCompress=token_compress_off)
{
return ::boost::algorithm::find(Input, ::boost::algorithm::token_finder(Pred, eCompress));
}
} // namespace algorithm
// pull names to the boost namespace
using algorithm::find;
using algorithm::find_first;
using algorithm::ifind_first;
using algorithm::find_last;
using algorithm::ifind_last;
using algorithm::find_nth;
using algorithm::ifind_nth;
using algorithm::find_head;
using algorithm::find_tail;
using algorithm::find_token;
} // namespace boost
#endif // BOOST_STRING_FIND_HPP
@@ -0,0 +1,287 @@
// Boost string_algo library find_format.hpp header file ---------------------------//
// Copyright Pavol Droba 2002-2003.
//
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
// See http://www.boost.org/ for updates, documentation, and revision history.
#ifndef BOOST_STRING_FIND_FORMAT_HPP
#define BOOST_STRING_FIND_FORMAT_HPP
#include <deque>
#include <boost/detail/iterator.hpp>
#include <boost/range/iterator_range.hpp>
#include <boost/range/begin.hpp>
#include <boost/range/end.hpp>
#include <boost/range/const_iterator.hpp>
#include <boost/range/as_literal.hpp>
#include <boost/algorithm/string/concept.hpp>
#include <boost/algorithm/string/detail/find_format.hpp>
#include <boost/algorithm/string/detail/find_format_all.hpp>
/*! \file
Defines generic replace algorithms. Each algorithm replaces
part(s) of the input. The part to be replaced is looked up using a Finder object.
Result of finding is then used by a Formatter object to generate the replacement.
*/
namespace boost {
namespace algorithm {
// generic replace -----------------------------------------------------------------//
//! Generic replace algorithm
/*!
Use the Finder to search for a substring. Use the Formatter to format
this substring and replace it in the input.
The result is a modified copy of the input. It is returned as a sequence
or copied to the output iterator.
\param Output An output iterator to which the result will be copied
\param Input An input sequence
\param Finder A Finder object used to search for a match to be replaced
\param Formatter A Formatter object used to format a match
\return An output iterator pointing just after the last inserted character or
a modified copy of the input
\note The second variant of this function provides the strong exception-safety guarantee
*/
template<
typename OutputIteratorT,
typename RangeT,
typename FinderT,
typename FormatterT>
inline OutputIteratorT find_format_copy(
OutputIteratorT Output,
const RangeT& Input,
FinderT Finder,
FormatterT Formatter )
{
// Concept check
BOOST_CONCEPT_ASSERT((
FinderConcept<
FinderT,
BOOST_STRING_TYPENAME range_const_iterator<RangeT>::type>
));
BOOST_CONCEPT_ASSERT((
FormatterConcept<
FormatterT,
FinderT,BOOST_STRING_TYPENAME range_const_iterator<RangeT>::type>
));
iterator_range<BOOST_STRING_TYPENAME range_const_iterator<RangeT>::type> lit_input(::boost::as_literal(Input));
return detail::find_format_copy_impl(
Output,
lit_input,
Formatter,
Finder( ::boost::begin(lit_input), ::boost::end(lit_input) ) );
}
//! Generic replace algorithm
/*!
\overload
*/
template<
typename SequenceT,
typename FinderT,
typename FormatterT>
inline SequenceT find_format_copy(
const SequenceT& Input,
FinderT Finder,
FormatterT Formatter )
{
// Concept check
BOOST_CONCEPT_ASSERT((
FinderConcept<
FinderT,
BOOST_STRING_TYPENAME range_const_iterator<SequenceT>::type>
));
BOOST_CONCEPT_ASSERT((
FormatterConcept<
FormatterT,
FinderT,BOOST_STRING_TYPENAME range_const_iterator<SequenceT>::type>
));
return detail::find_format_copy_impl(
Input,
Formatter,
Finder(::boost::begin(Input), ::boost::end(Input)));
}
//! Generic replace algorithm
/*!
Use the Finder to search for a substring. Use the Formatter to format
this substring and replace it in the input. The input is modified in-place.
\param Input An input sequence
\param Finder A Finder object used to search for a match to be replaced
\param Formatter A Formatter object used to format a match
*/
template<
typename SequenceT,
typename FinderT,
typename FormatterT>
inline void find_format(
SequenceT& Input,
FinderT Finder,
FormatterT Formatter)
{
// Concept check
BOOST_CONCEPT_ASSERT((
FinderConcept<
FinderT,
BOOST_STRING_TYPENAME range_const_iterator<SequenceT>::type>
));
BOOST_CONCEPT_ASSERT((
FormatterConcept<
FormatterT,
FinderT,BOOST_STRING_TYPENAME range_const_iterator<SequenceT>::type>
));
detail::find_format_impl(
Input,
Formatter,
Finder(::boost::begin(Input), ::boost::end(Input)));
}
// find_format_all generic ----------------------------------------------------------------//
//! Generic replace all algorithm
/*!
Use the Finder to search for a substring. Use the Formatter to format
this substring and replace it in the input. Repeat this for all matching
substrings.
The result is a modified copy of the input. It is returned as a sequence
or copied to the output iterator.
\param Output An output iterator to which the result will be copied
\param Input An input sequence
\param Finder A Finder object used to search for a match to be replaced
\param Formatter A Formatter object used to format a match
\return An output iterator pointing just after the last inserted character or
a modified copy of the input
\note The second variant of this function provides the strong exception-safety guarantee
*/
template<
typename OutputIteratorT,
typename RangeT,
typename FinderT,
typename FormatterT>
inline OutputIteratorT find_format_all_copy(
OutputIteratorT Output,
const RangeT& Input,
FinderT Finder,
FormatterT Formatter)
{
// Concept check
BOOST_CONCEPT_ASSERT((
FinderConcept<
FinderT,
BOOST_STRING_TYPENAME range_const_iterator<RangeT>::type>
));
BOOST_CONCEPT_ASSERT((
FormatterConcept<
FormatterT,
FinderT,BOOST_STRING_TYPENAME range_const_iterator<RangeT>::type>
));
iterator_range<BOOST_STRING_TYPENAME range_const_iterator<RangeT>::type> lit_input(::boost::as_literal(Input));
return detail::find_format_all_copy_impl(
Output,
lit_input,
Finder,
Formatter,
Finder(::boost::begin(lit_input), ::boost::end(lit_input)));
}
//! Generic replace all algorithm
/*!
\overload
*/
template<
typename SequenceT,
typename FinderT,
typename FormatterT >
inline SequenceT find_format_all_copy(
const SequenceT& Input,
FinderT Finder,
FormatterT Formatter )
{
// Concept check
BOOST_CONCEPT_ASSERT((
FinderConcept<
FinderT,
BOOST_STRING_TYPENAME range_const_iterator<SequenceT>::type>
));
BOOST_CONCEPT_ASSERT((
FormatterConcept<
FormatterT,
FinderT,BOOST_STRING_TYPENAME range_const_iterator<SequenceT>::type>
));
return detail::find_format_all_copy_impl(
Input,
Finder,
Formatter,
Finder( ::boost::begin(Input), ::boost::end(Input) ) );
}
//! Generic replace all algorithm
/*!
Use the Finder to search for a substring. Use the Formatter to format
this substring and replace it in the input. Repeat this for all matching
substrings.The input is modified in-place.
\param Input An input sequence
\param Finder A Finder object used to search for a match to be replaced
\param Formatter A Formatter object used to format a match
*/
template<
typename SequenceT,
typename FinderT,
typename FormatterT >
inline void find_format_all(
SequenceT& Input,
FinderT Finder,
FormatterT Formatter )
{
// Concept check
BOOST_CONCEPT_ASSERT((
FinderConcept<
FinderT,
BOOST_STRING_TYPENAME range_const_iterator<SequenceT>::type>
));
BOOST_CONCEPT_ASSERT((
FormatterConcept<
FormatterT,
FinderT,BOOST_STRING_TYPENAME range_const_iterator<SequenceT>::type>
));
detail::find_format_all_impl(
Input,
Finder,
Formatter,
Finder(::boost::begin(Input), ::boost::end(Input)));
}
} // namespace algorithm
// pull the names to the boost namespace
using algorithm::find_format_copy;
using algorithm::find_format;
using algorithm::find_format_all_copy;
using algorithm::find_format_all;
} // namespace boost
#endif // BOOST_STRING_FIND_FORMAT_HPP
@@ -0,0 +1,375 @@
// Boost string_algo library find_iterator.hpp header file ---------------------------//
// Copyright Pavol Droba 2002-2004.
//
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
// See http://www.boost.org/ for updates, documentation, and revision history.
#ifndef BOOST_STRING_FIND_ITERATOR_HPP
#define BOOST_STRING_FIND_ITERATOR_HPP
#include <boost/algorithm/string/config.hpp>
#include <boost/iterator/iterator_facade.hpp>
#include <boost/iterator/iterator_categories.hpp>
#include <boost/range/iterator_range.hpp>
#include <boost/range/begin.hpp>
#include <boost/range/end.hpp>
#include <boost/range/iterator.hpp>
#include <boost/range/as_literal.hpp>
#include <boost/algorithm/string/detail/find_iterator.hpp>
/*! \file
Defines find iterator classes. Find iterator repeatedly applies a Finder
to the specified input string to search for matches. Dereferencing
the iterator yields the current match or a range between the last and the current
match depending on the iterator used.
*/
namespace boost {
namespace algorithm {
// find_iterator -----------------------------------------------//
//! find_iterator
/*!
Find iterator encapsulates a Finder and allows
for incremental searching in a string.
Each increment moves the iterator to the next match.
Find iterator is a readable forward traversal iterator.
Dereferencing the iterator yields an iterator_range delimiting
the current match.
*/
template<typename IteratorT>
class find_iterator :
public iterator_facade<
find_iterator<IteratorT>,
const iterator_range<IteratorT>,
forward_traversal_tag >,
private detail::find_iterator_base<IteratorT>
{
private:
// facade support
friend class ::boost::iterator_core_access;
private:
// typedefs
typedef detail::find_iterator_base<IteratorT> base_type;
typedef BOOST_STRING_TYPENAME
base_type::input_iterator_type input_iterator_type;
typedef BOOST_STRING_TYPENAME
base_type::match_type match_type;
public:
//! Default constructor
/*!
Construct null iterator. All null iterators are equal.
\post eof()==true
*/
find_iterator() {}
//! Copy constructor
/*!
Construct a copy of the find_iterator
*/
find_iterator( const find_iterator& Other ) :
base_type(Other),
m_Match(Other.m_Match),
m_End(Other.m_End) {}
//! Constructor
/*!
Construct new find_iterator for a given finder
and a range.
*/
template<typename FinderT>
find_iterator(
IteratorT Begin,
IteratorT End,
FinderT Finder ) :
detail::find_iterator_base<IteratorT>(Finder,0),
m_Match(Begin,Begin),
m_End(End)
{
increment();
}
//! Constructor
/*!
Construct new find_iterator for a given finder
and a range.
*/
template<typename FinderT, typename RangeT>
find_iterator(
RangeT& Col,
FinderT Finder ) :
detail::find_iterator_base<IteratorT>(Finder,0)
{
iterator_range<BOOST_STRING_TYPENAME range_iterator<RangeT>::type> lit_col(::boost::as_literal(Col));
m_Match=::boost::make_iterator_range(::boost::begin(lit_col), ::boost::begin(lit_col));
m_End=::boost::end(lit_col);
increment();
}
private:
// iterator operations
// dereference
const match_type& dereference() const
{
return m_Match;
}
// increment
void increment()
{
m_Match=this->do_find(m_Match.end(),m_End);
}
// comparison
bool equal( const find_iterator& Other ) const
{
bool bEof=eof();
bool bOtherEof=Other.eof();
return bEof || bOtherEof ? bEof==bOtherEof :
(
m_Match==Other.m_Match &&
m_End==Other.m_End
);
}
public:
// operations
//! Eof check
/*!
Check the eof condition. Eof condition means that
there is nothing more to be searched i.e. find_iterator
is after the last match.
*/
bool eof() const
{
return
this->is_null() ||
(
m_Match.begin() == m_End &&
m_Match.end() == m_End
);
}
private:
// Attributes
match_type m_Match;
input_iterator_type m_End;
};
//! find iterator construction helper
/*!
* Construct a find iterator to iterate through the specified string
*/
template<typename RangeT, typename FinderT>
inline find_iterator<
BOOST_STRING_TYPENAME range_iterator<RangeT>::type>
make_find_iterator(
RangeT& Collection,
FinderT Finder)
{
return find_iterator<BOOST_STRING_TYPENAME range_iterator<RangeT>::type>(
Collection, Finder);
}
// split iterator -----------------------------------------------//
//! split_iterator
/*!
Split iterator encapsulates a Finder and allows
for incremental searching in a string.
Unlike the find iterator, split iterator iterates
through gaps between matches.
Find iterator is a readable forward traversal iterator.
Dereferencing the iterator yields an iterator_range delimiting
the current match.
*/
template<typename IteratorT>
class split_iterator :
public iterator_facade<
split_iterator<IteratorT>,
const iterator_range<IteratorT>,
forward_traversal_tag >,
private detail::find_iterator_base<IteratorT>
{
private:
// facade support
friend class ::boost::iterator_core_access;
private:
// typedefs
typedef detail::find_iterator_base<IteratorT> base_type;
typedef BOOST_STRING_TYPENAME
base_type::input_iterator_type input_iterator_type;
typedef BOOST_STRING_TYPENAME
base_type::match_type match_type;
public:
//! Default constructor
/*!
Construct null iterator. All null iterators are equal.
\post eof()==true
*/
split_iterator() {}
//! Copy constructor
/*!
Construct a copy of the split_iterator
*/
split_iterator( const split_iterator& Other ) :
base_type(Other),
m_Match(Other.m_Match),
m_Next(Other.m_Next),
m_End(Other.m_End),
m_bEof(Other.m_bEof)
{}
//! Constructor
/*!
Construct new split_iterator for a given finder
and a range.
*/
template<typename FinderT>
split_iterator(
IteratorT Begin,
IteratorT End,
FinderT Finder ) :
detail::find_iterator_base<IteratorT>(Finder,0),
m_Match(Begin,Begin),
m_Next(Begin),
m_End(End),
m_bEof(false)
{
increment();
}
//! Constructor
/*!
Construct new split_iterator for a given finder
and a collection.
*/
template<typename FinderT, typename RangeT>
split_iterator(
RangeT& Col,
FinderT Finder ) :
detail::find_iterator_base<IteratorT>(Finder,0),
m_bEof(false)
{
iterator_range<BOOST_STRING_TYPENAME range_iterator<RangeT>::type> lit_col(::boost::as_literal(Col));
m_Match=make_iterator_range(::boost::begin(lit_col), ::boost::begin(lit_col));
m_Next=::boost::begin(lit_col);
m_End=::boost::end(lit_col);
increment();
}
private:
// iterator operations
// dereference
const match_type& dereference() const
{
return m_Match;
}
// increment
void increment()
{
match_type FindMatch=this->do_find( m_Next, m_End );
if(FindMatch.begin()==m_End && FindMatch.end()==m_End)
{
if(m_Match.end()==m_End)
{
// Mark iterator as eof
m_bEof=true;
}
}
m_Match=match_type( m_Next, FindMatch.begin() );
m_Next=FindMatch.end();
}
// comparison
bool equal( const split_iterator& Other ) const
{
bool bEof=eof();
bool bOtherEof=Other.eof();
return bEof || bOtherEof ? bEof==bOtherEof :
(
m_Match==Other.m_Match &&
m_Next==Other.m_Next &&
m_End==Other.m_End
);
}
public:
// operations
//! Eof check
/*!
Check the eof condition. Eof condition means that
there is nothing more to be searched i.e. find_iterator
is after the last match.
*/
bool eof() const
{
return this->is_null() || m_bEof;
}
private:
// Attributes
match_type m_Match;
input_iterator_type m_Next;
input_iterator_type m_End;
bool m_bEof;
};
//! split iterator construction helper
/*!
* Construct a split iterator to iterate through the specified collection
*/
template<typename RangeT, typename FinderT>
inline split_iterator<
BOOST_STRING_TYPENAME range_iterator<RangeT>::type>
make_split_iterator(
RangeT& Collection,
FinderT Finder)
{
return split_iterator<BOOST_STRING_TYPENAME range_iterator<RangeT>::type>(
Collection, Finder);
}
} // namespace algorithm
// pull names to the boost namespace
using algorithm::find_iterator;
using algorithm::make_find_iterator;
using algorithm::split_iterator;
using algorithm::make_split_iterator;
} // namespace boost
#endif // BOOST_STRING_FIND_ITERATOR_HPP
+270
View File
@@ -0,0 +1,270 @@
// Boost string_algo library finder.hpp header file ---------------------------//
// Copyright Pavol Droba 2002-2006.
//
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
// See http://www.boost.org/ for updates, documentation, and revision history.
#ifndef BOOST_STRING_FINDER_HPP
#define BOOST_STRING_FINDER_HPP
#include <boost/algorithm/string/config.hpp>
#include <boost/range/iterator_range.hpp>
#include <boost/range/begin.hpp>
#include <boost/range/end.hpp>
#include <boost/range/iterator.hpp>
#include <boost/range/const_iterator.hpp>
#include <boost/algorithm/string/constants.hpp>
#include <boost/algorithm/string/detail/finder.hpp>
#include <boost/algorithm/string/compare.hpp>
/*! \file
Defines Finder generators. Finder object is a functor which is able to
find a substring matching a specific criteria in the input.
Finders are used as a pluggable components for replace, find
and split facilities. This header contains generator functions
for finders provided in this library.
*/
namespace boost {
namespace algorithm {
// Finder generators ------------------------------------------//
//! "First" finder
/*!
Construct the \c first_finder. The finder searches for the first
occurrence of the string in a given input.
The result is given as an \c iterator_range delimiting the match.
\param Search A substring to be searched for.
\param Comp An element comparison predicate
\return An instance of the \c first_finder object
*/
template<typename RangeT>
inline detail::first_finderF<
BOOST_STRING_TYPENAME range_const_iterator<RangeT>::type,
is_equal>
first_finder( const RangeT& Search )
{
return
detail::first_finderF<
BOOST_STRING_TYPENAME
range_const_iterator<RangeT>::type,
is_equal>( ::boost::as_literal(Search), is_equal() ) ;
}
//! "First" finder
/*!
\overload
*/
template<typename RangeT,typename PredicateT>
inline detail::first_finderF<
BOOST_STRING_TYPENAME range_const_iterator<RangeT>::type,
PredicateT>
first_finder(
const RangeT& Search, PredicateT Comp )
{
return
detail::first_finderF<
BOOST_STRING_TYPENAME
range_const_iterator<RangeT>::type,
PredicateT>( ::boost::as_literal(Search), Comp );
}
//! "Last" finder
/*!
Construct the \c last_finder. The finder searches for the last
occurrence of the string in a given input.
The result is given as an \c iterator_range delimiting the match.
\param Search A substring to be searched for.
\param Comp An element comparison predicate
\return An instance of the \c last_finder object
*/
template<typename RangeT>
inline detail::last_finderF<
BOOST_STRING_TYPENAME range_const_iterator<RangeT>::type,
is_equal>
last_finder( const RangeT& Search )
{
return
detail::last_finderF<
BOOST_STRING_TYPENAME
range_const_iterator<RangeT>::type,
is_equal>( ::boost::as_literal(Search), is_equal() );
}
//! "Last" finder
/*!
\overload
*/
template<typename RangeT, typename PredicateT>
inline detail::last_finderF<
BOOST_STRING_TYPENAME range_const_iterator<RangeT>::type,
PredicateT>
last_finder( const RangeT& Search, PredicateT Comp )
{
return
detail::last_finderF<
BOOST_STRING_TYPENAME
range_const_iterator<RangeT>::type,
PredicateT>( ::boost::as_literal(Search), Comp ) ;
}
//! "Nth" finder
/*!
Construct the \c nth_finder. The finder searches for the n-th (zero-indexed)
occurrence of the string in a given input.
The result is given as an \c iterator_range delimiting the match.
\param Search A substring to be searched for.
\param Nth An index of the match to be find
\param Comp An element comparison predicate
\return An instance of the \c nth_finder object
*/
template<typename RangeT>
inline detail::nth_finderF<
BOOST_STRING_TYPENAME range_const_iterator<RangeT>::type,
is_equal>
nth_finder(
const RangeT& Search,
int Nth)
{
return
detail::nth_finderF<
BOOST_STRING_TYPENAME
range_const_iterator<RangeT>::type,
is_equal>( ::boost::as_literal(Search), Nth, is_equal() ) ;
}
//! "Nth" finder
/*!
\overload
*/
template<typename RangeT, typename PredicateT>
inline detail::nth_finderF<
BOOST_STRING_TYPENAME range_const_iterator<RangeT>::type,
PredicateT>
nth_finder(
const RangeT& Search,
int Nth,
PredicateT Comp )
{
return
detail::nth_finderF<
BOOST_STRING_TYPENAME
range_const_iterator<RangeT>::type,
PredicateT>( ::boost::as_literal(Search), Nth, Comp );
}
//! "Head" finder
/*!
Construct the \c head_finder. The finder returns a head of a given
input. The head is a prefix of a string up to n elements in
size. If an input has less then n elements, whole input is
considered a head.
The result is given as an \c iterator_range delimiting the match.
\param N The size of the head
\return An instance of the \c head_finder object
*/
inline detail::head_finderF
head_finder( int N )
{
return detail::head_finderF(N);
}
//! "Tail" finder
/*!
Construct the \c tail_finder. The finder returns a tail of a given
input. The tail is a suffix of a string up to n elements in
size. If an input has less then n elements, whole input is
considered a head.
The result is given as an \c iterator_range delimiting the match.
\param N The size of the head
\return An instance of the \c tail_finder object
*/
inline detail::tail_finderF
tail_finder( int N )
{
return detail::tail_finderF(N);
}
//! "Token" finder
/*!
Construct the \c token_finder. The finder searches for a token
specified by a predicate. It is similar to std::find_if
algorithm, with an exception that it return a range of
instead of a single iterator.
If "compress token mode" is enabled, adjacent matching tokens are
concatenated into one match. Thus the finder can be used to
search for continuous segments of characters satisfying the
given predicate.
The result is given as an \c iterator_range delimiting the match.
\param Pred An element selection predicate
\param eCompress Compress flag
\return An instance of the \c token_finder object
*/
template< typename PredicateT >
inline detail::token_finderF<PredicateT>
token_finder(
PredicateT Pred,
token_compress_mode_type eCompress=token_compress_off )
{
return detail::token_finderF<PredicateT>( Pred, eCompress );
}
//! "Range" finder
/*!
Construct the \c range_finder. The finder does not perform
any operation. It simply returns the given range for
any input.
\param Begin Beginning of the range
\param End End of the range
\param Range The range.
\return An instance of the \c range_finger object
*/
template< typename ForwardIteratorT >
inline detail::range_finderF<ForwardIteratorT>
range_finder(
ForwardIteratorT Begin,
ForwardIteratorT End )
{
return detail::range_finderF<ForwardIteratorT>( Begin, End );
}
//! "Range" finder
/*!
\overload
*/
template< typename ForwardIteratorT >
inline detail::range_finderF<ForwardIteratorT>
range_finder( iterator_range<ForwardIteratorT> Range )
{
return detail::range_finderF<ForwardIteratorT>( Range );
}
} // namespace algorithm
// pull the names to the boost namespace
using algorithm::first_finder;
using algorithm::last_finder;
using algorithm::nth_finder;
using algorithm::head_finder;
using algorithm::tail_finder;
using algorithm::token_finder;
using algorithm::range_finder;
} // namespace boost
#endif // BOOST_STRING_FINDER_HPP
+103
View File
@@ -0,0 +1,103 @@
// Boost string_algo library formatter.hpp header file ---------------------------//
// Copyright Pavol Droba 2002-2003.
//
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
// See http://www.boost.org/ for updates, documentation, and revision history.
#ifndef BOOST_STRING_FORMATTER_HPP
#define BOOST_STRING_FORMATTER_HPP
#include <boost/detail/iterator.hpp>
#include <boost/range/value_type.hpp>
#include <boost/range/iterator_range.hpp>
#include <boost/range/as_literal.hpp>
#include <boost/algorithm/string/detail/formatter.hpp>
/*! \file
Defines Formatter generators. Formatter is a functor which formats
a string according to given parameters. A Formatter works
in conjunction with a Finder. A Finder can provide additional information
for a specific Formatter. An example of such a cooperation is regex_finder
and regex_formatter.
Formatters are used as pluggable components for replace facilities.
This header contains generator functions for the Formatters provided in this library.
*/
namespace boost {
namespace algorithm {
// generic formatters ---------------------------------------------------------------//
//! Constant formatter
/*!
Construct the \c const_formatter. Const formatter always returns
the same value, regardless of the parameter.
\param Format A predefined value used as a result for formating
\return An instance of the \c const_formatter object.
*/
template<typename RangeT>
inline detail::const_formatF<
iterator_range<
BOOST_STRING_TYPENAME range_const_iterator<RangeT>::type> >
const_formatter(const RangeT& Format)
{
return detail::const_formatF<
iterator_range<
BOOST_STRING_TYPENAME range_const_iterator<RangeT>::type> >(::boost::as_literal(Format));
}
//! Identity formatter
/*!
Construct the \c identity_formatter. Identity formatter always returns
the parameter.
\return An instance of the \c identity_formatter object.
*/
template<typename RangeT>
inline detail::identity_formatF<
iterator_range<
BOOST_STRING_TYPENAME range_const_iterator<RangeT>::type> >
identity_formatter()
{
return detail::identity_formatF<
iterator_range<
BOOST_STRING_TYPENAME range_const_iterator<RangeT>::type> >();
}
//! Empty formatter
/*!
Construct the \c empty_formatter. Empty formatter always returns an empty
sequence.
\param Input container used to select a correct value_type for the
resulting empty_container<>.
\return An instance of the \c empty_formatter object.
*/
template<typename RangeT>
inline detail::empty_formatF<
BOOST_STRING_TYPENAME range_value<RangeT>::type>
empty_formatter(const RangeT&)
{
return detail::empty_formatF<
BOOST_STRING_TYPENAME range_value<RangeT>::type>();
}
} // namespace algorithm
// pull the names to the boost namespace
using algorithm::const_formatter;
using algorithm::identity_formatter;
using algorithm::empty_formatter;
} // namespace boost
#endif // BOOST_FORMATTER_HPP
+193
View File
@@ -0,0 +1,193 @@
// Boost string_algo library iter_find.hpp header file ---------------------------//
// Copyright Pavol Droba 2002-2003.
//
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
// See http://www.boost.org/ for updates, documentation, and revision history.
#ifndef BOOST_STRING_ITER_FIND_HPP
#define BOOST_STRING_ITER_FIND_HPP
#include <boost/algorithm/string/config.hpp>
#include <algorithm>
#include <iterator>
#include <boost/iterator/transform_iterator.hpp>
#include <boost/range/iterator_range.hpp>
#include <boost/range/begin.hpp>
#include <boost/range/end.hpp>
#include <boost/range/iterator.hpp>
#include <boost/range/value_type.hpp>
#include <boost/range/as_literal.hpp>
#include <boost/algorithm/string/concept.hpp>
#include <boost/algorithm/string/find_iterator.hpp>
#include <boost/algorithm/string/detail/util.hpp>
/*! \file
Defines generic split algorithms. Split algorithms can be
used to divide a sequence into several part according
to a given criteria. Result is given as a 'container
of containers' where elements are copies or references
to extracted parts.
There are two algorithms provided. One iterates over matching
substrings, the other one over the gaps between these matches.
*/
namespace boost {
namespace algorithm {
// iterate find ---------------------------------------------------//
//! Iter find algorithm
/*!
This algorithm executes a given finder in iteration on the input,
until the end of input is reached, or no match is found.
Iteration is done using built-in find_iterator, so the real
searching is performed only when needed.
In each iteration new match is found and added to the result.
\param Result A 'container container' to contain the result of search.
Both outer and inner container must have constructor taking a pair
of iterators as an argument.
Typical type of the result is
\c std::vector<boost::iterator_range<iterator>>
(each element of such a vector will container a range delimiting
a match).
\param Input A container which will be searched.
\param Finder A Finder object used for searching
\return A reference the result
\note Prior content of the result will be overwritten.
*/
template<
typename SequenceSequenceT,
typename RangeT,
typename FinderT >
inline SequenceSequenceT&
iter_find(
SequenceSequenceT& Result,
RangeT& Input,
FinderT Finder )
{
BOOST_CONCEPT_ASSERT((
FinderConcept<
FinderT,
BOOST_STRING_TYPENAME range_iterator<RangeT>::type>
));
iterator_range<BOOST_STRING_TYPENAME range_iterator<RangeT>::type> lit_input(::boost::as_literal(Input));
typedef BOOST_STRING_TYPENAME
range_iterator<RangeT>::type input_iterator_type;
typedef find_iterator<input_iterator_type> find_iterator_type;
typedef detail::copy_iterator_rangeF<
BOOST_STRING_TYPENAME
range_value<SequenceSequenceT>::type,
input_iterator_type> copy_range_type;
input_iterator_type InputEnd=::boost::end(lit_input);
typedef transform_iterator<copy_range_type, find_iterator_type>
transform_iter_type;
transform_iter_type itBegin=
::boost::make_transform_iterator(
find_iterator_type( ::boost::begin(lit_input), InputEnd, Finder ),
copy_range_type());
transform_iter_type itEnd=
::boost::make_transform_iterator(
find_iterator_type(),
copy_range_type());
SequenceSequenceT Tmp(itBegin, itEnd);
Result.swap(Tmp);
return Result;
}
// iterate split ---------------------------------------------------//
//! Split find algorithm
/*!
This algorithm executes a given finder in iteration on the input,
until the end of input is reached, or no match is found.
Iteration is done using built-in find_iterator, so the real
searching is performed only when needed.
Each match is used as a separator of segments. These segments are then
returned in the result.
\param Result A 'container container' to container the result of search.
Both outer and inner container must have constructor taking a pair
of iterators as an argument.
Typical type of the result is
\c std::vector<boost::iterator_range<iterator>>
(each element of such a vector will container a range delimiting
a match).
\param Input A container which will be searched.
\param Finder A finder object used for searching
\return A reference the result
\note Prior content of the result will be overwritten.
*/
template<
typename SequenceSequenceT,
typename RangeT,
typename FinderT >
inline SequenceSequenceT&
iter_split(
SequenceSequenceT& Result,
RangeT& Input,
FinderT Finder )
{
BOOST_CONCEPT_ASSERT((
FinderConcept<FinderT,
BOOST_STRING_TYPENAME range_iterator<RangeT>::type>
));
iterator_range<BOOST_STRING_TYPENAME range_iterator<RangeT>::type> lit_input(::boost::as_literal(Input));
typedef BOOST_STRING_TYPENAME
range_iterator<RangeT>::type input_iterator_type;
typedef split_iterator<input_iterator_type> find_iterator_type;
typedef detail::copy_iterator_rangeF<
BOOST_STRING_TYPENAME
range_value<SequenceSequenceT>::type,
input_iterator_type> copy_range_type;
input_iterator_type InputEnd=::boost::end(lit_input);
typedef transform_iterator<copy_range_type, find_iterator_type>
transform_iter_type;
transform_iter_type itBegin=
::boost::make_transform_iterator(
find_iterator_type( ::boost::begin(lit_input), InputEnd, Finder ),
copy_range_type() );
transform_iter_type itEnd=
::boost::make_transform_iterator(
find_iterator_type(),
copy_range_type() );
SequenceSequenceT Tmp(itBegin, itEnd);
Result.swap(Tmp);
return Result;
}
} // namespace algorithm
// pull names to the boost namespace
using algorithm::iter_find;
using algorithm::iter_split;
} // namespace boost
#endif // BOOST_STRING_ITER_FIND_HPP
+145
View File
@@ -0,0 +1,145 @@
// Boost string_algo library join.hpp header file ---------------------------//
// Copyright Pavol Droba 2002-2006.
//
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
// See http://www.boost.org/ for updates, documentation, and revision history.
#ifndef BOOST_STRING_JOIN_HPP
#define BOOST_STRING_JOIN_HPP
#include <boost/algorithm/string/config.hpp>
#include <boost/algorithm/string/detail/sequence.hpp>
#include <boost/range/value_type.hpp>
#include <boost/range/as_literal.hpp>
/*! \file
Defines join algorithm.
Join algorithm is a counterpart to split algorithms.
It joins strings from a 'list' by adding user defined separator.
Additionally there is a version that allows simple filtering
by providing a predicate.
*/
namespace boost {
namespace algorithm {
// join --------------------------------------------------------------//
//! Join algorithm
/*!
This algorithm joins all strings in a 'list' into one long string.
Segments are concatenated by given separator.
\param Input A container that holds the input strings. It must be a container-of-containers.
\param Separator A string that will separate the joined segments.
\return Concatenated string.
\note This function provides the strong exception-safety guarantee
*/
template< typename SequenceSequenceT, typename Range1T>
inline typename range_value<SequenceSequenceT>::type
join(
const SequenceSequenceT& Input,
const Range1T& Separator)
{
// Define working types
typedef typename range_value<SequenceSequenceT>::type ResultT;
typedef typename range_const_iterator<SequenceSequenceT>::type InputIteratorT;
// Parse input
InputIteratorT itBegin=::boost::begin(Input);
InputIteratorT itEnd=::boost::end(Input);
// Construct container to hold the result
ResultT Result;
// Append first element
if(itBegin!=itEnd)
{
detail::insert(Result, ::boost::end(Result), *itBegin);
++itBegin;
}
for(;itBegin!=itEnd; ++itBegin)
{
// Add separator
detail::insert(Result, ::boost::end(Result), ::boost::as_literal(Separator));
// Add element
detail::insert(Result, ::boost::end(Result), *itBegin);
}
return Result;
}
// join_if ----------------------------------------------------------//
//! Conditional join algorithm
/*!
This algorithm joins all strings in a 'list' into one long string.
Segments are concatenated by given separator. Only segments that
satisfy the predicate will be added to the result.
\param Input A container that holds the input strings. It must be a container-of-containers.
\param Separator A string that will separate the joined segments.
\param Pred A segment selection predicate
\return Concatenated string.
\note This function provides the strong exception-safety guarantee
*/
template< typename SequenceSequenceT, typename Range1T, typename PredicateT>
inline typename range_value<SequenceSequenceT>::type
join_if(
const SequenceSequenceT& Input,
const Range1T& Separator,
PredicateT Pred)
{
// Define working types
typedef typename range_value<SequenceSequenceT>::type ResultT;
typedef typename range_const_iterator<SequenceSequenceT>::type InputIteratorT;
// Parse input
InputIteratorT itBegin=::boost::begin(Input);
InputIteratorT itEnd=::boost::end(Input);
// Construct container to hold the result
ResultT Result;
// Roll to the first element that will be added
while(itBegin!=itEnd && !Pred(*itBegin)) ++itBegin;
// Add this element
if(itBegin!=itEnd)
{
detail::insert(Result, ::boost::end(Result), *itBegin);
++itBegin;
}
for(;itBegin!=itEnd; ++itBegin)
{
if(Pred(*itBegin))
{
// Add separator
detail::insert(Result, ::boost::end(Result), ::boost::as_literal(Separator));
// Add element
detail::insert(Result, ::boost::end(Result), *itBegin);
}
}
return Result;
}
} // namespace algorithm
// pull names to the boost namespace
using algorithm::join;
using algorithm::join_if;
} // namespace boost
#endif // BOOST_STRING_JOIN_HPP
+475
View File
@@ -0,0 +1,475 @@
// Boost string_algo library predicate.hpp header file ---------------------------//
// Copyright Pavol Droba 2002-2003.
//
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
// See http://www.boost.org/ for updates, documentation, and revision history.
#ifndef BOOST_STRING_PREDICATE_HPP
#define BOOST_STRING_PREDICATE_HPP
#include <boost/algorithm/string/config.hpp>
#include <boost/range/begin.hpp>
#include <boost/range/end.hpp>
#include <boost/range/iterator.hpp>
#include <boost/range/const_iterator.hpp>
#include <boost/range/as_literal.hpp>
#include <boost/range/iterator_range.hpp>
#include <boost/algorithm/string/compare.hpp>
#include <boost/algorithm/string/find.hpp>
#include <boost/algorithm/string/detail/predicate.hpp>
/*! \file boost/algorithm/string/predicate.hpp
Defines string-related predicates.
The predicates determine whether a substring is contained in the input string
under various conditions: a string starts with the substring, ends with the
substring, simply contains the substring or if both strings are equal.
Additionaly the algorithm \c all() checks all elements of a container to satisfy a
condition.
All predicates provide the strong exception guarantee.
*/
namespace boost {
namespace algorithm {
// starts_with predicate -----------------------------------------------//
//! 'Starts with' predicate
/*!
This predicate holds when the test string is a prefix of the Input.
In other words, if the input starts with the test.
When the optional predicate is specified, it is used for character-wise
comparison.
\param Input An input sequence
\param Test A test sequence
\param Comp An element comparison predicate
\return The result of the test
\note This function provides the strong exception-safety guarantee
*/
template<typename Range1T, typename Range2T, typename PredicateT>
inline bool starts_with(
const Range1T& Input,
const Range2T& Test,
PredicateT Comp)
{
iterator_range<BOOST_STRING_TYPENAME range_const_iterator<Range1T>::type> lit_input(::boost::as_literal(Input));
iterator_range<BOOST_STRING_TYPENAME range_const_iterator<Range2T>::type> lit_test(::boost::as_literal(Test));
typedef BOOST_STRING_TYPENAME
range_const_iterator<Range1T>::type Iterator1T;
typedef BOOST_STRING_TYPENAME
range_const_iterator<Range2T>::type Iterator2T;
Iterator1T InputEnd=::boost::end(lit_input);
Iterator2T TestEnd=::boost::end(lit_test);
Iterator1T it=::boost::begin(lit_input);
Iterator2T pit=::boost::begin(lit_test);
for(;
it!=InputEnd && pit!=TestEnd;
++it,++pit)
{
if( !(Comp(*it,*pit)) )
return false;
}
return pit==TestEnd;
}
//! 'Starts with' predicate
/*!
\overload
*/
template<typename Range1T, typename Range2T>
inline bool starts_with(
const Range1T& Input,
const Range2T& Test)
{
return ::boost::algorithm::starts_with(Input, Test, is_equal());
}
//! 'Starts with' predicate ( case insensitive )
/*!
This predicate holds when the test string is a prefix of the Input.
In other words, if the input starts with the test.
Elements are compared case insensitively.
\param Input An input sequence
\param Test A test sequence
\param Loc A locale used for case insensitive comparison
\return The result of the test
\note This function provides the strong exception-safety guarantee
*/
template<typename Range1T, typename Range2T>
inline bool istarts_with(
const Range1T& Input,
const Range2T& Test,
const std::locale& Loc=std::locale())
{
return ::boost::algorithm::starts_with(Input, Test, is_iequal(Loc));
}
// ends_with predicate -----------------------------------------------//
//! 'Ends with' predicate
/*!
This predicate holds when the test string is a suffix of the Input.
In other words, if the input ends with the test.
When the optional predicate is specified, it is used for character-wise
comparison.
\param Input An input sequence
\param Test A test sequence
\param Comp An element comparison predicate
\return The result of the test
\note This function provides the strong exception-safety guarantee
*/
template<typename Range1T, typename Range2T, typename PredicateT>
inline bool ends_with(
const Range1T& Input,
const Range2T& Test,
PredicateT Comp)
{
iterator_range<BOOST_STRING_TYPENAME range_const_iterator<Range1T>::type> lit_input(::boost::as_literal(Input));
iterator_range<BOOST_STRING_TYPENAME range_const_iterator<Range2T>::type> lit_test(::boost::as_literal(Test));
typedef BOOST_STRING_TYPENAME
range_const_iterator<Range1T>::type Iterator1T;
typedef BOOST_STRING_TYPENAME boost::detail::
iterator_traits<Iterator1T>::iterator_category category;
return detail::
ends_with_iter_select(
::boost::begin(lit_input),
::boost::end(lit_input),
::boost::begin(lit_test),
::boost::end(lit_test),
Comp,
category());
}
//! 'Ends with' predicate
/*!
\overload
*/
template<typename Range1T, typename Range2T>
inline bool ends_with(
const Range1T& Input,
const Range2T& Test)
{
return ::boost::algorithm::ends_with(Input, Test, is_equal());
}
//! 'Ends with' predicate ( case insensitive )
/*!
This predicate holds when the test container is a suffix of the Input.
In other words, if the input ends with the test.
Elements are compared case insensitively.
\param Input An input sequence
\param Test A test sequence
\param Loc A locale used for case insensitive comparison
\return The result of the test
\note This function provides the strong exception-safety guarantee
*/
template<typename Range1T, typename Range2T>
inline bool iends_with(
const Range1T& Input,
const Range2T& Test,
const std::locale& Loc=std::locale())
{
return ::boost::algorithm::ends_with(Input, Test, is_iequal(Loc));
}
// contains predicate -----------------------------------------------//
//! 'Contains' predicate
/*!
This predicate holds when the test container is contained in the Input.
When the optional predicate is specified, it is used for character-wise
comparison.
\param Input An input sequence
\param Test A test sequence
\param Comp An element comparison predicate
\return The result of the test
\note This function provides the strong exception-safety guarantee
*/
template<typename Range1T, typename Range2T, typename PredicateT>
inline bool contains(
const Range1T& Input,
const Range2T& Test,
PredicateT Comp)
{
iterator_range<BOOST_STRING_TYPENAME range_const_iterator<Range1T>::type> lit_input(::boost::as_literal(Input));
iterator_range<BOOST_STRING_TYPENAME range_const_iterator<Range2T>::type> lit_test(::boost::as_literal(Test));
if (::boost::empty(lit_test))
{
// Empty range is contained always
return true;
}
// Use the temporary variable to make VACPP happy
bool bResult=(::boost::algorithm::first_finder(lit_test,Comp)(::boost::begin(lit_input), ::boost::end(lit_input)));
return bResult;
}
//! 'Contains' predicate
/*!
\overload
*/
template<typename Range1T, typename Range2T>
inline bool contains(
const Range1T& Input,
const Range2T& Test)
{
return ::boost::algorithm::contains(Input, Test, is_equal());
}
//! 'Contains' predicate ( case insensitive )
/*!
This predicate holds when the test container is contained in the Input.
Elements are compared case insensitively.
\param Input An input sequence
\param Test A test sequence
\param Loc A locale used for case insensitive comparison
\return The result of the test
\note This function provides the strong exception-safety guarantee
*/
template<typename Range1T, typename Range2T>
inline bool icontains(
const Range1T& Input,
const Range2T& Test,
const std::locale& Loc=std::locale())
{
return ::boost::algorithm::contains(Input, Test, is_iequal(Loc));
}
// equals predicate -----------------------------------------------//
//! 'Equals' predicate
/*!
This predicate holds when the test container is equal to the
input container i.e. all elements in both containers are same.
When the optional predicate is specified, it is used for character-wise
comparison.
\param Input An input sequence
\param Test A test sequence
\param Comp An element comparison predicate
\return The result of the test
\note This is a two-way version of \c std::equal algorithm
\note This function provides the strong exception-safety guarantee
*/
template<typename Range1T, typename Range2T, typename PredicateT>
inline bool equals(
const Range1T& Input,
const Range2T& Test,
PredicateT Comp)
{
iterator_range<BOOST_STRING_TYPENAME range_const_iterator<Range1T>::type> lit_input(::boost::as_literal(Input));
iterator_range<BOOST_STRING_TYPENAME range_const_iterator<Range2T>::type> lit_test(::boost::as_literal(Test));
typedef BOOST_STRING_TYPENAME
range_const_iterator<Range1T>::type Iterator1T;
typedef BOOST_STRING_TYPENAME
range_const_iterator<Range2T>::type Iterator2T;
Iterator1T InputEnd=::boost::end(lit_input);
Iterator2T TestEnd=::boost::end(lit_test);
Iterator1T it=::boost::begin(lit_input);
Iterator2T pit=::boost::begin(lit_test);
for(;
it!=InputEnd && pit!=TestEnd;
++it,++pit)
{
if( !(Comp(*it,*pit)) )
return false;
}
return (pit==TestEnd) && (it==InputEnd);
}
//! 'Equals' predicate
/*!
\overload
*/
template<typename Range1T, typename Range2T>
inline bool equals(
const Range1T& Input,
const Range2T& Test)
{
return ::boost::algorithm::equals(Input, Test, is_equal());
}
//! 'Equals' predicate ( case insensitive )
/*!
This predicate holds when the test container is equal to the
input container i.e. all elements in both containers are same.
Elements are compared case insensitively.
\param Input An input sequence
\param Test A test sequence
\param Loc A locale used for case insensitive comparison
\return The result of the test
\note This is a two-way version of \c std::equal algorithm
\note This function provides the strong exception-safety guarantee
*/
template<typename Range1T, typename Range2T>
inline bool iequals(
const Range1T& Input,
const Range2T& Test,
const std::locale& Loc=std::locale())
{
return ::boost::algorithm::equals(Input, Test, is_iequal(Loc));
}
// lexicographical_compare predicate -----------------------------//
//! Lexicographical compare predicate
/*!
This predicate is an overload of std::lexicographical_compare
for range arguments
It check whether the first argument is lexicographically less
then the second one.
If the optional predicate is specified, it is used for character-wise
comparison
\param Arg1 First argument
\param Arg2 Second argument
\param Pred Comparison predicate
\return The result of the test
\note This function provides the strong exception-safety guarantee
*/
template<typename Range1T, typename Range2T, typename PredicateT>
inline bool lexicographical_compare(
const Range1T& Arg1,
const Range2T& Arg2,
PredicateT Pred)
{
iterator_range<BOOST_STRING_TYPENAME range_const_iterator<Range1T>::type> lit_arg1(::boost::as_literal(Arg1));
iterator_range<BOOST_STRING_TYPENAME range_const_iterator<Range2T>::type> lit_arg2(::boost::as_literal(Arg2));
return std::lexicographical_compare(
::boost::begin(lit_arg1),
::boost::end(lit_arg1),
::boost::begin(lit_arg2),
::boost::end(lit_arg2),
Pred);
}
//! Lexicographical compare predicate
/*!
\overload
*/
template<typename Range1T, typename Range2T>
inline bool lexicographical_compare(
const Range1T& Arg1,
const Range2T& Arg2)
{
return ::boost::algorithm::lexicographical_compare(Arg1, Arg2, is_less());
}
//! Lexicographical compare predicate (case-insensitive)
/*!
This predicate is an overload of std::lexicographical_compare
for range arguments.
It check whether the first argument is lexicographically less
then the second one.
Elements are compared case insensitively
\param Arg1 First argument
\param Arg2 Second argument
\param Loc A locale used for case insensitive comparison
\return The result of the test
\note This function provides the strong exception-safety guarantee
*/
template<typename Range1T, typename Range2T>
inline bool ilexicographical_compare(
const Range1T& Arg1,
const Range2T& Arg2,
const std::locale& Loc=std::locale())
{
return ::boost::algorithm::lexicographical_compare(Arg1, Arg2, is_iless(Loc));
}
// all predicate -----------------------------------------------//
//! 'All' predicate
/*!
This predicate holds it all its elements satisfy a given
condition, represented by the predicate.
\param Input An input sequence
\param Pred A predicate
\return The result of the test
\note This function provides the strong exception-safety guarantee
*/
template<typename RangeT, typename PredicateT>
inline bool all(
const RangeT& Input,
PredicateT Pred)
{
iterator_range<BOOST_STRING_TYPENAME range_const_iterator<RangeT>::type> lit_input(::boost::as_literal(Input));
typedef BOOST_STRING_TYPENAME
range_const_iterator<RangeT>::type Iterator1T;
Iterator1T InputEnd=::boost::end(lit_input);
for( Iterator1T It=::boost::begin(lit_input); It!=InputEnd; ++It)
{
if (!Pred(*It))
return false;
}
return true;
}
} // namespace algorithm
// pull names to the boost namespace
using algorithm::starts_with;
using algorithm::istarts_with;
using algorithm::ends_with;
using algorithm::iends_with;
using algorithm::contains;
using algorithm::icontains;
using algorithm::equals;
using algorithm::iequals;
using algorithm::all;
using algorithm::lexicographical_compare;
using algorithm::ilexicographical_compare;
} // namespace boost
#endif // BOOST_STRING_PREDICATE_HPP
@@ -0,0 +1,42 @@
// Boost string_algo library predicate_facade.hpp header file ---------------------------//
// Copyright Pavol Droba 2002-2003.
//
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
// See http://www.boost.org/ for updates, documentation, and revision history.
#ifndef BOOST_STRING_PREDICATE_FACADE_HPP
#define BOOST_STRING_PREDICATE_FACADE_HPP
#include <boost/algorithm/string/config.hpp>
/*
\file boost/algorith/string/predicate_facade.hpp
This file containes predicate_facade definition. This template class is used
to identify classification predicates, so they can be combined using
composition operators.
*/
namespace boost {
namespace algorithm {
// predicate facade ------------------------------------------------------//
//! Predicate facade
/*!
This class allows to recognize classification
predicates, so that they can be combined using
composition operators.
Every classification predicate must be derived from this class.
*/
template<typename Derived>
struct predicate_facade {};
} // namespace algorithm
} // namespace boost
#endif // BOOST_STRING_CLASSIFICATION_DETAIL_HPP
+646
View File
@@ -0,0 +1,646 @@
// Boost string_algo library regex.hpp header file ---------------------------//
// Copyright Pavol Droba 2002-2003.
//
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
// See http://www.boost.org/ for updates, documentation, and revision history.
#ifndef BOOST_STRING_REGEX_HPP
#define BOOST_STRING_REGEX_HPP
#include <boost/algorithm/string/config.hpp>
#include <boost/regex.hpp>
#include <boost/range/iterator_range.hpp>
#include <boost/range/begin.hpp>
#include <boost/range/end.hpp>
#include <boost/range/iterator.hpp>
#include <boost/range/as_literal.hpp>
#include <boost/algorithm/string/find_format.hpp>
#include <boost/algorithm/string/regex_find_format.hpp>
#include <boost/algorithm/string/formatter.hpp>
#include <boost/algorithm/string/iter_find.hpp>
/*! \file
Defines regex variants of the algorithms.
*/
namespace boost {
namespace algorithm {
// find_regex -----------------------------------------------//
//! Find regex algorithm
/*!
Search for a substring matching the given regex in the input.
\param Input A container which will be searched.
\param Rx A regular expression
\param Flags Regex options
\return
An \c iterator_range delimiting the match.
Returned iterator is either \c RangeT::iterator or
\c RangeT::const_iterator, depending on the constness of
the input parameter.
\note This function provides the strong exception-safety guarantee
*/
template<
typename RangeT,
typename CharT,
typename RegexTraitsT>
inline iterator_range<
BOOST_STRING_TYPENAME range_iterator<RangeT>::type >
find_regex(
RangeT& Input,
const basic_regex<CharT, RegexTraitsT>& Rx,
match_flag_type Flags=match_default )
{
iterator_range<BOOST_STRING_TYPENAME range_iterator<RangeT>::type> lit_input(::boost::as_literal(Input));
return ::boost::algorithm::regex_finder(Rx,Flags)(
::boost::begin(lit_input), ::boost::end(lit_input) );
}
// replace_regex --------------------------------------------------------------------//
//! Replace regex algorithm
/*!
Search for a substring matching given regex and format it with
the specified format.
The result is a modified copy of the input. It is returned as a sequence
or copied to the output iterator.
\param Output An output iterator to which the result will be copied
\param Input An input string
\param Rx A regular expression
\param Format Regex format definition
\param Flags Regex options
\return An output iterator pointing just after the last inserted character or
a modified copy of the input
\note The second variant of this function provides the strong exception-safety guarantee
*/
template<
typename OutputIteratorT,
typename RangeT,
typename CharT,
typename RegexTraitsT,
typename FormatStringTraitsT, typename FormatStringAllocatorT >
inline OutputIteratorT replace_regex_copy(
OutputIteratorT Output,
const RangeT& Input,
const basic_regex<CharT, RegexTraitsT>& Rx,
const std::basic_string<CharT, FormatStringTraitsT, FormatStringAllocatorT>& Format,
match_flag_type Flags=match_default | format_default )
{
return ::boost::algorithm::find_format_copy(
Output,
Input,
::boost::algorithm::regex_finder( Rx, Flags ),
::boost::algorithm::regex_formatter( Format, Flags ) );
}
//! Replace regex algorithm
/*!
\overload
*/
template<
typename SequenceT,
typename CharT,
typename RegexTraitsT,
typename FormatStringTraitsT, typename FormatStringAllocatorT >
inline SequenceT replace_regex_copy(
const SequenceT& Input,
const basic_regex<CharT, RegexTraitsT>& Rx,
const std::basic_string<CharT, FormatStringTraitsT, FormatStringAllocatorT>& Format,
match_flag_type Flags=match_default | format_default )
{
return ::boost::algorithm::find_format_copy(
Input,
::boost::algorithm::regex_finder( Rx, Flags ),
::boost::algorithm::regex_formatter( Format, Flags ) );
}
//! Replace regex algorithm
/*!
Search for a substring matching given regex and format it with
the specified format. The input string is modified in-place.
\param Input An input string
\param Rx A regular expression
\param Format Regex format definition
\param Flags Regex options
*/
template<
typename SequenceT,
typename CharT,
typename RegexTraitsT,
typename FormatStringTraitsT, typename FormatStringAllocatorT >
inline void replace_regex(
SequenceT& Input,
const basic_regex<CharT, RegexTraitsT>& Rx,
const std::basic_string<CharT, FormatStringTraitsT, FormatStringAllocatorT>& Format,
match_flag_type Flags=match_default | format_default )
{
::boost::algorithm::find_format(
Input,
::boost::algorithm::regex_finder( Rx, Flags ),
::boost::algorithm::regex_formatter( Format, Flags ) );
}
// replace_all_regex --------------------------------------------------------------------//
//! Replace all regex algorithm
/*!
Format all substrings, matching given regex, with the specified format.
The result is a modified copy of the input. It is returned as a sequence
or copied to the output iterator.
\param Output An output iterator to which the result will be copied
\param Input An input string
\param Rx A regular expression
\param Format Regex format definition
\param Flags Regex options
\return An output iterator pointing just after the last inserted character or
a modified copy of the input
\note The second variant of this function provides the strong exception-safety guarantee
*/
template<
typename OutputIteratorT,
typename RangeT,
typename CharT,
typename RegexTraitsT,
typename FormatStringTraitsT, typename FormatStringAllocatorT >
inline OutputIteratorT replace_all_regex_copy(
OutputIteratorT Output,
const RangeT& Input,
const basic_regex<CharT, RegexTraitsT>& Rx,
const std::basic_string<CharT, FormatStringTraitsT, FormatStringAllocatorT>& Format,
match_flag_type Flags=match_default | format_default )
{
return ::boost::algorithm::find_format_all_copy(
Output,
Input,
::boost::algorithm::regex_finder( Rx, Flags ),
::boost::algorithm::regex_formatter( Format, Flags ) );
}
//! Replace all regex algorithm
/*!
\overload
*/
template<
typename SequenceT,
typename CharT,
typename RegexTraitsT,
typename FormatStringTraitsT, typename FormatStringAllocatorT >
inline SequenceT replace_all_regex_copy(
const SequenceT& Input,
const basic_regex<CharT, RegexTraitsT>& Rx,
const std::basic_string<CharT, FormatStringTraitsT, FormatStringAllocatorT>& Format,
match_flag_type Flags=match_default | format_default )
{
return ::boost::algorithm::find_format_all_copy(
Input,
::boost::algorithm::regex_finder( Rx, Flags ),
::boost::algorithm::regex_formatter( Format, Flags ) );
}
//! Replace all regex algorithm
/*!
Format all substrings, matching given regex, with the specified format.
The input string is modified in-place.
\param Input An input string
\param Rx A regular expression
\param Format Regex format definition
\param Flags Regex options
*/
template<
typename SequenceT,
typename CharT,
typename RegexTraitsT,
typename FormatStringTraitsT, typename FormatStringAllocatorT >
inline void replace_all_regex(
SequenceT& Input,
const basic_regex<CharT, RegexTraitsT>& Rx,
const std::basic_string<CharT, FormatStringTraitsT, FormatStringAllocatorT>& Format,
match_flag_type Flags=match_default | format_default )
{
::boost::algorithm::find_format_all(
Input,
::boost::algorithm::regex_finder( Rx, Flags ),
::boost::algorithm::regex_formatter( Format, Flags ) );
}
// erase_regex --------------------------------------------------------------------//
//! Erase regex algorithm
/*!
Remove a substring matching given regex from the input.
The result is a modified copy of the input. It is returned as a sequence
or copied to the output iterator.
\param Output An output iterator to which the result will be copied
\param Input An input string
\param Rx A regular expression
\param Flags Regex options
\return An output iterator pointing just after the last inserted character or
a modified copy of the input
\note The second variant of this function provides the strong exception-safety guarantee
*/
template<
typename OutputIteratorT,
typename RangeT,
typename CharT,
typename RegexTraitsT >
inline OutputIteratorT erase_regex_copy(
OutputIteratorT Output,
const RangeT& Input,
const basic_regex<CharT, RegexTraitsT>& Rx,
match_flag_type Flags=match_default )
{
return ::boost::algorithm::find_format_copy(
Output,
Input,
::boost::algorithm::regex_finder( Rx, Flags ),
::boost::algorithm::empty_formatter( Input ) );
}
//! Erase regex algorithm
/*!
\overload
*/
template<
typename SequenceT,
typename CharT,
typename RegexTraitsT >
inline SequenceT erase_regex_copy(
const SequenceT& Input,
const basic_regex<CharT, RegexTraitsT>& Rx,
match_flag_type Flags=match_default )
{
return ::boost::algorithm::find_format_copy(
Input,
::boost::algorithm::regex_finder( Rx, Flags ),
::boost::algorithm::empty_formatter( Input ) );
}
//! Erase regex algorithm
/*!
Remove a substring matching given regex from the input.
The input string is modified in-place.
\param Input An input string
\param Rx A regular expression
\param Flags Regex options
*/
template<
typename SequenceT,
typename CharT,
typename RegexTraitsT >
inline void erase_regex(
SequenceT& Input,
const basic_regex<CharT, RegexTraitsT>& Rx,
match_flag_type Flags=match_default )
{
::boost::algorithm::find_format(
Input,
::boost::algorithm::regex_finder( Rx, Flags ),
::boost::algorithm::empty_formatter( Input ) );
}
// erase_all_regex --------------------------------------------------------------------//
//! Erase all regex algorithm
/*!
Erase all substrings, matching given regex, from the input.
The result is a modified copy of the input. It is returned as a sequence
or copied to the output iterator.
\param Output An output iterator to which the result will be copied
\param Input An input string
\param Rx A regular expression
\param Flags Regex options
\return An output iterator pointing just after the last inserted character or
a modified copy of the input
\note The second variant of this function provides the strong exception-safety guarantee
*/
template<
typename OutputIteratorT,
typename RangeT,
typename CharT,
typename RegexTraitsT >
inline OutputIteratorT erase_all_regex_copy(
OutputIteratorT Output,
const RangeT& Input,
const basic_regex<CharT, RegexTraitsT>& Rx,
match_flag_type Flags=match_default )
{
return ::boost::algorithm::find_format_all_copy(
Output,
Input,
::boost::algorithm::regex_finder( Rx, Flags ),
::boost::algorithm::empty_formatter( Input ) );
}
//! Erase all regex algorithm
/*!
\overload
*/
template<
typename SequenceT,
typename CharT,
typename RegexTraitsT >
inline SequenceT erase_all_regex_copy(
const SequenceT& Input,
const basic_regex<CharT, RegexTraitsT>& Rx,
match_flag_type Flags=match_default )
{
return ::boost::algorithm::find_format_all_copy(
Input,
::boost::algorithm::regex_finder( Rx, Flags ),
::boost::algorithm::empty_formatter( Input ) );
}
//! Erase all regex algorithm
/*!
Erase all substrings, matching given regex, from the input.
The input string is modified in-place.
\param Input An input string
\param Rx A regular expression
\param Flags Regex options
*/
template<
typename SequenceT,
typename CharT,
typename RegexTraitsT>
inline void erase_all_regex(
SequenceT& Input,
const basic_regex<CharT, RegexTraitsT>& Rx,
match_flag_type Flags=match_default )
{
::boost::algorithm::find_format_all(
Input,
::boost::algorithm::regex_finder( Rx, Flags ),
::boost::algorithm::empty_formatter( Input ) );
}
// find_all_regex ------------------------------------------------------------------//
//! Find all regex algorithm
/*!
This algorithm finds all substrings matching the give regex
in the input.
Each part is copied and added as a new element to the output container.
Thus the result container must be able to hold copies
of the matches (in a compatible structure like std::string) or
a reference to it (e.g. using the iterator range class).
Examples of such a container are \c std::vector<std::string>
or \c std::list<boost::iterator_range<std::string::iterator>>
\param Result A container that can hold copies of references to the substrings.
\param Input A container which will be searched.
\param Rx A regular expression
\param Flags Regex options
\return A reference to the result
\note Prior content of the result will be overwritten.
\note This function provides the strong exception-safety guarantee
*/
template<
typename SequenceSequenceT,
typename RangeT,
typename CharT,
typename RegexTraitsT >
inline SequenceSequenceT& find_all_regex(
SequenceSequenceT& Result,
const RangeT& Input,
const basic_regex<CharT, RegexTraitsT>& Rx,
match_flag_type Flags=match_default )
{
return ::boost::algorithm::iter_find(
Result,
Input,
::boost::algorithm::regex_finder(Rx,Flags) );
}
// split_regex ------------------------------------------------------------------//
//! Split regex algorithm
/*!
Tokenize expression. This function is equivalent to C strtok. Input
sequence is split into tokens, separated by separators. Separator
is an every match of the given regex.
Each part is copied and added as a new element to the output container.
Thus the result container must be able to hold copies
of the matches (in a compatible structure like std::string) or
a reference to it (e.g. using the iterator range class).
Examples of such a container are \c std::vector<std::string>
or \c std::list<boost::iterator_range<std::string::iterator>>
\param Result A container that can hold copies of references to the substrings.
\param Input A container which will be searched.
\param Rx A regular expression
\param Flags Regex options
\return A reference to the result
\note Prior content of the result will be overwritten.
\note This function provides the strong exception-safety guarantee
*/
template<
typename SequenceSequenceT,
typename RangeT,
typename CharT,
typename RegexTraitsT >
inline SequenceSequenceT& split_regex(
SequenceSequenceT& Result,
const RangeT& Input,
const basic_regex<CharT, RegexTraitsT>& Rx,
match_flag_type Flags=match_default )
{
return ::boost::algorithm::iter_split(
Result,
Input,
::boost::algorithm::regex_finder(Rx,Flags) );
}
// join_if ------------------------------------------------------------------//
#ifndef BOOST_NO_FUNCTION_TEMPLATE_ORDERING
//! Conditional join algorithm
/*!
This algorithm joins all strings in a 'list' into one long string.
Segments are concatenated by given separator. Only segments that
match the given regular expression will be added to the result
This is a specialization of join_if algorithm.
\param Input A container that holds the input strings. It must be a container-of-containers.
\param Separator A string that will separate the joined segments.
\param Rx A regular expression
\param Flags Regex options
\return Concatenated string.
\note This function provides the strong exception-safety guarantee
*/
template<
typename SequenceSequenceT,
typename Range1T,
typename CharT,
typename RegexTraitsT >
inline typename range_value<SequenceSequenceT>::type
join_if(
const SequenceSequenceT& Input,
const Range1T& Separator,
const basic_regex<CharT, RegexTraitsT>& Rx,
match_flag_type Flags=match_default )
{
// Define working types
typedef typename range_value<SequenceSequenceT>::type ResultT;
typedef typename range_const_iterator<SequenceSequenceT>::type InputIteratorT;
// Parse input
InputIteratorT itBegin=::boost::begin(Input);
InputIteratorT itEnd=::boost::end(Input);
// Construct container to hold the result
ResultT Result;
// Roll to the first element that will be added
while(
itBegin!=itEnd &&
!::boost::regex_match(::boost::begin(*itBegin), ::boost::end(*itBegin), Rx, Flags)) ++itBegin;
// Add this element
if(itBegin!=itEnd)
{
detail::insert(Result, ::boost::end(Result), *itBegin);
++itBegin;
}
for(;itBegin!=itEnd; ++itBegin)
{
if(::boost::regex_match(::boost::begin(*itBegin), ::boost::end(*itBegin), Rx, Flags))
{
// Add separator
detail::insert(Result, ::boost::end(Result), ::boost::as_literal(Separator));
// Add element
detail::insert(Result, ::boost::end(Result), *itBegin);
}
}
return Result;
}
#else // BOOST_NO_FUNCTION_TEMPLATE_ORDERING
//! Conditional join algorithm
/*!
This algorithm joins all strings in a 'list' into one long string.
Segments are concatenated by given separator. Only segments that
match the given regular expression will be added to the result
This is a specialization of join_if algorithm.
\param Input A container that holds the input strings. It must be a container-of-containers.
\param Separator A string that will separate the joined segments.
\param Rx A regular expression
\param Flags Regex options
\return Concatenated string.
\note This function provides the strong exception-safety guarantee
*/
template<
typename SequenceSequenceT,
typename Range1T,
typename CharT,
typename RegexTraitsT >
inline typename range_value<SequenceSequenceT>::type
join_if_regex(
const SequenceSequenceT& Input,
const Range1T& Separator,
const basic_regex<CharT, RegexTraitsT>& Rx,
match_flag_type Flags=match_default )
{
// Define working types
typedef typename range_value<SequenceSequenceT>::type ResultT;
typedef typename range_const_iterator<SequenceSequenceT>::type InputIteratorT;
// Parse input
InputIteratorT itBegin=::boost::begin(Input);
InputIteratorT itEnd=::boost::end(Input);
// Construct container to hold the result
ResultT Result;
// Roll to the first element that will be added
while(
itBegin!=itEnd &&
!::boost::regex_match(::boost::begin(*itBegin), ::boost::end(*itBegin), Rx, Flags)) ++itBegin;
// Add this element
if(itBegin!=itEnd)
{
detail::insert(Result, ::boost::end(Result), *itBegin);
++itBegin;
}
for(;itBegin!=itEnd; ++itBegin)
{
if(::boost::regex_match(::boost::begin(*itBegin), ::boost::end(*itBegin), Rx, Flags))
{
// Add separator
detail::insert(Result, ::boost::end(Result), ::boost::as_literal(Separator));
// Add element
detail::insert(Result, ::boost::end(Result), *itBegin);
}
}
return Result;
}
#endif // BOOST_NO_FUNCTION_TEMPLATE_ORDERING
} // namespace algorithm
// pull names into the boost namespace
using algorithm::find_regex;
using algorithm::replace_regex;
using algorithm::replace_regex_copy;
using algorithm::replace_all_regex;
using algorithm::replace_all_regex_copy;
using algorithm::erase_regex;
using algorithm::erase_regex_copy;
using algorithm::erase_all_regex;
using algorithm::erase_all_regex_copy;
using algorithm::find_all_regex;
using algorithm::split_regex;
#ifndef BOOST_NO_FUNCTION_TEMPLATE_ORDERING
using algorithm::join_if;
#else // BOOST_NO_FUNCTION_TEMPLATE_ORDERING
using algorithm::join_if_regex;
#endif // BOOST_NO_FUNCTION_TEMPLATE_ORDERING
} // namespace boost
#endif // BOOST_STRING_REGEX_HPP
@@ -0,0 +1,90 @@
// Boost string_algo library regex_find_format.hpp header file ---------------------------//
// Copyright Pavol Droba 2002-2003.
//
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
// See http://www.boost.org/ for updates, documentation, and revision history.
#ifndef BOOST_STRING_REGEX_FIND_FORMAT_HPP
#define BOOST_STRING_REGEX_FIND_FORMAT_HPP
#include <boost/algorithm/string/config.hpp>
#include <boost/regex.hpp>
#include <boost/algorithm/string/detail/finder_regex.hpp>
#include <boost/algorithm/string/detail/formatter_regex.hpp>
/*! \file
Defines the \c regex_finder and \c regex_formatter generators. These two functors
are designed to work together. \c regex_formatter uses additional information
about a match contained in the regex_finder search result.
*/
namespace boost {
namespace algorithm {
// regex_finder -----------------------------------------------//
//! "Regex" finder
/*!
Construct the \c regex_finder. Finder uses the regex engine to search
for a match.
Result is given in \c regex_search_result. This is an extension
of the iterator_range. In addition it containes match results
from the \c regex_search algorithm.
\param Rx A regular expression
\param MatchFlags Regex search options
\return An instance of the \c regex_finder object
*/
template<
typename CharT,
typename RegexTraitsT>
inline detail::find_regexF< basic_regex<CharT, RegexTraitsT> >
regex_finder(
const basic_regex<CharT, RegexTraitsT>& Rx,
match_flag_type MatchFlags=match_default )
{
return detail::
find_regexF<
basic_regex<CharT, RegexTraitsT> >( Rx, MatchFlags );
}
// regex_formater ---------------------------------------------//
//! Regex formatter
/*!
Construct the \c regex_formatter. Regex formatter uses the regex engine to
format a match found by the \c regex_finder.
This formatted it designed to closely cooperate with \c regex_finder.
\param Format Regex format definition
\param Flags Format flags
\return An instance of the \c regex_formatter functor
*/
template<
typename CharT,
typename TraitsT, typename AllocT >
inline detail::regex_formatF< std::basic_string< CharT, TraitsT, AllocT > >
regex_formatter(
const std::basic_string<CharT, TraitsT, AllocT>& Format,
match_flag_type Flags=format_default )
{
return
detail::regex_formatF< std::basic_string<CharT, TraitsT, AllocT> >(
Format,
Flags );
}
} // namespace algorithm
// pull the names to the boost namespace
using algorithm::regex_finder;
using algorithm::regex_formatter;
} // namespace boost
#endif // BOOST_STRING_REGEX_FIND_FORMAT_HPP
+928
View File
@@ -0,0 +1,928 @@
// Boost string_algo library replace.hpp header file ---------------------------//
// Copyright Pavol Droba 2002-2006.
//
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
// See http://www.boost.org/ for updates, documentation, and revision history.
#ifndef BOOST_STRING_REPLACE_HPP
#define BOOST_STRING_REPLACE_HPP
#include <boost/algorithm/string/config.hpp>
#include <boost/range/iterator_range.hpp>
#include <boost/range/begin.hpp>
#include <boost/range/end.hpp>
#include <boost/range/iterator.hpp>
#include <boost/range/const_iterator.hpp>
#include <boost/algorithm/string/find_format.hpp>
#include <boost/algorithm/string/finder.hpp>
#include <boost/algorithm/string/formatter.hpp>
#include <boost/algorithm/string/compare.hpp>
/*! \file
Defines various replace algorithms. Each algorithm replaces
part(s) of the input according to set of searching and replace criteria.
*/
namespace boost {
namespace algorithm {
// replace_range --------------------------------------------------------------------//
//! Replace range algorithm
/*!
Replace the given range in the input string.
The result is a modified copy of the input. It is returned as a sequence
or copied to the output iterator.
\param Output An output iterator to which the result will be copied
\param Input An input string
\param SearchRange A range in the input to be substituted
\param Format A substitute string
\return An output iterator pointing just after the last inserted character or
a modified copy of the input
\note The second variant of this function provides the strong exception-safety guarantee
*/
template<
typename OutputIteratorT,
typename Range1T,
typename Range2T>
inline OutputIteratorT replace_range_copy(
OutputIteratorT Output,
const Range1T& Input,
const iterator_range<
BOOST_STRING_TYPENAME
range_const_iterator<Range1T>::type>& SearchRange,
const Range2T& Format)
{
return ::boost::algorithm::find_format_copy(
Output,
Input,
::boost::algorithm::range_finder(SearchRange),
::boost::algorithm::const_formatter(Format));
}
//! Replace range algorithm
/*!
\overload
*/
template<typename SequenceT, typename RangeT>
inline SequenceT replace_range_copy(
const SequenceT& Input,
const iterator_range<
BOOST_STRING_TYPENAME
range_const_iterator<SequenceT>::type>& SearchRange,
const RangeT& Format)
{
return ::boost::algorithm::find_format_copy(
Input,
::boost::algorithm::range_finder(SearchRange),
::boost::algorithm::const_formatter(Format));
}
//! Replace range algorithm
/*!
Replace the given range in the input string.
The input sequence is modified in-place.
\param Input An input string
\param SearchRange A range in the input to be substituted
\param Format A substitute string
*/
template<typename SequenceT, typename RangeT>
inline void replace_range(
SequenceT& Input,
const iterator_range<
BOOST_STRING_TYPENAME
range_iterator<SequenceT>::type>& SearchRange,
const RangeT& Format)
{
::boost::algorithm::find_format(
Input,
::boost::algorithm::range_finder(SearchRange),
::boost::algorithm::const_formatter(Format));
}
// replace_first --------------------------------------------------------------------//
//! Replace first algorithm
/*!
Replace the first match of the search substring in the input
with the format string.
The result is a modified copy of the input. It is returned as a sequence
or copied to the output iterator.
\param Output An output iterator to which the result will be copied
\param Input An input string
\param Search A substring to be searched for
\param Format A substitute string
\return An output iterator pointing just after the last inserted character or
a modified copy of the input
\note The second variant of this function provides the strong exception-safety guarantee
*/
template<
typename OutputIteratorT,
typename Range1T,
typename Range2T,
typename Range3T>
inline OutputIteratorT replace_first_copy(
OutputIteratorT Output,
const Range1T& Input,
const Range2T& Search,
const Range3T& Format)
{
return ::boost::algorithm::find_format_copy(
Output,
Input,
::boost::algorithm::first_finder(Search),
::boost::algorithm::const_formatter(Format) );
}
//! Replace first algorithm
/*!
\overload
*/
template<typename SequenceT, typename Range1T, typename Range2T>
inline SequenceT replace_first_copy(
const SequenceT& Input,
const Range1T& Search,
const Range2T& Format )
{
return ::boost::algorithm::find_format_copy(
Input,
::boost::algorithm::first_finder(Search),
::boost::algorithm::const_formatter(Format) );
}
//! Replace first algorithm
/*!
replace the first match of the search substring in the input
with the format string. The input sequence is modified in-place.
\param Input An input string
\param Search A substring to be searched for
\param Format A substitute string
*/
template<typename SequenceT, typename Range1T, typename Range2T>
inline void replace_first(
SequenceT& Input,
const Range1T& Search,
const Range2T& Format )
{
::boost::algorithm::find_format(
Input,
::boost::algorithm::first_finder(Search),
::boost::algorithm::const_formatter(Format) );
}
// replace_first ( case insensitive ) ---------------------------------------------//
//! Replace first algorithm ( case insensitive )
/*!
Replace the first match of the search substring in the input
with the format string.
The result is a modified copy of the input. It is returned as a sequence
or copied to the output iterator.
Searching is case insensitive.
\param Output An output iterator to which the result will be copied
\param Input An input string
\param Search A substring to be searched for
\param Format A substitute string
\param Loc A locale used for case insensitive comparison
\return An output iterator pointing just after the last inserted character or
a modified copy of the input
\note The second variant of this function provides the strong exception-safety guarantee
*/
template<
typename OutputIteratorT,
typename Range1T,
typename Range2T,
typename Range3T>
inline OutputIteratorT ireplace_first_copy(
OutputIteratorT Output,
const Range1T& Input,
const Range2T& Search,
const Range3T& Format,
const std::locale& Loc=std::locale() )
{
return ::boost::algorithm::find_format_copy(
Output,
Input,
::boost::algorithm::first_finder(Search, is_iequal(Loc)),
::boost::algorithm::const_formatter(Format) );
}
//! Replace first algorithm ( case insensitive )
/*!
\overload
*/
template<typename SequenceT, typename Range2T, typename Range1T>
inline SequenceT ireplace_first_copy(
const SequenceT& Input,
const Range2T& Search,
const Range1T& Format,
const std::locale& Loc=std::locale() )
{
return ::boost::algorithm::find_format_copy(
Input,
::boost::algorithm::first_finder(Search, is_iequal(Loc)),
::boost::algorithm::const_formatter(Format) );
}
//! Replace first algorithm ( case insensitive )
/*!
Replace the first match of the search substring in the input
with the format string. Input sequence is modified in-place.
Searching is case insensitive.
\param Input An input string
\param Search A substring to be searched for
\param Format A substitute string
\param Loc A locale used for case insensitive comparison
*/
template<typename SequenceT, typename Range1T, typename Range2T>
inline void ireplace_first(
SequenceT& Input,
const Range1T& Search,
const Range2T& Format,
const std::locale& Loc=std::locale() )
{
::boost::algorithm::find_format(
Input,
::boost::algorithm::first_finder(Search, is_iequal(Loc)),
::boost::algorithm::const_formatter(Format) );
}
// replace_last --------------------------------------------------------------------//
//! Replace last algorithm
/*!
Replace the last match of the search string in the input
with the format string.
The result is a modified copy of the input. It is returned as a sequence
or copied to the output iterator.
\param Output An output iterator to which the result will be copied
\param Input An input string
\param Search A substring to be searched for
\param Format A substitute string
\return An output iterator pointing just after the last inserted character or
a modified copy of the input
\note The second variant of this function provides the strong exception-safety guarantee
*/
template<
typename OutputIteratorT,
typename Range1T,
typename Range2T,
typename Range3T>
inline OutputIteratorT replace_last_copy(
OutputIteratorT Output,
const Range1T& Input,
const Range2T& Search,
const Range3T& Format )
{
return ::boost::algorithm::find_format_copy(
Output,
Input,
::boost::algorithm::last_finder(Search),
::boost::algorithm::const_formatter(Format) );
}
//! Replace last algorithm
/*!
\overload
*/
template<typename SequenceT, typename Range1T, typename Range2T>
inline SequenceT replace_last_copy(
const SequenceT& Input,
const Range1T& Search,
const Range2T& Format )
{
return ::boost::algorithm::find_format_copy(
Input,
::boost::algorithm::last_finder(Search),
::boost::algorithm::const_formatter(Format) );
}
//! Replace last algorithm
/*!
Replace the last match of the search string in the input
with the format string. Input sequence is modified in-place.
\param Input An input string
\param Search A substring to be searched for
\param Format A substitute string
*/
template<typename SequenceT, typename Range1T, typename Range2T>
inline void replace_last(
SequenceT& Input,
const Range1T& Search,
const Range2T& Format )
{
::boost::algorithm::find_format(
Input,
::boost::algorithm::last_finder(Search),
::boost::algorithm::const_formatter(Format) );
}
// replace_last ( case insensitive ) -----------------------------------------------//
//! Replace last algorithm ( case insensitive )
/*!
Replace the last match of the search string in the input
with the format string.
The result is a modified copy of the input. It is returned as a sequence
or copied to the output iterator.
Searching is case insensitive.
\param Output An output iterator to which the result will be copied
\param Input An input string
\param Search A substring to be searched for
\param Format A substitute string
\param Loc A locale used for case insensitive comparison
\return An output iterator pointing just after the last inserted character or
a modified copy of the input
\note The second variant of this function provides the strong exception-safety guarantee
*/
template<
typename OutputIteratorT,
typename Range1T,
typename Range2T,
typename Range3T>
inline OutputIteratorT ireplace_last_copy(
OutputIteratorT Output,
const Range1T& Input,
const Range2T& Search,
const Range3T& Format,
const std::locale& Loc=std::locale() )
{
return ::boost::algorithm::find_format_copy(
Output,
Input,
::boost::algorithm::last_finder(Search, is_iequal(Loc)),
::boost::algorithm::const_formatter(Format) );
}
//! Replace last algorithm ( case insensitive )
/*!
\overload
*/
template<typename SequenceT, typename Range1T, typename Range2T>
inline SequenceT ireplace_last_copy(
const SequenceT& Input,
const Range1T& Search,
const Range2T& Format,
const std::locale& Loc=std::locale() )
{
return ::boost::algorithm::find_format_copy(
Input,
::boost::algorithm::last_finder(Search, is_iequal(Loc)),
::boost::algorithm::const_formatter(Format) );
}
//! Replace last algorithm ( case insensitive )
/*!
Replace the last match of the search string in the input
with the format string.The input sequence is modified in-place.
Searching is case insensitive.
\param Input An input string
\param Search A substring to be searched for
\param Format A substitute string
\param Loc A locale used for case insensitive comparison
\return A reference to the modified input
*/
template<typename SequenceT, typename Range1T, typename Range2T>
inline void ireplace_last(
SequenceT& Input,
const Range1T& Search,
const Range2T& Format,
const std::locale& Loc=std::locale() )
{
::boost::algorithm::find_format(
Input,
::boost::algorithm::last_finder(Search, is_iequal(Loc)),
::boost::algorithm::const_formatter(Format) );
}
// replace_nth --------------------------------------------------------------------//
//! Replace nth algorithm
/*!
Replace an Nth (zero-indexed) match of the search string in the input
with the format string.
The result is a modified copy of the input. It is returned as a sequence
or copied to the output iterator.
\param Output An output iterator to which the result will be copied
\param Input An input string
\param Search A substring to be searched for
\param Nth An index of the match to be replaced. The index is 0-based.
For negative N, matches are counted from the end of string.
\param Format A substitute string
\return An output iterator pointing just after the last inserted character or
a modified copy of the input
\note The second variant of this function provides the strong exception-safety guarantee
*/
template<
typename OutputIteratorT,
typename Range1T,
typename Range2T,
typename Range3T>
inline OutputIteratorT replace_nth_copy(
OutputIteratorT Output,
const Range1T& Input,
const Range2T& Search,
int Nth,
const Range3T& Format )
{
return ::boost::algorithm::find_format_copy(
Output,
Input,
::boost::algorithm::nth_finder(Search, Nth),
::boost::algorithm::const_formatter(Format) );
}
//! Replace nth algorithm
/*!
\overload
*/
template<typename SequenceT, typename Range1T, typename Range2T>
inline SequenceT replace_nth_copy(
const SequenceT& Input,
const Range1T& Search,
int Nth,
const Range2T& Format )
{
return ::boost::algorithm::find_format_copy(
Input,
::boost::algorithm::nth_finder(Search, Nth),
::boost::algorithm::const_formatter(Format) );
}
//! Replace nth algorithm
/*!
Replace an Nth (zero-indexed) match of the search string in the input
with the format string. Input sequence is modified in-place.
\param Input An input string
\param Search A substring to be searched for
\param Nth An index of the match to be replaced. The index is 0-based.
For negative N, matches are counted from the end of string.
\param Format A substitute string
*/
template<typename SequenceT, typename Range1T, typename Range2T>
inline void replace_nth(
SequenceT& Input,
const Range1T& Search,
int Nth,
const Range2T& Format )
{
::boost::algorithm::find_format(
Input,
::boost::algorithm::nth_finder(Search, Nth),
::boost::algorithm::const_formatter(Format) );
}
// replace_nth ( case insensitive ) -----------------------------------------------//
//! Replace nth algorithm ( case insensitive )
/*!
Replace an Nth (zero-indexed) match of the search string in the input
with the format string.
The result is a modified copy of the input. It is returned as a sequence
or copied to the output iterator.
Searching is case insensitive.
\param Output An output iterator to which the result will be copied
\param Input An input string
\param Search A substring to be searched for
\param Nth An index of the match to be replaced. The index is 0-based.
For negative N, matches are counted from the end of string.
\param Format A substitute string
\param Loc A locale used for case insensitive comparison
\return An output iterator pointing just after the last inserted character or
a modified copy of the input
\note The second variant of this function provides the strong exception-safety guarantee
*/
template<
typename OutputIteratorT,
typename Range1T,
typename Range2T,
typename Range3T>
inline OutputIteratorT ireplace_nth_copy(
OutputIteratorT Output,
const Range1T& Input,
const Range2T& Search,
int Nth,
const Range3T& Format,
const std::locale& Loc=std::locale() )
{
return ::boost::algorithm::find_format_copy(
Output,
Input,
::boost::algorithm::nth_finder(Search, Nth, is_iequal(Loc) ),
::boost::algorithm::const_formatter(Format) );
}
//! Replace nth algorithm ( case insensitive )
/*!
\overload
*/
template<typename SequenceT, typename Range1T, typename Range2T>
inline SequenceT ireplace_nth_copy(
const SequenceT& Input,
const Range1T& Search,
int Nth,
const Range2T& Format,
const std::locale& Loc=std::locale() )
{
return ::boost::algorithm::find_format_copy(
Input,
::boost::algorithm::nth_finder(Search, Nth, is_iequal(Loc)),
::boost::algorithm::const_formatter(Format) );
}
//! Replace nth algorithm ( case insensitive )
/*!
Replace an Nth (zero-indexed) match of the search string in the input
with the format string. Input sequence is modified in-place.
Searching is case insensitive.
\param Input An input string
\param Search A substring to be searched for
\param Nth An index of the match to be replaced. The index is 0-based.
For negative N, matches are counted from the end of string.
\param Format A substitute string
\param Loc A locale used for case insensitive comparison
*/
template<typename SequenceT, typename Range1T, typename Range2T>
inline void ireplace_nth(
SequenceT& Input,
const Range1T& Search,
int Nth,
const Range2T& Format,
const std::locale& Loc=std::locale() )
{
::boost::algorithm::find_format(
Input,
::boost::algorithm::nth_finder(Search, Nth, is_iequal(Loc)),
::boost::algorithm::const_formatter(Format) );
}
// replace_all --------------------------------------------------------------------//
//! Replace all algorithm
/*!
Replace all occurrences of the search string in the input
with the format string.
The result is a modified copy of the input. It is returned as a sequence
or copied to the output iterator.
\param Output An output iterator to which the result will be copied
\param Input An input string
\param Search A substring to be searched for
\param Format A substitute string
\return An output iterator pointing just after the last inserted character or
a modified copy of the input
\note The second variant of this function provides the strong exception-safety guarantee
*/
template<
typename OutputIteratorT,
typename Range1T,
typename Range2T,
typename Range3T>
inline OutputIteratorT replace_all_copy(
OutputIteratorT Output,
const Range1T& Input,
const Range2T& Search,
const Range3T& Format )
{
return ::boost::algorithm::find_format_all_copy(
Output,
Input,
::boost::algorithm::first_finder(Search),
::boost::algorithm::const_formatter(Format) );
}
//! Replace all algorithm
/*!
\overload
*/
template<typename SequenceT, typename Range1T, typename Range2T>
inline SequenceT replace_all_copy(
const SequenceT& Input,
const Range1T& Search,
const Range2T& Format )
{
return ::boost::algorithm::find_format_all_copy(
Input,
::boost::algorithm::first_finder(Search),
::boost::algorithm::const_formatter(Format) );
}
//! Replace all algorithm
/*!
Replace all occurrences of the search string in the input
with the format string. The input sequence is modified in-place.
\param Input An input string
\param Search A substring to be searched for
\param Format A substitute string
\return A reference to the modified input
*/
template<typename SequenceT, typename Range1T, typename Range2T>
inline void replace_all(
SequenceT& Input,
const Range1T& Search,
const Range2T& Format )
{
::boost::algorithm::find_format_all(
Input,
::boost::algorithm::first_finder(Search),
::boost::algorithm::const_formatter(Format) );
}
// replace_all ( case insensitive ) -----------------------------------------------//
//! Replace all algorithm ( case insensitive )
/*!
Replace all occurrences of the search string in the input
with the format string.
The result is a modified copy of the input. It is returned as a sequence
or copied to the output iterator.
Searching is case insensitive.
\param Output An output iterator to which the result will be copied
\param Input An input string
\param Search A substring to be searched for
\param Format A substitute string
\param Loc A locale used for case insensitive comparison
\return An output iterator pointing just after the last inserted character or
a modified copy of the input
\note The second variant of this function provides the strong exception-safety guarantee
*/
template<
typename OutputIteratorT,
typename Range1T,
typename Range2T,
typename Range3T>
inline OutputIteratorT ireplace_all_copy(
OutputIteratorT Output,
const Range1T& Input,
const Range2T& Search,
const Range3T& Format,
const std::locale& Loc=std::locale() )
{
return ::boost::algorithm::find_format_all_copy(
Output,
Input,
::boost::algorithm::first_finder(Search, is_iequal(Loc)),
::boost::algorithm::const_formatter(Format) );
}
//! Replace all algorithm ( case insensitive )
/*!
\overload
*/
template<typename SequenceT, typename Range1T, typename Range2T>
inline SequenceT ireplace_all_copy(
const SequenceT& Input,
const Range1T& Search,
const Range2T& Format,
const std::locale& Loc=std::locale() )
{
return ::boost::algorithm::find_format_all_copy(
Input,
::boost::algorithm::first_finder(Search, is_iequal(Loc)),
::boost::algorithm::const_formatter(Format) );
}
//! Replace all algorithm ( case insensitive )
/*!
Replace all occurrences of the search string in the input
with the format string.The input sequence is modified in-place.
Searching is case insensitive.
\param Input An input string
\param Search A substring to be searched for
\param Format A substitute string
\param Loc A locale used for case insensitive comparison
*/
template<typename SequenceT, typename Range1T, typename Range2T>
inline void ireplace_all(
SequenceT& Input,
const Range1T& Search,
const Range2T& Format,
const std::locale& Loc=std::locale() )
{
::boost::algorithm::find_format_all(
Input,
::boost::algorithm::first_finder(Search, is_iequal(Loc)),
::boost::algorithm::const_formatter(Format) );
}
// replace_head --------------------------------------------------------------------//
//! Replace head algorithm
/*!
Replace the head of the input with the given format string.
The head is a prefix of a string of given size.
If the sequence is shorter then required, whole string if
considered to be the head.
The result is a modified copy of the input. It is returned as a sequence
or copied to the output iterator.
\param Output An output iterator to which the result will be copied
\param Input An input string
\param N Length of the head.
For N>=0, at most N characters are extracted.
For N<0, size(Input)-|N| characters are extracted.
\param Format A substitute string
\return An output iterator pointing just after the last inserted character or
a modified copy of the input
\note The second variant of this function provides the strong exception-safety guarantee
*/
template<
typename OutputIteratorT,
typename Range1T,
typename Range2T>
inline OutputIteratorT replace_head_copy(
OutputIteratorT Output,
const Range1T& Input,
int N,
const Range2T& Format )
{
return ::boost::algorithm::find_format_copy(
Output,
Input,
::boost::algorithm::head_finder(N),
::boost::algorithm::const_formatter(Format) );
}
//! Replace head algorithm
/*!
\overload
*/
template<typename SequenceT, typename RangeT>
inline SequenceT replace_head_copy(
const SequenceT& Input,
int N,
const RangeT& Format )
{
return ::boost::algorithm::find_format_copy(
Input,
::boost::algorithm::head_finder(N),
::boost::algorithm::const_formatter(Format) );
}
//! Replace head algorithm
/*!
Replace the head of the input with the given format string.
The head is a prefix of a string of given size.
If the sequence is shorter then required, the whole string is
considered to be the head. The input sequence is modified in-place.
\param Input An input string
\param N Length of the head.
For N>=0, at most N characters are extracted.
For N<0, size(Input)-|N| characters are extracted.
\param Format A substitute string
*/
template<typename SequenceT, typename RangeT>
inline void replace_head(
SequenceT& Input,
int N,
const RangeT& Format )
{
::boost::algorithm::find_format(
Input,
::boost::algorithm::head_finder(N),
::boost::algorithm::const_formatter(Format) );
}
// replace_tail --------------------------------------------------------------------//
//! Replace tail algorithm
/*!
Replace the tail of the input with the given format string.
The tail is a suffix of a string of given size.
If the sequence is shorter then required, whole string is
considered to be the tail.
The result is a modified copy of the input. It is returned as a sequence
or copied to the output iterator.
\param Output An output iterator to which the result will be copied
\param Input An input string
\param N Length of the tail.
For N>=0, at most N characters are extracted.
For N<0, size(Input)-|N| characters are extracted.
\param Format A substitute string
\return An output iterator pointing just after the last inserted character or
a modified copy of the input
\note The second variant of this function provides the strong exception-safety guarantee
*/
template<
typename OutputIteratorT,
typename Range1T,
typename Range2T>
inline OutputIteratorT replace_tail_copy(
OutputIteratorT Output,
const Range1T& Input,
int N,
const Range2T& Format )
{
return ::boost::algorithm::find_format_copy(
Output,
Input,
::boost::algorithm::tail_finder(N),
::boost::algorithm::const_formatter(Format) );
}
//! Replace tail algorithm
/*!
\overload
*/
template<typename SequenceT, typename RangeT>
inline SequenceT replace_tail_copy(
const SequenceT& Input,
int N,
const RangeT& Format )
{
return ::boost::algorithm::find_format_copy(
Input,
::boost::algorithm::tail_finder(N),
::boost::algorithm::const_formatter(Format) );
}
//! Replace tail algorithm
/*!
Replace the tail of the input with the given format sequence.
The tail is a suffix of a string of given size.
If the sequence is shorter then required, the whole string is
considered to be the tail. The input sequence is modified in-place.
\param Input An input string
\param N Length of the tail.
For N>=0, at most N characters are extracted.
For N<0, size(Input)-|N| characters are extracted.
\param Format A substitute string
*/
template<typename SequenceT, typename RangeT>
inline void replace_tail(
SequenceT& Input,
int N,
const RangeT& Format )
{
::boost::algorithm::find_format(
Input,
::boost::algorithm::tail_finder(N),
::boost::algorithm::const_formatter(Format) );
}
} // namespace algorithm
// pull names to the boost namespace
using algorithm::replace_range_copy;
using algorithm::replace_range;
using algorithm::replace_first_copy;
using algorithm::replace_first;
using algorithm::ireplace_first_copy;
using algorithm::ireplace_first;
using algorithm::replace_last_copy;
using algorithm::replace_last;
using algorithm::ireplace_last_copy;
using algorithm::ireplace_last;
using algorithm::replace_nth_copy;
using algorithm::replace_nth;
using algorithm::ireplace_nth_copy;
using algorithm::ireplace_nth;
using algorithm::replace_all_copy;
using algorithm::replace_all;
using algorithm::ireplace_all_copy;
using algorithm::ireplace_all;
using algorithm::replace_head_copy;
using algorithm::replace_head;
using algorithm::replace_tail_copy;
using algorithm::replace_tail;
} // namespace boost
#endif // BOOST_REPLACE_HPP
@@ -0,0 +1,193 @@
// Boost string_algo library sequence_traits.hpp header file ---------------------------//
// Copyright Pavol Droba 2002-2003.
//
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
// See http://www.boost.org/ for updates, documentation, and revision history.
#ifndef BOOST_STRING_SEQUENCE_TRAITS_HPP
#define BOOST_STRING_SEQUENCE_TRAITS_HPP
#include <boost/config.hpp>
#include <boost/mpl/bool.hpp>
#include <boost/algorithm/string/yes_no_type.hpp>
/*! \file
Traits defined in this header are used by various algorithms to achieve
better performance for specific containers.
Traits provide fail-safe defaults. If a container supports some of these
features, it is possible to specialize the specific trait for this container.
For lacking compilers, it is possible of define an override for a specific tester
function.
Due to a language restriction, it is not currently possible to define specializations for
stl containers without including the corresponding header. To decrease the overhead
needed by this inclusion, user can selectively include a specialization
header for a specific container. They are located in boost/algorithm/string/stl
directory. Alternatively she can include boost/algorithm/string/std_collection_traits.hpp
header which contains specializations for all stl containers.
*/
namespace boost {
namespace algorithm {
// sequence traits -----------------------------------------------//
#ifdef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
//! Native replace tester
/*!
Declare an override of this tester function with return
type boost::string_algo::yes_type for a sequence with this property.
\return yes_type if the container has basic_string like native replace
method.
*/
no_type has_native_replace_tester(...);
//! Stable iterators tester
/*!
Declare an override of this tester function with return
type boost::string_algo::yes_type for a sequence with this property.
\return yes_type if the sequence's insert/replace/erase methods do not invalidate
existing iterators.
*/
no_type has_stable_iterators_tester(...);
//! const time insert tester
/*!
Declare an override of this tester function with return
type boost::string_algo::yes_type for a sequence with this property.
\return yes_type if the sequence's insert method is working in constant time
*/
no_type has_const_time_insert_tester(...);
//! const time erase tester
/*!
Declare an override of this tester function with return
type boost::string_algo::yes_type for a sequence with this property.
\return yes_type if the sequence's erase method is working in constant time
*/
no_type has_const_time_erase_tester(...);
#endif //BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
//! Native replace trait
/*!
This trait specifies that the sequence has \c std::string like replace method
*/
template< typename T >
class has_native_replace
{
#ifdef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
private:
static T* t;
public:
BOOST_STATIC_CONSTANT(bool, value=(
sizeof(has_native_replace_tester(t))==sizeof(yes_type) ) );
#else // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
public:
# if BOOST_WORKAROUND( __IBMCPP__, <= 600 )
enum { value = false };
# else
BOOST_STATIC_CONSTANT(bool, value=false);
# endif // BOOST_WORKAROUND( __IBMCPP__, <= 600 )
#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
typedef mpl::bool_<has_native_replace<T>::value> type;
};
//! Stable iterators trait
/*!
This trait specifies that the sequence has stable iterators. It means
that operations like insert/erase/replace do not invalidate iterators.
*/
template< typename T >
class has_stable_iterators
{
#ifdef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
private:
static T* t;
public:
BOOST_STATIC_CONSTANT(bool, value=(
sizeof(has_stable_iterators_tester(t))==sizeof(yes_type) ) );
#else // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
public:
# if BOOST_WORKAROUND( __IBMCPP__, <= 600 )
enum { value = false };
# else
BOOST_STATIC_CONSTANT(bool, value=false);
# endif // BOOST_WORKAROUND( __IBMCPP__, <= 600 )
#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
typedef mpl::bool_<has_stable_iterators<T>::value> type;
};
//! Const time insert trait
/*!
This trait specifies that the sequence's insert method has
constant time complexity.
*/
template< typename T >
class has_const_time_insert
{
#ifdef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
private:
static T* t;
public:
BOOST_STATIC_CONSTANT(bool, value=(
sizeof(has_const_time_insert_tester(t))==sizeof(yes_type) ) );
#else // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
public:
# if BOOST_WORKAROUND( __IBMCPP__, <= 600 )
enum { value = false };
# else
BOOST_STATIC_CONSTANT(bool, value=false);
# endif // BOOST_WORKAROUND( __IBMCPP__, <= 600 )
#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
typedef mpl::bool_<has_const_time_insert<T>::value> type;
};
//! Const time erase trait
/*!
This trait specifies that the sequence's erase method has
constant time complexity.
*/
template< typename T >
class has_const_time_erase
{
#ifdef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
private:
static T* t;
public:
BOOST_STATIC_CONSTANT(bool, value=(
sizeof(has_const_time_erase_tester(t))==sizeof(yes_type) ) );
#else // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
public:
# if BOOST_WORKAROUND( __IBMCPP__, <= 600 )
enum { value = false };
# else
BOOST_STATIC_CONSTANT(bool, value=false);
# endif // BOOST_WORKAROUND( __IBMCPP__, <= 600 )
#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
typedef mpl::bool_<has_const_time_erase<T>::value> type;
};
} // namespace algorithm
} // namespace boost
#endif // BOOST_STRING_SEQUENCE_TRAITS_HPP
+163
View File
@@ -0,0 +1,163 @@
// Boost string_algo library split.hpp header file ---------------------------//
// Copyright Pavol Droba 2002-2006.
//
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
// See http://www.boost.org/ for updates, documentation, and revision history.
#ifndef BOOST_STRING_SPLIT_HPP
#define BOOST_STRING_SPLIT_HPP
#include <boost/algorithm/string/config.hpp>
#include <boost/algorithm/string/iter_find.hpp>
#include <boost/algorithm/string/finder.hpp>
#include <boost/algorithm/string/compare.hpp>
/*! \file
Defines basic split algorithms.
Split algorithms can be used to divide a string
into several parts according to given criteria.
Each part is copied and added as a new element to the
output container.
Thus the result container must be able to hold copies
of the matches (in a compatible structure like std::string) or
a reference to it (e.g. using the iterator range class).
Examples of such a container are \c std::vector<std::string>
or \c std::list<boost::iterator_range<std::string::iterator>>
*/
namespace boost {
namespace algorithm {
// find_all ------------------------------------------------------------//
//! Find all algorithm
/*!
This algorithm finds all occurrences of the search string
in the input.
Each part is copied and added as a new element to the
output container.
Thus the result container must be able to hold copies
of the matches (in a compatible structure like std::string) or
a reference to it (e.g. using the iterator range class).
Examples of such a container are \c std::vector<std::string>
or \c std::list<boost::iterator_range<std::string::iterator>>
\param Result A container that can hold copies of references to the substrings
\param Input A container which will be searched.
\param Search A substring to be searched for.
\return A reference the result
\note Prior content of the result will be overwritten.
\note This function provides the strong exception-safety guarantee
*/
template< typename SequenceSequenceT, typename Range1T, typename Range2T >
inline SequenceSequenceT& find_all(
SequenceSequenceT& Result,
Range1T& Input,
const Range2T& Search)
{
return ::boost::algorithm::iter_find(
Result,
Input,
::boost::algorithm::first_finder(Search) );
}
//! Find all algorithm ( case insensitive )
/*!
This algorithm finds all occurrences of the search string
in the input.
Each part is copied and added as a new element to the
output container. Thus the result container must be able to hold copies
of the matches (in a compatible structure like std::string) or
a reference to it (e.g. using the iterator range class).
Examples of such a container are \c std::vector<std::string>
or \c std::list<boost::iterator_range<std::string::iterator>>
Searching is case insensitive.
\param Result A container that can hold copies of references to the substrings
\param Input A container which will be searched.
\param Search A substring to be searched for.
\param Loc A locale used for case insensitive comparison
\return A reference the result
\note Prior content of the result will be overwritten.
\note This function provides the strong exception-safety guarantee
*/
template< typename SequenceSequenceT, typename Range1T, typename Range2T >
inline SequenceSequenceT& ifind_all(
SequenceSequenceT& Result,
Range1T& Input,
const Range2T& Search,
const std::locale& Loc=std::locale() )
{
return ::boost::algorithm::iter_find(
Result,
Input,
::boost::algorithm::first_finder(Search, is_iequal(Loc) ) );
}
// tokenize -------------------------------------------------------------//
//! Split algorithm
/*!
Tokenize expression. This function is equivalent to C strtok. Input
sequence is split into tokens, separated by separators. Separators
are given by means of the predicate.
Each part is copied and added as a new element to the
output container.
Thus the result container must be able to hold copies
of the matches (in a compatible structure like std::string) or
a reference to it (e.g. using the iterator range class).
Examples of such a container are \c std::vector<std::string>
or \c std::list<boost::iterator_range<std::string::iterator>>
\param Result A container that can hold copies of references to the substrings
\param Input A container which will be searched.
\param Pred A predicate to identify separators. This predicate is
supposed to return true if a given element is a separator.
\param eCompress If eCompress argument is set to token_compress_on, adjacent
separators are merged together. Otherwise, every two separators
delimit a token.
\return A reference the result
\note Prior content of the result will be overwritten.
\note This function provides the strong exception-safety guarantee
*/
template< typename SequenceSequenceT, typename RangeT, typename PredicateT >
inline SequenceSequenceT& split(
SequenceSequenceT& Result,
RangeT& Input,
PredicateT Pred,
token_compress_mode_type eCompress=token_compress_off )
{
return ::boost::algorithm::iter_split(
Result,
Input,
::boost::algorithm::token_finder( Pred, eCompress ) );
}
} // namespace algorithm
// pull names to the boost namespace
using algorithm::find_all;
using algorithm::ifind_all;
using algorithm::split;
} // namespace boost
#endif // BOOST_STRING_SPLIT_HPP
@@ -0,0 +1,85 @@
// Boost string_algo library list_traits.hpp header file ---------------------------//
// Copyright Pavol Droba 2002-2003.
//
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
// See http://www.boost.org/ for updates, documentation, and revision history.
#ifndef BOOST_STRING_STD_LIST_TRAITS_HPP
#define BOOST_STRING_STD_LIST_TRAITS_HPP
#include <boost/algorithm/string/yes_no_type.hpp>
#include <list>
#include <boost/algorithm/string/sequence_traits.hpp>
namespace boost {
namespace algorithm {
// std::list<> traits -----------------------------------------------//
#ifdef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
// stable iterators tester
template<typename T, typename AllocT>
yes_type has_stable_iterators_tester( const ::std::list<T,AllocT>* );
// const time insert tester
template<typename T, typename AllocT>
yes_type has_const_time_insert_tester( const ::std::list<T,AllocT>* );
// const time erase tester
template<typename T, typename AllocT>
yes_type has_const_time_erase_tester( const ::std::list<T,AllocT>* );
#else // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
// stable iterators trait
template<typename T, typename AllocT>
class has_stable_iterators< ::std::list<T,AllocT> >
{
public:
#if BOOST_WORKAROUND( __IBMCPP__, <= 600 )
enum { value = true };
#else
BOOST_STATIC_CONSTANT(bool, value=true);
#endif // BOOST_WORKAROUND( __IBMCPP__, <= 600 )
typedef mpl::bool_<has_stable_iterators<T>::value> type;
};
// const time insert trait
template<typename T, typename AllocT>
class has_const_time_insert< ::std::list<T,AllocT> >
{
public:
#if BOOST_WORKAROUND( __IBMCPP__, <= 600 )
enum { value = true };
#else
BOOST_STATIC_CONSTANT(bool, value=true);
#endif // BOOST_WORKAROUND( __IBMCPP__, <= 600 )
typedef mpl::bool_<has_const_time_insert<T>::value> type;
};
// const time erase trait
template<typename T, typename AllocT>
class has_const_time_erase< ::std::list<T,AllocT> >
{
public:
#if BOOST_WORKAROUND( __IBMCPP__, <= 600 )
enum { value = true };
#else
BOOST_STATIC_CONSTANT(bool, value=true);
#endif // BOOST_WORKAROUND( __IBMCPP__, <= 600 )
typedef mpl::bool_<has_const_time_erase<T>::value> type;
};
#endif
} // namespace algorithm
} // namespace boost
#endif // BOOST_STRING_STD_LIST_TRAITS_HPP
@@ -0,0 +1,101 @@
// Boost string_algo library string_traits.hpp header file ---------------------------//
// Copyright Pavol Droba 2002-2003.
//
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
// See http://www.boost.org/ for updates, documentation, and revision history.
#ifndef BOOST_STRING_STD_ROPE_TRAITS_HPP
#define BOOST_STRING_STD_ROPE_TRAITS_HPP
#include <boost/algorithm/string/yes_no_type.hpp>
#include <rope>
#include <boost/algorithm/string/sequence_traits.hpp>
namespace boost {
namespace algorithm {
// SGI's std::rope<> traits -----------------------------------------------//
#ifdef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
// native replace tester
template<typename T, typename TraitsT, typename AllocT>
yes_type has_native_replace_tester( const std::rope<T, TraitsT, AllocT>* );
// stable iterators tester
template<typename T, typename TraitsT, typename AllocT>
yes_type has_stable_iterators_tester( const std::rope<T, TraitsT, AllocT>* );
// const time insert tester
template<typename T, typename TraitsT, typename AllocT>
yes_type has_const_time_insert_tester( const std::rope<T, TraitsT, AllocT>* );
// const time erase tester
template<typename T, typename TraitsT, typename AllocT>
yes_type has_const_time_erase_tester( const std::rope<T, TraitsT, AllocT>* );
#else // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
// native replace trait
template<typename T, typename TraitsT, typename AllocT>
class has_native_replace< std::rope<T,TraitsT,AllocT> >
{
public:
#if BOOST_WORKAROUND( __IBMCPP__, <= 600 )
enum { value = true };
#else
BOOST_STATIC_CONSTANT(bool, value=true);
#endif // BOOST_WORKAROUND( __IBMCPP__, <= 600 )
typedef mpl::bool_<value> type;
};
// stable iterators trait
template<typename T, typename TraitsT, typename AllocT>
class has_stable_iterators< std::rope<T,TraitsT,AllocT> >
{
public:
#if BOOST_WORKAROUND( __IBMCPP__, <= 600 )
enum { value = true };
#else
BOOST_STATIC_CONSTANT(bool, value=true);
#endif // BOOST_WORKAROUND( __IBMCPP__, <= 600 )
typedef mpl::bool_<value> type;
};
// const time insert trait
template<typename T, typename TraitsT, typename AllocT>
class has_const_time_insert< std::rope<T,TraitsT,AllocT> >
{
public:
#if BOOST_WORKAROUND( __IBMCPP__, <= 600 )
enum { value = true };
#else
BOOST_STATIC_CONSTANT(bool, value=true);
#endif // BOOST_WORKAROUND( __IBMCPP__, <= 600 )
typedef mpl::bool_<value> type;
};
// const time erase trait
template<typename T, typename TraitsT, typename AllocT>
class has_const_time_erase< std::rope<T,TraitsT,AllocT> >
{
public:
#if BOOST_WORKAROUND( __IBMCPP__, <= 600 )
enum { value = true };
#else
BOOST_STATIC_CONSTANT(bool, value=true);
#endif // BOOST_WORKAROUND( __IBMCPP__, <= 600 )
typedef mpl::bool_<value> type;
};
#endif
} // namespace algorithm
} // namespace boost
#endif // BOOST_STRING_ROPE_TRAITS_HPP
@@ -0,0 +1,85 @@
// Boost string_algo library slist_traits.hpp header file ---------------------------//
// Copyright Pavol Droba 2002-2003.
//
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
// See http://www.boost.org/ for updates, documentation, and revision history.
#ifndef BOOST_STRING_STD_SLIST_TRAITS_HPP
#define BOOST_STRING_STD_SLIST_TRAITS_HPP
#include <boost/algorithm/string/config.hpp>
#include <boost/algorithm/string/yes_no_type.hpp>
#include BOOST_SLIST_HEADER
#include <boost/algorithm/string/sequence_traits.hpp>
namespace boost {
namespace algorithm {
// SGI's std::slist<> traits -----------------------------------------------//
#ifdef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
// stable iterators tester
template<typename T, typename AllocT>
yes_type has_stable_iterators_tester( const BOOST_STD_EXTENSION_NAMESPACE::slist<T,AllocT>* );
// const time insert tester
template<typename T, typename AllocT>
yes_type has_const_time_insert_tester( const BOOST_STD_EXTENSION_NAMESPACE::slist<T,AllocT>* );
// const time erase tester
template<typename T, typename AllocT>
yes_type has_const_time_erase_tester( const BOOST_STD_EXTENSION_NAMESPACE::slist<T,AllocT>* );
#else // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
// stable iterators trait
template<typename T, typename AllocT>
class has_stable_iterators< BOOST_STD_EXTENSION_NAMESPACE::slist<T,AllocT> >
{
public:
#if BOOST_WORKAROUND( __IBMCPP__, <= 600 )
enum { value = true };
#else
BOOST_STATIC_CONSTANT(bool, value=true);
#endif // BOOST_WORKAROUND( __IBMCPP__, <= 600 )
typedef mpl::bool_<has_stable_iterators<T>::value> type;
};
// const time insert trait
template<typename T, typename AllocT>
class has_const_time_insert< BOOST_STD_EXTENSION_NAMESPACE::slist<T,AllocT> >
{
public:
#if BOOST_WORKAROUND( __IBMCPP__, <= 600 )
enum { value = true };
#else
BOOST_STATIC_CONSTANT(bool, value=true);
#endif // BOOST_WORKAROUND( __IBMCPP__, <= 600 )
typedef mpl::bool_<has_const_time_insert<T>::value> type;
};
// const time erase trait
template<typename T, typename AllocT>
class has_const_time_erase< BOOST_STD_EXTENSION_NAMESPACE::slist<T,AllocT> >
{
public:
#if BOOST_WORKAROUND( __IBMCPP__, <= 600 )
enum { value = true };
#else
BOOST_STATIC_CONSTANT(bool, value=true);
#endif // BOOST_WORKAROUND( __IBMCPP__, <= 600 )
typedef mpl::bool_<has_const_time_erase<T>::value> type;
};
#endif
} // namespace algorithm
} // namespace boost
#endif // BOOST_STRING_STD_LIST_TRAITS_HPP
@@ -0,0 +1,52 @@
// Boost string_algo library string_traits.hpp header file ---------------------------//
// Copyright Pavol Droba 2002-2003.
//
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
// See http://www.boost.org/ for updates, documentation, and revision history.
#ifndef BOOST_STRING_STD_STRING_TRAITS_HPP
#define BOOST_STRING_STD_STRING_TRAITS_HPP
#include <boost/algorithm/string/yes_no_type.hpp>
#include <string>
#include <boost/algorithm/string/sequence_traits.hpp>
namespace boost {
namespace algorithm {
// std::basic_string<> traits -----------------------------------------------//
#ifdef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
// native replace tester
template<typename T, typename TraitsT, typename AllocT>
yes_type has_native_replace_tester( const std::basic_string<T, TraitsT, AllocT>* );
#else // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
// native replace trait
template<typename T, typename TraitsT, typename AllocT>
class has_native_replace< std::basic_string<T, TraitsT, AllocT> >
{
public:
#if BOOST_WORKAROUND( __IBMCPP__, <= 600 )
enum { value = true } ;
#else
BOOST_STATIC_CONSTANT(bool, value=true);
#endif // BOOST_WORKAROUND( __IBMCPP__, <= 600 )
typedef mpl::bool_<has_native_replace<T>::value> type;
};
#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
} // namespace algorithm
} // namespace boost
#endif // BOOST_STRING_LIST_TRAITS_HPP
@@ -0,0 +1,26 @@
// Boost string_algo library std_containers_traits.hpp header file ---------------------------//
// Copyright Pavol Droba 2002-2003.
//
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
// See http://www.boost.org/ for updates, documentation, and revision history.
#ifndef BOOST_STRING_STD_CONTAINERS_TRAITS_HPP
#define BOOST_STRING_STD_CONTAINERS_TRAITS_HPP
/*!\file
This file includes sequence traits for stl containers.
*/
#include <boost/config.hpp>
#include <boost/algorithm/string/std/string_traits.hpp>
#include <boost/algorithm/string/std/list_traits.hpp>
#ifdef BOOST_HAS_SLIST
# include <boost/algorithm/string/std/slist_traits.hpp>
#endif
#endif // BOOST_STRING_STD_CONTAINERS_TRAITS_HPP
+398
View File
@@ -0,0 +1,398 @@
// Boost string_algo library trim.hpp header file ---------------------------//
// Copyright Pavol Droba 2002-2003.
//
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
// See http://www.boost.org/ for updates, documentation, and revision history.
#ifndef BOOST_STRING_TRIM_HPP
#define BOOST_STRING_TRIM_HPP
#include <boost/algorithm/string/config.hpp>
#include <boost/range/begin.hpp>
#include <boost/range/end.hpp>
#include <boost/range/const_iterator.hpp>
#include <boost/range/as_literal.hpp>
#include <boost/range/iterator_range.hpp>
#include <boost/algorithm/string/detail/trim.hpp>
#include <boost/algorithm/string/classification.hpp>
#include <locale>
/*! \file
Defines trim algorithms.
Trim algorithms are used to remove trailing and leading spaces from a
sequence (string). Space is recognized using given locales.
Parametric (\c _if) variants use a predicate (functor) to select which characters
are to be trimmed..
Functions take a selection predicate as a parameter, which is used to determine
whether a character is a space. Common predicates are provided in classification.hpp header.
*/
namespace boost {
namespace algorithm {
// left trim -----------------------------------------------//
//! Left trim - parametric
/*!
Remove all leading spaces from the input.
The supplied predicate is used to determine which characters are considered spaces.
The result is a trimmed copy of the input. It is returned as a sequence
or copied to the output iterator
\param Output An output iterator to which the result will be copied
\param Input An input range
\param IsSpace An unary predicate identifying spaces
\return
An output iterator pointing just after the last inserted character or
a copy of the input
\note The second variant of this function provides the strong exception-safety guarantee
*/
template<typename OutputIteratorT, typename RangeT, typename PredicateT>
inline OutputIteratorT trim_left_copy_if(
OutputIteratorT Output,
const RangeT& Input,
PredicateT IsSpace)
{
iterator_range<BOOST_STRING_TYPENAME range_const_iterator<RangeT>::type> lit_range(::boost::as_literal(Input));
std::copy(
::boost::algorithm::detail::trim_begin(
::boost::begin(lit_range),
::boost::end(lit_range),
IsSpace ),
::boost::end(lit_range),
Output);
return Output;
}
//! Left trim - parametric
/*!
\overload
*/
template<typename SequenceT, typename PredicateT>
inline SequenceT trim_left_copy_if(const SequenceT& Input, PredicateT IsSpace)
{
return SequenceT(
::boost::algorithm::detail::trim_begin(
::boost::begin(Input),
::boost::end(Input),
IsSpace ),
::boost::end(Input));
}
//! Left trim - parametric
/*!
Remove all leading spaces from the input.
The result is a trimmed copy of the input.
\param Input An input sequence
\param Loc a locale used for 'space' classification
\return A trimmed copy of the input
\note This function provides the strong exception-safety guarantee
*/
template<typename SequenceT>
inline SequenceT trim_left_copy(const SequenceT& Input, const std::locale& Loc=std::locale())
{
return
::boost::algorithm::trim_left_copy_if(
Input,
is_space(Loc));
}
//! Left trim
/*!
Remove all leading spaces from the input. The supplied predicate is
used to determine which characters are considered spaces.
The input sequence is modified in-place.
\param Input An input sequence
\param IsSpace An unary predicate identifying spaces
*/
template<typename SequenceT, typename PredicateT>
inline void trim_left_if(SequenceT& Input, PredicateT IsSpace)
{
Input.erase(
::boost::begin(Input),
::boost::algorithm::detail::trim_begin(
::boost::begin(Input),
::boost::end(Input),
IsSpace));
}
//! Left trim
/*!
Remove all leading spaces from the input.
The Input sequence is modified in-place.
\param Input An input sequence
\param Loc A locale used for 'space' classification
*/
template<typename SequenceT>
inline void trim_left(SequenceT& Input, const std::locale& Loc=std::locale())
{
::boost::algorithm::trim_left_if(
Input,
is_space(Loc));
}
// right trim -----------------------------------------------//
//! Right trim - parametric
/*!
Remove all trailing spaces from the input.
The supplied predicate is used to determine which characters are considered spaces.
The result is a trimmed copy of the input. It is returned as a sequence
or copied to the output iterator
\param Output An output iterator to which the result will be copied
\param Input An input range
\param IsSpace An unary predicate identifying spaces
\return
An output iterator pointing just after the last inserted character or
a copy of the input
\note The second variant of this function provides the strong exception-safety guarantee
*/
template<typename OutputIteratorT, typename RangeT, typename PredicateT>
inline OutputIteratorT trim_right_copy_if(
OutputIteratorT Output,
const RangeT& Input,
PredicateT IsSpace )
{
iterator_range<BOOST_STRING_TYPENAME range_const_iterator<RangeT>::type> lit_range(::boost::as_literal(Input));
std::copy(
::boost::begin(lit_range),
::boost::algorithm::detail::trim_end(
::boost::begin(lit_range),
::boost::end(lit_range),
IsSpace ),
Output );
return Output;
}
//! Right trim - parametric
/*!
\overload
*/
template<typename SequenceT, typename PredicateT>
inline SequenceT trim_right_copy_if(const SequenceT& Input, PredicateT IsSpace)
{
return SequenceT(
::boost::begin(Input),
::boost::algorithm::detail::trim_end(
::boost::begin(Input),
::boost::end(Input),
IsSpace)
);
}
//! Right trim
/*!
Remove all trailing spaces from the input.
The result is a trimmed copy of the input
\param Input An input sequence
\param Loc A locale used for 'space' classification
\return A trimmed copy of the input
\note This function provides the strong exception-safety guarantee
*/
template<typename SequenceT>
inline SequenceT trim_right_copy(const SequenceT& Input, const std::locale& Loc=std::locale())
{
return
::boost::algorithm::trim_right_copy_if(
Input,
is_space(Loc));
}
//! Right trim - parametric
/*!
Remove all trailing spaces from the input.
The supplied predicate is used to determine which characters are considered spaces.
The input sequence is modified in-place.
\param Input An input sequence
\param IsSpace An unary predicate identifying spaces
*/
template<typename SequenceT, typename PredicateT>
inline void trim_right_if(SequenceT& Input, PredicateT IsSpace)
{
Input.erase(
::boost::algorithm::detail::trim_end(
::boost::begin(Input),
::boost::end(Input),
IsSpace ),
::boost::end(Input)
);
}
//! Right trim
/*!
Remove all trailing spaces from the input.
The input sequence is modified in-place.
\param Input An input sequence
\param Loc A locale used for 'space' classification
*/
template<typename SequenceT>
inline void trim_right(SequenceT& Input, const std::locale& Loc=std::locale())
{
::boost::algorithm::trim_right_if(
Input,
is_space(Loc) );
}
// both side trim -----------------------------------------------//
//! Trim - parametric
/*!
Remove all trailing and leading spaces from the input.
The supplied predicate is used to determine which characters are considered spaces.
The result is a trimmed copy of the input. It is returned as a sequence
or copied to the output iterator
\param Output An output iterator to which the result will be copied
\param Input An input range
\param IsSpace An unary predicate identifying spaces
\return
An output iterator pointing just after the last inserted character or
a copy of the input
\note The second variant of this function provides the strong exception-safety guarantee
*/
template<typename OutputIteratorT, typename RangeT, typename PredicateT>
inline OutputIteratorT trim_copy_if(
OutputIteratorT Output,
const RangeT& Input,
PredicateT IsSpace)
{
iterator_range<BOOST_STRING_TYPENAME range_const_iterator<RangeT>::type> lit_range(::boost::as_literal(Input));
BOOST_STRING_TYPENAME
range_const_iterator<RangeT>::type TrimEnd=
::boost::algorithm::detail::trim_end(
::boost::begin(lit_range),
::boost::end(lit_range),
IsSpace);
std::copy(
detail::trim_begin(
::boost::begin(lit_range), TrimEnd, IsSpace),
TrimEnd,
Output
);
return Output;
}
//! Trim - parametric
/*!
\overload
*/
template<typename SequenceT, typename PredicateT>
inline SequenceT trim_copy_if(const SequenceT& Input, PredicateT IsSpace)
{
BOOST_STRING_TYPENAME
range_const_iterator<SequenceT>::type TrimEnd=
::boost::algorithm::detail::trim_end(
::boost::begin(Input),
::boost::end(Input),
IsSpace);
return SequenceT(
detail::trim_begin(
::boost::begin(Input),
TrimEnd,
IsSpace),
TrimEnd
);
}
//! Trim
/*!
Remove all leading and trailing spaces from the input.
The result is a trimmed copy of the input
\param Input An input sequence
\param Loc A locale used for 'space' classification
\return A trimmed copy of the input
\note This function provides the strong exception-safety guarantee
*/
template<typename SequenceT>
inline SequenceT trim_copy( const SequenceT& Input, const std::locale& Loc=std::locale() )
{
return
::boost::algorithm::trim_copy_if(
Input,
is_space(Loc) );
}
//! Trim
/*!
Remove all leading and trailing spaces from the input.
The supplied predicate is used to determine which characters are considered spaces.
The input sequence is modified in-place.
\param Input An input sequence
\param IsSpace An unary predicate identifying spaces
*/
template<typename SequenceT, typename PredicateT>
inline void trim_if(SequenceT& Input, PredicateT IsSpace)
{
::boost::algorithm::trim_right_if( Input, IsSpace );
::boost::algorithm::trim_left_if( Input, IsSpace );
}
//! Trim
/*!
Remove all leading and trailing spaces from the input.
The input sequence is modified in-place.
\param Input An input sequence
\param Loc A locale used for 'space' classification
*/
template<typename SequenceT>
inline void trim(SequenceT& Input, const std::locale& Loc=std::locale())
{
::boost::algorithm::trim_if(
Input,
is_space( Loc ) );
}
} // namespace algorithm
// pull names to the boost namespace
using algorithm::trim_left;
using algorithm::trim_left_if;
using algorithm::trim_left_copy;
using algorithm::trim_left_copy_if;
using algorithm::trim_right;
using algorithm::trim_right_if;
using algorithm::trim_right_copy;
using algorithm::trim_right_copy_if;
using algorithm::trim;
using algorithm::trim_if;
using algorithm::trim_copy;
using algorithm::trim_copy_if;
} // namespace boost
#endif // BOOST_STRING_TRIM_HPP
@@ -0,0 +1,33 @@
// Boost string_algo library yes_no_type.hpp header file ---------------------------//
// Copyright Pavol Droba 2002-2003.
//
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
// See http://www.boost.org/ for updates, documentation, and revision history.
#ifndef BOOST_STRING_YES_NO_TYPE_DETAIL_HPP
#define BOOST_STRING_YES_NO_TYPE_DETAIL_HPP
namespace boost {
namespace algorithm {
// taken from boost mailing-list
// when yes_no_type will become officially
// a part of boost distribution, this header
// will be deprecated
template<int I> struct size_descriptor
{
typedef char (& type)[I];
};
typedef size_descriptor<1>::type yes_type;
typedef size_descriptor<2>::type no_type;
} // namespace algorithm
} // namespace boost
#endif // BOOST_STRING_YES_NO_TYPE_DETAIL_HPP
+23
View File
@@ -0,0 +1,23 @@
// Boost string_algo library string_regex.hpp header file ---------------------------//
// Copyright Pavol Droba 2002-2004.
//
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
// See http://www.boost.org/ for updates, documentation, and revision history.
#ifndef BOOST_STRING_ALGO_REGEX_HPP
#define BOOST_STRING_ALGO_REGEX_HPP
/*! \file
Cumulative include for string_algo library.
In addtion to string.hpp contains also regex-related stuff.
*/
#include <boost/regex.hpp>
#include <boost/algorithm/string.hpp>
#include <boost/algorithm/string/regex.hpp>
#endif // BOOST_STRING_ALGO_REGEX_HPP
+50
View File
@@ -0,0 +1,50 @@
//
// boost/assert.hpp - BOOST_ASSERT(expr)
//
// Copyright (c) 2001, 2002 Peter Dimov and Multi Media Ltd.
// Copyright (c) 2007 Peter Dimov
//
// Distributed under the Boost Software License, Version 1.0. (See
// accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
//
// Note: There are no include guards. This is intentional.
//
// See http://www.boost.org/libs/utility/assert.html for documentation.
//
#undef BOOST_ASSERT
#if defined(BOOST_DISABLE_ASSERTS)
# define BOOST_ASSERT(expr) ((void)0)
#elif defined(BOOST_ENABLE_ASSERT_HANDLER)
#include <boost/current_function.hpp>
namespace boost
{
void assertion_failed(char const * expr, char const * function, char const * file, long line); // user defined
} // namespace boost
#define BOOST_ASSERT(expr) ((expr)? ((void)0): ::boost::assertion_failed(#expr, BOOST_CURRENT_FUNCTION, __FILE__, __LINE__))
#else
# include <assert.h> // .h to support old libraries w/o <cassert> - effect is the same
# define BOOST_ASSERT(expr) assert(expr)
#endif
#undef BOOST_VERIFY
#if defined(BOOST_DISABLE_ASSERTS) || ( !defined(BOOST_ENABLE_ASSERT_HANDLER) && defined(NDEBUG) )
# define BOOST_VERIFY(expr) ((void)(expr))
#else
# define BOOST_VERIFY(expr) BOOST_ASSERT(expr)
#endif
+24
View File
@@ -0,0 +1,24 @@
#ifndef BOOST_BIND_HPP_INCLUDED
#define BOOST_BIND_HPP_INCLUDED
// MS compatible compilers support #pragma once
#if defined(_MSC_VER) && (_MSC_VER >= 1020)
# pragma once
#endif
//
// bind.hpp - binds function objects to arguments
//
// Copyright (c) 2009 Peter Dimov
//
// Distributed under the Boost Software License, Version 1.0.
// See accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt
//
// See http://www.boost.org/libs/bind/bind.html for documentation.
//
#include <boost/bind/bind.hpp>
#endif // #ifndef BOOST_BIND_HPP_INCLUDED
+74
View File
@@ -0,0 +1,74 @@
#ifndef BOOST_BIND_APPLY_HPP_INCLUDED
#define BOOST_BIND_APPLY_HPP_INCLUDED
//
// apply.hpp
//
// Copyright (c) 2002, 2003 Peter Dimov and Multi Media Ltd.
//
// Distributed under the Boost Software License, Version 1.0. (See
// accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
//
namespace boost
{
template<class R> struct apply
{
typedef R result_type;
template<class F> result_type operator()(F & f) const
{
return f();
}
template<class F, class A1> result_type operator()(F & f, A1 & a1) const
{
return f(a1);
}
template<class F, class A1, class A2> result_type operator()(F & f, A1 & a1, A2 & a2) const
{
return f(a1, a2);
}
template<class F, class A1, class A2, class A3> result_type operator()(F & f, A1 & a1, A2 & a2, A3 & a3) const
{
return f(a1, a2, a3);
}
template<class F, class A1, class A2, class A3, class A4> result_type operator()(F & f, A1 & a1, A2 & a2, A3 & a3, A4 & a4) const
{
return f(a1, a2, a3, a4);
}
template<class F, class A1, class A2, class A3, class A4, class A5> result_type operator()(F & f, A1 & a1, A2 & a2, A3 & a3, A4 & a4, A5 & a5) const
{
return f(a1, a2, a3, a4, a5);
}
template<class F, class A1, class A2, class A3, class A4, class A5, class A6> result_type operator()(F & f, A1 & a1, A2 & a2, A3 & a3, A4 & a4, A5 & a5, A6 & a6) const
{
return f(a1, a2, a3, a4, a5, a6);
}
template<class F, class A1, class A2, class A3, class A4, class A5, class A6, class A7> result_type operator()(F & f, A1 & a1, A2 & a2, A3 & a3, A4 & a4, A5 & a5, A6 & a6, A7 & a7) const
{
return f(a1, a2, a3, a4, a5, a6, a7);
}
template<class F, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8> result_type operator()(F & f, A1 & a1, A2 & a2, A3 & a3, A4 & a4, A5 & a5, A6 & a6, A7 & a7, A8 & a8) const
{
return f(a1, a2, a3, a4, a5, a6, a7, a8);
}
template<class F, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9> result_type operator()(F & f, A1 & a1, A2 & a2, A3 & a3, A4 & a4, A5 & a5, A6 & a6, A7 & a7, A8 & a8, A9 & a9) const
{
return f(a1, a2, a3, a4, a5, a6, a7, a8, a9);
}
};
} // namespace boost
#endif // #ifndef BOOST_BIND_APPLY_HPP_INCLUDED
+62
View File
@@ -0,0 +1,62 @@
#ifndef BOOST_BIND_ARG_HPP_INCLUDED
#define BOOST_BIND_ARG_HPP_INCLUDED
// MS compatible compilers support #pragma once
#if defined(_MSC_VER) && (_MSC_VER >= 1020)
# pragma once
#endif
//
// bind/arg.hpp
//
// Copyright (c) 2002 Peter Dimov and Multi Media Ltd.
//
// Distributed under the Boost Software License, Version 1.0. (See
// accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
//
// See http://www.boost.org/libs/bind/bind.html for documentation.
//
#include <boost/config.hpp>
#include <boost/is_placeholder.hpp>
namespace boost
{
template< int I > struct arg
{
arg()
{
}
template< class T > arg( T const & /* t */ )
{
// static assert I == is_placeholder<T>::value
typedef char T_must_be_placeholder[ I == is_placeholder<T>::value? 1: -1 ];
}
};
template< int I > bool operator==( arg<I> const &, arg<I> const & )
{
return true;
}
#if !defined( BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION )
template< int I > struct is_placeholder< arg<I> >
{
enum _vt { value = I };
};
template< int I > struct is_placeholder< arg<I> (*) () >
{
enum _vt { value = I };
};
#endif
} // namespace boost
#endif // #ifndef BOOST_BIND_ARG_HPP_INCLUDED
File diff suppressed because it is too large Load Diff
+117
View File
@@ -0,0 +1,117 @@
//
// bind/bind_cc.hpp - support for different calling conventions
//
// Do not include this header directly.
//
// Copyright (c) 2001 Peter Dimov and Multi Media Ltd.
//
// Distributed under the Boost Software License, Version 1.0. (See
// accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
//
// See http://www.boost.org/libs/bind/bind.html for documentation.
//
template<class R>
_bi::bind_t<R, BOOST_BIND_ST R (BOOST_BIND_CC *) (), _bi::list0>
BOOST_BIND(BOOST_BIND_ST R (BOOST_BIND_CC *f) ())
{
typedef BOOST_BIND_ST R (BOOST_BIND_CC *F) ();
typedef _bi::list0 list_type;
return _bi::bind_t<R, F, list_type> (f, list_type());
}
template<class R, class B1, class A1>
_bi::bind_t<R, BOOST_BIND_ST R (BOOST_BIND_CC *) (B1), typename _bi::list_av_1<A1>::type>
BOOST_BIND(BOOST_BIND_ST R (BOOST_BIND_CC *f) (B1), A1 a1)
{
typedef BOOST_BIND_ST R (BOOST_BIND_CC *F) (B1);
typedef typename _bi::list_av_1<A1>::type list_type;
return _bi::bind_t<R, F, list_type> (f, list_type(a1));
}
template<class R, class B1, class B2, class A1, class A2>
_bi::bind_t<R, BOOST_BIND_ST R (BOOST_BIND_CC *) (B1, B2), typename _bi::list_av_2<A1, A2>::type>
BOOST_BIND(BOOST_BIND_ST R (BOOST_BIND_CC *f) (B1, B2), A1 a1, A2 a2)
{
typedef BOOST_BIND_ST R (BOOST_BIND_CC *F) (B1, B2);
typedef typename _bi::list_av_2<A1, A2>::type list_type;
return _bi::bind_t<R, F, list_type> (f, list_type(a1, a2));
}
template<class R,
class B1, class B2, class B3,
class A1, class A2, class A3>
_bi::bind_t<R, BOOST_BIND_ST R (BOOST_BIND_CC *) (B1, B2, B3), typename _bi::list_av_3<A1, A2, A3>::type>
BOOST_BIND(BOOST_BIND_ST R (BOOST_BIND_CC *f) (B1, B2, B3), A1 a1, A2 a2, A3 a3)
{
typedef BOOST_BIND_ST R (BOOST_BIND_CC *F) (B1, B2, B3);
typedef typename _bi::list_av_3<A1, A2, A3>::type list_type;
return _bi::bind_t<R, F, list_type>(f, list_type(a1, a2, a3));
}
template<class R,
class B1, class B2, class B3, class B4,
class A1, class A2, class A3, class A4>
_bi::bind_t<R, BOOST_BIND_ST R (BOOST_BIND_CC *) (B1, B2, B3, B4), typename _bi::list_av_4<A1, A2, A3, A4>::type>
BOOST_BIND(BOOST_BIND_ST R (BOOST_BIND_CC *f) (B1, B2, B3, B4), A1 a1, A2 a2, A3 a3, A4 a4)
{
typedef BOOST_BIND_ST R (BOOST_BIND_CC *F) (B1, B2, B3, B4);
typedef typename _bi::list_av_4<A1, A2, A3, A4>::type list_type;
return _bi::bind_t<R, F, list_type>(f, list_type(a1, a2, a3, a4));
}
template<class R,
class B1, class B2, class B3, class B4, class B5,
class A1, class A2, class A3, class A4, class A5>
_bi::bind_t<R, BOOST_BIND_ST R (BOOST_BIND_CC *) (B1, B2, B3, B4, B5), typename _bi::list_av_5<A1, A2, A3, A4, A5>::type>
BOOST_BIND(BOOST_BIND_ST R (BOOST_BIND_CC *f) (B1, B2, B3, B4, B5), A1 a1, A2 a2, A3 a3, A4 a4, A5 a5)
{
typedef BOOST_BIND_ST R (BOOST_BIND_CC *F) (B1, B2, B3, B4, B5);
typedef typename _bi::list_av_5<A1, A2, A3, A4, A5>::type list_type;
return _bi::bind_t<R, F, list_type>(f, list_type(a1, a2, a3, a4, a5));
}
template<class R,
class B1, class B2, class B3, class B4, class B5, class B6,
class A1, class A2, class A3, class A4, class A5, class A6>
_bi::bind_t<R, BOOST_BIND_ST R (BOOST_BIND_CC *) (B1, B2, B3, B4, B5, B6), typename _bi::list_av_6<A1, A2, A3, A4, A5, A6>::type>
BOOST_BIND(BOOST_BIND_ST R (BOOST_BIND_CC *f) (B1, B2, B3, B4, B5, B6), A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6)
{
typedef BOOST_BIND_ST R (BOOST_BIND_CC *F) (B1, B2, B3, B4, B5, B6);
typedef typename _bi::list_av_6<A1, A2, A3, A4, A5, A6>::type list_type;
return _bi::bind_t<R, F, list_type>(f, list_type(a1, a2, a3, a4, a5, a6));
}
template<class R,
class B1, class B2, class B3, class B4, class B5, class B6, class B7,
class A1, class A2, class A3, class A4, class A5, class A6, class A7>
_bi::bind_t<R, BOOST_BIND_ST R (BOOST_BIND_CC *) (B1, B2, B3, B4, B5, B6, B7), typename _bi::list_av_7<A1, A2, A3, A4, A5, A6, A7>::type>
BOOST_BIND(BOOST_BIND_ST R (BOOST_BIND_CC *f) (B1, B2, B3, B4, B5, B6, B7), A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7)
{
typedef BOOST_BIND_ST R (BOOST_BIND_CC *F) (B1, B2, B3, B4, B5, B6, B7);
typedef typename _bi::list_av_7<A1, A2, A3, A4, A5, A6, A7>::type list_type;
return _bi::bind_t<R, F, list_type>(f, list_type(a1, a2, a3, a4, a5, a6, a7));
}
template<class R,
class B1, class B2, class B3, class B4, class B5, class B6, class B7, class B8,
class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8>
_bi::bind_t<R, BOOST_BIND_ST R (BOOST_BIND_CC *) (B1, B2, B3, B4, B5, B6, B7, B8), typename _bi::list_av_8<A1, A2, A3, A4, A5, A6, A7, A8>::type>
BOOST_BIND(BOOST_BIND_ST R (BOOST_BIND_CC *f) (B1, B2, B3, B4, B5, B6, B7, B8), A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8)
{
typedef BOOST_BIND_ST R (BOOST_BIND_CC *F) (B1, B2, B3, B4, B5, B6, B7, B8);
typedef typename _bi::list_av_8<A1, A2, A3, A4, A5, A6, A7, A8>::type list_type;
return _bi::bind_t<R, F, list_type>(f, list_type(a1, a2, a3, a4, a5, a6, a7, a8));
}
template<class R,
class B1, class B2, class B3, class B4, class B5, class B6, class B7, class B8, class B9,
class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9>
_bi::bind_t<R, BOOST_BIND_ST R (BOOST_BIND_CC *) (B1, B2, B3, B4, B5, B6, B7, B8, B9), typename _bi::list_av_9<A1, A2, A3, A4, A5, A6, A7, A8, A9>::type>
BOOST_BIND(BOOST_BIND_ST R (BOOST_BIND_CC *f) (B1, B2, B3, B4, B5, B6, B7, B8, B9), A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9)
{
typedef BOOST_BIND_ST R (BOOST_BIND_CC *F) (B1, B2, B3, B4, B5, B6, B7, B8, B9);
typedef typename _bi::list_av_9<A1, A2, A3, A4, A5, A6, A7, A8, A9>::type list_type;
return _bi::bind_t<R, F, list_type>(f, list_type(a1, a2, a3, a4, a5, a6, a7, a8, a9));
}
+228
View File
@@ -0,0 +1,228 @@
//
// bind/bind_mf2_cc.hpp - member functions, type<> syntax
//
// Do not include this header directly.
//
// Copyright (c) 2001 Peter Dimov and Multi Media Ltd.
// Copyright (c) 2008 Peter Dimov
//
// Distributed under the Boost Software License, Version 1.0.
// See accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt
//
// See http://www.boost.org/libs/bind/bind.html for documentation.
//
// 0
template<class Rt2, class R, class T,
class A1>
_bi::bind_t<Rt2, _mfi::BOOST_BIND_MF_NAME(mf0)<R, T>, typename _bi::list_av_1<A1>::type>
BOOST_BIND(boost::type<Rt2>, R (BOOST_BIND_MF_CC T::*f) (), A1 a1)
{
typedef _mfi::BOOST_BIND_MF_NAME(mf0)<R, T> F;
typedef typename _bi::list_av_1<A1>::type list_type;
return _bi::bind_t<Rt2, F, list_type>(F(f), list_type(a1));
}
template<class Rt2, class R, class T,
class A1>
_bi::bind_t<Rt2, _mfi::BOOST_BIND_MF_NAME(cmf0)<R, T>, typename _bi::list_av_1<A1>::type>
BOOST_BIND(boost::type<Rt2>, R (BOOST_BIND_MF_CC T::*f) () const, A1 a1)
{
typedef _mfi::BOOST_BIND_MF_NAME(cmf0)<R, T> F;
typedef typename _bi::list_av_1<A1>::type list_type;
return _bi::bind_t<Rt2, F, list_type>(F(f), list_type(a1));
}
// 1
template<class Rt2, class R, class T,
class B1,
class A1, class A2>
_bi::bind_t<Rt2, _mfi::BOOST_BIND_MF_NAME(mf1)<R, T, B1>, typename _bi::list_av_2<A1, A2>::type>
BOOST_BIND(boost::type<Rt2>, R (BOOST_BIND_MF_CC T::*f) (B1), A1 a1, A2 a2)
{
typedef _mfi::BOOST_BIND_MF_NAME(mf1)<R, T, B1> F;
typedef typename _bi::list_av_2<A1, A2>::type list_type;
return _bi::bind_t<Rt2, F, list_type>(F(f), list_type(a1, a2));
}
template<class Rt2, class R, class T,
class B1,
class A1, class A2>
_bi::bind_t<Rt2, _mfi::BOOST_BIND_MF_NAME(cmf1)<R, T, B1>, typename _bi::list_av_2<A1, A2>::type>
BOOST_BIND(boost::type<Rt2>, R (BOOST_BIND_MF_CC T::*f) (B1) const, A1 a1, A2 a2)
{
typedef _mfi::BOOST_BIND_MF_NAME(cmf1)<R, T, B1> F;
typedef typename _bi::list_av_2<A1, A2>::type list_type;
return _bi::bind_t<Rt2, F, list_type>(F(f), list_type(a1, a2));
}
// 2
template<class Rt2, class R, class T,
class B1, class B2,
class A1, class A2, class A3>
_bi::bind_t<Rt2, _mfi::BOOST_BIND_MF_NAME(mf2)<R, T, B1, B2>, typename _bi::list_av_3<A1, A2, A3>::type>
BOOST_BIND(boost::type<Rt2>, R (BOOST_BIND_MF_CC T::*f) (B1, B2), A1 a1, A2 a2, A3 a3)
{
typedef _mfi::BOOST_BIND_MF_NAME(mf2)<R, T, B1, B2> F;
typedef typename _bi::list_av_3<A1, A2, A3>::type list_type;
return _bi::bind_t<Rt2, F, list_type>(F(f), list_type(a1, a2, a3));
}
template<class Rt2, class R, class T,
class B1, class B2,
class A1, class A2, class A3>
_bi::bind_t<Rt2, _mfi::BOOST_BIND_MF_NAME(cmf2)<R, T, B1, B2>, typename _bi::list_av_3<A1, A2, A3>::type>
BOOST_BIND(boost::type<Rt2>, R (BOOST_BIND_MF_CC T::*f) (B1, B2) const, A1 a1, A2 a2, A3 a3)
{
typedef _mfi::BOOST_BIND_MF_NAME(cmf2)<R, T, B1, B2> F;
typedef typename _bi::list_av_3<A1, A2, A3>::type list_type;
return _bi::bind_t<Rt2, F, list_type>(F(f), list_type(a1, a2, a3));
}
// 3
template<class Rt2, class R, class T,
class B1, class B2, class B3,
class A1, class A2, class A3, class A4>
_bi::bind_t<Rt2, _mfi::BOOST_BIND_MF_NAME(mf3)<R, T, B1, B2, B3>, typename _bi::list_av_4<A1, A2, A3, A4>::type>
BOOST_BIND(boost::type<Rt2>, R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3), A1 a1, A2 a2, A3 a3, A4 a4)
{
typedef _mfi::BOOST_BIND_MF_NAME(mf3)<R, T, B1, B2, B3> F;
typedef typename _bi::list_av_4<A1, A2, A3, A4>::type list_type;
return _bi::bind_t<Rt2, F, list_type>(F(f), list_type(a1, a2, a3, a4));
}
template<class Rt2, class R, class T,
class B1, class B2, class B3,
class A1, class A2, class A3, class A4>
_bi::bind_t<Rt2, _mfi::BOOST_BIND_MF_NAME(cmf3)<R, T, B1, B2, B3>, typename _bi::list_av_4<A1, A2, A3, A4>::type>
BOOST_BIND(boost::type<Rt2>, R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3) const, A1 a1, A2 a2, A3 a3, A4 a4)
{
typedef _mfi::BOOST_BIND_MF_NAME(cmf3)<R, T, B1, B2, B3> F;
typedef typename _bi::list_av_4<A1, A2, A3, A4>::type list_type;
return _bi::bind_t<Rt2, F, list_type>(F(f), list_type(a1, a2, a3, a4));
}
// 4
template<class Rt2, class R, class T,
class B1, class B2, class B3, class B4,
class A1, class A2, class A3, class A4, class A5>
_bi::bind_t<Rt2, _mfi::BOOST_BIND_MF_NAME(mf4)<R, T, B1, B2, B3, B4>, typename _bi::list_av_5<A1, A2, A3, A4, A5>::type>
BOOST_BIND(boost::type<Rt2>, R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4), A1 a1, A2 a2, A3 a3, A4 a4, A5 a5)
{
typedef _mfi::BOOST_BIND_MF_NAME(mf4)<R, T, B1, B2, B3, B4> F;
typedef typename _bi::list_av_5<A1, A2, A3, A4, A5>::type list_type;
return _bi::bind_t<Rt2, F, list_type>(F(f), list_type(a1, a2, a3, a4, a5));
}
template<class Rt2, class R, class T,
class B1, class B2, class B3, class B4,
class A1, class A2, class A3, class A4, class A5>
_bi::bind_t<Rt2, _mfi::BOOST_BIND_MF_NAME(cmf4)<R, T, B1, B2, B3, B4>, typename _bi::list_av_5<A1, A2, A3, A4, A5>::type>
BOOST_BIND(boost::type<Rt2>, R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4) const, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5)
{
typedef _mfi::BOOST_BIND_MF_NAME(cmf4)<R, T, B1, B2, B3, B4> F;
typedef typename _bi::list_av_5<A1, A2, A3, A4, A5>::type list_type;
return _bi::bind_t<Rt2, F, list_type>(F(f), list_type(a1, a2, a3, a4, a5));
}
// 5
template<class Rt2, class R, class T,
class B1, class B2, class B3, class B4, class B5,
class A1, class A2, class A3, class A4, class A5, class A6>
_bi::bind_t<Rt2, _mfi::BOOST_BIND_MF_NAME(mf5)<R, T, B1, B2, B3, B4, B5>, typename _bi::list_av_6<A1, A2, A3, A4, A5, A6>::type>
BOOST_BIND(boost::type<Rt2>, R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5), A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6)
{
typedef _mfi::BOOST_BIND_MF_NAME(mf5)<R, T, B1, B2, B3, B4, B5> F;
typedef typename _bi::list_av_6<A1, A2, A3, A4, A5, A6>::type list_type;
return _bi::bind_t<Rt2, F, list_type>(F(f), list_type(a1, a2, a3, a4, a5, a6));
}
template<class Rt2, class R, class T,
class B1, class B2, class B3, class B4, class B5,
class A1, class A2, class A3, class A4, class A5, class A6>
_bi::bind_t<Rt2, _mfi::BOOST_BIND_MF_NAME(cmf5)<R, T, B1, B2, B3, B4, B5>, typename _bi::list_av_6<A1, A2, A3, A4, A5, A6>::type>
BOOST_BIND(boost::type<Rt2>, R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5) const, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6)
{
typedef _mfi::BOOST_BIND_MF_NAME(cmf5)<R, T, B1, B2, B3, B4, B5> F;
typedef typename _bi::list_av_6<A1, A2, A3, A4, A5, A6>::type list_type;
return _bi::bind_t<Rt2, F, list_type>(F(f), list_type(a1, a2, a3, a4, a5, a6));
}
// 6
template<class Rt2, class R, class T,
class B1, class B2, class B3, class B4, class B5, class B6,
class A1, class A2, class A3, class A4, class A5, class A6, class A7>
_bi::bind_t<Rt2, _mfi::BOOST_BIND_MF_NAME(mf6)<R, T, B1, B2, B3, B4, B5, B6>, typename _bi::list_av_7<A1, A2, A3, A4, A5, A6, A7>::type>
BOOST_BIND(boost::type<Rt2>, R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6), A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7)
{
typedef _mfi::BOOST_BIND_MF_NAME(mf6)<R, T, B1, B2, B3, B4, B5, B6> F;
typedef typename _bi::list_av_7<A1, A2, A3, A4, A5, A6, A7>::type list_type;
return _bi::bind_t<Rt2, F, list_type>(F(f), list_type(a1, a2, a3, a4, a5, a6, a7));
}
template<class Rt2, class R, class T,
class B1, class B2, class B3, class B4, class B5, class B6,
class A1, class A2, class A3, class A4, class A5, class A6, class A7>
_bi::bind_t<Rt2, _mfi::BOOST_BIND_MF_NAME(cmf6)<R, T, B1, B2, B3, B4, B5, B6>, typename _bi::list_av_7<A1, A2, A3, A4, A5, A6, A7>::type>
BOOST_BIND(boost::type<Rt2>, R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6) const, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7)
{
typedef _mfi::BOOST_BIND_MF_NAME(cmf6)<R, T, B1, B2, B3, B4, B5, B6> F;
typedef typename _bi::list_av_7<A1, A2, A3, A4, A5, A6, A7>::type list_type;
return _bi::bind_t<Rt2, F, list_type>(F(f), list_type(a1, a2, a3, a4, a5, a6, a7));
}
// 7
template<class Rt2, class R, class T,
class B1, class B2, class B3, class B4, class B5, class B6, class B7,
class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8>
_bi::bind_t<Rt2, _mfi::BOOST_BIND_MF_NAME(mf7)<R, T, B1, B2, B3, B4, B5, B6, B7>, typename _bi::list_av_8<A1, A2, A3, A4, A5, A6, A7, A8>::type>
BOOST_BIND(boost::type<Rt2>, R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6, B7), A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8)
{
typedef _mfi::BOOST_BIND_MF_NAME(mf7)<R, T, B1, B2, B3, B4, B5, B6, B7> F;
typedef typename _bi::list_av_8<A1, A2, A3, A4, A5, A6, A7, A8>::type list_type;
return _bi::bind_t<Rt2, F, list_type>(F(f), list_type(a1, a2, a3, a4, a5, a6, a7, a8));
}
template<class Rt2, class R, class T,
class B1, class B2, class B3, class B4, class B5, class B6, class B7,
class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8>
_bi::bind_t<Rt2, _mfi::BOOST_BIND_MF_NAME(cmf7)<R, T, B1, B2, B3, B4, B5, B6, B7>, typename _bi::list_av_8<A1, A2, A3, A4, A5, A6, A7, A8>::type>
BOOST_BIND(boost::type<Rt2>, R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6, B7) const, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8)
{
typedef _mfi::BOOST_BIND_MF_NAME(cmf7)<R, T, B1, B2, B3, B4, B5, B6, B7> F;
typedef typename _bi::list_av_8<A1, A2, A3, A4, A5, A6, A7, A8>::type list_type;
return _bi::bind_t<Rt2, F, list_type>(F(f), list_type(a1, a2, a3, a4, a5, a6, a7, a8));
}
// 8
template<class Rt2, class R, class T,
class B1, class B2, class B3, class B4, class B5, class B6, class B7, class B8,
class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9>
_bi::bind_t<Rt2, _mfi::BOOST_BIND_MF_NAME(mf8)<R, T, B1, B2, B3, B4, B5, B6, B7, B8>, typename _bi::list_av_9<A1, A2, A3, A4, A5, A6, A7, A8, A9>::type>
BOOST_BIND(boost::type<Rt2>, R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6, B7, B8), A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9)
{
typedef _mfi::BOOST_BIND_MF_NAME(mf8)<R, T, B1, B2, B3, B4, B5, B6, B7, B8> F;
typedef typename _bi::list_av_9<A1, A2, A3, A4, A5, A6, A7, A8, A9>::type list_type;
return _bi::bind_t<Rt2, F, list_type>(F(f), list_type(a1, a2, a3, a4, a5, a6, a7, a8, a9));
}
template<class Rt2, class R, class T,
class B1, class B2, class B3, class B4, class B5, class B6, class B7, class B8,
class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9>
_bi::bind_t<Rt2, _mfi::BOOST_BIND_MF_NAME(cmf8)<R, T, B1, B2, B3, B4, B5, B6, B7, B8>, typename _bi::list_av_9<A1, A2, A3, A4, A5, A6, A7, A8, A9>::type>
BOOST_BIND(boost::type<Rt2>, R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6, B7, B8) const, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9)
{
typedef _mfi::BOOST_BIND_MF_NAME(cmf8)<R, T, B1, B2, B3, B4, B5, B6, B7, B8> F;
typedef typename _bi::list_av_9<A1, A2, A3, A4, A5, A6, A7, A8, A9>::type list_type;
return _bi::bind_t<Rt2, F, list_type>(F(f), list_type(a1, a2, a3, a4, a5, a6, a7, a8, a9));
}
+227
View File
@@ -0,0 +1,227 @@
//
// bind/bind_mf_cc.hpp - support for different calling conventions
//
// Do not include this header directly.
//
// Copyright (c) 2001 Peter Dimov and Multi Media Ltd.
//
// Distributed under the Boost Software License, Version 1.0. (See
// accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
//
// See http://www.boost.org/libs/bind/bind.html for documentation.
//
// 0
template<class R, class T,
class A1>
_bi::bind_t<R, _mfi::BOOST_BIND_MF_NAME(mf0)<R, T>, typename _bi::list_av_1<A1>::type>
BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (), A1 a1)
{
typedef _mfi::BOOST_BIND_MF_NAME(mf0)<R, T> F;
typedef typename _bi::list_av_1<A1>::type list_type;
return _bi::bind_t<R, F, list_type>(F(f), list_type(a1));
}
template<class R, class T,
class A1>
_bi::bind_t<R, _mfi::BOOST_BIND_MF_NAME(cmf0)<R, T>, typename _bi::list_av_1<A1>::type>
BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) () const, A1 a1)
{
typedef _mfi::BOOST_BIND_MF_NAME(cmf0)<R, T> F;
typedef typename _bi::list_av_1<A1>::type list_type;
return _bi::bind_t<R, F, list_type>(F(f), list_type(a1));
}
// 1
template<class R, class T,
class B1,
class A1, class A2>
_bi::bind_t<R, _mfi::BOOST_BIND_MF_NAME(mf1)<R, T, B1>, typename _bi::list_av_2<A1, A2>::type>
BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1), A1 a1, A2 a2)
{
typedef _mfi::BOOST_BIND_MF_NAME(mf1)<R, T, B1> F;
typedef typename _bi::list_av_2<A1, A2>::type list_type;
return _bi::bind_t<R, F, list_type>(F(f), list_type(a1, a2));
}
template<class R, class T,
class B1,
class A1, class A2>
_bi::bind_t<R, _mfi::BOOST_BIND_MF_NAME(cmf1)<R, T, B1>, typename _bi::list_av_2<A1, A2>::type>
BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1) const, A1 a1, A2 a2)
{
typedef _mfi::BOOST_BIND_MF_NAME(cmf1)<R, T, B1> F;
typedef typename _bi::list_av_2<A1, A2>::type list_type;
return _bi::bind_t<R, F, list_type>(F(f), list_type(a1, a2));
}
// 2
template<class R, class T,
class B1, class B2,
class A1, class A2, class A3>
_bi::bind_t<R, _mfi::BOOST_BIND_MF_NAME(mf2)<R, T, B1, B2>, typename _bi::list_av_3<A1, A2, A3>::type>
BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2), A1 a1, A2 a2, A3 a3)
{
typedef _mfi::BOOST_BIND_MF_NAME(mf2)<R, T, B1, B2> F;
typedef typename _bi::list_av_3<A1, A2, A3>::type list_type;
return _bi::bind_t<R, F, list_type>(F(f), list_type(a1, a2, a3));
}
template<class R, class T,
class B1, class B2,
class A1, class A2, class A3>
_bi::bind_t<R, _mfi::BOOST_BIND_MF_NAME(cmf2)<R, T, B1, B2>, typename _bi::list_av_3<A1, A2, A3>::type>
BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2) const, A1 a1, A2 a2, A3 a3)
{
typedef _mfi::BOOST_BIND_MF_NAME(cmf2)<R, T, B1, B2> F;
typedef typename _bi::list_av_3<A1, A2, A3>::type list_type;
return _bi::bind_t<R, F, list_type>(F(f), list_type(a1, a2, a3));
}
// 3
template<class R, class T,
class B1, class B2, class B3,
class A1, class A2, class A3, class A4>
_bi::bind_t<R, _mfi::BOOST_BIND_MF_NAME(mf3)<R, T, B1, B2, B3>, typename _bi::list_av_4<A1, A2, A3, A4>::type>
BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3), A1 a1, A2 a2, A3 a3, A4 a4)
{
typedef _mfi::BOOST_BIND_MF_NAME(mf3)<R, T, B1, B2, B3> F;
typedef typename _bi::list_av_4<A1, A2, A3, A4>::type list_type;
return _bi::bind_t<R, F, list_type>(F(f), list_type(a1, a2, a3, a4));
}
template<class R, class T,
class B1, class B2, class B3,
class A1, class A2, class A3, class A4>
_bi::bind_t<R, _mfi::BOOST_BIND_MF_NAME(cmf3)<R, T, B1, B2, B3>, typename _bi::list_av_4<A1, A2, A3, A4>::type>
BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3) const, A1 a1, A2 a2, A3 a3, A4 a4)
{
typedef _mfi::BOOST_BIND_MF_NAME(cmf3)<R, T, B1, B2, B3> F;
typedef typename _bi::list_av_4<A1, A2, A3, A4>::type list_type;
return _bi::bind_t<R, F, list_type>(F(f), list_type(a1, a2, a3, a4));
}
// 4
template<class R, class T,
class B1, class B2, class B3, class B4,
class A1, class A2, class A3, class A4, class A5>
_bi::bind_t<R, _mfi::BOOST_BIND_MF_NAME(mf4)<R, T, B1, B2, B3, B4>, typename _bi::list_av_5<A1, A2, A3, A4, A5>::type>
BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4), A1 a1, A2 a2, A3 a3, A4 a4, A5 a5)
{
typedef _mfi::BOOST_BIND_MF_NAME(mf4)<R, T, B1, B2, B3, B4> F;
typedef typename _bi::list_av_5<A1, A2, A3, A4, A5>::type list_type;
return _bi::bind_t<R, F, list_type>(F(f), list_type(a1, a2, a3, a4, a5));
}
template<class R, class T,
class B1, class B2, class B3, class B4,
class A1, class A2, class A3, class A4, class A5>
_bi::bind_t<R, _mfi::BOOST_BIND_MF_NAME(cmf4)<R, T, B1, B2, B3, B4>, typename _bi::list_av_5<A1, A2, A3, A4, A5>::type>
BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4) const, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5)
{
typedef _mfi::BOOST_BIND_MF_NAME(cmf4)<R, T, B1, B2, B3, B4> F;
typedef typename _bi::list_av_5<A1, A2, A3, A4, A5>::type list_type;
return _bi::bind_t<R, F, list_type>(F(f), list_type(a1, a2, a3, a4, a5));
}
// 5
template<class R, class T,
class B1, class B2, class B3, class B4, class B5,
class A1, class A2, class A3, class A4, class A5, class A6>
_bi::bind_t<R, _mfi::BOOST_BIND_MF_NAME(mf5)<R, T, B1, B2, B3, B4, B5>, typename _bi::list_av_6<A1, A2, A3, A4, A5, A6>::type>
BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5), A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6)
{
typedef _mfi::BOOST_BIND_MF_NAME(mf5)<R, T, B1, B2, B3, B4, B5> F;
typedef typename _bi::list_av_6<A1, A2, A3, A4, A5, A6>::type list_type;
return _bi::bind_t<R, F, list_type>(F(f), list_type(a1, a2, a3, a4, a5, a6));
}
template<class R, class T,
class B1, class B2, class B3, class B4, class B5,
class A1, class A2, class A3, class A4, class A5, class A6>
_bi::bind_t<R, _mfi::BOOST_BIND_MF_NAME(cmf5)<R, T, B1, B2, B3, B4, B5>, typename _bi::list_av_6<A1, A2, A3, A4, A5, A6>::type>
BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5) const, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6)
{
typedef _mfi::BOOST_BIND_MF_NAME(cmf5)<R, T, B1, B2, B3, B4, B5> F;
typedef typename _bi::list_av_6<A1, A2, A3, A4, A5, A6>::type list_type;
return _bi::bind_t<R, F, list_type>(F(f), list_type(a1, a2, a3, a4, a5, a6));
}
// 6
template<class R, class T,
class B1, class B2, class B3, class B4, class B5, class B6,
class A1, class A2, class A3, class A4, class A5, class A6, class A7>
_bi::bind_t<R, _mfi::BOOST_BIND_MF_NAME(mf6)<R, T, B1, B2, B3, B4, B5, B6>, typename _bi::list_av_7<A1, A2, A3, A4, A5, A6, A7>::type>
BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6), A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7)
{
typedef _mfi::BOOST_BIND_MF_NAME(mf6)<R, T, B1, B2, B3, B4, B5, B6> F;
typedef typename _bi::list_av_7<A1, A2, A3, A4, A5, A6, A7>::type list_type;
return _bi::bind_t<R, F, list_type>(F(f), list_type(a1, a2, a3, a4, a5, a6, a7));
}
template<class R, class T,
class B1, class B2, class B3, class B4, class B5, class B6,
class A1, class A2, class A3, class A4, class A5, class A6, class A7>
_bi::bind_t<R, _mfi::BOOST_BIND_MF_NAME(cmf6)<R, T, B1, B2, B3, B4, B5, B6>, typename _bi::list_av_7<A1, A2, A3, A4, A5, A6, A7>::type>
BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6) const, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7)
{
typedef _mfi::BOOST_BIND_MF_NAME(cmf6)<R, T, B1, B2, B3, B4, B5, B6> F;
typedef typename _bi::list_av_7<A1, A2, A3, A4, A5, A6, A7>::type list_type;
return _bi::bind_t<R, F, list_type>(F(f), list_type(a1, a2, a3, a4, a5, a6, a7));
}
// 7
template<class R, class T,
class B1, class B2, class B3, class B4, class B5, class B6, class B7,
class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8>
_bi::bind_t<R, _mfi::BOOST_BIND_MF_NAME(mf7)<R, T, B1, B2, B3, B4, B5, B6, B7>, typename _bi::list_av_8<A1, A2, A3, A4, A5, A6, A7, A8>::type>
BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6, B7), A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8)
{
typedef _mfi::BOOST_BIND_MF_NAME(mf7)<R, T, B1, B2, B3, B4, B5, B6, B7> F;
typedef typename _bi::list_av_8<A1, A2, A3, A4, A5, A6, A7, A8>::type list_type;
return _bi::bind_t<R, F, list_type>(F(f), list_type(a1, a2, a3, a4, a5, a6, a7, a8));
}
template<class R, class T,
class B1, class B2, class B3, class B4, class B5, class B6, class B7,
class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8>
_bi::bind_t<R, _mfi::BOOST_BIND_MF_NAME(cmf7)<R, T, B1, B2, B3, B4, B5, B6, B7>, typename _bi::list_av_8<A1, A2, A3, A4, A5, A6, A7, A8>::type>
BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6, B7) const, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8)
{
typedef _mfi::BOOST_BIND_MF_NAME(cmf7)<R, T, B1, B2, B3, B4, B5, B6, B7> F;
typedef typename _bi::list_av_8<A1, A2, A3, A4, A5, A6, A7, A8>::type list_type;
return _bi::bind_t<R, F, list_type>(F(f), list_type(a1, a2, a3, a4, a5, a6, a7, a8));
}
// 8
template<class R, class T,
class B1, class B2, class B3, class B4, class B5, class B6, class B7, class B8,
class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9>
_bi::bind_t<R, _mfi::BOOST_BIND_MF_NAME(mf8)<R, T, B1, B2, B3, B4, B5, B6, B7, B8>, typename _bi::list_av_9<A1, A2, A3, A4, A5, A6, A7, A8, A9>::type>
BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6, B7, B8), A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9)
{
typedef _mfi::BOOST_BIND_MF_NAME(mf8)<R, T, B1, B2, B3, B4, B5, B6, B7, B8> F;
typedef typename _bi::list_av_9<A1, A2, A3, A4, A5, A6, A7, A8, A9>::type list_type;
return _bi::bind_t<R, F, list_type>(F(f), list_type(a1, a2, a3, a4, a5, a6, a7, a8, a9));
}
template<class R, class T,
class B1, class B2, class B3, class B4, class B5, class B6, class B7, class B8,
class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9>
_bi::bind_t<R, _mfi::BOOST_BIND_MF_NAME(cmf8)<R, T, B1, B2, B3, B4, B5, B6, B7, B8>, typename _bi::list_av_9<A1, A2, A3, A4, A5, A6, A7, A8, A9>::type>
BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6, B7, B8) const, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9)
{
typedef _mfi::BOOST_BIND_MF_NAME(cmf8)<R, T, B1, B2, B3, B4, B5, B6, B7, B8> F;
typedef typename _bi::list_av_9<A1, A2, A3, A4, A5, A6, A7, A8, A9>::type list_type;
return _bi::bind_t<R, F, list_type>(F(f), list_type(a1, a2, a3, a4, a5, a6, a7, a8, a9));
}
+345
View File
@@ -0,0 +1,345 @@
//
// bind/bind_template.hpp
//
// Do not include this header directly.
//
// Copyright (c) 2001-2004 Peter Dimov and Multi Media Ltd.
//
// Distributed under the Boost Software License, Version 1.0. (See
// accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
//
// See http://www.boost.org/libs/bind/bind.html for documentation.
//
typedef typename result_traits<R, F>::type result_type;
result_type operator()()
{
list0 a;
BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
}
result_type operator()() const
{
list0 a;
BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
}
template<class A1> result_type operator()(A1 & a1)
{
list1<A1 &> a(a1);
BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
}
template<class A1> result_type operator()(A1 & a1) const
{
list1<A1 &> a(a1);
BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
}
#if !defined(BOOST_NO_FUNCTION_TEMPLATE_ORDERING) \
&& !BOOST_WORKAROUND(__EDG_VERSION__, <= 238)
template<class A1> result_type operator()(A1 const & a1)
{
list1<A1 const &> a(a1);
BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
}
template<class A1> result_type operator()(A1 const & a1) const
{
list1<A1 const &> a(a1);
BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
}
#endif
template<class A1, class A2> result_type operator()(A1 & a1, A2 & a2)
{
list2<A1 &, A2 &> a(a1, a2);
BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
}
template<class A1, class A2> result_type operator()(A1 & a1, A2 & a2) const
{
list2<A1 &, A2 &> a(a1, a2);
BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
}
#if !defined(BOOST_NO_FUNCTION_TEMPLATE_ORDERING) \
&& !BOOST_WORKAROUND(__EDG_VERSION__, <= 238)
template<class A1, class A2> result_type operator()(A1 const & a1, A2 & a2)
{
list2<A1 const &, A2 &> a(a1, a2);
BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
}
template<class A1, class A2> result_type operator()(A1 const & a1, A2 & a2) const
{
list2<A1 const &, A2 &> a(a1, a2);
BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
}
template<class A1, class A2> result_type operator()(A1 & a1, A2 const & a2)
{
list2<A1 &, A2 const &> a(a1, a2);
BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
}
template<class A1, class A2> result_type operator()(A1 & a1, A2 const & a2) const
{
list2<A1 &, A2 const &> a(a1, a2);
BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
}
template<class A1, class A2> result_type operator()(A1 const & a1, A2 const & a2)
{
list2<A1 const &, A2 const &> a(a1, a2);
BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
}
template<class A1, class A2> result_type operator()(A1 const & a1, A2 const & a2) const
{
list2<A1 const &, A2 const &> a(a1, a2);
BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
}
#endif
template<class A1, class A2, class A3> result_type operator()(A1 & a1, A2 & a2, A3 & a3)
{
list3<A1 &, A2 &, A3 &> a(a1, a2, a3);
BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
}
template<class A1, class A2, class A3> result_type operator()(A1 & a1, A2 & a2, A3 & a3) const
{
list3<A1 &, A2 &, A3 &> a(a1, a2, a3);
BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
}
#if !defined(BOOST_NO_FUNCTION_TEMPLATE_ORDERING) \
&& !BOOST_WORKAROUND(__EDG_VERSION__, <= 238)
template<class A1, class A2, class A3> result_type operator()(A1 const & a1, A2 const & a2, A3 const & a3)
{
list3<A1 const &, A2 const &, A3 const &> a(a1, a2, a3);
BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
}
template<class A1, class A2, class A3> result_type operator()(A1 const & a1, A2 const & a2, A3 const & a3) const
{
list3<A1 const &, A2 const &, A3 const &> a(a1, a2, a3);
BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
}
#endif
template<class A1, class A2, class A3, class A4> result_type operator()(A1 & a1, A2 & a2, A3 & a3, A4 & a4)
{
list4<A1 &, A2 &, A3 &, A4 &> a(a1, a2, a3, a4);
BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
}
template<class A1, class A2, class A3, class A4> result_type operator()(A1 & a1, A2 & a2, A3 & a3, A4 & a4) const
{
list4<A1 &, A2 &, A3 &, A4 &> a(a1, a2, a3, a4);
BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
}
#if !defined(BOOST_NO_FUNCTION_TEMPLATE_ORDERING) \
&& !BOOST_WORKAROUND(__EDG_VERSION__, <= 238)
template<class A1, class A2, class A3, class A4> result_type operator()(A1 const & a1, A2 const & a2, A3 const & a3, A4 const & a4)
{
list4<A1 const &, A2 const &, A3 const &, A4 const &> a(a1, a2, a3, a4);
BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
}
template<class A1, class A2, class A3, class A4> result_type operator()(A1 const & a1, A2 const & a2, A3 const & a3, A4 const & a4) const
{
list4<A1 const &, A2 const &, A3 const &, A4 const &> a(a1, a2, a3, a4);
BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
}
#endif
template<class A1, class A2, class A3, class A4, class A5> result_type operator()(A1 & a1, A2 & a2, A3 & a3, A4 & a4, A5 & a5)
{
list5<A1 &, A2 &, A3 &, A4 &, A5 &> a(a1, a2, a3, a4, a5);
BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
}
template<class A1, class A2, class A3, class A4, class A5> result_type operator()(A1 & a1, A2 & a2, A3 & a3, A4 & a4, A5 & a5) const
{
list5<A1 &, A2 &, A3 &, A4 &, A5 &> a(a1, a2, a3, a4, a5);
BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
}
#if !defined(BOOST_NO_FUNCTION_TEMPLATE_ORDERING) \
&& !BOOST_WORKAROUND(__EDG_VERSION__, <= 238)
template<class A1, class A2, class A3, class A4, class A5> result_type operator()(A1 const & a1, A2 const & a2, A3 const & a3, A4 const & a4, A5 const & a5)
{
list5<A1 const &, A2 const &, A3 const &, A4 const &, A5 const &> a(a1, a2, a3, a4, a5);
BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
}
template<class A1, class A2, class A3, class A4, class A5> result_type operator()(A1 const & a1, A2 const & a2, A3 const & a3, A4 const & a4, A5 const & a5) const
{
list5<A1 const &, A2 const &, A3 const &, A4 const &, A5 const &> a(a1, a2, a3, a4, a5);
BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
}
#endif
template<class A1, class A2, class A3, class A4, class A5, class A6> result_type operator()(A1 & a1, A2 & a2, A3 & a3, A4 & a4, A5 & a5, A6 & a6)
{
list6<A1 &, A2 &, A3 &, A4 &, A5 &, A6 &> a(a1, a2, a3, a4, a5, a6);
BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
}
template<class A1, class A2, class A3, class A4, class A5, class A6> result_type operator()(A1 & a1, A2 & a2, A3 & a3, A4 & a4, A5 & a5, A6 & a6) const
{
list6<A1 &, A2 &, A3 &, A4 &, A5 &, A6 &> a(a1, a2, a3, a4, a5, a6);
BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
}
#if !defined(BOOST_NO_FUNCTION_TEMPLATE_ORDERING) \
&& !BOOST_WORKAROUND(__EDG_VERSION__, <= 238)
template<class A1, class A2, class A3, class A4, class A5, class A6> result_type operator()(A1 const & a1, A2 const & a2, A3 const & a3, A4 const & a4, A5 const & a5, A6 const & a6)
{
list6<A1 const &, A2 const &, A3 const &, A4 const &, A5 const &, A6 const &> a(a1, a2, a3, a4, a5, a6);
BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
}
template<class A1, class A2, class A3, class A4, class A5, class A6> result_type operator()(A1 const & a1, A2 const & a2, A3 const & a3, A4 const & a4, A5 const & a5, A6 const & a6) const
{
list6<A1 const &, A2 const &, A3 const &, A4 const &, A5 const &, A6 const &> a(a1, a2, a3, a4, a5, a6);
BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
}
#endif
template<class A1, class A2, class A3, class A4, class A5, class A6, class A7> result_type operator()(A1 & a1, A2 & a2, A3 & a3, A4 & a4, A5 & a5, A6 & a6, A7 & a7)
{
list7<A1 &, A2 &, A3 &, A4 &, A5 &, A6 &, A7 &> a(a1, a2, a3, a4, a5, a6, a7);
BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
}
template<class A1, class A2, class A3, class A4, class A5, class A6, class A7> result_type operator()(A1 & a1, A2 & a2, A3 & a3, A4 & a4, A5 & a5, A6 & a6, A7 & a7) const
{
list7<A1 &, A2 &, A3 &, A4 &, A5 &, A6 &, A7 &> a(a1, a2, a3, a4, a5, a6, a7);
BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
}
#if !defined(BOOST_NO_FUNCTION_TEMPLATE_ORDERING) \
&& !BOOST_WORKAROUND(__EDG_VERSION__, <= 238)
template<class A1, class A2, class A3, class A4, class A5, class A6, class A7> result_type operator()(A1 const & a1, A2 const & a2, A3 const & a3, A4 const & a4, A5 const & a5, A6 const & a6, A7 const & a7)
{
list7<A1 const &, A2 const &, A3 const &, A4 const &, A5 const &, A6 const &, A7 const &> a(a1, a2, a3, a4, a5, a6, a7);
BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
}
template<class A1, class A2, class A3, class A4, class A5, class A6, class A7> result_type operator()(A1 const & a1, A2 const & a2, A3 const & a3, A4 const & a4, A5 const & a5, A6 const & a6, A7 const & a7) const
{
list7<A1 const &, A2 const &, A3 const &, A4 const &, A5 const &, A6 const &, A7 const &> a(a1, a2, a3, a4, a5, a6, a7);
BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
}
#endif
template<class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8> result_type operator()(A1 & a1, A2 & a2, A3 & a3, A4 & a4, A5 & a5, A6 & a6, A7 & a7, A8 & a8)
{
list8<A1 &, A2 &, A3 &, A4 &, A5 &, A6 &, A7 &, A8 &> a(a1, a2, a3, a4, a5, a6, a7, a8);
BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
}
template<class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8> result_type operator()(A1 & a1, A2 & a2, A3 & a3, A4 & a4, A5 & a5, A6 & a6, A7 & a7, A8 & a8) const
{
list8<A1 &, A2 &, A3 &, A4 &, A5 &, A6 &, A7 &, A8 &> a(a1, a2, a3, a4, a5, a6, a7, a8);
BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
}
#if !defined(BOOST_NO_FUNCTION_TEMPLATE_ORDERING) \
&& !BOOST_WORKAROUND(__EDG_VERSION__, <= 238)
template<class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8> result_type operator()(A1 const & a1, A2 const & a2, A3 const & a3, A4 const & a4, A5 const & a5, A6 const & a6, A7 const & a7, A8 const & a8)
{
list8<A1 const &, A2 const &, A3 const &, A4 const &, A5 const &, A6 const &, A7 const &, A8 const &> a(a1, a2, a3, a4, a5, a6, a7, a8);
BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
}
template<class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8> result_type operator()(A1 const & a1, A2 const & a2, A3 const & a3, A4 const & a4, A5 const & a5, A6 const & a6, A7 const & a7, A8 const & a8) const
{
list8<A1 const &, A2 const &, A3 const &, A4 const &, A5 const &, A6 const &, A7 const &, A8 const &> a(a1, a2, a3, a4, a5, a6, a7, a8);
BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
}
#endif
template<class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9> result_type operator()(A1 & a1, A2 & a2, A3 & a3, A4 & a4, A5 & a5, A6 & a6, A7 & a7, A8 & a8, A9 & a9)
{
list9<A1 &, A2 &, A3 &, A4 &, A5 &, A6 &, A7 &, A8 &, A9 &> a(a1, a2, a3, a4, a5, a6, a7, a8, a9);
BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
}
template<class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9> result_type operator()(A1 & a1, A2 & a2, A3 & a3, A4 & a4, A5 & a5, A6 & a6, A7 & a7, A8 & a8, A9 & a9) const
{
list9<A1 &, A2 &, A3 &, A4 &, A5 &, A6 &, A7 &, A8 &, A9 &> a(a1, a2, a3, a4, a5, a6, a7, a8, a9);
BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
}
#if !defined(BOOST_NO_FUNCTION_TEMPLATE_ORDERING) \
&& !BOOST_WORKAROUND(__EDG_VERSION__, <= 238)
template<class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9> result_type operator()(A1 const & a1, A2 const & a2, A3 const & a3, A4 const & a4, A5 const & a5, A6 const & a6, A7 const & a7, A8 const & a8, A9 const & a9)
{
list9<A1 const &, A2 const &, A3 const &, A4 const &, A5 const &, A6 const &, A7 const &, A8 const &, A9 const &> a(a1, a2, a3, a4, a5, a6, a7, a8, a9);
BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
}
template<class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9> result_type operator()(A1 const & a1, A2 const & a2, A3 const & a3, A4 const & a4, A5 const & a5, A6 const & a6, A7 const & a7, A8 const & a8, A9 const & a9) const
{
list9<A1 const &, A2 const &, A3 const &, A4 const &, A5 const &, A6 const &, A7 const &, A8 const &, A9 const &> a(a1, a2, a3, a4, a5, a6, a7, a8, a9);
BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
}
#endif
template<class A> result_type eval(A & a)
{
BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
}
template<class A> result_type eval(A & a) const
{
BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
}
template<class V> void accept(V & v) const
{
#if !defined( BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP ) && !defined( __BORLANDC__ )
using boost::visit_each;
#endif
BOOST_BIND_VISIT_EACH(v, f_, 0);
l_.accept(v);
}
bool compare(this_type const & rhs) const
{
return ref_compare(f_, rhs.f_, 0) && l_ == rhs.l_;
}
private:
F f_;
L l_;
+187
View File
@@ -0,0 +1,187 @@
#ifndef BOOST_BIND_MAKE_ADAPTABLE_HPP_INCLUDED
#define BOOST_BIND_MAKE_ADAPTABLE_HPP_INCLUDED
//
// make_adaptable.hpp
//
// Copyright (c) 2002 Peter Dimov and Multi Media Ltd.
//
// Distributed under the Boost Software License, Version 1.0. (See
// accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
//
namespace boost
{
namespace _bi
{
template<class R, class F> class af0
{
public:
typedef R result_type;
explicit af0(F f): f_(f)
{
}
result_type operator()()
{
return f_();
}
result_type operator()() const
{
return f_();
}
private:
F f_;
};
template<class R, class A1, class F> class af1
{
public:
typedef R result_type;
typedef A1 argument_type;
typedef A1 arg1_type;
explicit af1(F f): f_(f)
{
}
result_type operator()(A1 a1)
{
return f_(a1);
}
result_type operator()(A1 a1) const
{
return f_(a1);
}
private:
F f_;
};
template<class R, class A1, class A2, class F> class af2
{
public:
typedef R result_type;
typedef A1 first_argument_type;
typedef A2 second_argument_type;
typedef A1 arg1_type;
typedef A2 arg2_type;
explicit af2(F f): f_(f)
{
}
result_type operator()(A1 a1, A2 a2)
{
return f_(a1, a2);
}
result_type operator()(A1 a1, A2 a2) const
{
return f_(a1, a2);
}
private:
F f_;
};
template<class R, class A1, class A2, class A3, class F> class af3
{
public:
typedef R result_type;
typedef A1 arg1_type;
typedef A2 arg2_type;
typedef A3 arg3_type;
explicit af3(F f): f_(f)
{
}
result_type operator()(A1 a1, A2 a2, A3 a3)
{
return f_(a1, a2, a3);
}
result_type operator()(A1 a1, A2 a2, A3 a3) const
{
return f_(a1, a2, a3);
}
private:
F f_;
};
template<class R, class A1, class A2, class A3, class A4, class F> class af4
{
public:
typedef R result_type;
typedef A1 arg1_type;
typedef A2 arg2_type;
typedef A3 arg3_type;
typedef A4 arg4_type;
explicit af4(F f): f_(f)
{
}
result_type operator()(A1 a1, A2 a2, A3 a3, A4 a4)
{
return f_(a1, a2, a3, a4);
}
result_type operator()(A1 a1, A2 a2, A3 a3, A4 a4) const
{
return f_(a1, a2, a3, a4);
}
private:
F f_;
};
} // namespace _bi
template<class R, class F> _bi::af0<R, F> make_adaptable(F f)
{
return _bi::af0<R, F>(f);
}
template<class R, class A1, class F> _bi::af1<R, A1, F> make_adaptable(F f)
{
return _bi::af1<R, A1, F>(f);
}
template<class R, class A1, class A2, class F> _bi::af2<R, A1, A2, F> make_adaptable(F f)
{
return _bi::af2<R, A1, A2, F>(f);
}
template<class R, class A1, class A2, class A3, class F> _bi::af3<R, A1, A2, A3, F> make_adaptable(F f)
{
return _bi::af3<R, A1, A2, A3, F>(f);
}
template<class R, class A1, class A2, class A3, class A4, class F> _bi::af4<R, A1, A2, A3, A4, F> make_adaptable(F f)
{
return _bi::af4<R, A1, A2, A3, A4, F>(f);
}
} // namespace boost
#endif // #ifndef BOOST_BIND_MAKE_ADAPTABLE_HPP_INCLUDED
+389
View File
@@ -0,0 +1,389 @@
#ifndef BOOST_BIND_MEM_FN_HPP_INCLUDED
#define BOOST_BIND_MEM_FN_HPP_INCLUDED
// MS compatible compilers support #pragma once
#if defined(_MSC_VER) && (_MSC_VER >= 1020)
# pragma once
#endif
//
// mem_fn.hpp - a generalization of std::mem_fun[_ref]
//
// Copyright (c) 2001, 2002 Peter Dimov and Multi Media Ltd.
// Copyright (c) 2001 David Abrahams
// Copyright (c) 2003-2005 Peter Dimov
//
// Distributed under the Boost Software License, Version 1.0. (See
// accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
//
// See http://www.boost.org/libs/bind/mem_fn.html for documentation.
//
#include <boost/config.hpp>
#include <boost/get_pointer.hpp>
#include <boost/detail/workaround.hpp>
namespace boost
{
#if defined(BOOST_NO_VOID_RETURNS)
#define BOOST_MEM_FN_CLASS_F , class F
#define BOOST_MEM_FN_TYPEDEF(X)
namespace _mfi // mem_fun_impl
{
template<class V> struct mf
{
#define BOOST_MEM_FN_RETURN return
#define BOOST_MEM_FN_NAME(X) inner_##X
#define BOOST_MEM_FN_CC
#include <boost/bind/mem_fn_template.hpp>
#undef BOOST_MEM_FN_CC
#undef BOOST_MEM_FN_NAME
#ifdef BOOST_MEM_FN_ENABLE_CDECL
#define BOOST_MEM_FN_NAME(X) inner_##X##_cdecl
#define BOOST_MEM_FN_CC __cdecl
#include <boost/bind/mem_fn_template.hpp>
#undef BOOST_MEM_FN_CC
#undef BOOST_MEM_FN_NAME
#endif
#ifdef BOOST_MEM_FN_ENABLE_STDCALL
#define BOOST_MEM_FN_NAME(X) inner_##X##_stdcall
#define BOOST_MEM_FN_CC __stdcall
#include <boost/bind/mem_fn_template.hpp>
#undef BOOST_MEM_FN_CC
#undef BOOST_MEM_FN_NAME
#endif
#ifdef BOOST_MEM_FN_ENABLE_FASTCALL
#define BOOST_MEM_FN_NAME(X) inner_##X##_fastcall
#define BOOST_MEM_FN_CC __fastcall
#include <boost/bind/mem_fn_template.hpp>
#undef BOOST_MEM_FN_CC
#undef BOOST_MEM_FN_NAME
#endif
#undef BOOST_MEM_FN_RETURN
}; // struct mf<V>
template<> struct mf<void>
{
#define BOOST_MEM_FN_RETURN
#define BOOST_MEM_FN_NAME(X) inner_##X
#define BOOST_MEM_FN_CC
#include <boost/bind/mem_fn_template.hpp>
#undef BOOST_MEM_FN_CC
#undef BOOST_MEM_FN_NAME
#ifdef BOOST_MEM_FN_ENABLE_CDECL
#define BOOST_MEM_FN_NAME(X) inner_##X##_cdecl
#define BOOST_MEM_FN_CC __cdecl
#include <boost/bind/mem_fn_template.hpp>
#undef BOOST_MEM_FN_CC
#undef BOOST_MEM_FN_NAME
#endif
#ifdef BOOST_MEM_FN_ENABLE_STDCALL
#define BOOST_MEM_FN_NAME(X) inner_##X##_stdcall
#define BOOST_MEM_FN_CC __stdcall
#include <boost/bind/mem_fn_template.hpp>
#undef BOOST_MEM_FN_CC
#undef BOOST_MEM_FN_NAME
#endif
#ifdef BOOST_MEM_FN_ENABLE_FASTCALL
#define BOOST_MEM_FN_NAME(X) inner_##X##_fastcall
#define BOOST_MEM_FN_CC __fastcall
#include <boost/bind/mem_fn_template.hpp>
#undef BOOST_MEM_FN_CC
#undef BOOST_MEM_FN_NAME
#endif
#undef BOOST_MEM_FN_RETURN
}; // struct mf<void>
#undef BOOST_MEM_FN_CLASS_F
#undef BOOST_MEM_FN_TYPEDEF_F
#define BOOST_MEM_FN_NAME(X) X
#define BOOST_MEM_FN_NAME2(X) inner_##X
#define BOOST_MEM_FN_CC
#include <boost/bind/mem_fn_vw.hpp>
#undef BOOST_MEM_FN_NAME
#undef BOOST_MEM_FN_NAME2
#undef BOOST_MEM_FN_CC
#ifdef BOOST_MEM_FN_ENABLE_CDECL
#define BOOST_MEM_FN_NAME(X) X##_cdecl
#define BOOST_MEM_FN_NAME2(X) inner_##X##_cdecl
#define BOOST_MEM_FN_CC __cdecl
#include <boost/bind/mem_fn_vw.hpp>
#undef BOOST_MEM_FN_NAME
#undef BOOST_MEM_FN_NAME2
#undef BOOST_MEM_FN_CC
#endif
#ifdef BOOST_MEM_FN_ENABLE_STDCALL
#define BOOST_MEM_FN_NAME(X) X##_stdcall
#define BOOST_MEM_FN_NAME2(X) inner_##X##_stdcall
#define BOOST_MEM_FN_CC __stdcall
#include <boost/bind/mem_fn_vw.hpp>
#undef BOOST_MEM_FN_NAME
#undef BOOST_MEM_FN_NAME2
#undef BOOST_MEM_FN_CC
#endif
#ifdef BOOST_MEM_FN_ENABLE_FASTCALL
#define BOOST_MEM_FN_NAME(X) X##_fastcall
#define BOOST_MEM_FN_NAME2(X) inner_##X##_fastcall
#define BOOST_MEM_FN_CC __fastcall
#include <boost/bind/mem_fn_vw.hpp>
#undef BOOST_MEM_FN_NAME
#undef BOOST_MEM_FN_NAME2
#undef BOOST_MEM_FN_CC
#endif
} // namespace _mfi
#else // #ifdef BOOST_NO_VOID_RETURNS
#define BOOST_MEM_FN_CLASS_F
#define BOOST_MEM_FN_TYPEDEF(X) typedef X;
namespace _mfi
{
#define BOOST_MEM_FN_RETURN return
#define BOOST_MEM_FN_NAME(X) X
#define BOOST_MEM_FN_CC
#include <boost/bind/mem_fn_template.hpp>
#undef BOOST_MEM_FN_CC
#undef BOOST_MEM_FN_NAME
#ifdef BOOST_MEM_FN_ENABLE_CDECL
#define BOOST_MEM_FN_NAME(X) X##_cdecl
#define BOOST_MEM_FN_CC __cdecl
#include <boost/bind/mem_fn_template.hpp>
#undef BOOST_MEM_FN_CC
#undef BOOST_MEM_FN_NAME
#endif
#ifdef BOOST_MEM_FN_ENABLE_STDCALL
#define BOOST_MEM_FN_NAME(X) X##_stdcall
#define BOOST_MEM_FN_CC __stdcall
#include <boost/bind/mem_fn_template.hpp>
#undef BOOST_MEM_FN_CC
#undef BOOST_MEM_FN_NAME
#endif
#ifdef BOOST_MEM_FN_ENABLE_FASTCALL
#define BOOST_MEM_FN_NAME(X) X##_fastcall
#define BOOST_MEM_FN_CC __fastcall
#include <boost/bind/mem_fn_template.hpp>
#undef BOOST_MEM_FN_CC
#undef BOOST_MEM_FN_NAME
#endif
#undef BOOST_MEM_FN_RETURN
} // namespace _mfi
#undef BOOST_MEM_FN_CLASS_F
#undef BOOST_MEM_FN_TYPEDEF
#endif // #ifdef BOOST_NO_VOID_RETURNS
#define BOOST_MEM_FN_NAME(X) X
#define BOOST_MEM_FN_CC
#include <boost/bind/mem_fn_cc.hpp>
#undef BOOST_MEM_FN_NAME
#undef BOOST_MEM_FN_CC
#ifdef BOOST_MEM_FN_ENABLE_CDECL
#define BOOST_MEM_FN_NAME(X) X##_cdecl
#define BOOST_MEM_FN_CC __cdecl
#include <boost/bind/mem_fn_cc.hpp>
#undef BOOST_MEM_FN_NAME
#undef BOOST_MEM_FN_CC
#endif
#ifdef BOOST_MEM_FN_ENABLE_STDCALL
#define BOOST_MEM_FN_NAME(X) X##_stdcall
#define BOOST_MEM_FN_CC __stdcall
#include <boost/bind/mem_fn_cc.hpp>
#undef BOOST_MEM_FN_NAME
#undef BOOST_MEM_FN_CC
#endif
#ifdef BOOST_MEM_FN_ENABLE_FASTCALL
#define BOOST_MEM_FN_NAME(X) X##_fastcall
#define BOOST_MEM_FN_CC __fastcall
#include <boost/bind/mem_fn_cc.hpp>
#undef BOOST_MEM_FN_NAME
#undef BOOST_MEM_FN_CC
#endif
// data member support
namespace _mfi
{
template<class R, class T> class dm
{
public:
typedef R const & result_type;
typedef T const * argument_type;
private:
typedef R (T::*F);
F f_;
template<class U> R const & call(U & u, T const *) const
{
return (u.*f_);
}
template<class U> R const & call(U & u, void const *) const
{
return (get_pointer(u)->*f_);
}
public:
explicit dm(F f): f_(f) {}
R & operator()(T * p) const
{
return (p->*f_);
}
R const & operator()(T const * p) const
{
return (p->*f_);
}
template<class U> R const & operator()(U const & u) const
{
return call(u, &u);
}
#if !BOOST_WORKAROUND(BOOST_MSVC, <= 1300) && !BOOST_WORKAROUND(__MWERKS__, < 0x3200)
R & operator()(T & t) const
{
return (t.*f_);
}
R const & operator()(T const & t) const
{
return (t.*f_);
}
#endif
bool operator==(dm const & rhs) const
{
return f_ == rhs.f_;
}
bool operator!=(dm const & rhs) const
{
return f_ != rhs.f_;
}
};
} // namespace _mfi
template<class R, class T> _mfi::dm<R, T> mem_fn(R T::*f)
{
return _mfi::dm<R, T>(f);
}
} // namespace boost
#endif // #ifndef BOOST_BIND_MEM_FN_HPP_INCLUDED
+103
View File
@@ -0,0 +1,103 @@
//
// bind/mem_fn_cc.hpp - support for different calling conventions
//
// Do not include this header directly.
//
// Copyright (c) 2001 Peter Dimov and Multi Media Ltd.
//
// Distributed under the Boost Software License, Version 1.0. (See
// accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
//
// See http://www.boost.org/libs/bind/mem_fn.html for documentation.
//
template<class R, class T> _mfi::BOOST_MEM_FN_NAME(mf0)<R, T> mem_fn(R (BOOST_MEM_FN_CC T::*f) ())
{
return _mfi::BOOST_MEM_FN_NAME(mf0)<R, T>(f);
}
template<class R, class T> _mfi::BOOST_MEM_FN_NAME(cmf0)<R, T> mem_fn(R (BOOST_MEM_FN_CC T::*f) () const)
{
return _mfi::BOOST_MEM_FN_NAME(cmf0)<R, T>(f);
}
template<class R, class T, class A1> _mfi::BOOST_MEM_FN_NAME(mf1)<R, T, A1> mem_fn(R (BOOST_MEM_FN_CC T::*f) (A1))
{
return _mfi::BOOST_MEM_FN_NAME(mf1)<R, T, A1>(f);
}
template<class R, class T, class A1> _mfi::BOOST_MEM_FN_NAME(cmf1)<R, T, A1> mem_fn(R (BOOST_MEM_FN_CC T::*f) (A1) const)
{
return _mfi::BOOST_MEM_FN_NAME(cmf1)<R, T, A1>(f);
}
template<class R, class T, class A1, class A2> _mfi::BOOST_MEM_FN_NAME(mf2)<R, T, A1, A2> mem_fn(R (BOOST_MEM_FN_CC T::*f) (A1, A2))
{
return _mfi::BOOST_MEM_FN_NAME(mf2)<R, T, A1, A2>(f);
}
template<class R, class T, class A1, class A2> _mfi::BOOST_MEM_FN_NAME(cmf2)<R, T, A1, A2> mem_fn(R (BOOST_MEM_FN_CC T::*f) (A1, A2) const)
{
return _mfi::BOOST_MEM_FN_NAME(cmf2)<R, T, A1, A2>(f);
}
template<class R, class T, class A1, class A2, class A3> _mfi::BOOST_MEM_FN_NAME(mf3)<R, T, A1, A2, A3> mem_fn(R (BOOST_MEM_FN_CC T::*f) (A1, A2, A3))
{
return _mfi::BOOST_MEM_FN_NAME(mf3)<R, T, A1, A2, A3>(f);
}
template<class R, class T, class A1, class A2, class A3> _mfi::BOOST_MEM_FN_NAME(cmf3)<R, T, A1, A2, A3> mem_fn(R (BOOST_MEM_FN_CC T::*f) (A1, A2, A3) const)
{
return _mfi::BOOST_MEM_FN_NAME(cmf3)<R, T, A1, A2, A3>(f);
}
template<class R, class T, class A1, class A2, class A3, class A4> _mfi::BOOST_MEM_FN_NAME(mf4)<R, T, A1, A2, A3, A4> mem_fn(R (BOOST_MEM_FN_CC T::*f) (A1, A2, A3, A4))
{
return _mfi::BOOST_MEM_FN_NAME(mf4)<R, T, A1, A2, A3, A4>(f);
}
template<class R, class T, class A1, class A2, class A3, class A4> _mfi::BOOST_MEM_FN_NAME(cmf4)<R, T, A1, A2, A3, A4> mem_fn(R (BOOST_MEM_FN_CC T::*f) (A1, A2, A3, A4) const)
{
return _mfi::BOOST_MEM_FN_NAME(cmf4)<R, T, A1, A2, A3, A4>(f);
}
template<class R, class T, class A1, class A2, class A3, class A4, class A5> _mfi::BOOST_MEM_FN_NAME(mf5)<R, T, A1, A2, A3, A4, A5> mem_fn(R (BOOST_MEM_FN_CC T::*f) (A1, A2, A3, A4, A5))
{
return _mfi::BOOST_MEM_FN_NAME(mf5)<R, T, A1, A2, A3, A4, A5>(f);
}
template<class R, class T, class A1, class A2, class A3, class A4, class A5> _mfi::BOOST_MEM_FN_NAME(cmf5)<R, T, A1, A2, A3, A4, A5> mem_fn(R (BOOST_MEM_FN_CC T::*f) (A1, A2, A3, A4, A5) const)
{
return _mfi::BOOST_MEM_FN_NAME(cmf5)<R, T, A1, A2, A3, A4, A5>(f);
}
template<class R, class T, class A1, class A2, class A3, class A4, class A5, class A6> _mfi::BOOST_MEM_FN_NAME(mf6)<R, T, A1, A2, A3, A4, A5, A6> mem_fn(R (BOOST_MEM_FN_CC T::*f) (A1, A2, A3, A4, A5, A6))
{
return _mfi::BOOST_MEM_FN_NAME(mf6)<R, T, A1, A2, A3, A4, A5, A6>(f);
}
template<class R, class T, class A1, class A2, class A3, class A4, class A5, class A6> _mfi::BOOST_MEM_FN_NAME(cmf6)<R, T, A1, A2, A3, A4, A5, A6> mem_fn(R (BOOST_MEM_FN_CC T::*f) (A1, A2, A3, A4, A5, A6) const)
{
return _mfi::BOOST_MEM_FN_NAME(cmf6)<R, T, A1, A2, A3, A4, A5, A6>(f);
}
template<class R, class T, class A1, class A2, class A3, class A4, class A5, class A6, class A7> _mfi::BOOST_MEM_FN_NAME(mf7)<R, T, A1, A2, A3, A4, A5, A6, A7> mem_fn(R (BOOST_MEM_FN_CC T::*f) (A1, A2, A3, A4, A5, A6, A7))
{
return _mfi::BOOST_MEM_FN_NAME(mf7)<R, T, A1, A2, A3, A4, A5, A6, A7>(f);
}
template<class R, class T, class A1, class A2, class A3, class A4, class A5, class A6, class A7> _mfi::BOOST_MEM_FN_NAME(cmf7)<R, T, A1, A2, A3, A4, A5, A6, A7> mem_fn(R (BOOST_MEM_FN_CC T::*f) (A1, A2, A3, A4, A5, A6, A7) const)
{
return _mfi::BOOST_MEM_FN_NAME(cmf7)<R, T, A1, A2, A3, A4, A5, A6, A7>(f);
}
template<class R, class T, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8> _mfi::BOOST_MEM_FN_NAME(mf8)<R, T, A1, A2, A3, A4, A5, A6, A7, A8> mem_fn(R (BOOST_MEM_FN_CC T::*f) (A1, A2, A3, A4, A5, A6, A7, A8))
{
return _mfi::BOOST_MEM_FN_NAME(mf8)<R, T, A1, A2, A3, A4, A5, A6, A7, A8>(f);
}
template<class R, class T, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8> _mfi::BOOST_MEM_FN_NAME(cmf8)<R, T, A1, A2, A3, A4, A5, A6, A7, A8> mem_fn(R (BOOST_MEM_FN_CC T::*f) (A1, A2, A3, A4, A5, A6, A7, A8) const)
{
return _mfi::BOOST_MEM_FN_NAME(cmf8)<R, T, A1, A2, A3, A4, A5, A6, A7, A8>(f);
}
File diff suppressed because it is too large Load Diff
+130
View File
@@ -0,0 +1,130 @@
//
// bind/mem_fn_vw.hpp - void return helper wrappers
//
// Do not include this header directly
//
// Copyright (c) 2001 Peter Dimov and Multi Media Ltd.
//
// Distributed under the Boost Software License, Version 1.0. (See
// accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
//
// See http://www.boost.org/libs/bind/mem_fn.html for documentation.
//
template<class R, class T> struct BOOST_MEM_FN_NAME(mf0): public mf<R>::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(mf0)<R, T, R (BOOST_MEM_FN_CC T::*) ()>
{
typedef R (BOOST_MEM_FN_CC T::*F) ();
explicit BOOST_MEM_FN_NAME(mf0)(F f): mf<R>::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(mf0)<R, T, F>(f) {}
};
template<class R, class T> struct BOOST_MEM_FN_NAME(cmf0): public mf<R>::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(cmf0)<R, T, R (BOOST_MEM_FN_CC T::*) () const>
{
typedef R (BOOST_MEM_FN_CC T::*F) () const;
explicit BOOST_MEM_FN_NAME(cmf0)(F f): mf<R>::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(cmf0)<R, T, F>(f) {}
};
template<class R, class T, class A1> struct BOOST_MEM_FN_NAME(mf1): public mf<R>::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(mf1)<R, T, A1, R (BOOST_MEM_FN_CC T::*) (A1)>
{
typedef R (BOOST_MEM_FN_CC T::*F) (A1);
explicit BOOST_MEM_FN_NAME(mf1)(F f): mf<R>::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(mf1)<R, T, A1, F>(f) {}
};
template<class R, class T, class A1> struct BOOST_MEM_FN_NAME(cmf1): public mf<R>::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(cmf1)<R, T, A1, R (BOOST_MEM_FN_CC T::*) (A1) const>
{
typedef R (BOOST_MEM_FN_CC T::*F) (A1) const;
explicit BOOST_MEM_FN_NAME(cmf1)(F f): mf<R>::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(cmf1)<R, T, A1, F>(f) {}
};
template<class R, class T, class A1, class A2> struct BOOST_MEM_FN_NAME(mf2): public mf<R>::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(mf2)<R, T, A1, A2, R (BOOST_MEM_FN_CC T::*) (A1, A2)>
{
typedef R (BOOST_MEM_FN_CC T::*F) (A1, A2);
explicit BOOST_MEM_FN_NAME(mf2)(F f): mf<R>::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(mf2)<R, T, A1, A2, F>(f) {}
};
template<class R, class T, class A1, class A2> struct BOOST_MEM_FN_NAME(cmf2): public mf<R>::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(cmf2)<R, T, A1, A2, R (BOOST_MEM_FN_CC T::*) (A1, A2) const>
{
typedef R (BOOST_MEM_FN_CC T::*F) (A1, A2) const;
explicit BOOST_MEM_FN_NAME(cmf2)(F f): mf<R>::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(cmf2)<R, T, A1, A2, F>(f) {}
};
template<class R, class T, class A1, class A2, class A3> struct BOOST_MEM_FN_NAME(mf3): public mf<R>::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(mf3)<R, T, A1, A2, A3, R (BOOST_MEM_FN_CC T::*) (A1, A2, A3)>
{
typedef R (BOOST_MEM_FN_CC T::*F) (A1, A2, A3);
explicit BOOST_MEM_FN_NAME(mf3)(F f): mf<R>::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(mf3)<R, T, A1, A2, A3, F>(f) {}
};
template<class R, class T, class A1, class A2, class A3> struct BOOST_MEM_FN_NAME(cmf3): public mf<R>::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(cmf3)<R, T, A1, A2, A3, R (BOOST_MEM_FN_CC T::*) (A1, A2, A3) const>
{
typedef R (BOOST_MEM_FN_CC T::*F) (A1, A2, A3) const;
explicit BOOST_MEM_FN_NAME(cmf3)(F f): mf<R>::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(cmf3)<R, T, A1, A2, A3, F>(f) {}
};
template<class R, class T, class A1, class A2, class A3, class A4> struct BOOST_MEM_FN_NAME(mf4): public mf<R>::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(mf4)<R, T, A1, A2, A3, A4, R (BOOST_MEM_FN_CC T::*) (A1, A2, A3, A4)>
{
typedef R (BOOST_MEM_FN_CC T::*F) (A1, A2, A3, A4);
explicit BOOST_MEM_FN_NAME(mf4)(F f): mf<R>::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(mf4)<R, T, A1, A2, A3, A4, F>(f) {}
};
template<class R, class T, class A1, class A2, class A3, class A4> struct BOOST_MEM_FN_NAME(cmf4): public mf<R>::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(cmf4)<R, T, A1, A2, A3, A4, R (BOOST_MEM_FN_CC T::*) (A1, A2, A3, A4) const>
{
typedef R (BOOST_MEM_FN_CC T::*F) (A1, A2, A3, A4) const;
explicit BOOST_MEM_FN_NAME(cmf4)(F f): mf<R>::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(cmf4)<R, T, A1, A2, A3, A4, F>(f) {}
};
template<class R, class T, class A1, class A2, class A3, class A4, class A5> struct BOOST_MEM_FN_NAME(mf5): public mf<R>::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(mf5)<R, T, A1, A2, A3, A4, A5, R (BOOST_MEM_FN_CC T::*) (A1, A2, A3, A4, A5)>
{
typedef R (BOOST_MEM_FN_CC T::*F) (A1, A2, A3, A4, A5);
explicit BOOST_MEM_FN_NAME(mf5)(F f): mf<R>::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(mf5)<R, T, A1, A2, A3, A4, A5, F>(f) {}
};
template<class R, class T, class A1, class A2, class A3, class A4, class A5> struct BOOST_MEM_FN_NAME(cmf5): public mf<R>::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(cmf5)<R, T, A1, A2, A3, A4, A5, R (BOOST_MEM_FN_CC T::*) (A1, A2, A3, A4, A5) const>
{
typedef R (BOOST_MEM_FN_CC T::*F) (A1, A2, A3, A4, A5) const;
explicit BOOST_MEM_FN_NAME(cmf5)(F f): mf<R>::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(cmf5)<R, T, A1, A2, A3, A4, A5, F>(f) {}
};
template<class R, class T, class A1, class A2, class A3, class A4, class A5, class A6> struct BOOST_MEM_FN_NAME(mf6): public mf<R>::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(mf6)<R, T, A1, A2, A3, A4, A5, A6, R (BOOST_MEM_FN_CC T::*) (A1, A2, A3, A4, A5, A6)>
{
typedef R (BOOST_MEM_FN_CC T::*F) (A1, A2, A3, A4, A5, A6);
explicit BOOST_MEM_FN_NAME(mf6)(F f): mf<R>::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(mf6)<R, T, A1, A2, A3, A4, A5, A6, F>(f) {}
};
template<class R, class T, class A1, class A2, class A3, class A4, class A5, class A6> struct BOOST_MEM_FN_NAME(cmf6): public mf<R>::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(cmf6)<R, T, A1, A2, A3, A4, A5, A6, R (BOOST_MEM_FN_CC T::*) (A1, A2, A3, A4, A5, A6) const>
{
typedef R (BOOST_MEM_FN_CC T::*F) (A1, A2, A3, A4, A5, A6) const;
explicit BOOST_MEM_FN_NAME(cmf6)(F f): mf<R>::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(cmf6)<R, T, A1, A2, A3, A4, A5, A6, F>(f) {}
};
template<class R, class T, class A1, class A2, class A3, class A4, class A5, class A6, class A7> struct BOOST_MEM_FN_NAME(mf7): public mf<R>::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(mf7)<R, T, A1, A2, A3, A4, A5, A6, A7, R (BOOST_MEM_FN_CC T::*) (A1, A2, A3, A4, A5, A6, A7)>
{
typedef R (BOOST_MEM_FN_CC T::*F) (A1, A2, A3, A4, A5, A6, A7);
explicit BOOST_MEM_FN_NAME(mf7)(F f): mf<R>::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(mf7)<R, T, A1, A2, A3, A4, A5, A6, A7, F>(f) {}
};
template<class R, class T, class A1, class A2, class A3, class A4, class A5, class A6, class A7> struct BOOST_MEM_FN_NAME(cmf7): public mf<R>::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(cmf7)<R, T, A1, A2, A3, A4, A5, A6, A7, R (BOOST_MEM_FN_CC T::*) (A1, A2, A3, A4, A5, A6, A7) const>
{
typedef R (BOOST_MEM_FN_CC T::*F) (A1, A2, A3, A4, A5, A6, A7) const;
explicit BOOST_MEM_FN_NAME(cmf7)(F f): mf<R>::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(cmf7)<R, T, A1, A2, A3, A4, A5, A6, A7, F>(f) {}
};
template<class R, class T, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8> struct BOOST_MEM_FN_NAME(mf8): public mf<R>::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(mf8)<R, T, A1, A2, A3, A4, A5, A6, A7, A8, R (BOOST_MEM_FN_CC T::*) (A1, A2, A3, A4, A5, A6, A7, A8)>
{
typedef R (BOOST_MEM_FN_CC T::*F) (A1, A2, A3, A4, A5, A6, A7, A8);
explicit BOOST_MEM_FN_NAME(mf8)(F f): mf<R>::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(mf8)<R, T, A1, A2, A3, A4, A5, A6, A7, A8, F>(f) {}
};
template<class R, class T, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8> struct BOOST_MEM_FN_NAME(cmf8): public mf<R>::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(cmf8)<R, T, A1, A2, A3, A4, A5, A6, A7, A8, R (BOOST_MEM_FN_CC T::*) (A1, A2, A3, A4, A5, A6, A7, A8) const>
{
typedef R (BOOST_MEM_FN_CC T::*F) (A1, A2, A3, A4, A5, A6, A7, A8) const;
explicit BOOST_MEM_FN_NAME(cmf8)(F f): mf<R>::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(cmf8)<R, T, A1, A2, A3, A4, A5, A6, A7, A8, F>(f) {}
};
+69
View File
@@ -0,0 +1,69 @@
#ifndef BOOST_BIND_PLACEHOLDERS_HPP_INCLUDED
#define BOOST_BIND_PLACEHOLDERS_HPP_INCLUDED
// MS compatible compilers support #pragma once
#if defined(_MSC_VER) && (_MSC_VER >= 1020)
# pragma once
#endif
//
// bind/placeholders.hpp - _N definitions
//
// Copyright (c) 2002 Peter Dimov and Multi Media Ltd.
//
// Distributed under the Boost Software License, Version 1.0. (See
// accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
//
// See http://www.boost.org/libs/bind/bind.html for documentation.
//
#include <boost/bind/arg.hpp>
#include <boost/config.hpp>
namespace
{
#if defined(__BORLANDC__) || defined(__GNUC__) && (__GNUC__ < 4)
static inline boost::arg<1> _1() { return boost::arg<1>(); }
static inline boost::arg<2> _2() { return boost::arg<2>(); }
static inline boost::arg<3> _3() { return boost::arg<3>(); }
static inline boost::arg<4> _4() { return boost::arg<4>(); }
static inline boost::arg<5> _5() { return boost::arg<5>(); }
static inline boost::arg<6> _6() { return boost::arg<6>(); }
static inline boost::arg<7> _7() { return boost::arg<7>(); }
static inline boost::arg<8> _8() { return boost::arg<8>(); }
static inline boost::arg<9> _9() { return boost::arg<9>(); }
#elif defined(BOOST_MSVC) || (defined(__DECCXX_VER) && __DECCXX_VER <= 60590031) || defined(__MWERKS__) || \
defined(__GNUC__) && (__GNUC__ == 4 && __GNUC_MINOR__ < 2)
static boost::arg<1> _1;
static boost::arg<2> _2;
static boost::arg<3> _3;
static boost::arg<4> _4;
static boost::arg<5> _5;
static boost::arg<6> _6;
static boost::arg<7> _7;
static boost::arg<8> _8;
static boost::arg<9> _9;
#else
boost::arg<1> _1;
boost::arg<2> _2;
boost::arg<3> _3;
boost::arg<4> _4;
boost::arg<5> _5;
boost::arg<6> _6;
boost::arg<7> _7;
boost::arg<8> _8;
boost::arg<9> _9;
#endif
} // unnamed namespace
#endif // #ifndef BOOST_BIND_PLACEHOLDERS_HPP_INCLUDED
+304
View File
@@ -0,0 +1,304 @@
#ifndef BOOST_BIND_PROTECT_HPP_INCLUDED
#define BOOST_BIND_PROTECT_HPP_INCLUDED
//
// protect.hpp
//
// Copyright (c) 2002 Peter Dimov and Multi Media Ltd.
// Copyright (c) 2009 Steven Watanabe
//
// Distributed under the Boost Software License, Version 1.0. (See
// accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
//
#include <boost/config.hpp>
#include <boost/detail/workaround.hpp>
namespace boost
{
namespace _bi
{
template<class F> class protected_bind_t
{
public:
typedef typename F::result_type result_type;
explicit protected_bind_t(F f): f_(f)
{
}
result_type operator()()
{
return f_();
}
result_type operator()() const
{
return f_();
}
template<class A1> result_type operator()(A1 & a1)
{
return f_(a1);
}
template<class A1> result_type operator()(A1 & a1) const
{
return f_(a1);
}
#if !defined(BOOST_NO_FUNCTION_TEMPLATE_ORDERING) \
&& !BOOST_WORKAROUND(__EDG_VERSION__, <= 238)
template<class A1> result_type operator()(const A1 & a1)
{
return f_(a1);
}
template<class A1> result_type operator()(const A1 & a1) const
{
return f_(a1);
}
#endif
template<class A1, class A2> result_type operator()(A1 & a1, A2 & a2)
{
return f_(a1, a2);
}
template<class A1, class A2> result_type operator()(A1 & a1, A2 & a2) const
{
return f_(a1, a2);
}
#if !defined(BOOST_NO_FUNCTION_TEMPLATE_ORDERING) \
&& !BOOST_WORKAROUND(__EDG_VERSION__, <= 238)
template<class A1, class A2> result_type operator()(A1 const & a1, A2 & a2)
{
return f_(a1, a2);
}
template<class A1, class A2> result_type operator()(A1 const & a1, A2 & a2) const
{
return f_(a1, a2);
}
template<class A1, class A2> result_type operator()(A1 & a1, A2 const & a2)
{
return f_(a1, a2);
}
template<class A1, class A2> result_type operator()(A1 & a1, A2 const & a2) const
{
return f_(a1, a2);
}
template<class A1, class A2> result_type operator()(A1 const & a1, A2 const & a2)
{
return f_(a1, a2);
}
template<class A1, class A2> result_type operator()(A1 const & a1, A2 const & a2) const
{
return f_(a1, a2);
}
#endif
template<class A1, class A2, class A3> result_type operator()(A1 & a1, A2 & a2, A3 & a3)
{
return f_(a1, a2, a3);
}
template<class A1, class A2, class A3> result_type operator()(A1 & a1, A2 & a2, A3 & a3) const
{
return f_(a1, a2, a3);
}
#if !defined(BOOST_NO_FUNCTION_TEMPLATE_ORDERING) \
&& !BOOST_WORKAROUND(__EDG_VERSION__, <= 238)
template<class A1, class A2, class A3> result_type operator()(A1 const & a1, A2 const & a2, A3 const & a3)
{
return f_(a1, a2, a3);
}
template<class A1, class A2, class A3> result_type operator()(A1 const & a1, A2 const & a2, A3 const & a3) const
{
return f_(a1, a2, a3);
}
#endif
template<class A1, class A2, class A3, class A4> result_type operator()(A1 & a1, A2 & a2, A3 & a3, A4 & a4)
{
return f_(a1, a2, a3, a4);
}
template<class A1, class A2, class A3, class A4> result_type operator()(A1 & a1, A2 & a2, A3 & a3, A4 & a4) const
{
return f_(a1, a2, a3, a4);
}
#if !defined(BOOST_NO_FUNCTION_TEMPLATE_ORDERING) \
&& !BOOST_WORKAROUND(__EDG_VERSION__, <= 238)
template<class A1, class A2, class A3, class A4> result_type operator()(A1 const & a1, A2 const & a2, A3 const & a3, A4 const & a4)
{
return f_(a1, a2, a3, a4);
}
template<class A1, class A2, class A3, class A4> result_type operator()(A1 const & a1, A2 const & a2, A3 const & a3, A4 const & a4) const
{
return f_(a1, a2, a3, a4);
}
#endif
template<class A1, class A2, class A3, class A4, class A5> result_type operator()(A1 & a1, A2 & a2, A3 & a3, A4 & a4, A5 & a5)
{
return f_(a1, a2, a3, a4, a5);
}
template<class A1, class A2, class A3, class A4, class A5> result_type operator()(A1 & a1, A2 & a2, A3 & a3, A4 & a4, A5 & a5) const
{
return f_(a1, a2, a3, a4, a5);
}
#if !defined(BOOST_NO_FUNCTION_TEMPLATE_ORDERING) \
&& !BOOST_WORKAROUND(__EDG_VERSION__, <= 238)
template<class A1, class A2, class A3, class A4, class A5> result_type operator()(A1 const & a1, A2 const & a2, A3 const & a3, A4 const & a4, A5 const & a5)
{
return f_(a1, a2, a3, a4, a5);
}
template<class A1, class A2, class A3, class A4, class A5> result_type operator()(A1 const & a1, A2 const & a2, A3 const & a3, A4 const & a4, A5 const & a5) const
{
return f_(a1, a2, a3, a4, a5);
}
#endif
template<class A1, class A2, class A3, class A4, class A5, class A6> result_type operator()(A1 & a1, A2 & a2, A3 & a3, A4 & a4, A5 & a5, A6 & a6)
{
return f_(a1, a2, a3, a4, a5, a6);
}
template<class A1, class A2, class A3, class A4, class A5, class A6> result_type operator()(A1 & a1, A2 & a2, A3 & a3, A4 & a4, A5 & a5, A6 & a6) const
{
return f_(a1, a2, a3, a4, a5, a6);
}
#if !defined(BOOST_NO_FUNCTION_TEMPLATE_ORDERING) \
&& !BOOST_WORKAROUND(__EDG_VERSION__, <= 238)
template<class A1, class A2, class A3, class A4, class A5, class A6> result_type operator()(A1 const & a1, A2 const & a2, A3 const & a3, A4 const & a4, A5 const & a5, A6 const & a6)
{
return f_(a1, a2, a3, a4, a5, a6);
}
template<class A1, class A2, class A3, class A4, class A5, class A6> result_type operator()(A1 const & a1, A2 const & a2, A3 const & a3, A4 const & a4, A5 const & a5, A6 const & a6) const
{
return f_(a1, a2, a3, a4, a5, a6);
}
#endif
template<class A1, class A2, class A3, class A4, class A5, class A6, class A7> result_type operator()(A1 & a1, A2 & a2, A3 & a3, A4 & a4, A5 & a5, A6 & a6, A7 & a7)
{
return f_(a1, a2, a3, a4, a5, a6, a7);
}
template<class A1, class A2, class A3, class A4, class A5, class A6, class A7> result_type operator()(A1 & a1, A2 & a2, A3 & a3, A4 & a4, A5 & a5, A6 & a6, A7 & a7) const
{
return f_(a1, a2, a3, a4, a5, a6, a7);
}
#if !defined(BOOST_NO_FUNCTION_TEMPLATE_ORDERING) \
&& !BOOST_WORKAROUND(__EDG_VERSION__, <= 238)
template<class A1, class A2, class A3, class A4, class A5, class A6, class A7> result_type operator()(A1 const & a1, A2 const & a2, A3 const & a3, A4 const & a4, A5 const & a5, A6 const & a6, A7 const & a7)
{
return f_(a1, a2, a3, a4, a5, a6, a7);
}
template<class A1, class A2, class A3, class A4, class A5, class A6, class A7> result_type operator()(A1 const & a1, A2 const & a2, A3 const & a3, A4 const & a4, A5 const & a5, A6 const & a6, A7 const & a7) const
{
return f_(a1, a2, a3, a4, a5, a6, a7);
}
#endif
template<class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8> result_type operator()(A1 & a1, A2 & a2, A3 & a3, A4 & a4, A5 & a5, A6 & a6, A7 & a7, A8 & a8)
{
return f_(a1, a2, a3, a4, a5, a6, a7, a8);
}
template<class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8> result_type operator()(A1 & a1, A2 & a2, A3 & a3, A4 & a4, A5 & a5, A6 & a6, A7 & a7, A8 & a8) const
{
return f_(a1, a2, a3, a4, a5, a6, a7, a8);
}
#if !defined(BOOST_NO_FUNCTION_TEMPLATE_ORDERING) \
&& !BOOST_WORKAROUND(__EDG_VERSION__, <= 238)
template<class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8> result_type operator()(A1 const & a1, A2 const & a2, A3 const & a3, A4 const & a4, A5 const & a5, A6 const & a6, A7 const & a7, A8 const & a8)
{
return f_(a1, a2, a3, a4, a5, a6, a7, a8);
}
template<class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8> result_type operator()(A1 const & a1, A2 const & a2, A3 const & a3, A4 const & a4, A5 const & a5, A6 const & a6, A7 const & a7, A8 const & a8) const
{
return f_(a1, a2, a3, a4, a5, a6, a7, a8);
}
#endif
template<class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9> result_type operator()(A1 & a1, A2 & a2, A3 & a3, A4 & a4, A5 & a5, A6 & a6, A7 & a7, A8 & a8, A9 & a9)
{
return f_(a1, a2, a3, a4, a5, a6, a7, a8, a9);
}
template<class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9> result_type operator()(A1 & a1, A2 & a2, A3 & a3, A4 & a4, A5 & a5, A6 & a6, A7 & a7, A8 & a8, A9 & a9) const
{
return f_(a1, a2, a3, a4, a5, a6, a7, a8, a9);
}
#if !defined(BOOST_NO_FUNCTION_TEMPLATE_ORDERING) \
&& !BOOST_WORKAROUND(__EDG_VERSION__, <= 238)
template<class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9> result_type operator()(A1 const & a1, A2 const & a2, A3 const & a3, A4 const & a4, A5 const & a5, A6 const & a6, A7 const & a7, A8 const & a8, A9 const & a9)
{
return f_(a1, a2, a3, a4, a5, a6, a7, a8, a9);
}
template<class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9> result_type operator()(A1 const & a1, A2 const & a2, A3 const & a3, A4 const & a4, A5 const & a5, A6 const & a6, A7 const & a7, A8 const & a8, A9 const & a9) const
{
return f_(a1, a2, a3, a4, a5, a6, a7, a8, a9);
}
#endif
private:
F f_;
};
} // namespace _bi
template<class F> _bi::protected_bind_t<F> protect(F f)
{
return _bi::protected_bind_t<F>(f);
}
} // namespace boost
#endif // #ifndef BOOST_BIND_PROTECT_HPP_INCLUDED
+475
View File
@@ -0,0 +1,475 @@
#ifndef BOOST_BIND_STORAGE_HPP_INCLUDED
#define BOOST_BIND_STORAGE_HPP_INCLUDED
// MS compatible compilers support #pragma once
#if defined(_MSC_VER) && (_MSC_VER >= 1020)
# pragma once
#endif
//
// bind/storage.hpp
//
// boost/bind.hpp support header, optimized storage
//
// Copyright (c) 2006 Peter Dimov
//
// Distributed under the Boost Software License, Version 1.0.
// See accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt
//
// See http://www.boost.org/libs/bind/bind.html for documentation.
//
#include <boost/config.hpp>
#include <boost/bind/arg.hpp>
#ifdef BOOST_MSVC
# pragma warning(push)
# pragma warning(disable: 4512) // assignment operator could not be generated
#endif
namespace boost
{
namespace _bi
{
// 1
template<class A1> struct storage1
{
explicit storage1( A1 a1 ): a1_( a1 ) {}
template<class V> void accept(V & v) const
{
BOOST_BIND_VISIT_EACH(v, a1_, 0);
}
A1 a1_;
};
#if !defined( BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION ) && !defined( __BORLANDC__ )
template<int I> struct storage1< boost::arg<I> >
{
explicit storage1( boost::arg<I> ) {}
template<class V> void accept(V &) const { }
static boost::arg<I> a1_() { return boost::arg<I>(); }
};
template<int I> struct storage1< boost::arg<I> (*) () >
{
explicit storage1( boost::arg<I> (*) () ) {}
template<class V> void accept(V &) const { }
static boost::arg<I> a1_() { return boost::arg<I>(); }
};
#endif
// 2
template<class A1, class A2> struct storage2: public storage1<A1>
{
typedef storage1<A1> inherited;
storage2( A1 a1, A2 a2 ): storage1<A1>( a1 ), a2_( a2 ) {}
template<class V> void accept(V & v) const
{
inherited::accept(v);
BOOST_BIND_VISIT_EACH(v, a2_, 0);
}
A2 a2_;
};
#if !defined( BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION )
template<class A1, int I> struct storage2< A1, boost::arg<I> >: public storage1<A1>
{
typedef storage1<A1> inherited;
storage2( A1 a1, boost::arg<I> ): storage1<A1>( a1 ) {}
template<class V> void accept(V & v) const
{
inherited::accept(v);
}
static boost::arg<I> a2_() { return boost::arg<I>(); }
};
template<class A1, int I> struct storage2< A1, boost::arg<I> (*) () >: public storage1<A1>
{
typedef storage1<A1> inherited;
storage2( A1 a1, boost::arg<I> (*) () ): storage1<A1>( a1 ) {}
template<class V> void accept(V & v) const
{
inherited::accept(v);
}
static boost::arg<I> a2_() { return boost::arg<I>(); }
};
#endif
// 3
template<class A1, class A2, class A3> struct storage3: public storage2< A1, A2 >
{
typedef storage2<A1, A2> inherited;
storage3( A1 a1, A2 a2, A3 a3 ): storage2<A1, A2>( a1, a2 ), a3_( a3 ) {}
template<class V> void accept(V & v) const
{
inherited::accept(v);
BOOST_BIND_VISIT_EACH(v, a3_, 0);
}
A3 a3_;
};
#if !defined( BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION )
template<class A1, class A2, int I> struct storage3< A1, A2, boost::arg<I> >: public storage2< A1, A2 >
{
typedef storage2<A1, A2> inherited;
storage3( A1 a1, A2 a2, boost::arg<I> ): storage2<A1, A2>( a1, a2 ) {}
template<class V> void accept(V & v) const
{
inherited::accept(v);
}
static boost::arg<I> a3_() { return boost::arg<I>(); }
};
template<class A1, class A2, int I> struct storage3< A1, A2, boost::arg<I> (*) () >: public storage2< A1, A2 >
{
typedef storage2<A1, A2> inherited;
storage3( A1 a1, A2 a2, boost::arg<I> (*) () ): storage2<A1, A2>( a1, a2 ) {}
template<class V> void accept(V & v) const
{
inherited::accept(v);
}
static boost::arg<I> a3_() { return boost::arg<I>(); }
};
#endif
// 4
template<class A1, class A2, class A3, class A4> struct storage4: public storage3< A1, A2, A3 >
{
typedef storage3<A1, A2, A3> inherited;
storage4( A1 a1, A2 a2, A3 a3, A4 a4 ): storage3<A1, A2, A3>( a1, a2, a3 ), a4_( a4 ) {}
template<class V> void accept(V & v) const
{
inherited::accept(v);
BOOST_BIND_VISIT_EACH(v, a4_, 0);
}
A4 a4_;
};
#if !defined( BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION )
template<class A1, class A2, class A3, int I> struct storage4< A1, A2, A3, boost::arg<I> >: public storage3< A1, A2, A3 >
{
typedef storage3<A1, A2, A3> inherited;
storage4( A1 a1, A2 a2, A3 a3, boost::arg<I> ): storage3<A1, A2, A3>( a1, a2, a3 ) {}
template<class V> void accept(V & v) const
{
inherited::accept(v);
}
static boost::arg<I> a4_() { return boost::arg<I>(); }
};
template<class A1, class A2, class A3, int I> struct storage4< A1, A2, A3, boost::arg<I> (*) () >: public storage3< A1, A2, A3 >
{
typedef storage3<A1, A2, A3> inherited;
storage4( A1 a1, A2 a2, A3 a3, boost::arg<I> (*) () ): storage3<A1, A2, A3>( a1, a2, a3 ) {}
template<class V> void accept(V & v) const
{
inherited::accept(v);
}
static boost::arg<I> a4_() { return boost::arg<I>(); }
};
#endif
// 5
template<class A1, class A2, class A3, class A4, class A5> struct storage5: public storage4< A1, A2, A3, A4 >
{
typedef storage4<A1, A2, A3, A4> inherited;
storage5( A1 a1, A2 a2, A3 a3, A4 a4, A5 a5 ): storage4<A1, A2, A3, A4>( a1, a2, a3, a4 ), a5_( a5 ) {}
template<class V> void accept(V & v) const
{
inherited::accept(v);
BOOST_BIND_VISIT_EACH(v, a5_, 0);
}
A5 a5_;
};
#if !defined( BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION )
template<class A1, class A2, class A3, class A4, int I> struct storage5< A1, A2, A3, A4, boost::arg<I> >: public storage4< A1, A2, A3, A4 >
{
typedef storage4<A1, A2, A3, A4> inherited;
storage5( A1 a1, A2 a2, A3 a3, A4 a4, boost::arg<I> ): storage4<A1, A2, A3, A4>( a1, a2, a3, a4 ) {}
template<class V> void accept(V & v) const
{
inherited::accept(v);
}
static boost::arg<I> a5_() { return boost::arg<I>(); }
};
template<class A1, class A2, class A3, class A4, int I> struct storage5< A1, A2, A3, A4, boost::arg<I> (*) () >: public storage4< A1, A2, A3, A4 >
{
typedef storage4<A1, A2, A3, A4> inherited;
storage5( A1 a1, A2 a2, A3 a3, A4 a4, boost::arg<I> (*) () ): storage4<A1, A2, A3, A4>( a1, a2, a3, a4 ) {}
template<class V> void accept(V & v) const
{
inherited::accept(v);
}
static boost::arg<I> a5_() { return boost::arg<I>(); }
};
#endif
// 6
template<class A1, class A2, class A3, class A4, class A5, class A6> struct storage6: public storage5< A1, A2, A3, A4, A5 >
{
typedef storage5<A1, A2, A3, A4, A5> inherited;
storage6( A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6 ): storage5<A1, A2, A3, A4, A5>( a1, a2, a3, a4, a5 ), a6_( a6 ) {}
template<class V> void accept(V & v) const
{
inherited::accept(v);
BOOST_BIND_VISIT_EACH(v, a6_, 0);
}
A6 a6_;
};
#if !defined( BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION )
template<class A1, class A2, class A3, class A4, class A5, int I> struct storage6< A1, A2, A3, A4, A5, boost::arg<I> >: public storage5< A1, A2, A3, A4, A5 >
{
typedef storage5<A1, A2, A3, A4, A5> inherited;
storage6( A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, boost::arg<I> ): storage5<A1, A2, A3, A4, A5>( a1, a2, a3, a4, a5 ) {}
template<class V> void accept(V & v) const
{
inherited::accept(v);
}
static boost::arg<I> a6_() { return boost::arg<I>(); }
};
template<class A1, class A2, class A3, class A4, class A5, int I> struct storage6< A1, A2, A3, A4, A5, boost::arg<I> (*) () >: public storage5< A1, A2, A3, A4, A5 >
{
typedef storage5<A1, A2, A3, A4, A5> inherited;
storage6( A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, boost::arg<I> (*) () ): storage5<A1, A2, A3, A4, A5>( a1, a2, a3, a4, a5 ) {}
template<class V> void accept(V & v) const
{
inherited::accept(v);
}
static boost::arg<I> a6_() { return boost::arg<I>(); }
};
#endif
// 7
template<class A1, class A2, class A3, class A4, class A5, class A6, class A7> struct storage7: public storage6< A1, A2, A3, A4, A5, A6 >
{
typedef storage6<A1, A2, A3, A4, A5, A6> inherited;
storage7( A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7 ): storage6<A1, A2, A3, A4, A5, A6>( a1, a2, a3, a4, a5, a6 ), a7_( a7 ) {}
template<class V> void accept(V & v) const
{
inherited::accept(v);
BOOST_BIND_VISIT_EACH(v, a7_, 0);
}
A7 a7_;
};
#if !defined( BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION )
template<class A1, class A2, class A3, class A4, class A5, class A6, int I> struct storage7< A1, A2, A3, A4, A5, A6, boost::arg<I> >: public storage6< A1, A2, A3, A4, A5, A6 >
{
typedef storage6<A1, A2, A3, A4, A5, A6> inherited;
storage7( A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, boost::arg<I> ): storage6<A1, A2, A3, A4, A5, A6>( a1, a2, a3, a4, a5, a6 ) {}
template<class V> void accept(V & v) const
{
inherited::accept(v);
}
static boost::arg<I> a7_() { return boost::arg<I>(); }
};
template<class A1, class A2, class A3, class A4, class A5, class A6, int I> struct storage7< A1, A2, A3, A4, A5, A6, boost::arg<I> (*) () >: public storage6< A1, A2, A3, A4, A5, A6 >
{
typedef storage6<A1, A2, A3, A4, A5, A6> inherited;
storage7( A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, boost::arg<I> (*) () ): storage6<A1, A2, A3, A4, A5, A6>( a1, a2, a3, a4, a5, a6 ) {}
template<class V> void accept(V & v) const
{
inherited::accept(v);
}
static boost::arg<I> a7_() { return boost::arg<I>(); }
};
#endif
// 8
template<class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8> struct storage8: public storage7< A1, A2, A3, A4, A5, A6, A7 >
{
typedef storage7<A1, A2, A3, A4, A5, A6, A7> inherited;
storage8( A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8 ): storage7<A1, A2, A3, A4, A5, A6, A7>( a1, a2, a3, a4, a5, a6, a7 ), a8_( a8 ) {}
template<class V> void accept(V & v) const
{
inherited::accept(v);
BOOST_BIND_VISIT_EACH(v, a8_, 0);
}
A8 a8_;
};
#if !defined( BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION )
template<class A1, class A2, class A3, class A4, class A5, class A6, class A7, int I> struct storage8< A1, A2, A3, A4, A5, A6, A7, boost::arg<I> >: public storage7< A1, A2, A3, A4, A5, A6, A7 >
{
typedef storage7<A1, A2, A3, A4, A5, A6, A7> inherited;
storage8( A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, boost::arg<I> ): storage7<A1, A2, A3, A4, A5, A6, A7>( a1, a2, a3, a4, a5, a6, a7 ) {}
template<class V> void accept(V & v) const
{
inherited::accept(v);
}
static boost::arg<I> a8_() { return boost::arg<I>(); }
};
template<class A1, class A2, class A3, class A4, class A5, class A6, class A7, int I> struct storage8< A1, A2, A3, A4, A5, A6, A7, boost::arg<I> (*) () >: public storage7< A1, A2, A3, A4, A5, A6, A7 >
{
typedef storage7<A1, A2, A3, A4, A5, A6, A7> inherited;
storage8( A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, boost::arg<I> (*) () ): storage7<A1, A2, A3, A4, A5, A6, A7>( a1, a2, a3, a4, a5, a6, a7 ) {}
template<class V> void accept(V & v) const
{
inherited::accept(v);
}
static boost::arg<I> a8_() { return boost::arg<I>(); }
};
#endif
// 9
template<class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9> struct storage9: public storage8< A1, A2, A3, A4, A5, A6, A7, A8 >
{
typedef storage8<A1, A2, A3, A4, A5, A6, A7, A8> inherited;
storage9( A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9 ): storage8<A1, A2, A3, A4, A5, A6, A7, A8>( a1, a2, a3, a4, a5, a6, a7, a8 ), a9_( a9 ) {}
template<class V> void accept(V & v) const
{
inherited::accept(v);
BOOST_BIND_VISIT_EACH(v, a9_, 0);
}
A9 a9_;
};
#if !defined( BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION )
template<class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, int I> struct storage9< A1, A2, A3, A4, A5, A6, A7, A8, boost::arg<I> >: public storage8< A1, A2, A3, A4, A5, A6, A7, A8 >
{
typedef storage8<A1, A2, A3, A4, A5, A6, A7, A8> inherited;
storage9( A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, boost::arg<I> ): storage8<A1, A2, A3, A4, A5, A6, A7, A8>( a1, a2, a3, a4, a5, a6, a7, a8 ) {}
template<class V> void accept(V & v) const
{
inherited::accept(v);
}
static boost::arg<I> a9_() { return boost::arg<I>(); }
};
template<class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, int I> struct storage9< A1, A2, A3, A4, A5, A6, A7, A8, boost::arg<I> (*) () >: public storage8< A1, A2, A3, A4, A5, A6, A7, A8 >
{
typedef storage8<A1, A2, A3, A4, A5, A6, A7, A8> inherited;
storage9( A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, boost::arg<I> (*) () ): storage8<A1, A2, A3, A4, A5, A6, A7, A8>( a1, a2, a3, a4, a5, a6, a7, a8 ) {}
template<class V> void accept(V & v) const
{
inherited::accept(v);
}
static boost::arg<I> a9_() { return boost::arg<I>(); }
};
#endif
} // namespace _bi
} // namespace boost
#ifdef BOOST_MSVC
# pragma warning(default: 4512) // assignment operator could not be generated
# pragma warning(pop)
#endif
#endif // #ifndef BOOST_BIND_STORAGE_HPP_INCLUDED
+24
View File
@@ -0,0 +1,24 @@
// (C) Copyright Steve Cleary, Beman Dawes, Howard Hinnant & John Maddock 2000.
// Use, modification and distribution are subject to the Boost Software License,
// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt).
//
// See http://www.boost.org/libs/utility for most recent version including documentation.
// See boost/detail/call_traits.hpp and boost/detail/ob_call_traits.hpp
// for full copyright notices.
#ifndef BOOST_CALL_TRAITS_HPP
#define BOOST_CALL_TRAITS_HPP
#ifndef BOOST_CONFIG_HPP
#include <boost/config.hpp>
#endif
#ifdef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
#include <boost/detail/ob_call_traits.hpp>
#else
#include <boost/detail/call_traits.hpp>
#endif
#endif // BOOST_CALL_TRAITS_HPP
+69
View File
@@ -0,0 +1,69 @@
#ifndef BOOST_CHECKED_DELETE_HPP_INCLUDED
#define BOOST_CHECKED_DELETE_HPP_INCLUDED
// MS compatible compilers support #pragma once
#if defined(_MSC_VER) && (_MSC_VER >= 1020)
# pragma once
#endif
//
// boost/checked_delete.hpp
//
// Copyright (c) 2002, 2003 Peter Dimov
// Copyright (c) 2003 Daniel Frey
// Copyright (c) 2003 Howard Hinnant
//
// Distributed under the Boost Software License, Version 1.0. (See
// accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
//
// See http://www.boost.org/libs/utility/checked_delete.html for documentation.
//
namespace boost
{
// verify that types are complete for increased safety
template<class T> inline void checked_delete(T * x)
{
// intentionally complex - simplification causes regressions
typedef char type_must_be_complete[ sizeof(T)? 1: -1 ];
(void) sizeof(type_must_be_complete);
delete x;
}
template<class T> inline void checked_array_delete(T * x)
{
typedef char type_must_be_complete[ sizeof(T)? 1: -1 ];
(void) sizeof(type_must_be_complete);
delete [] x;
}
template<class T> struct checked_deleter
{
typedef void result_type;
typedef T * argument_type;
void operator()(T * x) const
{
// boost:: disables ADL
boost::checked_delete(x);
}
};
template<class T> struct checked_array_deleter
{
typedef void result_type;
typedef T * argument_type;
void operator()(T * x) const
{
boost::checked_array_delete(x);
}
};
} // namespace boost
#endif // #ifndef BOOST_CHECKED_DELETE_HPP_INCLUDED
+74
View File
@@ -0,0 +1,74 @@
// Circular buffer library header file.
// Copyright (c) 2003-2008 Jan Gaspar
// Use, modification, and distribution is subject to the Boost Software
// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
// See www.boost.org/libs/circular_buffer for documentation.
#if !defined(BOOST_CIRCULAR_BUFFER_HPP)
#define BOOST_CIRCULAR_BUFFER_HPP
#if defined(_MSC_VER) && _MSC_VER >= 1200
#pragma once
#endif
#include <boost/circular_buffer_fwd.hpp>
#include <boost/detail/workaround.hpp>
// BOOST_CB_ENABLE_DEBUG: Debug support control.
#if defined(NDEBUG) || defined(BOOST_CB_DISABLE_DEBUG)
#define BOOST_CB_ENABLE_DEBUG 0
#else
#define BOOST_CB_ENABLE_DEBUG 1
#endif
// BOOST_CB_ASSERT: Runtime assertion.
#if BOOST_CB_ENABLE_DEBUG
#include <boost/assert.hpp>
#define BOOST_CB_ASSERT(Expr) BOOST_ASSERT(Expr)
#else
#define BOOST_CB_ASSERT(Expr) ((void)0)
#endif
// BOOST_CB_STATIC_ASSERT: Compile time assertion.
#if BOOST_WORKAROUND(BOOST_MSVC, < 1300)
#define BOOST_CB_STATIC_ASSERT(Expr) ((void)0)
#else
#include <boost/static_assert.hpp>
#define BOOST_CB_STATIC_ASSERT(Expr) BOOST_STATIC_ASSERT(Expr)
#endif
// BOOST_CB_IS_CONVERTIBLE: Check if Iterator::value_type is convertible to Type.
#if BOOST_WORKAROUND(__BORLANDC__, <= 0x0550) || BOOST_WORKAROUND(__MWERKS__, <= 0x2407) || \
BOOST_WORKAROUND(BOOST_MSVC, < 1300)
#define BOOST_CB_IS_CONVERTIBLE(Iterator, Type) ((void)0)
#else
#include <boost/detail/iterator.hpp>
#include <boost/type_traits/is_convertible.hpp>
#define BOOST_CB_IS_CONVERTIBLE(Iterator, Type) \
BOOST_CB_STATIC_ASSERT((is_convertible<typename detail::iterator_traits<Iterator>::value_type, Type>::value))
#endif
// BOOST_CB_ASSERT_TEMPLATED_ITERATOR_CONSTRUCTORS:
// Check if the STL provides templated iterator constructors for its containers.
#if defined(BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS)
#define BOOST_CB_ASSERT_TEMPLATED_ITERATOR_CONSTRUCTORS BOOST_CB_STATIC_ASSERT(false);
#else
#define BOOST_CB_ASSERT_TEMPLATED_ITERATOR_CONSTRUCTORS ((void)0);
#endif
#include <boost/circular_buffer/debug.hpp>
#include <boost/circular_buffer/details.hpp>
#include <boost/circular_buffer/base.hpp>
#include <boost/circular_buffer/space_optimized.hpp>
#undef BOOST_CB_ASSERT_TEMPLATED_ITERATOR_CONSTRUCTORS
#undef BOOST_CB_IS_CONVERTIBLE
#undef BOOST_CB_STATIC_ASSERT
#undef BOOST_CB_ASSERT
#undef BOOST_CB_ENABLE_DEBUG
#endif // #if !defined(BOOST_CIRCULAR_BUFFER_HPP)
File diff suppressed because it is too large Load Diff
+227
View File
@@ -0,0 +1,227 @@
// Debug support for the circular buffer library.
// Copyright (c) 2003-2008 Jan Gaspar
// Use, modification, and distribution is subject to the Boost Software
// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
#if !defined(BOOST_CIRCULAR_BUFFER_DEBUG_HPP)
#define BOOST_CIRCULAR_BUFFER_DEBUG_HPP
#if defined(_MSC_VER) && _MSC_VER >= 1200
#pragma once
#endif
namespace boost {
namespace cb_details {
#if BOOST_CB_ENABLE_DEBUG
// The value the uninitialized memory is filled with.
const int UNINITIALIZED = 0xcc;
class debug_iterator_registry;
/*!
\class debug_iterator_base
\brief Registers/unregisters iterators into the registry of valid iterators.
This class is intended to be a base class of an iterator.
*/
class debug_iterator_base {
private:
// Members
//! Iterator registry.
mutable const debug_iterator_registry* m_registry;
//! Next iterator in the iterator chain.
mutable const debug_iterator_base* m_next;
public:
// Construction/destruction
//! Default constructor.
debug_iterator_base();
//! Constructor taking the iterator registry as a parameter.
debug_iterator_base(const debug_iterator_registry* registry);
//! Copy constructor.
debug_iterator_base(const debug_iterator_base& rhs);
//! Destructor.
~debug_iterator_base();
// Methods
//! Assign operator.
debug_iterator_base& operator = (const debug_iterator_base& rhs);
//! Is the iterator valid?
bool is_valid(const debug_iterator_registry* registry) const;
//! Invalidate the iterator.
/*!
\note The method is const in order to invalidate const iterators, too.
*/
void invalidate() const;
//! Return the next iterator in the iterator chain.
const debug_iterator_base* next() const;
//! Set the next iterator in the iterator chain.
/*!
\note The method is const in order to set a next iterator to a const iterator, too.
*/
void set_next(const debug_iterator_base* it) const;
private:
// Helpers
//! Register self as a valid iterator.
void register_self();
//! Unregister self from valid iterators.
void unregister_self();
};
/*!
\class debug_iterator_registry
\brief Registry of valid iterators.
This class is intended to be a base class of a container.
*/
class debug_iterator_registry {
//! Pointer to the chain of valid iterators.
mutable const debug_iterator_base* m_iterators;
public:
// Methods
//! Default constructor.
debug_iterator_registry() : m_iterators(0) {}
//! Register an iterator into the list of valid iterators.
/*!
\note The method is const in order to register iterators into const containers, too.
*/
void register_iterator(const debug_iterator_base* it) const {
it->set_next(m_iterators);
m_iterators = it;
}
//! Unregister an iterator from the list of valid iterators.
/*!
\note The method is const in order to unregister iterators from const containers, too.
*/
void unregister_iterator(const debug_iterator_base* it) const {
const debug_iterator_base* previous = 0;
for (const debug_iterator_base* p = m_iterators; p != it; previous = p, p = p->next()) {}
remove(it, previous);
}
//! Invalidate every iterator pointing to the same element as the iterator passed as a parameter.
template <class Iterator>
void invalidate_iterators(const Iterator& it) {
const debug_iterator_base* previous = 0;
for (const debug_iterator_base* p = m_iterators; p != 0; p = p->next()) {
if (((Iterator*)p)->m_it == it.m_it) {
p->invalidate();
remove(p, previous);
continue;
}
previous = p;
}
}
//! Invalidate all iterators except an iterator poining to the same element as the iterator passed as a parameter.
template <class Iterator>
void invalidate_iterators_except(const Iterator& it) {
const debug_iterator_base* previous = 0;
for (const debug_iterator_base* p = m_iterators; p != 0; p = p->next()) {
if (((Iterator*)p)->m_it != it.m_it) {
p->invalidate();
remove(p, previous);
continue;
}
previous = p;
}
}
//! Invalidate all iterators.
void invalidate_all_iterators() {
for (const debug_iterator_base* p = m_iterators; p != 0; p = p->next())
p->invalidate();
m_iterators = 0;
}
private:
// Helpers
//! Remove the current iterator from the iterator chain.
void remove(const debug_iterator_base* current,
const debug_iterator_base* previous) const {
if (previous == 0)
m_iterators = m_iterators->next();
else
previous->set_next(current->next());
}
};
// Implementation of the debug_iterator_base methods.
inline debug_iterator_base::debug_iterator_base() : m_registry(0), m_next(0) {}
inline debug_iterator_base::debug_iterator_base(const debug_iterator_registry* registry)
: m_registry(registry), m_next(0) {
register_self();
}
inline debug_iterator_base::debug_iterator_base(const debug_iterator_base& rhs)
: m_registry(rhs.m_registry), m_next(0) {
register_self();
}
inline debug_iterator_base::~debug_iterator_base() { unregister_self(); }
inline debug_iterator_base& debug_iterator_base::operator = (const debug_iterator_base& rhs) {
if (m_registry == rhs.m_registry)
return *this;
unregister_self();
m_registry = rhs.m_registry;
register_self();
return *this;
}
inline bool debug_iterator_base::is_valid(const debug_iterator_registry* registry) const {
return m_registry == registry;
}
inline void debug_iterator_base::invalidate() const { m_registry = 0; }
inline const debug_iterator_base* debug_iterator_base::next() const { return m_next; }
inline void debug_iterator_base::set_next(const debug_iterator_base* it) const { m_next = it; }
inline void debug_iterator_base::register_self() {
if (m_registry != 0)
m_registry->register_iterator(this);
}
inline void debug_iterator_base::unregister_self() {
if (m_registry != 0)
m_registry->unregister_iterator(this);
}
#endif // #if BOOST_CB_ENABLE_DEBUG
} // namespace cb_details
} // namespace boost
#endif // #if !defined(BOOST_CIRCULAR_BUFFER_DEBUG_HPP)
+470
View File
@@ -0,0 +1,470 @@
// Helper classes and functions for the circular buffer.
// Copyright (c) 2003-2008 Jan Gaspar
// Use, modification, and distribution is subject to the Boost Software
// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
#if !defined(BOOST_CIRCULAR_BUFFER_DETAILS_HPP)
#define BOOST_CIRCULAR_BUFFER_DETAILS_HPP
#if defined(_MSC_VER) && _MSC_VER >= 1200
#pragma once
#endif
#include <boost/iterator.hpp>
#include <boost/throw_exception.hpp>
#include <boost/detail/no_exceptions_support.hpp>
#include <iterator>
namespace boost {
namespace cb_details {
template <class Traits> struct nonconst_traits;
template<class ForwardIterator, class Diff, class T, class Alloc>
void uninitialized_fill_n_with_alloc(
ForwardIterator first, Diff n, const T& item, Alloc& alloc);
template<class InputIterator, class ForwardIterator, class Alloc>
ForwardIterator uninitialized_copy_with_alloc(
InputIterator first, InputIterator last, ForwardIterator dest, Alloc& alloc);
/*!
\struct const_traits
\brief Defines the data types for a const iterator.
*/
template <class Traits>
struct const_traits {
// Basic types
typedef typename Traits::value_type value_type;
typedef typename Traits::const_pointer pointer;
typedef typename Traits::const_reference reference;
typedef typename Traits::size_type size_type;
typedef typename Traits::difference_type difference_type;
// Non-const traits
typedef nonconst_traits<Traits> nonconst_self;
};
/*!
\struct nonconst_traits
\brief Defines the data types for a non-const iterator.
*/
template <class Traits>
struct nonconst_traits {
// Basic types
typedef typename Traits::value_type value_type;
typedef typename Traits::pointer pointer;
typedef typename Traits::reference reference;
typedef typename Traits::size_type size_type;
typedef typename Traits::difference_type difference_type;
// Non-const traits
typedef nonconst_traits<Traits> nonconst_self;
};
/*!
\struct iterator_wrapper
\brief Helper iterator dereference wrapper.
*/
template <class Iterator>
struct iterator_wrapper {
mutable Iterator m_it;
explicit iterator_wrapper(Iterator it) : m_it(it) {}
Iterator operator () () const { return m_it++; }
private:
iterator_wrapper<Iterator>& operator = (const iterator_wrapper<Iterator>&); // do not generate
};
/*!
\struct item_wrapper
\brief Helper item dereference wrapper.
*/
template <class Pointer, class Value>
struct item_wrapper {
Value m_item;
explicit item_wrapper(Value item) : m_item(item) {}
Pointer operator () () const { return &m_item; }
private:
item_wrapper<Pointer, Value>& operator = (const item_wrapper<Pointer, Value>&); // do not generate
};
/*!
\struct assign_n
\brief Helper functor for assigning n items.
*/
template <class Value, class Alloc>
struct assign_n {
typedef typename Alloc::size_type size_type;
size_type m_n;
Value m_item;
Alloc& m_alloc;
assign_n(size_type n, Value item, Alloc& alloc) : m_n(n), m_item(item), m_alloc(alloc) {}
template <class Pointer>
void operator () (Pointer p) const {
uninitialized_fill_n_with_alloc(p, m_n, m_item, m_alloc);
}
private:
assign_n<Value, Alloc>& operator = (const assign_n<Value, Alloc>&); // do not generate
};
/*!
\struct assign_range
\brief Helper functor for assigning range of items.
*/
template <class Iterator, class Alloc>
struct assign_range {
const Iterator& m_first;
const Iterator& m_last;
Alloc& m_alloc;
assign_range(const Iterator& first, const Iterator& last, Alloc& alloc)
: m_first(first), m_last(last), m_alloc(alloc) {}
template <class Pointer>
void operator () (Pointer p) const {
uninitialized_copy_with_alloc(m_first, m_last, p, m_alloc);
}
private:
assign_range<Iterator, Alloc>& operator = (const assign_range<Iterator, Alloc>&); // do not generate
};
/*!
\class capacity_control
\brief Capacity controller of the space optimized circular buffer.
*/
template <class Size>
class capacity_control {
//! The capacity of the space optimized circular buffer.
Size m_capacity;
//! The lowest guaranteed capacity of the adapted circular buffer.
Size m_min_capacity;
public:
//! Constructor.
capacity_control(Size buffer_capacity, Size min_buffer_capacity = 0)
: m_capacity(buffer_capacity), m_min_capacity(min_buffer_capacity) {
BOOST_CB_ASSERT(buffer_capacity >= min_buffer_capacity); // check for capacity lower than min_capacity
}
// Default copy constructor.
// Default assign operator.
//! Get the capacity of the space optimized circular buffer.
Size capacity() const { return m_capacity; }
//! Get the minimal capacity of the space optimized circular buffer.
Size min_capacity() const { return m_min_capacity; }
//! Size operator - returns the capacity of the space optimized circular buffer.
operator Size() const { return m_capacity; }
};
/*!
\struct iterator
\brief Random access iterator for the circular buffer.
\param Buff The type of the underlying circular buffer.
\param Traits Basic iterator types.
\note This iterator is not circular. It was designed
for iterating from begin() to end() of the circular buffer.
*/
template <class Buff, class Traits>
struct iterator :
public boost::iterator<
std::random_access_iterator_tag,
typename Traits::value_type,
typename Traits::difference_type,
typename Traits::pointer,
typename Traits::reference>
#if BOOST_CB_ENABLE_DEBUG
, public debug_iterator_base
#endif // #if BOOST_CB_ENABLE_DEBUG
{
// Helper types
//! Base iterator.
typedef boost::iterator<
std::random_access_iterator_tag,
typename Traits::value_type,
typename Traits::difference_type,
typename Traits::pointer,
typename Traits::reference> base_iterator;
//! Non-const iterator.
typedef iterator<Buff, typename Traits::nonconst_self> nonconst_self;
// Basic types
//! The type of the elements stored in the circular buffer.
typedef typename base_iterator::value_type value_type;
//! Pointer to the element.
typedef typename base_iterator::pointer pointer;
//! Reference to the element.
typedef typename base_iterator::reference reference;
//! Size type.
typedef typename Traits::size_type size_type;
//! Difference type.
typedef typename base_iterator::difference_type difference_type;
// Member variables
//! The circular buffer where the iterator points to.
const Buff* m_buff;
//! An internal iterator.
pointer m_it;
// Construction & assignment
// Default copy constructor.
//! Default constructor.
iterator() : m_buff(0), m_it(0) {}
#if BOOST_CB_ENABLE_DEBUG
//! Copy constructor (used for converting from a non-const to a const iterator).
iterator(const nonconst_self& it) : debug_iterator_base(it), m_buff(it.m_buff), m_it(it.m_it) {}
//! Internal constructor.
/*!
\note This constructor is not intended to be used directly by the user.
*/
iterator(const Buff* cb, const pointer p) : debug_iterator_base(cb), m_buff(cb), m_it(p) {}
#else
iterator(const nonconst_self& it) : m_buff(it.m_buff), m_it(it.m_it) {}
iterator(const Buff* cb, const pointer p) : m_buff(cb), m_it(p) {}
#endif // #if BOOST_CB_ENABLE_DEBUG
//! Assign operator.
iterator& operator = (const iterator& it) {
if (this == &it)
return *this;
#if BOOST_CB_ENABLE_DEBUG
debug_iterator_base::operator =(it);
#endif // #if BOOST_CB_ENABLE_DEBUG
m_buff = it.m_buff;
m_it = it.m_it;
return *this;
}
// Random access iterator methods
//! Dereferencing operator.
reference operator * () const {
BOOST_CB_ASSERT(is_valid(m_buff)); // check for uninitialized or invalidated iterator
BOOST_CB_ASSERT(m_it != 0); // check for iterator pointing to end()
return *m_it;
}
//! Dereferencing operator.
pointer operator -> () const { return &(operator*()); }
//! Difference operator.
template <class Traits0>
difference_type operator - (const iterator<Buff, Traits0>& it) const {
BOOST_CB_ASSERT(is_valid(m_buff)); // check for uninitialized or invalidated iterator
BOOST_CB_ASSERT(it.is_valid(m_buff)); // check for uninitialized or invalidated iterator
return linearize_pointer(*this) - linearize_pointer(it);
}
//! Increment operator (prefix).
iterator& operator ++ () {
BOOST_CB_ASSERT(is_valid(m_buff)); // check for uninitialized or invalidated iterator
BOOST_CB_ASSERT(m_it != 0); // check for iterator pointing to end()
m_buff->increment(m_it);
if (m_it == m_buff->m_last)
m_it = 0;
return *this;
}
//! Increment operator (postfix).
iterator operator ++ (int) {
iterator<Buff, Traits> tmp = *this;
++*this;
return tmp;
}
//! Decrement operator (prefix).
iterator& operator -- () {
BOOST_CB_ASSERT(is_valid(m_buff)); // check for uninitialized or invalidated iterator
BOOST_CB_ASSERT(m_it != m_buff->m_first); // check for iterator pointing to begin()
if (m_it == 0)
m_it = m_buff->m_last;
m_buff->decrement(m_it);
return *this;
}
//! Decrement operator (postfix).
iterator operator -- (int) {
iterator<Buff, Traits> tmp = *this;
--*this;
return tmp;
}
//! Iterator addition.
iterator& operator += (difference_type n) {
BOOST_CB_ASSERT(is_valid(m_buff)); // check for uninitialized or invalidated iterator
if (n > 0) {
BOOST_CB_ASSERT(m_buff->end() - *this >= n); // check for too large n
m_it = m_buff->add(m_it, n);
if (m_it == m_buff->m_last)
m_it = 0;
} else if (n < 0) {
*this -= -n;
}
return *this;
}
//! Iterator addition.
iterator operator + (difference_type n) const { return iterator<Buff, Traits>(*this) += n; }
//! Iterator subtraction.
iterator& operator -= (difference_type n) {
BOOST_CB_ASSERT(is_valid(m_buff)); // check for uninitialized or invalidated iterator
if (n > 0) {
BOOST_CB_ASSERT(*this - m_buff->begin() >= n); // check for too large n
m_it = m_buff->sub(m_it == 0 ? m_buff->m_last : m_it, n);
} else if (n < 0) {
*this += -n;
}
return *this;
}
//! Iterator subtraction.
iterator operator - (difference_type n) const { return iterator<Buff, Traits>(*this) -= n; }
//! Element access operator.
reference operator [] (difference_type n) const { return *(*this + n); }
// Equality & comparison
//! Equality.
template <class Traits0>
bool operator == (const iterator<Buff, Traits0>& it) const {
BOOST_CB_ASSERT(is_valid(m_buff)); // check for uninitialized or invalidated iterator
BOOST_CB_ASSERT(it.is_valid(m_buff)); // check for uninitialized or invalidated iterator
return m_it == it.m_it;
}
//! Inequality.
template <class Traits0>
bool operator != (const iterator<Buff, Traits0>& it) const {
BOOST_CB_ASSERT(is_valid(m_buff)); // check for uninitialized or invalidated iterator
BOOST_CB_ASSERT(it.is_valid(m_buff)); // check for uninitialized or invalidated iterator
return m_it != it.m_it;
}
//! Less.
template <class Traits0>
bool operator < (const iterator<Buff, Traits0>& it) const {
BOOST_CB_ASSERT(is_valid(m_buff)); // check for uninitialized or invalidated iterator
BOOST_CB_ASSERT(it.is_valid(m_buff)); // check for uninitialized or invalidated iterator
return linearize_pointer(*this) < linearize_pointer(it);
}
//! Greater.
template <class Traits0>
bool operator > (const iterator<Buff, Traits0>& it) const { return it < *this; }
//! Less or equal.
template <class Traits0>
bool operator <= (const iterator<Buff, Traits0>& it) const { return !(it < *this); }
//! Greater or equal.
template <class Traits0>
bool operator >= (const iterator<Buff, Traits0>& it) const { return !(*this < it); }
// Helpers
//! Get a pointer which would point to the same element as the iterator in case the circular buffer is linearized.
template <class Traits0>
typename Traits0::pointer linearize_pointer(const iterator<Buff, Traits0>& it) const {
return it.m_it == 0 ? m_buff->m_buff + m_buff->size() :
(it.m_it < m_buff->m_first ? it.m_it + (m_buff->m_end - m_buff->m_first)
: m_buff->m_buff + (it.m_it - m_buff->m_first));
}
};
//! Iterator addition.
template <class Buff, class Traits>
inline iterator<Buff, Traits>
operator + (typename Traits::difference_type n, const iterator<Buff, Traits>& it) {
return it + n;
}
#if defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) && !defined(BOOST_MSVC_STD_ITERATOR)
//! Iterator category.
template <class Buff, class Traits>
inline std::random_access_iterator_tag iterator_category(const iterator<Buff, Traits>&) {
return std::random_access_iterator_tag();
}
//! The type of the elements stored in the circular buffer.
template <class Buff, class Traits>
inline typename Traits::value_type* value_type(const iterator<Buff, Traits>&) { return 0; }
//! Distance type.
template <class Buff, class Traits>
inline typename Traits::difference_type* distance_type(const iterator<Buff, Traits>&) { return 0; }
#endif // #if defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) && !defined(BOOST_MSVC_STD_ITERATOR)
/*!
\fn ForwardIterator uninitialized_copy_with_alloc(InputIterator first, InputIterator last, ForwardIterator dest,
Alloc& alloc)
\brief Equivalent of <code>std::uninitialized_copy</code> with allocator.
*/
template<class InputIterator, class ForwardIterator, class Alloc>
inline ForwardIterator uninitialized_copy_with_alloc(InputIterator first, InputIterator last, ForwardIterator dest,
Alloc& alloc) {
ForwardIterator next = dest;
BOOST_TRY {
for (; first != last; ++first, ++dest)
alloc.construct(dest, *first);
} BOOST_CATCH(...) {
for (; next != dest; ++next)
alloc.destroy(next);
BOOST_RETHROW
}
BOOST_CATCH_END
return dest;
}
/*!
\fn void uninitialized_fill_n_with_alloc(ForwardIterator first, Diff n, const T& item, Alloc& alloc)
\brief Equivalent of <code>std::uninitialized_fill_n</code> with allocator.
*/
template<class ForwardIterator, class Diff, class T, class Alloc>
inline void uninitialized_fill_n_with_alloc(ForwardIterator first, Diff n, const T& item, Alloc& alloc) {
ForwardIterator next = first;
BOOST_TRY {
for (; n > 0; ++first, --n)
alloc.construct(first, item);
} BOOST_CATCH(...) {
for (; next != first; ++next)
alloc.destroy(next);
BOOST_RETHROW
}
BOOST_CATCH_END
}
} // namespace cb_details
} // namespace boost
#endif // #if !defined(BOOST_CIRCULAR_BUFFER_DETAILS_HPP)
File diff suppressed because it is too large Load Diff
+43
View File
@@ -0,0 +1,43 @@
// Forward declaration of the circular buffer and its adaptor.
// Copyright (c) 2003-2008 Jan Gaspar
// Use, modification, and distribution is subject to the Boost Software
// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
// See www.boost.org/libs/circular_buffer for documentation.
#if !defined(BOOST_CIRCULAR_BUFFER_FWD_HPP)
#define BOOST_CIRCULAR_BUFFER_FWD_HPP
#if defined(_MSC_VER) && _MSC_VER >= 1200
#pragma once
#endif
#include <boost/config.hpp>
#if !defined(BOOST_NO_STD_ALLOCATOR)
#include <memory>
#else
#include <vector>
#endif
namespace boost {
#if !defined(BOOST_NO_STD_ALLOCATOR)
#define BOOST_CB_DEFAULT_ALLOCATOR(T) std::allocator<T>
#else
#define BOOST_CB_DEFAULT_ALLOCATOR(T) BOOST_DEDUCED_TYPENAME std::vector<T>::allocator_type
#endif
template <class T, class Alloc = BOOST_CB_DEFAULT_ALLOCATOR(T)>
class circular_buffer;
template <class T, class Alloc = BOOST_CB_DEFAULT_ALLOCATOR(T)>
class circular_buffer_space_optimized;
#undef BOOST_CB_DEFAULT_ALLOCATOR
} // namespace boost
#endif // #if !defined(BOOST_CIRCULAR_BUFFER_FWD_HPP)
+46
View File
@@ -0,0 +1,46 @@
// Copyright David Abrahams 2006. Distributed under the Boost
// Software License, Version 1.0. (See accompanying
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
#ifndef BOOST_CONCEPT_ASSERT_DWA2006430_HPP
# define BOOST_CONCEPT_ASSERT_DWA2006430_HPP
# include <boost/config.hpp>
# include <boost/detail/workaround.hpp>
// The old protocol used a constraints() member function in concept
// checking classes. If the compiler supports SFINAE, we can detect
// that function and seamlessly support the old concept checking
// classes. In this release, backward compatibility with the old
// concept checking classes is enabled by default, where available.
// The old protocol is deprecated, though, and backward compatibility
// will no longer be the default in the next release.
# if !defined(BOOST_NO_OLD_CONCEPT_SUPPORT) \
&& !defined(BOOST_NO_SFINAE) \
\
&& !(BOOST_WORKAROUND(__GNUC__, == 3) && BOOST_WORKAROUND(__GNUC_MINOR__, < 4)) \
&& !(BOOST_WORKAROUND(__GNUC__, == 2))
// Note: gcc-2.96 through 3.3.x have some SFINAE, but no ability to
// check for the presence of particularmember functions.
# define BOOST_OLD_CONCEPT_SUPPORT
# endif
# ifdef BOOST_MSVC
# include <boost/concept/detail/msvc.hpp>
# elif BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564))
# include <boost/concept/detail/borland.hpp>
# else
# include <boost/concept/detail/general.hpp>
# endif
// Usage, in class or function context:
//
// BOOST_CONCEPT_ASSERT((UnaryFunctionConcept<F,bool,int>));
//
# define BOOST_CONCEPT_ASSERT(ModelInParens) \
BOOST_CONCEPT_ASSERT_FN(void(*)ModelInParens)
#endif // BOOST_CONCEPT_ASSERT_DWA2006430_HPP
@@ -0,0 +1,16 @@
// Copyright David Abrahams 2009. Distributed under the Boost
// Software License, Version 1.0. (See accompanying
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
#ifndef BOOST_CONCEPT_BACKWARD_COMPATIBILITY_DWA200968_HPP
# define BOOST_CONCEPT_BACKWARD_COMPATIBILITY_DWA200968_HPP
namespace boost
{
namespace concepts {}
# if !defined(BOOST_NO_CONCEPTS) && !defined(BOOST_CONCEPT_NO_BACKWARD_KEYWORD)
namespace concept = concepts;
# endif
} // namespace boost::concept
#endif // BOOST_CONCEPT_BACKWARD_COMPATIBILITY_DWA200968_HPP
+30
View File
@@ -0,0 +1,30 @@
// Copyright David Abrahams 2006. Distributed under the Boost
// Software License, Version 1.0. (See accompanying
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
#ifndef BOOST_CONCEPT_DETAIL_BORLAND_DWA2006429_HPP
# define BOOST_CONCEPT_DETAIL_BORLAND_DWA2006429_HPP
# include <boost/preprocessor/cat.hpp>
# include <boost/concept/detail/backward_compatibility.hpp>
namespace boost { namespace concepts {
template <class ModelFnPtr>
struct require;
template <class Model>
struct require<void(*)(Model)>
{
enum { instantiate = sizeof((((Model*)0)->~Model()), 3) };
};
# define BOOST_CONCEPT_ASSERT_FN( ModelFnPtr ) \
enum \
{ \
BOOST_PP_CAT(boost_concept_check,__LINE__) = \
boost::concepts::require<ModelFnPtr>::instantiate \
}
}} // namespace boost::concept
#endif // BOOST_CONCEPT_DETAIL_BORLAND_DWA2006429_HPP
@@ -0,0 +1,51 @@
// Copyright David Abrahams 2006. Distributed under the Boost
// Software License, Version 1.0. (See accompanying
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
#ifndef BOOST_CONCEPT_DETAIL_CONCEPT_DEF_DWA200651_HPP
# define BOOST_CONCEPT_DETAIL_CONCEPT_DEF_DWA200651_HPP
# include <boost/preprocessor/seq/for_each_i.hpp>
# include <boost/preprocessor/seq/enum.hpp>
# include <boost/preprocessor/comma_if.hpp>
# include <boost/preprocessor/cat.hpp>
#endif // BOOST_CONCEPT_DETAIL_CONCEPT_DEF_DWA200651_HPP
// BOOST_concept(SomeName, (p1)(p2)...(pN))
//
// Expands to "template <class p1, class p2, ...class pN> struct SomeName"
//
// Also defines an equivalent SomeNameConcept for backward compatibility.
// Maybe in the next release we can kill off the "Concept" suffix for good.
#if BOOST_WORKAROUND(__GNUC__, <= 3)
# define BOOST_concept(name, params) \
template < BOOST_PP_SEQ_FOR_EACH_I(BOOST_CONCEPT_typename,~,params) > \
struct name; /* forward declaration */ \
\
template < BOOST_PP_SEQ_FOR_EACH_I(BOOST_CONCEPT_typename,~,params) > \
struct BOOST_PP_CAT(name,Concept) \
: name< BOOST_PP_SEQ_ENUM(params) > \
{ \
/* at least 2.96 and 3.4.3 both need this */ \
BOOST_PP_CAT(name,Concept)(); \
}; \
\
template < BOOST_PP_SEQ_FOR_EACH_I(BOOST_CONCEPT_typename,~,params) > \
struct name
#else
# define BOOST_concept(name, params) \
template < BOOST_PP_SEQ_FOR_EACH_I(BOOST_CONCEPT_typename,~,params) > \
struct name; /* forward declaration */ \
\
template < BOOST_PP_SEQ_FOR_EACH_I(BOOST_CONCEPT_typename,~,params) > \
struct BOOST_PP_CAT(name,Concept) \
: name< BOOST_PP_SEQ_ENUM(params) > \
{ \
}; \
\
template < BOOST_PP_SEQ_FOR_EACH_I(BOOST_CONCEPT_typename,~,params) > \
struct name
#endif
// Helper for BOOST_concept, above.
# define BOOST_CONCEPT_typename(r, ignored, index, t) \
BOOST_PP_COMMA_IF(index) typename t
@@ -0,0 +1,5 @@
// Copyright David Abrahams 2006. Distributed under the Boost
// Software License, Version 1.0. (See accompanying
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
# undef BOOST_concept_typename
# undef BOOST_concept
+75
View File
@@ -0,0 +1,75 @@
// Copyright David Abrahams 2006. Distributed under the Boost
// Software License, Version 1.0. (See accompanying
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
#ifndef BOOST_CONCEPT_DETAIL_GENERAL_DWA2006429_HPP
# define BOOST_CONCEPT_DETAIL_GENERAL_DWA2006429_HPP
# include <boost/preprocessor/cat.hpp>
# include <boost/concept/detail/backward_compatibility.hpp>
# ifdef BOOST_OLD_CONCEPT_SUPPORT
# include <boost/concept/detail/has_constraints.hpp>
# include <boost/mpl/if.hpp>
# endif
// This implementation works on Comeau and GCC, all the way back to
// 2.95
namespace boost { namespace concepts {
template <class ModelFn>
struct requirement_;
namespace detail
{
template <void(*)()> struct instantiate {};
}
template <class Model>
struct requirement
{
static void failed() { ((Model*)0)->~Model(); }
};
struct failed {};
template <class Model>
struct requirement<failed ************ Model::************>
{
static void failed() { ((Model*)0)->~Model(); }
};
# ifdef BOOST_OLD_CONCEPT_SUPPORT
template <class Model>
struct constraint
{
static void failed() { ((Model*)0)->constraints(); }
};
template <class Model>
struct requirement_<void(*)(Model)>
: mpl::if_<
concepts::not_satisfied<Model>
, constraint<Model>
, requirement<failed ************ Model::************>
>::type
{};
# else
// For GCC-2.x, these can't have exactly the same name
template <class Model>
struct requirement_<void(*)(Model)>
: requirement<failed ************ Model::************>
{};
# endif
# define BOOST_CONCEPT_ASSERT_FN( ModelFnPtr ) \
typedef ::boost::concepts::detail::instantiate< \
&::boost::concepts::requirement_<ModelFnPtr>::failed> \
BOOST_PP_CAT(boost_concept_check,__LINE__)
}}
#endif // BOOST_CONCEPT_DETAIL_GENERAL_DWA2006429_HPP
@@ -0,0 +1,50 @@
// Copyright David Abrahams 2006. Distributed under the Boost
// Software License, Version 1.0. (See accompanying
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
#ifndef BOOST_CONCEPT_DETAIL_HAS_CONSTRAINTS_DWA2006429_HPP
# define BOOST_CONCEPT_DETAIL_HAS_CONSTRAINTS_DWA2006429_HPP
# include <boost/mpl/bool.hpp>
# include <boost/detail/workaround.hpp>
# include <boost/concept/detail/backward_compatibility.hpp>
namespace boost { namespace concepts {
namespace detail
{
// Here we implement the metafunction that detects whether a
// constraints metafunction exists
typedef char yes;
typedef char (&no)[2];
template <class Model, void (Model::*)()>
struct wrap_constraints {};
#if BOOST_WORKAROUND(__SUNPRO_CC, <= 0x580) || defined(__CUDACC__)
// Work around the following bogus error in Sun Studio 11, by
// turning off the has_constraints function entirely:
// Error: complex expression not allowed in dependent template
// argument expression
inline no has_constraints_(...);
#else
template <class Model>
inline yes has_constraints_(Model*, wrap_constraints<Model,&Model::constraints>* = 0);
inline no has_constraints_(...);
#endif
}
// This would be called "detail::has_constraints," but it has a strong
// tendency to show up in error messages.
template <class Model>
struct not_satisfied
{
BOOST_STATIC_CONSTANT(
bool
, value = sizeof( detail::has_constraints_((Model*)0) ) == sizeof(detail::yes) );
typedef mpl::bool_<value> type;
};
}} // namespace boost::concepts::detail
#endif // BOOST_CONCEPT_DETAIL_HAS_CONSTRAINTS_DWA2006429_HPP
+114
View File
@@ -0,0 +1,114 @@
// Copyright David Abrahams 2006. Distributed under the Boost
// Software License, Version 1.0. (See accompanying
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
#ifndef BOOST_CONCEPT_CHECK_MSVC_DWA2006429_HPP
# define BOOST_CONCEPT_CHECK_MSVC_DWA2006429_HPP
# include <boost/preprocessor/cat.hpp>
# include <boost/concept/detail/backward_compatibility.hpp>
# ifdef BOOST_OLD_CONCEPT_SUPPORT
# include <boost/concept/detail/has_constraints.hpp>
# include <boost/mpl/if.hpp>
# endif
namespace boost { namespace concepts {
template <class Model>
struct check
{
virtual void failed(Model* x)
{
x->~Model();
}
};
# ifndef BOOST_NO_PARTIAL_SPECIALIZATION
struct failed {};
template <class Model>
struct check<failed ************ Model::************>
{
virtual void failed(Model* x)
{
x->~Model();
}
};
# endif
# ifdef BOOST_OLD_CONCEPT_SUPPORT
namespace detail
{
// No need for a virtual function here, since evaluating
// not_satisfied below will have already instantiated the
// constraints() member.
struct constraint {};
}
template <class Model>
struct require
: mpl::if_c<
not_satisfied<Model>::value
, detail::constraint
# ifndef BOOST_NO_PARTIAL_SPECIALIZATION
, check<Model>
# else
, check<failed ************ Model::************>
# endif
>::type
{};
# else
template <class Model>
struct require
# ifndef BOOST_NO_PARTIAL_SPECIALIZATION
: check<Model>
# else
: check<failed ************ Model::************>
# endif
{};
# endif
# if BOOST_WORKAROUND(BOOST_MSVC, == 1310)
//
// The iterator library sees some really strange errors unless we
// do things this way.
//
template <class Model>
struct require<void(*)(Model)>
{
virtual void failed(Model*)
{
require<Model>();
}
};
# define BOOST_CONCEPT_ASSERT_FN( ModelFnPtr ) \
enum \
{ \
BOOST_PP_CAT(boost_concept_check,__LINE__) = \
sizeof(::boost::concepts::require<ModelFnPtr>) \
}
# else // Not vc-7.1
template <class Model>
require<Model>
require_(void(*)(Model));
# define BOOST_CONCEPT_ASSERT_FN( ModelFnPtr ) \
enum \
{ \
BOOST_PP_CAT(boost_concept_check,__LINE__) = \
sizeof(::boost::concepts::require_((ModelFnPtr)0)) \
}
# endif
}}
#endif // BOOST_CONCEPT_CHECK_MSVC_DWA2006429_HPP
+78
View File
@@ -0,0 +1,78 @@
// Copyright David Abrahams 2006. Distributed under the Boost
// Software License, Version 1.0. (See accompanying
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
#ifndef BOOST_CONCEPT_REQUIRES_DWA2006430_HPP
# define BOOST_CONCEPT_REQUIRES_DWA2006430_HPP
# include <boost/config.hpp>
# include <boost/parameter/aux_/parenthesized_type.hpp>
# include <boost/concept/assert.hpp>
# include <boost/preprocessor/seq/for_each.hpp>
namespace boost {
// Template for use in handwritten assertions
template <class Model, class More>
struct requires_ : More
{
# if BOOST_WORKAROUND(BOOST_MSVC, <= 1300)
typedef typename More::type type;
# endif
BOOST_CONCEPT_ASSERT((Model));
};
// Template for use by macros, where models must be wrapped in parens.
// This isn't in namespace detail to keep extra cruft out of resulting
// error messages.
template <class ModelFn>
struct _requires_
{
enum { value = 0 };
BOOST_CONCEPT_ASSERT_FN(ModelFn);
};
template <int check, class Result>
struct Requires_ : ::boost::parameter::aux::unaryfunptr_arg_type<Result>
{
# if BOOST_WORKAROUND(BOOST_MSVC, <= 1300)
typedef typename ::boost::parameter::aux::unaryfunptr_arg_type<Result>::type type;
# endif
};
# if BOOST_WORKAROUND(BOOST_INTEL_WIN, BOOST_TESTED_AT(1010))
# define BOOST_CONCEPT_REQUIRES_(r,data,t) | (::boost::_requires_<void(*)t>::value)
# else
# define BOOST_CONCEPT_REQUIRES_(r,data,t) + (::boost::_requires_<void(*)t>::value)
# endif
#if defined(NDEBUG) || BOOST_WORKAROUND(BOOST_MSVC, < 1300)
# define BOOST_CONCEPT_REQUIRES(models, result) \
typename ::boost::parameter::aux::unaryfunptr_arg_type<void(*)result>::type
#elif BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564))
// Same thing as below without the initial typename
# define BOOST_CONCEPT_REQUIRES(models, result) \
::boost::Requires_< \
(0 BOOST_PP_SEQ_FOR_EACH(BOOST_CONCEPT_REQUIRES_, ~, models)), \
::boost::parameter::aux::unaryfunptr_arg_type<void(*)result> \
>::type
#else
// This just ICEs on MSVC6 :(
# define BOOST_CONCEPT_REQUIRES(models, result) \
typename ::boost::Requires_< \
(0 BOOST_PP_SEQ_FOR_EACH(BOOST_CONCEPT_REQUIRES_, ~, models)), \
void(*)result \
>::type
#endif
// C++0x proposed syntax changed. This supports an older usage
#define BOOST_CONCEPT_WHERE(models,result) BOOST_CONCEPT_REQUIRES(models,result)
} // namespace boost::concept_check
#endif // BOOST_CONCEPT_REQUIRES_DWA2006430_HPP
+44
View File
@@ -0,0 +1,44 @@
// Copyright David Abrahams 2006. Distributed under the Boost
// Software License, Version 1.0. (See accompanying
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
#ifndef BOOST_CONCEPT_USAGE_DWA2006919_HPP
# define BOOST_CONCEPT_USAGE_DWA2006919_HPP
# include <boost/concept/assert.hpp>
# include <boost/detail/workaround.hpp>
# include <boost/concept/detail/backward_compatibility.hpp>
namespace boost { namespace concepts {
# if BOOST_WORKAROUND(__GNUC__, == 2)
# define BOOST_CONCEPT_USAGE(model) ~model()
# else
template <class Model>
struct usage_requirements
{
~usage_requirements() { ((Model*)0)->~Model(); }
};
# if BOOST_WORKAROUND(__GNUC__, <= 3)
# define BOOST_CONCEPT_USAGE(model) \
model(); /* at least 2.96 and 3.4.3 both need this :( */ \
BOOST_CONCEPT_ASSERT((boost::concepts::usage_requirements<model>)); \
~model()
# else
# define BOOST_CONCEPT_USAGE(model) \
BOOST_CONCEPT_ASSERT((boost::concepts::usage_requirements<model>)); \
~model()
# endif
# endif
}} // namespace boost::concepts
#endif // BOOST_CONCEPT_USAGE_DWA2006919_HPP
File diff suppressed because it is too large Load Diff
+70
View File
@@ -0,0 +1,70 @@
// Boost config.hpp configuration header file ------------------------------//
// (C) Copyright John Maddock 2002.
// Use, modification and distribution are subject to the
// Boost Software License, Version 1.0. (See accompanying file
// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
// See http://www.boost.org/libs/config for most recent version.
// Boost config.hpp policy and rationale documentation has been moved to
// http://www.boost.org/libs/config
//
// CAUTION: This file is intended to be completely stable -
// DO NOT MODIFY THIS FILE!
//
#ifndef BOOST_CONFIG_HPP
#define BOOST_CONFIG_HPP
// if we don't have a user config, then use the default location:
#if !defined(BOOST_USER_CONFIG) && !defined(BOOST_NO_USER_CONFIG)
# define BOOST_USER_CONFIG <boost/config/user.hpp>
#endif
// include it first:
#ifdef BOOST_USER_CONFIG
# include BOOST_USER_CONFIG
#endif
// if we don't have a compiler config set, try and find one:
#if !defined(BOOST_COMPILER_CONFIG) && !defined(BOOST_NO_COMPILER_CONFIG) && !defined(BOOST_NO_CONFIG)
# include <boost/config/select_compiler_config.hpp>
#endif
// if we have a compiler config, include it now:
#ifdef BOOST_COMPILER_CONFIG
# include BOOST_COMPILER_CONFIG
#endif
// if we don't have a std library config set, try and find one:
#if !defined(BOOST_STDLIB_CONFIG) && !defined(BOOST_NO_STDLIB_CONFIG) && !defined(BOOST_NO_CONFIG)
# include <boost/config/select_stdlib_config.hpp>
#endif
// if we have a std library config, include it now:
#ifdef BOOST_STDLIB_CONFIG
# include BOOST_STDLIB_CONFIG
#endif
// if we don't have a platform config set, try and find one:
#if !defined(BOOST_PLATFORM_CONFIG) && !defined(BOOST_NO_PLATFORM_CONFIG) && !defined(BOOST_NO_CONFIG)
# include <boost/config/select_platform_config.hpp>
#endif
// if we have a platform config, include it now:
#ifdef BOOST_PLATFORM_CONFIG
# include BOOST_PLATFORM_CONFIG
#endif
// get config suffix code:
#include <boost/config/suffix.hpp>
#endif // BOOST_CONFIG_HPP
+27
View File
@@ -0,0 +1,27 @@
// (C) Copyright John Maddock 2003.
// Use, modification and distribution are subject to the
// Boost Software License, Version 1.0. (See accompanying file
// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
// for C++ Builder the following options effect the ABI:
//
// -b (on or off - effect emum sizes)
// -Vx (on or off - empty members)
// -Ve (on or off - empty base classes)
// -aX (alignment - 5 options).
// -pX (Calling convention - 4 options)
// -VmX (member pointer size and layout - 5 options)
// -VC (on or off, changes name mangling)
// -Vl (on or off, changes struct layout).
// In addition the following warnings are sufficiently annoying (and
// unfixable) to have them turned off by default:
//
// 8027 - functions containing [for|while] loops are not expanded inline
// 8026 - functions taking class by value arguments are not expanded inline
#pragma nopushoptwarn
# pragma option push -a8 -Vx- -Ve- -b- -pc -Vmv -VC- -Vl- -w-8027 -w-8026
+12
View File
@@ -0,0 +1,12 @@
// (C) Copyright John Maddock 2003.
// Use, modification and distribution are subject to the
// Boost Software License, Version 1.0. (See accompanying file
// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
# pragma option pop
#pragma nopushoptwarn
+22
View File
@@ -0,0 +1,22 @@
// (C) Copyright John Maddock 2003.
// Use, modification and distribution are subject to the
// Boost Software License, Version 1.0. (See accompanying file
// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
//
// Boost binaries are built with the compiler's default ABI settings,
// if the user changes their default alignment in the VS IDE then their
// code will no longer be binary compatible with the bjam built binaries
// unless this header is included to force Boost code into a consistent ABI.
//
// Note that inclusion of this header is only necessary for libraries with
// separate source, header only libraries DO NOT need this as long as all
// translation units are built with the same options.
//
#if defined(_M_X64)
# pragma pack(push,16)
#else
# pragma pack(push,8)
#endif
+8
View File
@@ -0,0 +1,8 @@
// (C) Copyright John Maddock 2003.
// Use, modification and distribution are subject to the
// Boost Software License, Version 1.0. (See accompanying file
// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
#pragma pack(pop)
+25
View File
@@ -0,0 +1,25 @@
// abi_prefix header -------------------------------------------------------//
// (c) Copyright John Maddock 2003
// Use, modification and distribution are subject to the Boost Software License,
// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt).
#ifndef BOOST_CONFIG_ABI_PREFIX_HPP
# define BOOST_CONFIG_ABI_PREFIX_HPP
#else
# error double inclusion of header boost/config/abi_prefix.hpp is an error
#endif
#include <boost/config.hpp>
// this must occur after all other includes and before any code appears:
#ifdef BOOST_HAS_ABI_HEADERS
# include BOOST_ABI_PREFIX
#endif
#if defined( __BORLANDC__ )
#pragma nopushoptwarn
#endif
+27
View File
@@ -0,0 +1,27 @@
// abi_sufffix header -------------------------------------------------------//
// (c) Copyright John Maddock 2003
// Use, modification and distribution are subject to the Boost Software License,
// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt).
// This header should be #included AFTER code that was preceded by a #include
// <boost/config/abi_prefix.hpp>.
#ifndef BOOST_CONFIG_ABI_PREFIX_HPP
# error Header boost/config/abi_suffix.hpp must only be used after boost/config/abi_prefix.hpp
#else
# undef BOOST_CONFIG_ABI_PREFIX_HPP
#endif
// the suffix header occurs after all of our code:
#ifdef BOOST_HAS_ABI_HEADERS
# include BOOST_ABI_SUFFIX
#endif
#if defined( __BORLANDC__ )
#pragma nopushoptwarn
#endif
+420
View File
@@ -0,0 +1,420 @@
// (C) Copyright John Maddock 2003.
// Use, modification and distribution are subject to the
// Boost Software License, Version 1.0. (See accompanying file
// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
/*
* LOCATION: see http://www.boost.org for most recent version.
* FILE auto_link.hpp
* VERSION see <boost/version.hpp>
* DESCRIPTION: Automatic library inclusion for Borland/Microsoft compilers.
*/
/*************************************************************************
USAGE:
~~~~~~
Before including this header you must define one or more of define the following macros:
BOOST_LIB_NAME: Required: A string containing the basename of the library,
for example boost_regex.
BOOST_LIB_TOOLSET: Optional: the base name of the toolset.
BOOST_DYN_LINK: Optional: when set link to dll rather than static library.
BOOST_LIB_DIAGNOSTIC: Optional: when set the header will print out the name
of the library selected (useful for debugging).
BOOST_AUTO_LINK_NOMANGLE: Specifies that we should link to BOOST_LIB_NAME.lib,
rather than a mangled-name version.
BOOST_AUTO_LINK_TAGGED: Specifies that we link to libraries built with the --layout=tagged option.
This is essentially the same as the default name-mangled version, but without
the compiler name and version, or the Boost version. Just the build options.
These macros will be undef'ed at the end of the header, further this header
has no include guards - so be sure to include it only once from your library!
Algorithm:
~~~~~~~~~~
Libraries for Borland and Microsoft compilers are automatically
selected here, the name of the lib is selected according to the following
formula:
BOOST_LIB_PREFIX
+ BOOST_LIB_NAME
+ "_"
+ BOOST_LIB_TOOLSET
+ BOOST_LIB_THREAD_OPT
+ BOOST_LIB_RT_OPT
"-"
+ BOOST_LIB_VERSION
These are defined as:
BOOST_LIB_PREFIX: "lib" for static libraries otherwise "".
BOOST_LIB_NAME: The base name of the lib ( for example boost_regex).
BOOST_LIB_TOOLSET: The compiler toolset name (vc6, vc7, bcb5 etc).
BOOST_LIB_THREAD_OPT: "-mt" for multithread builds, otherwise nothing.
BOOST_LIB_RT_OPT: A suffix that indicates the runtime library used,
contains one or more of the following letters after
a hiphen:
s static runtime (dynamic if not present).
g debug/diagnostic runtime (release if not present).
y Python debug/diagnostic runtime (release if not present).
d debug build (release if not present).
g debug/diagnostic runtime (release if not present).
p STLPort Build.
BOOST_LIB_VERSION: The Boost version, in the form x_y, for Boost version x.y.
***************************************************************************/
#ifdef __cplusplus
# ifndef BOOST_CONFIG_HPP
# include <boost/config.hpp>
# endif
#elif defined(_MSC_VER) && !defined(__MWERKS__) && !defined(__EDG_VERSION__)
//
// C language compatability (no, honestly)
//
# define BOOST_MSVC _MSC_VER
# define BOOST_STRINGIZE(X) BOOST_DO_STRINGIZE(X)
# define BOOST_DO_STRINGIZE(X) #X
#endif
//
// Only include what follows for known and supported compilers:
//
#if defined(BOOST_MSVC) \
|| defined(__BORLANDC__) \
|| (defined(__MWERKS__) && defined(_WIN32) && (__MWERKS__ >= 0x3000)) \
|| (defined(__ICL) && defined(_MSC_EXTENSIONS) && (_MSC_VER >= 1200))
#ifndef BOOST_VERSION_HPP
# include <boost/version.hpp>
#endif
#ifndef BOOST_LIB_NAME
# error "Macro BOOST_LIB_NAME not set (internal error)"
#endif
//
// error check:
//
#if defined(__MSVC_RUNTIME_CHECKS) && !defined(_DEBUG)
# pragma message("Using the /RTC option without specifying a debug runtime will lead to linker errors")
# pragma message("Hint: go to the code generation options and switch to one of the debugging runtimes")
# error "Incompatible build options"
#endif
//
// select toolset if not defined already:
//
#ifndef BOOST_LIB_TOOLSET
// Note: no compilers before 1200 are supported
#if defined(BOOST_MSVC) && (BOOST_MSVC < 1300)
# ifdef UNDER_CE
// vc6:
# define BOOST_LIB_TOOLSET "evc4"
# else
// vc6:
# define BOOST_LIB_TOOLSET "vc6"
# endif
#elif defined(BOOST_MSVC) && (BOOST_MSVC == 1300)
// vc7:
# define BOOST_LIB_TOOLSET "vc7"
#elif defined(BOOST_MSVC) && (BOOST_MSVC == 1310)
// vc71:
# define BOOST_LIB_TOOLSET "vc71"
#elif defined(BOOST_MSVC) && (BOOST_MSVC == 1400)
// vc80:
# define BOOST_LIB_TOOLSET "vc80"
#elif defined(BOOST_MSVC) && (BOOST_MSVC == 1500)
// vc90:
# define BOOST_LIB_TOOLSET "vc90"
#elif defined(BOOST_MSVC) && (BOOST_MSVC >= 1600)
// vc10:
# define BOOST_LIB_TOOLSET "vc100"
#elif defined(__BORLANDC__)
// CBuilder 6:
# define BOOST_LIB_TOOLSET "bcb"
#elif defined(__ICL)
// Intel C++, no version number:
# define BOOST_LIB_TOOLSET "iw"
#elif defined(__MWERKS__) && (__MWERKS__ <= 0x31FF )
// Metrowerks CodeWarrior 8.x
# define BOOST_LIB_TOOLSET "cw8"
#elif defined(__MWERKS__) && (__MWERKS__ <= 0x32FF )
// Metrowerks CodeWarrior 9.x
# define BOOST_LIB_TOOLSET "cw9"
#endif
#endif // BOOST_LIB_TOOLSET
//
// select thread opt:
//
#if defined(_MT) || defined(__MT__)
# define BOOST_LIB_THREAD_OPT "-mt"
#else
# define BOOST_LIB_THREAD_OPT
#endif
#if defined(_MSC_VER) || defined(__MWERKS__)
# ifdef _DLL
# if (defined(__SGI_STL_PORT) || defined(_STLPORT_VERSION)) && (defined(_STLP_OWN_IOSTREAMS) || defined(__STL_OWN_IOSTREAMS))
# if defined(_DEBUG) && (defined(__STL_DEBUG) || defined(_STLP_DEBUG))\
&& defined(BOOST_DEBUG_PYTHON) && defined(BOOST_LINKING_PYTHON)
# define BOOST_LIB_RT_OPT "-gydp"
# elif defined(_DEBUG) && (defined(__STL_DEBUG) || defined(_STLP_DEBUG))
# define BOOST_LIB_RT_OPT "-gdp"
# elif defined(_DEBUG)\
&& defined(BOOST_DEBUG_PYTHON) && defined(BOOST_LINKING_PYTHON)
# define BOOST_LIB_RT_OPT "-gydp"
# pragma message("warning: STLPort debug versions are built with /D_STLP_DEBUG=1")
# error "Build options aren't compatible with pre-built libraries"
# elif defined(_DEBUG)
# define BOOST_LIB_RT_OPT "-gdp"
# pragma message("warning: STLPort debug versions are built with /D_STLP_DEBUG=1")
# error "Build options aren't compatible with pre-built libraries"
# else
# define BOOST_LIB_RT_OPT "-p"
# endif
# elif defined(__SGI_STL_PORT) || defined(_STLPORT_VERSION)
# if defined(_DEBUG) && (defined(__STL_DEBUG) || defined(_STLP_DEBUG))\
&& defined(BOOST_DEBUG_PYTHON) && defined(BOOST_LINKING_PYTHON)
# define BOOST_LIB_RT_OPT "-gydpn"
# elif defined(_DEBUG) && (defined(__STL_DEBUG) || defined(_STLP_DEBUG))
# define BOOST_LIB_RT_OPT "-gdpn"
# elif defined(_DEBUG)\
&& defined(BOOST_DEBUG_PYTHON) && defined(BOOST_LINKING_PYTHON)
# define BOOST_LIB_RT_OPT "-gydpn"
# pragma message("warning: STLPort debug versions are built with /D_STLP_DEBUG=1")
# error "Build options aren't compatible with pre-built libraries"
# elif defined(_DEBUG)
# define BOOST_LIB_RT_OPT "-gdpn"
# pragma message("warning: STLPort debug versions are built with /D_STLP_DEBUG=1")
# error "Build options aren't compatible with pre-built libraries"
# else
# define BOOST_LIB_RT_OPT "-pn"
# endif
# else
# if defined(_DEBUG) && defined(BOOST_DEBUG_PYTHON) && defined(BOOST_LINKING_PYTHON)
# define BOOST_LIB_RT_OPT "-gyd"
# elif defined(_DEBUG)
# define BOOST_LIB_RT_OPT "-gd"
# else
# define BOOST_LIB_RT_OPT
# endif
# endif
# else
# if (defined(__SGI_STL_PORT) || defined(_STLPORT_VERSION)) && (defined(_STLP_OWN_IOSTREAMS) || defined(__STL_OWN_IOSTREAMS))
# if defined(_DEBUG) && (defined(__STL_DEBUG) || defined(_STLP_DEBUG))\
&& defined(BOOST_DEBUG_PYTHON) && defined(BOOST_LINKING_PYTHON)
# define BOOST_LIB_RT_OPT "-sgydp"
# elif defined(_DEBUG) && (defined(__STL_DEBUG) || defined(_STLP_DEBUG))
# define BOOST_LIB_RT_OPT "-sgdp"
# elif defined(_DEBUG)\
&& defined(BOOST_DEBUG_PYTHON) && defined(BOOST_LINKING_PYTHON)
# define BOOST_LIB_RT_OPT "-sgydp"
# pragma message("warning: STLPort debug versions are built with /D_STLP_DEBUG=1")
# error "Build options aren't compatible with pre-built libraries"
# elif defined(_DEBUG)
# define BOOST_LIB_RT_OPT "-sgdp"
# pragma message("warning: STLPort debug versions are built with /D_STLP_DEBUG=1")
# error "Build options aren't compatible with pre-built libraries"
# else
# define BOOST_LIB_RT_OPT "-sp"
# endif
# elif defined(__SGI_STL_PORT) || defined(_STLPORT_VERSION)
# if defined(_DEBUG) && (defined(__STL_DEBUG) || defined(_STLP_DEBUG))\
&& defined(BOOST_DEBUG_PYTHON) && defined(BOOST_LINKING_PYTHON)
# define BOOST_LIB_RT_OPT "-sgydpn"
# elif defined(_DEBUG) && (defined(__STL_DEBUG) || defined(_STLP_DEBUG))
# define BOOST_LIB_RT_OPT "-sgdpn"
# elif defined(_DEBUG)\
&& defined(BOOST_DEBUG_PYTHON) && defined(BOOST_LINKING_PYTHON)
# define BOOST_LIB_RT_OPT "-sgydpn"
# pragma message("warning: STLPort debug versions are built with /D_STLP_DEBUG=1")
# error "Build options aren't compatible with pre-built libraries"
# elif defined(_DEBUG)
# define BOOST_LIB_RT_OPT "-sgdpn"
# pragma message("warning: STLPort debug versions are built with /D_STLP_DEBUG=1")
# error "Build options aren't compatible with pre-built libraries"
# else
# define BOOST_LIB_RT_OPT "-spn"
# endif
# else
# if defined(_DEBUG)\
&& defined(BOOST_DEBUG_PYTHON) && defined(BOOST_LINKING_PYTHON)
# define BOOST_LIB_RT_OPT "-sgyd"
# elif defined(_DEBUG)
# define BOOST_LIB_RT_OPT "-sgd"
# else
# define BOOST_LIB_RT_OPT "-s"
# endif
# endif
# endif
#elif defined(__BORLANDC__)
//
// figure out whether we want the debug builds or not:
//
#if __BORLANDC__ > 0x561
#pragma defineonoption BOOST_BORLAND_DEBUG -v
#endif
//
// sanity check:
//
#if defined(__STL_DEBUG) || defined(_STLP_DEBUG)
#error "Pre-built versions of the Boost libraries are not provided in STLPort-debug form"
#endif
# ifdef _RTLDLL
# if defined(BOOST_BORLAND_DEBUG)\
&& defined(BOOST_DEBUG_PYTHON) && defined(BOOST_LINKING_PYTHON)
# define BOOST_LIB_RT_OPT "-yd"
# elif defined(BOOST_BORLAND_DEBUG)
# define BOOST_LIB_RT_OPT "-d"
# elif defined(BOOST_DEBUG_PYTHON) && defined(BOOST_LINKING_PYTHON)
# define BOOST_LIB_RT_OPT -y
# else
# define BOOST_LIB_RT_OPT
# endif
# else
# if defined(BOOST_BORLAND_DEBUG)\
&& defined(BOOST_DEBUG_PYTHON) && defined(BOOST_LINKING_PYTHON)
# define BOOST_LIB_RT_OPT "-syd"
# elif defined(BOOST_BORLAND_DEBUG)
# define BOOST_LIB_RT_OPT "-sd"
# elif defined(BOOST_DEBUG_PYTHON) && defined(BOOST_LINKING_PYTHON)
# define BOOST_LIB_RT_OPT "-sy"
# else
# define BOOST_LIB_RT_OPT "-s"
# endif
# endif
#endif
//
// select linkage opt:
//
#if (defined(_DLL) || defined(_RTLDLL)) && defined(BOOST_DYN_LINK)
# define BOOST_LIB_PREFIX
#elif defined(BOOST_DYN_LINK)
# error "Mixing a dll boost library with a static runtime is a really bad idea..."
#else
# define BOOST_LIB_PREFIX "lib"
#endif
//
// now include the lib:
//
#if defined(BOOST_LIB_NAME) \
&& defined(BOOST_LIB_PREFIX) \
&& defined(BOOST_LIB_TOOLSET) \
&& defined(BOOST_LIB_THREAD_OPT) \
&& defined(BOOST_LIB_RT_OPT) \
&& defined(BOOST_LIB_VERSION)
#ifdef BOOST_AUTO_LINK_TAGGED
# pragma commentcomment(lib, BOOST_LIB_PREFIX BOOST_STRINGIZE(BOOST_LIB_NAME) BOOST_LIB_THREAD_OPT BOOST_LIB_RT_OPT ".lib")
# ifdef BOOST_LIB_DIAGNOSTIC
# pragma message ("Linking to lib file: " BOOST_LIB_PREFIX BOOST_STRINGIZE(BOOST_LIB_NAME) "-" BOOST_LIB_TOOLSET BOOST_LIB_THREAD_OPT BOOST_LIB_RT_OPT "-" BOOST_LIB_VERSION ".lib")
# endif
#elif defined(BOOST_AUTO_LINK_NOMANGLE)
# pragma comment(lib, BOOST_STRINGIZE(BOOST_LIB_NAME) ".lib")
# ifdef BOOST_LIB_DIAGNOSTIC
# pragma message ("Linking to lib file: " BOOST_STRINGIZE(BOOST_LIB_NAME) ".lib")
# endif
#else
# pragma comment(lib, BOOST_LIB_PREFIX BOOST_STRINGIZE(BOOST_LIB_NAME) "-" BOOST_LIB_TOOLSET BOOST_LIB_THREAD_OPT BOOST_LIB_RT_OPT "-" BOOST_LIB_VERSION ".lib")
# ifdef BOOST_LIB_DIAGNOSTIC
# pragma message ("Linking to lib file: " BOOST_LIB_PREFIX BOOST_STRINGIZE(BOOST_LIB_NAME) "-" BOOST_LIB_TOOLSET BOOST_LIB_THREAD_OPT BOOST_LIB_RT_OPT "-" BOOST_LIB_VERSION ".lib")
# endif
#endif
#else
# error "some required macros where not defined (internal logic error)."
#endif
#endif // _MSC_VER || __BORLANDC__
//
// finally undef any macros we may have set:
//
#ifdef BOOST_LIB_PREFIX
# undef BOOST_LIB_PREFIX
#endif
#if defined(BOOST_LIB_NAME)
# undef BOOST_LIB_NAME
#endif
// Don't undef this one: it can be set by the user and should be the
// same for all libraries:
//#if defined(BOOST_LIB_TOOLSET)
//# undef BOOST_LIB_TOOLSET
//#endif
#if defined(BOOST_LIB_THREAD_OPT)
# undef BOOST_LIB_THREAD_OPT
#endif
#if defined(BOOST_LIB_RT_OPT)
# undef BOOST_LIB_RT_OPT
#endif
#if defined(BOOST_LIB_LINK_OPT)
# undef BOOST_LIB_LINK_OPT
#endif
#if defined(BOOST_LIB_DEBUG_OPT)
# undef BOOST_LIB_DEBUG_OPT
#endif
#if defined(BOOST_DYN_LINK)
# undef BOOST_DYN_LINK
#endif
#if defined(BOOST_AUTO_LINK_NOMANGLE)
# undef BOOST_AUTO_LINK_NOMANGLE
#endif
+275
View File
@@ -0,0 +1,275 @@
// (C) Copyright John Maddock 2001 - 2003.
// (C) Copyright David Abrahams 2002 - 2003.
// (C) Copyright Aleksey Gurtovoy 2002.
// Use, modification and distribution are subject to the
// Boost Software License, Version 1.0. (See accompanying file
// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
// See http://www.boost.org for most recent version.
// Borland C++ compiler setup:
//
// versions check:
// we don't support Borland prior to version 5.4:
#if __BORLANDC__ < 0x540
# error "Compiler not supported or configured - please reconfigure"
#endif
// last known compiler version:
#if (__BORLANDC__ > 0x613)
//# if defined(BOOST_ASSERT_CONFIG)
# error "Unknown compiler version - please run the configure tests and report the results"
//# else
//# pragma message( "Unknown compiler version - please run the configure tests and report the results")
//# endif
#elif (__BORLANDC__ == 0x600)
# error "CBuilderX preview compiler is no longer supported"
#endif
//
// Support macros to help with standard library detection
#if (__BORLANDC__ < 0x560) || defined(_USE_OLD_RW_STL)
# define BOOST_BCB_WITH_ROGUE_WAVE
#elif __BORLANDC__ < 0x570
# define BOOST_BCB_WITH_STLPORT
#else
# define BOOST_BCB_WITH_DINKUMWARE
#endif
//
// Version 5.0 and below:
# if __BORLANDC__ <= 0x0550
// Borland C++Builder 4 and 5:
# define BOOST_NO_MEMBER_TEMPLATE_FRIENDS
# if __BORLANDC__ == 0x0550
// Borland C++Builder 5, command-line compiler 5.5:
# define BOOST_NO_OPERATORS_IN_NAMESPACE
# endif
# endif
// Version 5.51 and below:
#if (__BORLANDC__ <= 0x551)
# define BOOST_NO_CV_SPECIALIZATIONS
# define BOOST_NO_CV_VOID_SPECIALIZATIONS
# define BOOST_NO_DEDUCED_TYPENAME
// workaround for missing WCHAR_MAX/WCHAR_MIN:
#include <climits>
#include <cwchar>
#ifndef WCHAR_MAX
# define WCHAR_MAX 0xffff
#endif
#ifndef WCHAR_MIN
# define WCHAR_MIN 0
#endif
#endif
// Borland C++ Builder 6 and below:
#if (__BORLANDC__ <= 0x564)
# ifdef NDEBUG
// fix broken <cstring> so that Boost.test works:
# include <cstring>
# undef strcmp
# endif
// fix broken errno declaration:
# include <errno.h>
# ifndef errno
# define errno errno
# endif
#endif
//
// new bug in 5.61:
#if (__BORLANDC__ >= 0x561) && (__BORLANDC__ <= 0x580)
// this seems to be needed by the command line compiler, but not the IDE:
# define BOOST_NO_MEMBER_FUNCTION_SPECIALIZATIONS
#endif
// Borland C++ Builder 2006 Update 2 and below:
#if (__BORLANDC__ <= 0x582)
# define BOOST_NO_SFINAE
# define BOOST_BCB_PARTIAL_SPECIALIZATION_BUG
# define BOOST_NO_TEMPLATE_TEMPLATES
# define BOOST_NO_PRIVATE_IN_AGGREGATE
# ifdef _WIN32
# define BOOST_NO_SWPRINTF
# elif defined(linux) || defined(__linux__) || defined(__linux)
// we should really be able to do without this
// but the wcs* functions aren't imported into std::
# define BOOST_NO_STDC_NAMESPACE
// _CPPUNWIND doesn't get automatically set for some reason:
# pragma defineonoption BOOST_CPPUNWIND -x
# endif
#endif
#if (__BORLANDC__ <= 0x613) // Beman has asked Alisdair for more info
// we shouldn't really need this - but too many things choke
// without it, this needs more investigation:
# define BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS
# define BOOST_NO_IS_ABSTRACT
# define BOOST_NO_FUNCTION_TYPE_SPECIALIZATIONS
# define BOOST_NO_USING_TEMPLATE
# define BOOST_SP_NO_SP_CONVERTIBLE
// Temporary workaround
#define BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
#endif
// Borland C++ Builder 2008 and below:
# define BOOST_NO_INTEGRAL_INT64_T
# define BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL
# define BOOST_NO_DEPENDENT_NESTED_DERIVATIONS
# define BOOST_NO_MEMBER_TEMPLATE_FRIENDS
# define BOOST_NO_TWO_PHASE_NAME_LOOKUP
# define BOOST_NO_USING_DECLARATION_OVERLOADS_FROM_TYPENAME_BASE
# define BOOST_NO_NESTED_FRIENDSHIP
# define BOOST_NO_TYPENAME_WITH_CTOR
#if (__BORLANDC__ < 0x600)
# define BOOST_ILLEGAL_CV_REFERENCES
#endif
//
// Positive Feature detection
//
// Borland C++ Builder 2008 and below:
#if (__BORLANDC__ >= 0x599)
# pragma defineonoption BOOST_CODEGEAR_0X_SUPPORT -Ax
#endif
//
// C++0x Macros:
//
#if !defined( BOOST_CODEGEAR_0X_SUPPORT ) || (__BORLANDC__ < 0x610)
# define BOOST_NO_CHAR16_T
# define BOOST_NO_CHAR32_T
# define BOOST_NO_DECLTYPE
# define BOOST_NO_EXPLICIT_CONVERSION_OPERATORS
# define BOOST_NO_EXTERN_TEMPLATE
# define BOOST_NO_RVALUE_REFERENCES
# define BOOST_NO_SCOPED_ENUMS
# define BOOST_NO_STATIC_ASSERT
#else
# define BOOST_HAS_ALIGNOF
# define BOOST_HAS_CHAR16_T
# define BOOST_HAS_CHAR32_T
# define BOOST_HAS_DECLTYPE
# define BOOST_HAS_EXPLICIT_CONVERSION_OPS
# define BOOST_HAS_REF_QUALIFIER
# define BOOST_HAS_RVALUE_REFS
# define BOOST_HAS_STATIC_ASSERT
#endif
#define BOOST_NO_AUTO_DECLARATIONS
#define BOOST_NO_AUTO_MULTIDECLARATIONS
#define BOOST_NO_CONCEPTS
#define BOOST_NO_CONSTEXPR
#define BOOST_NO_DEFAULTED_FUNCTIONS
#define BOOST_NO_DELETED_FUNCTIONS
#define BOOST_NO_FUNCTION_TEMPLATE_DEFAULT_ARGS
#define BOOST_NO_INITIALIZER_LISTS
#define BOOST_NO_LAMBDAS
#define BOOST_NO_NULLPTR
#define BOOST_NO_RAW_LITERALS
#define BOOST_NO_RVALUE_REFERENCES
#define BOOST_NO_SCOPED_ENUMS
#define BOOST_NO_SFINAE_EXPR
#define BOOST_NO_TEMPLATE_ALIASES
#define BOOST_NO_UNICODE_LITERALS // UTF-8 still not supported
#define BOOST_NO_VARIADIC_TEMPLATES
#if __BORLANDC__ >= 0x590
# define BOOST_HAS_TR1_HASH
# define BOOST_HAS_MACRO_USE_FACET
#endif
//
// Post 0x561 we have long long and stdint.h:
#if __BORLANDC__ >= 0x561
# ifndef __NO_LONG_LONG
# define BOOST_HAS_LONG_LONG
# else
# define BOOST_NO_LONG_LONG
# endif
// On non-Win32 platforms let the platform config figure this out:
# ifdef _WIN32
# define BOOST_HAS_STDINT_H
# endif
#endif
// Borland C++Builder 6 defaults to using STLPort. If _USE_OLD_RW_STL is
// defined, then we have 0x560 or greater with the Rogue Wave implementation
// which presumably has the std::DBL_MAX bug.
#if defined( BOOST_BCB_WITH_ROGUE_WAVE )
// <climits> is partly broken, some macros define symbols that are really in
// namespace std, so you end up having to use illegal constructs like
// std::DBL_MAX, as a fix we'll just include float.h and have done with:
#include <float.h>
#endif
//
// __int64:
//
#if (__BORLANDC__ >= 0x530) && !defined(__STRICT_ANSI__)
# define BOOST_HAS_MS_INT64
#endif
//
// check for exception handling support:
//
#if !defined(_CPPUNWIND) && !defined(BOOST_CPPUNWIND) && !defined(__EXCEPTIONS) && !defined(BOOST_NO_EXCEPTIONS)
# define BOOST_NO_EXCEPTIONS
#endif
//
// all versions have a <dirent.h>:
//
#ifndef __STRICT_ANSI__
# define BOOST_HAS_DIRENT_H
#endif
//
// all versions support __declspec:
//
#if defined(__STRICT_ANSI__)
// config/platform/win32.hpp will define BOOST_SYMBOL_EXPORT, etc., unless already defined
# define BOOST_SYMBOL_EXPORT
#endif
//
// ABI fixing headers:
//
#if __BORLANDC__ != 0x600 // not implemented for version 6 compiler yet
#ifndef BOOST_ABI_PREFIX
# define BOOST_ABI_PREFIX "boost/config/abi/borland_prefix.hpp"
#endif
#ifndef BOOST_ABI_SUFFIX
# define BOOST_ABI_SUFFIX "boost/config/abi/borland_suffix.hpp"
#endif
#endif
//
// Disable Win32 support in ANSI mode:
//
#if __BORLANDC__ < 0x600
# pragma defineonoption BOOST_DISABLE_WIN32 -A
#elif defined(__STRICT_ANSI__)
# define BOOST_DISABLE_WIN32
#endif
//
// MSVC compatibility mode does some nasty things:
// TODO: look up if this doesn't apply to the whole 12xx range
//
#if defined(_MSC_VER) && (_MSC_VER <= 1200)
# define BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP
# define BOOST_NO_VOID_RETURNS
#endif
// Borland did not implement value-initialization completely, as I reported
// in 2007, Borland Report 51854, "Value-initialization: POD struct should be
// zero-initialized", http://qc.embarcadero.com/wc/qcmain.aspx?d=51854
// See also: http://www.boost.org/libs/utility/value_init.htm#compiler_issues
// (Niels Dekker, LKEB, April 2010)
#define BOOST_NO_COMPLETE_VALUE_INITIALIZATION
#define BOOST_COMPILER "Borland C++ version " BOOST_STRINGIZE(__BORLANDC__)
+62
View File
@@ -0,0 +1,62 @@
// (C) Copyright Douglas Gregor 2010
//
// Use, modification and distribution are subject to the
// Boost Software License, Version 1.0. (See accompanying file
// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
// See http://www.boost.org for most recent version.
// Clang compiler setup.
#if __has_feature(cxx_exceptions) && !defined(BOOST_NO_EXCEPTIONS)
#else
# define BOOST_NO_EXCEPTIONS
#endif
#if __has_feature(cxx_rtti)
#else
# define BOOST_NO_RTTI
#endif
#if defined(__int64)
# define BOOST_HAS_MS_INT64
#endif
#define BOOST_HAS_NRVO
// NOTE: Clang's C++0x support is not worth detecting. However, it
// supports both extern templates and "long long" even in C++98/03
// mode.
#define BOOST_NO_AUTO_DECLARATIONS
#define BOOST_NO_AUTO_MULTIDECLARATIONS
#define BOOST_NO_CHAR16_T
#define BOOST_NO_CHAR32_T
#define BOOST_NO_CONCEPTS
#define BOOST_NO_CONSTEXPR
#define BOOST_NO_DECLTYPE
#define BOOST_NO_DEFAULTED_FUNCTIONS
#define BOOST_NO_DELETED_FUNCTIONS
#define BOOST_NO_EXPLICIT_CONVERSION_OPERATORS
#define BOOST_NO_FUNCTION_TEMPLATE_DEFAULT_ARGS
#define BOOST_NO_INITIALIZER_LISTS
#define BOOST_NO_LAMBDAS
#define BOOST_NO_NULLPTR
#define BOOST_NO_RAW_LITERALS
#define BOOST_NO_RVALUE_REFERENCES
#define BOOST_NO_SCOPED_ENUMS
#define BOOST_NO_STATIC_ASSERT
#define BOOST_NO_TEMPLATE_ALIASES
#define BOOST_NO_UNICODE_LITERALS
#define BOOST_NO_VARIADIC_TEMPLATES
// HACK: Clang does support extern templates, but Boost's test for
// them is wrong.
#define BOOST_NO_EXTERN_TEMPLATE
#ifndef BOOST_COMPILER
# define BOOST_COMPILER "Clang version " __clang_version__
#endif
// Macro used to identify the Clang compiler.
#define BOOST_CLANG 1
+177
View File
@@ -0,0 +1,177 @@
// (C) Copyright John Maddock 2001 - 2003.
// (C) Copyright David Abrahams 2002 - 2003.
// (C) Copyright Aleksey Gurtovoy 2002.
// Use, modification and distribution are subject to the
// Boost Software License, Version 1.0. (See accompanying file
// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
// See http://www.boost.org for most recent version.
// CodeGear C++ compiler setup:
#if !defined( BOOST_WITH_CODEGEAR_WARNINGS )
// these warnings occur frequently in optimized template code
# pragma warn -8004 // var assigned value, but never used
# pragma warn -8008 // condition always true/false
# pragma warn -8066 // dead code can never execute
# pragma warn -8104 // static members with ctors not threadsafe
# pragma warn -8105 // reference member in class without ctors
#endif
//
// versions check:
// last known and checked version is 0x621
#if (__CODEGEARC__ > 0x621)
# if defined(BOOST_ASSERT_CONFIG)
# error "Unknown compiler version - please run the configure tests and report the results"
# else
# pragma message( "Unknown compiler version - please run the configure tests and report the results")
# endif
#endif
// CodeGear C++ Builder 2009
#if (__CODEGEARC__ <= 0x613)
# define BOOST_NO_INTEGRAL_INT64_T
# define BOOST_NO_DEPENDENT_NESTED_DERIVATIONS
# define BOOST_NO_PRIVATE_IN_AGGREGATE
# define BOOST_NO_USING_DECLARATION_OVERLOADS_FROM_TYPENAME_BASE
// we shouldn't really need this - but too many things choke
// without it, this needs more investigation:
# define BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS
# define BOOST_SP_NO_SP_CONVERTIBLE
#endif
// CodeGear C++ Builder 2010
#if (__CODEGEARC__ <= 0x621)
# define BOOST_NO_TYPENAME_WITH_CTOR // Cannot use typename keyword when making temporaries of a dependant type
# define BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL
# define BOOST_NO_MEMBER_TEMPLATE_FRIENDS
# define BOOST_NO_NESTED_FRIENDSHIP // TC1 gives nested classes access rights as any other member
# define BOOST_NO_USING_TEMPLATE
# define BOOST_NO_TWO_PHASE_NAME_LOOKUP
// Temporary hack, until specific MPL preprocessed headers are generated
# define BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
// CodeGear has not yet completely implemented value-initialization, for
// example for array types, as I reported in 2010: Embarcadero Report 83751,
// "Value-initialization: arrays should have each element value-initialized",
// http://qc.embarcadero.com/wc/qcmain.aspx?d=83751
// Last checked version: Embarcadero C++ 6.21
// See also: http://www.boost.org/libs/utility/value_init.htm#compiler_issues
// (Niels Dekker, LKEB, April 2010)
# define BOOST_NO_COMPLETE_VALUE_INITIALIZATION
# ifdef NDEBUG
// fix broken <cstring> so that Boost.test works:
# include <cstring>
# undef strcmp
# endif
// fix broken errno declaration:
# include <errno.h>
# ifndef errno
# define errno errno
# endif
#endif
//
// C++0x macros:
//
#if (__CODEGEARC__ <= 0x620)
#define BOOST_NO_STATIC_ASSERT
#else
#define BOOST_HAS_STATIC_ASSERT
#endif
#define BOOST_HAS_CHAR16_T
#define BOOST_HAS_CHAR32_T
#define BOOST_HAS_LONG_LONG
// #define BOOST_HAS_ALIGNOF
#define BOOST_HAS_DECLTYPE
#define BOOST_HAS_EXPLICIT_CONVERSION_OPS
// #define BOOST_HAS_RVALUE_REFS
#define BOOST_HAS_SCOPED_ENUM
// #define BOOST_HAS_STATIC_ASSERT
#define BOOST_HAS_STD_TYPE_TRAITS
#define BOOST_NO_AUTO_DECLARATIONS
#define BOOST_NO_AUTO_MULTIDECLARATIONS
#define BOOST_NO_CONCEPTS
#define BOOST_NO_CONSTEXPR
#define BOOST_NO_DEFAULTED_FUNCTIONS
#define BOOST_NO_DELETED_FUNCTIONS
#define BOOST_NO_EXTERN_TEMPLATE
#define BOOST_NO_FUNCTION_TEMPLATE_DEFAULT_ARGS
#define BOOST_NO_INITIALIZER_LISTS
#define BOOST_NO_LAMBDAS
#define BOOST_NO_NULLPTR
#define BOOST_NO_RAW_LITERALS
#define BOOST_NO_RVALUE_REFERENCES
#define BOOST_NO_SFINAE_EXPR
#define BOOST_NO_TEMPLATE_ALIASES
#define BOOST_NO_UNICODE_LITERALS
#define BOOST_NO_VARIADIC_TEMPLATES
//
// TR1 macros:
//
#define BOOST_HAS_TR1_HASH
#define BOOST_HAS_TR1_TYPE_TRAITS
#define BOOST_HAS_TR1_UNORDERED_MAP
#define BOOST_HAS_TR1_UNORDERED_SET
#define BOOST_HAS_MACRO_USE_FACET
#define BOOST_NO_INITIALIZER_LISTS
// On non-Win32 platforms let the platform config figure this out:
#ifdef _WIN32
# define BOOST_HAS_STDINT_H
#endif
//
// __int64:
//
#if !defined(__STRICT_ANSI__)
# define BOOST_HAS_MS_INT64
#endif
//
// check for exception handling support:
//
#if !defined(_CPPUNWIND) && !defined(BOOST_CPPUNWIND) && !defined(__EXCEPTIONS) && !defined(BOOST_NO_EXCEPTIONS)
# define BOOST_NO_EXCEPTIONS
#endif
//
// all versions have a <dirent.h>:
//
#if !defined(__STRICT_ANSI__)
# define BOOST_HAS_DIRENT_H
#endif
//
// all versions support __declspec:
//
#if defined(__STRICT_ANSI__)
// config/platform/win32.hpp will define BOOST_SYMBOL_EXPORT, etc., unless already defined
# define BOOST_SYMBOL_EXPORT
#endif
//
// ABI fixing headers:
//
#ifndef BOOST_ABI_PREFIX
# define BOOST_ABI_PREFIX "boost/config/abi/borland_prefix.hpp"
#endif
#ifndef BOOST_ABI_SUFFIX
# define BOOST_ABI_SUFFIX "boost/config/abi/borland_suffix.hpp"
#endif
//
// Disable Win32 support in ANSI mode:
//
# pragma defineonoption BOOST_DISABLE_WIN32 -A
//
// MSVC compatibility mode does some nasty things:
// TODO: look up if this doesn't apply to the whole 12xx range
//
#if defined(_MSC_VER) && (_MSC_VER <= 1200)
# define BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP
# define BOOST_NO_VOID_RETURNS
#endif
#define BOOST_COMPILER "CodeGear C++ version " BOOST_STRINGIZE(__CODEGEARC__)
+59
View File
@@ -0,0 +1,59 @@
// (C) Copyright John Maddock 2001.
// (C) Copyright Douglas Gregor 2001.
// (C) Copyright Peter Dimov 2001.
// (C) Copyright Aleksey Gurtovoy 2003.
// (C) Copyright Beman Dawes 2003.
// (C) Copyright Jens Maurer 2003.
// Use, modification and distribution are subject to the
// Boost Software License, Version 1.0. (See accompanying file
// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
// See http://www.boost.org for most recent version.
// Comeau C++ compiler setup:
#include "boost/config/compiler/common_edg.hpp"
#if (__COMO_VERSION__ <= 4245)
# if defined(_MSC_VER) && _MSC_VER <= 1300
# if _MSC_VER > 100
// only set this in non-strict mode:
# define BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP
# endif
# endif
// Void returns don't work when emulating VC 6 (Peter Dimov)
// TODO: look up if this doesn't apply to the whole 12xx range
# if defined(_MSC_VER) && (_MSC_VER < 1300)
# define BOOST_NO_VOID_RETURNS
# endif
#endif // version 4245
//
// enable __int64 support in VC emulation mode
//
# if defined(_MSC_VER) && (_MSC_VER >= 1200)
# define BOOST_HAS_MS_INT64
# endif
#define BOOST_COMPILER "Comeau compiler version " BOOST_STRINGIZE(__COMO_VERSION__)
//
// versions check:
// we don't know Comeau prior to version 4245:
#if __COMO_VERSION__ < 4245
# error "Compiler not configured - please reconfigure"
#endif
//
// last known and checked version is 4245:
#if (__COMO_VERSION__ > 4245)
# if defined(BOOST_ASSERT_CONFIG)
# error "Unknown compiler version - please run the configure tests and report the results"
# endif
#endif
@@ -0,0 +1,99 @@
// (C) Copyright John Maddock 2001 - 2002.
// (C) Copyright Jens Maurer 2001.
// (C) Copyright David Abrahams 2002.
// (C) Copyright Aleksey Gurtovoy 2002.
// (C) Copyright Markus Schoepflin 2005.
// Use, modification and distribution are subject to the
// Boost Software License, Version 1.0. (See accompanying file
// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
// See http://www.boost.org for most recent version.
//
// Options common to all edg based compilers.
//
// This is included from within the individual compiler mini-configs.
#ifndef __EDG_VERSION__
# error This file requires that __EDG_VERSION__ be defined.
#endif
#if (__EDG_VERSION__ <= 238)
# define BOOST_NO_INTEGRAL_INT64_T
# define BOOST_NO_SFINAE
#endif
#if (__EDG_VERSION__ <= 240)
# define BOOST_NO_VOID_RETURNS
#endif
#if (__EDG_VERSION__ <= 241) && !defined(BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP)
# define BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP
#endif
#if (__EDG_VERSION__ <= 244) && !defined(BOOST_NO_TEMPLATE_TEMPLATES)
# define BOOST_NO_TEMPLATE_TEMPLATES
#endif
#if (__EDG_VERSION__ < 300) && !defined(BOOST_NO_IS_ABSTRACT)
# define BOOST_NO_IS_ABSTRACT
#endif
#if (__EDG_VERSION__ <= 303) && !defined(BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL)
# define BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL
#endif
// See also kai.hpp which checks a Kai-specific symbol for EH
# if !defined(__KCC) && !defined(__EXCEPTIONS) && !defined(BOOST_NO_EXCEPTIONS)
# define BOOST_NO_EXCEPTIONS
# endif
# if !defined(__NO_LONG_LONG)
# define BOOST_HAS_LONG_LONG
# else
# define BOOST_NO_LONG_LONG
# endif
//
// C++0x features
//
// See above for BOOST_NO_LONG_LONG
//
#if (__EDG_VERSION__ < 310)
# define BOOST_NO_EXTERN_TEMPLATE
#endif
#if (__EDG_VERSION__ <= 310) || !defined(BOOST_STRICT_CONFIG)
// No support for initializer lists
# define BOOST_NO_INITIALIZER_LISTS
#endif
#define BOOST_NO_AUTO_DECLARATIONS
#define BOOST_NO_AUTO_MULTIDECLARATIONS
#define BOOST_NO_CHAR16_T
#define BOOST_NO_CHAR32_T
#define BOOST_NO_CONCEPTS
#define BOOST_NO_CONSTEXPR
#define BOOST_NO_DECLTYPE
#define BOOST_NO_DEFAULTED_FUNCTIONS
#define BOOST_NO_DELETED_FUNCTIONS
#define BOOST_NO_EXPLICIT_CONVERSION_OPERATORS
#define BOOST_NO_FUNCTION_TEMPLATE_DEFAULT_ARGS
#define BOOST_NO_LAMBDAS
#define BOOST_NO_NULLPTR
#define BOOST_NO_RAW_LITERALS
#define BOOST_NO_RVALUE_REFERENCES
#define BOOST_NO_SCOPED_ENUMS
#define BOOST_NO_SFINAE_EXPR
#define BOOST_NO_STATIC_ASSERT
#define BOOST_NO_TEMPLATE_ALIASES
#define BOOST_NO_UNICODE_LITERALS
#define BOOST_NO_VARIADIC_TEMPLATES
#ifdef c_plusplus
// EDG has "long long" in non-strict mode
// However, some libraries have insufficient "long long" support
// #define BOOST_HAS_LONG_LONG
#endif
@@ -0,0 +1,19 @@
// (C) Copyright John Maddock 2001 - 2003.
// Use, modification and distribution are subject to the
// Boost Software License, Version 1.0. (See accompanying file
// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
// See http://www.boost.org for most recent version.
// Tru64 C++ compiler setup (now HP):
#define BOOST_COMPILER "HP Tru64 C++ " BOOST_STRINGIZE(__DECCXX_VER)
#include "boost/config/compiler/common_edg.hpp"
//
// versions check:
// Nothing to do here?
@@ -0,0 +1,93 @@
// Copyright (C) Christof Meerwald 2003
// Copyright (C) Dan Watkins 2003
//
// Use, modification and distribution are subject to the
// Boost Software License, Version 1.0. (See accompanying file
// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
// Digital Mars C++ compiler setup:
#define BOOST_COMPILER __DMC_VERSION_STRING__
#define BOOST_HAS_LONG_LONG
#define BOOST_HAS_PRAGMA_ONCE
#if (__DMC__ <= 0x833)
#define BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL
#define BOOST_NO_TEMPLATE_TEMPLATES
#define BOOST_NEEDS_TOKEN_PASTING_OP_FOR_TOKENS_JUXTAPOSING
#define BOOST_NO_ARRAY_TYPE_SPECIALIZATIONS
#define BOOST_NO_EXPLICIT_FUNCTION_TEMPLATE_ARGUMENTS
#endif
#if (__DMC__ <= 0x840) || !defined(BOOST_STRICT_CONFIG)
#define BOOST_NO_EXPLICIT_FUNCTION_TEMPLATE_ARGUMENTS
#define BOOST_NO_MEMBER_TEMPLATE_FRIENDS
#define BOOST_NO_OPERATORS_IN_NAMESPACE
#define BOOST_NO_UNREACHABLE_RETURN_DETECTION
#define BOOST_NO_SFINAE
#define BOOST_NO_USING_TEMPLATE
#define BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL
#endif
//
// has macros:
#if (__DMC__ >= 0x840)
#define BOOST_HAS_DIRENT_H
#define BOOST_HAS_STDINT_H
#define BOOST_HAS_WINTHREADS
#endif
#if (__DMC__ >= 0x847)
#define BOOST_HAS_EXPM1
#define BOOST_HAS_LOG1P
#endif
//
// Is this really the best way to detect whether the std lib is in namespace std?
//
#include <cstddef>
#if !defined(__STL_IMPORT_VENDOR_CSTD) && !defined(_STLP_IMPORT_VENDOR_CSTD)
# define BOOST_NO_STDC_NAMESPACE
#endif
// check for exception handling support:
#if !defined(_CPPUNWIND) && !defined(BOOST_NO_EXCEPTIONS)
# define BOOST_NO_EXCEPTIONS
#endif
//
// C++0x features
//
#define BOOST_NO_AUTO_DECLARATIONS
#define BOOST_NO_AUTO_MULTIDECLARATIONS
#define BOOST_NO_CHAR16_T
#define BOOST_NO_CHAR32_T
#define BOOST_NO_CONCEPTS
#define BOOST_NO_CONSTEXPR
#define BOOST_NO_DECLTYPE
#define BOOST_NO_DEFAULTED_FUNCTIONS
#define BOOST_NO_DELETED_FUNCTIONS
#define BOOST_NO_EXPLICIT_CONVERSION_OPERATORS
#define BOOST_NO_EXTERN_TEMPLATE
#define BOOST_NO_INITIALIZER_LISTS
#define BOOST_NO_LAMBDAS
#define BOOST_NO_NULLPTR
#define BOOST_NO_RAW_LITERALS
#define BOOST_NO_RVALUE_REFERENCES
#define BOOST_NO_SCOPED_ENUMS
#define BOOST_NO_SFINAE_EXPR
#define BOOST_NO_STATIC_ASSERT
#define BOOST_NO_TEMPLATE_ALIASES
#define BOOST_NO_UNICODE_LITERALS
#define BOOST_NO_VARIADIC_TEMPLATES
#if __DMC__ < 0x800
#error "Compiler not supported or configured - please reconfigure"
#endif
//
// last known and checked version is ...:
#if (__DMC__ > 0x848)
# if defined(BOOST_ASSERT_CONFIG)
# error "Unknown compiler version - please run the configure tests and report the results"
# endif
#endif

Some files were not shown because too many files have changed in this diff Show More