Version 1.6.2 Released!


Hey folks! We've been hard at work preparing this update, and there's a lot to cover across Core Engine, Deck Editor and Card Shop. Let's get into it.

Fixes/Changes in this Update

  • Consolidated ShowCard into the Core Engine. ShowCard plugin is no longer required to use its features.
  • Removed several duplicate parameters that are present in Text Format Plus.
  • Cost X coordinate is now left-aligned. Added Cost Width param to compensate.
  • Replaced Highlight Sprite with Highlight Sheet.
  • Moved highlight images to img/CGC/highlights
  • Moved button images to img/CGC/buttons
  • A few new parameters have been added to the Card Library section of the Core Engine to determine which Cards are displayed.
  • Default Card is now preloaded on boot, and almost all card-based calculations use the Default Card's dimensions.
  • Amount Text in Libraries is now handled by a new class Window_CardAmount, which offers more flexibility.
  • Card Sprite hitboxes have been fixed and now scale with the image's scale.
  • Zone Sprites no longer create Card Highlights that go unused.
  • Fixed math error in Hand positioning that makes cards improperly centered.
  • New parameter Skip Party Command allows you to skip the Party Command Window
  • Fixed bug where End of Turn: Skill X triggers twice
  • Fixed bug where Start of Turn: Skill X fails to trigger
  • Fixed bug where Actor could "forget" Cards gained through equipment or states.
  • The scrollbar is now present in every Library-type scene.
  • Fixed bug where Card Sprites wouldn't spawn in Library if Card Battle was disabled.
  • Fixed crash when failing to flee from a battle using the Party Window before the opening hand had been drawn.
  • Lots and lots and lots of backend refactoring.
  • Better error handling and conveyance to the user.
  • Cards are now added to a CardLayer object which inherits behavior from WindowLayer.
  • Card Highlight sprites are now a new class Sprite_CardHighlight instead of just basic Sprite objects. Trust me, the code is  cleaner now.
  • [Card Types] Changed the plugin parameters for Card Types in line with this new system.
  • [Card Types] Card Types are now case-insensitive.
  • [Party UI Type A] Fixed softlock when hitting up on the hand if the Party Status Window was disabled
  • [Party UI Type A] Fixed issue where Core Engine turning off the Icons via parameter was not working in Actor Status Window
  • [Help Box Control] Wordwrapping now works a lot better and doesn't cut off with escape characters
  • [Help Box Control] Fixed Show Help Window plugin param not working due to some CoreEngine changes
  • [Block Generate] Fixed issue with Normal Attack damage type ignoring Block
  • [Block Generate] <Ignore Block> is working again and unaffected by Damage Types
  • [Block Generate] Added new Card Actions for Add Block, Set Block and Clear Block
  • [Block Generate]  Fixed bug where Block carried over rounds despite showing it cleared
  • [Text Format Plus] Addition of Text Alignment parameters for each text component.
  • [Text Format Plus] Addition of parameters to disable showing each text component.
  • [Text Format Plus] Added tryParse calls to TextFormatPlus, supplying default values and preventing errors.

So... that's a lot.

Those updating from older versions of CGC need to create new subfolders in their img/CGC folder for card highlight and button sheets. A few other changes are bound to break parameter settings on your projects but they should all just be cosmetic. If you're updating and things stop working, make sure that you've re-opened every CGC plugin so that any new parameters can initialize.

But enough about changes; let's move on to additions!

New Features

  • Highlight Sheet and End Turn Button Sheet both have Remove variants

Previously, whenever the player was supposed to select cards for removal, the UI was exactly the same as when they're supposed to select cards for discard. This might not be the right feedback for every game, so we've added Remove variants of the Highlights for cards and the End Turn Button.

  • Skills learned during battle now stay in the Actor's Library.

When we first made Card Game Combat we used "Learn Skill" as a way to temporarily add cards to the deck. Later on, we added the Add X to zoneName Card Action which performed that function with even better flexibility. That means the old method is obsolete, and in fact using Learn Skill for something other than learning the skill is both unintuitive and takes away important functionality.

So we changed it! Now any time an actor learns a skill in battle, it works just like learning a skill on the map; that card is added to their Library and their Deck zone. This means that actors learning skills on level up now works the way it's supposed to.

  • Library Scene has been revamped. Lots of UI improvements.

The Card Library scene has had a few problems for a while. It strongly disliked certain window resolutions or card dimensions, it would scroll at the wrong time or refuse to scroll back up all the way, and it couldn't be used in conjunction with Deck Editor. 

So we rewrote it. We replaced the code with better code. On its surface, it looks mostly the same, just with the bugs ironed out. But underneath, you're seeing completely different code in action. This matters because we've drastically improved inheritance, which is a fancy way of saying that if something in the Library is broken it'll be broken in Deck Editor and the Card Shop, and therefore if something is fixed in the Library it'll be fixed in Deck Editor and the Card Shop without needing to update all three plugins in the future.

We've also taken this opportunity to drastically improve Card Library Plus, but I suppose that's a devlog for another day.

  • Added Origin Badges to the Card Library

CGC has been quietly tracking where Cards come from for a while, since we needed to know that information in case the source of that Card disappeared. I'm talking about EquipCards adding Cards through equipment and states, though we tracked other origins that ended up being redundant and we later cut those.

Now, Cards of the same Skill ID but different Origins will be displayed next to each other in the Card Library. So if you've gained 3 Strike cards by normal means (Learn Skill command, level up, etc) and 2 Strike cards gained by equipment, the Library will show 3x Strike (Learned) and 2x Strike (Equipment) instead of just showing 5x Strike.

We've added "Badges," which are images that get drawn on the Card depending on their Origin, to visually distinguish between these Strike cards. Badges are only drawn in the Library or in Deck Editor.

Distinguishing between Origins is pretty useful for the player so that they can see at a glance what is in their Deck permanently and what's only there as long as certain conditions are met.

  • New Plugin: Card Collection

The Card Library Update keeps on coming! The Card Collection is an alternate Library which shows off not the current Actor's current inventory of Cards, but instead a glossary of every Card the player has had access to on their journey. In a more traditional RPG that also includes cards it can be seen as a collection of the Party's cards, or in a roguelike where the player loses all their cards between runs it can be used as a database. It's like a pokedex for cards!

Card Collection has several customization options, including the ability to hide the appearance and descriptions of cards the player hasn't seen yet. We also track your collection progress across both the total number of discover cards and break down by each known Type. So, have your players get out there and catch 'em all!

  • Added ability to hide each Component and set each of their Text alignment to TextFormatPlus

Now all text components on a Card can be aligned to the left, right, or center. Now all text components on a Card can be made to not appear. Finally, Cards without names.

What to Look Forward to

  • Custom and Animated Card Highlights

We're half of the way there, with the shifting of Highlights towards sheets that get their own subfolder in img/CGC. Users of CGC Action Pack 2 will be well aware that there are more things you can select a card for, and it only makes sense to add highlight options for each of them. The structure is there, the time is right!

  • Multiline Eval Card Actions and Conditional Card Actions

We brought this up in our last devlog, and it turns out that for multiline support we need to do a bit of overhauling on the Card Action infrastructure.  The Library was the focus for this update, so this and another battle component will be the focus for the next one.

As before, we're looking at allowing something like this to be possible:

<Card Actions>
Eval{ 
code 
code 
code 
} 
</Card Actions>

And this:

<Card Actions>  
If [expression] { 
Draw 1 
Discard 1 
Other Card Action 
}  
</Card Actions>
  • Template Skills

The idea behind this one is that you can designate one skill as a Template, and other skills can inherit its Card Actions, Card Target Actions, and Card Passives. We have a few ideas about the specifics of how we should implement this; we want it to be easy to use and flexible.

One of our solutions is to add a new Card Action called "Perform Actions from Skill X," which you could add at any point within a card's list of Card Actions or Card Target Actions. This is not set in stone; we want our template/inheritance system to be as versatile as possible.

  • Timing Structure

As we are on the path to v1.7.0 Enemy Cards and Decks, we will need to make a couple stops to build up the engine to meet its needs. One of the most essential pieces still missing from CGC is a turn-system that works better for Card Games. Right now turns are quite skewed unless it is a single Actor going up against multiple enemies. We want to give the player more control over what that looks like.

So, a Timing Structure is the first turn towards a more more customizable turn structure. Anyone that plays CCGs will know that phases and timings play a big role in how Card interactions resolve. While we have managed to achieve a lot with RPG Maker's Default Turn-Based Battle System with Start of Turn / End of Turn Skill triggers, we believe that more can be done to allow for new card effects.  Our goal is to allow sets of Card Actions to be executed at any of the following triggers:

  • Battle Start
  • Turn Start
  • Action Start
  • Action End
  • Turn End
  • Battle End
  • Victory
  • Escape
  • Defeat
  • State Apply
  • State Remove
  • On Empty (Zone)
  • On Draw (Hand)
  • On Discard (Hand)
  • On Remove (Hand)

Some of these we already have in place, so the goal is to have it be a universal system where the designer can determine which timings they care about and insert the Card Actions they would like to happen there. These can also don't have to happen at a set time. For example, if a Card can be played in response to an Action (similar to the Parry and Riposte cards in the Demo Project) then we would like this system to support it. Once we have expanded the Timing Structure we can then move onto Individualizing Battler Turns.

Final Thoughts

Myth_CGC_CoreEngine is over 10,000 lines of code! That's as many as there are grains of sand in a beach with 10,000 grains of sand in it.  That's as many as there are feet in a football field that's too big. That's as many lines of code as half of the amount of times per day the average person blinks. And the entire suite of plugins is nearly at 30,000 lines.

I bring it up in half the devlogs I've written but it blows me away how much this plugin suite has grown, and how much the community of people using it has grown. It has almost none of the original code I wrote in winter of 2021, with almost everything having been replaced with better, cleaner, or more scalable code. We've come a long way! 

None of this would have happened without the incredible support we've received. Special Thanks to all our lovely Patrons :)



Card Game Combat is developed by MythAtelier, LLC. We can be contacted for commissions and other business inquiries at our Email.

If you would like to support our work and have a say in what plugins come next, please be sure to check out our Patreon

If you are looking to ask questions about Card Game Combat or talk with other developers, feel free to join our Discord.

Files

Card Game Combat (v1.6.2) - Blank Templates 147 MB
54 days ago
Card Game Combat (v1.6.2) - Demo Projects 370 MB
54 days ago
Card Game Combat (v1.6.2) - Plugin Suite + Image Files 400 kB
54 days ago
Card Game Combat (v1.6.1) - Legacy Files 508 MB
56 days ago

Get Card Game Combat - RPG Maker MV/MZ Plugin

Buy Now
On Sale!
20% Off
$25.00 $20.00 USD or more

Comments

Log in with itch.io to leave a comment.

After updating to version 1.6.2, a recursive error occurred in MYTH_CGC_CoreEngine, causing an infinite loop. I was able to fix it by modifying the Scene_Map processing as shown below, so if anyone else is experiencing the same issue, please refer to this.

[Original Code]

Scene_Map.prototype.stop = function ()

{

var interpreter = Myth.Util.getInterpreter();

if (interpreter)

interpreter.hideAllCards();

Myth.CGC.showCard_Scene_Base_stop.call(this);

}


[Modified Code]

Scene_Map.prototype.stop = function() {

    if (this._stopped) return;  // Prevent recursive call

    this._stopped = true;       // Set stop state flag

    Scene_Base.prototype.stop.call(this);

}

Hey Sol,

It seems you are still using the Show Card plugin after it has been incorporated into Core Engine. Please turn off Show Card or remove it from the Plugin Manager and see if the error still persists.

When I checked the 1.6.2 sample, I saw that the show card plug-in was removed and confirmed that there was no problem. Thank you for your reply.

Thanks for checking! We have incorporated the fix you have suggested in an upcoming hotfix to the Core Engine we will be deploying soon. Appreciate your initiative to help out other developers in the community :)

(+1)

Congrats on the new update- I'm excited for all of these fixes and additions!