From f80d1e702b39f1414d570d8e9d4c436188e945bb Mon Sep 17 00:00:00 2001 From: RavingManiac Date: Sun, 30 Mar 2014 21:51:20 +0800 Subject: [PATCH] Missing files added. --- code/game/objects/structures/inflatable.dm | 304 +++++++++++++++++++++ icons/obj/inflatable.dmi | Bin 0 -> 4598 bytes 2 files changed, 304 insertions(+) create mode 100644 code/game/objects/structures/inflatable.dm create mode 100644 icons/obj/inflatable.dmi diff --git a/code/game/objects/structures/inflatable.dm b/code/game/objects/structures/inflatable.dm new file mode 100644 index 00000000000..bc0f907a58f --- /dev/null +++ b/code/game/objects/structures/inflatable.dm @@ -0,0 +1,304 @@ +/obj/item/inflatable + name = "inflatable wall" + desc = "A folded membrane which rapidly expands into a large cubical shape on activation." + icon = 'icons/obj/inflatable.dmi' + icon_state = "folded_wall" + w_class = 3.0 + + attack_self(mob/user) + playsound(loc, 'sound/items/zip.ogg', 75, 1) + user << "\blue You inflate [src]." + var/obj/structure/inflatable/R = new /obj/structure/inflatable(user.loc) + src.transfer_fingerprints_to(R) + R.add_fingerprint(user) + del(src) + +/obj/structure/inflatable + name = "inflatable wall" + desc = "An inflated membrane. Do not puncture." + density = 1 + anchored = 1 + opacity = 0 + + icon = 'icons/obj/inflatable.dmi' + icon_state = "wall" + + var/health = 50.0 + + + New(location) + ..() + update_nearby_tiles(need_rebuild=1) + + Del() + update_nearby_tiles() + ..() + + proc/update_nearby_tiles(need_rebuild) //Copypasta from airlock code + if(!air_master) + return 0 + air_master.mark_for_update(get_turf(src)) + return 1 + + + + CanPass(atom/movable/mover, turf/target, height=0, air_group=0) + return 0 + + bullet_act(var/obj/item/projectile/Proj) + health -= Proj.damage + ..() + if(health <= 0) + deflate(1) + return + + + ex_act(severity) + switch(severity) + if(1.0) + del(src) + return + if(2.0) + deflate(1) + return + if(3.0) + if(prob(50)) + deflate(1) + return + + + blob_act() + deflate(1) + + + meteorhit() + //world << "glass at [x],[y],[z] Mhit" + deflate(1) + + attack_paw(mob/user as mob) + return attack_generic(user, 15) + + attack_hand(mob/user as mob) + add_fingerprint(user) + return + + + proc/attack_generic(mob/user as mob, damage = 0) //used by attack_alien, attack_animal, and attack_slime + health -= damage + if(health <= 0) + user.visible_message("[user] tears open [src]!") + deflate(1) + else //for nicer text~ + user.visible_message("[user] tears at [src]!") + + attack_alien(mob/user as mob) + if(islarva(user)) return + attack_generic(user, 15) + + attack_animal(mob/user as mob) + if(!isanimal(user)) return + var/mob/living/simple_animal/M = user + if(M.melee_damage_upper <= 0) return + attack_generic(M, M.melee_damage_upper) + + + attack_slime(mob/user as mob) + if(!isslimeadult(user)) return + attack_generic(user, rand(10, 15)) + + + attackby(obj/item/weapon/W as obj, mob/user as mob) + if(!istype(W)) return + + if (is_sharp(W)) + visible_message("\red [user] pierces [src] with [W]!") + deflate(1) + if(W.damtype == BRUTE || W.damtype == BURN) + hit(W.force) + ..() + return + + proc/hit(var/damage, var/sound_effect = 1) + health = max(0, health - damage) + if(sound_effect) + playsound(loc, 'sound/effects/Glasshit.ogg', 75, 1) + if(health <= 0) + deflate(1) + + + proc/deflate(var/violent=0) + playsound(loc, 'sound/machines/hiss.ogg', 75, 1) + if(violent) + visible_message("[src] rapidly deflates!") + var/obj/item/inflatable/torn/R = new /obj/item/inflatable/torn(loc) + src.transfer_fingerprints_to(R) + del(src) + else + //user << "\blue You slowly deflate the inflatable wall." + visible_message("[src] slowly deflates.") + spawn(50) + var/obj/item/inflatable/R = new /obj/item/inflatable(loc) + src.transfer_fingerprints_to(R) + del(src) + + verb/hand_deflate() + set name = "Deflate" + set category = "Object" + set src in oview(1) + + deflate() + +/obj/item/inflatable/door/ + name = "inflatable door" + desc = "A folded membrane which rapidly expands into a simple door on activation." + icon = 'icons/obj/inflatable.dmi' + icon_state = "folded_door" + + attack_self(mob/user) + playsound(loc, 'sound/items/zip.ogg', 75, 1) + user << "\blue You inflate [src]." + var/obj/structure/inflatable/door/R = new /obj/structure/inflatable/door(user.loc) + src.transfer_fingerprints_to(R) + R.add_fingerprint(user) + del(src) + +/obj/structure/inflatable/door //Based on mineral door code + name = "inflatable door" + density = 1 + anchored = 1 + opacity = 0 + + icon = 'icons/obj/inflatable.dmi' + icon_state = "door_closed" + + var/state = 0 //closed, 1 == open + var/isSwitchingStates = 0 + + //Bumped(atom/user) + // ..() + // if(!state) + // return TryToSwitchState(user) + // return + + attack_ai(mob/user as mob) //those aren't machinery, they're just big fucking slabs of a mineral + if(isAI(user)) //so the AI can't open it + return + else if(isrobot(user)) //but cyborgs can + if(get_dist(user,src) <= 1) //not remotely though + return TryToSwitchState(user) + + attack_paw(mob/user as mob) + return TryToSwitchState(user) + + attack_hand(mob/user as mob) + return TryToSwitchState(user) + + CanPass(atom/movable/mover, turf/target, height=0, air_group=0) + if(air_group) + return state + if(istype(mover, /obj/effect/beam)) + return !opacity + return !density + + proc/TryToSwitchState(atom/user) + if(isSwitchingStates) return + if(ismob(user)) + var/mob/M = user + if(world.time - user.last_bumped <= 60) return //NOTE do we really need that? + if(M.client) + if(iscarbon(M)) + var/mob/living/carbon/C = M + if(!C.handcuffed) + SwitchState() + else + SwitchState() + else if(istype(user, /obj/mecha)) + SwitchState() + + proc/SwitchState() + if(state) + Close() + else + Open() + update_nearby_tiles() + + proc/Open() + isSwitchingStates = 1 + //playsound(loc, 'sound/effects/stonedoor_openclose.ogg', 100, 1) + flick("door_opening",src) + sleep(10) + density = 0 + opacity = 0 + state = 1 + update_icon() + isSwitchingStates = 0 + + proc/Close() + isSwitchingStates = 1 + //playsound(loc, 'sound/effects/stonedoor_openclose.ogg', 100, 1) + flick("door_closing",src) + sleep(10) + density = 1 + opacity = 0 + state = 0 + update_icon() + isSwitchingStates = 0 + + update_icon() + if(state) + icon_state = "door_open" + else + icon_state = "door_closed" + + deflate(var/violent=0) + playsound(loc, 'sound/machines/hiss.ogg', 75, 1) + if(violent) + visible_message("[src] rapidly deflates!") + var/obj/item/inflatable/door/torn/R = new /obj/item/inflatable/door/torn(loc) + src.transfer_fingerprints_to(R) + del(src) + else + //user << "\blue You slowly deflate the inflatable wall." + visible_message("[src] slowly deflates.") + spawn(50) + var/obj/item/inflatable/door/R = new /obj/item/inflatable/door(loc) + src.transfer_fingerprints_to(R) + del(src) + + +/obj/item/inflatable/torn + name = "torn inflatable wall" + desc = "A folded membrane which rapidly expands into a large cubical shape on activation. It is too torn to be usable." + icon = 'icons/obj/inflatable.dmi' + icon_state = "folded_wall_torn" + + attack_self(mob/user) + user << "\blue The inflatable wall is too torn to be inflated!" + add_fingerprint(user) + +/obj/item/inflatable/door/torn + name = "torn inflatable door" + desc = "A folded membrane which rapidly expands into a simple door on activation. It is too torn to be usable." + icon = 'icons/obj/inflatable.dmi' + icon_state = "folded_door_torn" + + attack_self(mob/user) + user << "\blue The inflatable door is too torn to be inflated!" + add_fingerprint(user) + +/obj/item/weapon/storage/briefcase/inflatable + name = "inflatable barrier box" + desc = "Contains inflatable walls and doors." + icon_state = "inf_box" + item_state = "syringe_kit" + max_combined_w_class = 21 + + New() + ..() + new /obj/item/inflatable/door(src) + new /obj/item/inflatable/door(src) + new /obj/item/inflatable/door(src) + new /obj/item/inflatable(src) + new /obj/item/inflatable(src) + new /obj/item/inflatable(src) + new /obj/item/inflatable(src) \ No newline at end of file diff --git a/icons/obj/inflatable.dmi b/icons/obj/inflatable.dmi new file mode 100644 index 0000000000000000000000000000000000000000..d80e12b7077f69bfd4a215d43996bf559599af74 GIT binary patch literal 4598 zcmZ8lcQhQ#*Irii61-7fWrAW_x&+*&&-)KbI;s)p8MQMFwj${q5PK;007WvYN#0zYzd)7k&_bo zWJd=!f*B7ru?SFe@^|!e^$BqG_5uKc3+rC@QTB`9R+}6#zqj8OUv(Ge_nPTP=~Wy< z{w%433~%4odYA#F)~~)%Sm5SF<9LOS@T4j5k50{A5WeOP7dn zJef3emm9oiz!dsi!V)hm?u&7wS4)USq$)D z|9jJiV~f<~Ixf!a@u=3oS!iLq{Is6v-AE~uN|~4}ehW`BDsG+xy}Ce_Ph{lBfjh9X z`N=9#S8gJNi`m$hY{x2fFnJrsuSoZaVJPw?A;da@PNsGF9PqAd4ETW99;tW zu-Gp;!y1$X{rr1jz4Epe<{{AO<6W+_#Lb;7a`#-TUV;jYp3#>nqWP8`%E+bJc z7!QR;kjEJhcw)$++?^8}&Ot!09wtFrB2Y1@R}Uw)p?9J=$%pSSXrIC!%+^?R|8dyUE2P%D3}f+L0*u`;_vu`D}7}nUDhLxi}+;jxld<+0tYw3 zvTctuL)CG;*Y4zLp0t~X=4B_+;hjtLN?gl6#-57N=kt(=t2yi!oEwPZ*RHX2pX9Ug zsD+uhNffac^X*jP^6g|xqLS^q8)pEo2aUfBBz7kX>T9AxvD$z_tbBGaIqK+v7mem+ z`;}ts5GOT|_UM~f2|#&Fgz$jJWab=ykFl|LUu#|ev0+3x$LgB`VVP8`CXmfJZrkIC z26a3r4cLn_21ys1S>c@ue&!t}xg}d&AAiSAyaW@!R&U1@ubU zz-!C|`RLf#lr(h!bwcE({n76v&L&O%-(zEAz77p-4;E&Kc^Gbrdsm_cpbhH57OUrv z(!R&*f<4l){-f|8`tOY^@ZcWS{+}zwq+If#ke(jHRb-FE(=Z(5ZK9(z=%U*F`)mzr(+>te+)qJRD9 zkJ^Ic_Of_HyIJj(+4>);f6rs7kE+-kKYnDNqNlrvRj|&aYCVrVoOra+|7fF3e2N53 z2HvhJYLN&!u;v(;nOy(q`;jU1;od7L?nfh7o}2vxe%LpbGrkJ}(oq$4%Fp;`vI;$#oFbP9J)g3m3_GsDfcc54^e{-5-Op zzb^c}8RNLHb(qJZa6ob$^nv8jjM!!YRYb4?h4q7zC)Bp6fujaLE^^?YR&~tHr_nmW zd>J-KH7st(znlj@e;%G|W)<}ZX@VsCmYUsL?NzqhJK1*}>2oh}e!jubR6ria(7W{{ zfbKiSSZ)K%3GM@3AG4a>vx&dI3b6k?|&hBp6)ko&fpFhj`@5;J? z@;qxR%mI;&L*=7s1IVOJPUq2^a!5N*?t^G;Lpm|*Q(3F)_rK+}aV9TZ0KunI>Wnrv zHh`#*likg|r4|-e))y=Lj}dN$rp3!dU7dTki<3Y7f6)II zGh{OZ+7#H`AdhGc;M3Y zMy-M0H)nj#mLFnacKtZwTc)!B`x3cr=T?*ewN$y+jLHaw<|eSz=@jpy{R}yXi}j)U zDRVDfESgh^W`P#T>BY}>dYIxjv&4-NI3xO&KzqT+WMWTnXR*s%fj`%ld!K68yyE$@ zy6|gdh$6I=n$9%GA*e=H$dXj`w7Od; zUO{mZ6|C>}Yh14S&kiZfg+f{!$!wEqhG==|LP&k;%TPRIbb5bd~d-+d|9~O$ZX}| zn6$$yCuzI(2Q}7%ymDOoHnld*!dobuIa9GFC>;X9FtTzcN>&F@L&^?ASqgtE6tCa% z|4*9W;Vzua@?IoDODOknvxun39J7?H-A>L+*L}yrwVzvWYK?H&`wICztwU{)GN7)~ z$)EB!$CzdSkFQxV5K$OmkX=PlWtMnmA%Z`kuN=E0Y;Fqb;E*LPKCjS`glA>_B95pb}u?(0qPd8lJ6$heSU+aRAJYzFoo<0}pL=3g=38|W0gO+aUFCD2U}Bbt-odQa$z zC;w`P2xG3+ zdk7}{@y?2%=-cQuZHy-dvvY@wNp~&q=gt#BA<8m=J|*8#jr5%7e&@R1li6oWwSx{;W!%5K~G8dd#zN zI_LVNG83hqTi@Q^UW?Kv1Aw7p@i)YnBwg`eh{;-9ayEo1@{JI*FZK6_^FRrx-3Ppn zn$(P+%bS}YBl_x&uhyJiJ;VAzlEt3$!nfeh*_hXe0d-`Tho3Khda|;3!Rww)E@z|1 z0I?k&ilMio0@#H0r}kns5}$$73qg9?k1vVcFv-*hLz!(S2=I%S-d||zPVzQ?HO1uE zcKC9`jhP+qO((EJ+bCY{1cuS4rImSYt9UF4%MuD4V*PT!RC*H5L-X_S6 zYK_U9XNHuX3W7E;SzMP%hw;6{sb=GhxZk&RI56*;T9p{y~KTZO4l&)-n(^@W9JBkcYVbRUQ4a)Jea0v z@7>^X{4ioku+S+3)a$V)%i$Li?t0$M$ngQRqOAlP*N@OI=Ougk8g$^cHN)932vVj0 zc;K#cE?V)71ef8sC7eg-UBJN!EqKuc3UAm#A5tHy1%0aG;B3$ zl`#@fJCao_#)gv<)|@WN`q+*>AryUDZ-CSF^wOD0sAP^n|F*rx3|1OYKPocFZsOvl zX-<*JyWR5w)gV!af>Kj47|@D$e&T1g@CcE>jQk6aowUKlXJnGcu_hv4DoCGRIXOdY zMQFcgnQTV^3h+LK;89?^rU=oMs;`-NFz7$^WcD^~Fd|vax(+^nUxA_Q0jbMV`7Bn5 zOQ+dkcHr0huGpzV?$+>SZvt%`wdE`RjY-MZJYQSUqu00VHF^FrP4-Sy?WMrdI0(2x zK^%p{MLquFPT-7bY3?~aCrGi5h7(^Ue}(YCtF7jAXx?B^2;(?`HfUK`SJR9I)|=4_ zTHV(VlCX0EN=r5h^2@fXzV+KBXyrJU{4o2Hu8S`M-8FG9cHL@l)xOH;xExG8@U(#n zbvl3;)2|$S1A60SBYw8U6$3|bgyve|QS}75K{~Z09or@{=4r#c`o|Sowy7%A=Ysw} zEm8%GXt}GG%l`7U6S(=Vy7h-8z8}XkdFacNWl5Aro(=&hPKZAk0iEQ;D$BU*SzKhl za?4Kq7aW1BS9bIQo)%iF$_i16h=$RKG^|r$ zPCmO+L}yK$erf{sPmK3cXe)vMsV#U1ps^0b0^;Bsr??hT&&*)7l!I6W3~n1`YNK>B z7!z