mirror of
https://github.com/PolarisSS13/Polaris.git
synced 2025-12-25 01:22:24 +00:00
Merges the two meteor events into one, and now takes severity into consideration instead. Including the basic meteors there are also new types ranging from flaming to radioactive which may drop appropriate types of ore.
266 lines
7.0 KiB
Plaintext
266 lines
7.0 KiB
Plaintext
/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
|
|
|
|
attack_self(mob/user)
|
|
playsound(loc, 'sound/items/zip.ogg', 75, 1)
|
|
user << "<span class='notice'>You inflate [src].</span>"
|
|
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"
|
|
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
|
|
|
|
|
|
/obj/structure/inflatable/New(location)
|
|
..()
|
|
update_nearby_tiles(need_rebuild=1)
|
|
|
|
/obj/structure/inflatable/Destroy()
|
|
update_nearby_tiles()
|
|
..()
|
|
|
|
/obj/structure/inflatable/CanPass(atom/movable/mover, turf/target, height=0, air_group=0)
|
|
return 0
|
|
|
|
/obj/structure/inflatable/bullet_act(var/obj/item/projectile/Proj)
|
|
if(!(Proj.damage_type == BRUTE || Proj.damage_type == BURN))
|
|
return
|
|
|
|
health -= Proj.damage
|
|
..()
|
|
if(health <= 0)
|
|
deflate(1)
|
|
return
|
|
|
|
/obj/structure/inflatable/ex_act(severity)
|
|
switch(severity)
|
|
if(1.0)
|
|
qdel(src)
|
|
return
|
|
if(2.0)
|
|
deflate(1)
|
|
return
|
|
if(3.0)
|
|
if(prob(50))
|
|
deflate(1)
|
|
return
|
|
|
|
/obj/structure/inflatable/blob_act()
|
|
deflate(1)
|
|
|
|
/obj/structure/inflatable/attack_hand(mob/user as mob)
|
|
add_fingerprint(user)
|
|
return
|
|
|
|
/obj/structure/inflatable/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
|
if(!istype(W)) return
|
|
|
|
if (can_puncture(W))
|
|
visible_message("<span class='danger'>[user] pierces [src] with [W]!</span>")
|
|
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)
|
|
|
|
/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 << "<span class='notice'>You slowly deflate the inflatable wall.</span>"
|
|
visible_message("[src] slowly deflates.")
|
|
spawn(50)
|
|
var/obj/item/inflatable/R = new /obj/item/inflatable(loc)
|
|
src.transfer_fingerprints_to(R)
|
|
qdel(src)
|
|
|
|
/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
|
|
|
|
verbs -= /obj/structure/inflatable/verb/hand_deflate
|
|
deflate()
|
|
|
|
/obj/structure/inflatable/attack_generic(var/mob/user, var/damage, var/attack_verb)
|
|
health -= damage
|
|
user.do_attack_animation(src)
|
|
if(health <= 0)
|
|
user.visible_message("<span class='danger'>[user] [attack_verb] open the [src]!</span>")
|
|
spawn(1) deflate(1)
|
|
else
|
|
user.visible_message("<span class='danger'>[user] [attack_verb] at [src]!</span>")
|
|
return 1
|
|
|
|
/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 << "<span class='notice'>You inflate [src].</span>"
|
|
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"
|
|
density = 1
|
|
anchored = 1
|
|
opacity = 0
|
|
|
|
icon = 'icons/obj/inflatable.dmi'
|
|
icon_state = "door_closed"
|
|
|
|
var/state = 0 //closed, 1 == open
|
|
var/isSwitchingStates = 0
|
|
|
|
/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)
|
|
|
|
/obj/structure/inflatable/door/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/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()
|
|
|
|
/obj/structure/inflatable/door/proc/SwitchState()
|
|
if(state)
|
|
Close()
|
|
else
|
|
Open()
|
|
update_nearby_tiles()
|
|
|
|
/obj/structure/inflatable/door/proc/Open()
|
|
isSwitchingStates = 1
|
|
flick("door_opening",src)
|
|
sleep(10)
|
|
density = 0
|
|
opacity = 0
|
|
state = 1
|
|
update_icon()
|
|
isSwitchingStates = 0
|
|
|
|
/obj/structure/inflatable/door/proc/Close()
|
|
isSwitchingStates = 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)
|
|
src.transfer_fingerprints_to(R)
|
|
qdel(src)
|
|
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)
|
|
qdel(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 << "<span class='notice'>The inflatable wall is too torn to be inflated!</span>"
|
|
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 << "<span class='notice'>The inflatable door is too torn to be inflated!</span>"
|
|
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_storage_space = 28
|
|
can_hold = list(/obj/item/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)
|