Renovated Youmu Opposite sign
added some blasts to youmu haunted, too.
This commit is contained in:
parent
9242166daf
commit
3605159528
6 changed files with 346 additions and 97 deletions
Binary file not shown.
Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 22 KiB |
BIN
gfx/proj/youhoming.png
Normal file
BIN
gfx/proj/youhoming.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 3 KiB |
224
gfx/proj/youhoming.svg
Normal file
224
gfx/proj/youhoming.svg
Normal file
|
@ -0,0 +1,224 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="32"
|
||||
height="32"
|
||||
id="svg2"
|
||||
version="1.1"
|
||||
inkscape:version="0.48.2 r9819"
|
||||
sodipodi:docname="youhoming.svg"
|
||||
inkscape:export-filename="/home/laochailan/src/taisei/gfx/proj/youhoming.png"
|
||||
inkscape:export-xdpi="140.62"
|
||||
inkscape:export-ydpi="140.62">
|
||||
<defs
|
||||
id="defs4">
|
||||
<linearGradient
|
||||
id="linearGradient3876">
|
||||
<stop
|
||||
style="stop-color:#212179;stop-opacity:0;"
|
||||
offset="0"
|
||||
id="stop3878" />
|
||||
<stop
|
||||
style="stop-color:#212179;stop-opacity:1;"
|
||||
offset="1"
|
||||
id="stop3880" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="linearGradient3868">
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:0;"
|
||||
offset="0"
|
||||
id="stop3870" />
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:0;"
|
||||
offset="1"
|
||||
id="stop3872" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="linearGradient3845">
|
||||
<stop
|
||||
style="stop-color:#ff0000;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop3847" />
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:0;"
|
||||
offset="1"
|
||||
id="stop3849" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="linearGradient3815">
|
||||
<stop
|
||||
style="stop-color:#212178;stop-opacity:0;"
|
||||
offset="0"
|
||||
id="stop3817" />
|
||||
<stop
|
||||
id="stop3837"
|
||||
offset="0.43529412"
|
||||
style="stop-color:#212178;stop-opacity:0;" />
|
||||
<stop
|
||||
style="stop-color:#212178;stop-opacity:0.53947371;"
|
||||
offset="1"
|
||||
id="stop3819" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="linearGradient3793">
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:0.19736843;"
|
||||
offset="0"
|
||||
id="stop3795" />
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:0.58333331;"
|
||||
offset="1"
|
||||
id="stop3797" />
|
||||
</linearGradient>
|
||||
<filter
|
||||
inkscape:collect="always"
|
||||
id="filter3781">
|
||||
<feGaussianBlur
|
||||
inkscape:collect="always"
|
||||
stdDeviation="0.52416725"
|
||||
id="feGaussianBlur3783" />
|
||||
</filter>
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient3815"
|
||||
id="radialGradient3830"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
cx="16"
|
||||
cy="1036.3622"
|
||||
fx="16"
|
||||
fy="1036.3622"
|
||||
r="14.894653" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient3815"
|
||||
id="radialGradient3832"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
cx="16"
|
||||
cy="1036.3622"
|
||||
fx="16"
|
||||
fy="1036.3622"
|
||||
r="14.894653" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient3845"
|
||||
id="radialGradient3851"
|
||||
cx="16"
|
||||
cy="1036.3622"
|
||||
fx="16"
|
||||
fy="1036.3622"
|
||||
r="14.894654"
|
||||
gradientTransform="translate(0,1.0436959e-6)"
|
||||
gradientUnits="userSpaceOnUse" />
|
||||
<filter
|
||||
inkscape:collect="always"
|
||||
id="filter3862">
|
||||
<feGaussianBlur
|
||||
inkscape:collect="always"
|
||||
stdDeviation="0.1490625"
|
||||
id="feGaussianBlur3864" />
|
||||
</filter>
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient3876"
|
||||
id="radialGradient3882"
|
||||
cx="18.164211"
|
||||
cy="17.935711"
|
||||
fx="18.164211"
|
||||
fy="17.935711"
|
||||
r="11.986452"
|
||||
gradientUnits="userSpaceOnUse" />
|
||||
<filter
|
||||
inkscape:collect="always"
|
||||
id="filter3917">
|
||||
<feGaussianBlur
|
||||
inkscape:collect="always"
|
||||
stdDeviation="0.2096669"
|
||||
id="feGaussianBlur3919" />
|
||||
</filter>
|
||||
<filter
|
||||
inkscape:collect="always"
|
||||
id="filter3923"
|
||||
x="-0.11474104"
|
||||
width="1.2294821"
|
||||
y="-0.11474104"
|
||||
height="1.2294821">
|
||||
<feGaussianBlur
|
||||
inkscape:collect="always"
|
||||
stdDeviation="1.0023916"
|
||||
id="feGaussianBlur3925" />
|
||||
</filter>
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#000000"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="7.7174076"
|
||||
inkscape:cx="16"
|
||||
inkscape:cy="15.39198"
|
||||
inkscape:document-units="px"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="false"
|
||||
inkscape:window-width="1920"
|
||||
inkscape:window-height="1038"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="-1"
|
||||
inkscape:window-maximized="1" />
|
||||
<metadata
|
||||
id="metadata7">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Ebene 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(0,-1020.3622)"
|
||||
style="opacity:0.4244898">
|
||||
<path
|
||||
style="opacity:0.57894736;fill:#212179;fill-opacity:0.51372758;fill-rule:nonzero;stroke:none;filter:url(#filter3862)"
|
||||
d="m 16,1.09375 c -1.745056,0 -3.304689,2.2247793 -4.3125,5.65625 C 13.001064,6.1358698 14.454206,5.78125 16,5.78125 c 1.545794,0 2.998936,0.3546198 4.3125,0.96875 C 19.304689,3.3185202 17.745057,1.09375 16,1.09375 z M 6.75,11.6875 C 3.3185322,12.695305 1.09375,14.254891 1.09375,16 c 0,1.744994 2.2247822,3.304716 5.65625,4.3125 C 6.1358698,18.998936 5.78125,17.545794 5.78125,16 c 0,-1.545794 0.3546198,-2.998936 0.96875,-4.3125 z m 18.5,0 c 0.61413,1.313564 0.96875,2.766706 0.96875,4.3125 0,1.545794 -0.35462,2.998936 -0.96875,4.3125 3.431468,-1.007784 5.65625,-2.567506 5.65625,-4.3125 0,-1.745109 -2.224782,-3.304695 -5.65625,-4.3125 z M 11.6875,25.25 c 1.007811,3.43148 2.567444,5.65625 4.3125,5.65625 1.745057,0 3.304689,-2.22477 4.3125,-5.65625 -1.313564,0.61413 -2.766706,0.96875 -4.3125,0.96875 -1.545794,0 -2.998936,-0.35462 -4.3125,-0.96875 z"
|
||||
id="path3787"
|
||||
transform="matrix(0.82172949,0,0,0.82172949,2.8523281,1023.2145)"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
transform="matrix(1.1948373,0,0,1.1948373,-5.7032772,1014.9319)"
|
||||
d="m 28.647556,17.935711 a 10.483345,10.483345 0 1 1 -20.9666898,0 10.483345,10.483345 0 1 1 20.9666898,0 z"
|
||||
sodipodi:ry="10.483345"
|
||||
sodipodi:rx="10.483345"
|
||||
sodipodi:cy="17.935711"
|
||||
sodipodi:cx="18.164211"
|
||||
id="path3755"
|
||||
style="fill:url(#radialGradient3882);fill-opacity:1;fill-rule:nonzero;stroke:none;filter:url(#filter3781);opacity:0.57894736999999996"
|
||||
sodipodi:type="arc" />
|
||||
<path
|
||||
transform="matrix(0.74205398,0,0,0.74205398,2.5211749,1023.0529)"
|
||||
d="m 28.647556,17.935711 a 10.483345,10.483345 0 1 1 -20.9666898,0 10.483345,10.483345 0 1 1 20.9666898,0 z"
|
||||
sodipodi:ry="10.483345"
|
||||
sodipodi:rx="10.483345"
|
||||
sodipodi:cy="17.935711"
|
||||
sodipodi:cx="18.164211"
|
||||
id="path3921"
|
||||
style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;filter:url(#filter3923)"
|
||||
sodipodi:type="arc" />
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 7.4 KiB |
|
@ -65,7 +65,8 @@ void draw_enemies(Enemy *enemies) {
|
|||
Enemy *e;
|
||||
|
||||
for(e = enemies; e; e = e->next)
|
||||
e->draw_rule(e, global.frames - e->birthtime);
|
||||
if(e->draw_rule)
|
||||
e->draw_rule(e, global.frames - e->birthtime);
|
||||
}
|
||||
|
||||
void Fairy(Enemy *e, int t) {
|
||||
|
|
215
src/plrmodes.c
215
src/plrmodes.c
|
@ -12,33 +12,7 @@
|
|||
|
||||
/* Youmu */
|
||||
|
||||
void YoumuOppositeMyon(Enemy *e, int t) {
|
||||
complex pos = e->pos + global.plr.pos;
|
||||
|
||||
create_particle2c("flare", pos, NULL, Shrink, timeout, 10, -e->pos+10I);
|
||||
}
|
||||
|
||||
int youmu_opposite_myon(Enemy *e, int t) {
|
||||
if(t < 0)
|
||||
return 1;
|
||||
|
||||
Player *plr = &global.plr;
|
||||
|
||||
if(plr->focus < 15) {
|
||||
e->args[2] = carg(plr->pos - e->pos0);
|
||||
e->pos = e->pos0 - plr->pos;
|
||||
|
||||
if(cabs(e->pos) > 30)
|
||||
e->pos -= 5*cexp(I*carg(e->pos));
|
||||
}
|
||||
|
||||
if(plr->fire && !(global.frames % 6))
|
||||
create_projectile1c("youmu", e->pos + plr->pos, NULL, linear, -21*cexp(I*e->args[2]))->type = PlrProj;
|
||||
|
||||
e->pos0 = e->pos + plr->pos;
|
||||
|
||||
return 1;
|
||||
}
|
||||
// Haunting Sign
|
||||
|
||||
int youmu_homing(Projectile *p, int t) { // a[0]: velocity, a[1]: target
|
||||
if(t == EVENT_DEATH) {
|
||||
|
@ -48,7 +22,7 @@ int youmu_homing(Projectile *p, int t) { // a[0]: velocity, a[1]: target
|
|||
Enemy *target;
|
||||
|
||||
if((target = REF(p->args[1]))) {
|
||||
p->args[0] += 0.15*cexp(I*carg(target->pos - p->pos));
|
||||
p->args[0] += 0.2*cexp(I*carg(target->pos - p->pos));
|
||||
} else {
|
||||
free_ref(p->args[1]);
|
||||
|
||||
|
@ -68,63 +42,11 @@ int youmu_homing(Projectile *p, int t) { // a[0]: velocity, a[1]: target
|
|||
return 1;
|
||||
}
|
||||
|
||||
void youmu_shot(Player *plr) {
|
||||
if(plr->fire) {
|
||||
if(!(global.frames % 6)) {
|
||||
create_projectile1c("youmu", plr->pos + 10 - I*20, NULL, linear, -20I)->type = PlrProj;
|
||||
create_projectile1c("youmu", plr->pos - 10 - I*20, NULL, linear, -20I)->type = PlrProj;
|
||||
}
|
||||
|
||||
if(plr->shot == YoumuHoming) {
|
||||
if(plr->focus && !(global.frames % 12-(int)plr->power)*1.5) {
|
||||
int ref = -1;
|
||||
if(global.boss != NULL)
|
||||
ref = add_ref(global.boss);
|
||||
else if(global.enemies != NULL)
|
||||
ref = add_ref(global.enemies);
|
||||
if(ref == -1)
|
||||
ref = add_ref(NULL);
|
||||
create_projectile2c("hghost", plr->pos, NULL, youmu_homing, 5*cexp(I*sin(global.frames/10.0))/I, ref)->type = PlrProj;
|
||||
create_projectile2c("hghost", plr->pos, NULL, youmu_homing, 5*cexp(I*-sin(global.frames/10.0))/I, ref)->type = PlrProj;
|
||||
}
|
||||
|
||||
if(!plr->focus && !(global.frames % 8-(int)plr->power)) {
|
||||
float arg = -M_PI/2;
|
||||
if(global.enemies)
|
||||
arg = carg(global.enemies->pos - plr->pos);
|
||||
if(global.boss)
|
||||
arg = carg(global.boss->pos - plr->pos);
|
||||
|
||||
create_projectile2c("hghost", plr->pos, NULL, accelerated, 10*cexp((arg-0.2)*I), 0.4*cexp((arg-0.2)*I))->type = PlrProj;
|
||||
create_projectile2c("hghost", plr->pos, NULL, accelerated, 10*cexp(arg*I), 0.4*cexp(arg*I))->type = PlrProj;
|
||||
create_projectile2c("hghost", plr->pos, NULL, accelerated, 10*cexp((arg+0.2)*I), 0.4*cexp((arg+0.2)*I))->type = PlrProj;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(plr->shot == YoumuOpposite && plr->slaves == NULL)
|
||||
create_enemy_p(&plr->slaves, plr->pos, ENEMY_IMMUNE, YoumuOppositeMyon, youmu_opposite_myon, 0, 0, 0, 0);
|
||||
}
|
||||
|
||||
|
||||
int petal_gravity(Projectile *p, int t) {
|
||||
if(t < 0)
|
||||
return 1;
|
||||
|
||||
complex d = VIEWPORT_W/2.0 + VIEWPORT_H/2.0*I - p->pos;
|
||||
|
||||
if(t < 230)
|
||||
p->args[0] += 5000/pow(cabs(d),2)*cexp(I*carg(d));
|
||||
p->pos += p->args[0];
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
void Slice(Projectile *p, int t) {
|
||||
if(t < creal(p->args[0])/20.0)
|
||||
p->args[1] += 1;
|
||||
|
||||
if(t > creal(p->args[0])/20.0*19) {
|
||||
if(t > creal(p->args[0])-10) {
|
||||
p->args[1] += 3;
|
||||
p->args[2] += 1;
|
||||
}
|
||||
|
@ -160,9 +82,12 @@ void YoumuSlash(Enemy *e, int t) {
|
|||
int spin(Projectile *p, int t) {
|
||||
int i = timeout_linear(p, t);
|
||||
|
||||
p->args[2] += 0.06;
|
||||
p->angle = p->args[2];
|
||||
|
||||
if(t < 0)
|
||||
return 1;
|
||||
|
||||
p->args[3] += 0.06;
|
||||
p->angle = p->args[3];
|
||||
|
||||
return i;
|
||||
}
|
||||
|
||||
|
@ -174,27 +99,125 @@ int youmu_slash(Enemy *e, int t) {
|
|||
|
||||
TIMER(&t);
|
||||
|
||||
FROM_TO(0, 30, 10) {
|
||||
AT(0)
|
||||
global.plr.pos = VIEWPORT_W/5.0 + (VIEWPORT_H - 100)*I;
|
||||
|
||||
FROM_TO(8,20,1)
|
||||
global.plr.pos = VIEWPORT_W + (VIEWPORT_H - 100)*I - exp(-_i/8.0+log(4*VIEWPORT_W/5.0));
|
||||
|
||||
FROM_TO(30, 60, 10) {
|
||||
create_particle1c("youmu_slice", VIEWPORT_W/2.0 - 150 + 100*_i + VIEWPORT_H/2.0*I - 10-10I + 20*frand()+20I*frand(), NULL, Slice, timeout, 200)->angle = -10.0+20.0*frand();
|
||||
}
|
||||
|
||||
if(t < creal(e->args[0])-50 && frand() > 0.2)
|
||||
create_particle3c("smoke", VIEWPORT_W*frand() + (VIEWPORT_H+100)*I, rgba(0.4,0.4,0.4,0.4+frand()*0.2), PartDraw, spin, 300, -6I+frand()*1I, frand());
|
||||
FROM_TO(40,200,1)
|
||||
if(frand() > 0.7)
|
||||
create_particle2c("blast", VIEWPORT_W*frand() + (VIEWPORT_H+50)*I, rgb(frand(),frand(),frand()), Shrink, timeout_linear, 80, 3*(1-2.0*frand())-14I+frand()*2I);
|
||||
|
||||
int tpar = 30;
|
||||
if(t < 30)
|
||||
tpar = t;
|
||||
|
||||
if(t < creal(e->args[0])-60 && frand() > 0.2) {
|
||||
create_particle2c("smoke", VIEWPORT_W*frand() + (VIEWPORT_H+100)*I, rgba(0.4,0.4,0.4,frand()*0.2 - 0.2 + 0.6*(tpar/30.0)), PartDraw, spin, 300, -7I+frand()*1I);
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
void youmu_bomb(Player *plr) {
|
||||
int i;
|
||||
switch(plr->shot) {
|
||||
case YoumuOpposite:
|
||||
for(i = 0; i < 40; i++) {
|
||||
complex pos = VIEWPORT_W*frand() + VIEWPORT_H*frand()*I;
|
||||
complex d = VIEWPORT_W/2.0+VIEWPORT_H/2.0*I - pos;
|
||||
create_particle4c("petal", pos, rgba(1,1,1,0.5) , Petal, petal_gravity, 5*I*cexp(I*carg(d)), 0, frand() + frand()*I, frand() + 360I*frand());
|
||||
// Opposite Sign
|
||||
|
||||
void YoumuOppositeMyon(Enemy *e, int t) {
|
||||
complex pos = e->pos;
|
||||
|
||||
create_particle2c("flare", pos, NULL, Shrink, timeout, 10, -e->pos+10I);
|
||||
}
|
||||
|
||||
int youmu_opposite_myon(Enemy *e, int t) {
|
||||
if(t == EVENT_BIRTH)
|
||||
e->pos = e->pos0 + global.plr.pos;
|
||||
if(t < 0)
|
||||
return 1;
|
||||
|
||||
Player *plr = &global.plr;
|
||||
float arg = carg(e->pos0);
|
||||
float rad = cabs(e->pos0);
|
||||
|
||||
if(plr->focus < 15)
|
||||
arg -= (carg(e->pos0)-carg(e->pos-plr->pos))*2;
|
||||
|
||||
e->pos0 = rad*cexp(I*arg);
|
||||
e->pos = e->pos0 + plr->pos;
|
||||
|
||||
if(plr->fire && !(global.frames % 6))
|
||||
create_projectile1c("hghost", e->pos, NULL, linear, -21*cexp(I*carg(-e->pos0)))->type = PlrProj;
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
int youmu_split(Enemy *e, int t) {
|
||||
if(t < 0)
|
||||
return 1;
|
||||
|
||||
if(t > creal(e->args[0]))
|
||||
return ACTION_DESTROY;
|
||||
|
||||
TIMER(&t);
|
||||
|
||||
FROM_TO(30,260,1) {
|
||||
create_particle2c("smoke", VIEWPORT_W/2 + VIEWPORT_H/2*I, rgba(0.4,0.4,0.4,frand()*0.2+0.4), PartDraw, spin, 300, 6*cexp(I*frand()*2*M_PI));
|
||||
}
|
||||
|
||||
FROM_TO(100,220,10) {
|
||||
create_particle1c("youmu_slice", VIEWPORT_W/2.0 + VIEWPORT_H/2.0*I - 200-200I + 400*frand()+400I*frand(), NULL, Slice, timeout, 100-_i)->angle = 360.0*frand();
|
||||
}
|
||||
|
||||
float talt = atan((t-e->args[0]/2)/30.0)*10+atan(-e->args[0]/2);
|
||||
global.plr.pos = VIEWPORT_W/2.0 + (VIEWPORT_H-80)*I + VIEWPORT_W/3.0*sin(talt);
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
// Youmu Generic
|
||||
|
||||
void youmu_shot(Player *plr) {
|
||||
if(plr->fire) {
|
||||
if(!(global.frames % 6)) {
|
||||
create_projectile1c("youmu", plr->pos + 10 - I*20, NULL, linear, -20I)->type = PlrProj;
|
||||
create_projectile1c("youmu", plr->pos - 10 - I*20, NULL, linear, -20I)->type = PlrProj;
|
||||
}
|
||||
|
||||
if(plr->shot == YoumuHoming) {
|
||||
if(plr->focus && !(global.frames % 45)) {
|
||||
int ref = -1;
|
||||
if(global.boss != NULL)
|
||||
ref = add_ref(global.boss);
|
||||
else if(global.enemies != NULL)
|
||||
ref = add_ref(global.enemies);
|
||||
if(ref == -1)
|
||||
ref = add_ref(NULL);
|
||||
|
||||
create_projectile2c("youhoming", plr->pos, NULL, youmu_homing, -3I, ref)->type = PlrProj;
|
||||
}
|
||||
|
||||
if(!plr->focus && !(global.frames % 8-(int)plr->power)) {
|
||||
|
||||
create_projectile2c("hghost", plr->pos, NULL, accelerated, 2-10I, -0.4I)->type = PlrProj;
|
||||
create_projectile2c("hghost", plr->pos, NULL, accelerated, -10I, -0.4I)->type = PlrProj;
|
||||
create_projectile2c("hghost", plr->pos, NULL, accelerated, -2-10I, -0.4I)->type = PlrProj;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(plr->shot == YoumuOpposite && plr->slaves == NULL)
|
||||
create_enemy_p(&plr->slaves, 40I, ENEMY_IMMUNE, YoumuOppositeMyon, youmu_opposite_myon, 0, 0, 0, 0);
|
||||
}
|
||||
|
||||
void youmu_bomb(Player *plr) {
|
||||
switch(plr->shot) {
|
||||
case YoumuOpposite:
|
||||
create_enemy_p(&plr->slaves, 40I, ENEMY_BOMB, NULL, youmu_split, 280,0,0,0);
|
||||
|
||||
break;
|
||||
case YoumuHoming:
|
||||
plr->pos = VIEWPORT_W/2.0 + (VIEWPORT_H - 80)*I;
|
||||
create_enemy_p(&plr->slaves, 40I, ENEMY_BOMB, YoumuSlash, youmu_slash, 280,0,0,0);
|
||||
break;
|
||||
}
|
||||
|
|
|
@ -28,4 +28,5 @@ void youmu_power(Player *plr, float npow);
|
|||
void marisa_shot(Player *plr);
|
||||
void marisa_bomb(Player *plr);
|
||||
void marisa_power(Player *plr, float npow);
|
||||
|
||||
#endif
|
Loading…
Reference in a new issue