weapons.json 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588
  1. {
  2. "weapons": [
  3. {
  4. "id": "pea_shooter",
  5. "name": "毛豆射手",
  6. "type": "single_shot",
  7. "rarity": "common",
  8. "weight": 30,
  9. "stats": {
  10. "damage": 20,
  11. "fireRate": 1.0,
  12. "range": 300,
  13. "bulletSpeed": 30
  14. },
  15. "bulletConfig": {
  16. "count": {
  17. "type": "single",
  18. "amount": 1,
  19. "spreadAngle": 0,
  20. "burstCount": 1,
  21. "burstDelay": 0
  22. },
  23. "trajectory": {
  24. "type": "straight",
  25. "speed": 200,
  26. "gravity": 0,
  27. "arcHeight": 0,
  28. "homingStrength": 0,
  29. "homingDelay": 0
  30. },
  31. "hitEffects": [
  32. {
  33. "type": "normal_damage",
  34. "priority": 1,
  35. "params": {
  36. "damage": 20
  37. }
  38. }
  39. ],
  40. "lifecycle": {
  41. "type": "hit_destroy",
  42. "maxLifetime": 5.0,
  43. "penetration": 1,
  44. "ricochetCount": 0,
  45. "returnToOrigin": false
  46. },
  47. "visual": {
  48. "bulletPrefab": "bullets/PeaBullet",
  49. "hitEffect": "Animation/WeaponTx/tx0002/tx0002",
  50. "trailEffect": null,
  51. "muzzleFlash": "Animation/WeaponTx/tx0002/tx0002"
  52. }
  53. },
  54. "visualConfig": {
  55. "weaponSprites": {
  56. "1x1": "images/PlantsSprite/001-1",
  57. "1x2": "images/PlantsSprite/001-1",
  58. "2x1": "images/PlantsSprite/001-1",
  59. "2x2": "images/PlantsSprite/001-1"
  60. },
  61. "fireSound": "audio/pea_shot"
  62. }
  63. },
  64. {
  65. "id": "sharp_carrot",
  66. "name": "尖胡萝卜",
  67. "type": "piercing",
  68. "rarity": "common",
  69. "weight": 25,
  70. "stats": {
  71. "damage": 15,
  72. "fireRate": 0.8,
  73. "range": 400,
  74. "bulletSpeed": 30
  75. },
  76. "bulletConfig": {
  77. "count": {
  78. "type": "single",
  79. "amount": 1,
  80. "spreadAngle": 0,
  81. "burstCount": 1,
  82. "burstDelay": 0
  83. },
  84. "trajectory": {
  85. "type": "straight",
  86. "speed": 250,
  87. "gravity": 0,
  88. "arcHeight": 0,
  89. "homingStrength": 0,
  90. "homingDelay": 0
  91. },
  92. "hitEffects": [
  93. {
  94. "type": "pierce_damage",
  95. "priority": 1,
  96. "params": {
  97. "damage": 15,
  98. "pierceCount": 999
  99. }
  100. }
  101. ],
  102. "lifecycle": {
  103. "type": "range_limit",
  104. "maxLifetime": 5.0,
  105. "penetration": 999,
  106. "ricochetCount": 0,
  107. "returnToOrigin": false,
  108. "maxRange": 1000
  109. },
  110. "visual": {
  111. "bulletPrefab": "bullets/CarrotBullet",
  112. "hitEffect": "",
  113. "trailEffect": "Animation/WeaponTx/tx0001/tx0001",
  114. "muzzleFlash": "Animation/WeaponTx/tx0001/tx0001"
  115. }
  116. },
  117. "visualConfig": {
  118. "weaponSprites": {
  119. "1x1": "images/PlantsSprite/002",
  120. "1x2": "images/PlantsSprite/002",
  121. "2x1": "images/PlantsSprite/002",
  122. "2x2": "images/PlantsSprite/002"
  123. },
  124. "fireSound": "audio/carrot_shot"
  125. }
  126. },
  127. {
  128. "id": "saw_grass",
  129. "name": "锯齿草",
  130. "type": "ricochet_piercing",
  131. "rarity": "uncommon",
  132. "weight": 20,
  133. "stats": {
  134. "damage": 25,
  135. "fireRate": 0.6,
  136. "range": 350,
  137. "bulletSpeed": 30
  138. },
  139. "bulletConfig": {
  140. "count": {
  141. "type": "single",
  142. "amount": 1,
  143. "spreadAngle": 0,
  144. "burstCount": 1,
  145. "burstDelay": 0
  146. },
  147. "trajectory": {
  148. "type": "straight",
  149. "speed": 180,
  150. "gravity": 0,
  151. "arcHeight": 0,
  152. "homingStrength": 0,
  153. "homingDelay": 0
  154. },
  155. "hitEffects": [
  156. {
  157. "type": "ricochet_damage",
  158. "priority": 1,
  159. "params": {
  160. "damage": 25,
  161. "ricochetCount": 2,
  162. "ricochetAngle": 45
  163. }
  164. },
  165. {
  166. "type": "pierce_damage",
  167. "priority": 2,
  168. "params": {
  169. "damage": 25,
  170. "pierceCount": 3
  171. }
  172. }
  173. ],
  174. "lifecycle": {
  175. "type": "ricochet_counter",
  176. "maxLifetime": 8.0,
  177. "penetration": 3,
  178. "ricochetCount": 3,
  179. "returnToOrigin": false
  180. },
  181. "visual": {
  182. "bulletPrefab": "bullets/SawBullet",
  183. "hitEffect": "Animation/WeaponTx/tx0002/tx0002",
  184. "trailEffect": null,
  185. "muzzleFlash": "Animation/WeaponTx/tx0002/tx0002"
  186. }
  187. },
  188. "visualConfig": {
  189. "weaponSprites": {
  190. "1x1": "images/PlantsSprite/003",
  191. "1x2": "images/PlantsSprite/003",
  192. "2x1": "images/PlantsSprite/003",
  193. "2x2": "images/PlantsSprite/003"
  194. },
  195. "fireSound": "audio/saw_shot"
  196. }
  197. },
  198. {
  199. "id": "watermelon_bomb",
  200. "name": "西瓜炸弹",
  201. "type": "explosive",
  202. "rarity": "rare",
  203. "weight": 15,
  204. "stats": {
  205. "damage": 50,
  206. "fireRate": 0.4,
  207. "range": 250,
  208. "bulletSpeed": 30
  209. },
  210. "bulletConfig": {
  211. "count": {
  212. "type": "single",
  213. "amount": 1,
  214. "spreadAngle": 0,
  215. "burstCount": 1,
  216. "burstDelay": 0
  217. },
  218. "trajectory": {
  219. "type": "arc",
  220. "speed": 20,
  221. "gravity": 0,
  222. "rotateSpeed": 0.5,
  223. "homingStrength": 0,
  224. "homingDelay": 0
  225. },
  226. "hitEffects": [
  227. {
  228. "type": "explosion",
  229. "priority": 1,
  230. "params": {
  231. "damage": 80,
  232. "radius": 100,
  233. "delay": 0.1
  234. }
  235. }
  236. ],
  237. "lifecycle": {
  238. "type": "ground_impact",
  239. "maxLifetime": 5.0,
  240. "penetration": 1,
  241. "ricochetCount": 0,
  242. "returnToOrigin": false
  243. },
  244. "visual": {
  245. "bulletPrefab": "bullets/WatermelonBomb",
  246. "hitEffect": "Animation/WeaponTx/tx0007/tx0007",
  247. "trailEffect": null,
  248. "muzzleFlash": "Animation/WeaponTx/tx0007/tx0007"
  249. }
  250. },
  251. "visualConfig": {
  252. "weaponSprites": {
  253. "1x1": "images/PlantsSprite/007",
  254. "1x2": "images/PlantsSprite/007",
  255. "2x1": "images/PlantsSprite/007",
  256. "2x2": "images/PlantsSprite/007"
  257. },
  258. "fireSound": "audio/bomb_launch"
  259. }
  260. },
  261. {
  262. "id": "boomerang_plant",
  263. "name": "回旋镖盆栽",
  264. "type": "boomerang",
  265. "rarity": "uncommon",
  266. "weight": 18,
  267. "stats": {
  268. "damage": 30,
  269. "fireRate": 0.5,
  270. "range": 300,
  271. "bulletSpeed": 30
  272. },
  273. "bulletConfig": {
  274. "count": {
  275. "type": "single",
  276. "amount": 1,
  277. "spreadAngle": 0,
  278. "burstCount": 1,
  279. "burstDelay": 0
  280. },
  281. "trajectory": {
  282. "type": "homing",
  283. "speed": 15,
  284. "gravity": 0,
  285. "homingStrength": 0.5,
  286. "homingDelay": 0.3
  287. },
  288. "hitEffects": [
  289. {
  290. "type": "pierce_damage",
  291. "priority": 1,
  292. "params": {
  293. "damage": 30,
  294. "pierceCount": 999
  295. }
  296. }
  297. ],
  298. "lifecycle": {
  299. "type": "return_trip",
  300. "maxLifetime": 10.0,
  301. "penetration": 999,
  302. "ricochetCount": 0,
  303. "returnToOrigin": true,
  304. "returnDelay": 1.0
  305. },
  306. "visual": {
  307. "bulletPrefab": "bullets/BoomerangBullet",
  308. "hitEffect": "Animation/WeaponTx/tx0003/tx0003",
  309. "trailEffect": null,
  310. "muzzleFlash": "Animation/WeaponTx/tx0003/tx0003"
  311. }
  312. },
  313. "visualConfig": {
  314. "weaponSprites": {
  315. "1x1": "images/PlantsSprite/004",
  316. "1x2": "images/PlantsSprite/004",
  317. "2x1": "images/PlantsSprite/004",
  318. "2x2": "images/PlantsSprite/004"
  319. },
  320. "fireSound": "audio/boomerang_throw"
  321. }
  322. },
  323. {
  324. "id": "hot_pepper",
  325. "name": "炙热辣椒",
  326. "type": "area_burn",
  327. "rarity": "rare",
  328. "weight": 12,
  329. "stats": {
  330. "damage": 40,
  331. "fireRate": 0.3,
  332. "range": 280,
  333. "bulletSpeed": 30
  334. },
  335. "bulletConfig": {
  336. "count": {
  337. "type": "single",
  338. "amount": 1,
  339. "spreadAngle": 0,
  340. "burstCount": 1,
  341. "burstDelay": 0
  342. },
  343. "trajectory": {
  344. "type": "straight",
  345. "speed": 100,
  346. "gravity": 0,
  347. "arcHeight": 0,
  348. "homingStrength": 0,
  349. "homingDelay": 0
  350. },
  351. "hitEffects": [
  352. {
  353. "type": "explosion",
  354. "priority": 1,
  355. "params": {
  356. "damage": 40,
  357. "radius": 120,
  358. "delay": 0.2
  359. }
  360. },
  361. {
  362. "type": "ground_burn",
  363. "priority": 2,
  364. "params": {
  365. "damage": 10,
  366. "duration": 5.0,
  367. "radius": 120,
  368. "tickInterval": 0.5
  369. }
  370. }
  371. ],
  372. "lifecycle": {
  373. "type": "ground_impact_with_effect",
  374. "maxLifetime": 5.0,
  375. "penetration": 1,
  376. "ricochetCount": 0,
  377. "returnToOrigin": false,
  378. "effectDuration": 5.0
  379. },
  380. "visual": {
  381. "bulletPrefab": "bullets/PepperBomb",
  382. "hitEffect": "Animation/WeaponTx/tx0005/tx0005",
  383. "trailEffect": null,
  384. "burnEffect": "Animation/WeaponTx/tx0005/tx0005",
  385. "muzzleFlash": "Animation/WeaponTx/tx0005/tx0005"
  386. }
  387. },
  388. "visualConfig": {
  389. "weaponSprites": {
  390. "1x1": "images/PlantsSprite/005",
  391. "1x2": "images/PlantsSprite/005",
  392. "2x1": "images/PlantsSprite/005",
  393. "2x2": "images/PlantsSprite/005"
  394. },
  395. "fireSound": "audio/pepper_launch"
  396. }
  397. },
  398. {
  399. "id": "cactus_shotgun",
  400. "name": "仙人散弹",
  401. "type": "shotgun",
  402. "rarity": "uncommon",
  403. "weight": 22,
  404. "stats": {
  405. "damage": 12,
  406. "fireRate": 0.7,
  407. "range": 200,
  408. "bulletSpeed": 30
  409. },
  410. "bulletConfig": {
  411. "count": {
  412. "type": "spread",
  413. "amount": 5,
  414. "spreadAngle": 30,
  415. "burstCount": 1,
  416. "burstDelay": 0
  417. },
  418. "trajectory": {
  419. "type": "straight",
  420. "speed": 180,
  421. "gravity": 0,
  422. "arcHeight": 0,
  423. "homingStrength": 0,
  424. "homingDelay": 0
  425. },
  426. "hitEffects": [
  427. {
  428. "type": "normal_damage",
  429. "priority": 1,
  430. "params": {
  431. "damage": 12
  432. }
  433. }
  434. ],
  435. "lifecycle": {
  436. "type": "range_limit",
  437. "maxLifetime": 3.0,
  438. "penetration": 1,
  439. "ricochetCount": 0,
  440. "returnToOrigin": false,
  441. "maxRange": 2000
  442. },
  443. "visual": {
  444. "bulletPrefab": "bullets/CactusBullet",
  445. "hitEffect": "Animation/WeaponTx/tx0005/tx0005",
  446. "trailEffect": null,
  447. "muzzleFlash": "Animation/WeaponTx/tx0005/tx0005"
  448. }
  449. },
  450. "visualConfig": {
  451. "weaponSprites": {
  452. "1x1": "images/PlantsSprite/008",
  453. "1x2": "images/PlantsSprite/008",
  454. "2x1": "images/PlantsSprite/008",
  455. "2x2": "images/PlantsSprite/008"
  456. },
  457. "fireSound": "audio/cactus_shot"
  458. }
  459. },
  460. {
  461. "id": "okra_missile",
  462. "name": "秋葵导弹",
  463. "type": "homing_missile",
  464. "rarity": "epic",
  465. "weight": 8,
  466. "stats": {
  467. "damage": 70,
  468. "fireRate": 0.25,
  469. "range": 500,
  470. "bulletSpeed": 30
  471. },
  472. "bulletConfig": {
  473. "count": {
  474. "type": "single",
  475. "amount": 1,
  476. "spreadAngle": 0,
  477. "burstCount": 1,
  478. "burstDelay": 0
  479. },
  480. "trajectory": {
  481. "type": "homing",
  482. "speed": 20,
  483. "gravity": 0.2,
  484. "arcHeight": 100,
  485. "homingStrength": 0.8,
  486. "homingDelay": 0.3
  487. },
  488. "hitEffects": [
  489. {
  490. "type": "explosion",
  491. "priority": 1,
  492. "params": {
  493. "damage": 70,
  494. "radius": 150,
  495. "delay": 0
  496. }
  497. }
  498. ],
  499. "lifecycle": {
  500. "type": "target_impact",
  501. "maxLifetime": 8.0,
  502. "penetration": 1,
  503. "ricochetCount": 0,
  504. "returnToOrigin": false
  505. },
  506. "visual": {
  507. "bulletPrefab": "bullets/OkraMissile",
  508. "hitEffect": "Animation/WeaponTx/tx0006/tx0006",
  509. "trailEffect": null,
  510. "muzzleFlash": "Animation/WeaponTx/tx0006/tx0006"
  511. }
  512. },
  513. "visualConfig": {
  514. "weaponSprites": {
  515. "1x1": "images/PlantsSprite/006",
  516. "1x2": "images/PlantsSprite/006",
  517. "2x1": "images/PlantsSprite/006",
  518. "2x2": "images/PlantsSprite/006"
  519. },
  520. "fireSound": "audio/missile_launch"
  521. }
  522. }
  523. ],
  524. "rarityWeights": {
  525. "common": 60,
  526. "uncommon": 25,
  527. "rare": 12,
  528. "epic": 3
  529. },
  530. "blockSizes": [
  531. {
  532. "id": "I",
  533. "name": "竖条",
  534. "shape": [
  535. [1,0,0,0],
  536. [1,0,0,0],
  537. [0,0,0,0],
  538. [0,0,0,0]
  539. ]
  540. },
  541. {
  542. "id": "H-I",
  543. "name": "横I型",
  544. "shape": [
  545. [0,0,0,0],
  546. [1,1,0,0],
  547. [0,0,0,0],
  548. [0,0,0,0]
  549. ]
  550. },
  551. {
  552. "id": "L",
  553. "name": "L型",
  554. "shape": [
  555. [1,1,0,0],
  556. [1,0,0,0],
  557. [0,0,0,0],
  558. [0,0,0,0]
  559. ]
  560. },
  561. {
  562. "id": "S",
  563. "name": "S型",
  564. "shape": [
  565. [0,1,1,0],
  566. [1,1,0,0],
  567. [0,0,0,0],
  568. [0,0,0,0]
  569. ]
  570. },
  571. {
  572. "id": "D-T",
  573. "name": "倒T型",
  574. "shape": [
  575. [0,1,0,0],
  576. [1,1,1,0],
  577. [0,0,0,0],
  578. [0,0,0,0]
  579. ]
  580. }
  581. ],
  582. "bulletEffectTypes": {
  583. "count": ["single", "spread", "burst"],
  584. "trajectory": ["straight", "arc", "homing_arc"],
  585. "hitEffects": ["normal_damage", "pierce_damage", "explosion", "ground_burn", "ricochet_damage"],
  586. "lifecycle": ["hit_destroy", "range_limit", "ricochet_counter", "ground_impact", "return_trip", "ground_impact_with_effect", "target_impact"]
  587. }
  588. }