Browse Source

Merge pull request #602 from eesast/dev

fix: 🚑 fix the bug about adding scores
tags/v0.1.0
shangfengh GitHub 2 years ago
parent
commit
028efe02d2
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 19 additions and 32 deletions
  1. +1
    -0
      docs/GameRules.md
  2. +2
    -1
      docs/版本更新说明.md
  3. +11
    -23
      logic/GameClass/GameObj/Map/Map.cs
  4. +3
    -5
      logic/Gaming/CharacterManager.cs
  5. +1
    -2
      logic/Gaming/SkillManager/SkillManager.ActiveSkill.cs
  6. +1
    -1
      logic/Preparation/Utility/GameData.cs

+ 1
- 0
docs/GameRules.md View File

@@ -179,6 +179,7 @@ $$
- 使学生沉迷时,得50分。 - 使学生沉迷时,得50分。
- 使学生眩晕时,得20*眩晕时长(/s)分。 - 使学生眩晕时,得20*眩晕时长(/s)分。
- 每淘汰一个学生,得1000分 - 每淘汰一个学生,得1000分
- 摧毁一个TTechOtaku的机器人,得50分。


### 学生 ### 学生
- 学生每完成n%的作业,得2n分 - 学生每完成n%的作业,得2n分


+ 2
- 1
docs/版本更新说明.md View File

@@ -71,4 +71,5 @@
- fix:修复了开校门的bug - fix:修复了开校门的bug


# 5月25日更新 # 5月25日更新
- fix:修复了Semaphore设置错误的问题
- fix:修复了Semaphore设置错误的问题
- fix:修复了终局得分的问题

+ 11
- 23
logic/GameClass/GameObj/Map/Map.cs View File

@@ -85,8 +85,11 @@ namespace GameClass.GameObj
} }
public void MapDieStudent() public void MapDieStudent()
{ {
if (Interlocked.Increment(ref numOfNoHpStudent) == GameData.numOfStudent)
uint noHp = Interlocked.Increment(ref numOfNoHpStudent);
ghost!.AddScore(GameData.TrickerScoreStudentDie);
if (noHp == GameData.numOfStudent)
{ {
AddScoreFromAddict();
Timer.IsGaming = false; Timer.IsGaming = false;
return; return;
} }
@@ -97,11 +100,15 @@ namespace GameClass.GameObj
public void MapAddictStudent() public void MapAddictStudent()
{ {
if (Interlocked.Increment(ref numOfNoHpStudent) == GameData.numOfStudent) if (Interlocked.Increment(ref numOfNoHpStudent) == GameData.numOfStudent)
{
AddScoreFromAddict();
Timer.IsGaming = false; Timer.IsGaming = false;
}
} }
public void MapRescueStudent() public void MapRescueStudent()
{ {
Interlocked.Decrement(ref numOfNoHpStudent);
if (Timer.IsGaming)
Interlocked.Decrement(ref numOfNoHpStudent);
} }


private void OpenEmergencyExit() private void OpenEmergencyExit()
@@ -123,7 +130,7 @@ namespace GameClass.GameObj
} }
private void AddScoreFromAddict() private void AddScoreFromAddict()
{ {
ghost.AddScore(GameData.TrickerScoreStudentDie * (GameData.numOfStudent - NumOfRemovedStudent));
} }




@@ -187,26 +194,7 @@ namespace GameClass.GameObj
} }
return player; return player;
} }
public Character FindGhost()
{
gameObjLockDict[GameObjType.Character].EnterReadLock();
try
{
int i;
for (i = 0; i < (gameObjDict[GameObjType.Character]).Count - 1; ++i)
{
if (((Character)gameObjDict[GameObjType.Character][i]).IsGhost())
{
return ((Character)gameObjDict[GameObjType.Character][i]);
}
}
return ((Character)gameObjDict[GameObjType.Character][i]);
}
finally
{
gameObjLockDict[GameObjType.Character].ExitReadLock();
}
}
public Ghost? ghost = null;
public Character? FindPlayerToAction(long playerID) public Character? FindPlayerToAction(long playerID)
{ {
Character? player = null; Character? player = null;


+ 3
- 5
logic/Gaming/CharacterManager.cs View File

@@ -47,7 +47,7 @@ namespace Gaming
else else
{ {
if (GameData.IsGhost(characterType)) if (GameData.IsGhost(characterType))
newPlayer = new Ghost(pos, GameData.characterRadius, characterType);
newPlayer = gameMap.ghost = new Ghost(pos, GameData.characterRadius, characterType);
else else
{ {
newPlayer = new Student(pos, GameData.characterRadius, characterType); newPlayer = new Student(pos, GameData.characterRadius, characterType);
@@ -223,7 +223,6 @@ namespace Gaming


if (player.CharacterType == CharacterType.Robot) if (player.CharacterType == CharacterType.Robot)
{ {
ghost.AddScore(GameData.TrickerScoreDestroyRobot);
Die(player); Die(player);
return; return;
} }
@@ -235,7 +234,6 @@ namespace Gaming
player.GamingAddiction = GameData.MidGamingAddiction; player.GamingAddiction = GameData.MidGamingAddiction;
else else
{ {
ghost.AddScore(GameData.TrickerScoreStudentDie);
Die(player); Die(player);
return; return;
} }
@@ -260,7 +258,6 @@ namespace Gaming
gameMap.MapRescueStudent(); gameMap.MapRescueStudent();
if (player.GamingAddiction == player.MaxGamingAddiction && gameMap.Timer.IsGaming) if (player.GamingAddiction == player.MaxGamingAddiction && gameMap.Timer.IsGaming)
{ {
ghost.AddScore(GameData.TrickerScoreStudentDie);
Die(player); Die(player);
} }
return 0; return 0;
@@ -418,8 +415,9 @@ namespace Gaming
parent.SetPlayerStateNaturally(); parent.SetPlayerStateNaturally();
} }
} }
gameMap.ghost.AddScore(GameData.TrickerScoreDestroyRobot);
return;
} }
return;
} }
gameMap.MapDieStudent(); gameMap.MapDieStudent();
} }


+ 1
- 2
logic/Gaming/SkillManager/SkillManager.ActiveSkill.cs View File

@@ -48,7 +48,7 @@ namespace Gaming
{ {
foreach (Character person in gameMap.GameObjDict[GameObjType.Character]) foreach (Character person in gameMap.GameObjDict[GameObjType.Character])
{ {
if (!person.IsGhost() && player.CharacterType != CharacterType.Robot && !person.NoHp())
if (!person.IsGhost() && person.CharacterType != CharacterType.Robot && !person.NoHp())
{ {
double dis = XY.DistanceFloor3(person.Position, player.Position); double dis = XY.DistanceFloor3(person.Position, player.Position);
if (dis >= player.AlertnessRadius) if (dis >= player.AlertnessRadius)
@@ -62,7 +62,6 @@ namespace Gaming
student.GamingAddiction += GameData.checkIntervalWhenShowTime; student.GamingAddiction += GameData.checkIntervalWhenShowTime;
if (student.GamingAddiction == student.MaxGamingAddiction) if (student.GamingAddiction == student.MaxGamingAddiction)
{ {
player.AddScore(GameData.TrickerScoreStudentDie);
characterManager.Die(student); characterManager.Die(student);
} }
} }


+ 1
- 1
logic/Preparation/Utility/GameData.cs View File

@@ -142,7 +142,7 @@ namespace Preparation.Utility
return damage * 100 / basicApOfGhost; return damage * 100 / basicApOfGhost;
} }
public const int TrickerScoreStudentBeAddicted = 50; public const int TrickerScoreStudentBeAddicted = 50;
public const int TrickerScoreDestroyRobot = 30;
public const int TrickerScoreDestroyRobot = 50;
public const int TrickerScoreStudentDie = 1000; public const int TrickerScoreStudentDie = 1000;
public static int TrickerScoreStudentBeStunned(int time) public static int TrickerScoreStudentBeStunned(int time)
{ {


Loading…
Cancel
Save