From b0dca0269fd9ed8240cd46b52149213df0f7c624 Mon Sep 17 00:00:00 2001 From: ZomgPonies Date: Sat, 21 Dec 2013 06:00:40 -0500 Subject: [PATCH] Oldcode Fireworks! --- baystation12.dme | 1 + code/WorkInProgress/fireworks.dm | 66 ++++++++++++++++ code/game/objects/effects/effect_system.dm | 85 +++++++++++++++++++++ icons/obj/fireworks.dmi | Bin 0 -> 5498 bytes 4 files changed, 152 insertions(+) create mode 100644 code/WorkInProgress/fireworks.dm create mode 100644 icons/obj/fireworks.dmi diff --git a/baystation12.dme b/baystation12.dme index 5ac21d3e793..3dc5ff529f6 100644 --- a/baystation12.dme +++ b/baystation12.dme @@ -1353,6 +1353,7 @@ #include "code\WorkInProgress\autopsy.dm" #include "code\WorkInProgress\buildmode.dm" #include "code\WorkInProgress\explosion_particles.dm" +#include "code\WorkInProgress\fireworks.dm" #include "code\WorkInProgress\periodic_news.dm" #include "code\WorkInProgress\Apples\artifacts.dm" #include "code\WorkInProgress\Cael_Aislinn\Jungle\falsewall.dm" diff --git a/code/WorkInProgress/fireworks.dm b/code/WorkInProgress/fireworks.dm new file mode 100644 index 00000000000..6372145968e --- /dev/null +++ b/code/WorkInProgress/fireworks.dm @@ -0,0 +1,66 @@ +obj/item/weapon/firework + name = "fireworks" + icon = 'icons/obj/fireworks.dmi' + icon_state = "rocket_0" + var/litzor = 0 + var/datum/effects/system/sparkel_spread/S +obj/item/weapon/firework/attackby(obj/item/weapon/W,mob/user) + if(litzor) + return + if (istype(W, /obj/item/weapon/weldingtool) && W:welding || istype(W,/obj/item/weapon/lighter) && W:lit) + for(var/mob/M in viewers(user)) + M << "[user] lits \the [src]" + litzor = 1 + icon_state = "rocket_1" + S = new() + S.set_up(5,0,src.loc) + sleep(30) + if(ismob(src.loc) || isobj(src.loc)) + S.attach(src.loc) + S.start() + del(src) + +obj/item/weapon/sparkler + name = "sparkler" + icon = 'icons/obj/fireworks.dmi' + icon_state = "sparkler_0" + var/litzor = 0 + var/datum/effect/effect/system/spark_spread/S +obj/item/weapon/sparkler/attackby(obj/item/weapon/W,mob/user) + if(litzor) + return + if (istype(W, /obj/item/weapon/weldingtool) && W:welding || istype(W,/obj/item/weapon/lighter) && W:lit) + for(var/mob/M in viewers(user)) + M << "[user] lits \the [src]" + litzor = 1 + icon_state = "sparkler_1" + var/b = rand(5,9) + for(var/xy, xy<=b, xy++) + S = new() + S.set_up(1,0,src.loc) + if(ismob(src.loc) || isobj(src.loc)) + S.attach(src.loc) + S.start() + sleep(10) + del(src) +/obj/crate/fireworks + name = "Fireworks!" +/obj/crate/fireworks/New() + new /obj/item/weapon/sparkler(src) + new /obj/item/weapon/sparkler(src) + new /obj/item/weapon/sparkler(src) + new /obj/item/weapon/sparkler(src) + new /obj/item/weapon/sparkler(src) + new /obj/item/weapon/sparkler(src) + new /obj/item/weapon/sparkler(src) + new /obj/item/weapon/sparkler(src) + new /obj/item/weapon/firework(src) + new /obj/item/weapon/firework(src) + new /obj/item/weapon/firework(src) + new /obj/item/weapon/firework(src) + new /obj/item/weapon/firework(src) + new /obj/item/weapon/firework(src) + new /obj/item/weapon/firework(src) + new /obj/item/weapon/firework(src) + new /obj/item/weapon/firework(src) + new /obj/item/weapon/firework(src) \ No newline at end of file diff --git a/code/game/objects/effects/effect_system.dm b/code/game/objects/effects/effect_system.dm index 54927dff791..73baf47e2a0 100644 --- a/code/game/objects/effects/effect_system.dm +++ b/code/game/objects/effects/effect_system.dm @@ -1114,3 +1114,88 @@ steam.start() -- spawns the effect dmglevel = 3 if(dmglevel<4) holder.ex_act(dmglevel) + + +////////////////////////////////// +//////SPARKELS FIREWORKS +///////////////////////////////// +//////////////////////////// +/obj/effects/sparkels + name = "sparkel" + icon = 'icons/obj/fireworks.dmi'//findback + icon_state = "sparkel" + var/amount = 6.0 + anchored = 1.0 + mouse_opacity = 0 +/obj/effects/sparkels/New() + ..() + var/icon/I = new(src.icon,src.icon_state) + var/r = rand(0,255) + var/g = rand(0,255) + var/b = rand(0,255) + world.log << "Colour , [r],[g],[b]" + I.Blend(rgb(r,g,b),ICON_MULTIPLY) + src.icon = I + playsound(src.loc, "sparks", 100, 1) + var/turf/T = src.loc + if (istype(T, /turf)) + T.hotspot_expose(3000,100) + spawn (100) + del(src) + return + +/obj/effects/sparkels/Del() + var/turf/T = src.loc + if (istype(T, /turf)) + T.hotspot_expose(3000,100) + ..() + return +/obj/effects/sparkels/Move() + ..() + var/turf/T = src.loc + if (istype(T, /turf)) + T.hotspot_expose(3000,100) + return + + +/datum/effects/system/sparkel_spread + var/number = 3 + var/cardinals = 0 + var/turf/location + var/atom/holder + var/total_sparks = 0 // To stop it being spammed and lagging! + +/datum/effects/system/sparkel_spread/proc/set_up(n = 3, c = 0, loca) + if(n > 10) + n = 10 + number = n + cardinals = c + if(istype(loca, /turf/)) + location = loca + else + location = get_turf(loca) + +/datum/effects/system/sparkel_spread/proc/attach(atom/atom) + holder = atom + +/datum/effects/system/sparkel_spread/proc/start() + var/i = 0 + for(i=0, i 20) + return + spawn(0) + if(holder) + src.location = get_turf(holder) + var/obj/effects/sparkels/sparks = new(src.location) + src.total_sparks++ + var/direction + if(src.cardinals) + direction = pick(cardinal) + else + direction = pick(alldirs) + for(i=0, iV=-0C=2@jX?^+Fcd`B`KK7#tw^hat864ix@fOZg8ACeXv^Jm`OxIRCt{2oqv!VM|Hzn1NvI zP!vqX6(bTzZBmsAKmO1te>hYE$&&EHR03JYRG?6BO$dQRPV5=;%Qo1I1xNzhFlQTC zKP)`5?kwx%yUri8BSv#GyR*Bq_rtnx)z$6v%=CNR@AZ4HyI=1L&+}NonTvr=9yU#L zd%qZ2!0ezS1z5mK52Y2rG|lb4@9*d*GYgn`oKk=V^L}RHlmhs^zr!@m?F))YO{tRW*_aLN zK!;tsFmJm}wSD*{L_Z8eY}*Ft3*B4=C<+8k)12|n-+>-?eu5bmLZ|diQ(jXgeaCSK z!w_B9p$|$R(o4au{CXmM-}eD#JP`V{yisl8Y_=1|1=n3S;{oAp(U(#x&+`bwkgDCm zY3l&K@9!uw??MQC-^Vmf=#x2Wg+K9jik~q4>(N*+5?8HS)fe8{(Kk)`*3{=(m9#z2 z6H>}kmcaA8%Gx*p#X()#6(mgfzMp8~oK=F^pzr(Mf0(BHsA%-yI|t&?fAHYJzVnku-!$cIz=wgq1OnhO z-}ioAHEk)SavTR;*DLA&jyHom&l9$7_r)BQMKTi2D>krq?_O4|TBT-6_(k;h?c4id z;3L4-f!Fjy_)xti$h81v=J{1?VmFXds@Gq!0qyLw`18N6&k6dbDc|Y)-dD2Enx=fO z?|XMtNxO>v?|M79Up}c*9`4)yGotb5`MVF-<^=sj_@*hZPCr|v@Dtiq^nb1blwIga zGx6~MxZTk28FNty0DRwjU?yny+W&Gwjr zvXrpd7QkHKVLmEBr8$AKEr7Ye!+cYM%9BE8TL5!`hxw!gl>~u#nC+k};Q@ZVQg|lO zFWdipQ-FjCm^}fU=_u3xeN})3%zZ2z3^~KGpa5q$78KwN$ASW!;aE_BGaL&F&4K#{5Gm&s0N zD<>VE&0sETs;l53Q?3A6rrq6Iij0|`))$@D2i>`V&!#TDgt63p)vfT`jns6RB7fd4N-tY~tLM`0FHzD= znM(0lI1oCv068P@H1tCNIURpW)3bD2HMWWnyY7H!GK87kZUR*F!Tk0J%kD^I!O zPGX+zzVGkoHV8b;5+wefIE?3C%x87!Q9q?A3EFSB6L zC}-Ai8oE`0EF*qic~!_WnOUFK{GZH)D_JVeC|>$=(dJXKHsLq_r`IjYxF6Z-W_na- zdCC)X=6-I_-jxCrHKs~GpNBjXn5LU_LQ!K&K&CG;BWc>GO7StxLUjqR=tjETsdk>) z{3&=RD-W6FZ(imDBqJadbhX{|D1$r&&US8gRAt}GC}?TdX!fvznt9JDQo_9Y=cNK< zM_`_>@4*UW>&Z?(3x$+b#40Rey3R6|rbOH$(-)N}K)-{)1g#?Je)#=Pk>eV&JCub2 zEEC9ft5DehF-^OYe1LxY{vx`0<~YMw$5XGOwiHbTyREwu-g=!u6^k#>+eq&htyXR8g#Jrf0eZzu#WrcQ2{K#q z)6HyXK>=DIwZ71;tC=?Mu7aN)W&qQ$pa3P&YJT4$g6}qJZ} z2f^bCZ7dE1!gXL>B+wsHL?Xum6lqpoaM5N1BF}G?UKA126xtdHUJKeTg*E_I1ko|@hCrVH`7Y7@Psa3uBGX-#Zom1PN$mTxTSglD z!BMe^w?@If2>71DSTE4;Q|KE6`Z>S^7<&}8RiOU_!t>+N-xvpLGt~A$G!FVw2v0(N z6XgmasE5Q4r!mv_BBk|4pG^0>%Is z;}8x(@Mb|U0Ko)s7_1k-Sp(59Xm=}YQy>SRc84Nd9xFv~iy*pF!FgazLHKHceKFV? zg!{q%6?hLT>gPZ(+MEWq>%g38$+TDr`HrgFv)b7*WEo(HrqF$;{V9aU zz-xfJ7#c(1je)%gJ;s0bjru;CRZ+!Pk?q6Y}*gR8f?>J?rOW@`!!MhBst+448z;Ot- z!nRFt{}zZY1$zXxZHC}d(2m0Giy+tx!%slt1=w~BHa!q4!Ro`nPrE!DSXAE1Jybn% z()H!l-L0#dX%~0@m$nRr`#@J@NW0z#!BHKqvl-RzTw_aCU-o7SuME{Ppl8a?V8N>1Sl~{*D$i0Keef zj*+I3RfMFxoe*0rrOs%46Fdy=F))rpcpU1_Kr{x%gV69G_*<|9gp&}y3+j_l{|rPQ z1nmU4fGwc067=Jse-iA)@eIN{FIEa?Nj#Nwo&)b*U==v$g7?JqUk@)8OeLLerq0DB z<)pr>pvTmxqQjASqrJ@8`<_O2r|l_A?_&>b8S(@e3akmJ4aHM6`z#2LfP56}R{@WL zJQo@QtaaeL2=;3AOcLwE?nC!juf`mcwV z%6e@!Ea?bI^LTbr?xzk*^fJUwz!moj`8X7l4I04>Xkb9tU6KLb02f&pe4}ug;SFr}dPl86QSoLKf zlu~8Q{sQ1q}>DVFoX)~17J;o_Ztx02lg94 zKMD2}1XJ-;&=>$Y3i?X04}!KD+!G*=0_Q?~9D--S)xdfltU(CQ0`J*4Ua+2n5YVSe zSbz?MQuwuHDP@^a!Bt^>`n||>VE2|GITibA>m&q^LG5yghCuF)*YBO>pe>GP3Enu= zRzUPL)W<-(0F1Mt_Gny(`z*LCz@32l(%4Nz>%qPowCjOifVLF07rL@j8BVD;S>xwt;Mb zaTK)oLU0$5U=M;3#xsHX3eXQhq=7sF(URC2I0B-xLI2-a zs5Jq)0Q+4~`&zuhSHBTLAA&95Yz6Nhzy|7X0yz%RAk@DF(FZ^~SW*Ex6<*a5dBNPj zQ=WRwtnH5izh&c4_?z)MfV~$Qmx1wZMST*i-xJjSO3`?$K-1#|9cv$W>thR08vywt z)Sd!s6L>E`DB@TkToebB@*$|L1viYhj-#6d`eEP#XbkizC9JIQTlv$ppU$&1**GJw z&R$m>^XOF#eJeyqA^eo0ei78ZrLe9SL<7M6Q2VIBxg6Z3pf84S16aclj>JmiE`jjE zc=o_qak)MT!8a7fi(p&{`nkYb2;V6PZdb^=6u~ffcb41^u3+@cscG9x@l%FQaQ()i zdZ?&hDG2UWxbG3v?oc?J!2pbx3-l)-98-9MfPiQ!jv3@QG|m@TCltXL)E|qL!@f9P zCe}vcT!H8+fjkHJqC)$iAUX<6f;U;h0u%&%9gVCiJG+wzz6fQOja%I7Bs-~XyTdEM zd#9itD(bfg^nIY40_{}-TME2`V4Mfh3PIy)L2#}>ze*4+0^?dicu3)n2;9es6F+Vi zSW^(ZQDD7VP=Bq!Sso{j*uO8(4gp8OnS|)SRo7n<)z-wfQ<824*{vn&aOzjszN#&U z{s=@bfcq49TFzzL(}BFTpccknI$1uFgR8 z#})chpx+>H7ejEH!hR8q&nar3R#@MM+GiB@zbdSMQRu&fa0P@fhu{F{KZV8*6!moi z=O8#kP#Xq00`lc?qKWlgg>eAf`xK2aMR-VI+^diWnl2#QIcY7=?DXZLs>P8q^%M!R zVEQ$q*}&acJ@;CHy%gB3uqJ^w3*-i{HpUA$(JvIy7({CY;X$Z>L7|U><|@KSA(uk* z4ncjV!kvU#GXS(7P{?BtZ4!j95JZdPI^;S*utvaof&KM1L10nv*P=YVLDcto|9sj2 zDnj@>8;7E+LH`~EhZVtFlMJ+Hy%ly$wuTZNUXA^^?8 zc~TMHq0lb{c{tt$3_hiZKCf{8Q6WE};AxPX1i{^Lrm(gL8V`dr0enB+_VqRjtjFTT zAa5^dqu~A+ydQ)09jG6Uqkj9h1;O7aYC!ZM(Z8c%{phR`(R)V+Rl2C7Bc*Pqbf#&V z!B#=gJgngzhWaI7t%CZwP`?0-_X>g=1kNuN;kyNm#n5;KSU}?uMKB1_N(eWCb~!|g zfUOXGSHW6v_bc4*C>kT6?}z9@2yYR{{ZM~&h7O0eScC7Io0yAB&v`s~zq@g$z7ga% z71lU}FUH5fg0;~28R#3qy(B&iVmt}%vN#)vqw%_a?YE#dBnbB@+$#if0>bqWorLHf zMK}e{N@yGg=Ysg$fDC~*3-q6KISuR-MWe6RrP-?9%^Rs@>hEGbWLkTjS3~eTG)_RU z6xb?gTqCIM2YHhq8WJ>iE6@bi8t^o57scDd)^d=~1DApJCP6T!u#PEeKUTQCI@(8wJ)9aCZYg zRPZ)|{3nI|#|1~jdO;P6@lp_O**1LWgDVG}fo2BpDAX5$wjQis#u-BP#Sk3_V+10g zaT0