diff --git a/Build_God_Admin_Frontend/Frontend/src/views/admin/LevelsView.vue b/Build_God_Admin_Frontend/Frontend/src/views/admin/LevelsView.vue
index 4cb4600..9fe986e 100644
--- a/Build_God_Admin_Frontend/Frontend/src/views/admin/LevelsView.vue
+++ b/Build_God_Admin_Frontend/Frontend/src/views/admin/LevelsView.vue
@@ -64,10 +64,6 @@ const closeDialog = () => {
}
const saveLevel = async () => {
- if (!formData.value.name || !formData.value.currentLevelMinExp || !formData.value.levelId) {
- ElMessage.error('请填写必填项')
- return
- }
if (isEditing.value) {
if (formData.value !== undefined) {
diff --git a/Build_God_Admin_Frontend/Frontend/src/views/admin/PillsView.vue b/Build_God_Admin_Frontend/Frontend/src/views/admin/PillsView.vue
index a75937b..e55adec 100644
--- a/Build_God_Admin_Frontend/Frontend/src/views/admin/PillsView.vue
+++ b/Build_God_Admin_Frontend/Frontend/src/views/admin/PillsView.vue
@@ -57,6 +57,7 @@ const translateRarity = (id: number) => {
}
const translateLevel = (id: number) => {
+ console.log(levels)
var item = levels.value.find(x => x.levelId == id);
if (item) {
return item.name
@@ -90,18 +91,6 @@ const closeDialog = () => {
}
const savePill = async () => {
- console.log('formdata', formData.value)
- if (!formData.value.name
- || !formData.value.type
- || !formData.value.rarity
- || !formData.value.money
- || !formData.value.description
- || !formData.value.requirdLevelId
- || !formData.value.effectValue
- || !formData.value.duration) {
- ElMessage.error('请填写必填项')
- return
- }
if (isEditing.value) {
const index = pills.value.findIndex(p => p.id === formData.value.id)
@@ -262,7 +251,7 @@ const fetchLevels = async () => {
-
+
diff --git a/Build_God_Api/Build_God_Api/Services/CharacterService.cs b/Build_God_Api/Build_God_Api/Services/CharacterService.cs
index 25c049f..5e8591c 100644
--- a/Build_God_Api/Build_God_Api/Services/CharacterService.cs
+++ b/Build_God_Api/Build_God_Api/Services/CharacterService.cs
@@ -7,7 +7,7 @@ using static Build_God_Api.DB.BagItem;
namespace Build_God_Api.Services
{
-public interface ICharacterService
+ public interface ICharacterService
{
public Task GetCharacterByAccountId(int accountId);
public Task> GetCharactersByAccountId(int accountId);
@@ -44,7 +44,7 @@ public interface ICharacterService
public Task StopTraining(int characterId);
}
- public class CharacterService(ISqlSugarClient db,
+ public class CharacterService(ISqlSugarClient db,
ICurrentUserService currentUserService,
ICharacterAttributeCalculateService calculateService,
IBagService bagService,
@@ -62,7 +62,7 @@ public interface ICharacterService
var currentLevel = await db.Queryable().FirstAsync(x => x.LevelId == character.LevelId);
var nextLevelId = currentLevel?.NextLevelId ?? 1;
var nextLevel = await db.Queryable().FirstAsync(x => x.LevelId == nextLevelId) ?? throw new Exception("你暂时无敌了,没有等级可以突破了");
-
+
if (character.CurrentExp < nextLevel.CurrentLevelMinExp)
{
throw new Exception($"距离可以突破你还差 {nextLevel.CurrentLevelMinExp - character.CurrentExp}");
@@ -106,7 +106,7 @@ public interface ICharacterService
decimal randomValue = GenerateSecureRandomDecimal(0, 100, 1);
bool isSuccess = randomValue < character.BreakthroughRate;
-
+
if (isSuccess)
{
character.LevelId = nextLevelId;
@@ -122,16 +122,16 @@ public interface ICharacterService
character.BreakthroughRate = 100;
}
}
-
+
await db.Updateable(character).ExecuteCommandAsync();
return false;
}
public async Task StartTraining(int characterId)
{
- var character = await db.Queryable().FirstAsync(x => x.Id == characterId)
+ var character = await db.Queryable().FirstAsync(x => x.Id == characterId)
?? throw new Exception("角色不存在");
-
+
if (character.TrainingOn.HasValue)
{
throw new Exception("你已经在打坐了");
@@ -144,7 +144,7 @@ public interface ICharacterService
public async Task StopTraining(int characterId)
{
- var character = await db.Queryable().FirstAsync(x => x.Id == characterId)
+ var character = await db.Queryable().FirstAsync(x => x.Id == characterId)
?? throw new Exception("角色不存在");
if (!character.TrainingOn.HasValue)
@@ -153,16 +153,16 @@ public interface ICharacterService
}
var duration = DateTime.Now - character.TrainingOn.Value;
- var seconds = (decimal)duration.TotalSeconds;
-
- // exp = 0.1 * seconds * level * level * (1 + buff)
- var expGained = 0.01m * seconds * character.LevelId * character.LevelId * (1 + 0);
+ var seconds = duration.TotalSeconds;
- character.CurrentExp += Math.Round(expGained);
+ // exp = 0.02 * seconds * level^1.5 * (1 + buff)
+ var expGained = Convert.ToDecimal(0.02 * seconds * Math.Pow(character.LevelId, 1.5) * (1 + 0));
+ var result = Math.Round(expGained);
+ character.CurrentExp += result;
character.TrainingOn = null;
await db.Updateable(character).ExecuteCommandAsync();
- return expGained;
+ return result;
}
private readonly RandomNumberGenerator _rng = RandomNumberGenerator.Create();
@@ -196,7 +196,7 @@ public interface ICharacterService
public async Task SelectCharacter(int characterId)
{
- var character = await db.Queryable().FirstAsync(x => x.Id == characterId && x.AccountId == currentUserService.UserId && x.isLocked == false)
+ var character = await db.Queryable().FirstAsync(x => x.Id == characterId && x.AccountId == currentUserService.UserId && x.isLocked == false)
?? throw new Exception("角色不存在");
character.LastLogin = DateTime.Now;
await db.Updateable(character).ExecuteCommandAsync();
@@ -211,7 +211,7 @@ public interface ICharacterService
return await db.Queryable().AnyAsync(x => x.Name == name);
}
-public async Task GetCharacterByAccountId(int accountId)
+ public async Task GetCharacterByAccountId(int accountId)
{
return await db.Queryable().FirstAsync(x => x.AccountId == accountId && x.isLocked == false);
}
@@ -291,7 +291,7 @@ public async Task GetCharacterByAccountId(int accountId)
NextLevelRequiredPillId = nextLevelRequiredPillId,
NextLevelRequiredPillName = nextLevelRequiredPillName,
NextLevelRequiredPillQuantity = nextLevelRequiredPillQuantity,
- TrainingExpRate = 0.01m,
+ TrainingExpRate = 0.02m,
LastLogin = c.LastLogin,
CreatedOn = c.CreatedOn
});
@@ -331,7 +331,7 @@ public async Task GetCharacterByAccountId(int accountId)
Name = character.Name,
AccountId = currentUserService.UserId,
CurrentExp = 0,
- LevelId = 1,
+ LevelId = 10,
Money = 0,
CurrentHP = 100,
ProfessionId = character.ProfessionId,
diff --git a/Build_God_Api/Build_God_Api/Services/PillService.cs b/Build_God_Api/Build_God_Api/Services/PillService.cs
index 7dfbb18..31ac45a 100644
--- a/Build_God_Api/Build_God_Api/Services/PillService.cs
+++ b/Build_God_Api/Build_God_Api/Services/PillService.cs
@@ -48,7 +48,7 @@ namespace Build_God_Api.Services
public async Task> GetAll()
{
- return await db.Queryable().ToListAsync();
+ return await db.Queryable().OrderBy(x=>x.RequirdLevelId).ToListAsync();
}
public async Task Update(Pill item)
diff --git a/Build_God_Game/src/views/GameView.vue b/Build_God_Game/src/views/GameView.vue
index 11fbbfa..1eb206a 100644
--- a/Build_God_Game/src/views/GameView.vue
+++ b/Build_God_Game/src/views/GameView.vue
@@ -87,7 +87,7 @@ const handleBreakthrough = async () => {
@@ -106,7 +106,7 @@ const handleBreakthrough = async () => {