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