mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-11 16:26:22 +00:00
Combine Adventure docs (#9098)
This commit is contained in:
@@ -32,7 +32,7 @@ Join the **Forge community** on [Discord](https://discord.gg/HcPJNyD66a)!
|
||||
4. **Java Requirement:** Ensure you have **Java 17 or later** installed.
|
||||
|
||||
### 📱 Android Installation
|
||||
- _(Note: **Android 11** is the minimum requirements with at least **6GB RAM** to run smoothly. You need to enable **"Install unknown apps"** for Forge to initialize and update itself)_
|
||||
- _(Note: **Android 11** is the minimum requirement with at least **6GB RAM** to run smoothly. You need to enable **"Install unknown apps"** for Forge to initialize and update itself)_
|
||||
- Download the **APK** from the [Snapshot Build](https://github.com/Card-Forge/forge/releases/tag/daily-snapshots). On the first launch, Forge will automatically download all necessary assets.
|
||||
|
||||
---
|
||||
@@ -61,7 +61,7 @@ Test your skills against AI in multiple formats:
|
||||
- **Commander**
|
||||
- **Cube**
|
||||
|
||||
For comprehensive gameplay instructions, visit our [Gameplay Guide](https://github.com/Card-Forge/forge/wiki/Gameplay-Guide).
|
||||
For comprehensive gameplay instructions, visit our [User Guide](https://github.com/Card-Forge/forge/wiki/User-Guide).
|
||||
|
||||
<img width="1282" height="752" alt="Sealed" src="https://github.com/user-attachments/assets/ae603dbd-4421-4753-a333-87cb0a28d772" />
|
||||
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
# About Forge's Artificial Intelligence
|
||||
|
||||
The AI is *not* "trained". It uses basic rules and can be easy to overcome knowing it's weaknesses.
|
||||
The AI is *not* "trained". It uses basic rules and can be easy to overcome knowing its weaknesses.
|
||||
|
||||
The AI is:
|
||||
* Best with Aggro and midrange decks
|
||||
* Poor to Ok in control decks
|
||||
* Pretty bad for most combo decks
|
||||
- Best with Aggro and midrange decks
|
||||
- Poor to Ok in control decks
|
||||
- Pretty bad for most combo decks
|
||||
|
||||
If you want to train a model for the AI, please do. We would love to see something like that implemented in Forge.
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
All Enemies are stored under `res/<AdventureName>/world/enemies.json`
|
||||
|
||||
Enemies spawned on the overworld map or on map stages will use this exact template to define their base behavior. These values can be modified or added to with additional settings on an individual enemy basis, details of which can be found within [map instance](Create-new-Maps).
|
||||
Enemies spawned on the overworld map or on map stages will use this exact template to define their base behavior. These values can be modified or added to with additional settings on an individual enemy basis, details of which can be found within [map instance](Create-new-Maps.md).
|
||||
|
||||
Some ideas for custom enemy cards:
|
||||
- basic (CR or at least Alchemy conform) effects for normal mobs to add flavor
|
||||
@@ -64,7 +64,7 @@ Supported directions are "Right","Left","Up","Down","RightDown","LeftDown","Left
|
||||
Array of strings containing paths to the decks used for this enemy (from `res/<AdventureName>`)
|
||||
If no decks are defined then the enemy will act like a treasure chest and give the rewards without a fight.
|
||||
(only for enemies in dungeons)
|
||||
The format for the deck file can be the normal forge *.dck syntax or a json file that will behave like a collection of [rewards](Create-Rewards) to get a random generated deck.
|
||||
The format for the deck file can be the normal forge *.dck syntax or a json file that will behave like a collection of [rewards](Create-Rewards.md) to get a random generated deck.
|
||||
|
||||
## **randomizeDeck**
|
||||
Boolean - if true then the enemy deck will be randomly selected from the deck array. If false, an algorithm will select a deck in sequential order based on the player's prior win/loss ratio against that opponent (discouraged and currently unused due to wild swings in ratio at low game count).
|
||||
@@ -85,17 +85,17 @@ Decimal - Relative frequency with which this enemy will be picked to spawn in ap
|
||||
Decimal - Relative estimated difficulty associated with this enemy. Currently unused, but will likely be factored in as a part of filtering enemies into early/late game appropriate opponents. Existing values range from 0 to 1.0.
|
||||
|
||||
## **speed**
|
||||
Integer - Movement speed of this enemy in overworld or on a [map instance](Create-new-Maps). For comparison, the player's base speed is set at a value of 32 (before any equipment / ability modifiers).
|
||||
Integer - Movement speed of this enemy in overworld or on a [map instance](Create-new-Maps.md). For comparison, the player's base speed is set at a value of 32 (before any equipment / ability modifiers).
|
||||
|
||||
## **scale**
|
||||
Decimal - Default 1.0. For enemies whose sprites are too large or small for their intended usage, this serves as multiplier for the enemy's visual dimensions & collision area. By default, we work with 16x16 pixel sprites for most entities - this can be replicated with a more detailed 32x32 sprite by setting a scale of 0.5 for the enemy entry.
|
||||
|
||||
## **life**
|
||||
Integer - Base starting life total. This is modified universally by a value determined by the player's chosen difficulty, and can be adjusted further at the enemy object level on [map instances](Create-new-Maps).
|
||||
Integer - Base starting life total. This is modified universally by a value determined by the player's chosen difficulty, and can be adjusted further at the enemy object level on [map instances](Create-new-Maps.md).
|
||||
|
||||
## **rewards**
|
||||
Array - A collection of the rewards to be granted for defeating the enemy.
|
||||
see [Create Rewards](Create-Rewards) for the syntax.
|
||||
see [Create Rewards](Create-Rewards.md) for the syntax.
|
||||
|
||||
## **equipment**
|
||||
Array - A collection of strings representing [equipment items](adventure-items) normally intended for player use that this enemy will have. Not used widely, usually when an enemy will drop that [equipment](adventure-items) and it does not use [mana shards](mana-shards).
|
||||
@@ -107,7 +107,7 @@ Valid options are:
|
||||
* `item` will give items to be added to the player's inventory.
|
||||
* `card` will create one or more cards matching a detailed set of filters to follow.
|
||||
* `union` is a wrapper for multiple `card` instances that can have mutually exclusive filters.
|
||||
* `deckCard` is only used with rewards from [enemies](Create-Enemies), this functions as a `card` reward that is limited to cards found in that enemy's deck.
|
||||
* `deckCard` is only used with rewards from [enemies](Create-Enemies.md), this functions as a `card` reward that is limited to cards found in that enemy's deck.
|
||||
|
||||
`{"type": "card", ...}`
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
Basic Gamepad Support for Adventure Mode
|
||||
|
||||
Tested using DS4 Cpntroller on Windows and Android.
|
||||
Tested using DS4 Controller on Windows and Android.
|
||||
|
||||
If using on Windows OS and you have DS4Windows installed, you might experience dual input because of Emulated/Virtual Controller. To fix this you must use HidHide (better than exclusive mode). Refer to the guide here:
|
||||
https://vigem.org/projects/HidHide/Simple-Setup-Guide/
|
||||
@@ -26,6 +26,8 @@ Due to charges in Forges hosting and scryfall terms you can no longer predownloa
|
||||
|
||||
**(I'm not gatekeeping, please if you have a private location for bulk downloads or for alternate or custom arts, you can update this wiki too or let us know in the discord. I'll be happy to update the wiki page with additional sources.)**
|
||||
|
||||
If you have an older Android device for increased performance or to save bandwidth it might be a good idea to use lower resolution images instead: https://www.slightlymagic.net/forum/viewtopic.php?f=15&t=29104
|
||||
|
||||
# Storage
|
||||
|
||||
Card images are stored in `pics/cards`, and tokens in `pics/tokens`, in the Cache folder for forge:
|
||||
|
||||
@@ -8,7 +8,7 @@ Much of the code is shared, so creating the data object will look very similar.
|
||||
- **AB** is for Activated Abilities
|
||||
- **SP** is for Spell
|
||||
- **DB** is for Drawback and many abilities that are subsidiary to other things, like replacements. They are only used to chain AFs together, and will never be the root AF
|
||||
- **ST** is for Static, this gets used in case the API should resolve without using the stack<br> (e.g. the unique *Circling Vultures* special action is directly implemented in the script this way)
|
||||
- **ST** is for Static, this gets used in case the API should resolve without using the stack<br /> (e.g. the unique *Circling Vultures* special action is directly implemented in the script this way)
|
||||
|
||||
>*NOTE:*
|
||||
> - these factories are refactored from time to time (often to adapt to new sets), so while some entries could be slightly outdated, the base information should still be correct
|
||||
@@ -52,7 +52,7 @@ The SpellDescription for secondary abilities (both AB and DB) is now displayed w
|
||||
|
||||
## Remember*
|
||||
|
||||
Remembering is often needed when a card becomes a new object, which is then further affected by the ability. Typical example: [Flicker](https://github.com/Card-Forge/forge/blob/master/forge-gui/res/cardsfolder/f/flicker.txt)<br>
|
||||
Remembering is often needed when a card becomes a new object, which is then further affected by the ability. Typical example: [Flicker](https://github.com/Card-Forge/forge/blob/master/forge-gui/res/cardsfolder/f/flicker.txt)<br />
|
||||
Because cards keep their remembered parts when changing zones manual [cleanup](#Cleanup) is usually required.
|
||||
|
||||
## AI params
|
||||
@@ -235,7 +235,7 @@ Parameters
|
||||
|
||||
## Choose*
|
||||
|
||||
These can be used to chain effects together. However for common cases many effects already support this directly, e.g. `PutCounter | Choices$``.<br>
|
||||
These can be used to chain effects together. However for common cases many effects already support this directly, e.g. `PutCounter | Choices$``.<br />
|
||||
Besides making the script shorter using such shortcuts usually also helps the AI making better use of the effect.
|
||||
|
||||
### ChooseType
|
||||
@@ -748,7 +748,7 @@ As another example, here's Mitotic Slimes' use of TokenTriggers$:
|
||||
|
||||
## Trigger
|
||||
|
||||
If possible split the SpellDescription$ of the the effect so the part for the trigger can become the StackDescription directly.
|
||||
If possible split the SpellDescription of the effect so the part for the trigger can become the StackDescription directly.
|
||||
|
||||
### DelayedTrigger
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@ A reference guide for scripting cards using the API parsed by the Forge engine.
|
||||
|
||||
# Base Structure
|
||||
|
||||
By opening any file in the /res/cardsfolder folder you can see the basic structure of how the data is created.<br>
|
||||
By opening any file in the /res/cardsfolder folder you can see the basic structure of how the data is created.<br />
|
||||
Here's an example of a vanilla creature:
|
||||
|
||||
```
|
||||
@@ -13,11 +13,11 @@ PT:2/2
|
||||
Oracle:
|
||||
```
|
||||
|
||||
The name of this card is Vanilla Creature.<br>
|
||||
It's casting cost is {2}{G}.<br>
|
||||
It has the types Creature and Beast.<br>
|
||||
It has a Power-Toughness of 2/2.<br>
|
||||
It will not display any additional text in the card's template.<br>
|
||||
The name of this card is Vanilla Creature.<br />
|
||||
It's casting cost is {2}{G}.<br />
|
||||
It has the types Creature and Beast.<br />
|
||||
It has a Power-Toughness of 2/2.<br />
|
||||
It will not display any additional text in the card's template.<br />
|
||||
|
||||
If a card has two faces, use AlternateMode:{CardStateName} in the front face and separate both by a new line with the text "ALTERNATE".
|
||||
|
||||
@@ -28,9 +28,9 @@ There are a few other properties that will appear in many cards. These are
|
||||
|`A`|[Ability effect](AbilityFactory)
|
||||
|`AI`|RemoveDeck:<br />* `All`<br />This will prevent the card from appearing in random AI decks. It is applicable for cards the AI can't use at all like Dark Ritual and also for cards that the AI could use, but only ineffectively like Tortoise Formation. The AI won't draft these cards.<br />* `Random`<br /> This will prevent the card from appearing in random decks. It is only applicable for cards that are too narrow for random decks like Root Cage or Into the North. The AI won't draft these cards.<br />* `NonCommander`<br />
|
||||
|`Colors`|Color(s) of the card<br /><br />When a card's color is determined by a color indicator rather than shards in a mana cost, this property must be defined. If no identifier is needed, this property should be omitted.<br /><br />* `Colors:red` - This is used on Kobolds of Kher Keep, which has a casting cost of {0} and requires a red indicator to make it red.<br /><br />* `Colors:red,green` - Since Arlinn, Embraced by the Moon has no casting cost (it's the back of a double-faced card), the red and green indicator must be included.
|
||||
|`DeckHints`|AI-related hints for a deck including this card<br /><br />To improve synergy this will increase the rank of of all other cards that share some of its DeckHints types. This helps with smoothing the selection so cards without these Entries won't be at an unfair disadvantage.<br /><br />The relevant code can be found in the [CardRanker](https://git.cardforge.org/core-developers/forge/-/blob/master/forge-gui/src/main/java/forge/gamemodes/limited/CardRanker.java) class.
|
||||
|`DeckHints`|AI-related hints for a deck including this card<br /><br />To improve synergy this will increase the rank of of all other cards that share some of its DeckHints types. This helps with smoothing the selection so cards without these Entries won't be at an unfair disadvantage.<br /><br />The relevant code can be found in the [CardRanker](https://github.com/Card-Forge/forge/blob/master/forge-gui/src/main/java/forge/gamemodes/limited/CardRanker.java) class.
|
||||
|`DeckNeeds`|This can be considered a stronger variant when the AI should not put this card into its deck unless it has whatever other type is specified. The way this works is "inverted": it will directly decrease the rank of the card unless other cards are able to satisfy its types.<br />If a card demands more than one kind of type you can reuse it:<br />`DeckNeeds:Type$Human & Type$Warrior` will only find Human Warrior compared to `DeckNeeds:Type$Human\|Warrior` which is either
|
||||
|`DeckHas`|specifies that the deck now has a certain ability (like, token generation or counters) so that the drafting/deckbuilding AI knows that it now meets requirements for DeckHints/DeckNeeds. This is actually very useful since many of these (such as `Ability$Graveyard, Ability$Token, Ability$Counters`) are not deduced by parsing the abilities, so an explicit hint is necessary. Using the other types is also supported in case the implicit parsing wouldn't find it.<br />It doesn't require exact matching to have an effect but cards that care about multiple entries for a given type will be judged higher if a card seems to provide even "more" synergy for it.<br />Example:<br />Chishiro has two abilities so `DeckHas:Ability$Token & Ability$Counters` is used, therefore score for `DeckNeeds:Ability$Token\|Counters` is increased
|
||||
|`DeckHas`|specifies that the deck now has a certain ability (like, token generation or counters) so that the drafting/deckbuilding AI knows that it now meets requirements for DeckHints/DeckNeeds. This is actually very useful since many of these (such as `Ability$Graveyard, Ability$Token, Ability$Counters`) are not deduced by parsing the abilities, so an explicit hint is necessary. Using the other types is also supported in case the implicit parsing wouldn't find it (TokenScript$ is also included).<br />It doesn't require exact matching to have an effect but cards that care about multiple entries for a given type will be judged higher if a card seems to provide even "more" synergy for it.<br />Example:<br />Chishiro has two abilities so `DeckHas:Ability$Token & Ability$Counters` is used, therefore score for `DeckNeeds:Ability$Token\|Counters` is increased
|
||||
|`K`|Keyword (see below)
|
||||
|`Loyalty`|Number of starting loyalty counters
|
||||
|`ManaCost`|Cost to cast the card shown in mana shards<br /><br />This property is required. It has a single parameter that is a mana cost.<br /><br />* `ManaCost:no cost` for cards that cannot be cast<br />* `ManaCost:1 W W` sets the casting cost to {1}{W}{W}
|
||||
@@ -50,6 +50,7 @@ Rarity and Set info are now defined in edition definition files. These can be fo
|
||||
- filename: all lowercase, skip special characters, underscore for spaces
|
||||
- Unix(LF) line endings
|
||||
- use empty lines only when separating multiple faces on a card
|
||||
- AI SVars right before the Oracle
|
||||
- try to avoid writing default params to keep scripts concise
|
||||
- e.g. just `SP$ Draw` instead of `SP$ Draw | Defined$ You | NumCards$ 1`
|
||||
|
||||
@@ -59,7 +60,7 @@ All keywords need to be prepended with "K:" to be parsed correctly. Each keyword
|
||||
|
||||
## Keywords without Parameters
|
||||
|
||||
This section is for Keywords that require no additional parameters and are one or two words long. Most of these you would see exactly on cards in the game.<br>
|
||||
This section is for Keywords that require no additional parameters and are one or two words long. Most of these you would see exactly on cards in the game.<br />
|
||||
Examples:
|
||||
|
||||
- Cascade
|
||||
|
||||
@@ -1,9 +1,4 @@
|
||||
# Guide - Creating a Custom Card
|
||||
|
||||
Using the Forge API you can create your own custom cards and sets. This guide will walk you through the process of creating custom cards via the Force Custom Card Script.
|
||||
|
||||
The next tutorial will walk you through the process of adding your new cards to a custom set.
|
||||
|
||||
Using the Forge API you can create your own custom cards and sets. This tutorial will walk you through the process of creating custom cards via the Force Custom Card Script.
|
||||
|
||||
## File Locations
|
||||
|
||||
@@ -84,11 +79,11 @@ Let's break our card down:
|
||||
- K - A Keyword that gives our creature an ability.
|
||||
- Oracle - The actual text that appears on that card.
|
||||
|
||||
For a refrence of possible fields and their descriptions please see the [Card Scripting API](Card-scripting-API) document. Note that maintaining an up to date list of every ability of every Magic Card ever printed is not feasable. The API is meant to serve as a guide and includes most common used information.
|
||||
For a reference of possible fields and their descriptions please see the [Card Scripting API](Card-scripting-API) document. Note that maintaining an up to date list of every ability of every Magic Card ever printed is not feasable. The API is meant to serve as a guide and includes most common used information.
|
||||
|
||||
3. Add Card to a Set
|
||||
|
||||
Now that we have a new card we need to add it to a set so that it will be included in the game. For the purposes of this turorial we'll add out card to an existing set. If you wish to create your own set you can follow this guide: `Guide Coming Soon`
|
||||
Now that we have a new card we need to add it to a set so that it will be included in the game. For the purposes of this tutorial we'll add our card to an existing set. If you wish to create your own set you can follow this [guide](Creating-a-custom-Set.md).
|
||||
|
||||
Navigate to your Custom Editions folder and open the text file for the set you would like to add your card to. Let's add our card to the "DCI Promos" set.
|
||||
|
||||
@@ -171,7 +166,7 @@ Simply save and rename the image to "Goblin Card Guide.fullborder.jpg" then over
|
||||
|
||||
You can check the [Abilities](AbilityFactory) and [Triggers](Triggers) documentation for more information on this topic. These documents are meant as a guide and are unlikely to contain information about every ability in the game.
|
||||
|
||||
The sinplest method for creating an effect on your card is to find another card that does the same thing and copying the ability. These can be found in your Forge folder:
|
||||
The sinmlest method for creating an effect on your card is to find another card that does the same thing and copying the ability. These can be found in your Forge folder:
|
||||
|
||||
>./Forge/res/cardsfolder/cardsfolder.zip
|
||||
|
||||
@@ -1,5 +1,3 @@
|
||||
# Creating a custom set
|
||||
|
||||
This is a tutorial to start creating your own custom set, or implementing an existing one. We'll take you step by step into implementing a few cards from [MSEM Champions](https://msem-instigator.herokuapp.com/set/MPS_MSE). This is a basic guide to help you get started.
|
||||
|
||||
**Note:** This tutorial is currently for **Windows only**.
|
||||
@@ -42,5 +42,3 @@ mvn -U -B clean \\
|
||||
-Dcardforge.user=${FORGE_FTP_USER} \\
|
||||
-Dcardforge.pass=${FORGE_FTP_PASS}
|
||||
```
|
||||
|
||||
After this, the appropriate forum posts will need to be made announcing the new release.
|
||||
@@ -1,44 +0,0 @@
|
||||
# Why Rewrite Network Play?
|
||||
|
||||
The current implementation of **Network Play** relies on [Java serialization/deserialization](https://www.geeksforgeeks.org/serialization-in-java/) via [Netty](https://netty.io/). While this does work, it is inefficient, transferring large amounts of unnecessary (duplicate) data. The transferring of duplicate data has two negatives:
|
||||
|
||||
1. increased latency
|
||||
2. increased bandwidth
|
||||
|
||||
The increased latency is very noticeable throughout a network game.
|
||||
The increased bandwidth is a potential concern for mobile players, not everyone has an unlimited data plan.
|
||||
|
||||
Testing of the existing **Network Play** implementation has shown an individual **Game** transferring over 300MB of data.
|
||||
|
||||
# The Rewrite
|
||||
|
||||
The rewrite will utilize [protobuf](https://developers.google.com/protocol-buffers) and be approached in phases:
|
||||
|
||||
1. Lobby
|
||||
2. Match
|
||||
3. Game
|
||||
|
||||
## Lobby
|
||||
|
||||
The **Lobby** portion will handle:
|
||||
|
||||
* Handshake
|
||||
* Player
|
||||
* Name
|
||||
* Avatar
|
||||
* Game Rules Selection
|
||||
* Deck Submission
|
||||
|
||||
The **Handshake** portion of the **Lobby** will be responsible for ensuring that it is a **Forge** client that is connecting **and** that the client is running a compatible **Network Play** implementation.
|
||||
|
||||
## Match
|
||||
|
||||
Number of **Games** that comprise a **Match**, normally first player to win 2 **Games**. This is important, because it is not *technically* best of 3. For example if either of the first two games of a **Match** are a *draw*, it is entirely possible to play a fourth **Game** in a **Match**. (Need a judge ruling reference on this)
|
||||
|
||||
## Game
|
||||
|
||||
This will be broken down in more detail, but the important bits to hand first are:
|
||||
|
||||
* Phases
|
||||
* Passing of **priority**
|
||||
* Notification upon receipt of **priority**
|
||||
@@ -36,8 +36,6 @@ Supports over 10,000 cards. We start using a reconstructed UI that allows for be
|
||||
|
||||
## 2024-07 - _All non-Un set cards have been added to Forge_
|
||||
|
||||
## 2024-08 - Bloomburrow release
|
||||
|
||||
## 2024-09 - Duskmouth Release 1.6.65 (**Last release that supports Java 1.8**)
|
||||
|
||||
Supports over 28,500 cards.
|
||||
@@ -68,8 +66,6 @@ For any of you curious about what the first attempt at making a Shandalar-like A
|
||||
Interestingly, the above-mentioned thread refers to the proposed game mode as "Adventure Mode" a few times (closer to the end of the thread), something that we actually currently have and actively develop 👍
|
||||
The interesting aspect of that development was the day/night cycle, I don't know why but I remember I thought that it looked quite atmospheric back in the day
|
||||
|
||||
|
||||
|
||||
## Abe Sergeant writes about Forge
|
||||
|
||||
2009-09-11 - Here is the article on star city.
|
||||
@@ -80,15 +76,12 @@ And here is it in archive.org in case that gets taken down
|
||||
|
||||
https://web.archive.org/web/20210707215155/https://articles.starcitygames.com/articles/the-kitchen-table-302-an-mtg-forge-quest/
|
||||
|
||||
MTG Forge comes with a Quest Mode. In Quest Mode, you begin with a random selection of cards, and have to build a 60-card deck. Then you play against decks by various computer opponents, and as you win, you get more cards, and the difficulty of your opponents increases.
|
||||
|
||||
Quest is the most fun I’ve had playing Magic in a year.
|
||||
|
||||
What I am going to do is show you a quick 10-game win in quest. You can play to 10, 20, 30, or 40 wins, but I’m just going to show you a 10 win in quest. I will show you where the game has bugs too, so you can see what I am talking about when I say WIP. I’m not holding anything back.
|
||||
> MTG Forge comes with a Quest Mode. In Quest Mode, you begin with a random selection of cards, and have to build a 60-card deck. Then you play against decks by various computer opponents, and as you win, you get more cards, and the difficulty of your opponents increases.<br />
|
||||
> Quest is the most fun I’ve had playing Magic in a year.
|
||||
|
||||
# Major disruptions
|
||||
|
||||
One interesting thing about Forge is the way it grew. Much of the first few years was solely on the back of an Amateur software engineer called "MTG Rares" soon enough "Dennis Bergkamp" came along and was doing a bunch more development. New Software Engineers joined the ranks off and on. From there on people would jump in, help for a handful of years and get too busy with life, or stop really playing magic or whatever. A handful of us have been around the longhaul, but not too many.
|
||||
One interesting thing about Forge is the way it grew. Much of the first few years was solely on the back of an Amateur software engineer called "MTG Rares". Soon enough "Dennis Bergkamp" came along and was doing a bunch more development. New Software Engineers joined the ranks off and on. From there on people would jump in, help for a handful of years and get too busy with life, or stop really playing magic or whatever. A handful of us have been around the longhaul, but not too many.
|
||||
|
||||
## Sourceforge SVN (2007-2008)
|
||||
Original location. Moved when the name changed.
|
||||
@@ -103,13 +96,11 @@ One interesting thing about Forge is the way it grew. Much of the first few year
|
||||
## Github (2021-Present)
|
||||
Conversion from Git to Git was a lot easier.
|
||||
|
||||
|
||||
## Jendave's modularization (2011)
|
||||
The initial modularization attempt pulled everything from living under forge-gui/ module and built out some of the Maven structure.
|
||||
|
||||
## Maxmtg's modularization (2013?)
|
||||
Took this the next step further massively reorganizing the codebase. It caused major issues and took a few months to get resolved.
|
||||
|
||||
## Hanmac's modularization (2017?
|
||||
This was a smaller modularization mostly within certains areas that ultimately was positive, but led to some headaches during the process.
|
||||
|
||||
## Hanmac's modularization (2017?)
|
||||
This was a smaller modularization mostly within certains areas that ultimately was positive, but led to some headaches during the process.
|
||||
|
||||
@@ -1,35 +1,20 @@
|
||||
This is a list of basic troubleshooting questions that come up for most new players, before running to the discord about your issue, please review this FAQ for some of the more common issues.
|
||||
|
||||
### Check the FAQ in Discord
|
||||
This is a list of basic troubleshooting questions that come up for most new players, before running to the discord about your issue, please review this document for some of the more common issues.
|
||||
|
||||
* Check the FAQ in Discord (probably more up-to-date if things break unexpectedly on us)
|
||||
https://discord.com/channels/267367946135928833/1095026912927154176
|
||||
|
||||
### Search the help posts in Discord
|
||||
|
||||
https://discord.com/channels/267367946135928833/1047001034788196452
|
||||
|
||||
### Write a post in help section of Discord
|
||||
|
||||
* Search the help posts in Discord
|
||||
https://discord.com/channels/267367946135928833/1047001034788196452
|
||||
|
||||
Note: For now, please also check [this](https://www.slightlymagic.net/forum/viewtopic.php?f=26&t=11825) forum topic for some additional information.
|
||||
|
||||
# General
|
||||
|
||||
### How do I download content?
|
||||
## How do I download content?
|
||||
|
||||
Forge has content downloaders within the app itself, you can use those tools to update the graphics assets. More information about card and token image assets can be found here. [Card Images, Downloading](Card-Images#downloading)
|
||||
|
||||
|
||||
|
||||
* If you have an older Android device for increased performance or to save bandwidth it might be a good idea to use lower resolution images instead: https://www.slightlymagic.net/forum/viewtopic.php?f=15&t=29104
|
||||
|
||||
### How do I extract Forge?
|
||||
|
||||
* Forge uses a .tar.bz2 format for archiving. Depending on your operating system, different utilities can be used to untar the archive.
|
||||
* If you use Windows, you may want to try 7-Zip (http://www.7-zip.org/download.html).
|
||||
|
||||
### I think I found a bug in Forge. What do I do?
|
||||
## I think I found a bug in Forge. What do I do?
|
||||
|
||||
*Most users, who are running beta versions of Forge, should continue to use these instructions. As for alpha testers, these instructions have yet to be made congruent with the latest automatic bug reporting from within Forge.*
|
||||
|
||||
@@ -37,8 +22,7 @@ Bug reports from users are the lifeblood of Forge. Please keep in mind that "bet
|
||||
|
||||
For starters, please take note of (1) what you had in play, (2) what your opponent had in play and (3) what you were doing when the error occurred. If you get a Crash Report from inside Forge, please save the data to a file. This information is very important when reporting a problem. Don't worry if you didn't think of that right away, until your next start, the "Forge.log" in the game directory will also provide that information.
|
||||
|
||||
If you did not get a Crash Report, but you have experienced a problem in how Forge handled one or more cards or game rules, *please read the cards (and the Oracle rulings) carefully* to make sure you understand how they work. You may be surprised to find that Forge is actually enforcing the rules
|
||||
correctly.
|
||||
If you did not get a Crash Report, but you have experienced a problem in how Forge handled one or more cards or game rules, *please read the cards (and the Oracle rulings) carefully* to make sure you understand how they work. You may be surprised to find that Forge is actually enforcing the rules correctly.
|
||||
|
||||
Because duplicate bug reports use up our limited resources, please research your bug with the **Search** box on Forge's [issue tracker](https://git.cardforge.org/core-developers/forge/-/issues) to see if your bug has already been reported there. For Crash Reports, use key words from the second paragraph of the Crash Report.
|
||||
|
||||
@@ -48,13 +32,13 @@ Because duplicate bug reports use up our limited resources, please research your
|
||||
|
||||
* If you're unsure, you can also post on one of the support channels of the discord. In case you do not get a timely response, please submit a new issue anyway to make sure it doesn't get lost.
|
||||
|
||||
### I have an idea to make Forge better. What do I do?
|
||||
## I have an idea to make Forge better. What do I do?
|
||||
|
||||
Follow the directions in [Bug Reports](Frequently-Asked-Questions#i-think-i-found-a-bug-in-forge-what-do-i-do), keeping in mind that you are not reporting a bug, but rather a **Feature Request**.
|
||||
|
||||
# Development
|
||||
|
||||
### I want to help develop Forge. How do I get started?
|
||||
## I want to help develop Forge. How do I get started?
|
||||
|
||||
Forge is written in Java, so knowledge in that language (or similar Object Oriented languages like C++ or C\#) is very helpful. However, it is possible to learn the grammar for writing the data objects of cards without programming experience.
|
||||
|
||||
@@ -64,30 +48,30 @@ Thanks to the nature of how cards are implemented, you can also contribute these
|
||||
|
||||
To obtain the source code of Forge, read our [Development Guide]((SM-autoconverted)--how-to-get-started-developing-forge).
|
||||
|
||||
### My system is all setup to help. What now?
|
||||
## My system is all setup to help. What now?
|
||||
|
||||
Take a look through the /res/cardsfolder folder. This is where all the card data lives. If you know of cards that are missing from Forge, see if there are similar cards that already exist.
|
||||
|
||||
# Gameplay
|
||||
|
||||
### Where do I use Flashback or a similar ability that is in an External area?
|
||||
## Where do I use Flashback or a similar ability that is in an External area?
|
||||
|
||||
Click on the Lightning Bolt icon in the player panel. Since cards with External Activations aren't as clear to activate, we created this shortcut for this specific purpose.
|
||||
|
||||
### How do I target a player?
|
||||
## How do I target a player?
|
||||
|
||||
Just click on the player's Avatar in the Player Panel when prompted to select a Player as a target.
|
||||
|
||||
### Where did my mana go?
|
||||
## Where did my mana go?
|
||||
|
||||
If you have an effect that generated you some mana, and you don't know where it is. Check out the Player Panel. There are 6 different mana subpools one for each color/colorless that should have it. If you accidentally tapped your mana before your Main Phase, your mana is gone. Sorry, we don't have a way at this time to revert these actions. In general, I'd say it's easier/better to start casting a spell first, then activate your mana so this doesn't happen.
|
||||
|
||||
# Quest Mode
|
||||
|
||||
### What is the difference between Fantasy Quest and Normal Quest?
|
||||
## What is the difference between Fantasy Quest and Normal Quest?
|
||||
|
||||
In Normal Quest, you start with 20 life and only have access to the Card Shop. In Fantasy Quest, you start at 15 life and gain additional access to the Bazaar which allows you to buy things like extra life points, Pets, Plants and more.
|
||||
|
||||
### Sealed Deck Mode
|
||||
## Sealed Deck Mode
|
||||
|
||||
[HOW-TO: Customize your Sealed Deck games with fantasy blocks](https://www.slightlymagic.net/forum/viewtopic.php?f=26&t=8164)
|
||||
|
||||
28
docs/Home.md
28
docs/Home.md
@@ -8,37 +8,35 @@ Forge is a "Rules Engine" for the game Magic: the Gathering.
|
||||
Forge is not related in any way with Wizards of the Coast.
|
||||
Forge is open source software released under the GNU Public License.
|
||||
|
||||
Up to 8 players are supported, with control of each assigned to human or AI control. Player decks can be imported, user-created with the Deck Editor, or automatically generated. Over 99% (and counting) of all cards in Magic's existence are available, with the missing ones mostly being pointless to implement in the context (e. g. the notorious Chaos Orb) or impossible. That's more than the official Magic Online!
|
||||
Up to 8 players are supported, with each assigned to human or AI control. Player decks can be imported, user-created with the Deck Editor, or automatically generated. Over [99%](Missing-Cards-in-Forge.md) (and counting) of all cards in Magic's existence are available, with the missing ones mostly being pointless to implement in the context (e.g. the notorious Chaos Orb) or impossible. That's more than the official Magic Online!
|
||||
|
||||
For a complete list of unimplemented cards, either check the most recent release topic on the forums or use the "Audit Card and Image Data" check from "Content Downloaders" menu.
|
||||
Forge creates a unique experience by combining this enormous card library with some RPG elements in [**Quest mode**](https://www.slightlymagic.net/forum/viewtopic.php?f=26&t=9258) on the desktop version, and **Planar Conquest** on the mobile version.
|
||||
|
||||
Forge creates a unique experience by combining this enormous card library with some RPG elements in [**Quest mode**](https://www.slightlymagic.net/forum/viewtopic.php?f=26&t=9258) (comparable to the 'Shandalar', the late 90's PC Game) on the desktop version, and **Planar Conquest** on the mobile version. Forge now includes a Graphical Map Based game mode called "Adventure Mode" which is more akin to 'Shandalar.'
|
||||
Forge also features a wide variety of puzzles. For more details and features see the other pages in this wiki.
|
||||
|
||||
Forge also features a wide variety of puzzles. For more details and features see the MANUAL.txt in your game folder.
|
||||
|
||||
Currently, Forge functions best in Human vs. AI matches. Playing against another human player over the Internet with Online Multiplayer mode is functional, but may still result in game play errors. See the Network Play section of this wiki.
|
||||
Currently, Forge functions best in Human vs. AI matches. Playing against another human player over the Internet with [Online Multiplayer mode](Network-FAQ.md) is functional, but may still result in game play errors.
|
||||
|
||||
# Adventure Mode
|
||||
Forge now has an Adventure Mode, along with the Classic deck building and match game modes with AI.
|
||||
Forge now includes a Graphical Map Based game mode, along with the Classic deck building and match game modes with AI.
|
||||
|
||||
Adventure mode is a work-in-progress game mode where you explore the ever-changing landscape of Shandalar, and duel creatures to gain gold and new cards ~~to become the best and collect them all!~~ to battle the bosses in the castles for each color. You can visit towns to buy equipment and cards, crawl through dungeons to find artifacts and loot to help you on your journey. Adventure mode is an awesome reimagining of the original 'Shandalar' 90's PC Game in Forge.
|
||||
Adventure mode is a work-in-progress game mode where you explore the ever-changing landscape of Shandalar, and duel creatures to gain gold and new cards ~~to become the best and collect them all!~~ to battle the bosses in the castles for each color. You can visit towns to buy equipment and cards, crawl through dungeons to find artifacts and loot to help you on your journey. Adventure mode is an awesome reimagining of the original 'Shandalar' late 90's PC Game in Forge.
|
||||
|
||||
Adventure is baked into the Android/Mobile release of Forge, and as a separate executable already provided in the Desktop release package.
|
||||
|
||||
# Download and Install
|
||||
|
||||
* Most users please see the [User Guide.](User-Guide)
|
||||
* Most users please see the [User Guide](User-Guide.md).
|
||||
|
||||
* For SteamDeck or Bazzite Installation see [Steam Deck Install.](Steam-Deck-and-Bazzite-Install)
|
||||
* For SteamDeck or Bazzite devices see this [extra manual](Steam-Deck-and-Bazzite-Install.md).
|
||||
|
||||
# Support
|
||||
[Basic Troubleshooting](Troubleshooting-FAQ) - Check here first.
|
||||
[Basic Troubleshooting](#Troubleshooting.md) - Check here first.
|
||||
|
||||
[Join the Discord](https://discord.com/invite/3v9JCVr)! - We're happy to help you get going.
|
||||
|
||||
[Other Frequently Asked Questions](Frequently-Asked-Questions) - For more advanced questions about forge mechanics and gameplay.
|
||||
[Other Frequently Asked Questions](Frequently-Asked-Questions.md) - For more advanced explanations about Forge mechanics and gameplay.
|
||||
|
||||
# Forge Developers
|
||||
# Developers
|
||||
|
||||
The original programmer can be found at http://mtgrares.blogspot.com. A while
|
||||
back he open sourced the project and let the other developers improve it
|
||||
@@ -52,6 +50,8 @@ lot of behind the scenes action going on. For each release, it is common
|
||||
for the release developer to give a shout out for those that helped
|
||||
specifically for that version. Feel free to give kudos there.
|
||||
|
||||
If you are curious about the written/oral history of Forge, we're working on recreating some of that [Forge Historical reference](Forge-historical-reference)
|
||||
If you are curious about the written/oral history of Forge, we're working on recreating some of that [Forge Historical reference](Forge-historical-reference.md)
|
||||
|
||||
***
|
||||
|
||||
> <span style="color: red;">Note:</span> if you're reading this locally here's the [Table of Contents](_sidebar.md)
|
||||
|
||||
@@ -1,5 +0,0 @@
|
||||
Forge can work with card images of your choice.
|
||||
|
||||
The naming convention is as follows:
|
||||
|
||||
If you have an older Android device for increased performance or to save bandwidth it might be a good idea to use lower resolution images instead: https://www.slightlymagic.net/forum/viewtopic.php?f=15&t=29104
|
||||
@@ -1,10 +1,8 @@
|
||||
# SteamDeck and Bazzite Support
|
||||
|
||||
_This instruction was written using Bazzite, however should be similar enough for SteamOS._
|
||||
|
||||
In order to support the SteamDeck "natively" for full Forge Desktop mode, we would likely need to have a flatpack installer for the best user install experience, currently Forge has no intention to have a flatpack. The current **best** and recommended way to have Forge on your SteamDeck is to install and run the Android APK version in Waydroid Android Container.
|
||||
|
||||
* You will need to have installed Waydroid first, this reddit post may work for you; https://www.reddit.com/r/SteamDeck/comments/1ay7ev8/how_to_install_waydroid_android_on_your_steam_deck/
|
||||
* You will need to have installed Waydroid first, this reddit post may work for you: https://www.reddit.com/r/SteamDeck/comments/1ay7ev8/how_to_install_waydroid_android_on_your_steam_deck/
|
||||
|
||||
## Installing Forge Android in Waydroid (Recommended Method)
|
||||
Once you've installed Waydroid, you can follow the same steps you would in any Android device.
|
||||
|
||||
@@ -1,67 +1,76 @@
|
||||
# Downloads
|
||||
* **Snapshots**;
|
||||
* *Snapshots*
|
||||
* READ THESE NOTES BEFORE DOWNLOADING SNAPSHOTS:
|
||||
* **Please use snapshots for Adventure Mode!**
|
||||
* May contain more bugs, bug fixes, **definitely gets newest cards faster** and newer features.
|
||||
* These are **NOW** automatically released daily.
|
||||
* If the snapshot isn't in the location below, it's because its in the middle of uploading a new snapshot. Come back later to grab it.
|
||||
* May contain more bugs, but also bug fixes, definitely gets newest cards faster and helps us test features.
|
||||
* These are automatically released daily.
|
||||
* If the snapshot isn't in the location below, it's because its in the middle of uploading a new snapshot - come back later to grab it.
|
||||
* [_**CLICK HERE FOR DOWNLOAD LINKS - Forge SNAPSHOT Version (DESKTOP/ANDROID)**_](https://github.com/Card-Forge/forge/releases/tag/daily-snapshots)
|
||||
* For desktop, grab the installer file that ends in .jar
|
||||
* For android, grab the android file that ends in .apk
|
||||
* **Android Installation Guide**
|
||||
* Quick Guide for installing Android Snapshots: <br />
|
||||
|
||||
* For android, grab the android file that ends in .apk
|
||||
<br />‐ Watch the screen recording if one of following steps isn't clear for you
|
||||
|
||||
https://github.com/user-attachments/assets/7a0c7bb8-7cf9-4800-8091-bcc30ff2f4d8
|
||||
|
||||
|
||||
|
||||
* **Releases**;
|
||||
* *Releases*
|
||||
* READ THESE NOTES BEFORE DOWNLOADING RELEASES:
|
||||
- "Releases" are really intended where "99% cards implemented are working and stable."
|
||||
- If you are looking for newly spoiled cards as soon as possible, grab the snapshot instead.
|
||||
- The current release mechanism is failing unexpectedly for Android. So just stick with snapshots for Android users.
|
||||
* [_**CLICK HERE FOR DOWNLOAD LINKS - RELEASE DESKTOP**_](https://github.com/Card-Forge/forge/releases/latest)
|
||||
- Grab the installer file that ends in .jar
|
||||
|
||||
|
||||
# Java Requirement
|
||||
# System Requirements
|
||||
|
||||
**Forge Requires Java** to run, please make sure you have Java installed on your machine prior to attempting to run.
|
||||
|
||||
* **Java 17** is required as minimum version and can be acquired through the Standard Edition Development Kit (JDK) or the OpenJDK. Continued development provides new features in those editions, therefore you need the Java Development Kit to have those newer editions;
|
||||
* **Java 17** is required as minimum version and can be acquired through the Standard Edition Development Kit (JDK) or the OpenJDK. Continued development provides new features in those editions, therefore you need the Java Development Kit to have those newer editions:
|
||||
- Download - [https://jdk.java.net/](https://jdk.java.net/)
|
||||
- Source Code - [https://github.com/openjdk/jdk/](https://github.com/openjdk/jdk/)
|
||||
|
||||
Most people who have problems setting up Forge, do not have Java setup properly. If you are having trouble, open your terminal/command line and run `java --version`. That number should be 17 or higher.
|
||||
Most people who have problems setting up Forge, do not have Java setup properly. If you are having trouble, open your terminal/command line and run `java --version`. That number should be 17 or higher.
|
||||
|
||||
The memory requirements for Forge have fluctuated over time. The default
|
||||
setting on your computer for the Java heap space may not be enough to
|
||||
prevent the above problems. If you launch Forge by double-clicking the
|
||||
jar files directly you could eventually receive a **java heap space
|
||||
error**.
|
||||
|
||||
We have created several scripts that will launch Forge with a greater
|
||||
allotment of system resources. (We do this by passing `-Xmx1024m` as
|
||||
an argument to the Java VM.)
|
||||
|
||||
# Install and Run
|
||||
|
||||
Forge requires Java to run.
|
||||
_**Download and unpack/install the package to their own new folder!**_
|
||||
|
||||
_**Download and unpack /install the package to their own new folder!**_
|
||||
|
||||
### Install Wizard (jar)
|
||||
## Install Wizard (jar)
|
||||
* Run/Double click "**forge-installer**-VERSION.jar" where VERSION is the current release version and click next until the Target Path window appears. If double clicking the .jar file doesn't load the main interface you can run it via terminal/command line ```java -jar FILENAME.jar``` where FILENAME is the name of the installer.
|
||||
|
||||
* Browse to your preferred install directory (create a new directory for clean installation) and click next until installation starts.
|
||||
* Browse to your preferred install directory and click next until installation starts.
|
||||
|
||||

|
||||
|
||||
* After the installation finishes, close the installer. Run the executable forge|forge-adventure (.exe/.sh/.cmd)
|
||||
|
||||
### Manual Extraction (tar.bz2)
|
||||
## What if double-clicking doesn’t work?
|
||||
|
||||
Sometimes double-clicking will open the jar file in a different program.
|
||||
In Windows, you may need to right-click and open the properties to
|
||||
change the launching program to Java. This might be different in OSX or
|
||||
Linux systems (file permission related).
|
||||
|
||||
## Manual Extraction (tar.bz2)
|
||||
|
||||
* **Desktop Windows**:
|
||||
* Unpack "forge...tar.**bz2**" with any unpacking/unzipping app (e.g. 7-zip, winrar, etc)
|
||||
* You'll end up with "forge...**tar**".
|
||||
* Unpack "forge...*tar.bz2*" with any unpacking/unzipping app (e.g. 7-zip, winrar, etc)
|
||||
* You'll end up with "forge...*tar*".
|
||||
* Unpack that ".tar" file once more into its own folder.
|
||||
* Run Forge app/exe
|
||||
* **Desktop Linux/Mac**:
|
||||
* Unpack "forge...**tar.bz2**" with any unpacking app. (Check your package repository, or app store.)
|
||||
* Unpack "forge...*tar.bz2*" with any unpacking app. (Check your package repository, or app store.)
|
||||
* You'll probably end up with just a folder, and fully extracted.
|
||||
* If you do end up with a ".tar" file, unpack that file also into it's own folder.
|
||||
* Run Forge script;
|
||||
* If you do end up with a ".tar" file, unpack that file also into its own folder.
|
||||
* Run Forge script:
|
||||
* Linux: Run the ".sh" file in a terminal (double clicking might work.)
|
||||
* MacOS/OSX: Run the ".command" file by double clicking in Finder, or run from the terminal.
|
||||
* If the command file doesn't appear to do anything, you'll need to [modify the permissions to be executable.](https://support.apple.com/guide/terminal/make-a-file-executable-apdd100908f-06b3-4e63-8a87-32e71241bab4/mac) (This is a temporary bug in the build process.)
|
||||
@@ -78,39 +87,3 @@ _**Download and unpack /install the package to their own new folder!**_
|
||||
- If adventure mode option does not show up;
|
||||
- check you're up to date with your version.
|
||||
- check in the settings that the "Selector Mode" is set to `Default`
|
||||
|
||||
# System Requirements and Historic Details
|
||||
|
||||
Since Forge is written in Java, it is compatible on any Operating System
|
||||
that can run the Java Runtime Environment. Forge requires
|
||||
Java 17 (Forge is not backwards compatible with older versions of Java).
|
||||
If you have difficulties with your System not working with Forge,
|
||||
please come to the Discord so we can attempt to help.
|
||||
This program works best with a screen resolution of **1280 by 720** or
|
||||
better. Forge can now have it's window minimized to **800 by 600**
|
||||
pixels but this may make the display area cramped and possibly limit
|
||||
your ability to play. (This means Forge may not compatible with some
|
||||
netbook computers.)
|
||||
|
||||
The memory requirements for Forge have fluctuated over time. The default
|
||||
setting on your computer for the java heap space may not be enough to
|
||||
prevent the above problems. If you launch Forge by double-clicking the
|
||||
file **run-forge.jar** you will eventually receive a **java heap space
|
||||
error**. The name of the forge jar file has changed as part of our new
|
||||
Maven based build and release system. The name format now used is:
|
||||
|
||||
**forge-**{version number}**-jar-with-dependencies.jar**
|
||||
|
||||
We have created several scripts that will launch Forge with a greater
|
||||
allotment of system resources. (We do this by passing **-Xmx1024m** as
|
||||
an argument to the Java VM.) People using Windows OS should double click
|
||||
the **forge.exe** file. People using Apple's Mac OS X should use the Mac
|
||||
OS version and double click the **forge.command** file. People using one of the
|
||||
other \*nix OS should double click the **forge.sh** file.
|
||||
|
||||
# What if double-clicking doesn’t work?
|
||||
|
||||
Sometimes double-clicking will open the jar file in a different program.
|
||||
In Windows, you may need to right-click and open the properties to
|
||||
change the launching program to Java. This might be different in OSX or
|
||||
Linux systems (file permission related).
|
||||
|
||||
@@ -7,33 +7,33 @@
|
||||
- [Network FAQ](Network-FAQ.md)
|
||||
- [Network Extra](Networking-Extras.md)
|
||||
|
||||
- [Adventure Mode](Adventure-Mode.md)
|
||||
- [Adventure Mode](Adventure/Adventure-Mode.md)
|
||||
|
||||
- Gameplay Guide
|
||||
|
||||
- [Getting Started](Gameplay-Guide.md)
|
||||
- [Different Planes](Different-Planes.md)
|
||||
- [Currency](Currency.md)
|
||||
- [Deck Building Tips](Deck-Building-Tips.md)
|
||||
- [Towns & Capitals](Towns-&-Capitals.md)
|
||||
- [Dungeons](Dungeons.md)
|
||||
- [Equipments and Items](Equipments-and-Items.md)
|
||||
- [Getting Started](Adventure/Gameplay-Guide.md)
|
||||
- [Different Planes](Adventure/Different-Planes.md)
|
||||
- [Currency](Adventure/Currency.md)
|
||||
- [Deck Building Tips](Adventure/Deck-Building-Tips.md)
|
||||
- [Towns & Capitals](Adventure/Towns-&-Capitals.md)
|
||||
- [Dungeons](Adventure/Dungeons.md)
|
||||
- [Equipments and Items](Adventure/Equipments-and-Items.md)
|
||||
- [Keyboard Shortcuts](Keyboard-Shortcuts.md)
|
||||
- [Controller Support](Adventure/GAMEPAD.md)
|
||||
- [Console and Cheats](Console-and-Cheats.md)
|
||||
|
||||
- [Modding and Development](Modding-and-Development.md)
|
||||
- [Modding and content creation](Adventure/Modding.md)
|
||||
|
||||
- [Create Enemies](Create-Enemies.md)
|
||||
- [Create Rewards](Create-Rewards.md)
|
||||
- [Create Maps](Create-new-Maps.md)
|
||||
- [Configure Planes](Configure-Planes.md)
|
||||
- [Configure Starting Sets](Configure-Sets.md)
|
||||
- [Create Enemies](Adventure/Create-Enemies.md)
|
||||
- [Create Rewards](Adventure/Create-Rewards.md)
|
||||
- [Create Maps](Adventure/Create-new-Maps.md)
|
||||
- [Configure Planes](Adventure/Configure-Planes.md)
|
||||
- [Configure Starting Sets](Adventure/Configure-Sets.md)
|
||||
|
||||
- Tutorials
|
||||
- [Tutorial 1, Create your first Plane](Tutorial-1-Create-your-First-Plane.md)
|
||||
- [Tutorial 2, A New Look (creating your first map.)](Tutorial-2-A-New-Look.md)
|
||||
- [Tutorial 3, Configuration (Configuring your Plane)](Tutorial-3-Configuration.md)
|
||||
|
||||
- [Tutorial 1, Create your first Plane](Adventure/Tutorial-1-Create-your-First-Plane.md)
|
||||
- [Tutorial 2, A New Look (creating your first map.)](Adventure/Tutorial-2-A-New-Look.md)
|
||||
- [Tutorial 3, Configuration (Configuring your Plane)](Adventure/Tutorial-3-Configuration.md)
|
||||
|
||||
- [Card Scripting API](Card-scripting-API/Card-scripting-API.md)
|
||||
- [Ability effects](Card-scripting-API/AbilityFactory.md)
|
||||
@@ -43,22 +43,22 @@
|
||||
- [Costs](Card-scripting-API/Costs.md)
|
||||
- [Affected / Targets](Card-scripting-API/Targeting.md)
|
||||
- [Restrictions / Conditions](Card-scripting-API/Restrictions.md)
|
||||
- [Guide: Creating a Custom Card](Card-scripting-API/Creating-a-Custom-Card.md)
|
||||
- [Tutorial: Creating a custom Card](Card-scripting-API/Creating-a-Custom-Card.md)
|
||||
|
||||
- [Development]((SM-autoconverted)-how-to-get-started-developing-forge.md)
|
||||
- [IntelliJ Setup](Development/IntelliJ-setup/IntelliJ-setup.md)
|
||||
- [Snapshots and Releases](Snapshots-and-Releases.md)
|
||||
- [Android Builds](Development/android-builds.md)
|
||||
- [Snapshots and Releases](Development/Snapshots-and-Releases.md)
|
||||
- [Android Builds](Development/Android-Builds.md)
|
||||
- [Ownership](Development/ownership.md)
|
||||
- [Docker Container](docker-setup.md)
|
||||
|
||||
- [Customization and Themes.md](Themes.md)
|
||||
- [Customization and Themes](Themes.md)
|
||||
- Skins
|
||||
- Sounds
|
||||
- [Music](Custom-Music.md)
|
||||
- [Card Images](Card-Images.md)
|
||||
- [File Formats](File-Formats.md)
|
||||
- [Creating your first custom set](Creating-a-custom-set.md)
|
||||
- [Tutorial: creating your first custom set](Creating-a-custom-Set.md)
|
||||
|
||||
- [Missing Cards in Forge](Missing-Cards-in-Forge.md)
|
||||
- [Un‐cards, Playtest Cards, and Other Funny Cards](Un‐cards,-Playtest-Cards,-and-Other-Funny-Cards.md)
|
||||
|
||||
@@ -124,13 +124,11 @@ public abstract class ManifestBaseAi extends SpellAbilityAi {
|
||||
return new AiAbilityDecision(100, AiPlayDecision.WillPlay);
|
||||
}
|
||||
|
||||
if ( MyRandom.getRandom().nextFloat() < .8) {
|
||||
if (MyRandom.getRandom().nextFloat() < .8) {
|
||||
// 80% chance to play a Manifest spell
|
||||
return new AiAbilityDecision(100, AiPlayDecision.WillPlay);
|
||||
} else {
|
||||
// 20% chance to not play a Manifest spell
|
||||
return new AiAbilityDecision(0, AiPlayDecision.CantPlayAi);
|
||||
}
|
||||
return new AiAbilityDecision(0, AiPlayDecision.CantPlayAi);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -488,7 +488,6 @@
|
||||
<fileset dir="${basedir}/../forge-gui/release-files/" includes="INSTALLATION.txt" />
|
||||
<fileset dir="${basedir}/../forge-gui/release-files/" includes="ISSUES.txt" />
|
||||
<fileset dir="${basedir}/../forge-gui-desktop/target/" includes="CHANGES.txt" />
|
||||
<fileset dir="${basedir}/../forge-gui/release-files/" includes="GAMEPAD_README.txt" />
|
||||
<fileset dir="${basedir}/../forge-gui/" includes="MANUAL.txt" />
|
||||
<fileset dir="${basedir}/../forge-gui-mobile-dev/" includes="sentry.properties" />
|
||||
<fileset dir="${basedir}/../forge-gui/">
|
||||
|
||||
@@ -530,7 +530,6 @@ try {
|
||||
<fileset dir="${basedir}/../forge-gui/release-files/" includes="CONTRIBUTORS.txt" />
|
||||
<fileset dir="${basedir}/../forge-gui/release-files/" includes="ISSUES.txt" />
|
||||
<fileset dir="${basedir}/../forge-gui/release-files/" includes="INSTALLATION.txt" />
|
||||
<fileset dir="${basedir}/../forge-gui/release-files/" includes="GAMEPAD_README.txt" />
|
||||
<fileset dir="${basedir}/../forge-gui/" includes="MANUAL.txt" />
|
||||
<fileset dir="${basedir}/" includes="sentry.properties" />
|
||||
</copy>
|
||||
|
||||
@@ -27,7 +27,7 @@ import java.util.function.Predicate;
|
||||
*/
|
||||
public class RewardData implements Serializable {
|
||||
private static final long serialVersionUID = 3158932532013393718L;
|
||||
public String type;
|
||||
public String type; // TODO convert to enum
|
||||
public float probability;
|
||||
public int count;
|
||||
public int addMaxCount;
|
||||
@@ -119,6 +119,7 @@ public class RewardData implements Serializable {
|
||||
return false;
|
||||
if (Iterables.contains(input.getRules().getMainPart().getKeywords(), "Remove CARDNAME from your deck before playing if you're not playing for ante."))
|
||||
return false;
|
||||
// TODO check if commander player
|
||||
if (input.getRules().getAiHints().getRemNonCommanderDecks())
|
||||
return false;
|
||||
if (input.getRules().isCustom() &&
|
||||
@@ -155,7 +156,6 @@ public class RewardData implements Serializable {
|
||||
}
|
||||
|
||||
public Array<Reward> generate(boolean isForEnemy, Iterable<PaperCard> cards, boolean useSeedlessRandom, boolean isNoSell) {
|
||||
|
||||
boolean allCardVariants = Config.instance().getSettingData().useAllCardVariants;
|
||||
Random rewardRandom = useSeedlessRandom ? new Random() : WorldSave.getCurrentSave().getWorld().getRandom();
|
||||
//Keep using same generation method for shop rewards, but fully randomize loot drops by not using the instance pre-seeded by the map
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
The Forge archive includes a MANUAL.txt file and we ask that you spend a few minutes reading this file as it contains some information that may prove useful. We do tend to update this file at times and you should quickly read this file and look for new information for each and every new release. Thank you.
|
||||
The Forge archive includes a docs folder and we ask that you spend a few minutes reading this as it contains some information that may prove useful. You can open the .md (markdown) files with any plain Editor.
|
||||
|
||||
The archive format used for the Forge distribution is ".tar.bz2". There are utilities for Windows, Mac OS and the various *nix's that can be used to extract/decompress these ".tar.bz2" archives. We recommend that you extract/decompress the Forge archive into a new and unused folder.
|
||||
|
||||
@@ -6,9 +6,4 @@ Some people use the Windows application 7zip. This utility can be found at http:
|
||||
|
||||
Once the Forge archive has been decompressed you should then be able to launch Forge by using the included launcher. Launching Forge by double clicking on the forge jar file in the past caused a java heap space error. Forge's memory requirements have increased over time and the launchers increase the java heap space available to Forge. Currently you can launch Forge by double clicking on the forge jar file without a java heap space error but this is likely to change as we add in more sounds, icons, etc.
|
||||
|
||||
- Mac OS -
|
||||
We DO NOT provide a separate macOS builds of desktop and mobile (backported). Instead, please run Forge using the forge.command or forge-adventure.command files.
|
||||
|
||||
|
||||
- Online Multiplayer -
|
||||
For local network play you should only need two systems running Forge. One to host and one to join and play. For remote (over the Internet) play you will need to ensure that the port used (36743 by default) is forwarded to the hosting machine.
|
||||
|
||||
@@ -169,13 +169,13 @@
|
||||
<fileset dir="${basedir}/../forge-gui/" includes="MANUAL.txt" />
|
||||
<fileset dir="${basedir}/../forge-gui/release-files/" includes="CONTRIBUTORS.txt" />
|
||||
<fileset dir="${basedir}/../forge-gui/release-files/" includes="INSTALLATION.txt" />
|
||||
<fileset dir="${basedir}/../forge-gui/release-files/" includes="GAMEPAD_README.txt" />
|
||||
<fileset dir="${basedir}/../forge-gui/release-files/" includes="ISSUES.txt" />
|
||||
<fileset dir="${basedir}/../forge-gui-desktop/target/" includes="CHANGES.txt" />
|
||||
<fileset dir="${basedir}/../forge-gui/">
|
||||
<include name="res/**" />
|
||||
<exclude name="res/cardsfolder/**" />
|
||||
</fileset>
|
||||
<fileset dir="${basedir}/../" includes="docs/**" />
|
||||
<fileset dir="${project.build.directory}/../../forge-gui-desktop/target" includes="forge-gui-desktop-${project.version}-jar-with-dependencies.jar" />
|
||||
<fileset dir="${project.build.directory}/../../forge-gui-desktop/target" includes="forge.exe" />
|
||||
<fileset dir="${project.build.directory}/../../adventure-editor/tools" includes="gdx-particle-editor.jar" />
|
||||
|
||||
Reference in New Issue
Block a user