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
- 在持续时间内,攻击类型变为蹦蹦炸弹
- 当蹦蹦炸弹因为碰撞而爆炸,向子弹方向上加上90°,270° 发出2个小炸弹
- 2个小炸弹运动停止前会因为碰撞爆炸,停止运动后学生碰撞会造成眩晕3.07s
- 小炸弹运动停止前会因为碰撞爆炸,停止运动后学生碰撞会造成眩晕3.07s
- 不直接得分,通过眩晕等获得对应得分

#### 喧哗者ANoisyPerson


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

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


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

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

/// <summary>
/// 装弹冷却
@@ -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;


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

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


Loading…
Cancel
Save