【PC游戏】杀戮尖塔basemod百科翻译(1)


3楼猫 发布时间:2023-03-10 00:31:00 作者:区区一个呆唯__ Language

前言:出于开发mod的需要,笔者打算翻译一下杀戮尖塔basemod的使用教程。希望各位盒友能督促我尽快完成翻译工作。对开发杀戮尖塔mod有兴趣或者有相关经验的盒友可以在评论区评论或者私信我。笔者能力尚且不足,如有错误请指正。


本文包含:

basemod wiki介绍

自定义卡牌

正文如下:

-----------------------------------

介绍

欢迎访问Basemod 百科!

这个百科是为方便使用模组的玩家查找安装步骤/指南和帮助模组制作者熟知一些basemod模组API并查看一些如何添加内容到游戏中一些代码实例而设计的。

什么是BaseMod?

BaseMod是一个杀戮尖塔的模组API。

它允许模组制作者更加简单地接入基本游戏功能,而不是必须通过单调的过程来创建大量的字节码补丁。

它支持以下内容:

1.添加自定义遗物

2.添加自定义卡牌(包括新的卡牌颜色)

3.添加自定义角色类

4.添加自定义药水

5.添加自定义事件

6.添加自定义怪物

我们未来的计划是扩展这个API,使它能包含游戏的更多部分。

目前还有一些插件接口问题要解决:

1.抽牌

2.消耗牌

3.游戏执行中很多不同的部分,例如:战斗结束时,游戏开始前,等等…

浏览这篇百科以了解BaseMod提供的具体细节。

-----------------------------------

自定义卡牌

自定义卡牌构造函数

CustomCard(String id, String name, String img, int cost, String rawDescription, CardType type, CardColor color, CardRarity rarity, CardTarget target)

  • id - 卡牌编号
  • name - 卡牌名称
  • img - 卡牌图片路径 (图片路径在你的根目录) (250px x 190px); 你的大版本(应该指的就是右键卡牌时看到的大图)图片路径 (500 x 380p) 应该是 img + "_p" 因此如果图片命名为 "my_card.png" 然后大图查看版本应该命名为"my_card_p.png". 在测试版画风中, 文件应该命名为 "my_card_b.png" 以及大图查看版应该命名为"my_card_b_p.png".
  • cost - 卡牌的能量消耗
  • rawDescription - 卡牌的描述文字
  • type - 卡牌的类型, 例如ATTACK(攻击), SKILL(技能), POWER(能力)
  • color - 卡牌颜色; 游戏基本颜色设定是 RED, GREEN, COLORLESS, CURSE, STATUS 不过你也能使用自定义颜色
  • rarity - 卡牌稀有度, 例如COMMON(普通), UNCOMMON(罕见), RARE(稀有)
  • target - 卡牌的目标类型, 例如 does it target ENEMY(是否瞄准敌人), ALL_ENEMIES(所有敌人), SELF(自身), 等等…

自定义卡牌贴图

下面的方法可以在构造函数中调用,然而,以后如果你想改变纹理,可以在任何时候调用这些方法。

卡牌背景

setBackgroundTexture(String smallTexturePath, String largeTexturePath)

  • smallTexturePath - 贴图路径 (512 x 512p).
  • largeTexturePath - 查看视图贴图路径 (1024 x 1024p).

卡牌能量球

setOrbTexture(String smallTexturePath, String largeTexturePath)

  • smallTexturePath - 能量球贴图路径 (512 x 512p).
  • largeTexturePath - 能量球查看视图贴图路径(164 x 164p).

卡牌稀有度横幅

setBannerTexture(String smallTexturePath, String largeTexturePath)

  • smallTexturePath - 贴图路径 (512 x 512p).
  • largeTexturePath - 查看视图贴图路径 (1024 x 1024p).

注册(卡牌)

为了使用下面的方法来添加和删除卡牌,你必须在你的主模组文件里实现EditCardsSubscriber方法,然后重载receiveEditCards方法。

在该方法中,你需要添加或删除卡牌。

  • BaseMod.addCard(AbstractCard card)(注:CustomCard 继承AbstractCard)
  • BaseMod.removeCard(AbstractCard card) 从游戏中删除一张卡(注:删除一张事件中使用的卡牌是目前未测试/未定义的行为)

自定义卡牌的例子

假设你想要创建一张卡牌,叫做Flare,它未升级的时候能对一名敌人造成3点伤害,给予1层易伤(不如闪电霹雳),升级后,对一名敌人造成6点伤害,给予2层易伤。(小痛击)。

如果这张卡是红色的,并且把图片放在你的jar文件的img/my_card_img.png路径下,下面的代码将创建这张卡:

-----------------------------------

import com.megacrit.cardcrawl.actions.AbstractGameAction;

import com.megacrit.cardcrawl.actions.common.ApplyPowerAction;

import com.megacrit.cardcrawl.cards.AbstractCard;

import com.megacrit.cardcrawl.cards.DamageInfo;

import com.megacrit.cardcrawl.characters.AbstractPlayer;

import com.megacrit.cardcrawl.dungeons.AbstractDungeon;

import com.megacrit.cardcrawl.monsters.AbstractMonster;

import com.megacrit.cardcrawl.powers.VulnerablePower;


import basemod.abstracts.CustomCard;

//创建Flare的对象,继承CustomCard抽象类

public class Flare

extends CustomCard {

    public static final String ID = "myModID:Flare";

    private static CardStrings cardStrings = CardCrawlGame.languagePack.getCardStrings(ID);

    // 获取包含在游戏中显示的字符串的对象。

    public static final String NAME = cardStrings.NAME;

    public static final String DESCRIPTION = cardStrings.DESCRIPTION;

    public static final String IMG_PATH = "img/my_card_img.png";

//卡牌费用

    private static final int COST = 0;

//卡牌基础伤害

    private static final int ATTACK_DMG = 3;

//升级后增加的伤害

    private static final int UPGRADE_PLUS_DMG = 3;

//易伤层数

    private static final int VULNERABLE_AMT = 1;

//升级后增加的易伤层数

    private static final int UPGRADE_PLUS_VULNERABLE = 1;

//调用父类的有参构造,传递参数,之前有介绍过

    public Flare() {

        super(ID, NAME, IMG_PATH, COST, DESCRIPTION,

          AbstractCard.CardType.ATTACK, AbstractCard.CardColor.RED,

          AbstractCard.CardRarity.UNCOMMON, AbstractCard.CardTarget.ENEMY);

        this.magicNumber = this.baseMagicNumber = VULNERABLE_AMT;

        this.damage=this.baseDamage = ATTACK_DMG;

        

//添加背景图片        this.setBackgroundTexture("img/custom_background_small.png", "img/custom_background_large.png");


//添加能量球图片        this.setOrbTexture("img/custom_orb_small.png", "img/custom_orb_large.png");


//添加稀有度横幅图片        this.setBannerTexture("img/custom_banner_large.png", "img/custom_banner_large.png");

    }

//使用卡牌时触发的动作,包括伤害逻辑,而且造成伤害的代码一般是写在方法末尾的,所以有“动作优先于伤害”的说法

    @Override

    public void use(AbstractPlayer p, AbstractMonster m) {

     AbstractDungeon.actionManager.addToBottom(new com.megacrit.cardcrawl.actions.common.DamageAction(m,

    new DamageInfo(p, this.damage, this.damageTypeForTurn),

    AbstractGameAction.AttackEffect.SLASH_DIAGONAL));

     AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(m, p, new VulnerablePower(m, this.magicNumber, false), this.magicNumber, true, AbstractGameAction.AttackEffect.NONE));

    }

//复制卡牌后获得一张新的卡牌,举个例子,初始卡牌就是通过makeCopy方法被复制进牌库的

    @Override

    public AbstractCard makeCopy() {

        return new Flare();

    }

//升级卡牌的名称修改,假设敲一张“打击”,就会变成“打击+”

    @Override

    public void upgrade() {

        if (!this.upgraded) {

            this.upgradeName();

 //升级伤害增加值           this.upgradeDamage(UPGRADE_PLUS_DMG);

 //升级其他属性增加值           this.upgradeMagicNumber(UPGRADE_PLUS_VULNERABLE);

        }

    }

}

-----------------------------------

查看视图注意事项

在百科大全的卡牌总览界面上有一个查看视图,它会显示你的卡的更大版本。通过在名称中添加_p,能根据原始图像位置自动找到它。这张贴图的大小应该是500px x 380px。更改名称的一个例子是img/my_card.png变成img/my_card_p.png。

 #杀戮尖塔#   #翻译#  #mod# 

参考链接:

https://github.com/daviscook477/BaseMod

https://github.com/daviscook477/BaseMod/wiki/Custom-Cards


© 2022 3楼猫 下载APP 站点地图 广告合作:asmrly666@gmail.com