enemy.tscn 9.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388
  1. [gd_scene load_steps=13 format=2]
  2. [ext_resource path="res://icon.png" type="Texture" id=1]
  3. [ext_resource path="res://Health.tscn" type="PackedScene" id=2]
  4. [ext_resource path="res://enemy.gd" type="Script" id=3]
  5. [ext_resource path="res://hitbox.tscn" type="PackedScene" id=4]
  6. [ext_resource path="res://meatspawn.gd" type="Script" id=5]
  7. [ext_resource path="res://particles.tscn" type="PackedScene" id=6]
  8. [ext_resource path="res://fadeout.gd" type="Script" id=7]
  9. [ext_resource path="res://fadein.gd" type="Script" id=8]
  10. [sub_resource type="RectangleShape2D" id=1]
  11. [sub_resource type="Animation" id=2]
  12. length = 0.001
  13. tracks/0/type = "value"
  14. tracks/0/path = NodePath(".:speed")
  15. tracks/0/interp = 1
  16. tracks/0/loop_wrap = true
  17. tracks/0/imported = false
  18. tracks/0/enabled = true
  19. tracks/0/keys = {
  20. "times": PoolRealArray( 0 ),
  21. "transitions": PoolRealArray( 1 ),
  22. "update": 0,
  23. "values": [ 150 ]
  24. }
  25. tracks/1/type = "value"
  26. tracks/1/path = NodePath(".:exppt")
  27. tracks/1/interp = 1
  28. tracks/1/loop_wrap = true
  29. tracks/1/imported = false
  30. tracks/1/enabled = true
  31. tracks/1/keys = {
  32. "times": PoolRealArray( 0 ),
  33. "transitions": PoolRealArray( 1 ),
  34. "update": 0,
  35. "values": [ 15 ]
  36. }
  37. tracks/2/type = "value"
  38. tracks/2/path = NodePath(".:detectionzone")
  39. tracks/2/interp = 1
  40. tracks/2/loop_wrap = true
  41. tracks/2/imported = false
  42. tracks/2/enabled = true
  43. tracks/2/keys = {
  44. "times": PoolRealArray( 0 ),
  45. "transitions": PoolRealArray( 1 ),
  46. "update": 0,
  47. "values": [ 256 ]
  48. }
  49. tracks/3/type = "value"
  50. tracks/3/path = NodePath(".:reactiontime")
  51. tracks/3/interp = 1
  52. tracks/3/loop_wrap = true
  53. tracks/3/imported = false
  54. tracks/3/enabled = true
  55. tracks/3/keys = {
  56. "times": PoolRealArray( 0 ),
  57. "transitions": PoolRealArray( 1 ),
  58. "update": 0,
  59. "values": [ 1 ]
  60. }
  61. tracks/4/type = "value"
  62. tracks/4/path = NodePath(".:attackrange")
  63. tracks/4/interp = 1
  64. tracks/4/loop_wrap = true
  65. tracks/4/imported = false
  66. tracks/4/enabled = true
  67. tracks/4/keys = {
  68. "times": PoolRealArray( 0 ),
  69. "transitions": PoolRealArray( 1 ),
  70. "update": 0,
  71. "values": [ 64 ]
  72. }
  73. tracks/5/type = "value"
  74. tracks/5/path = NodePath("hitbox:dmg")
  75. tracks/5/interp = 1
  76. tracks/5/loop_wrap = true
  77. tracks/5/imported = false
  78. tracks/5/enabled = true
  79. tracks/5/keys = {
  80. "times": PoolRealArray( 0 ),
  81. "transitions": PoolRealArray( 1 ),
  82. "update": 0,
  83. "values": [ 5 ]
  84. }
  85. tracks/6/type = "value"
  86. tracks/6/path = NodePath("Health:health_max")
  87. tracks/6/interp = 1
  88. tracks/6/loop_wrap = true
  89. tracks/6/imported = false
  90. tracks/6/enabled = true
  91. tracks/6/keys = {
  92. "times": PoolRealArray( 0 ),
  93. "transitions": PoolRealArray( 1 ),
  94. "update": 0,
  95. "values": [ 20 ]
  96. }
  97. tracks/7/type = "value"
  98. tracks/7/path = NodePath("Sprite:modulate")
  99. tracks/7/interp = 1
  100. tracks/7/loop_wrap = true
  101. tracks/7/imported = false
  102. tracks/7/enabled = true
  103. tracks/7/keys = {
  104. "times": PoolRealArray( 0 ),
  105. "transitions": PoolRealArray( 1 ),
  106. "update": 0,
  107. "values": [ Color( 1, 0, 0, 1 ) ]
  108. }
  109. tracks/8/type = "value"
  110. tracks/8/path = NodePath("hitbox:visible")
  111. tracks/8/interp = 1
  112. tracks/8/loop_wrap = true
  113. tracks/8/imported = false
  114. tracks/8/enabled = true
  115. tracks/8/keys = {
  116. "times": PoolRealArray( 0 ),
  117. "transitions": PoolRealArray( 1 ),
  118. "update": 0,
  119. "values": [ true ]
  120. }
  121. [sub_resource type="Animation" id=3]
  122. resource_name = "enemy"
  123. tracks/0/type = "value"
  124. tracks/0/path = NodePath(".:speed")
  125. tracks/0/interp = 1
  126. tracks/0/loop_wrap = true
  127. tracks/0/imported = false
  128. tracks/0/enabled = true
  129. tracks/0/keys = {
  130. "times": PoolRealArray( 0 ),
  131. "transitions": PoolRealArray( 1 ),
  132. "update": 1,
  133. "values": [ 150 ]
  134. }
  135. tracks/1/type = "value"
  136. tracks/1/path = NodePath(".:exppt")
  137. tracks/1/interp = 1
  138. tracks/1/loop_wrap = true
  139. tracks/1/imported = false
  140. tracks/1/enabled = true
  141. tracks/1/keys = {
  142. "times": PoolRealArray( 0 ),
  143. "transitions": PoolRealArray( 1 ),
  144. "update": 1,
  145. "values": [ 15 ]
  146. }
  147. tracks/2/type = "value"
  148. tracks/2/path = NodePath(".:detectionzone")
  149. tracks/2/interp = 1
  150. tracks/2/loop_wrap = true
  151. tracks/2/imported = false
  152. tracks/2/enabled = true
  153. tracks/2/keys = {
  154. "times": PoolRealArray( 0 ),
  155. "transitions": PoolRealArray( 1 ),
  156. "update": 1,
  157. "values": [ 256 ]
  158. }
  159. tracks/3/type = "value"
  160. tracks/3/path = NodePath(".:reactiontime")
  161. tracks/3/interp = 1
  162. tracks/3/loop_wrap = true
  163. tracks/3/imported = false
  164. tracks/3/enabled = true
  165. tracks/3/keys = {
  166. "times": PoolRealArray( 0 ),
  167. "transitions": PoolRealArray( 1 ),
  168. "update": 1,
  169. "values": [ 1 ]
  170. }
  171. tracks/4/type = "value"
  172. tracks/4/path = NodePath(".:attackrange")
  173. tracks/4/interp = 1
  174. tracks/4/loop_wrap = true
  175. tracks/4/imported = false
  176. tracks/4/enabled = true
  177. tracks/4/keys = {
  178. "times": PoolRealArray( 0 ),
  179. "transitions": PoolRealArray( 1 ),
  180. "update": 1,
  181. "values": [ 64 ]
  182. }
  183. tracks/5/type = "value"
  184. tracks/5/path = NodePath("hitbox:dmg")
  185. tracks/5/interp = 1
  186. tracks/5/loop_wrap = true
  187. tracks/5/imported = false
  188. tracks/5/enabled = true
  189. tracks/5/keys = {
  190. "times": PoolRealArray( 0 ),
  191. "transitions": PoolRealArray( 1 ),
  192. "update": 1,
  193. "values": [ 5 ]
  194. }
  195. tracks/6/type = "value"
  196. tracks/6/path = NodePath("Health:health_max")
  197. tracks/6/interp = 1
  198. tracks/6/loop_wrap = true
  199. tracks/6/imported = false
  200. tracks/6/enabled = true
  201. tracks/6/keys = {
  202. "times": PoolRealArray( 0 ),
  203. "transitions": PoolRealArray( 1 ),
  204. "update": 1,
  205. "values": [ 20 ]
  206. }
  207. tracks/7/type = "value"
  208. tracks/7/path = NodePath("Sprite:modulate")
  209. tracks/7/interp = 1
  210. tracks/7/loop_wrap = true
  211. tracks/7/imported = false
  212. tracks/7/enabled = true
  213. tracks/7/keys = {
  214. "times": PoolRealArray( 0 ),
  215. "transitions": PoolRealArray( 1 ),
  216. "update": 0,
  217. "values": [ Color( 1, 0, 0, 1 ) ]
  218. }
  219. tracks/8/type = "value"
  220. tracks/8/path = NodePath("hitbox:visible")
  221. tracks/8/interp = 1
  222. tracks/8/loop_wrap = true
  223. tracks/8/imported = false
  224. tracks/8/enabled = true
  225. tracks/8/keys = {
  226. "times": PoolRealArray( 0 ),
  227. "transitions": PoolRealArray( 1 ),
  228. "update": 1,
  229. "values": [ true ]
  230. }
  231. [sub_resource type="Animation" id=4]
  232. resource_name = "peaceful"
  233. tracks/0/type = "value"
  234. tracks/0/path = NodePath(".:speed")
  235. tracks/0/interp = 1
  236. tracks/0/loop_wrap = true
  237. tracks/0/imported = false
  238. tracks/0/enabled = true
  239. tracks/0/keys = {
  240. "times": PoolRealArray( 0 ),
  241. "transitions": PoolRealArray( 1 ),
  242. "update": 1,
  243. "values": [ -150 ]
  244. }
  245. tracks/1/type = "value"
  246. tracks/1/path = NodePath(".:exppt")
  247. tracks/1/interp = 1
  248. tracks/1/loop_wrap = true
  249. tracks/1/imported = false
  250. tracks/1/enabled = true
  251. tracks/1/keys = {
  252. "times": PoolRealArray( 0 ),
  253. "transitions": PoolRealArray( 1 ),
  254. "update": 1,
  255. "values": [ 15 ]
  256. }
  257. tracks/2/type = "value"
  258. tracks/2/path = NodePath(".:detectionzone")
  259. tracks/2/interp = 1
  260. tracks/2/loop_wrap = true
  261. tracks/2/imported = false
  262. tracks/2/enabled = true
  263. tracks/2/keys = {
  264. "times": PoolRealArray( 0 ),
  265. "transitions": PoolRealArray( 1 ),
  266. "update": 1,
  267. "values": [ 256 ]
  268. }
  269. tracks/3/type = "value"
  270. tracks/3/path = NodePath(".:reactiontime")
  271. tracks/3/interp = 1
  272. tracks/3/loop_wrap = true
  273. tracks/3/imported = false
  274. tracks/3/enabled = true
  275. tracks/3/keys = {
  276. "times": PoolRealArray( 0 ),
  277. "transitions": PoolRealArray( 1 ),
  278. "update": 1,
  279. "values": [ 1 ]
  280. }
  281. tracks/4/type = "value"
  282. tracks/4/path = NodePath(".:attackrange")
  283. tracks/4/interp = 1
  284. tracks/4/loop_wrap = true
  285. tracks/4/imported = false
  286. tracks/4/enabled = true
  287. tracks/4/keys = {
  288. "times": PoolRealArray( 0 ),
  289. "transitions": PoolRealArray( 1 ),
  290. "update": 1,
  291. "values": [ 64 ]
  292. }
  293. tracks/5/type = "value"
  294. tracks/5/path = NodePath("hitbox:dmg")
  295. tracks/5/interp = 1
  296. tracks/5/loop_wrap = true
  297. tracks/5/imported = false
  298. tracks/5/enabled = true
  299. tracks/5/keys = {
  300. "times": PoolRealArray( 0 ),
  301. "transitions": PoolRealArray( 1 ),
  302. "update": 1,
  303. "values": [ 0 ]
  304. }
  305. tracks/6/type = "value"
  306. tracks/6/path = NodePath("Health:health_max")
  307. tracks/6/interp = 1
  308. tracks/6/loop_wrap = true
  309. tracks/6/imported = false
  310. tracks/6/enabled = true
  311. tracks/6/keys = {
  312. "times": PoolRealArray( 0 ),
  313. "transitions": PoolRealArray( 1 ),
  314. "update": 1,
  315. "values": [ 20 ]
  316. }
  317. tracks/7/type = "value"
  318. tracks/7/path = NodePath("Sprite:modulate")
  319. tracks/7/interp = 1
  320. tracks/7/loop_wrap = true
  321. tracks/7/imported = false
  322. tracks/7/enabled = true
  323. tracks/7/keys = {
  324. "times": PoolRealArray( 0 ),
  325. "transitions": PoolRealArray( 1 ),
  326. "update": 0,
  327. "values": [ Color( 0.101961, 1, 0, 1 ) ]
  328. }
  329. tracks/8/type = "value"
  330. tracks/8/path = NodePath("hitbox:visible")
  331. tracks/8/interp = 1
  332. tracks/8/loop_wrap = true
  333. tracks/8/imported = false
  334. tracks/8/enabled = true
  335. tracks/8/keys = {
  336. "times": PoolRealArray( 0 ),
  337. "transitions": PoolRealArray( 1 ),
  338. "update": 1,
  339. "values": [ false ]
  340. }
  341. [node name="enemy" type="KinematicBody2D" groups=["enemy"]]
  342. scale = Vector2( 0.75, 0.75 )
  343. script = ExtResource( 3 )
  344. detectionzone = 256
  345. [node name="particles" parent="." instance=ExtResource( 6 )]
  346. [node name="CollisionShape2D" type="CollisionShape2D" parent="."]
  347. shape = SubResource( 1 )
  348. [node name="Sprite" type="Sprite" parent="."]
  349. modulate = Color( 1, 0, 0, 1 )
  350. texture = ExtResource( 1 )
  351. [node name="Health" parent="." instance=ExtResource( 2 )]
  352. health_max = 20
  353. [node name="hitbox" parent="." instance=ExtResource( 4 )]
  354. dmg = 5
  355. affect = "player"
  356. [node name="types" type="AnimationPlayer" parent="."]
  357. anims/RESET = SubResource( 2 )
  358. anims/enemy = SubResource( 3 )
  359. anims/peaceful = SubResource( 4 )
  360. [node name="die" type="Node2D" parent="."]
  361. script = ExtResource( 5 )
  362. [node name="fadeout" type="Node" parent="."]
  363. script = ExtResource( 7 )
  364. nodepath = NodePath("../Sprite")
  365. speed = 3.0
  366. [node name="fadein" type="Node" parent="."]
  367. script = ExtResource( 8 )
  368. nodepath = NodePath("../Sprite")
  369. [connection signal="die" from="Health" to="particles" method="set_emitting" binds= [ false ]]
  370. [connection signal="die" from="Health" to="hitbox" method="hide"]
  371. [connection signal="die" from="Health" to="die" method="_on_Health_die"]
  372. [connection signal="die" from="Health" to="fadeout" method="set_physics_process" binds= [ true ]]