This commit is contained in:
Putoo
2026-07-18 13:11:48 +08:00
parent 723a6861a0
commit 37eb063f33
9 changed files with 315 additions and 100 deletions

View File

@@ -102,10 +102,8 @@ public class FightController : ControllerBase
}
}
var otAttr = await _monsterService.GetMonsterAttrModel(keyId, mainId);
long dueTime = FightTool.GetFightDueTime(userAttr, otAttr);
bool result = await _fightService.AddFight(fightId, areaCode, keyId, mainId, code, scene, mapId, userId,
dueTime, exp,
exp,
copper, petExp, award, pars);
if (result)
{
@@ -177,11 +175,8 @@ public class FightController : ControllerBase
long petExp = 0;
string award = string.Empty;
string pars = "";
var userAttr = await _attrService.GetUserAttrModel(userId);
var otAttr = await _attrService.GetUserAttrModel(otUser.userId);
long dueTime = FightTool.GetFightDueTime(userAttr, otAttr);
bool result = await _fightService.AddFight(fightId, areaCode, keyId, otUser.userId, code, onMapInfo.code,
onMapInfo.mapId, userId, dueTime, exp,
onMapInfo.mapId, userId, exp,
copper, petExp, award, pars);
if (result)
{
@@ -227,57 +222,68 @@ public class FightController : ControllerBase
#region
FightResultModel fightResult = new FightResultModel()
{
result = -1
};
if (!string.IsNullOrEmpty(parms.data))
{
fightResult = JsonConvert.DeserializeObject<FightResultModel>(parms.data);
}
#endregion
//更新攻击
var myAttr = await _attrService.GetUserAttrModel(userId, fight.scene);
UserAttrModel otAttr = new UserAttrModel();
if (fight.code == nameof(GameEnum.FightCode.PVE))
{
otAttr = await _monsterService.GetMonsterAttrModel(fight.keyId, fight.mainId);
if (fightResult.result == 0)
{
otAttr.blood = otAttr.blood + fightResult.otHarm;
otAttr.blood = otAttr.blood < 0 ? 0 : otAttr.blood;
otAttr.blood = otAttr.blood > otAttr.upBlood ? otAttr.upBlood : otAttr.blood;
await _monsterService.SetMonsterBlood(fight.keyId, otAttr.blood);
}
}
else
{
if (fightResult.result == 0)
{
await _fightService.SetUserFightHarm(fight.mainId, fightResult.otHarm);
await _attrService.UpdateUserBlood(fight.mainId, 1, fightResult.otHarm);
await _attrService.AddUserLoadState(fight.mainId, fightResult.otStateData);
await _fightService.HandelFightEnd(fight.mainId, fightResult.otRemData);
}
otAttr = await _attrService.GetUserAttrModel(fight.mainId, fight.scene);
}
if (fightResult.result == 0)
int cool = FightTool.GetFightCool(myAttr.agility, otAttr.agility); //冷却时间
FightResultModel fightResult = new FightResultModel()
{
if (otAttr.blood > 0)
result = -1
};
if (await _fightService.CheckFightLock(userId, parms.key))
{
//此处还需要判断冷却时间
bool isCool = await _fightService.FightIsCool(userId);
if (isCool)
{
myHarm = fightResult.myHarm;
myHarm += await _fightService.GetUserFightHarm(userId);
otHarm = fightResult.otHarm;
await _attrService.UpdateUserBlood(userId, 1, fightResult.myHarm);
await _attrService.AddUserLoadState(userId, fightResult.myStateData);
await _fightService.HandelFightEnd(userId, fightResult.myRemData);
fightResult = FightCompute.ComputeFight(myAttr, otAttr);
if (fightResult.result == 0)
{
//此处记录冷却时间
await _fightService.SetFightCool(userId, cool);
otAttr.blood = otAttr.blood + fightResult.otHarm;
otAttr.blood = otAttr.blood < 0 ? 0 : otAttr.blood;
otAttr.blood = otAttr.blood > otAttr.upBlood ? otAttr.upBlood : otAttr.blood;
if (fight.code == nameof(GameEnum.FightCode.PVE))
{
await _monsterService.SetMonsterBlood(fight.keyId, otAttr.blood);
}
else
{
await _fightService.SetUserFightHarm(fight.mainId, fightResult.otHarm);
await _attrService.UpdateUserBlood(fight.mainId, 1, fightResult.otHarm);
await _attrService.AddUserLoadState(fight.mainId, fightResult.otStateData);
await _fightService.HandelFightEnd(fight.mainId, fightResult.otRemData);
}
if (otAttr.blood > 0)
{
myAttr.blood = myAttr.blood + fightResult.otHarm;
myAttr.blood = myAttr.blood < 0 ? 0 : myAttr.blood;
myAttr.blood = myAttr.blood > myAttr.upBlood ? myAttr.upBlood : myAttr.blood;
myHarm = fightResult.myHarm;
myHarm += await _fightService.GetUserFightHarm(userId);
otHarm = fightResult.otHarm;
await _attrService.UpdateUserBlood(userId, 1, fightResult.myHarm);
await _attrService.AddUserLoadState(userId, fightResult.myStateData);
await _fightService.HandelFightEnd(userId, fightResult.myRemData);
}
}
}
}
var myAttr = await _attrService.GetUserAttrModel(userId, fight.scene);
#endregion
//结束战斗都此处直接返回
if (otAttr.blood < 1 || myAttr.blood < 1)
@@ -312,21 +318,19 @@ public class FightController : ControllerBase
//获取个人负面
var myLoad = await _attrService.GetUserLoadState(userId);
//冷却时间
int cool = FightTool.GetFightCool(myAttr.agility, otAttr.agility);
int exitCopper = otAttr.lev * 5; //退出战斗需要的铜贝
string fightKey = await _fightService.SetFightLock(userId);
var result = new
{
myHarm,
otHarm,
myAttr = myAttr,
otAttr = otAttr,
myAttr = new { no = myAttr.viceId, name = myAttr.name, blood = myAttr.blood, upBlood = myAttr.upBlood },
otAttr = new { no = otAttr.viceId, name = otAttr.name, blood = otAttr.blood, upBlood = otAttr.upBlood },
myDrug = myDrug.drug,
myLoad = myLoad,
exitCopper,
cool,
key = fightKey
};
return PoAction.Ok(result);
}
@@ -631,11 +635,6 @@ public class FightController : ControllerBase
return PoAction.Message("该战斗不可复刻挂机!");
}
if (await _fightService.ValidFight(fight,false) == false)
{
return PoAction.Message("异常的战斗,无法挂机!");
}
var myAttr = await _attrService.GetUserAttrModel(userId, fight.scene);
int diffTime = Convert.ToInt32(fight.okTime - fight.addTime);
diffTime = diffTime < 300 ? 300 : diffTime;

View File

@@ -3,5 +3,5 @@
public class FightParms
{
public string fightId { get; set; }
public string data { get; set; }
public string key { get; set; }
}