weapons.json 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545
  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. "accuracy": 0.95
  15. },
  16. "bulletConfig": {
  17. "count": {
  18. "type": "single",
  19. "amount": 1,
  20. "spreadAngle": 0,
  21. "burstCount": 1,
  22. "burstDelay": 0
  23. },
  24. "trajectory": {
  25. "type": "straight",
  26. "speed": 200,
  27. "gravity": 0,
  28. "arcHeight": 0,
  29. "homingStrength": 0,
  30. "homingDelay": 0
  31. },
  32. "hitEffects": [
  33. {
  34. "type": "normal_damage",
  35. "priority": 1,
  36. "params": {
  37. "damage": 20
  38. }
  39. }
  40. ],
  41. "lifecycle": {
  42. "type": "hit_destroy",
  43. "maxLifetime": 5.0,
  44. "penetration": 1,
  45. "ricochetCount": 0,
  46. "returnToOrigin": false
  47. },
  48. "visual": {
  49. "bulletPrefab": "bullets/PeaBullet",
  50. "hitEffect": "Animation/WeaponTx/tx0002/tx0002",
  51. "trailEffect": null,
  52. "muzzleFlash": "Animation/WeaponTx/tx0002/tx0002"
  53. }
  54. },
  55. "visualConfig": {
  56. "weaponSprites": {
  57. "1x1": "images/PlantsSprite/001-1",
  58. "1x2": "images/PlantsSprite/001-1",
  59. "2x1": "images/PlantsSprite/001-1",
  60. "2x2": "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. "accuracy": 0.9
  77. },
  78. "bulletConfig": {
  79. "count": {
  80. "type": "single",
  81. "amount": 1,
  82. "spreadAngle": 0,
  83. "burstCount": 1,
  84. "burstDelay": 0
  85. },
  86. "trajectory": {
  87. "type": "straight",
  88. "speed": 250,
  89. "gravity": 0,
  90. "arcHeight": 0,
  91. "homingStrength": 0,
  92. "homingDelay": 0
  93. },
  94. "hitEffects": [
  95. {
  96. "type": "pierce_damage",
  97. "priority": 1,
  98. "params": {
  99. "damage": 15,
  100. "pierceCount": 999
  101. }
  102. }
  103. ],
  104. "lifecycle": {
  105. "type": "range_limit",
  106. "maxLifetime": 5.0,
  107. "penetration": 999,
  108. "ricochetCount": 0,
  109. "returnToOrigin": false,
  110. "maxRange": 1000
  111. },
  112. "visual": {
  113. "bulletPrefab": "bullets/CarrotBullet",
  114. "hitEffect": "",
  115. "trailEffect": "Animation/WeaponTx/tx0001/tx0001",
  116. "muzzleFlash": "Animation/WeaponTx/tx0001/tx0001"
  117. }
  118. },
  119. "visualConfig": {
  120. "weaponSprites": {
  121. "1x1": "images/PlantsSprite/002",
  122. "1x2": "images/PlantsSprite/002",
  123. "2x1": "images/PlantsSprite/002",
  124. "2x2": "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. "accuracy": 0.85
  141. },
  142. "bulletConfig": {
  143. "count": {
  144. "type": "single",
  145. "amount": 1,
  146. "spreadAngle": 0,
  147. "burstCount": 1,
  148. "burstDelay": 0
  149. },
  150. "trajectory": {
  151. "type": "straight",
  152. "speed": 180,
  153. "gravity": 0,
  154. "arcHeight": 0,
  155. "homingStrength": 0,
  156. "homingDelay": 0
  157. },
  158. "hitEffects": [
  159. {
  160. "type": "ricochet_damage",
  161. "priority": 1,
  162. "params": {
  163. "damage": 25,
  164. "ricochetCount": 2,
  165. "ricochetAngle": 45
  166. }
  167. },
  168. {
  169. "type": "pierce_damage",
  170. "priority": 2,
  171. "params": {
  172. "damage": 25,
  173. "pierceCount": 3
  174. }
  175. }
  176. ],
  177. "lifecycle": {
  178. "type": "ricochet_counter",
  179. "maxLifetime": 8.0,
  180. "penetration": 3,
  181. "ricochetCount": 3,
  182. "returnToOrigin": false
  183. },
  184. "visual": {
  185. "bulletPrefab": "bullets/SawBullet",
  186. "hitEffect": "Animation/WeaponTx/tx0002/tx0002",
  187. "trailEffect": null,
  188. "muzzleFlash": "Animation/WeaponTx/tx0002/tx0002"
  189. }
  190. },
  191. "visualConfig": {
  192. "weaponSprites": {
  193. "1x1": "images/PlantsSprite/003",
  194. "1x2": "images/PlantsSprite/003",
  195. "2x1": "images/PlantsSprite/003",
  196. "2x2": "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. "accuracy": 0.8
  213. },
  214. "bulletConfig": {
  215. "count": {
  216. "type": "single",
  217. "amount": 1,
  218. "spreadAngle": 0,
  219. "burstCount": 1,
  220. "burstDelay": 0
  221. },
  222. "trajectory": {
  223. "type": "arc",
  224. "speed": 20,
  225. "gravity": 0,
  226. "rotateSpeed": 0.5,
  227. "homingStrength": 0,
  228. "homingDelay": 0
  229. },
  230. "hitEffects": [
  231. {
  232. "type": "explosion",
  233. "priority": 1,
  234. "params": {
  235. "damage": 80,
  236. "radius": 100,
  237. "delay": 0.1
  238. }
  239. }
  240. ],
  241. "lifecycle": {
  242. "type": "ground_impact",
  243. "maxLifetime": 5.0,
  244. "penetration": 1,
  245. "ricochetCount": 0,
  246. "returnToOrigin": false
  247. },
  248. "visual": {
  249. "bulletPrefab": "bullets/WatermelonBomb",
  250. "hitEffect": "Animation/WeaponTx/tx0007/tx0007",
  251. "trailEffect": null,
  252. "muzzleFlash": "Animation/WeaponTx/tx0007/tx0007"
  253. }
  254. },
  255. "visualConfig": {
  256. "weaponSprites": {
  257. "1x1": "images/PlantsSprite/007",
  258. "1x2": "images/PlantsSprite/007",
  259. "2x1": "images/PlantsSprite/007",
  260. "2x2": "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. "accuracy": 0.9
  277. },
  278. "bulletConfig": {
  279. "count": {
  280. "type": "single",
  281. "amount": 1,
  282. "spreadAngle": 0,
  283. "burstCount": 1,
  284. "burstDelay": 0
  285. },
  286. "trajectory": {
  287. "type": "homing",
  288. "speed": 15,
  289. "gravity": 0,
  290. "homingStrength": 0.5,
  291. "homingDelay": 0.3
  292. },
  293. "hitEffects": [
  294. {
  295. "type": "pierce_damage",
  296. "priority": 1,
  297. "params": {
  298. "damage": 30,
  299. "pierceCount": 999
  300. }
  301. }
  302. ],
  303. "lifecycle": {
  304. "type": "return_trip",
  305. "maxLifetime": 10.0,
  306. "penetration": 999,
  307. "ricochetCount": 0,
  308. "returnToOrigin": true,
  309. "returnDelay": 1.0
  310. },
  311. "visual": {
  312. "bulletPrefab": "bullets/BoomerangBullet",
  313. "hitEffect": "Animation/WeaponTx/tx0003/tx0003",
  314. "trailEffect": null,
  315. "muzzleFlash": "Animation/WeaponTx/tx0003/tx0003"
  316. }
  317. },
  318. "visualConfig": {
  319. "weaponSprites": {
  320. "1x1": "images/PlantsSprite/004",
  321. "1x2": "images/PlantsSprite/004",
  322. "2x1": "images/PlantsSprite/004",
  323. "2x2": "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. "accuracy": 0.75
  340. },
  341. "bulletConfig": {
  342. "count": {
  343. "type": "single",
  344. "amount": 1,
  345. "spreadAngle": 0,
  346. "burstCount": 1,
  347. "burstDelay": 0
  348. },
  349. "trajectory": {
  350. "type": "straight",
  351. "speed": 100,
  352. "gravity": 0,
  353. "arcHeight": 0,
  354. "homingStrength": 0,
  355. "homingDelay": 0
  356. },
  357. "hitEffects": [
  358. {
  359. "type": "explosion",
  360. "priority": 1,
  361. "params": {
  362. "damage": 40,
  363. "radius": 120,
  364. "delay": 0.2
  365. }
  366. },
  367. {
  368. "type": "ground_burn",
  369. "priority": 2,
  370. "params": {
  371. "damage": 10,
  372. "duration": 5.0,
  373. "radius": 120,
  374. "tickInterval": 0.5
  375. }
  376. }
  377. ],
  378. "lifecycle": {
  379. "type": "ground_impact_with_effect",
  380. "maxLifetime": 5.0,
  381. "penetration": 1,
  382. "ricochetCount": 0,
  383. "returnToOrigin": false,
  384. "effectDuration": 5.0
  385. },
  386. "visual": {
  387. "bulletPrefab": "bullets/PepperBomb",
  388. "hitEffect": "Animation/WeaponTx/tx0005/tx0005",
  389. "trailEffect": null,
  390. "burnEffect": "Animation/WeaponTx/tx0005/tx0005",
  391. "muzzleFlash": "Animation/WeaponTx/tx0005/tx0005"
  392. }
  393. },
  394. "visualConfig": {
  395. "weaponSprites": {
  396. "1x1": "images/PlantsSprite/005",
  397. "1x2": "images/PlantsSprite/005",
  398. "2x1": "images/PlantsSprite/005",
  399. "2x2": "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. "accuracy": 0.7
  416. },
  417. "bulletConfig": {
  418. "count": {
  419. "type": "spread",
  420. "amount": 5,
  421. "spreadAngle": 30,
  422. "burstCount": 1,
  423. "burstDelay": 0
  424. },
  425. "trajectory": {
  426. "type": "straight",
  427. "speed": 180,
  428. "gravity": 0,
  429. "arcHeight": 0,
  430. "homingStrength": 0,
  431. "homingDelay": 0
  432. },
  433. "hitEffects": [
  434. {
  435. "type": "normal_damage",
  436. "priority": 1,
  437. "params": {
  438. "damage": 12
  439. }
  440. }
  441. ],
  442. "lifecycle": {
  443. "type": "range_limit",
  444. "maxLifetime": 3.0,
  445. "penetration": 1,
  446. "ricochetCount": 0,
  447. "returnToOrigin": false,
  448. "maxRange": 2000
  449. },
  450. "visual": {
  451. "bulletPrefab": "bullets/CactusBullet",
  452. "hitEffect": "Animation/WeaponTx/tx0005/tx0005",
  453. "trailEffect": null,
  454. "muzzleFlash": "Animation/WeaponTx/tx0005/tx0005"
  455. }
  456. },
  457. "visualConfig": {
  458. "weaponSprites": {
  459. "1x1": "images/PlantsSprite/008",
  460. "1x2": "images/PlantsSprite/008",
  461. "2x1": "images/PlantsSprite/008",
  462. "2x2": "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. "accuracy": 1.0
  479. },
  480. "bulletConfig": {
  481. "count": {
  482. "type": "single",
  483. "amount": 1,
  484. "spreadAngle": 0,
  485. "burstCount": 1,
  486. "burstDelay": 0
  487. },
  488. "trajectory": {
  489. "type": "homing",
  490. "speed": 20,
  491. "gravity": 0.2,
  492. "arcHeight": 100,
  493. "homingStrength": 0.8,
  494. "homingDelay": 0.3
  495. },
  496. "hitEffects": [
  497. {
  498. "type": "explosion",
  499. "priority": 1,
  500. "params": {
  501. "damage": 70,
  502. "radius": 150,
  503. "delay": 0
  504. }
  505. }
  506. ],
  507. "lifecycle": {
  508. "type": "target_impact",
  509. "maxLifetime": 8.0,
  510. "penetration": 1,
  511. "ricochetCount": 0,
  512. "returnToOrigin": false
  513. },
  514. "visual": {
  515. "bulletPrefab": "bullets/OkraMissile",
  516. "hitEffect": "Animation/WeaponTx/tx0006/tx0006",
  517. "trailEffect": null,
  518. "muzzleFlash": "Animation/WeaponTx/tx0006/tx0006"
  519. }
  520. },
  521. "visualConfig": {
  522. "weaponSprites": {
  523. "1x1": "images/PlantsSprite/006",
  524. "1x2": "images/PlantsSprite/006",
  525. "2x1": "images/PlantsSprite/006",
  526. "2x2": "images/PlantsSprite/006"
  527. },
  528. "fireSound": "audio/missile_launch"
  529. }
  530. }
  531. ],
  532. "rarityWeights": {
  533. "common": 60,
  534. "uncommon": 25,
  535. "rare": 12,
  536. "epic": 3
  537. },
  538. "blockSizes": ["1x1", "1x2", "2x1", "2x2"],
  539. "bulletEffectTypes": {
  540. "count": ["single", "spread", "burst"],
  541. "trajectory": ["straight", "arc", "homing_arc"],
  542. "hitEffects": ["normal_damage", "pierce_damage", "explosion", "ground_burn", "ricochet_damage"],
  543. "lifecycle": ["hit_destroy", "range_limit", "ricochet_counter", "ground_impact", "return_trip", "ground_impact_with_effect", "target_impact"]
  544. }
  545. }