lwtmusou / touhoukill Goto Github PK
View Code? Open in Web Editor NEWSanguosha (board game) mod including touhou project characters based on open source Qsanguosha
License: Other
Sanguosha (board game) mod including touhou project characters based on open source Qsanguosha
License: Other
发现FilterSkill里用到了这个但不明白它的功能,以及很多地方装备牌的类型用的也是WrappedCard而不是Card, EquipCard或具体的某个subtype,请问这个WrappedCard的功能是什么?在代码中是怎么体现的?
图书合咒变无懈.txt
图书录像.txt
图书的合咒不能正常发动。如自己回合内出牌阶段空闲时间点不能发动(与博览的关系可能有);合咒第一次发动可以声明【无懈可击】;一轮内发动一次后不能再发动第二次等。
不该显示本地config保存的ScreenName
该显示原录像的主视角的ScreenName
Rt
*(1)摩多罗4hp
秘神:你可横置人物牌或装备区的一张牌,视为使用【调虎离山】。
里季:你可横置上家或下家的装备区的一张牌,视为对其使用下列牌。
若横置的装备类型为: 武器:知己知彼 防具:铁索 防御马:桃 进攻马:火杀 宝物:调虎
后光1:你的装备区的牌被弃置或横置时,你可令其他璋势力角色选择是否代替你执行同类操作。
(2)尔子田里乃 3hp
鼓舞:当前回合角色使用普通锦囊牌指定其上家或下家为目标时,你可横置人物牌或装备区的一张牌,你令一名角色成为此牌的额外目标。
茗荷:你受到伤害后,你可视为对任意名角色使用【联军盛宴】。此牌对目标生效后,若其体力值大于你,其于本回合不能使用牌。
(3)丁礼田舞 3hp
狂舞:当前回合角色使用基本牌指定其上家或下家为目标时,你可横置人物牌或装备区的一张牌,你令一名角色成为此牌的额外目标。
竹笹:你受到伤害后,你可视为对任意名角色使用【联军盛宴】。此牌对目标生效后,若目标体力值大于你,其失去一点体力。
此人已死,有事烧纸 2020/9/30 20:34:37
@吉千八弔慧催笨猫干活 SP年代记永林药理的基本牌效果值+1和神莎充能的效果值+1冲突,不能同时生效
吉千八弔慧催笨猫干活 2020/9/30 20:40:27
是啊
吉千八弔慧催笨猫干活 2020/9/30 20:40:33
用的就是魔理沙的flag
此人已死,有事烧纸 2020/9/30 20:40:53
但这是BUG吧
吉千八弔慧催笨猫干活 2020/9/30 20:42:05
所以不是个例啊
吉千八弔慧催笨猫干活 2020/9/30 20:42:16
需要改设计
吉千八弔慧催笨猫干活 2020/9/30 20:42:24
包括神魔理沙也要改
bullytou 2020/9/30 20:43:16
效果值+1居然用的是flag
吉千八弔慧催笨猫干活 2020/9/30 20:44:27
因为效果值在effectstruct里
吉千八弔慧催笨猫干活 2020/9/30 20:44:35
使用和生效是两个结算
吉千八弔慧催笨猫干活 2020/9/30 21:23:23
所以有github的话报一下issue吧
吉千八弔慧催笨猫干活 2020/9/30 21:23:59
我十一回家没环境,没法改 得10月8日之后再说了
通过自动更新的方式一次性下载(自动检测可以改手动检测?)
随时检测并下载(比如本局游戏中自己选择的角色,若没有皮肤,则背后自动下载)
问题背景:
魂魄妖忌发动‘御剑’成功时,国战同将魂魄妖梦‘双刃’只能选择攻击范围(有限距离)内的额外目标。
基于此问题,目前需要考虑额定和额外目标的处理方法。
现在东方杀(以及神杀base)都是将额定和额外目标统一考虑(也即只有一个targetFilter)
然后在targetFilter中再去判定额定和额外目标。
这样导致的问题就是 - 额定和额外目标的分界线不明确
原三国杀的额定和额外目标区分比较复杂,机制比较多,举例:
还有很多,不一一举例了。
如此复杂的机制造成了三国杀选择目标的合法性校验异常复杂,尤其是不区分额定和额外目标的神杀的代码框架下。
目前有如下解决方案:
调整后的描述问题和天子协调一下?(若描述处理起来太操蛋了的话,12/12版干脆暂时搁置不调整)
状况说明:
(1) AnyunShowStaticSkill 原来是专门用来调整给神鵺主动亮出 一些静态技能和发动权在他人手里的。(如马术 无节操赛钱)
skill->getShowType() == "static" 目前也完全只是为了辨识这些静态技能
但准备阶段目前也只能亮出有这些技能的化身。没有静态技能的化身也只能在符合触发条件时才能亮。
(2) 另外还有一些完全无法实际适用的化身,目前是直接禁止进入化身池的。如zun
目前调整考虑为和国战完全一致:准备阶段就一定有一次自由亮化身的机会。这样自己回合主动过滤掉废物化身。
国战敌我判定混乱,主要是多了个天然野心家
国战均势时,ai用力过猛的问题(俗称打工)
(似乎敌我判断不能光看,还是可以设置适当的玩家间的仇恨。
比如均势时,你手贱搞我,搞得我很难赢了,反过来就肯定拼死也拉你下水了。)
国战亮将判定优化
现在有的ai就是优势局不会主动亮将开团,非要技能被动触发出来的屑。 比如大冬对抗盟军打的辛辛苦苦,
然后才发现还有暗着死活不亮将的*灵。
包括射命丸文(国) 风速亮将?
神将:天子 幽香 恋恋? 魔理沙 爱丽丝 图书
tkz势力的新将
以外的普将:依神姐妹 sp堇子
观星ai
布都改良 (很难。。。)
配合型ai
代表 露米娅 永琳(国)
用牌ai
身份局,知己知彼 以逸待劳 只会单目标
权衡型ai
背水+太极
国战 正邪逆转 (芙兰 因幡帝 朱路子)
在游戏中因为背景部分区域的颜色与人物技能的标记数量文本颜色相同,导致玩家无法看清标记的数量,这问题需要解决,使得标记的数字可见。
国战和V2都换掉了
RT
必要时禁掉恶劣游戏的人的IP,使其不能破坏游戏内的稳定。
蝴蝶扣血不摸牌.txt
当主,第一次扣血不摸牌,之后却摸牌了。
摩多罗隐岐奈 体力上限:4 势力:璋
[秘仪]:出牌阶段限一次,若你于此阶段内使用过牌,你可以视为使用【调虎离山】。
[昭威]:结束阶段开始时,若你于此回合内使用过的牌数大于X(X为你的手牌数),你可以选择一项:获得一名其他角色的一张牌,然后其摸一张牌;获得至多X名其他角色各一张手牌,然后弃置等量的牌,这些角色各获得其中一张牌。
[主者]:主公技,出牌阶段限一次,你可以令其他璋势力角色选择是否将其一张牌交给你(选是会终止询问)。
联机中发现:火猫的怨灵发动后,别人用磁【闪】抵消,虽然有绑上的动画了,但实际火猫并没被绑上。这需要修复。
灵梦的封魔指定的判定的人与技能描述不符合。
如A的回合内有B角色第一次用了基本牌,然后灵梦发动了封魔,描述上是让B进行判定的,实际却是A角色进行判定。
This repo is missing a license. Without a license, all code is copyright the author and may not be used by anyone else.
Please use something like http://choosealicense.com/ to decide what license to use. I recommend MIT or GPL.
标记的显示方式重新处理。
【春】(Fs:我改了描述)
1 桑尼 1.5血 (身份也统一改成此版 3血)
折射:(原版)
xx(技能名找天子):一名角色回复体力后,你可以令其摸一张牌。
2 露娜 1.5血 (身份也统一改成此版 3血)
捉弄:(原版)
寂静(buff):你于回合内对其他角色造成伤害后,若其存活,你可以选择包括其的至多x名其他角色,你与这些角色的距离于此回合内视为1。你于其他角色的回合内受到伤害后,你选择除其以外的至多x名角色,其与这些角色的距离于此回合内无限大。(x为你已损失体力且至少为1)
注:无限大,可以妥协。换个说法?
3 斯塔 1.5血 (身份也统一改成此版 3血)
感应:(原版) 当其他角色回复体力后或受到伤害后,若其体力值与你相等,你可选择: 摸一张牌,或弃置其一张手牌。
xx(技能名找天子):其他角色使用锦囊牌指定目标时,你可失去1点体力,取消此牌的一名目标角色。
注:取消的是目标角色,自然和无邪无关。
备注: 国战是作为3血版的主将技。对方不能拼点时,不能发动此技能。
备注:基本是国战翻版。可能偏强,装了看看
神魔理沙使用幻【杀】、秽【杀】这类杀时,发动充能增强效果值,选择增加横牌(或明牌)(第一个效果值)和增加伤害基数(第二个效果值)中的第二个时,记录文本框却弹出第一个效果值的加强文本。
国战武将切换皮肤,显示的对应的图片不一致。目测是image内部名传参时候的问题。
RT
帕秋莉(代替现有身份普版,国战暂不动)
博览:出牌阶段开始时或当你成为其他角色使用锦囊牌的目标后,你可以观看牌堆顶的三张牌,然后以任意顺序放回牌堆顶或牌堆底。
合咒:当你需要使用/打出任意基本牌或普通锦囊牌时,你可以声明之并将牌堆底两张牌置入弃牌堆,若其颜色与类型均不同,你将视为使用/打出声明的牌。每回合限一次。
青兰(身份修改)
异弹: 出牌阶段限一次,你可以将一张手牌当不计入次数的秽【杀】对一名有手牌且无明置手牌的角色使用。
血杵: 锁定技,你使用的杀不能被闪响应。你对其他角色造成伤害后,你令其选择是否弃置一张【闪】并回复1点体力。
单机可以发动,联机时不能发动。
这在很久以前就报过了
目前的填写重连信息的逻辑是:
目前的问题整理:
针对问题3,逻辑的1要改
针对问题1,需要改restart
受影响技能:
青龙偃月刀(装备)
浴血(弗兰朵露)
待添加。。。
【若两张牌颜色与类型均不同,】
改为 【若两张牌花色与类型均不同,】
面灵:当你从牌堆获得牌时,你须将牌堆顶等量的牌置于人物牌上,称为“面”,然后若“面”数大于X(X为存活角色数),你将“面”调整至X张;你能使用或打出“面”,以此法使用或打出的结算完毕后,你选择一项:弃置一张牌,或失去1点体力。
心殇:一名角色的结束阶段开始时,若你失去过牌,且此回合内置入弃牌堆的牌有四种不同的花色,你可以对一名角色造成1点伤害。
Fs打算对神杀的几次重新设计都以失败告终了。都是遇到了一些困难,然后由于自己时间、精力和能力上的不足导致失败。
所以Fs的思路由重新制作神杀变为基于神杀代码逐步进行重构,在不破坏现有功能的前提下一点一点对现有的历史问题进行修改。
(最终还是走到了破坏性修改的地步 嘤)
结算问题
举例:闪和无懈可击先进行使用结算,使用结算完毕后生效
举例:无视防具使用防具无效进行结算
用户体验
dashboard的装备栏和手牌区域有色差,确定取消按钮出框,部分字体过大过小等
LuaState的大量共用
LuaState并不线程安全,而现有LuaState仅在各个room各持有一份,engine持有一份,并不是一个线程一份。
而且还存在跨线程共用的情况。
修改方案:将LuaState修改为thread storage
服务器架构
当前服务器跑在主线程(界面线程),单机启动时和客户端共用线程。虽然不是什么大问题就是了。。。
Room和Roomthread都是线程。没必要开两个线程来处理一个room,可以考虑取消room的线程属性。
现在room本身的线程只用来处理选将逻辑,可以考虑一并移动进入Roomthread。
room架构
客户端类(Client)本身已经成为de facto Room object。Engine有一个currentRoomObject的函数在客户端返回Client。
由于Client和Room两个类有着相似的特性(是各自端的room对象,管理一堆玩家和牌,储存部分状态)所以可以抽出部分共通内容做一个基类放在core。
这样也可以解除Client和Room在Engine上的耦合,一定程度上缓解core/server/client耦合过于严重的问题,方便之后对程序进行模块化。
客户端架构
目前的Client是单例。导致实现AI客户端化在现有架构下不可能。
同时对于现在的client来说,是针对roomscene存在部分耦合内容。
需要让client可以多例且可以不再主线程运行。且删除与roomscene的耦合。
Card/FliterSkill
目前的Card既是牌面,同时又是虚拟牌和添加到Engine的牌。实体牌是WrappedCard这个继承了Card的类。
这种设计的问题是:牌面和牌耦合过于严重(都在同一个类里),牌和服务器客户端也存在严重耦合。
FliterSkill本身继承OneCardViewAsSkill,但是没有ViewAsSkill的一切特征,而且修改的牌是实体牌不是虚拟牌,由此也引发过一些bug比如客户端闪退等(比如曾经有过主公技是FilterSkill,袁术一点伪帝就闪退的问题)
把card解耦成牌和牌面(暂定CardFace),FilterSkill设计成服务器和客户端通用,可能可行?
界面
坑最大的地方。
freetype需要干掉,Qt自己就使用freetype进行字体渲染,没必要再弄一个freetype放在那里。
fmod由于是专有软件,与GPL v3不兼容。不过目前的自由软件库里没看到任何可以代替fmod的软件,暂时没有解决方案。
客户端存在不明原因的闪退(爬树?),怀疑和界面渲染方式有关。
AI
AI运行在RoomThread,运行时完全阻塞room线程且思考时间无限,手牌较多时性能很差且无法被打断。
Lua扩展接口对AI完全开放,AI可以取得任意服务器资源,包括服务器上完全公开的手牌及身份信息,导致服务器端的AI存在许多特权,部分代码甚至有开挂的现象。
所以将AI放在客户端,与玩家平起平坐,不再有任何特权,不再阻塞room线程,不再开挂,可能会是一个不错的思路。这也是我近几年来提出的一个大课题。
不过就算客户端化,AI还有其他问题(比如性能,比如算法基于规则且程式化,并不智能)等待解决。
3hp
陀螺:当主公摸牌或回复体力时,你可横置人物牌或横置装备区的一张牌,然后摸一张牌。
寻佛: 你可以将红桃牌当【养精蓄锐】使用。
2 养精蓄锐改动。
【养精蓄锐】 锦囊牌·一次性的延时类锦囊牌
使用时机:出牌阶段。
使用目标:一名角色。
作用效果:目标角色判定,若结果不为黑桃,其跳过弃牌阶段。且结束阶段开始时,其摸两张牌。
(东方化牌堆时准备给白莲)
当场上存在两个年代记永琳的药理时(如被依姬凭依),一个角色先发动A药理获得基本牌效果加强,再发动B药理获得基本牌效果加强,但实际该角色使用基本牌获得的加强只能存在一个,如使用杀只会受到一个药理效果,让伤害值加一。
若从A获得基本牌效果加强,从B获得锦囊牌加强,则这两个加强效果可以共存。
其余同理。
RT
4hp
绮想: 当牌因使用打出弃置以外的原因进入弃牌堆后,你可以令一名角色获得其中的红桃牌。
封魔: 一名角色于一个回合内首次使用基本牌时,你可以弃置一张手牌,令使用者判定,若结果为红色,此牌无效。
(约等于对每名角色一回合限一次)
主公技【教主型替换】 -》 改为司马懿型代替
假设有个技能的效果是: 准备阶段,你可以将一张手牌当作【杀】使用。那么游戏中执行到相应的Room::askForUseCard语句时,需要先点一下技能按钮,然后才能选中一张任意手牌。如果不点技能按钮就无法选中手牌。请问为什么会有这种限制?实现代码在哪?
另外,上述情况下弹出的提示框里没有操作提示; prompt中如果有冒号,那么冒号以后的部分会被直接无视,后接的%1这样的参数也没法传递了。要修正这些的话需要改哪些代码?
改为杀和普通锦囊
二童子视为使用【联军盛宴】时可以选择处于神隐状态的角色使用。需要追加合法性检测,以防止处于神隐状态的角色通过【联军盛宴】获得牌这种情况出现。
武将一览拆成身份 国战两个
国战的武将体力减半。 (配套的勾玉image也要换?)
当前状况,投降后暗将并没有自动亮出来。
国战投降后是否会自动存录像,需要确认。
投降的情况下,是否要记录胜场: saveWinnerTable() 需要根据实际情况优化判断条件。
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.