public enum BgmType
{
Null = 0,
GhostIsComing = 1,
StudentIsApproaching = 2,
GeneratorIsBeingFixed = 3,
}
public enum ActiveSkillType // 主动技能
{
Null = 0,
BecomeInvisible = 1,
...
UseKnife = 5,
BeginToCharge = 6
}
public enum PassiveSkillType
{
Null = 0,
}
public enum PlayerStateType
{
Null = 0,
Addicted = 1,
Escaped = 2,
Swinging = 3,//指后摇
Deceased = 4,
Moving = 5,
Treating = 6,
Rescuing = 7,
Fixing = 8,
Treated = 9,
Rescued = 10,
Stunned = 11,
TryingToAttack = 12,//指前摇
LockingOrOpeningTheDoor = 13,
OpeningTheChest = 14,
ClimbingThroughWindows = 15,
UsingSkill = 16,
OpeningTheDoorway = 17,
}
public bool Commandable() => (playerState != PlayerStateType.IsDeceased && playerState != PlayerStateType.IsEscaped
&& playerState != PlayerStateType.IsAddicted && playerState != PlayerStateType.IsRescuing
&& playerState != PlayerStateType.IsSwinging && playerState != PlayerStateType.IsTryingToAttack
&& playerState != PlayerStateType.IsClimbingThroughWindows && playerState != PlayerStateType.IsStunned);
无
每次求生者收到攻击后会损失对应子弹的攻击力的血量
小部分求生者通过手持物可以获得一定程度反击监管者的手段,可使其丧失行动能力(称为击晕),但监管者不会永久丧失行动能力。
无论搞蛋鬼或学生,攻击时,从播放攻击动作到可以开始产生伤害的期间,称为前摇。(前摇阶段,搞蛋鬼产生通常为不可爆炸(部分搞蛋鬼能可以产生可爆炸)子弹(爆炸范围=0),[子弹大小待商榷],期间监管者攻击被打断时,子弹消失)(无论近战远程均产生子弹)
无论搞蛋鬼或学生,攻击后,通常会出现一段无伤害判定的攻击动作后置时间,称为后摇。击中物体时后摇更长
假如监管者攻击或一些监管者的特定技能击中正在交互或处于攻击前后摇或使用部分技能(指PlayerState==UsingSkill)的求生者,将使求生者眩晕
[Tricker对Student造成伤害时,得伤害*100/基本伤害(1500000)分。]
——需要造成一定效果才能获取分数,仅使用不得分
使Student进入沉迷状态时,得50分。
使人类进入眩晕状态时,得25分。
每淘汰一个Student,得1000分
解除眩晕,得15分
public void ThrowProp(long playerID, int indexing)
public void UseProp(long playerID,int indexing)
| 道具 | 对学生增益 | [学生得分条件] | 对搞蛋鬼增益 | [搞蛋鬼得分条件] |
|---|---|---|---|---|
| Key3 | 能开启3教的门 | 不得分 | 能开启3教的门 | 不得分 |
| Key5 | 能开启5教的门 | 不得分 | 能开启3教的门 | 不得分 |
| Key6 | 能开启6教的门 | 不得分 | 能开启3教的门 | 不得分 |
| 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 | 使用瞬间从眩晕状态中恢复 | 成功从眩晕状态中恢复,得分? | 使用瞬间从眩晕状态中恢复 | 成功从眩晕状态中恢复,得分? |
public class Assassin : IGhost
{
private const int moveSpeed = GameData.basicMoveSpeed * 473 / 380;
private const int maxHp = GameData.basicHp;
public BulletType InitBullet => BulletType.CommonAttackOfGhost;
public List<ActiveSkillType> ListOfIActiveSkill => new(new ActiveSkillType[] { ActiveSkillType.BecomeInvisible, ActiveSkillType.UseKnife });
public List<PassiveSkillType> ListOfIPassiveSkill => new(new PassiveSkillType[] { });
public double concealment = GameData.basicConcealment * 1.5;
public int alertnessRadius = (int)(GameData.basicAlertnessRadius * 1.3);
public int viewRange = (int)(GameData.basicViewRange * 1.3);
public int timeOfOpeningOrLocking = GameData.basicSpeedOfOpeningOrLocking;
public int speedOfClimbingThroughWindows = GameData.basicGhostSpeedOfClimbingThroughWindows;
public int timeOfOpenChest = GameData.basicSpeedOfOpenChest;
}
public CommonAttackOfGhost...
{
public override double BulletBombRange => 0;
public override double BulletAttackRange => GameData.basicAttackShortRange;
public int ap = GameData.basicApOfGhost;
public override int Speed => GameData.basicBulletMoveSpeed;
public override bool IsToBomb => false;
public override int CastTime => GameData.basicCastTime;
public override int Backswing => GameData.basicBackswing;
public override int RecoveryFromHit => GameData.basicRecoveryFromHit;
public const int cd = GameData.basicBackswing;
public override bool CanBeBombed(GameObjType gameObjType)
{
switch (gameObjType)
{
case GameObjType.Character:
case GameObjType.Generator:
return true;
default:
return false;
}
}
}
public int SkillCD => GameData.commonSkillCD;
public int DurationTime => GameData.commonSkillTime / 10 * 6;
在DurationTime时间内玩家隐身 public int SkillCD => GameData.commonSkillCD* 2 / 3 ;
public int DurationTime => GameData.commonSkillTime / 10;
在DurationTime时间内,攻击类型变为飞刀
internal sealed class FlyingKnife : Bullet
{
public override double BulletBombRange => 0;
public override double BulletAttackRange => GameData.basicRemoteAttackRange * 13;
public int ap = GameData.basicApOfGhost * 4 / 5;
public override int Speed => GameData.basicBulletMoveSpeed * 2;
public override bool IsToBomb => false;
public override int CastTime => GameData.basicCastTime;
public override int Backswing => GameData.basicBackswing * 2 / 5;
public override int RecoveryFromHit => GameData.basicBackswing * 3 / 4;
public const int cd = GameData.basicBackswing * 2 / 5 + 100;
public override bool CanBeBombed(GameObjType gameObjType)
{
if (gameObjType == GameObjType.Character) return true;
return false;
}
}
~~~csharp
private const int moveSpeed = GameData.basicMoveSpeed * 40 / 38;
private const int maxHp = GameData.basicHp * 32 / 30;
public const int maxBulletNum = 0;
public BulletType InitBullet => BulletType.Null;
public List<ActiveSkillType> ListOfIActiveSkill => new(new ActiveSkillType[] { ActiveSkillType.CanBeginToCharge });
public List<PassiveSkillType> ListOfIPassiveSkill => new(new PassiveSkillType[] { });
public const int fixSpeed = GameData.basicFixSpeed * 6 / 10;
int treatSpeed = GameData.basicTreatSpeed * 8 / 10;
public const double concealment = GameData.basicConcealment * 0.9;
int alertnessRadius = (int)(GameData.basicAlertnessRadius * 0.9);
int viewRange = (int)(GameData.basicViewRange * 1.1);
int timeOfOpeningOrLocking = GameData.basicSpeedOfOpeningOrLocking * 12 / 10;
int speedOfClimbingThroughWindows = GameData.basicStudentSpeedOfClimbingThroughWindows * 12 / 10;
int timeOfOpenChest = GameData.basicSpeedOfOpenChest;
~~~
public int SkillCD => GameData.commonSkillCD / 5;
public int DurationTime => GameData.commonSkillTime * 6 / 10;
在DurationTime内,速度变为三倍,期间撞到捣蛋鬼,会导致捣蛋鬼眩晕7.22s,学生眩晕2.09s~~~csharp
private const int moveSpeed = GameData.basicMoveSpeed * 3 / 4;
int maxHp = GameData.basicHp * 10;
int maxBulletNum = 0;
BulletType InitBullet => BulletType.Null;
public List<ActiveSkillType> ListOfIActiveSkill => new(new ActiveSkillType[] { ActiveSkillType.Punish });
public List<PassiveSkillType> ListOfIPassiveSkill => new(new PassiveSkillType[] { });
public const int fixSpeed = 0;
int treatSpeed = GameData.basicTreatSpeed;
double concealment = GameData.basicConcealment * 0.5;
int alertnessRadius = GameData.basicAlertnessRadius / 2;
int viewRange = GameData.basicViewRange * 9 / 10;
int timeOfOpeningOrLocking = GameData.basicSpeedOfOpeningOrLocking;
int speedOfClimbingThroughWindows = GameData.basicStudentSpeedOfClimbingThroughWindows /2;
int timeOfOpenChest = GameData.basicSpeedOfOpenChest;
~~~
public int SkillCD => GameData.commonSkillCD;
public int DurationTime => 0;
请自行查看Logic/Preparation/Utility/GameData.cs
| 键位 | 效果 |
|---|---|
| W/NumPad8 | (Both)向上移动 |
| S/NumPad2 | (Both)向下移动 |
| D/NumPad6 | (Both)向右移动 |
| A/NumPad4 | (Both)向左移动 |
| J | (Tri)攻击,方向向上 |
| 鼠标双击某点 | (Tri)攻击,方向与从Tricker指向该点的向量相同 |
| K | (Stu)开始学习 |
| R | (Stu)开始营救(陷入沉迷状态的同伴) |
| T | (Stu)开始治疗(学习毅力下降的同伴) |
| G | (Stu)发出毕业请求 |
| H | (Stu)申请毕业(或称为开大门) |
| O | (Both)开(教学楼)门 |
| P | (Both)关(教学楼)门 |
| U | (Both)翻窗 |
| I | (Both)翻箱子 |
| E | (Both)结束当前行动,回到Idle状态 |
| F | (Both)随机捡起一个在周围的道具 |
| C | (Both)随机扔下一个已经持有的道具 |
| V | (Both)随机使用一个已经持有的道具 |
| B | (Both)使用0号技能 |
| N | (Both)使用1号技能 |
| M | (Both)使用2号技能 |