Commit Graph

3398 Commits

Author SHA1 Message Date
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