Browse Source

docs: 📝 edit 游戏机制与平衡性调整更新草案.md

tags/v0.1.0
shangfengh 2 years ago
parent
commit
e65b768377
4 changed files with 24 additions and 22 deletions
  1. +2
    -2
      docs/GameRules.md
  2. +16
    -9
      docs/游戏机制与平衡性调整更新草案.md
  3. +6
    -5
      logic/GameClass/GameObj/Character/Character.cs
  4. +0
    -6
      logic/Gaming/AttackManager.cs

+ 2
- 2
docs/GameRules.md View File

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


+ 16
- 9
docs/游戏机制与平衡性调整更新草案.md View File

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


+ 6
- 5
logic/GameClass/GameObj/Character/Character.cs View File

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


+ 0
- 6
logic/Gaming/AttackManager.cs View File

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


Loading…
Cancel
Save