You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

constants.h 13 kB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361
  1. #pragma once
  2. #ifndef CONSTANTS_H
  3. #define CONSTANTS_H
  4. #ifndef SCCI
  5. #define SCCI static const constexpr inline
  6. #endif
  7. namespace Constants
  8. {
  9. SCCI int frameDuration = 50; // 每帧毫秒数
  10. // 地图相关
  11. SCCI int numOfGridPerCell = 1000; // 单位坐标数
  12. SCCI int rows = 50; // 地图行数
  13. SCCI int cols = 50; // 地图列数
  14. SCCI int numOfClassroom = 10; // 教室数量
  15. SCCI int numOfChest = 8; // 宝箱数量
  16. SCCI int maxClassroomProgress = 10000000; // 教室最大进度
  17. SCCI int maxDoorProgress = 10000000; // 开关门最大进度
  18. SCCI int maxChestProgress = 10000000; // 宝箱最大进度
  19. SCCI int maxGateProgress = 18000; // 大门最大进度
  20. SCCI int numOfRequiredClassroomForGate = 7; // 打开大门需要完成的教室数量
  21. SCCI int numOfRequiredClassroomForHiddenGate = 3; // 打开隐藏门需要完成的教室数量
  22. // 人物属性相关
  23. SCCI int basicEncourageSpeed = 100;
  24. SCCI int basicFixSpeed = 123;
  25. SCCI int basicSpeedOfOpeningOrLocking = 4000;
  26. SCCI int basicStudentSpeedOfClimbingThroughWindows = 1222;
  27. SCCI int basicTrickerSpeedOfClimbingThroughWindows = 2540;
  28. SCCI int basicSpeedOfOpenChest = 1000;
  29. SCCI int basicHp = 3000000;
  30. SCCI int basicMaxGamingAddiction = 60000;
  31. SCCI int basicEncouragementDegree = 1500000;
  32. SCCI int basicTimeOfRouse = 1000;
  33. SCCI int basicStudentSpeed = 3000;
  34. SCCI int basicTrickerSpeed = 3600;
  35. SCCI double basicConcealment = 1;
  36. SCCI int basicStudentAlertnessRadius = 15 * numOfGridPerCell;
  37. SCCI int basicTrickerAlertnessRadius = 17 * numOfGridPerCell;
  38. SCCI int basicStudentViewRange = 10 * numOfGridPerCell;
  39. SCCI int basicTrickerViewRange = 13 * numOfGridPerCell;
  40. SCCI int PinningDownRange = 5 * numOfGridPerCell;
  41. SCCI int maxNumOfProp = 3; // 人物道具栏容量
  42. // 攻击相关
  43. SCCI int basicApOfTricker = 1500000;
  44. SCCI int basicCD = 3000; // 初始子弹冷却
  45. SCCI int basicCastTime = 500; // 基本前摇时间
  46. SCCI int basicBackswing = 800; // 基本后摇时间
  47. SCCI int basicRecoveryFromHit = 3700; // 基本命中攻击恢复时长
  48. SCCI int basicStunnedTimeOfStudent = 4300;
  49. SCCI int basicBulletMoveSpeed = 7400; // 基本子弹移动速度
  50. SCCI double basicRemoteAttackRange = 6000; // 基本远程攻击范围
  51. SCCI double basicAttackShortRange = 2200; // 基本近程攻击范围
  52. SCCI double basicBulletBombRange = 2000; // 基本子弹爆炸范围
  53. // 道具相关
  54. SCCI int apPropAdd = basicApOfTricker * 12 / 10;
  55. SCCI int apSpearAdd = basicApOfTricker * 6 / 10;
  56. // 职业相关
  57. struct Assassin
  58. {
  59. SCCI int moveSpeed = basicTrickerSpeed * 11 / 10;
  60. SCCI double concealment = 1.5;
  61. SCCI int alertnessRadius = basicTrickerAlertnessRadius * 13 / 10;
  62. SCCI int viewRange = basicTrickerViewRange * 12 / 10;
  63. SCCI int speedOfOpeningOrLocking = basicSpeedOfOpeningOrLocking;
  64. SCCI int speedOfClimbingThroughWindows = basicTrickerSpeedOfClimbingThroughWindows;
  65. SCCI int speedOfOpenChest = basicSpeedOfOpenChest;
  66. };
  67. struct Klee
  68. {
  69. SCCI int moveSpeed = basicTrickerSpeed;
  70. SCCI double concealment = 1;
  71. SCCI int alertnessRadius = basicTrickerAlertnessRadius;
  72. SCCI int viewRange = basicTrickerViewRange;
  73. SCCI int speedOfOpeningOrLocking = basicSpeedOfOpeningOrLocking;
  74. SCCI int speedOfClimbingThroughWindows = basicTrickerSpeedOfClimbingThroughWindows;
  75. SCCI int speedOfOpenChest = basicSpeedOfOpenChest * 11 / 10;
  76. };
  77. struct ANoisyPerson
  78. {
  79. SCCI int moveSpeed = (int)(basicTrickerSpeed * 1.07);
  80. SCCI double concealment = 0.8;
  81. SCCI int alertnessRadius = basicTrickerAlertnessRadius * 9 / 10;
  82. SCCI int viewRange = basicTrickerViewRange;
  83. SCCI int speedOfOpeningOrLocking = basicSpeedOfOpeningOrLocking;
  84. SCCI int speedOfClimbingThroughWindows = basicTrickerSpeedOfClimbingThroughWindows * 11 / 10;
  85. SCCI int speedOfOpenChest = basicSpeedOfOpenChest * 11 / 10;
  86. };
  87. struct Idol
  88. {
  89. SCCI int moveSpeed = basicTrickerSpeed;
  90. SCCI double concealment = 0.75;
  91. SCCI int alertnessRadius = basicTrickerAlertnessRadius;
  92. SCCI int viewRange = basicTrickerViewRange * 11 / 10;
  93. SCCI int speedOfOpeningOrLocking = basicSpeedOfOpeningOrLocking;
  94. SCCI int speedOfClimbingThroughWindows = basicTrickerSpeedOfClimbingThroughWindows;
  95. SCCI int speedOfOpenChest = basicSpeedOfOpenChest;
  96. };
  97. struct Athlete
  98. {
  99. SCCI int moveSpeed = basicStudentSpeed * 105 / 100;
  100. SCCI int maxHp = basicHp;
  101. SCCI int maxAddiction = basicMaxGamingAddiction * 9 / 10;
  102. SCCI int fixSpeed = basicFixSpeed * 6 / 10;
  103. SCCI int encourageSpeed = basicEncourageSpeed * 9 / 10;
  104. SCCI double concealment = 0.9;
  105. SCCI int alertnessRadius = basicStudentAlertnessRadius;
  106. SCCI int viewRange = basicStudentViewRange * 11 / 10;
  107. SCCI int speedOfOpeningOrLocking = basicSpeedOfOpeningOrLocking;
  108. SCCI int speedOfClimbingThroughWindows = basicStudentSpeedOfClimbingThroughWindows * 12 / 10;
  109. SCCI int speedOfOpenChest = basicSpeedOfOpenChest;
  110. };
  111. struct Teacher
  112. {
  113. SCCI int moveSpeed = basicStudentSpeed * 9 / 10;
  114. SCCI int maxHp = basicHp * 10;
  115. SCCI int maxAddiction = basicMaxGamingAddiction * 10;
  116. SCCI int fixSpeed = basicFixSpeed * 0;
  117. SCCI int encourageSpeed = basicEncourageSpeed * 8 / 10;
  118. SCCI double concealment = 0.5;
  119. SCCI int alertnessRadius = basicStudentAlertnessRadius / 2;
  120. SCCI int viewRange = basicStudentViewRange * 9 / 10;
  121. SCCI int speedOfOpeningOrLocking = basicSpeedOfOpeningOrLocking;
  122. SCCI int speedOfClimbingThroughWindows = basicStudentSpeedOfClimbingThroughWindows / 2;
  123. SCCI int speedOfOpenChest = basicSpeedOfOpenChest;
  124. };
  125. struct StraightAStudent
  126. {
  127. SCCI int moveSpeed = basicStudentSpeed * 96 / 100;
  128. SCCI int maxHp = basicHp * 11 / 10;
  129. SCCI int maxAddiction = basicMaxGamingAddiction * 13 / 10;
  130. SCCI int fixSpeed = basicFixSpeed * 11 / 10;
  131. SCCI int encourageSpeed = basicEncourageSpeed;
  132. SCCI double concealment = 0.9;
  133. SCCI int alertnessRadius = basicStudentAlertnessRadius * 9 / 10;
  134. SCCI int viewRange = basicStudentViewRange * 9 / 10;
  135. SCCI int speedOfOpeningOrLocking = basicSpeedOfOpeningOrLocking;
  136. SCCI int speedOfClimbingThroughWindows = basicStudentSpeedOfClimbingThroughWindows * 10 / 12;
  137. SCCI int speedOfOpenChest = basicSpeedOfOpenChest;
  138. };
  139. struct Robot
  140. {
  141. SCCI int moveSpeed = basicStudentSpeed;
  142. SCCI int maxHp = basicHp * 0.4;
  143. SCCI int maxAddiction = basicMaxGamingAddiction * 0;
  144. SCCI int fixSpeed = basicFixSpeed;
  145. SCCI int encourageSpeed = 0;
  146. SCCI double concealment = 1;
  147. SCCI int alertnessRadius = basicStudentAlertnessRadius * 1;
  148. SCCI int viewRange = basicStudentViewRange;
  149. SCCI int speedOfOpeningOrLocking = basicSpeedOfOpeningOrLocking;
  150. SCCI int speedOfClimbingThroughWindows = 1;
  151. SCCI int speedOfOpenChest = basicSpeedOfOpenChest;
  152. };
  153. struct TechOtaku
  154. {
  155. SCCI int moveSpeed = basicStudentSpeed * 3 / 4;
  156. SCCI int maxHp = basicHp * 9 / 10;
  157. SCCI int maxAddiction = basicMaxGamingAddiction * 11 / 10;
  158. SCCI int fixSpeed = basicFixSpeed * 11 / 10;
  159. SCCI int encourageSpeed = basicEncourageSpeed * 9 / 10;
  160. SCCI double concealment = 1;
  161. SCCI int alertnessRadius = basicStudentAlertnessRadius;
  162. SCCI int viewRange = basicStudentViewRange * 9 / 10;
  163. SCCI int speedOfOpeningOrLocking = basicSpeedOfOpeningOrLocking;
  164. SCCI int speedOfClimbingThroughWindows = basicStudentSpeedOfClimbingThroughWindows * 3 / 4;
  165. SCCI int speedOfOpenChest = basicSpeedOfOpenChest;
  166. };
  167. struct Sunshine
  168. {
  169. SCCI int moveSpeed = basicStudentSpeed;
  170. SCCI int maxHp = basicHp * 32 / 30;
  171. SCCI int maxAddiction = basicMaxGamingAddiction * 11 / 10;
  172. SCCI int fixSpeed = basicFixSpeed;
  173. SCCI int encourageSpeed = basicEncourageSpeed * 12 / 10;
  174. SCCI double concealment = 1;
  175. SCCI int alertnessRadius = basicStudentAlertnessRadius;
  176. SCCI int viewRange = basicStudentViewRange;
  177. SCCI int speedOfOpeningOrLocking = basicSpeedOfOpeningOrLocking * 7 / 10;
  178. SCCI int speedOfClimbingThroughWindows = basicStudentSpeedOfClimbingThroughWindows;
  179. SCCI int speedOfOpenChest = basicSpeedOfOpenChest * 9 / 10;
  180. };
  181. // 技能相关
  182. SCCI int maxNumOfSkill = 3;
  183. SCCI int commonSkillCD = 30000; // 普通技能标准冷却时间
  184. SCCI int commonSkillTime = 10000; // 普通技能标准持续时间
  185. SCCI int timeOfTrickerStunnedWhenCharge = 7220;
  186. SCCI int timeOfStudentStunnedWhenCharge = 2090;
  187. SCCI int timeOfTrickerStunnedWhenPunish = 3070;
  188. SCCI int timeOfTrickerSwingingAfterHowl = 800;
  189. SCCI int timeOfStudentStunnedWhenHowl = 5500;
  190. SCCI int timeOfStunnedWhenJumpyDumpty = 3070;
  191. SCCI double addedTimeOfSpeedWhenInspire = 1.6;
  192. SCCI int timeOfAddingSpeedWhenInspire = 6000;
  193. SCCI int addHpWhenEncourage = basicHp / 4;
  194. SCCI int checkIntervalWhenShowTime = 200;
  195. SCCI int addAddictionPer100msWhenShowTime = 300;
  196. struct CanBeginToCharge
  197. {
  198. SCCI int skillCD = commonSkillCD * 2;
  199. SCCI int durationTime = commonSkillTime * 3 / 10;
  200. };
  201. struct BecomeInvisible
  202. {
  203. SCCI int skillCD = commonSkillCD * 4 / 3;
  204. SCCI int durationTime = commonSkillTime;
  205. };
  206. struct Punish
  207. {
  208. SCCI int skillCD = commonSkillCD * 1;
  209. SCCI int durationTime = commonSkillTime * 0;
  210. };
  211. struct Rouse
  212. {
  213. SCCI int skillCD = commonSkillCD * 4;
  214. SCCI int durationTime = commonSkillTime * 0;
  215. };
  216. struct Encourage
  217. {
  218. SCCI int skillCD = commonSkillCD * 4;
  219. SCCI int durationTime = commonSkillTime * 0;
  220. };
  221. struct Inspire
  222. {
  223. SCCI int skillCD = commonSkillCD * 4;
  224. SCCI int durationTime = commonSkillTime * 0;
  225. };
  226. struct Howl
  227. {
  228. SCCI int skillCD = commonSkillCD * 25 / 30;
  229. SCCI int durationTime = commonSkillTime * 0;
  230. };
  231. struct ShowTime
  232. {
  233. SCCI int skillCD = commonSkillCD * 8 / 3;
  234. SCCI int durationTime = commonSkillTime * 1;
  235. };
  236. struct JumpyBomb
  237. {
  238. SCCI int skillCD = commonSkillCD / 2;
  239. SCCI int durationTime = commonSkillTime * 3 / 10;
  240. };
  241. struct UseKnife
  242. {
  243. SCCI int skillCD = commonSkillCD * 1;
  244. SCCI int durationTime = commonSkillTime / 10;
  245. };
  246. struct UseRobot
  247. {
  248. SCCI int skillCD = commonSkillCD / 300;
  249. SCCI int durationTime = commonSkillTime * 0;
  250. };
  251. struct WriteAnswers
  252. {
  253. SCCI int skillCD = commonSkillCD * 1;
  254. SCCI int durationTime = commonSkillTime * 0;
  255. };
  256. struct SummonGolem
  257. {
  258. SCCI int skillCD = commonSkillCD * 1;
  259. SCCI int durationTime = commonSkillTime * 0;
  260. };
  261. struct CommonAttackOfTricker
  262. {
  263. SCCI double BulletBombRange = 0;
  264. SCCI double BulletAttackRange = basicAttackShortRange;
  265. SCCI int ap = basicApOfTricker;
  266. SCCI int Speed = basicBulletMoveSpeed;
  267. SCCI bool IsRemoteAttack = false;
  268. SCCI int CastTime = (int)BulletAttackRange * 1000 / Speed;
  269. SCCI int Backswing = basicBackswing;
  270. SCCI int RecoveryFromHit = basicRecoveryFromHit;
  271. SCCI int cd = basicBackswing;
  272. SCCI int maxBulletNum = 1;
  273. };
  274. struct FlyingKnife
  275. {
  276. SCCI double BulletBombRange = 0;
  277. SCCI double BulletAttackRange = basicRemoteAttackRange * 13;
  278. SCCI int ap = basicApOfTricker * 4 / 5;
  279. SCCI int Speed = basicBulletMoveSpeed * 25 / 10;
  280. SCCI bool IsRemoteAttack = true;
  281. SCCI int CastTime = basicCastTime * 4 / 5;
  282. SCCI int Backswing = 0;
  283. SCCI int RecoveryFromHit = 0;
  284. SCCI int cd = basicBackswing / 2;
  285. SCCI int maxBulletNum = 1;
  286. };
  287. struct BombBomb
  288. {
  289. SCCI double BulletBombRange = basicBulletBombRange;
  290. SCCI double BulletAttackRange = basicAttackShortRange;
  291. SCCI int ap = basicApOfTricker * 6 / 5;
  292. SCCI int Speed = basicBulletMoveSpeed * 30 / 37;
  293. SCCI bool IsRemoteAttack = false;
  294. SCCI int CastTime = (int)BulletAttackRange * 1000 / Speed;
  295. SCCI int Backswing = basicRecoveryFromHit;
  296. SCCI int RecoveryFromHit = basicRecoveryFromHit;
  297. SCCI int cd = basicCD;
  298. SCCI int maxBulletNum = 1;
  299. };
  300. struct JumpyDumpty
  301. {
  302. SCCI double BulletBombRange = basicBulletBombRange / 2;
  303. SCCI double BulletAttackRange = basicRemoteAttackRange * 2;
  304. SCCI int ap = (int)(basicApOfTricker * 0.6);
  305. SCCI int Speed = basicBulletMoveSpeed * 43 / 37;
  306. SCCI bool IsRemoteAttack = false;
  307. };
  308. } // namespace Constants
  309. #endif