build: 🚧 add AttackType in 规则Logic.md
tags/0.1.0
| @@ -25,7 +25,7 @@ namespace GameClass.GameObj | |||
| public override int Speed => GameData.basicBulletMoveSpeed; | |||
| public override bool IsRemoteAttack => false; | |||
| public override int CastTime => (int)BulletAttackRange / Speed; | |||
| public override int CastTime => (int)BulletAttackRange * 1000 / Speed; | |||
| public override int Backswing => GameData.basicBackswing; | |||
| public override int RecoveryFromHit => GameData.basicRecoveryFromHit; | |||
| public const int cd = GameData.basicBackswing; | |||
| @@ -49,8 +49,8 @@ namespace GameClass.GameObj | |||
| } | |||
| } | |||
| public override BulletType TypeOfBullet => BulletType.CommonAttackOfGhost; | |||
| } | |||
| internal sealed class FlyingKnife : Bullet | |||
| { | |||
| public FlyingKnife(Character player, PlaceType placeType, XY pos, int radius = GameData.bulletRadius) : | |||
| @@ -75,7 +75,7 @@ namespace GameClass.GameObj | |||
| public override int CastTime => GameData.basicCastTime; | |||
| public override int Backswing => 0; | |||
| public override int RecoveryFromHit => 0; | |||
| public const int cd = GameData.basicBackswing * 2 / 5 + 100; | |||
| public const int cd = GameData.basicBackswing / 2; | |||
| public override int CD => cd; | |||
| public const int maxBulletNum = 1; | |||
| public override int MaxBulletNum => maxBulletNum; | |||
| @@ -117,10 +117,10 @@ namespace GameClass.GameObj | |||
| ap = value; | |||
| } | |||
| } | |||
| public override int Speed => (int)(GameData.basicBulletMoveSpeed * 0.8); | |||
| public override int Speed => (int)(GameData.basicBulletMoveSpeed * 30 / 37); | |||
| public override bool IsRemoteAttack => false; | |||
| public override int CastTime => (int)BulletAttackRange / Speed; | |||
| public override int CastTime => (int)(BulletAttackRange * 1000 / Speed); | |||
| public override int Backswing => GameData.basicRecoveryFromHit; | |||
| public override int RecoveryFromHit => GameData.basicRecoveryFromHit; | |||
| public const int cd = GameData.basicCD; | |||
| @@ -164,7 +164,7 @@ namespace GameClass.GameObj | |||
| ap = value; | |||
| } | |||
| } | |||
| public override int Speed => (int)(GameData.basicBulletMoveSpeed * 1.2); | |||
| public override int Speed => 4300; | |||
| public override bool IsRemoteAttack => false; | |||
| public override int CastTime => 0; | |||
| @@ -16,6 +16,19 @@ namespace GameClass.GameObj | |||
| public override bool IsRigid => true; | |||
| public override ShapeType Shape => ShapeType.Square; | |||
| private int numOfFixing = 0; | |||
| public int NumOfFixing | |||
| { | |||
| get => numOfFixing; | |||
| set | |||
| { | |||
| lock (gameObjLock) | |||
| { | |||
| numOfFixing = value; | |||
| } | |||
| } | |||
| } | |||
| private int degreeOfRepair = 0; | |||
| public int DegreeOfRepair | |||
| { | |||
| @@ -62,6 +62,7 @@ namespace Gaming | |||
| if (generatorForFix == null || generatorForFix.DegreeOfRepair == GameData.degreeOfFixedGenerator) | |||
| return false; | |||
| ++generatorForFix.NumOfFixing; | |||
| player.PlayerState = PlayerStateType.Fixing; | |||
| new Thread | |||
| ( | |||
| @@ -85,6 +86,7 @@ namespace Gaming | |||
| ) | |||
| { IsBackground = true }.Start(); | |||
| --generatorForFix.NumOfFixing; | |||
| return true; | |||
| } | |||
| @@ -161,7 +161,7 @@ namespace Gaming | |||
| { | |||
| if (XY.Distance(newPlayer.Position, generator.Position) <= newPlayer.AlertnessRadius) | |||
| { | |||
| if (generator.DegreeOfRepair < GameData.degreeOfFixedGenerator && (double)newPlayer.AlertnessRadius * generator.DegreeOfRepair / GameData.degreeOfFixedGenerator / XY.Distance(newPlayer.Position, generator.Position) > bgmVolume) | |||
| if (generator.NumOfFixing > 0 && (double)newPlayer.AlertnessRadius * generator.DegreeOfRepair / GameData.degreeOfFixedGenerator / XY.Distance(newPlayer.Position, generator.Position) > bgmVolume) | |||
| bgmVolume = (double)newPlayer.AlertnessRadius * generator.DegreeOfRepair / GameData.degreeOfFixedGenerator / XY.Distance(newPlayer.Position, generator.Position); | |||
| } | |||
| } | |||
| @@ -83,11 +83,11 @@ namespace Preparation.Utility | |||
| public const int characterRadius = numOfPosGridPerCell * 4 / 10; // 人物半径 | |||
| public const int basicTreatSpeed = 100; | |||
| public const int basicFixSpeed = 100; | |||
| public const int basicSpeedOfOpeningOrLocking = 40; | |||
| public const int basicFixSpeed = 123; | |||
| public const int basicSpeedOfOpeningOrLocking = 4130; | |||
| public const int basicStudentSpeedOfClimbingThroughWindows = 611; | |||
| public const int basicGhostSpeedOfClimbingThroughWindows = 1270; | |||
| public const int basicSpeedOfOpenChest = 100; | |||
| public const int basicSpeedOfOpenChest = 1000; | |||
| public const int basicHp = 3000000; // 初始血量 | |||
| public const int basicMaxGamingAddiction = 60000;//基本完全沉迷时间 | |||
| @@ -185,11 +185,11 @@ namespace Preparation.Utility | |||
| public const int basicCD = 3000; // 初始子弹冷却 | |||
| public const int basicCastTime = 500;//基本前摇时间 | |||
| public const int basicBackswing = 818;//基本后摇时间 | |||
| public const int basicBackswing = 800;//基本后摇时间 | |||
| public const int basicRecoveryFromHit = 3700;//基本命中攻击恢复时长 | |||
| public const int basicStunnedTimeOfStudent = 4130; | |||
| public const int basicStunnedTimeOfStudent = 4300; | |||
| public const int basicBulletMoveSpeed = 1800; // 基本子弹移动速度,单位:s-1 | |||
| public const int basicBulletMoveSpeed = 3700; // 基本子弹移动速度,单位:s-1 | |||
| public const double basicRemoteAttackRange = 3000; // 基本远程攻击范围 | |||
| public const double basicAttackShortRange = 1100; // 基本近程攻击范围 | |||
| public const double basicBulletBombRange = 1000; // 基本子弹爆炸范围 | |||
| @@ -230,9 +230,9 @@ namespace Preparation.Utility | |||
| public const int numOfTeachingBuilding = 3; | |||
| #endregion | |||
| #region 物体相关 | |||
| public const int degreeOfFixedGenerator = 8180000; | |||
| public const int degreeOfLockingOrOpeningTheDoor = 100000; | |||
| public const int degreeOfOpenedChest = 100000; | |||
| public const int degreeOfFixedGenerator = 10000000; | |||
| public const int degreeOfLockingOrOpeningTheDoor = 10000000; | |||
| public const int degreeOfOpenedChest = 10000000; | |||
| public const int degreeOfOpenedDoorway = 18000; | |||
| public const int maxNumOfPropInChest = 2; | |||
| public const int numOfGeneratorRequiredForRepair = 7; | |||
| @@ -40,6 +40,7 @@ namespace Preparation.Utility | |||
| return Protobuf.PlaceType.NullPlaceType; | |||
| } | |||
| } | |||
| public static Protobuf.PropType ToPropType(Preparation.Utility.PropType prop) | |||
| { | |||
| switch (prop) | |||
| @@ -64,7 +65,6 @@ namespace Preparation.Utility | |||
| return Protobuf.PropType.NullPropType; | |||
| } | |||
| } | |||
| public static Preparation.Utility.PropType ToPropType(Protobuf.PropType prop) | |||
| { | |||
| switch (prop) | |||
| @@ -133,6 +133,7 @@ namespace Preparation.Utility | |||
| return PlayerState.NullStatus; | |||
| } | |||
| } | |||
| public static Protobuf.StudentBuffType ToStudentBuffType(Preparation.Utility.BuffType buffType) | |||
| { | |||
| switch (buffType) | |||
| @@ -167,6 +168,7 @@ namespace Preparation.Utility | |||
| return Protobuf.TrickerBuffType.NullTbuffType; | |||
| } | |||
| } | |||
| public static Protobuf.BulletType ToBulletType(Preparation.Utility.BulletType bulletType) | |||
| { | |||
| switch (bulletType) | |||
| @@ -202,7 +204,6 @@ namespace Preparation.Utility | |||
| return Protobuf.StudentType.NullStudentType; | |||
| } | |||
| } | |||
| public static Preparation.Utility.CharacterType ToStudentType(Protobuf.StudentType characterType) | |||
| { | |||
| switch (characterType) | |||
| @@ -221,6 +222,7 @@ namespace Preparation.Utility | |||
| return Preparation.Utility.CharacterType.Null; | |||
| } | |||
| } | |||
| public static Protobuf.TrickerType ToTrickerType(Preparation.Utility.CharacterType characterType) | |||
| { | |||
| switch (characterType) | |||
| @@ -235,7 +237,6 @@ namespace Preparation.Utility | |||
| return Protobuf.TrickerType.NullTrickerType; | |||
| } | |||
| } | |||
| public static Preparation.Utility.CharacterType ToTrickerType(Protobuf.TrickerType characterType) | |||
| { | |||
| switch (characterType) | |||
| @@ -250,6 +251,5 @@ namespace Preparation.Utility | |||
| return Preparation.Utility.CharacterType.Null; | |||
| } | |||
| } | |||
| } | |||
| } | |||
| @@ -5,7 +5,7 @@ | |||
| - []表示待决定 | |||
| ## 游戏简介 | |||
| - 1位监管者对抗4位求生者的非对称竞技模式 | |||
| - 1位捣蛋鬼对抗4位学生的非对称竞技模式 | |||
| - [本届THUAI电子系赛道为以4名同学和1名捣蛋鬼的求学与阻挠展开的非对称竞技模式,同学需要完成足够的家庭作业和考试,相互督促以避免沉迷娱乐生活,利用道具地形躲避捣蛋鬼的各种干扰诱惑,完成学业;捣蛋鬼则要极力阻止。] | |||
| - [我们的设计是一个非对称游戏,类似第五人格,分为学生、捣蛋鬼两个阵营。在游戏中,学生修完若干课程之后通过考试即可顺利毕业,捣蛋鬼试图干扰学生使其沉迷游戏,以致于无法修完规定课程,直至挂科、退学。] | |||
| [对于选手来说,需要提前制定好学生的学习方案以抵御对方捣蛋鬼的干扰,类似地,也需要制定好捣蛋鬼的行动策略以影响对方学生的学习,也即每队至少要写好两份代码以执行不同阵营的不同策略。] | |||
| @@ -22,21 +22,21 @@ | |||
| - 地图上的每个格子有自己的区域类型:陆地、墙、草地、电机、出口、紧急出口、门、窗、箱子 | |||
| ### 人物状态 | |||
| 游戏人物共有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.后摇 | |||
| @@ -50,16 +50,17 @@ | |||
| - 翻窗时玩家应当在目标前后左右一个格子内 | |||
| #### 破译与逃脱 | |||
| - 每张地图都有10台电机,求生者需要破译其中的7台,并开启任意一个大门(总所需时间为18秒)后从任意一个开启的大门逃脱,亦或者在只剩1名求生者的情况下从紧急出口逃脱; | |||
| - 紧急出口会在电机破译完成3台的情况下在地图的3-5个固定紧急出口刷新点之一随机刷新。 | |||
| - 当求生者只剩1名时,紧急出口将会自动打开,该求生者可从紧急出口逃脱。 | |||
| - 每张地图都有10台电机,学生需要破译其中的**7台**,并开启任意大门(总所需时间为18秒)后从开启的大门逃脱,亦或在只剩1名学生的情况下从紧急出口逃脱; | |||
| - 紧急出口会在电机破译完成3台的情况下在地图的3-5个固定紧急出口刷新点之一随机刷新显示。 | |||
| - 当学生只剩1名时,紧急出口将会自动打开,该学生可从紧急出口逃脱。 | |||
| - 大门开启的进度不清空 | |||
| #### 攻击 | |||
| - 无论近战远程均产生子弹以表示攻击所至距离 | |||
| - 攻击时,从播放攻击动作到可以开始产生伤害的期间,称为前摇。前摇期间攻击被打断时,子弹消失。 | |||
| - 无论近战远程均产生bullet以表示攻击所至距离 | |||
| - 如果有前摇,前摇最大时间一般为攻击最远距离/bullet移动速度。前摇期间攻击被打断时,子弹消失。 | |||
| - 无论搞蛋鬼或学生,攻击后,通常会出现一段无伤害判定的攻击动作后置时间,称为后摇。击中物体时后摇更长 | |||
| - 捣蛋鬼攻击或一些特定技能击中以下状态的求生者,将使求生者眩晕4.13s | |||
| - 搞蛋鬼可以攻击未修完的作业,造成(攻击力*2/100000)%的 | |||
| - 捣蛋鬼攻击或一些特定技能击中以下状态的学生,将使学生眩晕4.3s | |||
| 1. 处于前摇或后摇 | |||
| 2. 治疗或解救他人 | |||
| 3. 修理电机 | |||
| @@ -73,11 +74,11 @@ | |||
| - 治疗中断时,被治疗程度保留;被治疗者遭到攻击时被治疗程度清空 | |||
| #### 沉迷与唤醒 | |||
| - 当求生者血量归零时,求生者自动原地进入沉迷状态,每毫秒增加1沉迷度 | |||
| - 该学生可由其他的求生者唤醒,唤醒后,血量恢复至1/2并可以重新行动。沉迷程度不清空。 | |||
| - 当学生血量归零时,学生自动原地进入沉迷状态,每毫秒增加1沉迷度 | |||
| - 该学生可由其他的学生唤醒,唤醒后,血量恢复至1/2并可以重新行动。沉迷程度不清空。 | |||
| - 一般情况下,唤醒时间为1秒。 | |||
| - 进入沉迷状态时。如果求生者原本沉迷程度在(0,其最大沉迷度/3)中,求生者沉迷程度直接变为其最大沉迷度/3;如果求生者原本沉迷程度在[其最大沉迷度/3,其最大沉迷度*2/3)中,求生者沉迷程度直接变为其最大沉迷度*2/3;如果求生者原本沉迷程度大于其最大沉迷度*2/3,从游戏中出局; | |||
| - 当求生者沉迷程度达到该玩家最大沉迷程度时,从游戏中出局 | |||
| - 进入沉迷状态时。如果学生原本沉迷程度在(0,其最大沉迷度/3)中,学生沉迷程度直接变为其最大沉迷度/3;如果学生原本沉迷程度在[其最大沉迷度/3,其最大沉迷度x2/3)中,学生沉迷程度直接变为其最大沉迷度x2/3;如果学生原本沉迷程度大于其最大沉迷度x2/3,从游戏中出局; | |||
| - 当学生沉迷程度达到该玩家最大沉迷程度时,从游戏中出局 | |||
| #### 门 | |||
| - 门分别属于三个教学区:三教,五教,六教 | |||
| @@ -87,7 +88,7 @@ | |||
| - 锁门时其他人可以进入门所在格子,锁门过程中断 | |||
| #### 窗 | |||
| - 通常情况下监管者翻越窗户的速度高于求生者。 | |||
| - 通常情况下捣蛋鬼翻越窗户的速度高于学生。 | |||
| - 有人正在翻越窗户时,其他玩家均不可以翻越该窗户。 | |||
| #### 箱子 | |||
| @@ -95,13 +96,17 @@ | |||
| - 开启箱子的基础持续时间为10秒。 | |||
| - 箱子道具不刷新 | |||
| #### Bgm | |||
| 1. 不详的感觉:捣蛋鬼进入(学生的警戒半径/捣蛋鬼的隐蔽度)时,学生收到;捣蛋鬼距离学生越近,Bgm音量越大。bgmVolume=(警戒半径/二者距离) | |||
| 2. 期待搞事的感觉:学生进入(捣蛋鬼的警戒半径/学生的隐蔽度)时,捣蛋鬼收到;捣蛋鬼距离学生越近,Bgm音量越大。bgmVolume=(警戒半径/可被发觉的最近的学生距离) | |||
| 3. 学习的声音: 捣蛋鬼警戒半径内有人学习时收到;bgmVolume=(警戒半径x学习进度百分比)/二者距离 | |||
| ### 得分 | |||
| #### 屠夫 | |||
| - [Tricker对Student造成伤害时,得伤害*100/基本伤害(1500000)分。] | |||
| - *[使用道具/技能得分]* | |||
| - 需要造成一定效果才能获取分数,仅使用不得分 | |||
| - 不同道具/技能有不同得分 | |||
| - 使Student进入沉迷状态时,得50分。 | |||
| - 使人类进入眩晕状态时,得25分。 | |||
| @@ -141,16 +146,16 @@ | |||
| | 捣蛋鬼职业 | 基本量 | Assassin | Klee | 喧哗者ANoisyPerson | | |||
| | :------------ | :--------------------- | :--------------------- | :--------------------- | :--------------------- | | |||
| | 移动速度 | 1,503 | 1.1 | 1 | 1.07 | | |||
| | 移动速度/s | 1,503 | 1.1 | 1 | 1.07 | | |||
| | 隐蔽度 | 1.0 | 1.5 | 1 | 0.8 | | |||
| | 警戒范围 | 17000 | 1.3 | 1 | 0.9 | | |||
| | 视野范围 | 15000 | 1.2 | 1 | 1 | | |||
| | 开锁门时间(ms)| 2500 | 1/1 | 1 | 1 | | |||
| | 开锁门时间/s | 41.3% | 1 | 1 | 1 | | |||
| | 翻窗速度 | 1270 | 1 | 1 | 1.1 | | |||
| | 翻箱时间(ms) | 10000 | 1/1 | 1/1.1 | 1 | | |||
| | 翻箱时间/s | 10% | 1 | 1.1 | 1 | | |||
| #### 刺客 | |||
| - 普通攻击为 CommonAttackOfGhost | |||
| - 普通攻击为 搞蛋鬼的一般攻击 | |||
| - 主动技能 | |||
| - 隐身 | |||
| - CD:30s 持续时间:6s | |||
| @@ -159,26 +164,26 @@ | |||
| - 使用飞刀 | |||
| - CD:20s 持续时间:1s | |||
| - 在持续时间内,攻击类型变为飞刀 | |||
| - 不得分 | |||
| - 不直接得分 | |||
| #### Klee | |||
| - 普通攻击为 CommonAttackOfGhost | |||
| - 普通攻击为 搞蛋鬼的一般攻击 | |||
| - 主动技能 | |||
| - 蹦蹦炸弹 | |||
| - CD:15s 持续时间:3s | |||
| - 在持续时间内,攻击类型变为蹦蹦炸弹 | |||
| - 当蹦蹦炸弹因为碰撞而爆炸,向子弹方向上加上90°,270° 发出2个小炸弹 | |||
| - 2个小炸弹运动停止前会因为碰撞爆炸,停止运动后学生碰撞会造成眩晕3.07s | |||
| - 不得分 | |||
| - 不直接得分,通过眩晕等获得对应得分 | |||
| #### 喧哗者 | |||
| - 普通攻击为 CommonAttackOfGhost | |||
| - 普通攻击为 搞蛋鬼的一般攻击 | |||
| - 主动技能 | |||
| - 嚎叫 | |||
| - CD:25s | |||
| - 使用瞬间,在视野半径范围内(不是可视区域)的学生被眩晕6110ms,自己进入3070ms的后摇 | |||
| - 通过眩晕获得对应得分 | |||
| - 被动技能 | |||
| - 特性 | |||
| - 在场所有学生Bgm系统被设为无用的值 | |||
| @@ -189,14 +194,14 @@ | |||
| | 移动速度 | 1,270 | 3 / 4 | 1.1 | 0.8 | 1 | | |||
| | 最大毅力值 | 3000000 | 10 | 1 | 1.1 | 32/30 | | |||
| | 最大沉迷度 | 60000 | 10 | 0.9 | 1.3 | 1.1 | | |||
| | 学习一科时间(ms) | 81800 | 1/0 | 10/6 | 10/11 | 1 | | |||
| | 学习一科速度/s | 1.23% | 0 | 0.6 | 1.1 | 1 | | |||
| | 治疗速度 | 100 | 0.7 | 0.8 | 0.8 | 2 | | |||
| | 隐蔽度 | 1.0 | 0.5 | 0.9 | 0.9 | 1 | | |||
| | 警戒范围 | 15000 | 0.5 | 1 | 0.9 | 1 | | |||
| | 视野范围 | 10000 | 0.9 | 1.1 | 0.9 | 1 | | |||
| | 开锁门时间(ms)| 2500 | 1/1 | 1 | 1 | 1 | | |||
| | 开锁门时间/s | 4.13% | 1 | 1 | 1 | 1 | | |||
| | 翻窗速度 | 1270 | 0.5 | 1.2 | 10/12 | 1 | | |||
| | 翻箱时间(ms) | 10000 | 1/1 | 1 | 1 | 1 | | |||
| | 翻箱时间/s | 10% | 1 | 1 | 1 | 1 | | |||
| #### 运动员 | |||
| - 主动技能 | |||
| @@ -215,15 +220,15 @@ | |||
| - 教师无法获得牵制得分 | |||
| #### 学霸 | |||
| - 被动技能 | |||
| - 特性 | |||
| - 冥想 | |||
| - 当玩家处于可接受指令状态且不在修机时,会积累学习进度,速度为(GameData.basicFixSpeed / 4)/ms | |||
| - 当玩家处于可接受指令状态且不在修机时,会积累学习进度,速度为0.3%/ms | |||
| - 受到攻击(并非伤害)或眩晕或翻窗(或攻击他人)学习进度清零 | |||
| - 主动技能 | |||
| - 主动技能5 | |||
| - 写答案 | |||
| - CD:30s | |||
| - 使用瞬间,对于可互动范围内的一台电机增加这个学习进度 | |||
| - 不得分 | |||
| - 通过修机获得对应得分 | |||
| #### 开心果 | |||
| - 主动技能 | |||
| @@ -233,13 +238,26 @@ | |||
| - 通过唤醒获得对应得分 | |||
| - 勉励 | |||
| - CD:60s | |||
| - 使用瞬间,治疗完成可视范围内一个毅力不足中的人 | |||
| - 使用瞬间,治疗完成可视范围内一个毅力不足的人 | |||
| - 通过治疗获得对应得分 | |||
| - 鼓舞 | |||
| - CD:60s | |||
| - 使用瞬间,可视范围内学生(包括自己)获得持续6秒的1.6倍速Buff | |||
| - 每鼓舞一个学生得分10 | |||
| ### 攻击类型 | |||
| | 攻击类型 |搞蛋鬼的一般攻击CommonAttackOfGhost| 飞刀FlyingKnife | 蹦蹦炸弹BombBomb | JumpyDumpty | | |||
| | :------------ | :--------------------- | :--------------------- | :--------------------- | :--------------------- | | |||
| | 子弹爆炸范围 | 0 | 0 | 1000 | 500 | | |||
| | 子弹攻击距离 | 1100 | 39000 | 1100 | 2200 | | |||
| | 攻击力 | 1500000 | 1,200,000 | 1,800,000 | 900000 | | |||
| | 移动速度/s | 3700 | 7,400 | 3000 | 4300 | | |||
| | 有无前摇(ms) | 297 | 500 | 366 | 0 | | |||
| |未攻击至目标时的后摇(ms)| 800 | 0 | 3700 | 0 | | |||
| |攻击至目标时的后摇(ms)| 3700 | 0 | 3700 | 0 | | |||
| | CD(ms) | 800 | 400 | 3000 | - | | |||
| | 最大子弹容量 | 1 | 1 | 1 | - | | |||
| ## 游戏数据 | |||
| 请自行查看Logic/Preparation/Utility/GameData.cs | |||
| @@ -247,6 +265,7 @@ | |||
| ## 细则 | |||
| ### 特殊说明 | |||
| - 不加说明,这里“学生”往往包括职业“教师” | |||
| ### 初始状态 | |||
| @@ -261,7 +280,8 @@ | |||
| - 一个大门同时最多可以由一人开启 | |||
| ### 攻击 | |||
| - 每次求生者受到攻击后会损失对应子弹的攻击力的血量 | |||
| - 每次学生受到攻击后会损失对应子弹的攻击力的血量 | |||
| - 此处,前摇指 从播放攻击动作开始 攻击者不能交互 的时间 | |||
| ### 沉迷与唤醒 | |||
| - 在被救时沉迷度不增加 | |||
| @@ -287,37 +307,6 @@ | |||
| - 底层实现中的属性,不代表界面全部都需要展示,也可能需要额外展示信息 | |||
| - 只展示外部需要的属性,部分属性被省略 | |||
| ### BgmType | |||
| - 枚举类BgmType | |||
| 1. 不详的感觉:监管者进入(求生者的警戒半径/监管者的隐蔽度)时,求生者收到;监管者距离求生者越近,Bgm音量越大。bgmVolume=(警戒半径/二者距离) | |||
| 2. 期待搞事的感觉:求生者进入(监管者的警戒半径/求生者的隐蔽度)时,监管者收到;监管者距离求生者越近,Bgm音量越大。bgmVolume=(警戒半径/可被发觉的最近的求生者距离) | |||
| 3. 修理电机的声音: 监管者警戒半径内有电机正在被修理时收到;bgmVolume=(警戒半径*电机修理程度/二者距离)/10300000 | |||
| ~~~csharp | |||
| public enum BgmType | |||
| { | |||
| Null = 0, | |||
| GhostIsComing = 1, | |||
| StudentIsApproaching = 2, | |||
| GeneratorIsBeingFixed = 3, | |||
| } | |||
| ~~~ | |||
| ### 技能 | |||
| ~~~csharp | |||
| public enum ActiveSkillType // 主动技能 | |||
| { | |||
| Null = 0, | |||
| BecomeInvisible = 1, | |||
| ... | |||
| UseKnife = 5, | |||
| BeginToCharge = 6 | |||
| } | |||
| public enum PassiveSkillType | |||
| { | |||
| Null = 0, | |||
| } | |||
| ~~~ | |||
| ### 物体 | |||
| - 位置 | |||
| - 位置地形 | |||