12121
This commit is contained in:
@@ -97,12 +97,6 @@ namespace Application.Domain.Entity
|
|||||||
[SugarColumn(IsNullable = true)]
|
[SugarColumn(IsNullable = true)]
|
||||||
public string? pars { get; set; }
|
public string? pars { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 预计用时
|
|
||||||
/// </summary>
|
|
||||||
[SugarColumn(IsNullable = true)]
|
|
||||||
public long? dueTime { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// addTime
|
/// addTime
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ public interface IGameFightService
|
|||||||
Task RemoveFightHarm(string fightId, string userId);
|
Task RemoveFightHarm(string fightId, string userId);
|
||||||
Task<bool> AddFight(string fightId, string areaCode, string keyId, string mainId, string code,
|
Task<bool> AddFight(string fightId, string areaCode, string keyId, string mainId, string code,
|
||||||
string scene, string mapId,
|
string scene, string mapId,
|
||||||
string userId,long dueTime, long exp = 0, long copper = 0, long petExp = 0, string award = "", string pars = "");
|
string userId, long exp = 0, long copper = 0, long petExp = 0, string award = "", string pars = "");
|
||||||
|
|
||||||
Task<bool> SetFightWin(game_fight_data fightData, string winUser, bool setDefMap=true);
|
Task<bool> SetFightWin(game_fight_data fightData, string winUser, bool setDefMap=true);
|
||||||
Task HandleFightData();
|
Task HandleFightData();
|
||||||
@@ -29,7 +29,10 @@ public interface IGameFightService
|
|||||||
Task RemoveFightGoods(string mapId, string mgId);
|
Task RemoveFightGoods(string mapId, string mgId);
|
||||||
Task AutoUseDrug(UserAttrModel user, game_fight_data fight);
|
Task AutoUseDrug(UserAttrModel user, game_fight_data fight);
|
||||||
Task HandelFightEnd(string userId, List<FightRemoveData> data);
|
Task HandelFightEnd(string userId, List<FightRemoveData> data);
|
||||||
Task<bool> ValidFight(game_fight_data fight, bool isBlack = true);
|
Task<bool> CheckFightLock(string userId, string lockStr);
|
||||||
|
Task<string> SetFightLock(string userId);
|
||||||
|
Task<bool> FightIsCool(string userId);
|
||||||
|
Task SetFightCool(string userId, long CoolTime);
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
}
|
}
|
||||||
@@ -94,7 +94,7 @@ public class GameFightService(ISqlSugarClient DbClient, IRedisCache redis) : IGa
|
|||||||
|
|
||||||
public async Task<bool> AddFight(string fightId, string areaCode, string keyId, string mainId, string code,
|
public async Task<bool> AddFight(string fightId, string areaCode, string keyId, string mainId, string code,
|
||||||
string scene, string mapId,
|
string scene, string mapId,
|
||||||
string userId, long dueTime, long exp = 0, long copper = 0, long petExp = 0, string award = "",
|
string userId,long exp = 0, long copper = 0, long petExp = 0, string award = "",
|
||||||
string pars = "")
|
string pars = "")
|
||||||
{
|
{
|
||||||
long addTime = TimeExtend.GetTimeStampMilliseconds;
|
long addTime = TimeExtend.GetTimeStampMilliseconds;
|
||||||
@@ -119,7 +119,6 @@ public class GameFightService(ISqlSugarClient DbClient, IRedisCache redis) : IGa
|
|||||||
petExp = petExp,
|
petExp = petExp,
|
||||||
award = award,
|
award = award,
|
||||||
pars = pars,
|
pars = pars,
|
||||||
dueTime = dueTime,
|
|
||||||
addTime = addTime,
|
addTime = addTime,
|
||||||
okTime = 0,
|
okTime = 0,
|
||||||
endTime = endTime
|
endTime = endTime
|
||||||
@@ -382,11 +381,6 @@ public class GameFightService(ISqlSugarClient DbClient, IRedisCache redis) : IGa
|
|||||||
|
|
||||||
public async Task HandleFight(game_fight_data fightData)
|
public async Task HandleFight(game_fight_data fightData)
|
||||||
{
|
{
|
||||||
if (await ValidFight(fightData) == false)
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
string winUser = fightData.winUser;
|
string winUser = fightData.winUser;
|
||||||
string lowUser = fightData.userId == winUser ? fightData.mainId : fightData.userId;
|
string lowUser = fightData.userId == winUser ? fightData.mainId : fightData.userId;
|
||||||
|
|
||||||
@@ -702,25 +696,33 @@ public class GameFightService(ISqlSugarClient DbClient, IRedisCache redis) : IGa
|
|||||||
await Task.CompletedTask;
|
await Task.CompletedTask;
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task<bool> ValidFight(game_fight_data fight, bool isBlack = true)
|
public async Task<bool> CheckFightLock(string userId, string lockStr)
|
||||||
{
|
{
|
||||||
bool result = true;
|
string key = string.Format(BaseCache.BaseCacheKey, "FightLock");
|
||||||
if (fight.dueTime > 0)
|
var onData = await redis.GetHashAsync<string>(key, userId);
|
||||||
{
|
return onData == lockStr;
|
||||||
int diffTime = Convert.ToInt32(fight.okTime - fight.addTime);
|
|
||||||
if (diffTime < 3000)
|
|
||||||
{
|
|
||||||
result = diffTime >= fight.dueTime;
|
|
||||||
if (result == false && isBlack) //异常处理
|
|
||||||
{
|
|
||||||
//封禁账号
|
|
||||||
var userService = App.GetService<IUnitUserService>();
|
|
||||||
await userService.BlackUser(fight.userId);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return result;
|
public async Task<string> SetFightLock(string userId)
|
||||||
|
{
|
||||||
|
string lockStr = StringAssist.NewGuid;
|
||||||
|
string key = string.Format(BaseCache.BaseCacheKey, "FightLock");
|
||||||
|
await redis.AddHashAsync(key, userId, lockStr);
|
||||||
|
return lockStr;
|
||||||
|
}
|
||||||
|
|
||||||
|
public async Task<bool> FightIsCool(string userId)
|
||||||
|
{
|
||||||
|
string key = string.Format(BaseCache.BaseCacheKey, "FightCool");
|
||||||
|
var onData = await redis.GetHashAsync<long>(key, userId);
|
||||||
|
return TimeExtend.GetTimeStampMilliseconds >= onData;
|
||||||
|
}
|
||||||
|
|
||||||
|
public async Task SetFightCool(string userId, long CoolTime)
|
||||||
|
{
|
||||||
|
long lockStr = TimeExtend.GetTimeStampMilliseconds + CoolTime;
|
||||||
|
string key = string.Format(BaseCache.BaseCacheKey, "FightCool");
|
||||||
|
await redis.AddHashAsync(key, userId, lockStr);
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|||||||
217
Service/Application.Domain/Tool/Base/FightCompute.cs
Normal file
217
Service/Application.Domain/Tool/Base/FightCompute.cs
Normal file
@@ -0,0 +1,217 @@
|
|||||||
|
using Dm.util;
|
||||||
|
|
||||||
|
namespace Application.Domain;
|
||||||
|
|
||||||
|
public class FightCompute
|
||||||
|
{
|
||||||
|
public static FightResultModel ComputeFight(UserAttrModel atkUser, UserAttrModel defUser)
|
||||||
|
{
|
||||||
|
int result = 0;
|
||||||
|
int myHarm = 0;
|
||||||
|
int otHarm = 0;
|
||||||
|
List<string> myStateData = new List<string>();
|
||||||
|
List<FightRemoveData> myRemData = new List<FightRemoveData>();
|
||||||
|
List<string> otStateData = new List<string>();
|
||||||
|
List<FightRemoveData> otRemData = new List<FightRemoveData>();
|
||||||
|
|
||||||
|
var atkHandle = UnitFight(atkUser, defUser);
|
||||||
|
myHarm += atkHandle.atkHarm;
|
||||||
|
otHarm += atkHandle.defHarm;
|
||||||
|
otStateData.AddRange(atkHandle.stateData);
|
||||||
|
otRemData.AddRange(atkHandle.remData);
|
||||||
|
if (defUser.IsSystem == 1) {
|
||||||
|
var defHandle = UnitFight(defUser, atkUser);
|
||||||
|
myHarm += defHandle.defHarm;
|
||||||
|
otHarm += defHandle.atkHarm;
|
||||||
|
myStateData.AddRange(defHandle.stateData);
|
||||||
|
myRemData.AddRange(defHandle.remData);
|
||||||
|
}
|
||||||
|
|
||||||
|
return new FightResultModel() {
|
||||||
|
result = result,
|
||||||
|
myHarm = myHarm,
|
||||||
|
otHarm = otHarm,
|
||||||
|
myStateData = myStateData,
|
||||||
|
myRemData = myRemData,
|
||||||
|
otStateData = otStateData,
|
||||||
|
otRemData = otRemData
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
private static UnitFightResult UnitFight(UserAttrModel atkUser, UserAttrModel defUser)
|
||||||
|
{
|
||||||
|
int atkHarm = 0;
|
||||||
|
int defHarm = 0;
|
||||||
|
List<string> stateData = new List<string>();
|
||||||
|
List<FightRemoveData> remData = new List<FightRemoveData>();
|
||||||
|
//闪避处理
|
||||||
|
if (defUser.Dodge > 0)
|
||||||
|
{
|
||||||
|
decimal dodgeRide = defUser.Dodge - atkUser.Deadly + defUser.DeadlyLess;
|
||||||
|
if (dodgeRide > 0)
|
||||||
|
{
|
||||||
|
if (randomTrigger(dodgeRide))
|
||||||
|
{
|
||||||
|
return new UnitFightResult()
|
||||||
|
{
|
||||||
|
atkHarm = 0,
|
||||||
|
defHarm = 0,
|
||||||
|
stateData = stateData,
|
||||||
|
remData = remData
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//士气处理
|
||||||
|
if (atkUser.upMorale > 0)
|
||||||
|
{
|
||||||
|
atkUser.minAtk = Convert.ToInt32(atkUser.minAtk * (1.0 + (atkUser.morale / atkUser.upMorale) * 0.3));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (defUser.upMorale > 0)
|
||||||
|
{
|
||||||
|
defUser.defense = Convert.ToInt32(defUser.defense * (1.0 + (atkUser.morale / atkUser.upMorale) * 0.3));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (atkUser.minAtk > defUser.defense && defUser.defense > 0)
|
||||||
|
{
|
||||||
|
double harmRide = (atkUser.minAtk - defUser.defense) / defUser.defense;
|
||||||
|
harmRide = harmRide > 1.2 ? 1.2 : harmRide;
|
||||||
|
double fight_Harm = harmRide * atkUser.maxAtk;
|
||||||
|
defHarm +=Convert.ToInt32( 0 - fight_Harm);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
defHarm = -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
//暴击处理
|
||||||
|
if (atkUser.Crit > 0)
|
||||||
|
{
|
||||||
|
if (randomTrigger(atkUser.Crit))
|
||||||
|
{
|
||||||
|
defHarm = Convert.ToInt32(defHarm * 1.5) ;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//处理反弹
|
||||||
|
if (defUser.Rebound > 0)
|
||||||
|
{
|
||||||
|
decimal reboundRide = defUser.Rebound = atkUser.ReboundLess;
|
||||||
|
if (reboundRide > 0)
|
||||||
|
{
|
||||||
|
atkHarm += Convert.ToInt32( defHarm * reboundRide);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
defHarm +=Convert.ToInt32(0 - atkUser.Harm_Add) ; //额外伤害
|
||||||
|
//连击处理
|
||||||
|
if (atkUser.Atk_Next > 0)
|
||||||
|
{
|
||||||
|
if (randomTrigger(atkUser.Atk_Next))
|
||||||
|
{
|
||||||
|
defHarm =Convert.ToInt32( defHarm * 1.3);
|
||||||
|
atkHarm += Convert.ToInt32(atkHarm * 1.3) ;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//免伤处理
|
||||||
|
if (defUser.NoHarm > 0 && defHarm < -1)
|
||||||
|
{
|
||||||
|
defHarm = Convert.ToInt32( defHarm * (1 - defUser.NoHarm));
|
||||||
|
defHarm = defHarm > 0 ? 0 : defHarm;
|
||||||
|
}
|
||||||
|
|
||||||
|
//吸血处理
|
||||||
|
if (defHarm < 0 && atkUser.InBlood > 0)
|
||||||
|
{
|
||||||
|
decimal inBloodRide = atkUser.InBlood - defUser.Punish;
|
||||||
|
if (inBloodRide > 0)
|
||||||
|
{
|
||||||
|
atkHarm += Convert.ToInt32((0 - defHarm) * inBloodRide);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//#region 状态类处理
|
||||||
|
decimal slow = atkUser.Slow - defUser.SlowLess;
|
||||||
|
if (randomTrigger(slow))
|
||||||
|
{
|
||||||
|
stateData.Add("Slow");
|
||||||
|
}
|
||||||
|
|
||||||
|
decimal poison = atkUser.Poison - defUser.PoisonLess;
|
||||||
|
if (randomTrigger(poison))
|
||||||
|
{
|
||||||
|
stateData.Add("Poison");
|
||||||
|
}
|
||||||
|
|
||||||
|
decimal curse = atkUser.Curse - defUser.CurseLess;
|
||||||
|
if (randomTrigger(curse))
|
||||||
|
{
|
||||||
|
stateData.Add("Curse");
|
||||||
|
}
|
||||||
|
|
||||||
|
decimal weaken = atkUser.Weaken - defUser.WeakenLess;
|
||||||
|
if (randomTrigger(weaken))
|
||||||
|
{
|
||||||
|
stateData.Add("Weaken");
|
||||||
|
}
|
||||||
|
|
||||||
|
decimal depressed = atkUser.Depressed - defUser.DepressedLess;
|
||||||
|
if (randomTrigger(depressed))
|
||||||
|
{
|
||||||
|
stateData.Add("Depressed");
|
||||||
|
}
|
||||||
|
|
||||||
|
decimal breach = atkUser.Breach - defUser.BreachLess;
|
||||||
|
if (randomTrigger(breach))
|
||||||
|
{
|
||||||
|
stateData.Add("Breach");
|
||||||
|
}
|
||||||
|
|
||||||
|
decimal palsyatk = atkUser.PalsyAtk - defUser.PalsyAtkLess;
|
||||||
|
if (randomTrigger(palsyatk))
|
||||||
|
{
|
||||||
|
stateData.Add("PalsyAtk");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (randomTrigger(atkUser.Del_Fashion))
|
||||||
|
{
|
||||||
|
if (defUser.code == nameof(UserEnum.AttrCode.Person))
|
||||||
|
{
|
||||||
|
remData.Add(new FightRemoveData()
|
||||||
|
{
|
||||||
|
code = "Equ",
|
||||||
|
par = "Fashion",
|
||||||
|
count = 1
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//#endregion
|
||||||
|
|
||||||
|
return new UnitFightResult()
|
||||||
|
{
|
||||||
|
atkHarm = atkHarm,
|
||||||
|
defHarm = defHarm,
|
||||||
|
stateData = stateData,
|
||||||
|
remData = remData
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
private static bool randomTrigger(decimal rate)
|
||||||
|
{
|
||||||
|
Random random = new Random();
|
||||||
|
double rand = random.NextDouble();
|
||||||
|
return rand < Convert.ToDouble(rate);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public class UnitFightResult
|
||||||
|
{
|
||||||
|
public int atkHarm { get; set; }
|
||||||
|
public int defHarm { get; set; }
|
||||||
|
public List<string> stateData { get; set; }
|
||||||
|
public List<FightRemoveData> remData { get; set; }
|
||||||
|
}
|
||||||
@@ -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,
|
bool result = await _fightService.AddFight(fightId, areaCode, keyId, mainId, code, scene, mapId, userId,
|
||||||
dueTime, exp,
|
exp,
|
||||||
copper, petExp, award, pars);
|
copper, petExp, award, pars);
|
||||||
if (result)
|
if (result)
|
||||||
{
|
{
|
||||||
@@ -177,11 +175,8 @@ public class FightController : ControllerBase
|
|||||||
long petExp = 0;
|
long petExp = 0;
|
||||||
string award = string.Empty;
|
string award = string.Empty;
|
||||||
string pars = "";
|
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,
|
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);
|
copper, petExp, award, pars);
|
||||||
if (result)
|
if (result)
|
||||||
{
|
{
|
||||||
@@ -227,33 +222,43 @@ public class FightController : ControllerBase
|
|||||||
|
|
||||||
#region 此处处理战斗
|
#region 此处处理战斗
|
||||||
|
|
||||||
FightResultModel fightResult = new FightResultModel()
|
var myAttr = await _attrService.GetUserAttrModel(userId, fight.scene);
|
||||||
{
|
|
||||||
result = -1
|
|
||||||
};
|
|
||||||
if (!string.IsNullOrEmpty(parms.data))
|
|
||||||
{
|
|
||||||
fightResult = JsonConvert.DeserializeObject<FightResultModel>(parms.data);
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
//更新攻击
|
|
||||||
UserAttrModel otAttr = new UserAttrModel();
|
UserAttrModel otAttr = new UserAttrModel();
|
||||||
if (fight.code == nameof(GameEnum.FightCode.PVE))
|
if (fight.code == nameof(GameEnum.FightCode.PVE))
|
||||||
{
|
{
|
||||||
otAttr = await _monsterService.GetMonsterAttrModel(fight.keyId, fight.mainId);
|
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
|
else
|
||||||
{
|
{
|
||||||
|
otAttr = await _attrService.GetUserAttrModel(fight.mainId, fight.scene);
|
||||||
|
}
|
||||||
|
|
||||||
|
int cool = FightTool.GetFightCool(myAttr.agility, otAttr.agility); //冷却时间
|
||||||
|
|
||||||
|
FightResultModel fightResult = new FightResultModel()
|
||||||
|
{
|
||||||
|
result = -1
|
||||||
|
};
|
||||||
|
|
||||||
|
if (await _fightService.CheckFightLock(userId, parms.key))
|
||||||
|
{
|
||||||
|
//此处还需要判断冷却时间
|
||||||
|
bool isCool = await _fightService.FightIsCool(userId);
|
||||||
|
if (isCool)
|
||||||
|
{
|
||||||
|
fightResult = FightCompute.ComputeFight(myAttr, otAttr);
|
||||||
if (fightResult.result == 0)
|
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 _fightService.SetUserFightHarm(fight.mainId, fightResult.otHarm);
|
||||||
await _attrService.UpdateUserBlood(fight.mainId, 1, fightResult.otHarm);
|
await _attrService.UpdateUserBlood(fight.mainId, 1, fightResult.otHarm);
|
||||||
@@ -261,13 +266,12 @@ public class FightController : ControllerBase
|
|||||||
await _fightService.HandelFightEnd(fight.mainId, fightResult.otRemData);
|
await _fightService.HandelFightEnd(fight.mainId, fightResult.otRemData);
|
||||||
}
|
}
|
||||||
|
|
||||||
otAttr = await _attrService.GetUserAttrModel(fight.mainId, fight.scene);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (fightResult.result == 0)
|
|
||||||
{
|
|
||||||
if (otAttr.blood > 0)
|
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 = fightResult.myHarm;
|
||||||
myHarm += await _fightService.GetUserFightHarm(userId);
|
myHarm += await _fightService.GetUserFightHarm(userId);
|
||||||
otHarm = fightResult.otHarm;
|
otHarm = fightResult.otHarm;
|
||||||
@@ -276,8 +280,10 @@ public class FightController : ControllerBase
|
|||||||
await _fightService.HandelFightEnd(userId, fightResult.myRemData);
|
await _fightService.HandelFightEnd(userId, fightResult.myRemData);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
var myAttr = await _attrService.GetUserAttrModel(userId, fight.scene);
|
#endregion
|
||||||
|
|
||||||
//结束战斗都此处直接返回
|
//结束战斗都此处直接返回
|
||||||
if (otAttr.blood < 1 || myAttr.blood < 1)
|
if (otAttr.blood < 1 || myAttr.blood < 1)
|
||||||
@@ -312,21 +318,19 @@ public class FightController : ControllerBase
|
|||||||
//获取个人负面
|
//获取个人负面
|
||||||
var myLoad = await _attrService.GetUserLoadState(userId);
|
var myLoad = await _attrService.GetUserLoadState(userId);
|
||||||
|
|
||||||
//冷却时间
|
|
||||||
int cool = FightTool.GetFightCool(myAttr.agility, otAttr.agility);
|
|
||||||
|
|
||||||
|
|
||||||
int exitCopper = otAttr.lev * 5; //退出战斗需要的铜贝
|
int exitCopper = otAttr.lev * 5; //退出战斗需要的铜贝
|
||||||
|
string fightKey = await _fightService.SetFightLock(userId);
|
||||||
var result = new
|
var result = new
|
||||||
{
|
{
|
||||||
myHarm,
|
myHarm,
|
||||||
otHarm,
|
otHarm,
|
||||||
myAttr = myAttr,
|
myAttr = new { no = myAttr.viceId, name = myAttr.name, blood = myAttr.blood, upBlood = myAttr.upBlood },
|
||||||
otAttr = otAttr,
|
otAttr = new { no = otAttr.viceId, name = otAttr.name, blood = otAttr.blood, upBlood = otAttr.upBlood },
|
||||||
myDrug = myDrug.drug,
|
myDrug = myDrug.drug,
|
||||||
myLoad = myLoad,
|
myLoad = myLoad,
|
||||||
exitCopper,
|
exitCopper,
|
||||||
cool,
|
cool,
|
||||||
|
key = fightKey
|
||||||
};
|
};
|
||||||
return PoAction.Ok(result);
|
return PoAction.Ok(result);
|
||||||
}
|
}
|
||||||
@@ -631,11 +635,6 @@ public class FightController : ControllerBase
|
|||||||
return PoAction.Message("该战斗不可复刻挂机!");
|
return PoAction.Message("该战斗不可复刻挂机!");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (await _fightService.ValidFight(fight,false) == false)
|
|
||||||
{
|
|
||||||
return PoAction.Message("异常的战斗,无法挂机!");
|
|
||||||
}
|
|
||||||
|
|
||||||
var myAttr = await _attrService.GetUserAttrModel(userId, fight.scene);
|
var myAttr = await _attrService.GetUserAttrModel(userId, fight.scene);
|
||||||
int diffTime = Convert.ToInt32(fight.okTime - fight.addTime);
|
int diffTime = Convert.ToInt32(fight.okTime - fight.addTime);
|
||||||
diffTime = diffTime < 300 ? 300 : diffTime;
|
diffTime = diffTime < 300 ? 300 : diffTime;
|
||||||
|
|||||||
@@ -3,5 +3,5 @@
|
|||||||
public class FightParms
|
public class FightParms
|
||||||
{
|
{
|
||||||
public string fightId { get; set; }
|
public string fightId { get; set; }
|
||||||
public string data { get; set; }
|
public string key { get; set; }
|
||||||
}
|
}
|
||||||
@@ -10,10 +10,10 @@
|
|||||||
<Abutton @click="FightAtk">攻击</Abutton>
|
<Abutton @click="FightAtk">攻击</Abutton>
|
||||||
<span> . </span>
|
<span> . </span>
|
||||||
<span v-if="otAttr.code == 'Monster'">
|
<span v-if="otAttr.code == 'Monster'">
|
||||||
<Abar :href='"/prop/monster?m=" + otAttr.viceId'>查看</Abar>
|
<Abar :href='"/prop/monster?m=" + otAttr.no'>查看</Abar>
|
||||||
</span>
|
</span>
|
||||||
<span v-else>
|
<span v-else>
|
||||||
<Abar :href='"/user/user?no=" + otAttr.viceId'>查看</Abar>
|
<Abar :href='"/user/user?no=" + otAttr.no'>查看</Abar>
|
||||||
</span>
|
</span>
|
||||||
<span> . </span>
|
<span> . </span>
|
||||||
<Abutton @click="ExitFight">撤退({{ exitCopper }}铜贝)</Abutton>
|
<Abutton @click="ExitFight">撤退({{ exitCopper }}铜贝)</Abutton>
|
||||||
@@ -68,6 +68,7 @@ const myDrug = ref<Array<any>>([]);
|
|||||||
const myLoad = ref<Array<any>>([]);
|
const myLoad = ref<Array<any>>([]);
|
||||||
const exitCopper = ref(0);
|
const exitCopper = ref(0);
|
||||||
const coolTime = ref(0);
|
const coolTime = ref(0);
|
||||||
|
const fightKey = ref('');
|
||||||
|
|
||||||
let coolLock = false;//冷却锁
|
let coolLock = false;//冷却锁
|
||||||
const coolTimer = ref(0);//冷却定时器
|
const coolTimer = ref(0);//冷却定时器
|
||||||
@@ -89,8 +90,8 @@ onUnmounted(() => {
|
|||||||
})
|
})
|
||||||
|
|
||||||
/**加载方法 */
|
/**加载方法 */
|
||||||
const BindData = async (data: string): Promise<void> => {
|
const BindData = async (fig:string): Promise<void> => {
|
||||||
let result = await FightService.Fight(fightId, data);
|
let result = await FightService.Fight(fightId, fig);
|
||||||
if (result.code == 0) {
|
if (result.code == 0) {
|
||||||
myAttr.value = result.data.myAttr as IUserAttr;
|
myAttr.value = result.data.myAttr as IUserAttr;
|
||||||
otAttr.value = result.data.otAttr as IUserAttr;
|
otAttr.value = result.data.otAttr as IUserAttr;
|
||||||
@@ -101,6 +102,7 @@ const BindData = async (data: string): Promise<void> => {
|
|||||||
dataLock = false;
|
dataLock = false;
|
||||||
myHarm.value = result.data.myHarm;
|
myHarm.value = result.data.myHarm;
|
||||||
otHarm.value = result.data.otHarm;
|
otHarm.value = result.data.otHarm;
|
||||||
|
fightKey.value = result.data.key;
|
||||||
}
|
}
|
||||||
else if (result.code == 100) {
|
else if (result.code == 100) {
|
||||||
PageExtend.RedirectTo("/fight/result?f=" + fightId);
|
PageExtend.RedirectTo("/fight/result?f=" + fightId);
|
||||||
@@ -151,9 +153,7 @@ const UseFightDrug = async (drugId: string) => {
|
|||||||
const FightAtk = async () => {
|
const FightAtk = async () => {
|
||||||
if (coolLock == false && dataLock == false) {
|
if (coolLock == false && dataLock == false) {
|
||||||
StartCool();
|
StartCool();
|
||||||
let result = FightTool.FightHandle(myAttr.value, otAttr.value);
|
await BindData(fightKey.value);
|
||||||
let data = JSON.stringify(result);
|
|
||||||
await BindData(data);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -22,10 +22,10 @@ export class FightService {
|
|||||||
* 战斗接口
|
* 战斗接口
|
||||||
* POST /Fight/Fight
|
* POST /Fight/Fight
|
||||||
* @param fightId body
|
* @param fightId body
|
||||||
* @param data body
|
* @param key body
|
||||||
*/
|
*/
|
||||||
static async Fight(fightId: string, data: string) {
|
static async Fight(fightId: string, key: string) {
|
||||||
return await ApiService.Request("post", "/Fight/Fight", { fightId, data });
|
return await ApiService.Request("post", "/Fight/Fight", { fightId, key });
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
Binary file not shown.
Reference in New Issue
Block a user