From 37f90b08b22c730ef1cd699ceb603595b7b7a716 Mon Sep 17 00:00:00 2001 From: Christoph Sommer Date: Fri, 31 Mar 2006 01:41:15 +0000 Subject: [PATCH] New Badguy "Will-O-Wisp": eerie light that tracks Tux and warps him to another spawnpoint SVN-Revision: 3141 --- data/images/creatures/willowisp/idle-0.png | Bin 0 -> 2079 bytes data/images/creatures/willowisp/idle-1.png | Bin 0 -> 2108 bytes data/images/creatures/willowisp/idle-2.png | Bin 0 -> 2075 bytes data/images/creatures/willowisp/idle-3.png | Bin 0 -> 2061 bytes data/images/creatures/willowisp/vanishing-0.png | Bin 0 -> 2079 bytes data/images/creatures/willowisp/vanishing-1.png | Bin 0 -> 2083 bytes data/images/creatures/willowisp/vanishing-2.png | Bin 0 -> 2103 bytes data/images/creatures/willowisp/vanishing-3.png | Bin 0 -> 1694 bytes data/images/creatures/willowisp/warping-0.png | Bin 0 -> 2079 bytes data/images/creatures/willowisp/warping-1.png | Bin 0 -> 2032 bytes data/images/creatures/willowisp/warping-2.png | Bin 0 -> 2067 bytes data/images/creatures/willowisp/warping-3.png | Bin 0 -> 2054 bytes data/images/creatures/willowisp/warping-4.png | Bin 0 -> 2029 bytes data/images/creatures/willowisp/warping-5.png | Bin 0 -> 1848 bytes data/images/creatures/willowisp/willowisp.sprite | 32 +++++ data/images/creatures/willowisp/willowisp.xcf | Bin 0 -> 6275 bytes data/levels/test/willowisp.stl | 139 +++++++++++++++++++++ src/badguy/willowisp.cpp | 147 +++++++++++++++++++++++ src/badguy/willowisp.hpp | 55 +++++++++ 19 files changed, 373 insertions(+) create mode 100644 data/images/creatures/willowisp/idle-0.png create mode 100644 data/images/creatures/willowisp/idle-1.png create mode 100644 data/images/creatures/willowisp/idle-2.png create mode 100644 data/images/creatures/willowisp/idle-3.png create mode 100644 data/images/creatures/willowisp/vanishing-0.png create mode 100644 data/images/creatures/willowisp/vanishing-1.png create mode 100644 data/images/creatures/willowisp/vanishing-2.png create mode 100644 data/images/creatures/willowisp/vanishing-3.png create mode 100644 data/images/creatures/willowisp/warping-0.png create mode 100644 data/images/creatures/willowisp/warping-1.png create mode 100644 data/images/creatures/willowisp/warping-2.png create mode 100644 data/images/creatures/willowisp/warping-3.png create mode 100644 data/images/creatures/willowisp/warping-4.png create mode 100644 data/images/creatures/willowisp/warping-5.png create mode 100644 data/images/creatures/willowisp/willowisp.sprite create mode 100644 data/images/creatures/willowisp/willowisp.xcf create mode 100644 data/levels/test/willowisp.stl create mode 100644 src/badguy/willowisp.cpp create mode 100644 src/badguy/willowisp.hpp diff --git a/data/images/creatures/willowisp/idle-0.png b/data/images/creatures/willowisp/idle-0.png new file mode 100644 index 0000000000000000000000000000000000000000..784e50a7467cb0cd130bd071aa37d2922d5bb6e6 GIT binary patch literal 2079 zcmV+)2;ldLP)i6-2wmr2dqg% zK~z}7#g|KuBu5d)e-W9L)m`1wJG;xSj4?iN;342-`NJc=0!a8^aexaF>|(sLJCE+_ zs(eIn$e!^U%$by;QdO#|{Kxwr!v9#y9}tU3oPZr_5djns5@Ln`T%NmX7cx%90JpW@ z#{~ySzv=tOOaAkL{SILdyg+P1Yd{zXB-A461ESi2m?4V+;2Q;146xApZVN`nDVQyI zy~7V*d>_R304%>p*dgo@eTkCLx*@0%d_Wf?R7D>FEQWZugabY*Zbk#zMrjF53XM#& z72}9U!_&{d0}(&gJU>V32GIjbBrp-05LYEsh*=3hs1N{gkcB4;cm+4837SF!Y8sHB z7i9(GjMc9p{CH06`~WWLeK-T1>$TB1!6Xasze}ULvxRZ$Ez<21DHe0M$1MW zm6AaB0SOzb0R~D(AAq}oV}6CLy)?*0OzD5-*)h>B}-;cWPERy#^#ISKjNsQ?)q#W8FTc5m1| zU=ndX;E{yrNIwoj)vmoMo2E=h=ju*4e1P4z%5*18E3#GMsIFlYwGla+`<+R7zlM5y zbWW>4ww|5|JZTTk0or1;F=CpqsEU~Pw960+L=%$1=Il)O!u|%X-Y8c$qOXdi*UtDd z_-0I^f(<5c8l~P2zJAkK-<&!B>rUEjQn&?Ah9!s*VuI=r(mHF{^Orb^5SIxEpjeN+q!{Ma=UHJSCw-xQO_L9y_zMX?I0wG zdnINg42ojCpv6ljt6s7|lu#?FDQOkb(HU=*{mS^0EC1}5pYhwDKKECnv-03?EOTEI zoT9g9$gmRvLM|hoB11?@C`QO2LxNZp(Fm)dD_x4972*ov1ZhF9RHjc} z`lqiy<@4<`uGN@{WcxtYh_De=VGu!YSg>iK+fN|s){%)V2Y_L!o*oFCv{=VJu#v2EpS$W4hR#~Jnsv{|idbPC6j8_m30d@+b zDa*$S0+N9Q5@UoGV6ooP=v~CjF`#Y*+n6+$I#+JyZ~5!?mcwwSNRdKh0=7~>3ni?Q zW4BBjcF53Rh>soP2Ua9QNO%fx26v+??o?B9Q1afrsB?;v@2cN#sGr&Sk&>{P?y${wDU&F`+JwS3#a6`5AJ!_e10L!FX8wc9=33roOKIj z3w5|Cm!R2##fryG!Ofu#w9t?gdbQg1;MEIt77;jg$5}PjNqoA(Q-;t4)M*>2TVs7D z90zCKI>!m-Nm&QTsb^M`(qkZ(Zh@W>6`@{S5Ksjv22*Fcj^LwXt5XeDbLJhS<^%x= zf(=d`VGYiC2Xlfs2#h_i>dV5SHYb*IR=vl#&2gD1xVl#LM= zCr9DzLNrjP*N~`~8aX-Z2G&7X2I+@SMji{5+7GvTyq-TAOzbO^7k&D%iP*Np3^CIQ z>S_#^d#(B%Ex&*yJu)9?W<7`#lmW^{yY}HswYB@dev4m!d7LzwG7sd!w0sb@}NFq;Alv z1QMZzP9{|QUOMf5`d<26=+>!M159fN5gJV^O)C}`Y`(+y9}TJULmkTgjO6h$5hs*^ zpqox4TIhT27U0rWKW;R3nF-An8U-U`(eQZ2^;iErA^%_3zX5C+%fZe&rqTca002ov JPDHLkV1mOcx}E?4 literal 0 HcmV?d00001 diff --git a/data/images/creatures/willowisp/idle-1.png b/data/images/creatures/willowisp/idle-1.png new file mode 100644 index 0000000000000000000000000000000000000000..9b9b90fcc9a3d1453f602e390b8701d9dc895eac GIT binary patch literal 2108 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 FV1naQ$yfjY literal 0 HcmV?d00001 diff --git a/data/images/creatures/willowisp/idle-3.png b/data/images/creatures/willowisp/idle-3.png new file mode 100644 index 0000000000000000000000000000000000000000..69b7893f270c445fae6f3f2c68004dbfc4bbdf4f GIT binary patch literal 2061 zcmV+o2=e!dP)@b*uA4M8=5|!v9$7pAm~l+ye*HA_6ENWW)>sxIA~&VHBK#0dCv) z99JA5|9$f!ls6QVkRm?5hH;Io1%23Y80w-uw{RLoYq z-Qd?>ehlIx0PCL+4hTm?pP^*5%>-3~Cv-JJQ}jK6)es+%aKI!oryh=3Z$mwh4H>XJdGpuG}8A|3JuR- z87wR92(f`yP%~r>$Zj40$e2z8L~MUW%#o(3f|4H&&nL)D$+a<`oqUG0Lad-wVRKl( z0$3Ex1v@}LjuiC_x;HcqfaHKn#&rT_%r-o(5z!gZ8MQsJ%R|`n0&_K{TW8u}Iw`3r z`Rs%OtO^CJI$fZO(+)zv2RlK33W_2a9D!TIuM;juT)}lkqRuFJl$s|(F=B;uZ{#k_ zMcH*_J~{hEnKziKGBqbU5&~*LC=EMT_jPf$Dy-dTB1jP&#WCy%c5B!%U=ne?#v>Wg z2_d6EX!?-*sVMVV*x$kN497b--V6JR?1i{f(G*-!;jH*6gnCoyw*{iXx!EYsEO^#& zITQ5N=u^ZrV^I|`A7xiYeq(oXhrAi{q8u0D@mt~gt>}}D{G^kfW|^-h;yg(V8DGuY zO_%NU%JxHLec6M(tpfKB*|99N2r)x*2szPdNFU$FoaIR%?Hy8J)viW0Y&F`wla5L&Mo5ZcgV5rol2tEN zAWCSRWWuz;?q1lvQI5ChbC>Ji9Qo{5d!9atuEAI-f&*Ld`lu839aW>6crA+64rLQs zby|Utl~9dPKvIU-6wwHqp&P@RlT1lP$oI~Chh8;yzr6O(zxY)C@Zynwl8wfV{L2r*!JgCO_Q%Ab*=q{xX}GEc_^fc=jxbh!RkO zfVkj>xJSPKXQ)mKf6i$2b+ve?cxB9)Z zrX-2rGAGw;(&CA4rEu~>EAM#ya^dy2f%0~bowHMBp^0HxMz@3^Or+zHiW_(gSW+xQ zZ$h7-oSiio_agpg=WW+m_e#)!dc?1tX);J>)_%`TU1hsj{PfSj-9HZA-W}bSSvV_f z!Kqn>gXsbS@E8L|1Ql!q=!zY;gN!&2w-_f zV-Qen5U!P=ia7WRWpkF|{het4K1n?avWu=$6tm>k+;1wRROGtRDd8z3cm42}e+C&!{wuaqrx$^_>t zVLOa!Dj6!!rH(sL>WIK7iH6WFDF~>7RD=Ccx{l%*!U^=G)H2vi+>mxDE5K%<^owCcu~W7v!RL$Xw#o$d3m26 z@QZab+66#OP-h+9hcnH#k^lAzfBe-)EQxc%^axgH0ep&h47gp$DGval7@GAXS?;2E z8WOC>QO+%mva1n#@{9LnjA@U*8g%^8Xl7qu{`4u*X0$1ROz4477$aJ_wCN8=I~jAK zn++lZOxpkvI$axG8x~h=xxtSg45{+pI+Xn#Dbr;l&M1kX^AHj}jJ=HraA~U_HX6Ik rgk~$9iczp=cs%3!+y9)9|F7%cV5^|>WZgw}00000NkvXXu0mjfWTD2{ literal 0 HcmV?d00001 diff --git a/data/images/creatures/willowisp/vanishing-0.png b/data/images/creatures/willowisp/vanishing-0.png new file mode 100644 index 0000000000000000000000000000000000000000..784e50a7467cb0cd130bd071aa37d2922d5bb6e6 GIT binary patch literal 2079 zcmV+)2;ldLP)i6-2wmr2dqg% zK~z}7#g|KuBu5d)e-W9L)m`1wJG;xSj4?iN;342-`NJc=0!a8^aexaF>|(sLJCE+_ zs(eIn$e!^U%$by;QdO#|{Kxwr!v9#y9}tU3oPZr_5djns5@Ln`T%NmX7cx%90JpW@ z#{~ySzv=tOOaAkL{SILdyg+P1Yd{zXB-A461ESi2m?4V+;2Q;146xApZVN`nDVQyI zy~7V*d>_R304%>p*dgo@eTkCLx*@0%d_Wf?R7D>FEQWZugabY*Zbk#zMrjF53XM#& z72}9U!_&{d0}(&gJU>V32GIjbBrp-05LYEsh*=3hs1N{gkcB4;cm+4837SF!Y8sHB z7i9(GjMc9p{CH06`~WWLeK-T1>$TB1!6Xasze}ULvxRZ$Ez<21DHe0M$1MW zm6AaB0SOzb0R~D(AAq}oV}6CLy)?*0OzD5-*)h>B}-;cWPERy#^#ISKjNsQ?)q#W8FTc5m1| zU=ndX;E{yrNIwoj)vmoMo2E=h=ju*4e1P4z%5*18E3#GMsIFlYwGla+`<+R7zlM5y zbWW>4ww|5|JZTTk0or1;F=CpqsEU~Pw960+L=%$1=Il)O!u|%X-Y8c$qOXdi*UtDd z_-0I^f(<5c8l~P2zJAkK-<&!B>rUEjQn&?Ah9!s*VuI=r(mHF{^Orb^5SIxEpjeN+q!{Ma=UHJSCw-xQO_L9y_zMX?I0wG zdnINg42ojCpv6ljt6s7|lu#?FDQOkb(HU=*{mS^0EC1}5pYhwDKKECnv-03?EOTEI zoT9g9$gmRvLM|hoB11?@C`QO2LxNZp(Fm)dD_x4972*ov1ZhF9RHjc} z`lqiy<@4<`uGN@{WcxtYh_De=VGu!YSg>iK+fN|s){%)V2Y_L!o*oFCv{=VJu#v2EpS$W4hR#~Jnsv{|idbPC6j8_m30d@+b zDa*$S0+N9Q5@UoGV6ooP=v~CjF`#Y*+n6+$I#+JyZ~5!?mcwwSNRdKh0=7~>3ni?Q zW4BBjcF53Rh>soP2Ua9QNO%fx26v+??o?B9Q1afrsB?;v@2cN#sGr&Sk&>{P?y${wDU&F`+JwS3#a6`5AJ!_e10L!FX8wc9=33roOKIj z3w5|Cm!R2##fryG!Ofu#w9t?gdbQg1;MEIt77;jg$5}PjNqoA(Q-;t4)M*>2TVs7D z90zCKI>!m-Nm&QTsb^M`(qkZ(Zh@W>6`@{S5Ksjv22*Fcj^LwXt5XeDbLJhS<^%x= zf(=d`VGYiC2Xlfs2#h_i>dV5SHYb*IR=vl#&2gD1xVl#LM= zCr9DzLNrjP*N~`~8aX-Z2G&7X2I+@SMji{5+7GvTyq-TAOzbO^7k&D%iP*Np3^CIQ z>S_#^d#(B%Ex&*yJu)9?W<7`#lmW^{yY}HswYB@dev4m!d7LzwG7sd!w0sb@}NFq;Alv z1QMZzP9{|QUOMf5`d<26=+>!M159fN5gJV^O)C}`Y`(+y9}TJULmkTgjO6h$5hs*^ zpqox4TIhT27U0rWKW;R3nF-An8U-U`(eQZ2^;iErA^%_3zX5C+%fZe&rqTca002ov JPDHLkV1mOcx}E?4 literal 0 HcmV?d00001 diff --git a/data/images/creatures/willowisp/vanishing-1.png b/data/images/creatures/willowisp/vanishing-1.png new file mode 100644 index 0000000000000000000000000000000000000000..b69a0d54b8a03fe96163fbbeefd02f50334bf0f7 GIT binary patch literal 2083 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 literal 0 HcmV?d00001 diff --git a/data/images/creatures/willowisp/vanishing-3.png b/data/images/creatures/willowisp/vanishing-3.png new file mode 100644 index 0000000000000000000000000000000000000000..e964eb64b6ecd893026afc0b5080b46f91b2f27c GIT binary patch literal 1694 zcmV;P24VS$P)t8)SR=s)@{)Z#|hFG}%6(X3`KihTHI!HLF-Mhf}C;VIAmT%q6e@Ai$ z^et!r?-A7&z+h=Wh7ACCSK9rhfmvbrCC^cB@ z@vgq-%kRkWhu0upF|hoC*a#|!-a+Y*lOZce0?7?Pf^C_vhbr`d8y>9Aey4Z@Kh|aO zZAo5&c+J28G$K0G;4P@m4L|~!Hm2S#Uke&RqT)v&*X73yh7R@v82J1TWJ}H~fcZoF zV7vy`sm(eWGI1TOAgjW~Dig5{Kn``r020AR!vh!wv8xw#htD67@y~eJg6jY_B1Mq7 z(LUGU`q%=01UYLxPq&=daC>iX1kUw&e*jRx&?DH%;I7BzST6&F`9m!+dc^xW+jW~g z=&Z;L^1H#u8eFm>tB9M_sK*$j|8FK7ELS2eLrR2(C)?32O ziadh+6Xc^JPl}vHbVaozY9VX@?1H(-Vr!RecDDp1yRt*9Y|^*#-38Ey2URdf2sQ9p zgOfl`29FAl)Zow32W9LcL+H2*fvACqVZO2yW6Bq%oMkTPS|acS#G0TIT9P_=>}!?= zdPF0Xz6RY&ZF)1#BAqgZz0Bh%gH}=X0f;*DhqO~ zEO@U7hO54)0#!t*3X-hWdP^pG?nDc*D~xgEA&&gCd*?rN14j)Fz=f$GQ3Vwtd1A4| z;!~{*4&bSlsH|4c`-q3EprMx31>|xQ8kt(XXM#FIIPwtQ@niqqe-7{XQ3pAw5^zkC zKg-S|Pl9DqNzA!mdgkI2`1|_ZO{zr|ry!vCXLmkDLi3s@DTbQ3f`0HuRk1+BppZSq!2kxh12RJ?(Re$atC z*)vM?1BzCa5o9k(4}R=Eb5s~4Gu8Lon!lZ71T@qZ%iGTOLSTTZ^8hP`V*uWM@pety zZvYIFU6q?}w){YXE>@X*<_4k#^xD=8BYPovCi%+3g$0#>Qz&FlBo@DrNnS|qm^-%h zhi?FQ;bwZ8!BD(uIl&-w*;kS+Ol2pZZSs@%K7c?=LK3r|c(O%4m4(TK#WKm;gnXwE zTj?pc5po92xJm8rY#r^zZ;#o`QZ7vSGym>Xg1VdT{Z2cg7}*!5@>%|sXCCv+Q(jq0 zBwOE_Q)|)0>JvN|NP)l#280gpYyXzawW;`I_^hRLk|c9lF9i7nnB;EulST%~B)`bH zTzFj1Jg$Y)Dl8Vf`0>^){cS!09zur`5EYo~L!Jze3I~uQ_}TEav+~T87P2{WNj!yK z2JIQt$Yo_I&z!O|ug;YBzLtB#jjwo3D?xC_wSGHb|xHjjwueG{@=Z0Eu zw~gX{X7x_jl4a2gilEYCE|_M z%H=DXFhQ9NS+&?oxs{VuLlVKiSNvdb4}K4J&|7fes&e6HJm_EQ#q=9Ov%9gw6>K$h ztacCd3V^BRiKG|0u_f9O=5h?qd6HXu(yPj{Z>1MfJ7}Hog z-fi|R|Y&xn}+xF^xsZ#D{SEWO9WuPndT=SQ~zuBplU)qkiIc6Q|^QF6)*OzS- oZXe(Fgtp+D5%_Pri6-2wmr2dqg% zK~z}7#g|KuBu5d)e-W9L)m`1wJG;xSj4?iN;342-`NJc=0!a8^aexaF>|(sLJCE+_ zs(eIn$e!^U%$by;QdO#|{Kxwr!v9#y9}tU3oPZr_5djns5@Ln`T%NmX7cx%90JpW@ z#{~ySzv=tOOaAkL{SILdyg+P1Yd{zXB-A461ESi2m?4V+;2Q;146xApZVN`nDVQyI zy~7V*d>_R304%>p*dgo@eTkCLx*@0%d_Wf?R7D>FEQWZugabY*Zbk#zMrjF53XM#& z72}9U!_&{d0}(&gJU>V32GIjbBrp-05LYEsh*=3hs1N{gkcB4;cm+4837SF!Y8sHB z7i9(GjMc9p{CH06`~WWLeK-T1>$TB1!6Xasze}ULvxRZ$Ez<21DHe0M$1MW zm6AaB0SOzb0R~D(AAq}oV}6CLy)?*0OzD5-*)h>B}-;cWPERy#^#ISKjNsQ?)q#W8FTc5m1| zU=ndX;E{yrNIwoj)vmoMo2E=h=ju*4e1P4z%5*18E3#GMsIFlYwGla+`<+R7zlM5y zbWW>4ww|5|JZTTk0or1;F=CpqsEU~Pw960+L=%$1=Il)O!u|%X-Y8c$qOXdi*UtDd z_-0I^f(<5c8l~P2zJAkK-<&!B>rUEjQn&?Ah9!s*VuI=r(mHF{^Orb^5SIxEpjeN+q!{Ma=UHJSCw-xQO_L9y_zMX?I0wG zdnINg42ojCpv6ljt6s7|lu#?FDQOkb(HU=*{mS^0EC1}5pYhwDKKECnv-03?EOTEI zoT9g9$gmRvLM|hoB11?@C`QO2LxNZp(Fm)dD_x4972*ov1ZhF9RHjc} z`lqiy<@4<`uGN@{WcxtYh_De=VGu!YSg>iK+fN|s){%)V2Y_L!o*oFCv{=VJu#v2EpS$W4hR#~Jnsv{|idbPC6j8_m30d@+b zDa*$S0+N9Q5@UoGV6ooP=v~CjF`#Y*+n6+$I#+JyZ~5!?mcwwSNRdKh0=7~>3ni?Q zW4BBjcF53Rh>soP2Ua9QNO%fx26v+??o?B9Q1afrsB?;v@2cN#sGr&Sk&>{P?y${wDU&F`+JwS3#a6`5AJ!_e10L!FX8wc9=33roOKIj z3w5|Cm!R2##fryG!Ofu#w9t?gdbQg1;MEIt77;jg$5}PjNqoA(Q-;t4)M*>2TVs7D z90zCKI>!m-Nm&QTsb^M`(qkZ(Zh@W>6`@{S5Ksjv22*Fcj^LwXt5XeDbLJhS<^%x= zf(=d`VGYiC2Xlfs2#h_i>dV5SHYb*IR=vl#&2gD1xVl#LM= zCr9DzLNrjP*N~`~8aX-Z2G&7X2I+@SMji{5+7GvTyq-TAOzbO^7k&D%iP*Np3^CIQ z>S_#^d#(B%Ex&*yJu)9?W<7`#lmW^{yY}HswYB@dev4m!d7LzwG7sd!w0sb@}NFq;Alv z1QMZzP9{|QUOMf5`d<26=+>!M159fN5gJV^O)C}`Y`(+y9}TJULmkTgjO6h$5hs*^ zpqox4TIhT27U0rWKW;R3nF-An8U-U`(eQZ2^;iErA^%_3zX5C+%fZe&rqTca002ov JPDHLkV1mOcx}E?4 literal 0 HcmV?d00001 diff --git a/data/images/creatures/willowisp/warping-1.png b/data/images/creatures/willowisp/warping-1.png new file mode 100644 index 0000000000000000000000000000000000000000..5f5ebdebabf796f6e5a3cfcbfaefb63ab92fde60 GIT binary patch literal 2032 zcmVrrC;d z#G~Qq5AQ+54=vBnkvbuIjS>m$2~CKr5-P;31RzuhfH=s)lLx$l8`K0%p#e1wNYKq# z!MI@cTZmtF5KjPj4Ln11kE#&#n%DyIYzzfrHioK1AY?;x&xglXUlax~hn9_&jXEkN zfzAO56V(6%uN5Bt2G?KV5ukpH)B)iN)kM&V*aAa_p(^Q2zt0el{YX9b@VyVA;R!5( zC8f>~D`){VL#BZ2rVfCF>DWQU`gg<}sfsEn>FMxvgjAK3jdXtP%qFw-j`P*N{79|+lqrCU2xV_cMR z71F&ko`kW$=z+ZpgNZ~$1*0~xb-|a_SypGQMh3`&qd11mU=N1P0h5U9H6BTbjtB__ zLe(Dc2IC^6gEJk3U4<)CX5g72*MWGI&}66}zGOH>@}Y@6EXtt@$J%;=Cc%^T4d3JgVcDKzlHjJ7@h7 zUw^7%p#~lfjwQ#EP$R?y)gh#TMnxh6stIian!5*r7-?~aBJ8R&S9pFBKFOpnjOjPR z{#9g}Ax()Gz*nI?G|o51GO0_5vb3z$)Tn2p4MLo|VPQ}d>kTb#m8`l|fheIi28Xc- zy9>-`<@P}M^dj-Mk@2@G`%l&PJ0-?U2oW!eJ#Xk-U4lqyLOG9aOLLY5$__$?kd#o2 zkU@sj-7OknHFTw~3ekj=VLA)D1A2Ru_&Un<@1no{V&ui_h-N)WbCZE-OsdDD(6MiVv!vdE~Z(e5a4W>Pos690m0mPhWN^C+}ooPkqrs>s=SFbKm^%t2?7eDPH;p7MK)OwPz2fN&>z2%2x7QI1pgJv|L}@r2nkOCF5qrBjz_`V zF%?>X(quiK{4U?|-DtR0vfS~8g?mOK!ph29&zx7It^uzq-Ui1aPxR{_ETEH-Zz1r3 z?uq79cWQ*XbLxbhFP`r%eE0Ty(c!^=n2aiC-r*DpUdTwRoY%tX!C4b307VszOWtbhr&02*6_u7!g#kbEnXjog9=9 zoDhW=o%jqVu)2vY;`N}cw?X0*NU`B(^YUOUKL+v}=ki9q{Tz)$g!MVpYo#TlM(fNu zX;(+lR$RdhTH0+gN+~-b7AI%txDzm=P1?bSo&&jb5A>3#2z3iVKoz7I z?0bK56i=HZJA!6IGVf*iCd+JwHW>B->f94~9gIBC!!S1LqfD=7JaWXDAugCH!k&7i z$OXEj0iVH>VG+U}biYkV8Ki8#8GuQ zrytuB+m4taZfZEK)>Ux^t@>V;Zy-tUz0l048-OxEnY3FUE>v54{OeEn?bn+ue`=FQ zOlPo64d7$MW5BI9rx~RBtsO*YG_5qPSX{94JwAUhr2Z;X**}mx zZWD1r83;OcA<;tLYxe*ft$s)}w#|fQ3yp%2v1oX_;QGh^o{;~q*S`TiB%U%c!VlyC O0000H31q@IM>W%{3?z`$fsW_Dm zxNrM!TXBH$?SB1y$p5_I|BSK#Z%{vCJ)vX@1#=@sMpbtp?&!KN>9c|=9q4H=fbJ`u ziqq)6;{5@?`}1!>{06}KFDNIJ1=Y701?w|Kl^hvcozj)`5y0wb?2&N5C&k@qK%JFZ zU`V4W2k`=cuYp&n9x)Y)-Z72Dd~ps9=IYE{nSfHAR3Y7#1&CE4 zLl0=xY1P>#VbB}6pZq+`RNR&t{kg# zJj3A(`MfWhnxdOS1t}2amIo*3%YH3F88m6o!Pg6%Q*hbf(w!BDsyK?{ z^ac8()0e~$!}Sg~3aS%I!GO~BcJ{(@6%G%<;e)WO!mA2*q1>zR+ORtz&4Oq^?ZhS1 z9*6jcCVY5=58VlzC`uIFlQTnIojMs^3*A&v4-6w$m>Nu7nOabugZWumF7U;wym9m! zlk$5Zf0ZbUgib=%z?(DHVEa|r-bb{*y1EU}Gk9@&Q8t6Az!p$SrqNL&V_LA0vARbf zwr(RD{F>f91qm?&QEs=84C& z@>~#`8rva3RweO?IfWez1ys!-GOP~aFA^#7QLO}25Dk$)L{Rj$PP*}o072aTQ4&ZH zVkq%(eaR7eFc39b;~ct99L#BMSqqPcAC%Fq5YKk6W8Y`o_OHXfNUgpCXD**J&O zyAfUSZh~99$gcx&yWac^gzjd-Gq*@U3#bNt3fdZet<>j@AMf9Z=wtk-jmi^05p*J+ zxgb=YqH`V^eVgfPFxKJJ0c}!7@tbqvWn#VK+7TBbpaa8Tq@bIyP4IlepSI}llbm1m z_^&S_e#uT!m416^V})pRPth(G^=Z=fnDEDd=K{?>sbz=Vn8?75hC8SwdR9h(HlQ7# zt+36`b5-6SqaT907)g?_q?oh2sgfjQMBqJnUq$OfVtb$HKaYqH6Fe)sJ1Q`Mk#8UX zH%oL3ROpxe!CHeg2~&Y{0W;^rQIRb+l6cF}-dNNnk+P7bhmTIbqV*|7eHUy$5dPoE z`6a>S9{QcqinE#14BD&=u5|MaSLhD49B9B+g!Lr59#r966>(<_9RzV5_(Q_)Ak86F zC8CP-i$wdi(chblckcXT@UXzPC|7gV0^3Ph3)D2Iblj-)TV0KEU}YzbwF_lQn8aR_ zL+K4Jb@;>3`jbmNffi6hyaj%3&eJ435j-5>`3|mclp+APXb}LhufKz#56iGvuaN+ml&%1r7HC;yZ5wsK24b1nug2P>WGb#K$||FYBZZ-m0XyDj<#?K9SuLZOUAuIw#Zh0=E0{nD1m zjmq5_We>{GPA#yeLDNpvPPdhQdBB&?n$*9mRQ?}moo*d*!N?Sycjq(`#?8olJc9B` xXdLJTx-^EbR2rR1H^=RY>mUDjhy4FK{s#WYj4yPZb+-Tj002ovPDHLkV1k1{=41c> literal 0 HcmV?d00001 diff --git a/data/images/creatures/willowisp/warping-3.png b/data/images/creatures/willowisp/warping-3.png new file mode 100644 index 0000000000000000000000000000000000000000..7e77c8579fdf7a329e9e29be2e0a5d53f565c1c5 GIT binary patch literal 2054 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 EU$^`ieE +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +// 02111-1307, USA. +#include + +#include "willowisp.hpp" +#include "msg.hpp" +#include "game_session.hpp" + +static const float FLYSPEED = 64; /**< speed in px per second */ +static const float TRACK_RANGE = 384; /**< at what distance to start tracking the player */ +static const float VANISH_RANGE = 512; /**< at what distance to stop tracking and vanish */ + +WillOWisp::WillOWisp(const lisp::Lisp& reader) + : mystate(STATE_IDLE), target_sector("main"), target_spawnpoint("main"), soundSource(0) +{ + reader.get("x", start_position.x); + reader.get("y", start_position.y); + reader.get("sector", target_sector); + reader.get("spawnpoint", target_spawnpoint); + + bbox.set_size(32, 32); + sprite = sprite_manager->create("images/creatures/willowisp/willowisp.sprite"); + countMe = false; +} + +WillOWisp::~WillOWisp() +{ + delete soundSource; +} + +void +WillOWisp::write(lisp::Writer& writer) +{ + writer.start_list("willowisp"); + + writer.write_float("x", start_position.x); + writer.write_float("y", start_position.y); + writer.write_string("sector", target_sector); + writer.write_string("spawnpoint", target_spawnpoint); + + writer.end_list("willowisp"); +} + +void +WillOWisp::active_update(float elapsed_time) +{ + Player* player = get_nearest_player(); + if (!player) return; + Vector p1 = this->get_pos() + (this->get_bbox().p2 - this->get_bbox().p1) / 2; + Vector p2 = player->get_pos() + (player->get_bbox().p2 - player->get_bbox().p1) / 2; + Vector dist = (p2 - p1); + + if (mystate == STATE_IDLE) { + if (dist.norm() <= TRACK_RANGE) { + mystate = STATE_TRACKING; + } + } + + if (mystate == STATE_TRACKING) { + if (dist.norm() <= VANISH_RANGE) { + Vector dir = dist.unit(); + movement = dir*elapsed_time*FLYSPEED; + } else { + mystate = STATE_VANISHING; + sprite->set_action("vanishing", 1); + } + soundSource->set_position(get_pos()); + } + + if (mystate == STATE_WARPING) { + if(sprite->animation_done()) { + remove_me(); + } + } + + if (mystate == STATE_VANISHING) { + if(sprite->animation_done()) { + remove_me(); + } + } + +} + +void +WillOWisp::activate() +{ + sprite->set_action("idle"); + + delete soundSource; + soundSource = sound_manager->create_sound_source("sounds/rain.wav"); + if(!soundSource) { + msg_warning("Couldn't start WillOWisp sound"); + return; + } + soundSource->set_position(get_pos()); + soundSource->set_looping(true); + soundSource->set_gain(2.0); + soundSource->set_reference_distance(32); + soundSource->play(); +} + +void +WillOWisp::deactivate() +{ + delete soundSource; + soundSource = 0; +} + +void +WillOWisp::kill_fall() +{ +} + +HitResponse +WillOWisp::collision_player(Player& player, const CollisionHit& ) { + if(player.is_invincible()) return ABORT_MOVE; + + if (mystate != STATE_TRACKING) return ABORT_MOVE; + + mystate = STATE_WARPING; + sprite->set_action("warping", 1); + + GameSession::current()->respawn(target_sector, target_spawnpoint); + sound_manager->play("sounds/warp.wav"); + + return CONTINUE; +} + +IMPLEMENT_FACTORY(WillOWisp, "willowisp") + diff --git a/src/badguy/willowisp.hpp b/src/badguy/willowisp.hpp new file mode 100644 index 000000000..fe15b32ed --- /dev/null +++ b/src/badguy/willowisp.hpp @@ -0,0 +1,55 @@ +// $Id: willowisp.hpp 2642 2005-06-26 13:38:53Z matzebraun $ +// +// SuperTux - "Will-O-Wisp" Badguy +// Copyright (C) 2006 Christoph Sommer +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +// 02111-1307, USA. + +#ifndef __WILLOWISP_H__ +#define __WILLOWISP_H__ + +#include "badguy.hpp" + +class WillOWisp : public BadGuy +{ +public: + WillOWisp(const lisp::Lisp& reader); + ~WillOWisp(); + + void activate(); + void deactivate(); + + void write(lisp::Writer& write); + void active_update(float elapsed_time); + void kill_fall(); + +protected: + HitResponse collision_player(Player& player, const CollisionHit& hit); + +private: + enum MyState { + STATE_IDLE, STATE_TRACKING, STATE_VANISHING, STATE_WARPING + }; + MyState mystate; + + std::string target_sector; + std::string target_spawnpoint; + + SoundSource* soundSource; +}; + +#endif + -- 2.11.0