From beba012f5aac1ddac0bc34313e7527cd6d321dbd Mon Sep 17 00:00:00 2001 From: Arokha Sieyes Date: Tue, 20 Feb 2018 19:36:11 -0500 Subject: [PATCH] Adds holoplants, and to cargo Courtesy of CEV Eris SS13 server (plus a bunch of additional code to make them real machines) --- code/datums/supplypacks/misc.dm | 7 ++ code/game/objects/structures/holoplant.dm | 105 ++++++++++++++++++++++ icons/obj/holoplants.dmi | Bin 0 -> 1786 bytes polaris.dme | 1 + 4 files changed, 113 insertions(+) create mode 100644 code/game/objects/structures/holoplant.dm create mode 100644 icons/obj/holoplants.dmi diff --git a/code/datums/supplypacks/misc.dm b/code/datums/supplypacks/misc.dm index 5a3bb038bb..ab4a0163c1 100644 --- a/code/datums/supplypacks/misc.dm +++ b/code/datums/supplypacks/misc.dm @@ -70,3 +70,10 @@ cost = 10 containertype = "/obj/structure/closet/crate" containername = "Webbing crate" + +/datum/supply_packs/misc/holoplant + name = "Holoplant Pot" + contains = list() + cost = 15 + containertype = /obj/machinery/holoplant/shipped + containername = "holoplant" diff --git a/code/game/objects/structures/holoplant.dm b/code/game/objects/structures/holoplant.dm new file mode 100644 index 0000000000..1f6473ebdc --- /dev/null +++ b/code/game/objects/structures/holoplant.dm @@ -0,0 +1,105 @@ +/obj/machinery/holoplant + name = "holoplant" + desc = "One of those Ward-Takahashi holoplants! Give your space a bit of the comfort of being outdoors, by buying this blue buddy. A rugged case guarantees that your flower will outlive you, and variety of plant types won't let you to get bored along the way!" + icon = 'icons/obj/holoplants.dmi' + icon_state = "holopot" + light_color = "#3C94C5" + anchored = TRUE + idle_power_usage = 0 + active_power_usage = 5 + var/interference = FALSE + var/icon/plant = null + var/global/list/possible_plants = list( + "plant-1", + "plant-10", + "plant-09", + "plant-15", + "plant-13" + ) + +/obj/machinery/holoplant/initialize() + . = ..() + activate() + +/obj/machinery/holoplant/attack_hand(var/mob/living/user) + if(!istype(user) || interference) + return + + if(!anchored) + to_chat(user,"\The [src] must be anchored before activation!") + return + + if(!plant) + activate() + else + deactivate() + +/obj/machinery/holoplant/attackby(var/obj/item/O as obj, var/mob/user as mob) + if(default_unfasten_wrench(user, O, 10)) + deactivate() + return + + . = ..() + +/obj/machinery/holoplant/proc/activate() + if(!anchored || stat & (NOPOWER|BROKEN)) + return + + plant = prepare_icon(emagged ? "emagged" : null) + overlays += plant + set_light(2) + use_power = 2 + +/obj/machinery/holoplant/proc/deactivate() + overlays -= plant + qdel_null(plant) + set_light(0) + use_power = 0 + +/obj/machinery/holoplant/power_change() + ..() + if(stat & NOPOWER) + deactivate() + else + activate() + +/obj/machinery/holoplant/proc/flicker() + interference = TRUE + spawn(0) + overlays -= plant + set_light(0) + sleep(rand(2,4)) + overlays += plant + set_light(2) + sleep(rand(2,4)) + overlays -= plant + set_light(0) + sleep(rand(2,4)) + overlays += plant + set_light(2) + interference = FALSE + +/obj/machinery/holoplant/proc/prepare_icon(var/state) + if(!state) + state = pick(possible_plants) + var/plant_icon = icon(icon, state) + return getHologramIcon(plant_icon, 0) + +/obj/machinery/holoplant/emag_act() + if(emagged) + return + + emagged = TRUE + if(plant) + deactivate() + activate() + +/obj/machinery/holoplant/Crossed(var/mob/living/L) + if(!interference && plant && istype(L)) + flicker() + + +/obj/machinery/holoplant/shipped + anchored = FALSE +/obj/machinery/holoplant/shipped/initialize() + . = ..() \ No newline at end of file diff --git a/icons/obj/holoplants.dmi b/icons/obj/holoplants.dmi new file mode 100644 index 0000000000000000000000000000000000000000..aada565b95af380201cba2409dd9a7e4c9480ee5 GIT binary patch literal 1786 zcmVHe>!kfzUQ!mrkI8Gq*%Mo_}s&agk+hWr_YZuyQ=+ zh&;W6z+GlKbiYD?uR)}Hm4KaqFe$b;BRF*FJ#DB`j?*@WZB46!idbB_P*pyG`ZPs< zHIZ(LYJg}{U^{c3Ib*y#Vv5pgYDck*Jd}N-a&S$`hEIB|z`(!&003rYW*QnAii(Q8 zy}e#uUMD9f6%`dqN=lIakf8to00DGTPE!Ct=GbNc005(UR9JLGWpiV4X>fFDZ*Bkp zc$`yKaB_9`^iy#0_2eo`Eh^5;&r`5fFwryM;w;ZhDainGjE%TBGg33tGfE(w;*!LY zR3KBSASW@eMAuM>i!&v&s2C_>$i006QzZxabJ*UJC^ z1xrapK~!jg?OJ_X8c7V_nS`}?$`&n3PiSpxZLhuFJrxA`{$K2p%q#+%%qoa;e-Ix) zHanBw1rtO5amxUC^{_)+^oeE0&J5y>ui#2Ntc z$1R=FzzvTSkw`GE-Hj+NKw%*9P~sK{KosB_J`U>?UGdQh$YG1XCP1X6Lm57w4WQsL z&RbbPv>&};6#y-mGl$rq6xk)4Vw-Sa05q}N7`n3dmp1YQij6&I*Y4w3*0wnE8q zpfAut5`m$i2)xtXfMipcU{Zc7fEE)H zzQhEgfVBJ_0myEeyrFdqYXy)R?>WnErn$`-((-rl0pW_DALu{_I?yiE*6{4gZ>2;r z@gn@T8_dIrm*9(RdP`PJ#^Jz=@a1U8X|37g__Tms`2|%fE(swtNA?6e@mcc@xo$Iy zMy{E>y&=Ep9w+%S{*RMW3xHz~q$9I#2k2Ejv@7TC+b%$YFYQJD?A$B}9G8ubY8qVy zRB>1DDv;V$o&R`n5xPTz&owig_Ad>75vpqH9Gnpdh{LK!qkGl+#Bel2t&L9_pqkj5 z8l>^uo+DK6{!H+%x+7h{a=Zb6ZBLD{Ck?0ypnB7@f;|jX4b=QGd4evV`5#U`ngBe< zAT^JA7{0&mp|pmy3{=kv0j~zf0Hg7R#V0yHJ2%D`BA1PzXMyWaRcQSLMAJ-snZh9O zKM%fWe4?BFr9PfXnl@6D3gByXi{Sv|_PVFs!3!L9zlD3oZ@+7Ns9$zA_I7WBA;tl! zPgR2dxjRDm^8GJ+yd8z%J_CR>6_SXC*SDGp;u+3>&5+;+6(pJygNH&f5ka#93w#nV z8hlgvA5Ly!9#F@x&SYF??7eCzK|q>N`A`Q*Gt&BJ{Um=$mUhH`ahZ7iqiQU1m532G-G311r;h;*siweETGKWrdd>IgfmDKCu0$pNw4i?Mu`^1_ZU)>yOu0fk@^<62F4uHOYk-#1M%YHY8R$Z3KlpyUr1Z z0ziIck_kW!BAf810GI^I1z<9n2HGD4TzPNGzn{(mP4D-GAgO`LbT*$qJUqWoa*K}_Hk~CS&q7Td#c>v58(FYduTmTl+d-_}C127W+88wg>041W}g|mI;!Zrwd cPQ^LsKSt3+Kx?Ig3jhEB07*qoM6N<$g2o^#B>(^b literal 0 HcmV?d00001 diff --git a/polaris.dme b/polaris.dme index e026cf9978..4a785222d5 100644 --- a/polaris.dme +++ b/polaris.dme @@ -1032,6 +1032,7 @@ #include "code\game\objects\structures\girders.dm" #include "code\game\objects\structures\gravemarker.dm" #include "code\game\objects\structures\grille.dm" +#include "code\game\objects\structures\holoplant.dm" #include "code\game\objects\structures\inflatable.dm" #include "code\game\objects\structures\janicart.dm" #include "code\game\objects\structures\kitchen_spike.dm"