Browse Source

build: 🚧 edit 规则Logic.md

tags/0.1.0
shangfengh 2 years ago
parent
commit
b8f7fa257f
2 changed files with 44 additions and 42 deletions
  1. +1
    -1
      logic/Preparation/Utility/GameData.cs
  2. +43
    -41
      logic/规则Logic.md

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

@@ -90,7 +90,7 @@ namespace Preparation.Utility

public const int basicTreatSpeed = 100;
public const int basicFixSpeed = 123;
public const int basicSpeedOfOpeningOrLocking = 4130;
public const int basicSpeedOfOpeningOrLocking = 4000;
public const int basicStudentSpeedOfClimbingThroughWindows = 611;
public const int basicGhostSpeedOfClimbingThroughWindows = 1270;
public const int basicSpeedOfOpenChest = 1000;


+ 43
- 41
logic/规则Logic.md View File

@@ -18,21 +18,21 @@

### 人物
- 人物半径为800
- 人物共有17种不可叠加的状态:(加^为学生独有)
- 人物共有17种不可叠加的状态:
1. (可)移动状态
2. 学习^
3. 被勉励^
4. 在勉励^
2. 学习
3. 被勉励
4. 在勉励
5. 开或锁门
6. 翻箱
7. 使用技能
8. 开启校门^
9. 唤醒他人中^
8. 开启校门
9. 唤醒他人中

10. 被唤醒中(从沉迷状态中^
11. 沉迷^
12. 退学^
13. 毕业^
10. 被唤醒中
11. 沉迷
12. 退学
13. 毕业
14. 被眩晕
15. 前摇
16. 后摇
@@ -72,13 +72,13 @@

#### 勉励(Treat)
- `std::future<bool> StartTreatMate(int64_t mateID)`:勉励对应玩家ID的学生,当达到被勉励程度达到1500000或者最大血量与当前血量的差值时,勉励结束。
- 勉励中断时,被勉励程度保留;被勉励者遭到攻击时被勉励程度清空
- 勉励中断时,被勉励程度保留;遭到攻击时被勉励程度清空

#### 沉迷与唤醒
- 当学生血量归零时,学生原地进入沉迷状态,每毫秒增加1沉迷度
- `std::future<bool> StartRescueMate(int64_t mateID)`:唤醒对应玩家ID的沉迷的学生,需要时间1秒,之后血量恢复至1/2。沉迷程度不清空。
- 进入沉迷状态时。如果学生原沉迷程度在(0,最大沉迷度/3)中,沉迷程度直接变为其最大沉迷度/3;原沉迷程度在[其最大沉迷度/3,其最大沉迷度x2/3)中,沉迷程度直接变为其最大沉迷度x2/3;原沉迷程度大于其最大沉迷度x2/3,从游戏中出局;
- 当学生沉迷程度达到该玩家最大沉迷程度时,从游戏中出局
- 进入沉迷状态时。如果学生原沉迷程度在(0,该玩家最大沉迷度/3)中,沉迷程度直接变为其最大沉迷度/3;原沉迷程度在[其最大沉迷度/3,其最大沉迷度x2/3)中,沉迷程度直接变为其最大沉迷度x2/3;原沉迷程度大于其最大沉迷度x2/3,从游戏中出局;
- 当学生沉迷程度达到最大沉迷程度时,从游戏中出局

#### 门
- 门分别属于三个教学区:三教,五教,六教
@@ -100,10 +100,10 @@

### 队内信息
- `std::future<bool> SendMessage(int64_t, std::string)`:给同队的队友发送消息。`toPlayerID`指定发送的对象,`message`指定发送的内容。`message`的长度不能超过 64,否则将发送失败!
- `bool HaveMessage()`:有队友发来的尚未接收的信息,则返回 true
- `bool HaveMessage()`:是否有队友发来的尚未接收的信息。

### 信息受限
- 以上主动行为每 50ms 最多总共可以调用 50 次;主动返回 bool 值代表本次操作是否成功。
- 主动行为每 50ms 最多总共可以调用 50 次;
- `bool Wait()`:asynchronous 为 true 的情况下,选手可以调用此函数,阻塞当前线程,直到下一次消息更新时继续运行。

### 信息获取
@@ -111,7 +111,8 @@
`std::vector<std::shared_ptr<const THUAI6::Tricker>> GetTrickers() const` :返回所有可视捣蛋鬼的信息。
`std::vector<std::shared_ptr<const THUAI6::Prop>> GetProps() const` :返回所有可视道具的信息。
`std::vector<std::vector<THUAI6::PlaceType>> GetFullMap() const`:返回整张地图的地形信息。
注意下面的 CellX 和 CellY 指的是地图格数,而非绝对坐标。

- 下面的 CellX 和 CellY 指的是地图格数,而非绝对坐标。
`THUAI6::PlaceType GetPlaceType(int32_t cellX, int32_t cellY)` :返回某一位置场地种类信息。场地种类详见 structure.h 。
`bool IsDoorOpen(int32_t cellX, int32_t cellY) const`:查询特定位置门是否开启
`int32_t GetChestProgress(int32_t cellX, int32_t cellY) const`:查询特定位置箱子开启进度
@@ -119,14 +120,32 @@
`int32_t GetClassroomProgress(int32_t cellX, int32_t cellY) const`:查询特定位置教室作业完成进度
`THUAI6::HiddenGateState GetHiddenGateState(int32_t cellX, int32_t cellY) const`::查询特定位置隐藏校门状态
`int32_t GetDoorProgress(int32_t cellX, int32_t cellY) const`:查询特定位置门开启状态

`std::shared_ptr<const THUAI6::GameInfo> GetGameInfo() const`:查询当前游戏状态
`std::vector<int64_t> GetPlayerGUIDs() const`:获取所有玩家的GUID
`int GetFrameCount() const`:获取目前所进行的帧数
`std::shared_ptr<const THUAI6::Tricker> GetSelfInfo() const`或`std::shared_ptr<const THUAI6::Student> GetSelfInfo() const`:获取自己的信息

### 得分
### 道具
- 玩家最多同时拥有三个道具
- `bool PickProp(THUAI6::PropType prop)`捡起与自己处于同一个格子(cell)的道具。
- `bool UseProp(THUAI6::PropType prop)`使用对应类型的道具
- `bool ThrowProp(THUAI6::PropType prop)`将对应类型的道具扔在原地

| 道具 | 对学生增益 | [学生得分条件] | 对搞蛋鬼增益 | [搞蛋鬼得分条件] |
| :-------- | :-------------------------------------- | :-----------------| :-------------------------------------- |:-----------------|
| Key3 | 能开启3教的门 |不得分| 能开启3教的门 |不得分|
| Key5 | 能开启5教的门 |不得分| 能开启5教的门 |不得分|
| Key6 | 能开启6教的门 |不得分| 能开启6教的门 |不得分|
| AddSpeed | 提高移动速度,持续10s |得分?| 提高移动速度,持续10s |得分?|
| AddLifeOrClairaudience |若在10s内Hp归零,该增益消失以使Hp保留100|在10s内Hp归零,得分? |10秒内下一次攻击增伤1800000|10秒内有一次攻击,得分? |
| AddHpOrAp |回血1500000 | 回血成功 | 10秒内下一次攻击增伤1800000|10秒内有一次攻击,得分? |
| ShieldOrSpear | 10秒内能抵挡一次伤害 | 10秒内成功抵挡一次伤害 |10秒内下一次攻击能破盾,如果对方无盾,则增伤900000| 10秒内攻击中学生|
| RecoveryFromDizziness | 使用瞬间从眩晕状态中恢复 | 成功从眩晕状态中恢复,得分?|使用瞬间从眩晕状态中恢复 | 成功从眩晕状态中恢复,得分?|

## 得分

#### 屠夫
### 屠夫

- [Tricker对Student造成伤害时,得伤害*100/基本伤害(1500000)分。]
- *[使用道具/技能得分]*
@@ -137,7 +156,7 @@
- 主动解除眩晕,得15分
- 开锁门

#### 人类
### 人类
- 修机得分
- 人类每修n%的电机,得n分
- 修完一台电机,额外得?分
@@ -151,23 +170,6 @@
- 解除眩晕
- 开锁门

### 道具
- 玩家最多同时拥有三个道具
- 道具对于捣蛋鬼与学生可能有不同效果
- `bool PickProp(THUAI6::PropType prop)`捡起与自己处于同一个格子(cell)的道具。
- `bool UseProp(THUAI6::PropType prop)`使用对应类型的道具
- `bool ThrowProp(THUAI6::PropType prop)`将对应类型的道具扔在原地
| 道具 | 对学生增益 | [学生得分条件] | 对搞蛋鬼增益 | [搞蛋鬼得分条件] |
| :-------- | :-------------------------------------- | :-----------------| :-------------------------------------- |:-----------------|
| Key3 | 能开启3教的门 |不得分| 能开启3教的门 |不得分|
| Key5 | 能开启5教的门 |不得分| 能开启5教的门 |不得分|
| Key6 | 能开启6教的门 |不得分| 能开启6教的门 |不得分|
| AddSpeed | 提高移动速度,持续10s |得分?| 提高移动速度,持续10s |得分?|
| AddLifeOrClairaudience |若在10s内Hp归零,该增益消失以使Hp保留100|在10s内Hp归零,得分? |10秒内下一次攻击增伤1800000|10秒内有一次攻击,得分? |
| AddHpOrAp |回血1500000 | 回血成功 | 10秒内下一次攻击增伤1800000|10秒内有一次攻击,得分? |
| ShieldOrSpear | 10秒内能抵挡一次伤害 | 10秒内成功抵挡一次伤害 |10秒内下一次攻击能破盾,如果对方无盾,则增伤900000| 10秒内攻击中学生|
| RecoveryFromDizziness | 使用瞬间从眩晕状态中恢复 | 成功从眩晕状态中恢复,得分?|使用瞬间从眩晕状态中恢复 | 成功从眩晕状态中恢复,得分?|

## 职业与技能

### 捣蛋鬼
@@ -178,9 +180,9 @@
| 隐蔽度 | 1.0 | 1.5 | 1 | 0.8 |
| 警戒范围 | 17000 | 1.3 | 1 | 0.9 |
| 视野范围 | 15000 | 1.2 | 1 | 1 |
| 开锁门时间/s | 41.3% | 1 | 1 | 1 |
| 开锁门速度 | 4000 | 1 | 1 | 1 |
| 翻窗速度 | 1270 | 1 | 1 | 1.1 |
| 翻箱时间/s | 10% | 1 | 1.1 | 1 |
| 翻箱速度 | 1000 | 1 | 1.1 | 1 |

#### 刺客
- 普通攻击为 搞蛋鬼的一般攻击
@@ -227,9 +229,9 @@
| 隐蔽度 | 1.0 | 0.5 | 0.9 | 0.9 | 1 |
| 警戒范围 | 15000 | 0.5 | 1 | 0.9 | 1 |
| 视野范围 | 10000 | 0.9 | 1.1 | 0.9 | 1 |
| 开锁门时间/s | 4.13% | 1 | 1 | 1 | 1 |
| 开锁门速度 | 4000 | 1 | 1 | 1 | 1 |
| 翻窗速度 | 1270 | 0.5 | 1.2 | 10/12 | 1 |
| 翻箱时间/s | 10% | 1 | 1 | 1 | 1 |
| 翻箱速度 | 1000 | 1 | 1 | 1 | 1 |

#### 运动员
- 主动技能
@@ -277,7 +279,7 @@
`static inline int CellToGrid(int cell) noexcept`:将地图格数 cell 转换为绝对坐标grid。
`static inline int GridToCell(int grid) noexcept`:将绝对坐标 grid 转换为地图格数cell。
下面为用于DEBUG的输出函数,选手仅在开启Debug模式的情况下可以使用
~~~csharp
~~~c
void Print(std::string str) const;
void PrintStudent() const;
void PrintTricker() const;


Loading…
Cancel
Save