添加小队决斗;修复增加/修改初始值特效会导致无限叠加的问题(1)

This commit is contained in:
milimoe 2024-12-30 01:44:54 +08:00
parent 538da000e7
commit 2abe63dc80
Signed by: milimoe
GPG Key ID: 05D280912DA6C69E
2 changed files with 111 additions and 0 deletions

View File

@ -1524,6 +1524,100 @@ namespace Oshima.Core.Controllers
} }
} }
[HttpPost("fightcustomteam")]
public List<string> FightCustomTeam([FromQuery] long? qq = null, [FromQuery] long? eqq = null, [FromQuery] bool? all = null)
{
try
{
long userid = qq ?? Convert.ToInt64("10" + Verification.CreateVerifyCode(VerifyCodeType.NumberVerifyCode, 11));
long enemyid = eqq ?? Convert.ToInt64("10" + Verification.CreateVerifyCode(VerifyCodeType.NumberVerifyCode, 11));
bool showAllRound = all ?? false;
PluginConfig pc = new("saved", userid.ToString());
pc.LoadConfig();
PluginConfig pc2 = new("saved", enemyid.ToString());
pc2.LoadConfig();
User? user1 = null, user2 = null;
if (pc.Count > 0)
{
user1 = FunGameService.GetUser(pc);
if (user1.Inventory.Squad.Count == 0)
{
return [$"你尚未设置小队请先设置1-4名角色"];
}
user1.LastTime = DateTime.Now;
pc.Add("user", user1);
pc.SaveConfig();
}
else
{
return [noSaved];
}
if (pc2.Count > 0)
{
user2 = FunGameService.GetUser(pc2);
if (user2.Inventory.Squad.Count == 0)
{
return [$"对方尚未设置小队,无法决斗。"];
}
user2.LastTime = DateTime.Now;
pc2.Add("user", user2);
pc2.SaveConfig();
}
else
{
return [$"对方貌似还没有创建存档呢!"];
}
if (user1 != null && user2 != null)
{
Character[] squad1 = [.. user1.Inventory.Characters.Where(c => user1.Inventory.Squad.Contains(c.Id)).Select(c => c.Copy())];
Character[] squad2 = [.. user2.Inventory.Characters.Where(c => user2.Inventory.Squad.Contains(c.Id)).Select(c => c.Copy())];
Team team1 = new($"{user1.Username}的小队", squad1);
Team team2 = new($"{user2.Username}的小队", squad2);
return FunGameActionQueue.NewAndStartTeamGame([team1, team2], 0, 0, false, false, false, false, showAllRound);
}
else
{
return [$"决斗发起失败!"];
}
}
catch (Exception e)
{
return [e.ToString()];
}
}
[HttpPost("fightcustomteam2")]
public List<string> FightCustomTeam2([FromQuery] long? qq = null, [FromQuery] string? name = null, [FromQuery] bool? all = null)
{
try
{
if (name != null)
{
long enemyid = FunGameService.UserIdAndUsername.Where(kv => kv.Value == name).Select(kv => kv.Key).FirstOrDefault();
if (enemyid == 0)
{
return [$"找不到此名称对应的玩家!"];
}
return FightCustomTeam(qq, enemyid, all);
}
return [$"决斗发起失败!"];
}
catch (Exception e)
{
return [e.ToString()];
}
}
[HttpPost("useitem")] [HttpPost("useitem")]
public string UseItem([FromQuery] long? qq = null, [FromQuery] int? id = null, [FromBody] int[]? characters = null) public string UseItem([FromQuery] long? qq = null, [FromQuery] int? id = null, [FromBody] int[]? characters = null)
{ {

View File

@ -464,6 +464,23 @@ namespace Oshima.Core.Utils
foreach (Character inventoryCharacter in characters) foreach (Character inventoryCharacter in characters)
{ {
Character tempCharacter = Factory.OpenFactory.GetInstance<Character>(inventoryCharacter.Id, inventoryCharacter.Name, []);
if (tempCharacter.Id != 0)
{
inventoryCharacter.InitialATK = tempCharacter.InitialATK;
inventoryCharacter.InitialDEF = tempCharacter.InitialDEF;
inventoryCharacter.InitialHP = tempCharacter.InitialHP;
inventoryCharacter.InitialMP = tempCharacter.InitialMP;
inventoryCharacter.InitialSTR = tempCharacter.InitialSTR;
inventoryCharacter.STRGrowth = tempCharacter.STRGrowth;
inventoryCharacter.InitialAGI = tempCharacter.InitialAGI;
inventoryCharacter.AGIGrowth = tempCharacter.AGIGrowth;
inventoryCharacter.InitialINT = tempCharacter.InitialINT;
inventoryCharacter.INTGrowth = tempCharacter.INTGrowth;
inventoryCharacter.InitialSPD = tempCharacter.InitialSPD;
inventoryCharacter.InitialHR = tempCharacter.InitialHR;
inventoryCharacter.InitialMR = tempCharacter.InitialMR;
}
Character realCharacter = CharacterBuilder.Build(inventoryCharacter, false, true, user.Inventory, AllItems, AllSkills, false); Character realCharacter = CharacterBuilder.Build(inventoryCharacter, false, true, user.Inventory, AllItems, AllSkills, false);
// 自动回血 // 自动回血
DateTime now = DateTime.Now; DateTime now = DateTime.Now;