In diesem Kapitel werden die folgenden Methoden unter Angabe des Quellcodes erläutert.
Wenn Sie das gesamte Bild jeder Datei sehen möchten, lesen Sie bitte Folgendes.
https://github.com/kojim/StSModStudy/tree/master/mod001
ModTheSpire.json
{
"modid": "StsModStudy",
"name": "StsModStudy",
"author_list": ["ykojim"],
"description": "",
"version": "0.0.1",
"sts_version": "01-11-2019",
"mts_version": "3.7.0",
"dependencies": ["basemod", "stslib"],
"update_json": ""
}
Es ist fast so, wie du es gesehen hast. Das Modid muss eindeutig sein, geben Sie ihm also einen Namen, der sich nicht mit anderen überschneidet.
@SpireInitializer
public class Main implements
EditCardsSubscriber, //Implementieren Sie beim Hinzufügen einer Karte
EditStringsSubscriber //Implementieren Sie beim Lesen einer Sprachdatei
{
public Main(){
BaseMod.subscribe(this);
}
// @Mit SpireInitializer qualifizierte Klassen müssen diese Methode definieren
public static void initialize() {
Main main = new Main();
}
@Override
public void receiveEditStrings() {
//Fügen Sie Ihre eigene definierte Sprachdatei hinzu
// Settings.JPN für Sprache,ENG ist in Englisch enthalten
BaseMod.loadCustomStringsFile(CardStrings.class, "assets/loc/cards-" + Settings.language + ".json");
}
@Override
public void receiveEditCards() {
//Fügen Sie Ihre eigene definierte Karte hinzu
BaseMod.addCard(new Flare());
}
}
@spireinitializer
Die mit der Annotation qualifizierte Klasse ist die Einstiegspunktklasse.
Hier aktivieren wir jede eindeutig definierte Sprachdatei und Karte.
Bitte beachten Sie, dass sich die zu implementierende Schnittstelle je nach dem, was Sie erreichen möchten, ändert.
Beachten Sie auch, dass die Methode `` `initialize``` erforderlich ist.
//Karten werden durch Erben der CustomCard-Klasse definiert
public class Flare extends CustomCard {
public static final String ID = "stsmodstudy:Flare";
//Karten, die in der Hauptklasse mit getCardStrings gelesen wurden-JPN.Abrufen von Zeichenfolgeninformationen in json
private static CardStrings cardStrings = CardCrawlGame.languagePack.getCardStrings(ID);
public static final String NAME = cardStrings.NAME;
public static final String DESCRIPTION = cardStrings.DESCRIPTION;
Sie können Ihre eigene Karte definieren, indem Sie eine Klasse definieren, die die CustomCard-Klasse erbt.
Da die Zeichenfolgendaten, die der Benutzer sehen kann, internationalisiert werden müssen, werden sie in der Sprachdatei und nicht in dieser Klasse definiert. Hier wird nur der Schlüssel `` `stsmodstudy: Flare``` definiert, um die Informationen aus der Sprachdatei abzurufen.
Es ist eine gute Praxis, das Modid vor und den Kartennamen danach zu setzen.
```java
//Effekt bei Verwendung einer Karte aktiviert
@Override
public void use(AbstractPlayer p, AbstractMonster m) {
//Schaden verursachen
AbstractDungeon.actionManager.addToBottom(
new com.megacrit.cardcrawl.actions.common.DamageAction(
m,
new DamageInfo(p, this.damage, this.damageTypeForTurn),
AbstractGameAction.AttackEffect.SLASH_DIAGONAL) //Bildschirmeffekt
);
//Machen Sie eine Sicherheitslücke
AbstractDungeon.actionManager.addToBottom(
new ApplyPowerAction( //Polieren/Alle Debuffs werden intern als Power behandelt
m,
p,
new VulnerablePower(m, this.magicNumber, false), //Verletzlich(=Feind)Zu
this.magicNumber,
true,
AbstractGameAction.AttackEffect.NONE) //Bildschirmeffekt
);
}
Diese Methode ist der Schlüssel Nummer eins auf der Karte. Wenn Sie das Spiel gespielt haben, wissen Sie wahrscheinlich, dass dieses Spiel auf einem Modell basiert, bei dem die Auswirkungen der Verwendung von Karten in einem Stapel gestapelt und nacheinander verarbeitet werden.
AbstractDungeon.Durch Aufrufen jeder Methode von actionManager wird die Verarbeitung zum Stapel hinzugefügt.
Hier geben wir Schaden und Schwächung.
# Sprachdatei
```json
{
"stsmodstudy:Flare": {
"NAME": "56 Krieger",
"DESCRIPTION": "!D!Schaden verursachen"
}
}
Definiert die Sprachinformationen der Karte.
name
Ist der Kartenname,description
Ist die Erklärung des Karteneffekts.
description
Im!d!
!b!
!m!
Jeder hat eine besondere Bedeutung.
!d!
Ist eine Kartenklassedamage
basedamage
upgradeddamage
Variable,
!b!
Ist eine Kartenklasseblock
baseblock
upgradedblock
Variable,
!m!
Ist eine Kartenklassemagicnumber
basemagicnumber
upgradedmagicnumber
Es wird je nach Situation in Variablen erweitert.
Recommended Posts