mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2026-01-06 23:41:57 +00:00
Welding Kit Reagent Container (#11143)
This commit is contained in:
@@ -1,54 +0,0 @@
|
||||
/obj/item/weldpack
|
||||
name = "Welding kit"
|
||||
desc = "A heavy-duty, portable welding fluid carrier."
|
||||
slot_flags = SLOT_BACK
|
||||
icon = 'icons/obj/storage.dmi'
|
||||
icon_state = "welderpack"
|
||||
w_class = ITEMSIZE_LARGE
|
||||
var/max_fuel = 350
|
||||
drop_sound = 'sound/items/drop/backpack.ogg'
|
||||
pickup_sound = 'sound/items/pickup/backpack.ogg'
|
||||
|
||||
/obj/item/weldpack/New()
|
||||
var/datum/reagents/R = new/datum/reagents(max_fuel) //Lotsa refills
|
||||
reagents = R
|
||||
R.my_atom = src
|
||||
R.add_reagent(/decl/reagent/fuel, max_fuel)
|
||||
|
||||
/obj/item/weldpack/attackby(obj/item/W as obj, mob/user as mob)
|
||||
if(W.iswelder())
|
||||
var/obj/item/weldingtool/T = W
|
||||
if(T.welding & prob(50))
|
||||
message_admins("[key_name_admin(user)] triggered a fueltank explosion.")
|
||||
log_game("[key_name(user)] triggered a fueltank explosion.",ckey=key_name(user))
|
||||
to_chat(user, "<span class='danger'>That was stupid of you.</span>")
|
||||
explosion(get_turf(src),-1,0,2)
|
||||
if(src)
|
||||
qdel(src)
|
||||
return
|
||||
else
|
||||
if(T.welding)
|
||||
to_chat(user, "<span class='danger'>That was close!</span>")
|
||||
src.reagents.trans_to_obj(W, T.max_fuel)
|
||||
to_chat(user, "<span class='notice'>Welder refilled!</span>")
|
||||
playsound(src.loc, 'sound/effects/refill.ogg', 50, 1, -6)
|
||||
return
|
||||
to_chat(user, "<span class='warning'>The tank scoffs at your insolence. It only provides services to welders.</span>")
|
||||
return
|
||||
|
||||
/obj/item/weldpack/afterattack(obj/O as obj, mob/user as mob, proximity)
|
||||
if(!proximity) // this replaces and improves the get_dist(src,O) <= 1 checks used previously
|
||||
return
|
||||
if (istype(O, /obj/structure/reagent_dispensers/fueltank) && src.reagents.total_volume < max_fuel)
|
||||
O.reagents.trans_to_obj(src, max_fuel)
|
||||
to_chat(user, "<span class='notice'>You crack the cap off the top of the pack and fill it back up again from the tank.</span>")
|
||||
playsound(src.loc, 'sound/effects/refill.ogg', 50, 1, -6)
|
||||
return
|
||||
else if (istype(O, /obj/structure/reagent_dispensers/fueltank) && src.reagents.total_volume == max_fuel)
|
||||
to_chat(user, "<span class='warning'>The pack is already full!</span>")
|
||||
return
|
||||
|
||||
/obj/item/weldpack/examine(mob/user)
|
||||
..(user)
|
||||
to_chat(user, text("[icon2html(src, user)] [] units of fuel left!", src.reagents.total_volume))
|
||||
return
|
||||
@@ -101,9 +101,9 @@
|
||||
new /obj/item/weldingtool/largetank(src)
|
||||
new /obj/item/weldingtool/largetank(src)
|
||||
new /obj/item/weldingtool/largetank(src)
|
||||
new /obj/item/weldpack(src)
|
||||
new /obj/item/weldpack(src)
|
||||
new /obj/item/weldpack(src)
|
||||
new /obj/item/reagent_containers/weldpack(src)
|
||||
new /obj/item/reagent_containers/weldpack(src)
|
||||
new /obj/item/reagent_containers/weldpack(src)
|
||||
|
||||
/obj/structure/closet/secure_closet/engineering_personal
|
||||
name = "engineer's locker"
|
||||
|
||||
@@ -168,7 +168,7 @@ STOCK_ITEM_COMMON(weldgear, 2)
|
||||
if(prob(50))
|
||||
new /obj/item/clothing/head/welding(L)
|
||||
if(prob(50))
|
||||
new /obj/item/weldpack(L)
|
||||
new /obj/item/reagent_containers/weldpack(L)
|
||||
|
||||
STOCK_ITEM_COMMON(inflatable, 3)
|
||||
new /obj/item/storage/briefcase/inflatable(L)
|
||||
|
||||
@@ -342,7 +342,7 @@ var/list/worths = list(
|
||||
/obj/item/crowbar = 10,
|
||||
/obj/item/trap = 35,
|
||||
/obj/item/nullrod = 60,
|
||||
/obj/item/weldpack = 300,
|
||||
/obj/item/reagent_containers/weldpack = 300,
|
||||
/obj/item/circuitboard/aicore = 6000,
|
||||
/obj/item/circuitboard = 1000,
|
||||
//GRENADES,
|
||||
|
||||
64
code/modules/reagents/reagent_containers/welding_backpack.dm
Normal file
64
code/modules/reagents/reagent_containers/welding_backpack.dm
Normal file
@@ -0,0 +1,64 @@
|
||||
/obj/item/reagent_containers/weldpack
|
||||
name = "welding kit"
|
||||
desc = "A heavy-duty, portable welding fluid carrier."
|
||||
slot_flags = SLOT_BACK
|
||||
icon = 'icons/obj/contained_items/tools/welderpack.dmi'
|
||||
icon_state = "welderpack"
|
||||
item_state = "welderpack"
|
||||
contained_sprite = TRUE
|
||||
w_class = ITEMSIZE_LARGE
|
||||
volume = 350
|
||||
reagents_to_add = list(/decl/reagent/fuel = 350)
|
||||
amount_per_transfer_from_this = 30
|
||||
possible_transfer_amounts = list(30, 60, 120, 350)
|
||||
recyclable = FALSE
|
||||
drop_sound = 'sound/items/drop/backpack.ogg'
|
||||
pickup_sound = 'sound/items/pickup/backpack.ogg'
|
||||
|
||||
/obj/item/reagent_containers/weldpack/examine(mob/user, distance)
|
||||
. = ..()
|
||||
if(ishuman(loc) && user != loc) // what if we want to sneak some reagents out of somewhere?
|
||||
return
|
||||
if(reagents.total_volume)
|
||||
var/fuel_volume = REAGENT_VOLUME(reagents, /decl/reagent/fuel)
|
||||
if(!fuel_volume)
|
||||
fuel_volume = 0
|
||||
to_chat(user, SPAN_NOTICE("\The [src] has [reagents.total_volume]u of reagents in it, <b>[fuel_volume]u</b> of which is fuel."))
|
||||
else
|
||||
to_chat(user, SPAN_WARNING("\The [src] is empty!"))
|
||||
|
||||
/obj/item/reagent_containers/weldpack/attackby(obj/item/W, mob/user)
|
||||
if(W.iswrench())
|
||||
if(flags & OPENCONTAINER)
|
||||
flags &= ~OPENCONTAINER
|
||||
else
|
||||
flags = OPENCONTAINER
|
||||
playsound(src, W.usesound, 70)
|
||||
to_chat(user, SPAN_NOTICE("You wrench \the [src]'s fuel cap [(flags & OPENCONTAINER) ? "open" : "closed"]."))
|
||||
return
|
||||
else if(W.iswelder())
|
||||
var/obj/item/weldingtool/T = W
|
||||
var/fuel_volume = REAGENT_VOLUME(reagents, /decl/reagent/fuel)
|
||||
if(!fuel_volume)
|
||||
to_chat(user, SPAN_WARNING("\The [src] doesn't have any fuel in it!"))
|
||||
return
|
||||
var/tool_fuel_volume = REAGENT_VOLUME(T.reagents, /decl/reagent/fuel)
|
||||
if(!tool_fuel_volume)
|
||||
tool_fuel_volume = 0
|
||||
else if(tool_fuel_volume >= T.reagents.maximum_volume)
|
||||
to_chat(user, SPAN_WARNING("\The [T] is already fully fueled!"))
|
||||
return
|
||||
if(T.welding & prob(50))
|
||||
message_admins("[key_name_admin(user)] triggered a fueltank explosion.")
|
||||
log_game("[key_name(user)] triggered a fueltank explosion.",ckey=key_name(user))
|
||||
to_chat(user, SPAN_DANGER("That was stupid of you."))
|
||||
explosion(get_turf(src),-1,0,2)
|
||||
qdel(src)
|
||||
else
|
||||
if(T.welding)
|
||||
to_chat(user, SPAN_DANGER("That was close!"))
|
||||
reagents.trans_type_to(W, /decl/reagent/fuel, min(fuel_volume, T.reagents.maximum_volume - tool_fuel_volume))
|
||||
to_chat(user, SPAN_NOTICE("Welder refilled!"))
|
||||
playsound(loc, 'sound/effects/refill.ogg', 50, 1, -6)
|
||||
return
|
||||
return ..()
|
||||
Reference in New Issue
Block a user