level 7
我用偶数萨的时候
发现兄弟 用阴燃电鳗的优先级很小。有时空场下222沙暴元素都不下电鳗。
所以我就打开电鳗的SIM看了一下 发现有一段好像是写惩罚值的。
想问一下。既然惩罚值写SIM里是可行的 为什么一定要写在PenalityManager.cs里?
写在SIM里有什么坏处呢
2021年04月20日 08点04分
1
level 7
using System;
using System.Collections.Generic;
using System.Text;
namespace HREngine.Bots
{
class Sim_GIL_530 : SimTemplate //* 阴燃电鳗 Murkspark Eel
{
//<b>Battlecry:</b> If your deck has only even-Cost cards, deal_2 damage.
public override void getBattlecryEffect(Playfield p, Minion own, Minion target, int choice)
{
if (target != null)
{
int damage = 2;
p.minionGetDamageOrHeal(target, damage);
if (p.enemyMinions.Count == 0 && !p.isLethalCheck)
{
p.evaluatePenality += 20;
}
}
}
}
}
2021年04月20日 08点04分
2
电鳗是我下载的策略里自带的 ,应该是以前的大佬写的SIM。
2021年04月20日 08点04分
level 7
if (p.enemyMinions.Count == 0 && !p.isLethalCheck)
{
p.evaluatePenality += 20;
}
我感觉这段写的意思是 对面场上没怪 。这张牌-20分 。
2021年04月20日 08点04分
3
对面场上没怪,同时没有达到斩杀线。
2021年04月20日 09点04分
level 7
感觉写在PenalityManager.cs里很麻烦 得找卡牌名字 。
直接写在SIM里 打开这张卡的SIM就能知道兄弟会不会用这张牌。
2021年04月20日 09点04分
4
level 7
打个比方,你要买一瓶酱油,在楼下便利店买,去酱油专卖店买或者去超市买,都能买到,至于哪个方便可能根据不同的情况结果也不同。回到代码这哪里方便的问题,你觉得写sim里方便,我却觉得到10000个SIM文件里去找到对应的sim很麻烦,反而在manager里Ctrl+f搜一下卡牌名字更方便。当然这只是我觉得,你也可以都写到sim里去。
2021年04月20日 09点04分
5
也正是因为这个原因,没有一个统一的规范,所以现在的策略代码一团乱麻,特别是还有些完全错误的逻辑,藏在各种你想不到角落里,真的心累。
2021年04月20日 09点04分
@☞貼巴大神☜ 意思是写哪里都一样是吧。我感觉还是写SIM里更直观啊 卡牌效果和用法都写SIM文件里 。一目了然啊
2021年04月20日 09点04分
@ssy89757 可能因为写在sim里很难跨卡牌(跨sim)配合,有的惩罚是多张卡配合的
2021年04月20日 09点04分
@ssy89757 效果上是一样的,前提是你sim里别用错函数。你的图上那个惩罚字段就是最终各种惩罚全部加总的值,所以你直接改他的效果和manager里写是一样的。
2021年04月20日 14点04分
level 12
没区别。5楼说的很对。最后都是在playfield里面加在一起了。
2021年04月20日 09点04分
6
实际上如果偏要写惩罚,我比较推荐你的写法。pm文件中更建议写的是那种总体性的惩罚。
2021年04月20日 09点04分