|
|
|
@@ -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; |
|
|
|
|