| @@ -1,5 +1,5 @@ | |||||
| # 规则 | # 规则 | ||||
| V5.6 | |||||
| V5.6.2 | |||||
| - [规则](#规则) | - [规则](#规则) | ||||
| - [简则](#简则) | - [简则](#简则) | ||||
| - [地图](#地图) | - [地图](#地图) | ||||
| @@ -217,7 +217,7 @@ $$ | |||||
| - CD:15s 持续时间:3s | - CD:15s 持续时间:3s | ||||
| - 在持续时间内,攻击类型变为蹦蹦炸弹 | - 在持续时间内,攻击类型变为蹦蹦炸弹 | ||||
| - 当蹦蹦炸弹因为碰撞而爆炸,向子弹方向上加上90°,270° 发出2个小炸弹 | - 当蹦蹦炸弹因为碰撞而爆炸,向子弹方向上加上90°,270° 发出2个小炸弹 | ||||
| - 2个小炸弹运动停止前会因为碰撞爆炸,停止运动后学生碰撞会造成眩晕3.07s | |||||
| - 小炸弹运动停止前会因为碰撞爆炸,停止运动后学生碰撞会造成眩晕3.07s | |||||
| - 不直接得分,通过眩晕等获得对应得分 | - 不直接得分,通过眩晕等获得对应得分 | ||||
| #### 喧哗者ANoisyPerson | #### 喧哗者ANoisyPerson | ||||
| @@ -1,5 +1,5 @@ | |||||
| # 游戏机制与平衡性调整更新草案 | # 游戏机制与平衡性调整更新草案 | ||||
| v1.3 | |||||
| v1.4 | |||||
| ## 说明 | ## 说明 | ||||
| - 该草案尚未完全确定,请大家不要过分依靠该文档进行修改自己的代码 | - 该草案尚未完全确定,请大家不要过分依靠该文档进行修改自己的代码 | ||||
| @@ -14,13 +14,14 @@ v1.3 | |||||
| ## 攻击 | ## 攻击 | ||||
| - 飞刀FlyingKnife | - 飞刀FlyingKnife | ||||
| - 前摇变为600ms | |||||
| - 前摇与CD变为600ms | |||||
| - 搞蛋鬼的一般攻击CommonAttackOfTricker | - 搞蛋鬼的一般攻击CommonAttackOfTricker | ||||
| - 改为“不能攻击未写完的作业” | - 改为“不能攻击未写完的作业” | ||||
| - 蹦蹦炸弹BombBomb | - 蹦蹦炸弹BombBomb | ||||
| - 未攻击至目标时的后摇改为1200ms | - 未攻击至目标时的后摇改为1200ms | ||||
| - 增强为“可以攻击未写完的作业” | - 增强为“可以攻击未写完的作业” | ||||
| - 增强为“可以攻击使门被打开(可以重新被锁上)” | - 增强为“可以攻击使门被打开(可以重新被锁上)” | ||||
| - 改为“当蹦蹦炸弹因为碰撞而爆炸,向子弹方向上加上90°,180° ,270° 发出3个小炸弹” | |||||
| - strike(新增) | - strike(新增) | ||||
| - 可以攻击未写完的作业 | - 可以攻击未写完的作业 | ||||
| @@ -34,7 +35,7 @@ v1.3 | |||||
| | 前摇(ms) | 297 | 600 | 366 | - | 320 | | | 前摇(ms) | 297 | 600 | 366 | - | 320 | | ||||
| |未攻击至目标时的后摇(ms)| 800 | 0 | 1200 | - | 800 | | |未攻击至目标时的后摇(ms)| 800 | 0 | 1200 | - | 800 | | ||||
| |攻击至目标时的后摇(ms) | 3700 | 0 | 3700 | - | 3700 | | |攻击至目标时的后摇(ms) | 3700 | 0 | 3700 | - | 3700 | | ||||
| | CD(ms) | 800 | 400 | 3000 | - | 800 | | |||||
| | CD(ms) | 800 | 600 | 3000 | - | 800 | | |||||
| | 最大子弹容量 | 1 | 1 | 1 | - | 1 | | | 最大子弹容量 | 1 | 1 | 1 | - | 1 | | ||||
| @@ -46,12 +47,18 @@ v1.3 | |||||
| - 先前学生翻窗数据有误 | - 先前学生翻窗数据有误 | ||||
| - Teacher | - Teacher | ||||
| - 警戒范围由7500改为13000 | |||||
| - 学习速度由0改为50 | |||||
| - 警戒范围由7500改为10000 | |||||
| - 视野范围由9000降为8000 | |||||
| - 翻窗速度改为1000 | - 翻窗速度改为1000 | ||||
| - 技能惩罚(Punish)强化为“使用瞬间,在**视野距离范围内(不是可视范围)的**翻窗、开锁门、攻击前后摇、**使用技能期间**的捣蛋鬼会被眩晕(3070+**500***已受伤害/基本伤害(1500000))ms” | |||||
| - 特质: | |||||
| - 扣血则得分**50**×受到伤害/基本伤害(1500000) | |||||
| - 技能惩罚(Punish)改为 | |||||
| - CD:45s | |||||
| - “使用瞬间,在**视野距离/4范围内(不是可视范围)的**翻窗、开锁门、攻击前后摇、**使用技能期间**的捣蛋鬼会被眩晕(3070+**500***已受伤害/基本伤害(1500000))ms” | |||||
| - 技能喝茶(HaveTea)(新增) | - 技能喝茶(HaveTea)(新增) | ||||
| - CD:90s | - CD:90s | ||||
| - 使用瞬间,向当前方向瞬移3000(可以穿墙),如果会碰撞则失败。 | |||||
| - 在有队友受过伤的情况下,使用瞬间,向当前方向瞬移3000(可以穿墙),如果会碰撞则失败。 | |||||
| - Robot(新增) | - Robot(新增) | ||||
| - 无技能 | - 无技能 | ||||
| - 特性 | - 特性 | ||||
| @@ -79,11 +86,11 @@ v1.3 | |||||
| | 移动速度/s | 2700 | 3150 | 2880 | 3000 | 2700 | 2880 | | | 移动速度/s | 2700 | 3150 | 2880 | 3000 | 2700 | 2880 | | ||||
| | 最大毅力值 | 30000000 | 3000000 | 3300000 | 3200000 | 900000 | 2700000 | | | 最大毅力值 | 30000000 | 3000000 | 3300000 | 3200000 | 900000 | 2700000 | | ||||
| | 最大沉迷度 | 600000 | 54000 | 78000 | 60000 | 0 | 60000 | | | 最大沉迷度 | 600000 | 54000 | 78000 | 60000 | 0 | 60000 | | ||||
| | 学习速度/ms | 0 | 73 | 135 | 123 | 100 | 130 | | |||||
| | 学习速度/ms | 50 | 73 | 135 | 123 | 100 | 130 | | |||||
| | 勉励速度/ms | 80 | 90 | 100 | 120 | 0 | 100 | | | 勉励速度/ms | 80 | 90 | 100 | 120 | 0 | 100 | | ||||
| | 隐蔽度 | 0.5 | 0.9 | 0.9 | 0.8 | 0.8 | 1.1 | | | 隐蔽度 | 0.5 | 0.9 | 0.9 | 0.8 | 0.8 | 1.1 | | ||||
| | 警戒范围 | 13000 | 15000 | 13500 | 15000 | 0 | 15000 | | |||||
| | 视野范围 | 9000 | 11000 | 9000 | 10000 | 0 | 9000 | | |||||
| | 警戒范围 | 10000 | 15000 | 13500 | 15000 | 0 | 15000 | | |||||
| | 视野范围 | 8000 | 11000 | 9000 | 10000 | 0 | 9000 | | |||||
| | 开锁门速度/ms | 5000 | 5000 | 5000 | 3500 | 0 | 5000 | | | 开锁门速度/ms | 5000 | 5000 | 5000 | 3500 | 0 | 5000 | | ||||
| | 翻窗速度/ms | 1000 | 1466 | 1018 | 1222 | 1 | 1100 | | | 翻窗速度/ms | 1000 | 1466 | 1018 | 1222 | 1 | 1100 | | ||||
| | 翻箱速度/ms | 1250 | 1250 | 1250 | 1125 | 1000 | 1100 | | | 翻箱速度/ms | 1250 | 1250 | 1250 | 1125 | 1000 | 1100 | | ||||
| @@ -2,15 +2,14 @@ | |||||
| using Preparation.Utility; | using Preparation.Utility; | ||||
| using System; | using System; | ||||
| using System.Collections.Generic; | using System.Collections.Generic; | ||||
| using System.Threading; | |||||
| namespace GameClass.GameObj | namespace GameClass.GameObj | ||||
| { | { | ||||
| public partial class Character : Moveable, ICharacter // 负责人LHR摆烂终了 | public partial class Character : Moveable, ICharacter // 负责人LHR摆烂终了 | ||||
| { | { | ||||
| #region 装弹、攻击相关的基本属性及方法 | #region 装弹、攻击相关的基本属性及方法 | ||||
| private readonly object attackLock = new(); | private readonly object attackLock = new(); | ||||
| public object AttackLock => attackLock; | |||||
| /// <summary> | /// <summary> | ||||
| /// 装弹冷却 | /// 装弹冷却 | ||||
| @@ -87,14 +86,16 @@ namespace GameClass.GameObj | |||||
| { | { | ||||
| lock (attackLock) | lock (attackLock) | ||||
| { | { | ||||
| if (bulletOfPlayer == BulletType.Null) | |||||
| return null; | |||||
| if (UpdateBulletNum(time) > 0) | if (UpdateBulletNum(time) > 0) | ||||
| { | { | ||||
| if(bulletNum==maxBulletNum)updateTimeOfBulletNum = time; | |||||
| if (bulletNum == maxBulletNum) updateTimeOfBulletNum = time; | |||||
| --bulletNum; | --bulletNum; | ||||
| XY res = Position + new XY // 子弹紧贴人物生成。 | XY res = Position + new XY // 子弹紧贴人物生成。 | ||||
| ( | ( | ||||
| (int)(Math.Abs((Radius + BulletFactory.BulletRadius(BulletOfPlayer)) * Math.Cos(angle))) * ((Math.Cos(angle) > 0) ? 1 : -1), | |||||
| (int)(Math.Abs((Radius + BulletFactory.BulletRadius(BulletOfPlayer)) * Math.Sin(angle))) * ((Math.Sin(angle) > 0) ? 1 : -1) | |||||
| (int)(Math.Abs((Radius + BulletFactory.BulletRadius(bulletOfPlayer)) * Math.Cos(angle))) * ((Math.Cos(angle) > 0) ? 1 : -1), | |||||
| (int)(Math.Abs((Radius + BulletFactory.BulletRadius(bulletOfPlayer)) * Math.Sin(angle))) * ((Math.Sin(angle) > 0) ? 1 : -1) | |||||
| ); | ); | ||||
| Bullet? bullet = BulletFactory.GetBullet(this, res); | Bullet? bullet = BulletFactory.GetBullet(this, res); | ||||
| if (bullet == null) return null; | if (bullet == null) return null; | ||||
| @@ -166,12 +166,6 @@ namespace Gaming | |||||
| public bool Attack(Character player, double angle) | public bool Attack(Character player, double angle) | ||||
| { // 子弹如果没有和其他物体碰撞,将会一直向前直到超出人物的attackRange | { // 子弹如果没有和其他物体碰撞,将会一直向前直到超出人物的attackRange | ||||
| if (player.BulletOfPlayer == BulletType.Null) | |||||
| return false; | |||||
| Debugger.Output(player, player.CharacterType.ToString() + "Attack in " + player.BulletOfPlayer.ToString()); | |||||
| Debugger.Output(player, player.Position.ToString() + " " + player.Radius.ToString() + " " + BulletFactory.BulletRadius(player.BulletOfPlayer).ToString()); | |||||
| Bullet? bullet = player.Attack(angle, gameMap.Timer.nowTime()); | Bullet? bullet = player.Attack(angle, gameMap.Timer.nowTime()); | ||||
| if (bullet != null) | if (bullet != null) | ||||