improved boss effects
BIN
gfx/boss_circle.png
Normal file
After Width: | Height: | Size: 152 KiB |
286
gfx/boss_circle.svg
Normal file
After Width: | Height: | Size: 17 KiB |
BIN
gfx/boss_shadow.png
Normal file
After Width: | Height: | Size: 4 KiB |
120
gfx/boss_shadow.svg
Normal file
|
@ -0,0 +1,120 @@
|
|||
<?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="142.0984"
|
||||
height="194.25841"
|
||||
id="svg2"
|
||||
version="1.1"
|
||||
inkscape:version="0.48.2 r9819"
|
||||
sodipodi:docname="boss_shadow.svg"
|
||||
inkscape:export-filename="/home/laochailan/src/taisei/gfx/boss_shadow.png"
|
||||
inkscape:export-xdpi="63.336391"
|
||||
inkscape:export-ydpi="63.336391">
|
||||
<defs
|
||||
id="defs4">
|
||||
<linearGradient
|
||||
id="linearGradient3755">
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop3757" />
|
||||
<stop
|
||||
id="stop3763"
|
||||
offset="0.5"
|
||||
style="stop-color:#ffffff;stop-opacity:0.64912283;" />
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:0;"
|
||||
offset="1"
|
||||
id="stop3759" />
|
||||
</linearGradient>
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient3755"
|
||||
id="radialGradient3761"
|
||||
cx="281.58002"
|
||||
cy="155.34673"
|
||||
fx="281.58002"
|
||||
fy="155.34673"
|
||||
r="44.699249"
|
||||
gradientTransform="matrix(1,0,0,1.2429379,0,-37.739609)"
|
||||
gradientUnits="userSpaceOnUse" />
|
||||
<filter
|
||||
inkscape:collect="always"
|
||||
id="filter3771"
|
||||
x="-0.21404542"
|
||||
width="1.4280908"
|
||||
y="-0.19566779"
|
||||
height="1.3913356"
|
||||
color-interpolation-filters="sRGB">
|
||||
<feGaussianBlur
|
||||
inkscape:collect="always"
|
||||
stdDeviation="8.1532399"
|
||||
id="feGaussianBlur3773" />
|
||||
</filter>
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="1.979899"
|
||||
inkscape:cx="40.235115"
|
||||
inkscape:cy="98.15668"
|
||||
inkscape:document-units="px"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="false"
|
||||
fit-margin-top="5"
|
||||
fit-margin-left="5"
|
||||
fit-margin-right="5"
|
||||
fit-margin-bottom="5"
|
||||
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(-216.32577,-52.9972)">
|
||||
<path
|
||||
style="opacity:0.31203009;fill:#ffffff;stroke:none;filter:url(#filter3771)"
|
||||
d="m 306.07622,77.564976 c 6.84137,34.491504 33.23485,67.100274 26.76904,100.005094 -14.4197,73.38251 -86.54842,45.31614 -91.4188,0 -4.11926,-38.32737 16.79182,-66.33334 23.23351,-99.500018 18.38995,30.041138 27.72185,15.873402 41.41625,-0.505076 z"
|
||||
id="path3765"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="csscc" />
|
||||
<path
|
||||
sodipodi:type="arc"
|
||||
style="opacity:0.63533834;fill:url(#radialGradient3761);fill-opacity:1;stroke:none"
|
||||
id="path2985"
|
||||
sodipodi:cx="281.58002"
|
||||
sodipodi:cy="155.34673"
|
||||
sodipodi:rx="44.699249"
|
||||
sodipodi:ry="55.558392"
|
||||
d="m 326.27927,155.34673 c 0,30.68405 -20.01254,55.55839 -44.69925,55.55839 -24.68672,0 -44.69925,-24.87434 -44.69925,-55.55839 0,-30.68406 20.01253,-55.558396 44.69925,-55.558396 24.68671,0 44.69925,24.874336 44.69925,55.558396 z"
|
||||
transform="matrix(0.79661018,0,0,0.77727273,62.321273,53.540312)" />
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 4 KiB |
BIN
gfx/boss_spellcircle0.png
Normal file
After Width: | Height: | Size: 118 KiB |
101
gfx/boss_spellcircle0.svg
Normal file
|
@ -0,0 +1,101 @@
|
|||
<?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="341.25046"
|
||||
height="340.98315"
|
||||
id="svg2"
|
||||
version="1.1"
|
||||
inkscape:version="0.48.2 r9819"
|
||||
sodipodi:docname="boss_spellcircle0.svg"
|
||||
inkscape:export-filename="/home/laochailan/src/taisei/gfx/boss_spellcircle0.png"
|
||||
inkscape:export-xdpi="113.40644"
|
||||
inkscape:export-ydpi="113.40644">
|
||||
<defs
|
||||
id="defs4">
|
||||
<filter
|
||||
inkscape:collect="always"
|
||||
id="filter3776"
|
||||
color-interpolation-filters="sRGB">
|
||||
<feGaussianBlur
|
||||
inkscape:collect="always"
|
||||
stdDeviation="5.4245192"
|
||||
id="feGaussianBlur3778" />
|
||||
</filter>
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#000000"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="1.979899"
|
||||
inkscape:cx="333.77379"
|
||||
inkscape:cy="175.87991"
|
||||
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"
|
||||
fit-margin-top="0"
|
||||
fit-margin-left="1"
|
||||
fit-margin-right="0"
|
||||
fit-margin-bottom="0" />
|
||||
<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(-208.18764,-104.61929)">
|
||||
<path
|
||||
sodipodi:type="arc"
|
||||
style="opacity:0.43233086;fill:none;stroke:#c83737;stroke-width:11.74356556;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;filter:url(#filter3776)"
|
||||
id="path2985"
|
||||
sodipodi:cx="217.1828"
|
||||
sodipodi:cy="242.21985"
|
||||
sodipodi:rx="180.81731"
|
||||
sodipodi:ry="180.81731"
|
||||
d="m 398.00011,242.21985 c 0,99.86264 -80.95467,180.81731 -180.81731,180.81731 -99.86264,0 -180.817306,-80.95467 -180.817306,-180.81731 0,-99.86264 80.954666,-180.817308 180.817306,-180.817308 99.86264,0 180.81731,80.954668 180.81731,180.817308 z"
|
||||
transform="matrix(0.85153015,0,0,0.85153015,194.07256,69.057376)" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:24px;font-style:italic;font-variant:normal;font-weight:bold;font-stretch:normal;line-height:125%;letter-spacing:0.69px;word-spacing:0.50999998999999996px;opacity:0.34210528000000001;fill:#e6e6e6;fill-opacity:1;stroke:#000000;stroke-width:0.30000000999999998;stroke-miterlimit:4;stroke-dasharray:none;font-family:Linux Libertine O;-inkscape-font-specification:Linux Libertine O Bold Italic"
|
||||
id="text3757"
|
||||
sodipodi:linespacing="125%"><textPath
|
||||
xlink:href="#path2985"
|
||||
id="textPath3766">Border of Life Border of Life Border of Life Border of Life Border of Life Border of Life</textPath></text>
|
||||
<path
|
||||
sodipodi:type="arc"
|
||||
style="opacity:0.09259997;fill:none;stroke:#ffffff;stroke-width:10;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||
id="path3812"
|
||||
sodipodi:cx="373.75644"
|
||||
sodipodi:cy="272.52441"
|
||||
sodipodi:rx="135.36044"
|
||||
sodipodi:ry="135.36044"
|
||||
d="m 509.11688,272.52441 c 0,74.75751 -60.60293,135.36045 -135.36044,135.36045 -74.75751,0 -135.36044,-60.60294 -135.36044,-135.36045 0,-74.7575 60.60293,-135.36044 135.36044,-135.36044 74.75751,0 135.36044,60.60294 135.36044,135.36044 z"
|
||||
transform="matrix(1.0647716,0,0,1.0647716,-19.152382,-15.065401)" />
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 4.2 KiB |
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.1 KiB |
|
@ -35,7 +35,7 @@ void spell_opening(Boss *b, int time) {
|
|||
}
|
||||
|
||||
void draw_boss(Boss *boss) {
|
||||
draw_animation_p(creal(boss->pos), cimag(boss->pos) + 10*sin(global.frames/25.0), boss->anirow, boss->ani);
|
||||
draw_animation_p(creal(boss->pos), cimag(boss->pos) + 6*sin(global.frames/25.0), boss->anirow, boss->ani);
|
||||
draw_text(AL_Left, 10, 20, boss->name, _fonts.standard);
|
||||
|
||||
if(!boss->current)
|
||||
|
|
30
src/stage.c
|
@ -129,6 +129,23 @@ void stage_draw() {
|
|||
if(!tconfig.intval[NO_SHADER])
|
||||
apply_bg_shaders();
|
||||
|
||||
if(global.boss) {
|
||||
glPushMatrix();
|
||||
glTranslatef(creal(global.boss->pos), cimag(global.boss->pos), 0);
|
||||
|
||||
glColor3f(0.2,0.35,0.6);
|
||||
draw_texture(0,0,"boss_shadow");
|
||||
|
||||
glColor3f(1,1,1);
|
||||
glRotatef(global.frames*4.0, 0, 0, -1);
|
||||
float f = 0.8+0.1*sin(global.frames/8.0);
|
||||
glScalef(f,f,f);
|
||||
draw_texture(0,0,"boss_circle");
|
||||
|
||||
|
||||
glPopMatrix();
|
||||
}
|
||||
|
||||
player_draw(&global.plr);
|
||||
|
||||
draw_items();
|
||||
|
@ -173,6 +190,19 @@ void apply_bg_shaders() {
|
|||
glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, resources.fbg.fbo);
|
||||
global.boss->current->draw_rule(global.boss, global.frames - global.boss->current->starttime);
|
||||
|
||||
glPushMatrix();
|
||||
glTranslatef(creal(global.boss->pos), cimag(global.boss->pos), 0);
|
||||
glRotatef(global.frames*7.0, 0, 0, -1);
|
||||
|
||||
int t;
|
||||
if((t = global.frames - global.boss->current->starttime) < 0) {
|
||||
float f = 1.0 - t/(float)ATTACK_START_DELAY;
|
||||
glScalef(f,f,f);
|
||||
}
|
||||
|
||||
draw_texture(0,0,"boss_spellcircle0");
|
||||
glPopMatrix();
|
||||
|
||||
glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0);
|
||||
}
|
||||
|
||||
|
|
|
@ -156,7 +156,7 @@ void cirno_pfreeze_bg(Boss *c, int time) {
|
|||
}
|
||||
|
||||
Boss *create_cirno() {
|
||||
Boss* cirno = create_boss("Cirno", "cirno", VIEWPORT_W + 30 + 30I);
|
||||
Boss* cirno = create_boss("Cirno", "cirno", VIEWPORT_W + 150 + 30I);
|
||||
boss_add_attack(cirno, AT_Move, "Introduction", 4, 0, cirno_intro, NULL);
|
||||
boss_add_attack(cirno, AT_Spellcard, "Freeze Sign ~ Perfect Freeze", 22, 100, cirno_perfect_freeze, cirno_pfreeze_bg);
|
||||
|
||||
|
|