88from .classes import upgradeRequest
99
1010from ...shared import gctx
11- from ..permissionUtils .point import getUpgradeCost , getUpgradeAddInt , canUpgrade , getPointName , getUpgradeLevel
11+ from ..permissionUtils .point import getUpgradeCost , isUpgradeUseless , canUpgrade , getPointName , getUpgradeLevel
1212from ..permissionUtils import updateAllPermissions
1313from ..configUtils import readPlayerInfo , Player , savePlayerInfo
1414from ..configUtils import writeFile
@@ -22,7 +22,7 @@ def printHelp(source: CommandSource, context: CommandContext):
2222 RText (" 玩家信任服务 帮助" ) + RText (" >" , RColor .dark_purple )
2323 body = RText ('''\
2424 !!ts: 输出本条消息
25- !!ts upgrade <玩家名称>: 升级某个玩家,同时消耗你的信任点数''' )
25+ !!ts upgrade <玩家名称> <点数> : 升级某个玩家,同时消耗你的信任点数''' )
2626
2727 if not source .is_console :
2828 try :
@@ -69,15 +69,28 @@ def upgradePlayer(source: CommandSource, context: CommandContext):
6969 except KeyError :
7070 source .reply (RText ("您为1级玩家,无法升级!" , RColor .red ))
7171 return
72- if not canUpgrade (player ):
72+
73+ try :
74+ player2 = readPlayerInfo (context ['playerName' ])
75+ except KeyError :
76+ player2 = Player (context ["playerName" ], False , 0 )
77+ addPoint = context ['point' ]
78+ costPoint = getUpgradeCost (player , addPoint )
79+
80+ upgradeState = canUpgrade (player , costPoint )
81+ if upgradeState == False :
7382 source .reply (RText ("您的信任点不足,无法升级!" , RColor .red ))
7483 return
7584
76- req = upgradeRequest (playerStorageName , context ['playerName' ], getUpgradeCost (player ), getUpgradeAddInt (player ))
77- source .reply (f"您将花费{ req .cost } 信任点以为 { context ['playerName' ]} 增加{ req .add } 信任点。为对方升级后您的等级为{ getUpgradeLevel (player )} 。确认请输入`!!ts confirm`" )
85+ if isUpgradeUseless (player2 , addPoint ):
86+ source .reply (RText ("此次升级部分/全部无用(因为对方可加的点数少于您的请求点数)" , RColor .red ))
87+
88+ req = upgradeRequest (playerStorageName , context ['playerName' ], costPoint , addPoint )
89+ source .reply (
90+ f"您将花费{ req .cost } 信任点以为 { context ['playerName' ]} 增加{ req .add } 信任点。为对方升级后您的等级为{ getUpgradeLevel (player , costPoint )} 。确认请输入`!!ts confirm`" )
7891 gctx .playerUpgradeAwaits [playerStorageName ] = req
7992 elif source .is_console :
80- source .reply (f"以控制台执行的upgrade子命令将以根玩家的权限执行(为目标增加17点数) 。确认请输入`!!ts confirm`" )
93+ source .reply (f"以控制台执行的`upgrade`子命令类似于`setPoint`子命令。执行此命令将为目标增加 { context [ 'point' ] } 点数 。确认请输入`!!ts confirm`" )
8194
8295
8396def playerUpgradeConfirm (source : CommandSource , context : CommandContext ):
@@ -117,14 +130,18 @@ def playerUpgradeConfirm(source: CommandSource, context: CommandContext):
117130 if player2 .isRootPlayer :
118131 source .reply (RText ("不能给根玩家升级" , RColor .red ))
119132 return
133+ if gctx .upgrade .acquire (False ):
120134
121- # 然后先扣钱
122- player1 .trustPoint -= alreadyExistRequest .cost
123- savePlayerInfo (player1 )
135+ # 然后先扣钱
136+ player1 .trustPoint -= alreadyExistRequest .cost
137+ savePlayerInfo (player1 )
124138
125- # 然后给target增加
126- player2 .trustPoint = min (player2 .trustPoint + alreadyExistRequest .add , 27 )
127- savePlayerInfo (player2 )
139+ # 然后给target增加
140+ player2 .trustPoint = min (player2 .trustPoint + alreadyExistRequest .add , 27 )
141+ savePlayerInfo (player2 )
142+ gctx .upgrade .release ()
143+ else :
144+ source .reply (RText ("当前正在升级,请重试" , RColor .red ))
128145
129146 source .reply (RText (f"升级成功,对方现有 { player2 .trustPoint } 信任点。" , RColor .green ))
130147 source .get_server ().tell (alreadyExistRequest .targetPlayer , RText (
@@ -167,7 +184,7 @@ def getTSCmdBuilder():
167184 cmdBuilder = SimpleCommandBuilder ()
168185
169186 cmdBuilder .command ("!!ts" , printHelp )
170- cmdBuilder .command ("!!ts upgrade <playerName>" , upgradePlayer )
187+ cmdBuilder .command ("!!ts upgrade <playerName> <point> " , upgradePlayer )
171188 cmdBuilder .command ("!!ts confirm" , playerUpgradeConfirmWrapper )
172189 cmdBuilder .command ("!!ts save" , savePermissionFile )
173190
0 commit comments