diff --git a/code/game/objects/structures/inflatable.dm b/code/game/objects/structures/inflatable.dm
index 14b51d03498..17978724c34 100644
--- a/code/game/objects/structures/inflatable.dm
+++ b/code/game/objects/structures/inflatable.dm
@@ -5,13 +5,13 @@
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)
- qdel(src)
+/obj/item/inflatable/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)
+ qdel(src)
/obj/structure/inflatable
name = "inflatable wall"
@@ -25,131 +25,130 @@
var/health = 50.0
+/obj/structure/inflatable/New(location)
+ ..()
+ air_update_turf(1)
- New(location)
- ..()
- air_update_turf()
+/obj/structure/inflatable/Destroy()
+ air_update_turf(1)
+ return ..()
- Destroy()
- air_update_turf()
- return ..()
+/obj/structure/inflatable/CanPass(atom/movable/mover, turf/target, height=0, air_group=0)
+ return 0
+
+/obj/structure/inflatable/CanAtmosPass(turf/T)
+ return !density
- CanPass(atom/movable/mover, turf/target, height=0, air_group=0)
- return 0
+/obj/structure/inflatable/bullet_act(var/obj/item/projectile/Proj)
+ health -= Proj.damage
+ ..()
+ if(health <= 0)
+ deflate(1)
+ return
- bullet_act(var/obj/item/projectile/Proj)
- health -= Proj.damage
- ..()
- if(health <= 0)
+/obj/structure/inflatable/ex_act(severity)
+ switch(severity)
+ if(1.0)
+ qdel(src)
+ return
+ if(2.0)
deflate(1)
- return
-
-
- ex_act(severity)
- switch(severity)
- if(1.0)
- qdel(src)
- return
- if(2.0)
+ return
+ if(3.0)
+ if(prob(50))
deflate(1)
return
- if(3.0)
- if(prob(50))
- deflate(1)
- return
+/obj/structure/inflatable/blob_act()
+ deflate(1)
- blob_act()
+/obj/structure/inflatable/attack_hand(mob/user as mob)
+ add_fingerprint(user)
+ return
+
+/obj/structure/inflatable/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]!")
+
+/obj/structure/inflatable/attack_alien(mob/user as mob)
+ if(islarva(user))
+ return
+ attack_generic(user, 15)
+
+/obj/structure/inflatable/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)
+
+/obj/structure/inflatable/attack_slime(mob/user as mob)
+ var/mob/living/carbon/slime/S = user
+ if (!S.is_adult)
+ return
+ attack_generic(user, rand(10, 15))
+
+/obj/structure/inflatable/attackby(obj/item/weapon/W as obj, mob/user as mob, params)
+ if(!istype(W))
+ return
+ if (can_puncture(W))
+ visible_message("\red [user] pierces [src] with [W]!")
+ deflate(1)
+ if(W.damtype == BRUTE || W.damtype == BURN)
+ hit(W.force)
+ ..()
+ return
+
+/obj/structure/inflatable/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)
- 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)
- var/mob/living/carbon/slime/S = user
- if (!S.is_adult)
- return
- attack_generic(user, rand(10, 15))
-
-
- attackby(obj/item/weapon/W as obj, mob/user as mob, params)
- if(!istype(W)) return
-
- if (can_puncture(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)
+/obj/structure/inflatable/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)
+ qdel(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)
qdel(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)
- qdel(src)
- verb/hand_deflate()
- set name = "Deflate"
- set category = "Object"
- set src in oview(1)
+/obj/structure/inflatable/verb/hand_deflate()
+ set name = "Deflate"
+ set category = "Object"
+ set src in oview(1)
- if(isobserver(usr)) //to stop ghosts from deflating
- return
+ if(usr.stat || usr.restrained())
+ return
- deflate()
+ deflate()
-/obj/item/inflatable/door/
+/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)
- qdel(src)
+/obj/item/inflatable/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)
+ qdel(src)
/obj/structure/inflatable/door //Based on mineral door code
name = "inflatable door"
@@ -163,94 +162,91 @@
var/state = 0 //closed, 1 == open
var/isSwitchingStates = 0
- //Bumped(atom/user)
- // ..()
- // if(!state)
- // return TryToSwitchState(user)
- // return
+/obj/structure/inflatable/door/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_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)
+/obj/structure/inflatable/door/attack_hand(mob/user as mob)
+ return TryToSwitchState(user)
- attack_hand(mob/user as mob)
- return TryToSwitchState(user)
+/obj/structure/inflatable/door/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
+
+/obj/structure/inflatable/door/CanAtmosPass(turf/T)
+ return !density
- 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
+/obj/structure/inflatable/door/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 if(istype(user, /obj/mecha))
- SwitchState()
+ else
+ SwitchState()
+ else if(istype(user, /obj/mecha))
+ SwitchState()
- proc/SwitchState()
- if(state)
- Close()
- else
- Open()
- air_update_turf()
-
- 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
+/obj/structure/inflatable/door/proc/SwitchState()
+ if(state)
+ Close()
+ else
+ Open()
+ air_update_turf(1)
+/obj/structure/inflatable/door/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()
- if(state)
- icon_state = "door_open"
- else
- icon_state = "door_closed"
+ isSwitchingStates = 0
- 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)
- qdel(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)
- qdel(src)
+/obj/structure/inflatable/door/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
+/obj/structure/inflatable/door/update_icon()
+ if(state)
+ icon_state = "door_open"
+ else
+ icon_state = "door_closed"
+
+/obj/structure/inflatable/door/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)
+ else
+ visible_message("[src] slowly deflates.")
+ spawn(50)
+ var/obj/item/inflatable/door/R = new /obj/item/inflatable/door(loc)
+
+ src.transfer_fingerprints_to(R)
+ air_update_turf(1)
+ qdel(src)
/obj/item/inflatable/torn
name = "torn inflatable wall"
@@ -258,9 +254,9 @@
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/torn/attack_self(mob/user)
+ user << "The inflatable wall is too torn to be inflated!"
+ add_fingerprint(user)
/obj/item/inflatable/door/torn
name = "torn inflatable door"
@@ -268,9 +264,9 @@
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/inflatable/door/torn/attack_self(mob/user)
+ user << "The inflatable door is too torn to be inflated!"
+ add_fingerprint(user)
/obj/item/weapon/storage/briefcase/inflatable
name = "inflatable barrier box"
@@ -280,12 +276,12 @@
max_combined_w_class = 21
w_class = 3
- 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
+/obj/item/weapon/storage/briefcase/inflatable/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)