weapons.json 16 KB

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