Commit Graph

1913 Commits

Author SHA1 Message Date
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
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
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
techdragon.nguyen@gmail.com fe75493ffa No code change. Reformat code 2010-12-11 22:42:48 +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 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
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 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 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
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 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
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
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@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
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
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 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
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
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 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
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 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