mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-07-12 23:53:47 +01:00
Merge remote-tracking branch 'upstream/master' into ports-tailoring
This commit is contained in:
@@ -18,8 +18,8 @@
|
||||
/obj/effect/decal/cleanable/random
|
||||
name = "Random Mess"
|
||||
|
||||
/obj/effect/decal/cleanable/random/New()
|
||||
..()
|
||||
/obj/effect/decal/cleanable/random/Initialize(mapload)
|
||||
. = ..()
|
||||
var/list/list = subtypesof(/obj/effect/decal/cleanable) - list(/obj/effect/decal/cleanable/random,/obj/effect/decal/cleanable/cobweb,/obj/effect/decal/cleanable/cobweb2)
|
||||
var/T = pick(list)
|
||||
new T(loc)
|
||||
|
||||
@@ -123,6 +123,19 @@
|
||||
origin_tech = "biotech=2"
|
||||
stop_bleeding = 1800
|
||||
|
||||
/obj/item/stack/medical/bruise_pack/attackby(obj/item/I, mob/user, params)
|
||||
if(I.sharp)
|
||||
if(get_amount() < 2)
|
||||
to_chat(user, "<span class='warning'>You need at least two gauzes to do this!</span>")
|
||||
return
|
||||
new /obj/item/stack/sheet/cloth(user.drop_location())
|
||||
user.visible_message("[user] cuts [src] into pieces of cloth with [I].", \
|
||||
"<span class='notice'>You cut [src] into pieces of cloth with [I].</span>", \
|
||||
"<span class='italics'>You hear cutting.</span>")
|
||||
use(2)
|
||||
else
|
||||
return ..()
|
||||
|
||||
/obj/item/stack/medical/bruise_pack/attack(mob/living/M, mob/user)
|
||||
if(..())
|
||||
return 1
|
||||
|
||||
@@ -137,6 +137,44 @@ var/global/list/datum/stack_recipe/snow_recipes = list(
|
||||
..()
|
||||
recipes = sandstone_recipes
|
||||
|
||||
/*
|
||||
* Sandbags
|
||||
*/
|
||||
|
||||
/obj/item/stack/sheet/mineral/sandbags
|
||||
name = "sandbags"
|
||||
icon_state = "sandbags"
|
||||
singular_name = "sandbag"
|
||||
layer = LOW_ITEM_LAYER
|
||||
merge_type = /obj/item/stack/sheet/mineral/sandbags
|
||||
|
||||
GLOBAL_LIST_INIT(sandbag_recipes, list ( \
|
||||
new/datum/stack_recipe("sandbags", /obj/structure/barricade/sandbags, 1, time = 25, one_per_turf = 1, on_floor = 1), \
|
||||
))
|
||||
|
||||
/obj/item/stack/sheet/mineral/sandbags/New()
|
||||
recipes = GLOB.sandbag_recipes
|
||||
..()
|
||||
|
||||
/obj/item/emptysandbag
|
||||
name = "empty sandbag"
|
||||
desc = "A bag to be filled with sand."
|
||||
icon = 'icons/obj/items.dmi'
|
||||
icon_state = "sandbag"
|
||||
w_class = WEIGHT_CLASS_TINY
|
||||
|
||||
/obj/item/emptysandbag/attackby(obj/item/I, mob/user, params)
|
||||
if(istype(I, /obj/item/stack/ore/glass))
|
||||
var/obj/item/stack/ore/glass/G = I
|
||||
to_chat(user, "<span class='notice'>You fill the sandbag.</span>")
|
||||
var/obj/item/stack/sheet/mineral/sandbags/S = new /obj/item/stack/sheet/mineral/sandbags(drop_location())
|
||||
qdel(src)
|
||||
if(Adjacent(user) && !issilicon(user))
|
||||
user.put_in_hands(S)
|
||||
G.use(1)
|
||||
else
|
||||
return ..()
|
||||
|
||||
/obj/item/stack/sheet/mineral/diamond
|
||||
name = "diamond"
|
||||
icon_state = "sheet-diamond"
|
||||
|
||||
@@ -221,6 +221,7 @@ var/global/list/datum/stack_recipe/cloth_recipes = list ( \
|
||||
new/datum/stack_recipe("improvised gauze", /obj/item/stack/medical/bruise_pack/improvised, 1, 2, 6), \
|
||||
new/datum/stack_recipe("rag", /obj/item/reagent_containers/glass/rag, 1), \
|
||||
new/datum/stack_recipe("bedsheet", /obj/item/bedsheet, 3), \
|
||||
new/datum/stack_recipe("empty sandbag", /obj/item/emptysandbag, 4), \
|
||||
null, \
|
||||
new/datum/stack_recipe("fingerless gloves", /obj/item/clothing/gloves/fingerless, 1), \
|
||||
new/datum/stack_recipe("white gloves", /obj/item/clothing/gloves/color/white, 3), \
|
||||
|
||||
@@ -299,7 +299,7 @@
|
||||
/obj/effect/decal/cleanable/ash/snappop_phoenix
|
||||
var/respawn_time = 300
|
||||
|
||||
/obj/effect/decal/cleanable/ash/snappop_phoenix/New()
|
||||
/obj/effect/decal/cleanable/ash/snappop_phoenix/Initialize(mapload)
|
||||
. = ..()
|
||||
addtimer(CALLBACK(src, .proc/respawn), respawn_time)
|
||||
|
||||
|
||||
@@ -1059,6 +1059,15 @@
|
||||
desc = "A colorful cardboard box for the clown"
|
||||
icon_state = "box_clown"
|
||||
|
||||
/obj/item/storage/box/emptysandbags
|
||||
name = "box of empty sandbags"
|
||||
|
||||
/obj/item/storage/box/emptysandbags/New()
|
||||
..()
|
||||
contents = list()
|
||||
for(var/i in 1 to 7)
|
||||
new /obj/item/emptysandbag(src)
|
||||
|
||||
/obj/item/storage/box/rndboards
|
||||
name = "the Liberator's legacy"
|
||||
desc = "A box containing a gift for worthy golems."
|
||||
|
||||
@@ -48,38 +48,38 @@
|
||||
return
|
||||
|
||||
if(!on)
|
||||
turn_on()
|
||||
turn_on(user)
|
||||
to_chat(user, "<span class='notice'>You turn the jetpack on.</span>")
|
||||
else
|
||||
turn_off()
|
||||
turn_off(user)
|
||||
to_chat(user, "<span class='notice'>You turn the jetpack off.</span>")
|
||||
for(var/X in actions)
|
||||
var/datum/action/A = X
|
||||
A.UpdateButtonIcon()
|
||||
|
||||
|
||||
/obj/item/tank/jetpack/proc/turn_on()
|
||||
/obj/item/tank/jetpack/proc/turn_on(mob/user)
|
||||
on = TRUE
|
||||
icon_state = "[initial(icon_state)]-on"
|
||||
ion_trail.start()
|
||||
|
||||
/obj/item/tank/jetpack/proc/turn_off()
|
||||
/obj/item/tank/jetpack/proc/turn_off(mob/user)
|
||||
on = FALSE
|
||||
stabilizers = FALSE
|
||||
icon_state = initial(icon_state)
|
||||
ion_trail.stop()
|
||||
|
||||
|
||||
/obj/item/tank/jetpack/proc/allow_thrust(num, mob/living/user as mob)
|
||||
/obj/item/tank/jetpack/proc/allow_thrust(num, mob/living/user)
|
||||
if(!on)
|
||||
return 0
|
||||
if((num < 0.005 || air_contents.total_moles() < num))
|
||||
turn_off()
|
||||
turn_off(user)
|
||||
return 0
|
||||
|
||||
var/datum/gas_mixture/removed = air_contents.remove(num)
|
||||
if(removed.total_moles() < 0.005)
|
||||
turn_off()
|
||||
turn_off(user)
|
||||
return 0
|
||||
|
||||
var/turf/T = get_turf(user)
|
||||
@@ -163,15 +163,65 @@
|
||||
to_chat(user, "<span class='danger'>The meter on [src] indicates you are almost out of air!</span>")
|
||||
playsound(user, 'sound/effects/alert.ogg', 50, 1)
|
||||
|
||||
/obj/item/tank/jetpack/carbondioxide/mining
|
||||
name = "mining jetpack"
|
||||
/obj/item/tank/jetpack/suit
|
||||
name = "hardsuit jetpack upgrade"
|
||||
desc = "A modular, compact set of thrusters designed to integrate with a hardsuit. It is fueled by a tank inserted into the suit's storage compartment."
|
||||
icon_state = "jetpack-mining"
|
||||
item_state = "jetpack-mining"
|
||||
item_state = "jetpack-black"
|
||||
origin_tech = "materials=4;magnets=4;engineering=5"
|
||||
desc = "A tank of compressed carbon dioxide for miners to use as propulsion in local space. The compact size allows for easy storage at the cost of capacity."
|
||||
volume = 40
|
||||
throw_range = 7
|
||||
w_class = WEIGHT_CLASS_NORMAL //same as syndie harness
|
||||
w_class = WEIGHT_CLASS_NORMAL
|
||||
actions_types = list(/datum/action/item_action/toggle_jetpack, /datum/action/item_action/jetpack_stabilization)
|
||||
volume = 1
|
||||
slot_flags = null
|
||||
var/datum/gas_mixture/temp_air_contents
|
||||
var/obj/item/tank/tank = null
|
||||
var/mob/living/carbon/human/cur_user
|
||||
|
||||
/obj/item/tank/jetpack/suit/New()
|
||||
..()
|
||||
STOP_PROCESSING(SSobj, src)
|
||||
temp_air_contents = air_contents
|
||||
|
||||
/obj/item/tank/jetpack/suit/attack_self()
|
||||
return
|
||||
|
||||
/obj/item/tank/jetpack/suit/cycle(mob/user)
|
||||
if(!istype(loc, /obj/item/clothing/suit/space/hardsuit))
|
||||
to_chat(user, "<span class='warning'>[src] must be connected to a hardsuit!</span>")
|
||||
return
|
||||
|
||||
var/mob/living/carbon/human/H = user
|
||||
if(!istype(H.s_store, /obj/item/tank))
|
||||
to_chat(user, "<span class='warning'>You need a tank in your suit storage!</span>")
|
||||
return
|
||||
..()
|
||||
|
||||
/obj/item/tank/jetpack/suit/turn_on(mob/user)
|
||||
if(!istype(loc, /obj/item/clothing/suit/space/hardsuit) || !ishuman(loc.loc) || loc.loc != user)
|
||||
return
|
||||
var/mob/living/carbon/human/H = user
|
||||
tank = H.s_store
|
||||
air_contents = tank.air_contents
|
||||
START_PROCESSING(SSobj, src)
|
||||
cur_user = user
|
||||
..()
|
||||
|
||||
/obj/item/tank/jetpack/suit/turn_off(mob/user)
|
||||
tank = null
|
||||
air_contents = temp_air_contents
|
||||
STOP_PROCESSING(SSobj, src)
|
||||
cur_user = null
|
||||
..()
|
||||
|
||||
/obj/item/tank/jetpack/suit/process()
|
||||
if(!istype(loc, /obj/item/clothing/suit/space/hardsuit) || !ishuman(loc.loc))
|
||||
turn_off(cur_user)
|
||||
return
|
||||
var/mob/living/carbon/human/H = loc.loc
|
||||
if(!tank || tank != H.s_store)
|
||||
turn_off(cur_user)
|
||||
return
|
||||
..()
|
||||
|
||||
/obj/item/tank/jetpack/rig
|
||||
name = "jetpack"
|
||||
@@ -182,7 +232,7 @@
|
||||
to_chat(usr, "It's a jetpack. If you can see this, report it on the bug tracker.")
|
||||
return 0
|
||||
|
||||
/obj/item/tank/jetpack/rig/allow_thrust(num, mob/living/user as mob)
|
||||
/obj/item/tank/jetpack/rig/allow_thrust(num, mob/living/user)
|
||||
if(!on)
|
||||
return 0
|
||||
|
||||
@@ -191,7 +241,7 @@
|
||||
|
||||
var/datum/gas_mixture/removed = holder.air_supply.air_contents.remove(num)
|
||||
if(removed.total_moles() < 0.005)
|
||||
turn_off()
|
||||
turn_off(user)
|
||||
return 0
|
||||
|
||||
var/turf/T = get_turf(user)
|
||||
|
||||
Reference in New Issue
Block a user