diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 6042e74a45c..e1244d3bb08 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -2,8 +2,6 @@
[Official repo](https://github.com/Card-Forge/forge.git).
-Dev instructions here: [Getting Started](https://github.com/Card-Forge/forge/wiki) (Somewhat outdated)
-
## Requirements / Tools
- your favourite Java IDE (IntelliJ, Eclipse, VSCodium, Emacs, Vi...)
@@ -18,11 +16,10 @@ Dev instructions here: [Getting Started](https://github.com/Card-Forge/forge/wik
## Project Quick Setup
-- Login into GitHub with your user account and fork the project.
-
+- Login into GitHub with your user account and fork the project
- Clone your forked project to your local machine
-
-- Go to the project location on your machine. Run Maven to download all dependencies and build a snapshot. Example for Windows & Linux: `mvn -U -B clean -P windows-linux install`
+- Go to the project location on your machine. Run Maven to download all dependencies and build a snapshot.
+ - Example for Windows & Linux: `mvn -U -B clean -P windows-linux install`
## IntelliJ
@@ -30,107 +27,28 @@ IntelliJ is the recommended IDE for Forge development. Quick start guide for [se
## Eclipse
-Eclipse includes Maven integration so a separate install is not necessary. For other IDEs, your mileage may vary.
-At this time, Eclipse is not the recommended IDE for Forge development.
+Eclipse includes Maven integration so a separate install is not necessary.
+Google no longer supports Android SDK releases for Eclipse.
-### Project Setup
-
-- Follow the instructions for cloning from GitHub. You'll need to setup an account and your SSH key.
-
- If you are on a Windows machine you can use Putty with TortoiseGit for SSH keys. Run puttygen.exe to generate the key -- save the private key and export
- the OpenSSH public key. If you just leave the dialog open, you can copy and paste the key from it to your GitHub profile under
- "SSH keys". Run pageant.exe and add the private key generated earlier. TortoiseGit will use this for accessing GitHub.
-
-- Fork the Forge git repo to your GitHub account.
-
-- Clone your forked repo to your local machine.
-
-- Make sure the Java SDK is installed -- not just the JRE. Java 17 or newer required. If you execute `java -version` at the shell or command prompt, it should report version 17 or later.
-
-- Install Eclipse 2021-12 or later for Java. Launch it.
-
-- Create a workspace. Go to the workbench. Right-click inside of Package Explorer > Import... > Maven > Existing Maven Projects > Navigate to root path of the local forge repo and
- ensure everything is checked > Finish.
-
-- Let Eclipse run through building the project. You may be prompted for resolving any missing Maven plugins -- accept the ones offered. You may see errors appear in the "Problems" tab. These should
- be automatically resolved as plug-ins are installed and Eclipse continues the build process. If this is the first time for some plug-in installs, Eclipse may prompt you to restart. Do so. Be patient
- for this first time through.
-
-- Once everything builds, all errors should disappear. You can now advance to Project launch.
-
-### Project Launch
-
-#### Desktop
-
-This is the standard configuration used for releasing to Windows / Linux / MacOS.
-
-- Right-click on forge-gui-desktop > Run As... > Java Application > "Main - forge.view" > Ok
-
-- The familiar Forge splash screen, etc. should appear. Enjoy!
-
-#### Mobile (Desktop dev)
-
-This is the configuration used for doing mobile development using the Windows / Linux / MacOS front-end. Knowledge of libgdx is helpful here.
-
-- Right-click on forge-gui-mobile-dev > Run As... > Java Application > "Main - forge.app" > Ok.
-
-- A view similar to a mobile phone should appear. Enjoy!
-
-### Eclipse / Android SDK Integration
-
-Google no longer supports Android SDK releases for Eclipse. use IntelliJ.
-
-#### Android SDK
+## Windows
TBD
-##### Windows
+## Linux / Mac OSX
TBD
-##### Linux / Mac OSX
+### Android Platform
-TBD
-
-#### Android Plugin for Eclipse
-
-TBD
-
-#### Android Platform
-
-In Intellij, if the SDK Manager is not already running, go to Tools > Android > Android SDK Manager. Install the following options / versions:
+In IntelliJ, if the SDK Manager is not already running, go to Tools > Android > Android SDK Manager. Install the following options / versions:
- Android SDK Build-tools 35.0.0
- Android 15 (API 35) SDK Platform
-#### Proguard update
+### Proguard update
Standalone Proguard 7.6.0 is included with the project (proguard.jar) under forge-gui-android > tools and supports up to Java 23 (latest android uses Java 17).
-#### Android Build
-
-TBD
-
-#### Android Deploy
-
-TBD
-
-#### Android Debugging
-
-TBD
-
-### Windows / Linux SNAPSHOT build
-
-SNAPSHOT builds can be built via the Maven integration in Eclipse.
-
-1. Create a Maven build for the forge top-level project. Right-click on the forge project. Run as.. > Maven build...
-
- - On the Main tab, set Goals: clean install, set Profiles: windows-linux
-
-2. Run forge Maven build. If everything built, you should see "BUILD SUCCESS" in the Console View.
-
-The resulting snapshot will be found at: forge-gui-desktop/target/forge-gui-desktop-[version]-SNAPSHOT
-
## Card Scripting
Visit [this page](https://github.com/Card-Forge/forge/wiki/Card-scripting-API) for information on scripting.
@@ -193,3 +111,5 @@ Mobile GUI game logic utilizing [libgdx](https://libgdx.badlogicgames.com/) libr
#### forge-gui-mobile-dev
Libgdx backend for desktop development for mobile backends. Utilizes LWJGL. Relies on forge-gui-mobile for GUI logic.
+
+#### forge-installer
\ No newline at end of file
diff --git a/docs/Creating-a-custom-Card.md b/docs/Creating-a-custom-Card.md
index c3f86c6d48e..632adea9500 100644
--- a/docs/Creating-a-custom-Card.md
+++ b/docs/Creating-a-custom-Card.md
@@ -1,5 +1,7 @@
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.
+If you are trying to script cards for a new set make sure you take advantage of the [Developer Mode](Development/DevMode.md) for testing to try and contribute without any obvious bugs.
+
## File Locations
### Custom Card Scripts
diff --git a/docs/Development/DevMode.md b/docs/Development/DevMode.md
index cfd945f057e..079f94b6288 100644
--- a/docs/Development/DevMode.md
+++ b/docs/Development/DevMode.md
@@ -2,19 +2,10 @@ Developer Mode is a Mode that allows Developers to try out different
things and gain different shortcuts during play. In a Normal program,
this Mode would be available in a Debug build, but removed from the code
during the Retail build. Since Forge is in constant Beta, this Mode is
-available during our Beta releases. On the NewGame Screen, just make
-sure it's checked and you'll be able to edit the options at any point
-during the game.
+available during our Beta releases. You can turn on or off this mode at the
+Home View -> Game Settings -> Preferences -> Gameplay Options section.
-## Lose By Decking
-
-This one is a simple Checkbox. If your Library is Empty and you try to
-try a card, you normally lose the game. This checkbox should be on by
-Default (meaning you lose) but if you are running a deck without many
-cards, uncheck this box so you don't lose when failing to draw a card
-when you need to.
-
-\[THIS OPTION NOT READILY VISIBLE IN VERSIONS 1.6.23\]
+It's important to note you won't get achievements in a game once you started cheating.
## View Zone
@@ -26,8 +17,7 @@ that Zone are revealed to you.
## Generate Mana
Useful for not needing Land in your Deck while you are just trying to
-test something out, by selecting Generate Mana, 7 of each color and 7
-colorless is generated and put into your Mana Pool.
+test something out, by selecting Generate Mana, 7 of each type is generated and put into your Mana Pool.
## Setup Game State
@@ -179,5 +169,3 @@ AI hands and leaves them intact, and adds Force of Nature, Raging
Goblin, and Amulet of Kroog to the computer's graveyard. Does not
replace either library. Sets the current player to Human and the current
phase to Main 1.
-
-It's important to note you won't get achievements in a game once you started cheating.
\ No newline at end of file
diff --git a/docs/Development/Snapshots-and-Releases.md b/docs/Development/Snapshots-and-Releases.md
index d32e6e06753..5471c6e818a 100644
--- a/docs/Development/Snapshots-and-Releases.md
+++ b/docs/Development/Snapshots-and-Releases.md
@@ -40,7 +40,5 @@ It would be useful for other people to be comfortable with the release process.
* Create a PR from your branch and get it merged as quickly as you can (ideally before other PRs are merged).
* Create a new release from https://github.com/Card-Forge/forge/releases
* Upload the package and its sha to the create new release page
-
-
-4. Marketing
+5. Marketing
* Advertise in the #announcements channel in the Discord
\ No newline at end of file
diff --git a/docs/Forge-historical-reference.md b/docs/Forge-historical-reference.md
index ccee5d6bbb4..1dee1ab2e4c 100644
--- a/docs/Forge-historical-reference.md
+++ b/docs/Forge-historical-reference.md
@@ -26,6 +26,8 @@ Mostly old-style interface with new age loading screen. Initial card scripting i
Supports over 10,000 cards. We start using a reconstructed UI that allows for better theming. And makes things feel less like an "Application" and more like a "Game"
+## 2013-10 - ver 1.5.1 is the first with Commander
+
## 2014-05 - Android app is published via Maven
## 2015-04 - Network play is rudimentary but available
diff --git a/docs/User-Guide.md b/docs/User-Guide.md
index 2ded5491b81..12f4ee7d877 100644
--- a/docs/User-Guide.md
+++ b/docs/User-Guide.md
@@ -55,9 +55,8 @@ _**Download and unpack/install the package to their own new folder!**_
## 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).
+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)
@@ -87,3 +86,10 @@ Linux systems (file permission related).
- 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`
+
+# Gameplay
+
+## Full Control
+
+Right click/long tap on your player avatar:
+This feature lets you skip different helpers that streamline gameplay by avoiding somewhat annoying GUI interactions and instead use AI logic to make reasonable decisions for beginners.\nUseful for certain corner cases or if you want to challenge yourself with the Comprehensive Rules:\ne.g. the opposite cost order is needed if activating an animated "Halo Fountain" that's also tapped.
diff --git a/docs/_sidebar.md b/docs/_sidebar.md
index 02217f48480..6500df2b0a0 100644
--- a/docs/_sidebar.md
+++ b/docs/_sidebar.md
@@ -20,7 +20,7 @@
- [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)
+ - [Console and Cheats](Adventure/Console-and-Cheats.md)
- [Modding and content creation](Adventure/Modding.md)
@@ -43,12 +43,13 @@
- [Costs](Card-scripting-API/Costs.md)
- [Affected / Targets](Card-scripting-API/Targeting.md)
- [Restrictions / Conditions](Card-scripting-API/Restrictions.md)
- - [Tutorial: 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](Development/Snapshots-and-Releases.md)
- [Android Builds](Development/Android-Builds.md)
+ - [Dev Mode](Development/DevMode.md)
- [Ownership](Development/ownership.md)
- [Docker Container](docker-setup.md)
diff --git a/forge-gui-desktop/src/main/java/forge/screens/match/CMatchUI.java b/forge-gui-desktop/src/main/java/forge/screens/match/CMatchUI.java
index ba61d401ee5..f4feae157dd 100644
--- a/forge-gui-desktop/src/main/java/forge/screens/match/CMatchUI.java
+++ b/forge-gui-desktop/src/main/java/forge/screens/match/CMatchUI.java
@@ -1514,9 +1514,9 @@ public final class CMatchUI
Set controlFlags = getGameView().getGame().getPlayer(pv).getController().getFullControl();
final String lblFullControl = Localizer.getInstance().getMessage("lblFullControl");
final JPopupMenu menu = new JPopupMenu(lblFullControl);
- GuiUtils.addMenuItem(menu, lblFullControl, null, () -> {
- FOptionPane.showMessageDialog(Localizer.getInstance().getMessage("lblFullControlDetails"), lblFullControl);
- });
+ menu.add(
+ GuiUtils.createMenuItem("- " + lblFullControl + " -", null, null, false, true)
+ );
addFullControlEntry(menu, "lblChooseCostOrder", FullControlFlag.ChooseCostOrder, controlFlags);
addFullControlEntry(menu, "lblChooseCostReductionOrder", FullControlFlag.ChooseCostReductionOrderAndVariableAmount, controlFlags);
diff --git a/forge-gui-mobile/src/forge/screens/match/MatchController.java b/forge-gui-mobile/src/forge/screens/match/MatchController.java
index 510b9e5ec2d..421c2f459d3 100644
--- a/forge-gui-mobile/src/forge/screens/match/MatchController.java
+++ b/forge-gui-mobile/src/forge/screens/match/MatchController.java
@@ -68,7 +68,6 @@ import forge.toolbox.FDisplayObject;
import forge.toolbox.FOptionPane;
import forge.trackable.TrackableCollection;
import forge.util.ITriggerEvent;
-import forge.util.Localizer;
import forge.util.MessageUtil;
import forge.util.WaitCallback;
import forge.util.collect.FCollectionView;
@@ -751,10 +750,7 @@ public class MatchController extends AbstractGuiGame {
FPopupMenu menu = new FPopupMenu() {
@Override
protected void buildMenu() {
- addItem(new FMenuItem(Forge.getLocalizer().getMessage("lblFullControl"),
- e -> {
- FOptionPane.showMessageDialog(Localizer.getInstance().getMessage("lblFullControlDetails"), "Full Control details");
- }));
+ addItem(new FMenuItem("- " + Forge.getLocalizer().getMessage("lblFullControl") + " -", null, false));
addItem(getFullControlMenuEntry("lblChooseCostOrder", FullControlFlag.ChooseCostOrder, controlFlags));
addItem(getFullControlMenuEntry("lblChooseCostReductionOrder", FullControlFlag.ChooseCostReductionOrderAndVariableAmount, controlFlags));
addItem(getFullControlMenuEntry("lblNoPaymentFromManaAbility", FullControlFlag.NoPaymentFromManaAbility, controlFlags));
diff --git a/forge-gui/res/languages/de-DE.properties b/forge-gui/res/languages/de-DE.properties
index 56cbd2770a5..f29d4cd0a3d 100644
--- a/forge-gui/res/languages/de-DE.properties
+++ b/forge-gui/res/languages/de-DE.properties
@@ -1293,7 +1293,6 @@ lblMorph=Morph
lblCraft=anzahl der herzustellenden Karten
#PlayerControllerHuman.java
lblFullControl=Full Control
-lblFullControlDetails=This feature lets you skip different helpers that streamline gameplay by avoiding somewhat annoying GUI interactions and instead use AI logic to make reasonable decisions for beginners.\nUseful for certain corner cases or if you want to challenge yourself with the Comprehensive Rules:\ne.g. the opposite cost order is needed if activating an animated "Halo Fountain" that's also tapped.
lblChooseCostOrder=Choose cost order
lblChooseCostReductionOrder=Choose cost reduction order & amount
lblNoPaymentFromManaAbility=Don\'t attempt paying when generating mana
diff --git a/forge-gui/res/languages/es-ES.properties b/forge-gui/res/languages/es-ES.properties
index 663759c9bdf..9d2713cf8c8 100644
--- a/forge-gui/res/languages/es-ES.properties
+++ b/forge-gui/res/languages/es-ES.properties
@@ -1300,7 +1300,6 @@ lblMorph=Mutar
lblCraft=cuántas cartas crear
#PlayerControllerHuman.java
lblFullControl=Full Control
-lblFullControlDetails=This feature lets you skip different helpers that streamline gameplay by avoiding somewhat annoying GUI interactions and instead use AI logic to make reasonable decisions for beginners.\nUseful for certain corner cases or if you want to challenge yourself with the Comprehensive Rules:\ne.g. the opposite cost order is needed if activating an animated "Halo Fountain" that's also tapped.
lblChooseCostOrder=Choose cost order
lblChooseCostReductionOrder=Choose cost reduction order & amount
lblNoPaymentFromManaAbility=Don\'t attempt paying when generating mana
diff --git a/forge-gui/res/languages/fr-FR.properties b/forge-gui/res/languages/fr-FR.properties
index 6d1a5e71b96..9fc30c86ec2 100644
--- a/forge-gui/res/languages/fr-FR.properties
+++ b/forge-gui/res/languages/fr-FR.properties
@@ -1294,7 +1294,6 @@ lblMorph=Morph
lblCraft=combien de cartes créer
#PlayerControllerHuman.java
lblFullControl=Full Control
-lblFullControlDetails=This feature lets you skip different helpers that streamline gameplay by avoiding somewhat annoying GUI interactions and instead use AI logic to make reasonable decisions for beginners.\nUseful for certain corner cases or if you want to challenge yourself with the Comprehensive Rules:\ne.g. the opposite cost order is needed if activating an animated "Halo Fountain" that's also tapped.
lblChooseCostOrder=Choose cost order
lblChooseCostReductionOrder=Choose cost reduction order & amount
lblNoPaymentFromManaAbility=Don\'t attempt paying when generating mana
diff --git a/forge-gui/res/languages/it-IT.properties b/forge-gui/res/languages/it-IT.properties
index f95f2d0c3e1..5568ee03cb2 100644
--- a/forge-gui/res/languages/it-IT.properties
+++ b/forge-gui/res/languages/it-IT.properties
@@ -1291,7 +1291,6 @@ lblMorph=Metamorfosi
lblCraft=quante carte creare
#PlayerControllerHuman.java
lblFullControl=Full Control
-lblFullControlDetails=This feature lets you skip different helpers that streamline gameplay by avoiding somewhat annoying GUI interactions and instead use AI logic to make reasonable decisions for beginners.\nUseful for certain corner cases or if you want to challenge yourself with the Comprehensive Rules:\ne.g. the opposite cost order is needed if activating an animated "Halo Fountain" that's also tapped.
lblChooseCostOrder=Choose cost order
lblChooseCostReductionOrder=Choose cost reduction order & amount
lblNoPaymentFromManaAbility=Don\'t attempt paying when generating mana
diff --git a/forge-gui/res/languages/ja-JP.properties b/forge-gui/res/languages/ja-JP.properties
index 471d530fa74..23aa4183dbd 100644
--- a/forge-gui/res/languages/ja-JP.properties
+++ b/forge-gui/res/languages/ja-JP.properties
@@ -1293,7 +1293,6 @@ lblMorph=変異
lblCraft=カードを何枚作成するか
#PlayerControllerHuman.java
lblFullControl=Full Control
-lblFullControlDetails=This feature lets you skip different helpers that streamline gameplay by avoiding somewhat annoying GUI interactions and instead use AI logic to make reasonable decisions for beginners.\nUseful for certain corner cases or if you want to challenge yourself with the Comprehensive Rules:\ne.g. the opposite cost order is needed if activating an animated "Halo Fountain" that's also tapped.
lblChooseCostOrder=Choose cost order
lblChooseCostReductionOrder=Choose cost reduction order & amount
lblNoPaymentFromManaAbility=Don\'t attempt paying when generating mana
diff --git a/forge-gui/res/languages/pt-BR.properties b/forge-gui/res/languages/pt-BR.properties
index 1386999433d..39dc596dcfc 100644
--- a/forge-gui/res/languages/pt-BR.properties
+++ b/forge-gui/res/languages/pt-BR.properties
@@ -1320,7 +1320,6 @@ lblMorph=Metamorfose
lblCraft=quantas cartas criar
#PlayerControllerHuman.java
lblFullControl=Full Control
-lblFullControlDetails=This feature lets you skip different helpers that streamline gameplay by avoiding somewhat annoying GUI interactions and instead use AI logic to make reasonable decisions for beginners.\nUseful for certain corner cases or if you want to challenge yourself with the Comprehensive Rules:\ne.g. the opposite cost order is needed if activating an animated "Halo Fountain" that's also tapped.
lblChooseCostOrder=Choose cost order
lblChooseCostReductionOrder=Choose cost reduction order & amount
lblNoPaymentFromManaAbility=Don\'t attempt paying when generating mana
diff --git a/forge-gui/res/languages/zh-CN.properties b/forge-gui/res/languages/zh-CN.properties
index b1d79ab5f0f..d8c5e13af47 100644
--- a/forge-gui/res/languages/zh-CN.properties
+++ b/forge-gui/res/languages/zh-CN.properties
@@ -1297,7 +1297,6 @@ lblMorph=变身
lblCraft=需要制作多少张卡片
#PlayerControllerHuman.java
lblFullControl=Full Control
-lblFullControlDetails=This feature lets you skip different helpers that streamline gameplay by avoiding somewhat annoying GUI interactions and instead use AI logic to make reasonable decisions for beginners.\nUseful for certain corner cases or if you want to challenge yourself with the Comprehensive Rules:\ne.g. the opposite cost order is needed if activating an animated "Halo Fountain" that's also tapped.
lblChooseCostOrder=Choose cost order
lblChooseCostReductionOrder=Choose cost reduction order & amount
lblNoPaymentFromManaAbility=Don\'t attempt paying when generating mana