pcr_scrimmage icon indicating copy to clipboard operation
pcr_scrimmage copied to clipboard

一些更新建议以及请教

Open oplaaa opened this issue 3 years ago • 83 comments

首先十分感谢写出来这么一个精彩的小游戏,就以目前原版所拥有的人物来说,我这边实际测试后对平衡有以下几点建议: 1.实际游玩过后感觉黑猫的格林爆裂威力过大了,后来修改为150+1.5x后好一些 2.佩可得公主突袭所提供得防御力过于强大,实际测试情况下近乎无敌,个人建议将防御力加成减少为80 3.由于随着回合增加人物得攻击距离增加,后期得佩可几乎可以突袭全场,个人觉得要不随着回合人物攻击距离增加得这项去除或者增加上限为3是否更好呢? 4.镜华的UB需要大量的tp,以至于一整局下来可能就只能放1-2个,而只有50的基础威力即使有2.5倍加成,仍然十分微弱,可能需要提升到80-100会更好点?另外镜华UB字面写的是无视距离,实际使用的时候却是有限的,后来我将EFFECT_IGNORE_DIST参数改为999后才变为了无视距离。 5.UE的花瓣攻击对攻击和TP下降的量有些过微,和技能消耗有点不平等,我实际改为双下降20后UE现得作用大了些。

另一方面有几个想法想提一下,可能需要大佬掉些头发进行开发了,感谢: 1.如果想写类似女仆这种,技能效果有判定的,这方面该如何编写呢? 2.想写自动触发的被动技能(例如中二生命低于20%会自爆这种),这种是否有办法实现呢? 3.想写类似511的那种,在一定回合内对自己大幅增幅甚至改用第二组技能组的角色,是否有可能?

最后分享两个自己仿写的角色,和群里人游玩试验后感觉比较公平的,再次感谢大佬的付出给我们带来如此快乐!

1022:{
	"name":"依里",
	"health":800,
	"distance":10,
	"attack":120,
	"defensive":50,
	"tp":0,


	"active_skills" : [
		{
			"name":"极限充能",
			"text":"消耗自身80HP提高50攻击力,并自身回复30TP",
			"tp_cost":0,
			"trigger": TRIGGER_ME,
			"passive":[],

			"effect":{
				EFFECT_TP: 30,
				EFFECT_ATTACK: 50,
				EFFECT_HEALTH:(-80, 0, True)
			}
		},
		{
			"name":"闪电之枪",
			"text":"对目标及其半径4范围内的除开自己的玩家造成150(+1.5攻击力)伤害",
			"tp_cost":70,
			"trigger": TRIGGER_SELECT,
			"passive":[],

			"effect":{
				EFFECT_AOE:(4, False),
				EFFECT_HEALTH:(-150, 1.5, False)
			}
		}
	],
	"passive_skills": []
},

1038:{
	"name":"栞",
	"health":750,
	"distance":15,
	"attack":80,
	"defensive":60,
	"tp":10,

	"active_skills" : [
		{
			"name":"风之箭",
			"text":"对目标造成60(+1.0攻击力)伤害,并自身回复30tp",
			"tp_cost":0,
			"trigger": TRIGGER_SELECT,
			"passive":[0],

			"effect":{
				EFFECT_HEALTH:(-60, 1.0, False)
			}
		},
		{
			"name":"附魔之箭",
			"text":"对目标造成100(+1.5攻击力)伤害,并提升自身60攻击力",
			"tp_cost":80,
			"trigger": TRIGGER_SELECT,
			"passive":[1],

			"effect":{
				EFFECT_HEALTH:(-100, 1.5, False)
			}
		}
	],
	"passive_skills": [
			{
			"trigger": TRIGGER_ME,
			"effect":{
				EFFECT_TP:30
				}
			},
			{
			"trigger": TRIGGER_ME,
			"effect":{
				EFFECT_ATTACK: 60
				}
			}
	]
}

oplaaa avatar Sep 09 '21 09:09 oplaaa

很感谢喜欢我做的这个小游戏,看见有人写了这么长的issues,我很感动 ≧ ﹏ ≦ 1~2、关于角色数值问题,这我必须承认我数值做得很烂,很多东西都考虑得不太周全,只能看群友反馈慢慢改进了 3、关于攻击距离随回合提升的机制,如果没有这个机制,长手角色会非常恐怖,短手角色运气不好的话有可能根本碰不到长手角色,只能被风筝。不过可以考虑给每个角色都独立一个攻击距离上限,目前是统一为15。 4、数值问题就先不说了_(:з)∠)_,xcw无视距离那个可能是bug,这得查一下。个人猜测是值为0的时候判断有问题。 5、数值问题就先不说了_(:з)∠)_

看起来是新机制 1、女仆那种概率触发的机制感觉有点复杂,得研究下。 2、像中二那种自动触发感觉也有点复杂,如果是作为技能的话,不在自己的回合触发技能这种情况从来没考虑过,也需要研究下。。 3、这种就是buff技能嘛,我鸽了好久了_(:з)∠)_ 。如果要换技能组,还是有点复杂,还是得研究研究。。

好久没摸过这里的代码了,下周摸鱼的时候整一下这些新机制。看见有人喜欢这个游戏,就有动力继续整了 (╯▽╰ )

eggggi avatar Sep 09 '21 10:09 eggggi

关于女仆技能那种随机触发的,我原本的想法是在使用技能开始的时候导入一个random.random,类似于如下 if random.random() < 0.33: "effect":{ EFFECT_HEALTH:(-100, 1.5, False) } else: "effect":{ EFFECT_HEALTH:(-50, 0.5, False) 类似这样效果的,但这个实际加入role中肯定是不行的,毕竟没有相关的定义,而我本人其实学艺不精,只能看大佬研究下了,我也只是提供下思路。 关于中二的自动触发,我的思路是根据一个判定条件,如果符合条件的话就中断其他进程改为跑这个进程,不知是否可行? 关于511那种buff,我也没太大相关想法,只能靠大佬了

另外后来又有几个小想法想提一下: 1.关于创建大乱斗后的准备时间倒计时,目前来说准备时间超时了强制结束了也不会有提示,导致有时候不清楚是否超时,如果要添加一个超时提醒结束(包括类似选角色超时提醒结束,丢骰子超时提醒跳过玩家之类的),这种该如何修改呢? 2.如果想做一个随机数值的伤害技能(比如造成了1-100x1.5攻击力的伤害这种),该如何修改呢? 3.有可能做类似根据角色剩余血量造成伤害,或者根据对方玩家剩余tp造成回复血量,类似这种技能吗?

(想了想如果这些问题都解决了好像大佬自己都能去开发个小RPG游戏了2333)

oplaaa avatar Sep 10 '21 02:09 oplaaa

噢忘了一点,另外有可能做出类似眩晕之类的debuff吗? 不过这个想想就已经觉得特别复杂了Orz

oplaaa avatar Sep 10 '21 02:09 oplaaa

你说的那些效果我都有思路去实现,只是在现有框架下实现起来比较麻烦。原本我做这个游戏的出发点就是小、精简、快速,如果机制太多太复杂,就不够小不够精简了。 不过我还是有意向去加入buff机制的,在角色类加一个容器,用来存放(buff效果,持续回合,数值),然后再加个每回合处理buff效果的成员函数即可。

1、创建超时结束提醒我记得我是有做的,不知道是没触发还是有bug。。如果游戏已开始,有玩家超时是直接判负的,然后直接到下一位玩家,不过这个我测试得比较少,可能不够完善。 2、这种随机数值的伤害其实不是很必要,现在很多游戏都没有这种机制,pcr也是这样,这个我应该不会去做 3、这种就是加成方式的问题了,我在另一个issues提到过。目前的加成是固定在自身的攻击力,如果要改成根据自身其它数值或者是目标玩家的数值来加成,还是比较复杂的,依旧要研究下_(:з)∠)_ 不瞒你说,其实我就是某mmorpg的服务端开发。。

eggggi avatar Sep 10 '21 03:09 eggggi

创建超时结束提醒我这边确实一直没有,估计是bug了,下面是超时报错的代码,看起来应该是触发了,但是最后发出 [2021-09-10 14:35:59,411 pcr_scrimmage] ERROR: <class 'ValueError'> occured when game_create handling message -1727966159. [2021-09-10 14:35:59,412 pcr_scrimmage] ERROR: list.remove(x): x not in list Traceback (most recent call last): File "C:\Users\Administrator\Desktop\HoshinoBot\hoshino\msghandler.py", line 28, in handle_message await sf.func(bot, event) File "C:\Users\Administrator\Desktop\HoshinoBot\hoshino\service.py", line 217, in wrapper return await func(bot, event) File "C:\Users\Administrator\Desktop\HoshinoBot\hoshino\modules\pcr_scrimmage\pcr_scrimmage.py", line 1076, in game_create await scrimmage.PlayerStageTimer(gid, bot, ev) #玩家阶段计时器 File "C:\Users\Administrator\Desktop\HoshinoBot\hoshino\modules\pcr_scrimmage\pcr_scrimmage.py", line 433, in PlayerStageTimer self.outDispose(now_turn_player) File "C:\Users\Administrator\Desktop\HoshinoBot\hoshino\modules\pcr_scrimmage\pcr_scrimmage.py", line 480, in outDispose self.now_playing_players.remove(player.user_id) ValueError: list.remove(x): x not in list [2021-09-10 14:35:59,412 nonebot] INFO: Message -1727966159 is ignored

oplaaa avatar Sep 10 '21 06:09 oplaaa

创建超时结束提醒我这边确实一直没有,估计是bug了,下面是超时报错的代码,看起来应该是触发了,但是最后发出 [2021-09-10 14:35:59,411 pcr_scrimmage] ERROR: <class 'ValueError'> occured when game_create handling message -1727966159. [2021-09-10 14:35:59,412 pcr_scrimmage] ERROR: list.remove(x): x not in list Traceback (most recent call last): File "C:\Users\Administrator\Desktop\HoshinoBot\hoshino\msghandler.py", line 28, in handle_message await sf.func(bot, event) File "C:\Users\Administrator\Desktop\HoshinoBot\hoshino\service.py", line 217, in wrapper return await func(bot, event) File "C:\Users\Administrator\Desktop\HoshinoBot\hoshino\modules\pcr_scrimmage\pcr_scrimmage.py", line 1076, in game_create await scrimmage.PlayerStageTimer(gid, bot, ev) #玩家阶段计时器 File "C:\Users\Administrator\Desktop\HoshinoBot\hoshino\modules\pcr_scrimmage\pcr_scrimmage.py", line 433, in PlayerStageTimer self.outDispose(now_turn_player) File "C:\Users\Administrator\Desktop\HoshinoBot\hoshino\modules\pcr_scrimmage\pcr_scrimmage.py", line 480, in outDispose self.now_playing_players.remove(player.user_id) ValueError: list.remove(x): x not in list [2021-09-10 14:35:59,412 nonebot] INFO: Message -1727966159 is ignored

找到问题了,是我之前把单个玩家的计时器放错地方了,我本地改了但没上传GitHub_(:з)∠)_ 现在已经修复了,可以更新下 现在不管是创建超时提醒还是玩家回合超时提醒都正常了

eggggi avatar Sep 10 '21 08:09 eggggi

感谢修复,测试后超时相关已经没有问题了,目前有一个新的想法,想尝试下是否能实想: 想试着做一个类似黄骑单奶那种,可以指定他人,也可以指定自己的技能,从我的想法来说,是否可以再复制一份skillTrigger然后去除 if goal_player_obj == use_skill_player: return RET_ERROR, '不能选择自己' 这一栏来实现呢?

oplaaa avatar Sep 14 '21 06:09 oplaaa

感谢修复,测试后超时相关已经没有问题了,目前有一个新的想法,想尝试下是否能实想: 想试着做一个类似黄骑单奶那种,可以指定他人,也可以指定自己的技能,从我的想法来说,是否可以再复制一份skillTrigger然后去除 if goal_player_obj == use_skill_player: return RET_ERROR, '不能选择自己' 这一栏来实现呢?

可以的,这个我记下了,后续会加进去。 目前我已经在做一个大改动。buff机制、全新的属性机制,可选择 伤害/回复 加成的属性和对象、还有一些新的技能效果(斩杀、生命偷取),role.py会有一定的改动,预计明天可以搞定,你可以等我明天上传后再研究下_(:з)∠)_ (之前的属性机制太烂了,很多地方限制得很死,小重构一下属性机制,可扩展性更强了)

eggggi avatar Sep 14 '21 07:09 eggggi

大佬太强了!,另外这个我自己修改刚刚成了2333,不过看接下来因为要大量改动,不知道再提供这段代码是否会有所帮助

大概就是额外添加了TRIGGER_SELECT_ALL这一栏

	if skill_trigger == TRIGGER_SELECT:				#选择触发对象
		if goal_player_id > 0:
			goal_player_obj = self.getPlayerObj(goal_player_id)
			if not goal_player_obj:
				return RET_ERROR, '目标不在房间里'
			if goal_player_obj.now_stage == NOW_STAGE_OUT:
				return RET_ERROR, '目标已出局'
			if goal_player_obj == use_skill_player:
				return RET_ERROR, '不能选择自己'

	if skill_trigger == TRIGGER_SELECT_ALL:				#选择触发对象
		if goal_player_id > 0:
			goal_player_obj = self.getPlayerObj(goal_player_id)
			if not goal_player_obj:
				return RET_ERROR, '目标不在房间里'
			if goal_player_obj.now_stage == NOW_STAGE_OUT:
				return RET_ERROR, '目标已出局'

oplaaa avatar Sep 14 '21 07:09 oplaaa

再问一下,我看目前role.py和pcr_scrimmage.py中所说的EFFECT_IGNORE_DIST需放在被动中使用,但目前代码里的镜华的ub中的EFFECT_IGNORE_DIST在effect栏目中,可能这就是镜华ub不能无视距离的原因?另外如果放在被动中的话,这个作用的trigger应该用哪个呢?

oplaaa avatar Sep 15 '21 07:09 oplaaa

再问一下,我看目前role.py和pcr_scrimmage.py中所说的EFFECT_IGNORE_DIST需放在被动中使用,但目前代码里的镜华的ub中的EFFECT_IGNORE_DIST在effect栏目中,可能这就是镜华ub不能无视距离的原因?另外如果放在被动中的话,这个作用的trigger应该用哪个呢?

是的,我检查了一下,是我把xcw技能的无视距离放错地方了QAQ。trigger直接和原技能一样即可,TRIGGER_SELECT。 船新版本很快搞完了,我再稍微完善下就可以上传了_(:з)∠)_

eggggi avatar Sep 15 '21 08:09 eggggi

更新提交了,可以去栞栞_(:з)∠)_

eggggi avatar Sep 15 '21 09:09 eggggi

更新提交了,可以去栞栞_(:з)∠)_

看到啦,已经在对着修改之前自己创建的角色了

oplaaa avatar Sep 15 '21 09:09 oplaaa

有个疑问: EFFECT_HURT = "hurt" #造成伤害 tuple元组 (数值,加成类型,加成的数值对象,加成比例,是否为真实伤害) #加成类型:attr.py , 为0时无加成; 加成的数值对象:0自己 1目标 这个加成数值的对象,0自己1目标,意思是如果为1可以以目标的数值来为自己加成吗? 例如根据对方攻击力提升这次伤害? 不知这样理解对不对

oplaaa avatar Sep 16 '21 03:09 oplaaa

另外一个疑问,说实话应该和上面的合并在一起,但是是修改途中发现的 EFFECT_ATTR_CHANGE = "attr"#属性改变,正数为增加,负数为减少 tuple元组 (属性类型,数值,加成类型,加成比例) #属性类型/加成类型:attr.py , 为0时无加成 目前像这种加成,意思是可以根据其他属性按百分比加成了吗?例如根据当前防御的20%增加攻击? 另外如果是按当前攻击增加比例的攻击的话,这个当前攻击是加上了tuple数值里的还是没加前的呢? 这个加成比例是填小数吗?

oplaaa avatar Sep 16 '21 03:09 oplaaa

有个疑问: EFFECT_HURT = "hurt" #造成伤害 tuple元组 (数值,加成类型,加成的数值对象,加成比例,是否为真实伤害) #加成类型:attr.py , 为0时无加成; 加成的数值对象:0自己 1目标 这个加成数值的对象,0自己1目标,意思是如果为1可以以目标的数值来为自己加成吗? 例如根据对方攻击力提升这次伤害? 不知这样理解对不对

对的,可以设计一个对方的攻击力越高我打他的伤害越高的技能。 现在属性加成可以选择其它属性进行加成,可以看看我改过后的佩可饭团。 加成比例都是小数。

eggggi avatar Sep 16 '21 04:09 eggggi

目前出了个问题,启动后报错如下 [2021-09-16 13:04:37,477 nonebot] ERROR: Failed to import "hoshino.modules.pcr_scrimmage.pcr_scrimmage", error: invalid syntax (pcr_scrimmage.py, line 1020) [2021-09-16 13:04:37,477 nonebot] ERROR: invalid syntax (pcr_scrimmage.py, line 1020) Traceback (most recent call last): File "C:\Users\Administrator\AppData\Local\Programs\Python\Python38\lib\site-packages\nonebot\plugin.py", line 249, in load_plugin module = importlib.import_module(module_path) File "C:\Users\Administrator\AppData\Local\Programs\Python\Python38\lib\importlib_init_.py", line 127, in import_module return _bootstrap._gcd_import(name[level:], package, level) File "", line 1014, in _gcd_import File "", line 991, in _find_and_load File "", line 975, in _find_and_load_unlocked File "", line 671, in _load_unlocked File "", line 779, in exec_module File "", line 916, in get_code File "", line 846, in source_to_code File "", line 219, in _call_with_frames_removed File "C:\Users\Administrator\Desktop\HoshinoBot\hoshino\modules\pcr_scrimmage\pcr_scrimmage.py", line 1020 @sv.on_fullmatch('创建大乱斗')async def game_create(bot, ev: CQEvent): ^ SyntaxError: invalid syntax

oplaaa avatar Sep 16 '21 05:09 oplaaa

目前出了个问题,启动后报错如下 [2021-09-16 13:04:37,477 nonebot] ERROR: Failed to import "hoshino.modules.pcr_scrimmage.pcr_scrimmage", error: invalid syntax (pcr_scrimmage.py, line 1020) [2021-09-16 13:04:37,477 nonebot] ERROR: invalid syntax (pcr_scrimmage.py, line 1020) Traceback (most recent call last): File "C:\Users\Administrator\AppData\Local\Programs\Python\Python38\lib\site-packages\nonebot\plugin.py", line 249, in load_plugin module = importlib.import_module(module_path) File "C:\Users\Administrator\AppData\Local\Programs\Python\Python38\lib\importlib__init__.py", line 127, in import_module return _bootstrap._gcd_import(name[level:], package, level) File "", line 1014, in _gcd_import File "", line 991, in _find_and_load File "", line 975, in _find_and_load_unlocked File "", line 671, in _load_unlocked File "", line 779, in exec_module File "", line 916, in get_code File "", line 846, in source_to_code File "", line 219, in _call_with_frames_removed File "C:\Users\Administrator\Desktop\HoshinoBot\hoshino\modules\pcr_scrimmage\pcr_scrimmage.py", line 1020 @sv.on_fullmatch('创建大乱斗')async def game_create(bot, ev: CQEvent): ^ SyntaxError: invalid syntax

svn处理冲突时经常会少个换行,加上去就行了。。

eggggi avatar Sep 16 '21 05:09 eggggi

另外一个疑问,说实话应该和上面的合并在一起,但是是修改途中发现的 EFFECT_ATTR_CHANGE = "attr"#属性改变,正数为增加,负数为减少 tuple元组 (属性类型,数值,加成类型,加成比例) #属性类型/加成类型:attr.py , 为0时无加成 目前像这种加成,意思是可以根据其他属性按百分比加成了吗?例如根据当前防御的20%增加攻击? 另外如果是按当前攻击增加比例的攻击的话,这个当前攻击是加上了tuple数值里的还是没加前的呢? 这个加成比例是填小数吗?

第二个问题,是加成前。 例如我本身有100点攻击力,一个技能是增加10攻击力,这个技能有20%的攻击力加成,那最后就是增加30点攻击力。 如果基础值为0,就是直接提升20%攻击力了。

eggggi avatar Sep 16 '21 08:09 eggggi

目前出了个问题,启动后报错如下 [2021-09-16 13:04:37,477 nonebot] ERROR: Failed to import "hoshino.modules.pcr_scrimmage.pcr_scrimmage", error: invalid syntax (pcr_scrimmage.py, line 1020) [2021-09-16 13:04:37,477 nonebot] ERROR: invalid syntax (pcr_scrimmage.py, line 1020) Traceback (most recent call last): File "C:\Users\Administrator\AppData\Local\Programs\Python\Python38\lib\site-packages\nonebot\plugin.py", line 249, in load_plugin module = importlib.import_module(module_path) File "C:\Users\Administrator\AppData\Local\Programs\Python\Python38\lib\importlib__init__.py", line 127, in import_module return _bootstrap._gcd_import(name[level:], package, level) File "", line 1014, in _gcd_import File "", line 991, in _find_and_load File "", line 975, in _find_and_load_unlocked File "", line 671, in _load_unlocked File "", line 779, in exec_module File "", line 916, in get_code File "", line 846, in source_to_code File "", line 219, in _call_with_frames_removed File "C:\Users\Administrator\Desktop\HoshinoBot\hoshino\modules\pcr_scrimmage\pcr_scrimmage.py", line 1020 @sv.on_fullmatch('创建大乱斗')async def game_create(bot, ev: CQEvent): ^ SyntaxError: invalid syntax

svn处理冲突时经常会少个换行,加上去就行了。。

抱歉这个没理解是怎么处理,这方面确实比较菜,具体是指哪里加上换行呢……感谢!

oplaaa avatar Sep 17 '21 07:09 oplaaa

目前出了个问题,启动后报错如下 [2021-09-16 13:04:37,477 nonebot] ERROR: Failed to import "hoshino.modules.pcr_scrimmage.pcr_scrimmage", error: invalid syntax (pcr_scrimmage.py, line 1020) [2021-09-16 13:04:37,477 nonebot] ERROR: invalid syntax (pcr_scrimmage.py, line 1020) Traceback (most recent call last): File "C:\Users\Administrator\AppData\Local\Programs\Python\Python38\lib\site-packages\nonebot\plugin.py", line 249, in load_plugin module = importlib.import_module(module_path) File "C:\Users\Administrator\AppData\Local\Programs\Python\Python38\lib\importlib__init__.py", line 127, in import_module return _bootstrap._gcd_import(name[level:], package, level) File "", line 1014, in _gcd_import File "", line 991, in _find_and_load File "", line 975, in _find_and_load_unlocked File "", line 671, in _load_unlocked File "", line 779, in exec_module File "", line 916, in get_code File "", line 846, in source_to_code File "", line 219, in _call_with_frames_removed File "C:\Users\Administrator\Desktop\HoshinoBot\hoshino\modules\pcr_scrimmage\pcr_scrimmage.py", line 1020 @sv.on_fullmatch('创建大乱斗')async def game_create(bot, ev: CQEvent): ^ SyntaxError: invalid syntax

svn处理冲突时经常会少个换行,加上去就行了。。

抱歉这个没理解是怎么处理,这方面确实比较菜,具体是指哪里加上换行呢……感谢!

这个我已经提交到GitHub了,更新下即可

eggggi avatar Sep 17 '21 07:09 eggggi

刚刚实际测试发现一个问题,目前一个技能提供多个buff的情况(比如美美的蹦蹦跳跳),实际使用的时候会出现只提示了一个buff使用成功(提示提升了防御力,但没说攻击力是否提升),另外可能EFFECT_TP这条无论如何我这边都使用不出来,不知道是什么情况,tp这条我自己仿写的代码如下 { "name":"月下独酌", "text":"恢复目标50TP,恢复目标根据自身防御力50%的生命值", "tp_cost":0, "trigger":TRIGGER_SELECT, "passive":[],

			"effect":{
				EFFECT_TP:50,
				EFFECT_ATTR_CHANGE:(Attr.NOW_HEALTH, 0, Attr.DEFENSIVE, 0.5),
			},

oplaaa avatar Sep 17 '21 07:09 oplaaa

刚刚实际测试发现一个问题,目前一个技能提供多个buff的情况(比如美美的蹦蹦跳跳),实际使用的时候会出现只提示了一个buff使用成功(提示提升了防御力,但没说攻击力是否提升),另外可能EFFECT_TP这条无论如何我这边都使用不出来,不知道是什么情况,tp这条我自己仿写的代码如下 { "name":"月下独酌", "text":"恢复目标50TP,恢复目标根据自身防御力50%的生命值", "tp_cost":0, "trigger":TRIGGER_SELECT, "passive":[],

			"effect":{
				EFFECT_TP:50,
				EFFECT_ATTR_CHANGE:(Attr.NOW_HEALTH, 0, Attr.DEFENSIVE, 0.5),
			},

这个问题我今天也发现了,同名触发类型不能放在一起,要额外加一个效果在被动。 EFFECT_TP这类已经被淘汰,统一使用EFFECT_ATTR_CHANGE 最新改动已经提交了

eggggi avatar Sep 17 '21 08:09 eggggi

发现个问题,目前EFFECT_HEALTH这个触发好像不能执行,我目前的写法是如下(这个技能是写给伊莉亚的),不知是否有误

	"active_skills":[
        {
            "name":"血腥爆破",
            "text":"对目标造成100(+1.2自身攻击力)的伤害,并提升自身50攻击力,对自身造成150的真实伤害",
            "tp_cost":20,
            "trigger":TRIGGER_SELECT_EXCEPT_ME,
            "passive":[0],

            "effect":{
                EFFECT_HURT:(100, Attr.ATTACK, 0, 1.2, False),
            }
        },
    ],
    "passive_skills":[
        {
            "trigger":TRIGGER_ME,
            "effect":{
                EFFECT_HEALTH:(-150, 0, 0),
            }
        }
    ]
}

oplaaa avatar Sep 18 '21 03:09 oplaaa

发现个问题,目前EFFECT_HEALTH这个触发好像不能执行,我目前的写法是如下(这个技能是写给伊莉亚的),不知是否有误

	"active_skills":[
        {
            "name":"血腥爆破",
            "text":"对目标造成100(+1.2自身攻击力)的伤害,并提升自身50攻击力,对自身造成150的真实伤害",
            "tp_cost":20,
            "trigger":TRIGGER_SELECT_EXCEPT_ME,
            "passive":[0],

            "effect":{
                EFFECT_HURT:(100, Attr.ATTACK, 0, 1.2, False),
            }
        },
    ],
    "passive_skills":[
        {
            "trigger":TRIGGER_ME,
            "effect":{
                EFFECT_HEALTH:(-150, 0, 0),
            }
        }
    ]
}

EFFECT_HEALTH也是被淘汰了的,属性的修改统一使用EFFECT_ATTR_CHANGE

eggggi avatar Sep 18 '21 03:09 eggggi

发现个问题,目前EFFECT_HEALTH这个触发好像不能执行,我目前的写法是如下(这个技能是写给伊莉亚的),不知是否有误

	"active_skills":[
        {
            "name":"血腥爆破",
            "text":"对目标造成100(+1.2自身攻击力)的伤害,并提升自身50攻击力,对自身造成150的真实伤害",
            "tp_cost":20,
            "trigger":TRIGGER_SELECT_EXCEPT_ME,
            "passive":[0],

            "effect":{
                EFFECT_HURT:(100, Attr.ATTACK, 0, 1.2, False),
            }
        },
    ],
    "passive_skills":[
        {
            "trigger":TRIGGER_ME,
            "effect":{
                EFFECT_HEALTH:(-150, 0, 0),
            }
        }
    ]
}

EFFECT_HEALTH也是被淘汰了的,属性的修改统一使用EFFECT_ATTR_CHANGE

噢好吧,刚刚另外发现一个BUG,如果对自己使用EFFECT_HURT触发的话,哪怕数值为负数也会为自己回复相对的血量,例如下面这个,实际会为自己回复80HP,但bot发出来的确是扣除80HP

		{
			"name":"极限充能",
			"text":"消耗自身80HP提高50攻击力,并自身回复30TP",
			"tp_cost":0,
			"trigger": TRIGGER_ME,
			"passive":[0],

			"effect":{
				EFFECT_ATTR_CHANGE:(Attr.ATTACK, 50, 0, 0),
				EFFECT_HURT:(-80, 0, 0, 0, True)
			}
		},

oplaaa avatar Sep 18 '21 03:09 oplaaa

发现个问题,目前EFFECT_HEALTH这个触发好像不能执行,我目前的写法是如下(这个技能是写给伊莉亚的),不知是否有误

	"active_skills":[
        {
            "name":"血腥爆破",
            "text":"对目标造成100(+1.2自身攻击力)的伤害,并提升自身50攻击力,对自身造成150的真实伤害",
            "tp_cost":20,
            "trigger":TRIGGER_SELECT_EXCEPT_ME,
            "passive":[0],

            "effect":{
                EFFECT_HURT:(100, Attr.ATTACK, 0, 1.2, False),
            }
        },
    ],
    "passive_skills":[
        {
            "trigger":TRIGGER_ME,
            "effect":{
                EFFECT_HEALTH:(-150, 0, 0),
            }
        }
    ]
}

EFFECT_HEALTH也是被淘汰了的,属性的修改统一使用EFFECT_ATTR_CHANGE

噢好吧,刚刚另外发现一个BUG,如果对自己使用EFFECT_HURT触发的话,哪怕数值为负数也会为自己回复相对的血量,例如下面这个,实际会为自己回复80HP,但bot发出来的确是扣除80HP

		{
			"name":"极限充能",
			"text":"消耗自身80HP提高50攻击力,并自身回复30TP",
			"tp_cost":0,
			"trigger": TRIGGER_ME,
			"passive":[0],

			"effect":{
				EFFECT_ATTR_CHANGE:(Attr.ATTACK, 50, 0, 0),
				EFFECT_HURT:(-80, 0, 0, 0, True)
			}
		},

也可以说是bug吧,伤害触发数值我是做正数的处理的,不过我现在改成绝对值了,不管正数负数都会扣血了_(:з)∠)_ 已提交,更新下即可

eggggi avatar Sep 18 '21 03:09 eggggi

再次感谢大佬的开发,目前其他东西基本已经摸清楚了,目前也就新的BUFF相关的有点想法,我目前看了buff.py,应该是可以再添加更多的buff种类的,但buff类型的代码不是很清楚那块是什么意思,新的buff也会需要相关的代码的样子(举个例子,NormalAttrAtkUp = 10101,中10101是?),想请教下如果想自己在创建一个buff该怎么做呢(例如眩晕一回合)

顺便提几个技能翻译和效果参考建议: 1.黑猫按原作来说应该是没有吸血技能的,个人觉得还是护甲消除比较好,这个可能是拿来做吸血的例子?如果是的话可以考虑我下面写的yly做例子这样? 2.美美的2技能目前翻译应该是跳跳斩,3技能如果6星的UB翻译的话我这边查证后应该为兔兔转转转(日语原文写的直译是兔子 旋转,考虑美美的人设讨论后这样翻译应该比较吻合),可能是为了做斩杀示例这样写的 3.剑圣3技能极·鬼剑术-暴风式,如果是以fes剑圣ub来说的话,我这边查证之后翻译应该是"荣光风暴"

另外分享下我目前创建的人物,在当前代码条件下已经测试完成可以用的,感谢大佬给我们带来的快乐

1022:{
	"name":"依里",
	"health":800,
	"distance":10,
	"attack":120,
	"defensive":50,
	"tp":0,


	"active_skills" : [
		{
			"name":"极限充能",
			"text":"消耗自身80HP提高50攻击力,并自身回复30TP",
			"tp_cost":0,
			"trigger": TRIGGER_ME,
			"passive":[0],

			"effect":{
				EFFECT_ATTR_CHANGE:(Attr.ATTACK, 50, 0, 0),
			}
		},
		{
			"name":"闪电之枪",
			"text":"对目标及其半径4范围内的除开自己的玩家造成150(+1.5自身攻击力)伤害",
			"tp_cost":70,
			"trigger": TRIGGER_SELECT_EXCEPT_ME,
			"passive":[],

			"effect":{
				EFFECT_AOE:(4, False),
				EFFECT_HURT:(-150, Attr.ATTACK, 0, 1.5, False)
			}
		}
	],
	"passive_skills": [
        {
            "trigger":TRIGGER_ME,
            "effect":{
                EFFECT_ATTR_CHANGE:(Attr.TP, 30, 0, 0),
                EFFECT_ATTR_CHANGE:(Attr.NOW_HEALTH, -80, 0, 0,)
            }
        }
    ]
},

1038:{
	"name":"栞",
	"health":750,
	"distance":15,
	"attack":80,
	"defensive":60,
	"tp":10,

	"active_skills" : [
		{
			"name":"风之箭",
			"text":"对目标造成70(+1.0自身攻击力)伤害,并自身回复40tp",
			"tp_cost":0,
			"trigger": TRIGGER_SELECT_EXCEPT_ME,
			"passive":[0],

			"effect":{
				EFFECT_HURT:(-70, Attr.ATTACK, 0, 1.0, False)
			}
		},
		{
			"name":"附魔之箭",
			"text":"对目标造成120(+1.5自身攻击力)伤害,并提升自身60攻击力",
			"tp_cost":80,
			"trigger": TRIGGER_SELECT_EXCEPT_ME,
			"passive":[1],

			"effect":{
				EFFECT_HURT:(-120, Attr.ATTACK, 0, 1.5, False)
			}
		}
	],
	"passive_skills": [
			{
			"trigger": TRIGGER_ME,
			"effect":{
				EFFECT_ATTR_CHANGE:(Attr.TP, 40, 0, 0)
				}
			},
			{
			"trigger": TRIGGER_ME,
			"effect":{
				EFFECT_ATTR_CHANGE:(Attr.ATTACK, 60, 0, 0)
				}
			}
	]
},

1034:{
	"name":"优花梨",
	"health":1200,
	"distance":7,
	"attack":90,
	"defensive":100,
	"tp":20,

	"active_skills":[
		{
			"name":"第七天堂",
			"text":"提升全体100防御,回复全体根据自身防御90%生命值,自身额外提升50防御和100生命值",
			"tp_cost":70,
			"trigger":TRIGGER_ALL,
			"passive":[0,1],

			"effect":{
				EFFECT_ATTR_CHANGE:(Attr.NOW_HEALTH, 0, Attr.DEFENSIVE, 0.9),
			},
		},
		{
			"name":"淡薄圆月",
			"text":"降低目标50防御, 减少目标50TP",
			"tp_cost":30,
			"trigger":TRIGGER_SELECT_EXCEPT_ME,
			"passive":[3],
			
			"effect":{
				EFFECT_ATTR_CHANGE:(Attr.DEFENSIVE, -50, 0, 0),
			},
		},
		{
			"name":"月下独酌",
			"text":"恢复目标50TP,恢复目标根据自身防御力70%的生命值",
			"tp_cost":0,
			"trigger":TRIGGER_SELECT,
			"passive":[2],
			
			"effect":{
				EFFECT_ATTR_CHANGE:(Attr.NOW_HEALTH, 0, Attr.DEFENSIVE, 0.7),
			},
		},
		{
			"name":"醉酒突击",
			"text":"对最近的玩家造成10-150(+1.5自身攻击力)伤害",
			"tp_cost":0,
			"trigger":TRIGGER_NEAR,
			"passive":[],

			"effect":{
				EFFECT_HURT:(random.randint(-150,-10), Attr.ATTACK, 0, 1.5, False),
			},
		}
	],
	"passive_skills":[
		{
            "trigger": TRIGGER_ALL,
            "effect":{
                EFFECT_ATTR_CHANGE:(Attr.DEFENSIVE, 100, 0, 0),
            }
        },
        {
            "trigger": TRIGGER_ME,
            "effect":{
                EFFECT_ATTR_CHANGE:(Attr.DEFENSIVE, 50, 0, 0),
                EFFECT_ATTR_CHANGE:(Attr.NOW_HEALTH,100, 0, 0),
			},
        },
        {
            "trigger": TRIGGER_SELECT,
            "effect":{
                EFFECT_ATTR_CHANGE:(Attr.TP, 50, 0, 0),
            }
		},
        {
            "trigger":TRIGGER_SELECT_EXCEPT_ME,
            "effect":{
                EFFECT_ATTR_CHANGE:(Attr.TP, -50, 0, 0),
            }
        }
	]
},

1052:{
	"name":"莉玛",
	"health":1800,
	"distance":5,
	"attack":50,
	"defensive":150,
	"tp":0,

	"active_skills":[
		{
			"name":"普通攻击",
			"text":"对目标造成0(+1.0自身攻击力)伤害",
			"tp_cost":0,
			"trigger": TRIGGER_SELECT_EXCEPT_ME,
			"passive":[],

			"effect":{
				EFFECT_HURT:(0, Attr.ATTACK, 0, 1, False)
			}
		},
		{
			"name":"毛茸茸挥击",
			"text":"向目标移动4格,对目标造成100(+1.0自身攻击力)伤害,并增加自身150点防御",
			"tp_cost":80,
			"trigger":TRIGGER_SELECT,
			"passive":[0,1],

			"effect":{
				EFFECT_HURT:(-100, Attr.ATTACK, 0, 1.0, False),
			},
		},
		{
			"name":"毛茸茸袭击",
			"text":"向目标移动8格,对目标造成60(+0.7自身攻击力)伤害,并增加自身50点防御",
			"tp_cost":30,
			"trigger":TRIGGER_SELECT,
			"passive":[2,3],
			
			"effect":{
				EFFECT_HURT:(-60, Attr.ATTACK, 0, 0.7, False),
			}
		}
	],
	"passive_skills":[
		{
			"trigger": TRIGGER_SELECT,
			"effect":{
				EFFECT_MOVE_GOAL:(3, False),
			}
		},
		{
			"trigger": TRIGGER_ME,
			"effect":{
				EFFECT_ATTR_CHANGE:(Attr.DEFENSIVE, 150, 0, 0),
			}
		},
		{
			"trigger": TRIGGER_SELECT,
			"effect":{
				EFFECT_MOVE_GOAL:(8, False),
			}
		},
		{
			"trigger": TRIGGER_ME,
			"effect":{
				EFFECT_ATTR_CHANGE:(Attr.DEFENSIVE, 50, 0, 0),
			}
		},
	]
},

1044:{
	"name":"伊莉亚",
	"health":1100,
	"distance":7,
	"attack":100,
	"defensive":80,
	"tp":0,

	"active_skills":[
        {
            "name":"朱色之噬",
            "text":"对目标及其半径4范围内的所有玩家造成150(+1.5自身攻击力)的伤害,并恢复等同伤害的生命值",
            "tp_cost":80,
            "trigger":TRIGGER_SELECT_EXCEPT_ME,
            "passive":[],

            "effect":{
                EFFECT_AOE:(4, False),
                EFFECT_HURT:(150, Attr.ATTACK, 0, 1.5, False),
                EFFECT_LIFESTEAL:1.0,
            }
        },
        {
            "name":"血腥爆破",
            "text":"对目标造成100(+1.2自身攻击力)的伤害,并提升自身50攻击力,对自身造成100-200的真实伤害",
            "tp_cost":20,
            "trigger":TRIGGER_SELECT_EXCEPT_ME,
            "passive":[0],

            "effect":{
                EFFECT_HURT:(100, Attr.ATTACK, 0, 1.2, False),
            }
        },
        {
            "name":"血腥之矛",
            "text":"对目标及其半径4范围内的所有玩家造成100(+1.2自身攻击力)的伤害,对自身造成90-190的真实伤害",
            "tp_cost":20,
            "trigger":TRIGGER_SELECT_EXCEPT_ME,
            "passive":[1],
            
            "effect":{
                EFFECT_AOE:(4, False)
                EFFECT_HURT:(100, Attr.ATTACK, 0, 1.2, False),
            }
        }
    ],
    "passive_skills":[
        {
            "trigger":TRIGGER_ME,
            "effect":{
                EFFECT_ATTR_CHANGE:(Attr.ATTACK, 50, 0, 0),
                EFFECT_ATTR_CHANGE:(Attr.NOW_HEALTH, random.randint(-200,-100), 0, 0),
            }
        },
        {
            "trigger":TRIGGER_ME,
            "effect":{
                EFFECT_ATTR_CHANGE:(Attr.NOW_HEALTH, random.randint(-190,-90), 0, 0),
            }
        }
    ]
},

oplaaa avatar Sep 18 '21 04:09 oplaaa

buff机制其实有点复杂的,我参考了我公司项目的一些设计思路。 BuffType的规律我有写注释的,可以看看。 现在新加BuffType的话,只用已有的 BuffTriggerType 和 BuffEffectType 是不用改代码的,可以参考剑圣的格挡技能。 眩晕buff就需要在 BuffEffectType 里新增一个类型了,这个可以等我后续添加,眩晕机制就相当于跳过玩家的回合,或许要再加一个字段进行标记,需要处理的地方也很多。

我猜你应该不玩dnf和lol,技能名字只是一个梗_(:з)∠)_ 角色技能效果这些可以改,目前也只是示范用的。其实是因为我太懒,不想加一个新角色去做示范_(:з)∠)_

能帮忙设计角色真的太感动了QAQ 伊莉雅血腥爆破有点问题,同名触发类型不能放在一个字典里,如果要一个技能更改多个属性,每个属性都需要独立加一个被动。。 其实这个缺陷我也有办法改进,EFFECT_ATTR_CHANGE的结构改成列表就行了,处理也不难,就是要把所有角色的EFFECT_ATTR_CHANGE结构改一下。

eggggi avatar Sep 18 '21 05:09 eggggi

buff机制其实有点复杂的,我参考了我公司项目的一些设计思路。 BuffType的规律我有写注释的,可以看看。 现在新加BuffType的话,只用已有的 BuffTriggerType 和 BuffEffectType 是不用改代码的,可以参考剑圣的格挡技能。 眩晕buff就需要在 BuffEffectType 里新增一个类型了,这个可以等我后续添加,眩晕机制就相当于跳过玩家的回合,或许要再加一个字段进行标记,需要处理的地方也很多。

我猜你应该不玩dnf和lol,技能名字只是一个梗_(:з)∠)_ 角色技能效果这些可以改,目前也只是示范用的。其实是因为我太懒,不想加一个新角色去做示范_(:з)∠)_

能帮忙设计角色真的太感动了QAQ 伊莉雅血腥爆破有点问题,同名触发类型不能放在一个字典里,如果要一个技能更改多个属性,每个属性都需要独立加一个被动。。 其实这个缺陷我也有办法改进,EFFECT_ATTR_CHANGE的结构改成列表就行了,处理也不难,就是要把所有角色的EFFECT_ATTR_CHANGE结构改一下。

BUFF相关的我其实就是想问问能不能自己做新的buff属性,看来一时半会会比较困难

名字其实我看出来了梗,我也只是思考了下pcr原型提的一点无关紧要的建议而已

伊莉亚的血腥爆破确实,这个我刚刚也发现了在自己文件里修改了,如果这样的话黄骑的第七天堂其实也有同样的问题,不过这个东西如果不修改的话其实技能效果的代码会十分的繁杂(某些技能甚至passive里面有好几条,导致有时候在下面修改passive容易找不到对应条甚至找错Orz),如果可以的话,希望能修改

oplaaa avatar Sep 18 '21 06:09 oplaaa