Created
October 25, 2023 20:07
-
-
Save williewillus/f6274ed2c246f415981de3e8817e1033 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
LoadTexture('bullet1', 'THlib\\bullet\\bullet1.png', true) | |
LoadImageGroup('preimg', 'bullet1', 80, 0, 32, 32, 1, 8) | |
LoadImageGroup('arrow_big', 'bullet1', 0, 0, 16, 16, 1, 16, 2.5, 2.5) | |
LoadImageGroup('gun_bullet', 'bullet1', 24, 0, 16, 16, 1, 16, 2.5, 2.5) | |
LoadImageGroup('gun_bullet_void', 'bullet1', 56, 0, 16, 16, 1, 16, 2.5, 2.5) | |
LoadImageGroup('butterfly', 'bullet1', 112, 0, 32, 32, 1, 8, 4, 4) | |
LoadImageGroup('square', 'bullet1', 152, 0, 16, 16, 1, 16, 3, 3) | |
LoadImageGroup('ball_mid', 'bullet1', 176, 0, 32, 32, 1, 8, 4, 4) | |
LoadImageGroup('mildew', 'bullet1', 208, 0, 16, 16, 1, 16, 2, 2) | |
LoadImageGroup('ellipse', 'bullet1', 224, 0, 32, 32, 1, 8, 4.5, 4.5) | |
LoadTexture('bullet2', 'THlib\\bullet\\bullet2.png') | |
LoadImageGroup('star_small', 'bullet2', 96, 0, 16, 16, 1, 16, 3, 3) | |
LoadImageGroup('star_big', 'bullet2', 224, 0, 32, 32, 1, 8, 5.5, 5.5) | |
for i = 1, 8 do | |
SetImageCenter('star_big' .. i, 15.5, 16) | |
end | |
--LoadImageGroup('ball_huge','bullet2',0,0,64,64,1,4,16,16) | |
--LoadImageGroup('fade_ball_huge','bullet2',0,0,64,64,1,4,16,16) | |
LoadImageGroup('ball_big', 'bullet2', 192, 0, 32, 32, 1, 8, 8, 8) | |
for i = 1, 8 do | |
SetImageCenter('ball_big' .. i, 16, 16.5) | |
end | |
LoadImageGroup('ball_small', 'bullet2', 176, 0, 16, 16, 1, 16, 2, 2) | |
LoadImageGroup('grain_a', 'bullet2', 160, 0, 16, 16, 1, 16, 2.5, 2.5) | |
LoadImageGroup('grain_b', 'bullet2', 128, 0, 16, 16, 1, 16, 2.5, 2.5) | |
LoadTexture('bullet3', 'THlib\\bullet\\bullet3.png') | |
LoadImageGroup('knife', 'bullet3', 0, 0, 32, 32, 1, 8, 4, 4) | |
LoadImageGroup('grain_c', 'bullet3', 48, 0, 16, 16, 1, 16, 2.5, 2.5) | |
LoadImageGroup('arrow_small', 'bullet3', 80, 0, 16, 16, 1, 16, 2.5, 2.5) | |
LoadImageGroup('kite', 'bullet3', 112, 0, 16, 16, 1, 16, 2.5, 2.5) | |
LoadImageGroup('fake_laser', 'bullet3', 144, 0, 14, 16, 1, 16, 5, 5, true) | |
for i = 1, 16 do | |
SetImageState('fake_laser' .. i, 'mul+add') | |
SetImageCenter('fake_laser' .. i, 0, 8) | |
end | |
LoadTexture('bullet4', 'THlib\\bullet\\bullet4.png') | |
LoadImageGroup('star_big_b', 'bullet4', 32, 0, 32, 32, 1, 8, 6, 6) | |
LoadImageGroup('ball_mid_b', 'bullet4', 64, 0, 32, 32, 1, 8, 4, 4) | |
for i = 1, 8 do | |
SetImageState('ball_mid_b' .. i, 'mul+add', Color(200, 200, 200, 200)) | |
end | |
LoadImageGroup('arrow_mid', 'bullet4', 96, 0, 32, 32, 1, 8, 3.5, 3.5) | |
for i = 1, 8 do | |
SetImageCenter('arrow_mid' .. i, 24, 16) | |
end | |
LoadImageGroup('heart', 'bullet4', 128, 0, 32, 32, 1, 8, 9, 9) | |
LoadImageGroup('knife_b', 'bullet4', 192, 0, 32, 32, 1, 8, 3.5, 3.5) | |
for i = 1, 8 do | |
LoadImage('ball_mid_c' .. i, 'bullet4', 232, i * 32 - 24, 16, 16, 4, 4) | |
end | |
LoadImageGroup('money', 'bullet4', 168, 0, 16, 16, 1, 8, 4, 4) | |
LoadImageGroup('ball_mid_d', 'bullet4', 168, 128, 16, 16, 1, 8, 3, 3) | |
for i = 1, 8 do | |
SetImageState('ball_mid_d' .. i, 'mul+add') | |
end | |
--------ball_light-------- | |
LoadTexture('bullet5', 'THlib\\bullet\\bullet5.png') | |
LoadImageGroup('ball_light', 'bullet5', 0, 0, 64, 64, 4, 2, 11.5, 11.5) | |
LoadImageGroup('fade_ball_light', 'bullet5', 0, 0, 64, 64, 4, 2, 11.5, 11.5) | |
LoadImageGroup('ball_light_dark', 'bullet5', 0, 0, 64, 64, 4, 2, 11.5, 11.5) | |
LoadImageGroup('fade_ball_light_dark', 'bullet5', 0, 0, 64, 64, 4, 2, 11.5, 11.5) | |
for i = 1, 8 do | |
SetImageState('ball_light' .. i, 'mul+add') | |
end | |
-------------------------- | |
--------ball_huge--------- | |
LoadTexture('bullet_ball_huge', 'THlib\\bullet\\bullet_ball_huge.png') | |
LoadImageGroup('ball_huge', 'bullet_ball_huge', 0, 0, 64, 64, 4, 2, 13.5, 13.5) | |
LoadImageGroup('fade_ball_huge', 'bullet_ball_huge', 0, 0, 64, 64, 4, 2, 13.5, 13.5) | |
LoadImageGroup('ball_huge_dark', 'bullet_ball_huge', 0, 0, 64, 64, 4, 2, 13.5, 13.5) | |
LoadImageGroup('fade_ball_huge_dark', 'bullet_ball_huge', 0, 0, 64, 64, 4, 2, 13.5, 13.5) | |
for i = 1, 8 do | |
SetImageState('ball_huge' .. i, 'mul+add') | |
end | |
-------------------------- | |
--------water_drop-------- | |
LoadTexture('bullet_water_drop', 'THlib\\bullet\\bullet_water_drop.png') | |
for i = 1, 8 do | |
LoadAnimation('water_drop' .. i, 'bullet_water_drop', 48 * (i - 1), 0, 48, 32, 1, 4, 4, 4, 4) | |
SetAnimationState('water_drop' .. i, 'mul+add') | |
end | |
for i = 1, 8 do | |
LoadAnimation('water_drop_dark' .. i, 'bullet_water_drop', 48 * (i - 1), 0, 48, 32, 1, 4, 4, 4, 4) | |
end | |
-------------------------- | |
--------music------------- | |
LoadTexture('bullet_music', 'THlib\\bullet\\bullet_music.png') | |
for i = 1, 8 do | |
LoadAnimation('music' .. i, 'bullet_music', 60 * (i - 1), 0, 60, 32, 1, 3, 8, 4, 4) | |
end | |
------silence------------- | |
LoadTexture('bullet6', 'THlib\\bullet\\bullet6.png') | |
LoadImageGroup('silence', 'bullet6', 192, 0, 32, 32, 1, 8, 4.5, 4.5) | |
-------------------------- | |
------bullet_break-------- | |
--牺牲内存优化运行性能 | |
LoadTexture('etbreak', 'THlib\\bullet\\etbreak.png') | |
for j = 1, 16 do | |
LoadAnimation('etbreak' .. j, 'etbreak', 0, 0, 64, 64, 4, 2, 3) | |
end | |
BulletBreakIndex = { | |
Color(0xC0FF3030), --red | |
Color(0xC0FF30FF), --purple | |
Color(0xC03030FF), --blue | |
Color(0xC030FFFF), --cyan | |
Color(0xC030FF30), --green | |
Color(0xC0FFFF30), --yellow | |
Color(0xC0FF8030), --orange | |
Color(0xC0D0D0D0), --gray | |
} | |
for j = 1, 16 do | |
if j % 2 == 0 then | |
SetAnimationState('etbreak' .. j, 'mul+add', BulletBreakIndex[j / 2]) | |
elseif j == 15 then | |
SetAnimationState('etbreak' .. j, '', 0.5 * BulletBreakIndex[(j + 1) / 2] + Color(0x60000000)) | |
else | |
SetAnimationState('etbreak' .. j, 'mul+add', 0.5 * BulletBreakIndex[(j + 1) / 2] + Color(0x60000000)) | |
end | |
end | |
BulletBreak = Class(object) | |
function BulletBreak:init(x, y, index) | |
self.x = x | |
self.y = y | |
self.group = GROUP_GHOST | |
self.layer = LAYER_ENEMY_BULLET - 50 | |
self.img = 'etbreak' .. index | |
local s = ran:Float(0.5, 0.75) | |
self.hscale = s | |
self.vscale = s | |
self.rot = ran:Float(0, 360) | |
end | |
function BulletBreak:frame() | |
if self.timer == 23 then | |
Del(self) | |
end | |
end | |
if lstg.ResourceReference and true then | |
--0.81c及以后 | |
local STATIC_BULLETBKEF_RES = {} | |
for i = 1, 16 do | |
STATIC_BULLETBKEF_RES[i] = lstg.ResourceReference("etbreak" .. i, 3) | |
end | |
function BulletBreak:init(x, y, index) | |
self.x = x | |
self.y = y | |
self.group = GROUP_GHOST | |
self.layer = LAYER_ENEMY_BULLET - 50 | |
lstg.ObjectChangeResource(self, STATIC_BULLETBKEF_RES[index]) | |
local s = ran:Float(0.5, 0.75) | |
self.hscale = s | |
self.vscale = s | |
self.rot = ran:Float(0, 360) | |
end | |
end | |
-------------------------- | |
bullet = Class(object) | |
function bullet:init(imgclass, index, stay, destroyable) | |
self.logclass = self.class | |
self.imgclass = imgclass | |
self.class = imgclass | |
if destroyable then | |
self.group = GROUP_ENEMY_BULLET | |
else | |
self.group = GROUP_INDES | |
end | |
if type(index) == 'number' then | |
self.colli = true | |
self.stay = stay | |
index = int(min(max(1, index), 16)) | |
self.layer = LAYER_ENEMY_BULLET_EF - imgclass.size * 0.001 + index * 0.00001 | |
self._index = index | |
self.index = int((index + 1) / 2) | |
end | |
imgclass.init(self, index) | |
end | |
function bullet:frame() | |
task.Do(self) | |
end | |
function bullet:kill() | |
local w = lstg.world | |
New(item_faith_minor, self.x, self.y) | |
if self._index and BoxCheck(self, w.boundl, w.boundr, w.boundb, w.boundt) then | |
New(BulletBreak, self.x, self.y, self._index) | |
end | |
if self.imgclass.size == 2.0 then | |
self.imgclass.del(self) | |
end | |
end | |
function bullet:del() | |
-- self.imgclass.del(self) | |
local w = lstg.world | |
if self.imgclass.size == 2.0 then | |
self.imgclass.del(self) | |
end | |
if self._index and BoxCheck(self, w.boundl, w.boundr, w.boundb, w.boundt) then | |
New(BulletBreak, self.x, self.y, self._index) | |
end | |
end | |
function bullet:render() | |
if self._blend and self._a and self._r and self._g and self._b then | |
SetImgState(self, self._blend, self._a, self._r, self._g, self._b) | |
end | |
DefaultRenderFunc(self) | |
if self._blend and self._a and self._r and self._g and self._b then | |
SetImgState(self, '', 255, 255, 255, 255) | |
end | |
end | |
---------------------------------------------------------------- | |
img_class = Class(object) | |
function img_class:frame() | |
if not self.stay then | |
if not (self._forbid_ref) then | |
--by OLC,修正了defaul action死循环的问题 | |
self._forbid_ref = true | |
self.logclass.frame(self) | |
self._forbid_ref = nil | |
end | |
else | |
self.x = self.x - self.vx | |
self.y = self.y - self.vy | |
self.rot = self.rot - self.omiga | |
end | |
if self.timer == 11 then | |
self.class = self.logclass | |
self.layer = LAYER_ENEMY_BULLET - self.imgclass.size * 0.001 + self._index * 0.00001 | |
-- self.colli=true | |
if self.stay then | |
self.timer = -1 | |
end | |
end | |
end | |
function img_class:del() | |
New(bubble2, 'preimg' .. self.index, self.x, self.y, self.dx, self.dy, 11, self.imgclass.size, 0, Color(0xFFFFFFFF), Color(0xFFFFFFFF), self.layer, 'mul+add') | |
end | |
function img_class:kill() | |
img_class.del(self) | |
New(BulletBreak, self.x, self.y, self._index) | |
New(item_faith_minor, self.x, self.y) | |
end | |
function img_class:render() | |
if self._blend then | |
SetImageState('preimg' .. self.index, self._blend, Color(255 * self.timer / 11, 255, 255, 255)) | |
else | |
SetImageState('preimg' .. self.index, '', Color(255 * self.timer / 11, 255, 255, 255)) | |
end | |
Render('preimg' .. self.index, self.x, self.y, self.rot, ((11 - self.timer) / 11 * 3 + 1) * self.imgclass.size) | |
end | |
if lstg.ResourceReference and true then | |
--0.81c及以后 | |
local STATIC_PREIMG_RES = {} | |
for i = 1, 8 do | |
STATIC_PREIMG_RES[i] = lstg.ResourceReference("preimg" .. i, 2) | |
end | |
function img_class:render() | |
local Res = STATIC_PREIMG_RES[self.index] | |
if self._blend then | |
SetImageStateEx(Res, self._blend, Color(255 * self.timer / 11, 255, 255, 255)) | |
else | |
SetImageStateEx(Res, "", Color(255 * self.timer / 11, 255, 255, 255)) | |
end | |
RenderEx(Res, self.x, self.y, self.rot, ((11 - self.timer) / 11 * 3 + 1) * self.imgclass.size) | |
end | |
end | |
---------------------------------------------------------------- | |
function ChangeBulletImage(obj, imgclass, index) | |
if obj.class == obj.imgclass then | |
obj.class = imgclass | |
obj.imgclass = imgclass | |
else | |
obj.imgclass = imgclass | |
end | |
obj._index = index | |
imgclass.init(obj, obj._index) | |
end | |
---------------------------------------------------------------- | |
bullet.gclist = {} | |
function ChangeBulletHighlight(imgclass, index, on) | |
local ble = '' | |
if on then | |
ble = 'mul+add' | |
end | |
local obj = {} | |
imgclass.init(obj, index) | |
SetImageState(obj.img, ble, Color(0xFFFFFFFF)) | |
if not bullet.gclist[imgclass] then | |
bullet.gclist[imgclass] = {} | |
end | |
bullet.gclist[imgclass][index] = on | |
end | |
---------------------------------------------------------------- | |
particle_img = Class(object) | |
function particle_img:init(index) | |
self.layer = LAYER_ENEMY_BULLET | |
self.img = index | |
self.class = self.logclass | |
end | |
function particle_img:del() | |
misc.KeepParticle(self) | |
end | |
function particle_img:kill() | |
particle_img.del(self) | |
end | |
---------------------------------------------------------------- | |
arrow_big = Class(img_class) | |
arrow_big.size = 0.6 | |
function arrow_big:init(index) | |
self.img = 'arrow_big' .. index | |
end | |
---------------------------------------------------------------- | |
arrow_mid = Class(img_class) | |
arrow_mid.size = 0.61 | |
function arrow_mid:init(index) | |
self.img = 'arrow_mid' .. int((index + 1) / 2) | |
end | |
---------------------------------------------------------------- | |
gun_bullet = Class(img_class) | |
gun_bullet.size = 0.4 | |
function gun_bullet:init(index) | |
self.img = 'gun_bullet' .. index | |
end | |
---------------------------------------------------------------- | |
gun_bullet_void = Class(img_class) | |
gun_bullet_void.size = 0.4 | |
function gun_bullet_void:init(index) | |
self.img = 'gun_bullet_void' .. index | |
end | |
---------------------------------------------------------------- | |
butterfly = Class(img_class) | |
butterfly.size = 0.7 | |
function butterfly:init(index) | |
self.img = 'butterfly' .. int((index + 1) / 2) | |
end | |
---------------------------------------------------------------- | |
square = Class(img_class) | |
square.size = 0.8 | |
function square:init(index) | |
self.img = 'square' .. index | |
end | |
---------------------------------------------------------------- | |
ball_mid = Class(img_class) | |
ball_mid.size = 0.75 | |
function ball_mid:init(index) | |
self.img = 'ball_mid' .. int((index + 1) / 2) | |
end | |
---------------------------------------------------------------- | |
ball_mid_b = Class(img_class) | |
ball_mid_b.size = 0.751 | |
function ball_mid_b:init(index) | |
self.img = 'ball_mid_b' .. int((index + 1) / 2) | |
end | |
---------------------------------------------------------------- | |
ball_mid_c = Class(img_class) | |
ball_mid_c.size = 0.752 | |
function ball_mid_c:init(index) | |
self.img = 'ball_mid_c' .. int((index + 1) / 2) | |
end | |
---------------------------------------------------------------- | |
ball_mid_d = Class(img_class) | |
ball_mid_d.size = 0.753 | |
function ball_mid_d:init(index) | |
self.img = 'ball_mid_d' .. int((index + 1) / 2) | |
end | |
---------------------------------------------------------------- | |
money = Class(img_class) | |
money.size = 0.753 | |
function money:init(index) | |
self.img = 'money' .. int((index + 1) / 2) | |
end | |
---------------------------------------------------------------- | |
mildew = Class(img_class) | |
mildew.size = 0.401 | |
function mildew:init(index) | |
self.img = 'mildew' .. index | |
end | |
---------------------------------------------------------------- | |
ellipse = Class(img_class) | |
ellipse.size = 0.701 | |
function ellipse:init(index) | |
self.img = 'ellipse' .. int((index + 1) / 2) | |
end | |
---------------------------------------------------------------- | |
star_small = Class(img_class) | |
star_small.size = 0.5 | |
function star_small:init(index) | |
self.img = 'star_small' .. index | |
end | |
---------------------------------------------------------------- | |
star_big = Class(img_class) | |
star_big.size = 0.998 | |
function star_big:init(index) | |
self.img = 'star_big' .. int((index + 1) / 2) | |
end | |
---------------------------------------------------------------- | |
star_big_b = Class(img_class) | |
star_big_b.size = 0.999 | |
function star_big_b:init(index) | |
self.img = 'star_big_b' .. int((index + 1) / 2) | |
end | |
---------------------------------------------------------------- | |
ball_huge = Class(img_class) | |
ball_huge.size = 2.0 | |
function ball_huge:init(index) | |
self.img = 'ball_huge' .. int((index + 1) / 2) | |
end | |
function ball_huge:frame() | |
if not self.stay then | |
if not (self._forbid_ref) then | |
--by OLC,修正了defaul action死循环的问题 | |
self._forbid_ref = true | |
self.logclass.frame(self) | |
self._forbid_ref = nil | |
end | |
else | |
self.x = self.x - self.vx | |
self.y = self.y - self.vy | |
self.rot = self.rot - self.omiga | |
end | |
if self.timer == 11 then | |
self.class = self.logclass | |
self.layer = LAYER_ENEMY_BULLET - 2.0 + self.index * 0.00001 | |
--self.colli=true | |
if self.stay then | |
self.timer = -1 | |
end | |
end | |
end | |
function ball_huge:render() | |
SetImageState('fade_' .. self.img, 'mul+add', Color(255 * self.timer / 11, 255, 255, 255)) | |
Render('fade_' .. self.img, self.x, self.y, self.rot, (11 - self.timer) / 11 + 1) | |
end | |
function ball_huge:del() | |
New(bubble2, 'fade_' .. self.img, self.x, self.y, self.dx, self.dy, 11, 1, 0, Color(0xFFFFFFFF), Color(0x00FFFFFF), self.layer, 'mul+add') | |
end | |
function ball_huge:kill() | |
ball_huge.del(self) | |
end | |
---------------------------------------------------------------------------- | |
ball_huge_dark = Class(img_class) | |
ball_huge_dark.size = 2.0 | |
function ball_huge_dark:init(index) | |
self.img = 'ball_huge_dark' .. int((index + 1) / 2) | |
end | |
function ball_huge_dark:frame() | |
if not self.stay then | |
if not (self._forbid_ref) then | |
--by OLC,修正了defaul action死循环的问题 | |
self._forbid_ref = true | |
self.logclass.frame(self) | |
self._forbid_ref = nil | |
end | |
else | |
self.x = self.x - self.vx | |
self.y = self.y - self.vy | |
self.rot = self.rot - self.omiga | |
end | |
if self.timer == 11 then | |
self.class = self.logclass | |
self.layer = LAYER_ENEMY_BULLET - 2.0 + self.index * 0.00001 | |
--self.colli=true | |
if self.stay then | |
self.timer = -1 | |
end | |
end | |
end | |
function ball_huge_dark:render() | |
SetImageState('fade_' .. self.img, '', Color(255 * self.timer / 11, 255, 255, 255)) | |
Render('fade_' .. self.img, self.x, self.y, self.rot, (11 - self.timer) / 11 + 1) | |
end | |
function ball_huge_dark:del() | |
New(bubble2, 'fade_' .. self.img, self.x, self.y, self.dx, self.dy, 11, 1, 0, Color(0xFFFFFFFF), Color(0x00FFFFFF), self.layer, '') | |
end | |
function ball_huge_dark:kill() | |
ball_huge.del(self) | |
end | |
---------------------------------------------------------------- | |
ball_light = Class(img_class) | |
ball_light.size = 2.0 | |
function ball_light:init(index) | |
self.img = 'ball_light' .. int((index + 1) / 2) | |
end | |
function ball_light:frame() | |
if not self.stay then | |
if not (self._forbid_ref) then | |
--by OLC,修正了defaul action死循环的问题 | |
self._forbid_ref = true | |
self.logclass.frame(self) | |
self._forbid_ref = nil | |
end | |
else | |
self.x = self.x - self.vx | |
self.y = self.y - self.vy | |
self.rot = self.rot - self.omiga | |
end | |
if self.timer == 11 then | |
self.class = self.logclass | |
self.layer = LAYER_ENEMY_BULLET - 2.0 + self.index * 0.00001 | |
--self.colli=true | |
if self.stay then | |
self.timer = -1 | |
end | |
end | |
end | |
function ball_light:render() | |
SetImageState('fade_' .. self.img, 'mul+add', Color(255 * self.timer / 11, 255, 255, 255)) | |
Render('fade_' .. self.img, self.x, self.y, self.rot, (11 - self.timer) / 11 + 1) | |
end | |
function ball_light:del() | |
New(bubble2, 'fade_' .. self.img, self.x, self.y, self.dx, self.dy, 11, 1, 0, Color(0xFFFFFFFF), Color(0x00FFFFFF), self.layer, 'mul+add') | |
end | |
function ball_light:kill() | |
ball_light.del(self) | |
end | |
---------------------------------------------------------------- | |
ball_light_dark = Class(img_class) | |
ball_light_dark.size = 2.0 | |
function ball_light_dark:init(index) | |
self.img = 'ball_light_dark' .. int((index + 1) / 2) | |
end | |
function ball_light_dark:frame() | |
if not self.stay then | |
if not (self._forbid_ref) then | |
--by OLC,修正了defaul action死循环的问题 | |
self._forbid_ref = true | |
self.logclass.frame(self) | |
self._forbid_ref = nil | |
end | |
else | |
self.x = self.x - self.vx | |
self.y = self.y - self.vy | |
self.rot = self.rot - self.omiga | |
end | |
if self.timer == 11 then | |
self.class = self.logclass | |
self.layer = LAYER_ENEMY_BULLET - 2.0 + self.index * 0.00001 | |
--self.colli=true | |
if self.stay then | |
self.timer = -1 | |
end | |
end | |
end | |
function ball_light_dark:render() | |
SetImageState('fade_' .. self.img, '', Color(255 * self.timer / 11, 255, 255, 255)) | |
Render('fade_' .. self.img, self.x, self.y, self.rot, (11 - self.timer) / 11 + 1) | |
end | |
function ball_light_dark:del() | |
New(bubble2, 'fade_' .. self.img, self.x, self.y, self.dx, self.dy, 11, 1, 0, Color(0xFFFFFFFF), Color(0x00FFFFFF), self.layer, '') | |
end | |
function ball_light_dark:kill() | |
ball_light.del(self) | |
end | |
---------------------------------------------------------------- | |
ball_big = Class(img_class) | |
ball_big.size = 1.0 | |
function ball_big:init(index) | |
self.img = 'ball_big' .. int((index + 1) / 2) | |
end | |
---------------------------------------------------------------- | |
heart = Class(img_class) | |
heart.size = 1.0 | |
function heart:init(index) | |
self.img = 'heart' .. int((index + 1) / 2) | |
end | |
---------------------------------------------------------------- | |
ball_small = Class(img_class) | |
ball_small.size = 0.402 | |
function ball_small:init(index) | |
self.img = 'ball_small' .. index | |
end | |
---------------------------------------------------------------- | |
grain_a = Class(img_class) | |
grain_a.size = 0.403 | |
function grain_a:init(index) | |
self.img = 'grain_a' .. index | |
end | |
---------------------------------------------------------------- | |
grain_b = Class(img_class) | |
grain_b.size = 0.404 | |
function grain_b:init(index) | |
self.img = 'grain_b' .. index | |
end | |
---------------------------------------------------------------- | |
grain_c = Class(img_class) | |
grain_c.size = 0.405 | |
function grain_c:init(index) | |
self.img = 'grain_c' .. index | |
end | |
---------------------------------------------------------------- | |
kite = Class(img_class) | |
kite.size = 0.406 | |
function kite:init(index) | |
self.img = 'kite' .. index | |
end | |
---------------------------------------------------------------- | |
knife = Class(img_class) | |
knife.size = 0.754 | |
function knife:init(index) | |
self.img = 'knife' .. int((index + 1) / 2) | |
end | |
---------------------------------------------------------------- | |
knife_b = Class(img_class) | |
knife_b.size = 0.755 | |
function knife_b:init(index) | |
self.img = 'knife_b' .. int((index + 1) / 2) | |
end | |
---------------------------------------------------------------- | |
arrow_small = Class(img_class) | |
arrow_small.size = 0.407 | |
function arrow_small:init(index) | |
self.img = 'arrow_small' .. index | |
end | |
---------------------------------------------------------------- | |
water_drop = Class(img_class) --2 4 6 10 12 | |
water_drop.size = 0.702 | |
function water_drop:init(index) | |
self.img = 'water_drop' .. int((index + 1) / 2) | |
end | |
function water_drop:render() | |
SetImageState('preimg' .. self.index, 'mul+add', Color(255 * self.timer / 11, 255, 255, 255)) | |
Render('preimg' .. self.index, self.x, self.y, self.rot, ((11 - self.timer) / 11 * 2 + 1) * self.imgclass.size) | |
end | |
---------------------------------------------------------------- | |
water_drop_dark = Class(img_class) --2 4 6 10 12 | |
water_drop_dark.size = 0.702 | |
function water_drop_dark:init(index) | |
self.img = 'water_drop_dark' .. int((index + 1) / 2) | |
end | |
---------------------------------------------------------------- | |
music = Class(img_class) | |
music.size = 0.8 | |
function music:init(index) | |
self.img = 'music' .. int((index + 1) / 2) | |
end | |
---------------------------------------------------------------- | |
silence = Class(img_class) | |
silence.size = 0.8 | |
function silence:init(index) | |
self.img = 'silence' .. int((index + 1) / 2) | |
end | |
---------------------------------------------------------------- | |
---------------------------------------------------------------- | |
straight = Class(bullet) | |
function straight:init(imgclass, index, stay, x, y, v, angle, omiga) | |
self.x = x | |
self.y = y | |
SetV(self, v, angle, true) | |
self.omiga = omiga or 0 | |
bullet.init(self, imgclass, index, stay, true) | |
end | |
---------------------------------------------------------------- | |
straight_indes = Class(bullet) | |
function straight_indes:init(imgclass, index, stay, x, y, v, angle, omiga) | |
self.x = x | |
self.y = y | |
SetV(self, v, angle, true) | |
self.omiga = omiga or 0 | |
bullet.init(self, imgclass, index, stay, false) | |
self.group = GROUP_INDES | |
end | |
---------------------------------------------------------------- | |
straight_495 = Class(bullet) | |
function straight_495:init(imgclass, index, stay, x, y, v, angle, omiga) | |
self.x = x | |
self.y = y | |
SetV(self, v, angle, true) | |
self.omiga = omiga or 0 | |
bullet.init(self, imgclass, index, stay, true) | |
end | |
function straight_495:frame() | |
if not self.reflected then | |
local world = lstg.world | |
local x, y = self.x, self.y | |
if y > world.t then | |
self.vy = -self.vy | |
if self.acceleration and self.acceleration.ay then | |
self.acceleration.ay = -self.acceleration.ay | |
end | |
self.rot = -self.rot | |
self.reflected = true | |
return | |
end | |
if x > world.r then | |
self.vx = -self.vx | |
if self.acceleration and self.acceleration.ax then | |
self.acceleration.ax = -self.acceleration.ax | |
end | |
self.rot = 180 - self.rot | |
self.reflected = true | |
return | |
end | |
if x < world.l then | |
self.vx = -self.vx | |
if self.acceleration and self.acceleration.ax then | |
self.acceleration.ax = -self.acceleration.ax | |
end | |
self.rot = 180 - self.rot | |
self.reflected = true | |
return | |
end | |
end | |
end | |
---------------------------------------------------------------- | |
bullet_killer = Class(object) | |
function bullet_killer:init(x, y, kill_indes) | |
self.x = x | |
self.y = y | |
self.group = GROUP_GHOST | |
self.hide = true | |
self.kill_indes = kill_indes | |
end | |
function bullet_killer:frame() | |
if self.timer == 40 then | |
Del(self) | |
end | |
for i, o in ObjList(GROUP_ENEMY_BULLET) do | |
if Dist(self, o) < self.timer * 20 then | |
Kill(o) | |
end | |
end | |
if self.kill_indes then | |
for i, o in ObjList(GROUP_INDES) do | |
if Dist(self, o) < self.timer * 20 then | |
Kill(o) | |
end | |
end | |
end | |
end | |
---------------------------------------------------------------- | |
bullet_deleter = Class(object) | |
function bullet_deleter:init(x, y, kill_indes) | |
self.x = x | |
self.y = y | |
self.group = GROUP_GHOST | |
self.hide = true | |
self.kill_indes = kill_indes | |
end | |
function bullet_deleter:frame() | |
if self.timer == 60 then | |
Del(self) | |
end | |
for i, o in ObjList(GROUP_ENEMY_BULLET) do | |
if Dist(self, o) < self.timer * 20 then | |
Del(o) | |
end | |
end | |
if self.kill_indes then | |
for i, o in ObjList(GROUP_INDES) do | |
if Dist(self, o) < self.timer * 20 then | |
Del(o) | |
end | |
end | |
end | |
end | |
-------------------------------------------------------------- | |
bullet_killer_SP = Class(object) | |
function bullet_killer_SP:init(x, y, kill_indes) | |
self.x = x | |
self.y = y | |
self.group = GROUP_GHOST | |
self.hide = false | |
self.kill_indes = kill_indes | |
self.img = 'yubi' | |
end | |
function bullet_killer_SP:frame() | |
self.rot = -6 * self.timer | |
if self.timer == 60 then | |
Del(self) | |
end | |
for i, o in ObjList(GROUP_ENEMY_BULLET) do | |
if Dist(self, o) < 60 then | |
Kill(o) | |
end | |
end | |
if self.kill_indes then | |
for i, o in ObjList(GROUP_INDES) do | |
if Dist(self, o) < 60 then | |
Kill(o) | |
end | |
end | |
end | |
end | |
-------------------------------------------------------------- | |
bullet_deleter2 = Class(object) | |
function bullet_deleter:init(x, y, kill_indes) | |
self.player = player--by ETC,多玩家时处理 | |
self.x = self.player.x | |
self.y = self.player.y | |
self.group = GROUP_GHOST | |
self.hide = true | |
self.kill_indes = kill_indes | |
end | |
function bullet_deleter2:frame() | |
self.x = self.player.x | |
self.y = self.player.y | |
if self.timer == 30 then | |
Del(self) | |
end | |
for i, o in ObjList(GROUP_ENEMY_BULLET) do | |
if Dist(self, o) < self.timer * 5 then | |
Del(o) | |
end | |
end | |
if self.kill_indes then | |
for i, o in ObjList(GROUP_INDES) do | |
if Dist(self, o) < self.timer * 5 then | |
Del(o) | |
end | |
end | |
end | |
end | |
-------------------------------------------------------------- | |
-------------------------------------------------------------- | |
bomb_bullet_killer = Class(object) | |
function bomb_bullet_killer:init(x, y, a, b, kill_indes) | |
self.x = x | |
self.y = y | |
self.a = a | |
self.b = b | |
if self.a ~= self.b then | |
self.rect = true | |
end | |
self.group = GROUP_PLAYER | |
self.hide = true | |
self.kill_indes = kill_indes | |
end | |
function bomb_bullet_killer:frame() | |
if self.timer == 1 then | |
Del(self) | |
end | |
end | |
function bomb_bullet_killer:colli(other) | |
if self.kill_indes then | |
if other.group == GROUP_INDES then | |
Kill(other) | |
end | |
end | |
if other.group == GROUP_ENEMY_BULLET then | |
Kill(other) | |
end | |
end | |
-------------------------------------------------------------- | |
COLOR_DEEP_RED = 1 | |
COLOR_RED = 2 | |
COLOR_DEEP_PURPLE = 3 | |
COLOR_PURPLE = 4 | |
COLOR_DEEP_BLUE = 5 | |
COLOR_BLUE = 6 | |
COLOR_ROYAL_BLUE = 7 | |
COLOR_CYAN = 8 | |
COLOR_DEEP_GREEN = 9 | |
COLOR_GREEN = 10 | |
COLOR_CHARTREUSE = 11 | |
COLOR_YELLOW = 12 | |
COLOR_GOLDEN_YELLOW = 13 | |
COLOR_ORANGE = 14 | |
COLOR_DEEP_GRAY = 15 | |
COLOR_GRAY = 16 | |
BULLETSTYLE = { | |
arrow_big, arrow_mid, arrow_small, gun_bullet, butterfly, square, | |
ball_small, ball_mid, ball_mid_c, ball_big, ball_huge, ball_light, | |
star_small, star_big, grain_a, grain_b, grain_c, kite, knife, knife_b, | |
water_drop, mildew, ellipse, heart, money, music, silence, | |
water_drop_dark, ball_huge_dark, ball_light_dark | |
}--30 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment