mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-25 04:57:12 +01:00
Merge branch 'master' into admin_interact
This commit is contained in:
@@ -750,7 +750,7 @@ steam.start() -- spawns the effect
|
||||
var/obj/effect/effect/ion_trails/I = new /obj/effect/effect/ion_trails(src.oldposition)
|
||||
I.dir = src.holder.dir
|
||||
flick("ion_fade", I)
|
||||
I.icon_state = "blank"
|
||||
I.icon_state = ""
|
||||
spawn( 20 )
|
||||
if(I)
|
||||
I.delete()
|
||||
@@ -812,8 +812,8 @@ steam.start() -- spawns the effect
|
||||
II.dir = src.holder.dir
|
||||
flick("ion_fade", I)
|
||||
flick("ion_fade", II)
|
||||
I.icon_state = "blank"
|
||||
II.icon_state = "blank"
|
||||
I.icon_state = ""
|
||||
II.icon_state = ""
|
||||
spawn( 20 )
|
||||
if(I) I.delete()
|
||||
if(II) II.delete()
|
||||
|
||||
@@ -77,7 +77,7 @@
|
||||
drawtype = temp
|
||||
update_window(usr)
|
||||
|
||||
/obj/item/toy/crayon/afterattack(atom/target, mob/user as mob, proximity)
|
||||
/obj/item/toy/crayon/afterattack(atom/target, mob/user, proximity)
|
||||
if(!proximity) return
|
||||
if(is_type_in_list(target,validSurfaces))
|
||||
var/temp = "rune"
|
||||
@@ -95,17 +95,22 @@
|
||||
if(!uses)
|
||||
to_chat(user, "<span class='danger'>You used up your [name]!</span>")
|
||||
qdel(src)
|
||||
return
|
||||
|
||||
/obj/item/toy/crayon/attack(mob/M as mob, mob/user as mob)
|
||||
/obj/item/toy/crayon/attack(mob/M, mob/user)
|
||||
var/huffable = istype(src,/obj/item/toy/crayon/spraycan)
|
||||
if(M == user)
|
||||
to_chat(user, "You take a [huffable ? "huff" : "bite"] of the [name]. Delicious!")
|
||||
if(ishuman(user))
|
||||
var/mob/living/carbon/human/H = user
|
||||
if(!H.check_has_mouth())
|
||||
to_chat(user, "<span class='warning'>You do not have a mouth!</span>")
|
||||
return
|
||||
playsound(loc, 'sound/items/eatfood.ogg', 50, 0)
|
||||
to_chat(user, "<span class='notice'>You take a [huffable ? "huff" : "bite"] of the [name]. Delicious!</span>")
|
||||
user.nutrition += 5
|
||||
if(uses)
|
||||
uses -= 5
|
||||
if(uses <= 0)
|
||||
to_chat(user, "<span class='danger'>There is no more of [name] left!</span>")
|
||||
to_chat(user, "<span class='warning'>There is no more of [name] left!</span>")
|
||||
qdel(src)
|
||||
else
|
||||
..()
|
||||
|
||||
@@ -151,7 +151,7 @@
|
||||
for(var/mob/O in viewers(usr))
|
||||
O.show_message("\red \the [src] rattles and prints out a sheet of paper.", 1)
|
||||
|
||||
playsound(loc, "sound/goonstation/machines/printer_thermal.ogg", 50, 1)
|
||||
playsound(loc, 'sound/goonstation/machines/printer_thermal.ogg', 50, 1)
|
||||
sleep(10)
|
||||
|
||||
var/obj/item/weapon/paper/P = new(usr.loc)
|
||||
|
||||
@@ -25,10 +25,7 @@
|
||||
ui_interact(user)
|
||||
|
||||
/obj/item/device/guitar/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1)
|
||||
if(!user)
|
||||
return
|
||||
|
||||
if(!isliving(user) || user.stat || user.restrained() || user.lying)
|
||||
if(!isliving(user) || user.incapacitated())
|
||||
return
|
||||
|
||||
song.ui_interact(user, ui_key, ui, force_open)
|
||||
|
||||
@@ -11,11 +11,16 @@
|
||||
var/obj/item/device/radio/radio
|
||||
var/looking_for_personality = 0
|
||||
var/mob/living/silicon/pai/pai
|
||||
var/list/faction = list("neutral") // The factions the pAI will inherit from the card
|
||||
|
||||
/obj/item/device/paicard/syndicate
|
||||
name = "syndicate personal AI device"
|
||||
faction = list("syndicate")
|
||||
|
||||
/obj/item/device/paicard/relaymove(var/mob/user, var/direction)
|
||||
if(user.stat || user.stunned)
|
||||
return
|
||||
var/obj/item/weapon/rig/rig = src.get_rig()
|
||||
var/obj/item/weapon/rig/rig = get_rig()
|
||||
if(istype(rig))
|
||||
rig.forced_move(direction, user)
|
||||
|
||||
@@ -260,7 +265,7 @@
|
||||
to_chat(usr, "\red The request system is currently offline. Please wait another [cooldown_time] seconds.")
|
||||
return
|
||||
last_request = world.time / 10
|
||||
src.looking_for_personality = 1
|
||||
looking_for_personality = 1
|
||||
paiController.findPAI(src, usr)
|
||||
if(href_list["wipe"])
|
||||
var/confirm = input("Are you CERTAIN you wish to delete the current personality? This action cannot be undone.", "Personality Wipe") in list("Yes", "No")
|
||||
@@ -297,33 +302,33 @@
|
||||
// WIRE_TRANSMIT = 4
|
||||
|
||||
/obj/item/device/paicard/proc/setPersonality(mob/living/silicon/pai/personality)
|
||||
src.pai = personality
|
||||
src.overlays += "pai-happy"
|
||||
pai = personality
|
||||
overlays += "pai-happy"
|
||||
|
||||
/obj/item/device/paicard/proc/removePersonality()
|
||||
src.pai = null
|
||||
src.overlays.Cut()
|
||||
src.overlays += "pai-off"
|
||||
pai = null
|
||||
overlays.Cut()
|
||||
overlays += "pai-off"
|
||||
|
||||
/obj/item/device/paicard
|
||||
var/current_emotion = 1
|
||||
/obj/item/device/paicard/proc/setEmotion(var/emotion)
|
||||
if(pai)
|
||||
src.overlays.Cut()
|
||||
overlays.Cut()
|
||||
switch(emotion)
|
||||
if(1) src.overlays += "pai-happy"
|
||||
if(2) src.overlays += "pai-cat"
|
||||
if(3) src.overlays += "pai-extremely-happy"
|
||||
if(4) src.overlays += "pai-face"
|
||||
if(5) src.overlays += "pai-laugh"
|
||||
if(6) src.overlays += "pai-off"
|
||||
if(7) src.overlays += "pai-sad"
|
||||
if(8) src.overlays += "pai-angry"
|
||||
if(9) src.overlays += "pai-what"
|
||||
if(1) overlays += "pai-happy"
|
||||
if(2) overlays += "pai-cat"
|
||||
if(3) overlays += "pai-extremely-happy"
|
||||
if(4) overlays += "pai-face"
|
||||
if(5) overlays += "pai-laugh"
|
||||
if(6) overlays += "pai-off"
|
||||
if(7) overlays += "pai-sad"
|
||||
if(8) overlays += "pai-angry"
|
||||
if(9) overlays += "pai-what"
|
||||
current_emotion = emotion
|
||||
|
||||
/obj/item/device/paicard/proc/alertUpdate()
|
||||
var/turf/T = get_turf_or_move(src.loc)
|
||||
var/turf/T = get_turf_or_move(loc)
|
||||
for(var/mob/M in viewers(T))
|
||||
M.show_message("\blue [src] flashes a message across its screen, \"Additional personalities available for download.\"", 3, "\blue [src] bleeps electronically.", 2)
|
||||
|
||||
|
||||
@@ -231,7 +231,7 @@
|
||||
return
|
||||
|
||||
to_chat(usr, "<span class='notice'>Transcript printed.</span>")
|
||||
playsound(loc, "sound/goonstation/machines/printer_thermal.ogg", 50, 1)
|
||||
playsound(loc, 'sound/goonstation/machines/printer_thermal.ogg', 50, 1)
|
||||
var/obj/item/weapon/paper/P = new /obj/item/weapon/paper(get_turf(src))
|
||||
var/t1 = "<B>Transcript:</B><BR><BR>"
|
||||
for(var/i = 1, mytape.storedinfo.len >= i, i++)
|
||||
|
||||
@@ -30,10 +30,7 @@
|
||||
ui_interact(user)
|
||||
|
||||
/obj/item/device/violin/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1)
|
||||
if(!user)
|
||||
return
|
||||
|
||||
if(!isliving(user) || user.stat || user.restrained() || user.lying)
|
||||
if(!isliving(user) || user.incapacitated())
|
||||
return
|
||||
|
||||
song.ui_interact(user, ui_key, ui, force_open)
|
||||
|
||||
@@ -7,7 +7,7 @@ RCD
|
||||
/obj/item/weapon/rcd
|
||||
name = "rapid-construction-device (RCD)"
|
||||
desc = "A device used to rapidly build and deconstruct walls and floors."
|
||||
icon = 'icons/obj/items.dmi'
|
||||
icon = 'icons/obj/tools.dmi'
|
||||
icon_state = "rcd"
|
||||
opacity = 0
|
||||
density = 0
|
||||
@@ -28,6 +28,7 @@ RCD
|
||||
var/canRwall = 0
|
||||
var/menu = 1
|
||||
var/door_type = /obj/machinery/door/airlock
|
||||
var/door_name = "Airlock"
|
||||
req_access = list(access_engine)
|
||||
var/list/door_accesses = list()
|
||||
var/list/door_accesses_list = list()
|
||||
@@ -85,7 +86,7 @@ RCD
|
||||
/obj/item/weapon/rcd/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1, var/datum/topic_state/state = inventory_state)
|
||||
ui = nanomanager.try_update_ui(user, src, ui_key, ui, force_open)
|
||||
if(!ui)
|
||||
ui = new(user, src, ui_key, "rcd.tmpl", "[name]", 400, 400, state = state)
|
||||
ui = new(user, src, ui_key, "rcd.tmpl", "[name]", 450, 400, state = state)
|
||||
ui.open()
|
||||
ui.set_auto_update(1)
|
||||
|
||||
@@ -93,6 +94,7 @@ RCD
|
||||
var/data[0]
|
||||
data["mode"] = mode
|
||||
data["door_type"] = door_type
|
||||
data["door_name"] = door_name
|
||||
data["menu"] = menu
|
||||
data["matter"] = matter
|
||||
data["max_matter"] = max_matter
|
||||
@@ -164,6 +166,11 @@ RCD
|
||||
door_accesses_list[++door_accesses_list.len] = list("name" = get_access_desc(access), "id" = access, "enabled" = (access in door_accesses))
|
||||
. = 1
|
||||
|
||||
if(href_list["choice"] && !locked)
|
||||
var/temp_t = sanitize(copytext(input("Enter a custom Airlock Name.","Airlock Name"),1,MAX_MESSAGE_LEN))
|
||||
if(temp_t)
|
||||
door_name = temp_t
|
||||
|
||||
/obj/item/weapon/rcd/proc/activate()
|
||||
playsound(loc, 'sound/items/Deconstruct.ogg', 50, 1)
|
||||
|
||||
@@ -207,6 +214,7 @@ RCD
|
||||
if(!useResource(10, user)) return 0
|
||||
activate()
|
||||
var/obj/machinery/door/airlock/T = new door_type(A)
|
||||
T.name = door_name
|
||||
T.autoclose = 1
|
||||
if(one_access)
|
||||
T.req_one_access = door_accesses.Copy()
|
||||
|
||||
@@ -6,8 +6,8 @@ RSF
|
||||
/obj/item/weapon/rsf
|
||||
name = "\improper Rapid-Service-Fabricator"
|
||||
desc = "A device used to rapidly deploy service items."
|
||||
icon = 'icons/obj/items.dmi'
|
||||
icon_state = "rcd"
|
||||
icon = 'icons/obj/tools.dmi'
|
||||
icon_state = "rsf"
|
||||
opacity = 0
|
||||
density = 0
|
||||
anchored = 0.0
|
||||
|
||||
@@ -78,7 +78,7 @@
|
||||
species_hair = hair_styles_list
|
||||
var/h_new_style = input(user, "Select a hair style", "Grooming") as null|anything in species_hair
|
||||
user.visible_message("<span class='notice'>[user] starts cutting [M]'s hair!</span>", "<span class='notice'>You start cutting [M]'s hair!</span>") //arguments for this are: 1. what others see 2. what the user sees. --Fixed grammar, (TGameCo)
|
||||
playsound(loc, "sound/goonstation/misc/Scissor.ogg", 100, 1)
|
||||
playsound(loc, 'sound/goonstation/misc/Scissor.ogg', 100, 1)
|
||||
if(do_after(user, 50, target = H)) //this is the part that adds a delay. delay is in deciseconds. --Made it 5 seconds, because hair isn't cut in one second in real life, and I want at least a little bit longer time, (TGameCo)
|
||||
if(!(M in view(1))) //Adjacency test
|
||||
user.visible_message("<span class='notice'>[user] stops cutting [M]'s hair.</span>", "<span class='notice'>You stop cutting [M]'s hair.</span>")
|
||||
@@ -111,9 +111,9 @@
|
||||
if(!is_cutting)
|
||||
is_cutting = 1
|
||||
user.visible_message("<span class='notice'>[user] starts cutting [M]'s hair!</span>", "<span class='notice'>You start cutting [M]'s hair!</span>")
|
||||
playsound(loc, "sound/goonstation/misc/Scissor.ogg", 100, 1)
|
||||
playsound(loc, 'sound/goonstation/misc/Scissor.ogg', 100, 1)
|
||||
if(do_after(user, 50, target = H))
|
||||
playsound(loc, "sound/weapons/bladeslice.ogg", 50, 1, -1)
|
||||
playsound(loc, 'sound/weapons/bladeslice.ogg', 50, 1, -1)
|
||||
user.visible_message("<span class='danger'>[user] abruptly stops cutting [M]'s hair and slices their throat!</span>", "<span class='danger'>You stop cutting [M]'s hair and slice their throat!</span>") //Just a little off the top.
|
||||
H.AdjustLoseBreath(10) //30 Oxy damage over time
|
||||
H.apply_damage(18, BRUTE, "head", sharp =1, edge =1, used_weapon = "scissors")
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
materials = list(MAT_METAL = 500)
|
||||
origin_tech = "combat=1"
|
||||
attack_verb = list("robusted")
|
||||
hitsound = "sound/weapons/smash.ogg"
|
||||
hitsound = 'sound/weapons/smash.ogg'
|
||||
|
||||
New()
|
||||
..()
|
||||
|
||||
@@ -184,7 +184,6 @@
|
||||
name = "vox specialized nitrogen tank"
|
||||
desc = "A high-tech nitrogen tank designed specifically for Vox."
|
||||
icon_state = "emergency_vox"
|
||||
item_state = "emergency_vox"
|
||||
volume = 25
|
||||
|
||||
/obj/item/weapon/tank/emergency_oxygen/vox/New()
|
||||
|
||||
@@ -12,47 +12,42 @@
|
||||
* Revolver Conversion Kit
|
||||
*/
|
||||
|
||||
/*
|
||||
* Wrench
|
||||
*/
|
||||
//Wrench
|
||||
/obj/item/weapon/wrench
|
||||
name = "wrench"
|
||||
desc = "A wrench with common uses. Can be found in your hand."
|
||||
icon = 'icons/obj/items.dmi'
|
||||
icon = 'icons/obj/tools.dmi'
|
||||
icon_state = "wrench"
|
||||
flags = CONDUCT
|
||||
slot_flags = SLOT_BELT
|
||||
force = 5.0
|
||||
throwforce = 7.0
|
||||
force = 5
|
||||
throwforce = 7
|
||||
w_class = 2
|
||||
materials = list(MAT_METAL=150)
|
||||
origin_tech = "materials=1;engineering=1"
|
||||
attack_verb = list("bashed", "battered", "bludgeoned", "whacked")
|
||||
|
||||
|
||||
/*
|
||||
* Screwdriver
|
||||
*/
|
||||
//Screwdriver
|
||||
/obj/item/weapon/screwdriver
|
||||
name = "screwdriver"
|
||||
desc = "You can be totally screwy with this."
|
||||
icon = 'icons/obj/items.dmi'
|
||||
icon = 'icons/obj/tools.dmi'
|
||||
icon_state = "screwdriver"
|
||||
flags = CONDUCT
|
||||
slot_flags = SLOT_BELT
|
||||
force = 5.0
|
||||
force = 5
|
||||
w_class = 1
|
||||
throwforce = 5.0
|
||||
throwforce = 5
|
||||
throw_speed = 3
|
||||
throw_range = 5
|
||||
materials = list(MAT_METAL=75)
|
||||
attack_verb = list("stabbed")
|
||||
hitsound = 'sound/weapons/bladeslice.ogg'
|
||||
|
||||
suicide_act(mob/user)
|
||||
to_chat(viewers(user), pick("<span class='suicide'>[user] is stabbing the [src.name] into \his temple! It looks like \he's trying to commit suicide.</span>", \
|
||||
"<span class='suicide'>[user] is stabbing the [src.name] into \his heart! It looks like \he's trying to commit suicide.</span>"))
|
||||
return(BRUTELOSS)
|
||||
/obj/item/weapon/screwdriver/suicide_act(mob/user)
|
||||
to_chat(viewers(user), pick("<span class='suicide'>[user] is stabbing the [name] into \his temple! It looks like \he's trying to commit suicide.</span>", \
|
||||
"<span class='suicide'>[user] is stabbing the [name] into \his heart! It looks like \he's trying to commit suicide.</span>"))
|
||||
return(BRUTELOSS)
|
||||
|
||||
/obj/item/weapon/screwdriver/New()
|
||||
switch(pick("red","blue","purple","brown","green","cyan","yellow"))
|
||||
@@ -82,7 +77,7 @@
|
||||
src.pixel_y = rand(0, 16)
|
||||
return
|
||||
|
||||
/obj/item/weapon/screwdriver/attack(mob/living/carbon/M as mob, mob/living/carbon/user as mob)
|
||||
/obj/item/weapon/screwdriver/attack(mob/living/carbon/M, mob/living/carbon/user)
|
||||
if(!istype(M) || user.a_intent == I_HELP)
|
||||
return ..()
|
||||
if(user.zone_sel.selecting != "eyes" && user.zone_sel.selecting != "head")
|
||||
@@ -91,72 +86,60 @@
|
||||
M = user
|
||||
return eyestab(M,user)
|
||||
|
||||
/*
|
||||
* Wirecutters
|
||||
*/
|
||||
//Wirecutters
|
||||
/obj/item/weapon/wirecutters
|
||||
name = "wirecutters"
|
||||
desc = "This cuts wires."
|
||||
icon = 'icons/obj/items.dmi'
|
||||
icon = 'icons/obj/tools.dmi'
|
||||
icon_state = "cutters"
|
||||
flags = CONDUCT
|
||||
slot_flags = SLOT_BELT
|
||||
force = 6.0
|
||||
force = 6
|
||||
throw_speed = 3
|
||||
throw_range = 7
|
||||
w_class = 2
|
||||
materials = list(MAT_METAL=80)
|
||||
origin_tech = "materials=1;engineering=1"
|
||||
attack_verb = list("pinched", "nipped")
|
||||
hitsound = "sound/items/Wirecutter.ogg"
|
||||
hitsound = 'sound/items/Wirecutter.ogg'
|
||||
sharp = 1
|
||||
edge = 1
|
||||
|
||||
/obj/item/weapon/wirecutters/New(loc, var/param_color = null)
|
||||
/obj/item/weapon/wirecutters/New(loc, param_color = null)
|
||||
..()
|
||||
if((!param_color && prob(50)) || param_color == "yellow")
|
||||
icon_state = "cutters-y"
|
||||
item_state = "cutters_yellow"
|
||||
|
||||
/obj/item/weapon/wirecutters/attack(mob/living/carbon/human/C as mob, mob/user as mob)
|
||||
if(istype(C) && C.handcuffed)
|
||||
if(istype(C.handcuffed, /obj/item/weapon/restraints/handcuffs/cable))
|
||||
usr.visible_message("\The [usr] cuts \the [C]'s restraints with \the [src]!",\
|
||||
"You cut \the [C]'s restraints with \the [src]!",\
|
||||
/obj/item/weapon/wirecutters/attack(mob/living/carbon/human/H, mob/user)
|
||||
if(istype(H) && H.handcuffed)
|
||||
if(istype(H.handcuffed, /obj/item/weapon/restraints/handcuffs/cable))
|
||||
usr.visible_message("\The [usr] cuts \the [H]'s restraints with \the [src]!",\
|
||||
"You cut \the [H]'s restraints with \the [src]!",\
|
||||
"You hear cable being cut.")
|
||||
C.handcuffed = null
|
||||
if(C.buckled && C.buckled.buckle_requires_restraints)
|
||||
C.buckled.unbuckle_mob()
|
||||
C.update_handcuffed()
|
||||
H.handcuffed = null
|
||||
if(H.buckled && H.buckled.buckle_requires_restraints)
|
||||
H.buckled.unbuckle_mob()
|
||||
H.update_handcuffed()
|
||||
return
|
||||
else
|
||||
..()
|
||||
|
||||
/*
|
||||
* Welding Tool
|
||||
*/
|
||||
//Welding Tool
|
||||
/obj/item/weapon/weldingtool
|
||||
name = "welding tool"
|
||||
icon = 'icons/obj/items.dmi'
|
||||
icon = 'icons/obj/tools.dmi'
|
||||
icon_state = "welder"
|
||||
item_state = "welder"
|
||||
flags = CONDUCT
|
||||
slot_flags = SLOT_BELT
|
||||
|
||||
//Amount of OUCH when it's thrown
|
||||
force = 3
|
||||
throwforce = 5
|
||||
throw_speed = 3
|
||||
throw_range = 5
|
||||
w_class = 2
|
||||
|
||||
//Cost to make in the autolathe
|
||||
materials = list(MAT_METAL=70, MAT_GLASS=30)
|
||||
|
||||
//R&D tech level
|
||||
origin_tech = "engineering=1"
|
||||
|
||||
//Welding tool specific stuff
|
||||
var/welding = 0 //Whether or not the welding tool is off(0), on(1) or currently welding(2)
|
||||
var/status = 1 //Whether the welder is secured or unsecured (able to attach rods to it to make a flamethrower)
|
||||
var/max_fuel = 20 //The max amount of fuel the welder can hold
|
||||
@@ -169,7 +152,6 @@
|
||||
create_reagents(max_fuel)
|
||||
reagents.add_reagent("fuel", max_fuel)
|
||||
update_icon()
|
||||
return
|
||||
|
||||
/obj/item/weapon/weldingtool/examine(mob/user)
|
||||
if(..(user, 0))
|
||||
@@ -196,10 +178,9 @@
|
||||
else
|
||||
icon_state = "[initial(icon_state)][ratio]"
|
||||
update_torch()
|
||||
return
|
||||
|
||||
/obj/item/weapon/weldingtool/attackby(obj/item/I as obj, mob/user as mob, params)
|
||||
if(istype(I, /obj/item/weapon/screwdriver))
|
||||
/obj/item/weapon/weldingtool/attackby(obj/item/I, mob/user, params)
|
||||
if(isscrewdriver(I))
|
||||
flamethrower_screwdriver(I, user)
|
||||
if(istype(I, /obj/item/stack/rods))
|
||||
flamethrower_rods(I, user)
|
||||
@@ -231,7 +212,7 @@
|
||||
if(isturf(location))
|
||||
location.hotspot_expose(700, 5)
|
||||
|
||||
/obj/item/weapon/weldingtool/attack(mob/M as mob, mob/user as mob)
|
||||
/obj/item/weapon/weldingtool/attack(mob/M, mob/user)
|
||||
if(ishuman(M))
|
||||
var/mob/living/carbon/human/H = M
|
||||
var/obj/item/organ/external/S = H.organs_by_name[user.zone_sel.selecting]
|
||||
@@ -289,7 +270,7 @@
|
||||
return reagents.get_reagent_amount("fuel")
|
||||
|
||||
//Removes fuel from the welding tool. If a mob is passed, it will try to flash the mob's eyes. This should probably be renamed to use()
|
||||
/obj/item/weapon/weldingtool/proc/remove_fuel(var/amount = 1, var/mob/living/M = null)
|
||||
/obj/item/weapon/weldingtool/proc/remove_fuel(amount = 1, mob/living/M = null)
|
||||
if(!welding || !check_fuel())
|
||||
return 0
|
||||
if(get_fuel() >= amount)
|
||||
@@ -402,7 +383,7 @@
|
||||
|
||||
/obj/item/weapon/weldingtool/hugetank
|
||||
name = "Upgraded Welding Tool"
|
||||
desc = "An upgraded welder based of the industrial welder."
|
||||
desc = "An upgraded welder based off the industrial welder."
|
||||
icon_state = "upindwelder"
|
||||
item_state = "upindwelder"
|
||||
max_fuel = 80
|
||||
@@ -419,10 +400,10 @@
|
||||
w_class = 3
|
||||
materials = list(MAT_METAL=70, MAT_GLASS=120)
|
||||
origin_tech = "engineering=4;plasmatech=3"
|
||||
var/last_gen = 0
|
||||
change_icons = 0
|
||||
can_off_process = 1
|
||||
light_intensity = 1
|
||||
var/last_gen = 0
|
||||
|
||||
/obj/item/weapon/weldingtool/experimental/proc/fuel_gen()
|
||||
if(!welding && !last_gen)
|
||||
@@ -436,19 +417,16 @@
|
||||
if(reagents.total_volume < max_fuel)
|
||||
fuel_gen()
|
||||
|
||||
/*
|
||||
* Crowbar
|
||||
*/
|
||||
|
||||
//Crowbar
|
||||
/obj/item/weapon/crowbar
|
||||
name = "pocket crowbar"
|
||||
desc = "A small crowbar. This handy tool is useful for lots of things, such as prying floor tiles or opening unpowered doors."
|
||||
icon = 'icons/obj/items.dmi'
|
||||
icon = 'icons/obj/tools.dmi'
|
||||
icon_state = "crowbar"
|
||||
flags = CONDUCT
|
||||
slot_flags = SLOT_BELT
|
||||
force = 5.0
|
||||
throwforce = 7.0
|
||||
force = 5
|
||||
throwforce = 7
|
||||
item_state = "crowbar"
|
||||
w_class = 2
|
||||
materials = list(MAT_METAL=50)
|
||||
@@ -456,7 +434,6 @@
|
||||
attack_verb = list("attacked", "bashed", "battered", "bludgeoned", "whacked")
|
||||
|
||||
/obj/item/weapon/crowbar/red
|
||||
icon = 'icons/obj/items.dmi'
|
||||
icon_state = "red_crowbar"
|
||||
item_state = "crowbar_red"
|
||||
|
||||
@@ -480,14 +457,14 @@
|
||||
origin_tech = "combat=2"
|
||||
var/open = 0
|
||||
|
||||
New()
|
||||
..()
|
||||
update_icon()
|
||||
|
||||
/obj/item/weapon/conversion_kit/New()
|
||||
..()
|
||||
update_icon()
|
||||
icon_state = "[initial(icon_state)]_[open]"
|
||||
|
||||
attack_self(mob/user as mob)
|
||||
open = !open
|
||||
to_chat(user, "\blue You [open?"open" : "close"] the conversion kit.")
|
||||
update_icon()
|
||||
/obj/item/weapon/conversion_kit/update_icon()
|
||||
icon_state = "[initial(icon_state)]_[open]"
|
||||
|
||||
/obj/item/weapon/conversion_kit/attack_self(mob/user)
|
||||
open = !open
|
||||
to_chat(user, "\blue You [open?"open" : "close"] the conversion kit.")
|
||||
update_icon()
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
/obj/structure/closet/cardboard
|
||||
name = "large cardboard box"
|
||||
desc = "Just a box..."
|
||||
icon = 'icons/obj/cardboard_boxes.dmi'
|
||||
icon_state = "cardboard"
|
||||
icon_opened = "cardboard_open"
|
||||
icon_closed = "cardboard"
|
||||
@@ -43,7 +44,7 @@
|
||||
|
||||
/mob/living/proc/do_alert_animation(atom/A)
|
||||
var/image/I
|
||||
I = image('icons/obj/closet.dmi', A, "cardboard_special", A.layer+1)
|
||||
I = image('icons/obj/cardboard_boxes.dmi', A, "cardboard_special", A.layer+1)
|
||||
var/list/viewing = list()
|
||||
for(var/mob/M in viewers(A))
|
||||
if(M.client)
|
||||
@@ -52,6 +53,7 @@
|
||||
I.alpha = 0
|
||||
animate(I, pixel_z = 32, alpha = 255, time = 5, easing = ELASTIC_EASING)
|
||||
|
||||
|
||||
/obj/structure/closet/cardboard/attackby(obj/item/weapon/W as obj, mob/user as mob, params)
|
||||
if(src.opened)
|
||||
if(istype(W, /obj/item/weapon/weldingtool))
|
||||
@@ -62,3 +64,25 @@
|
||||
for(var/mob/M in viewers(src))
|
||||
M.show_message("<span class='notice'>\The [src] has been cut apart by [user] with \the [WC].</span>", 3, "You hear cutting.", 2)
|
||||
qdel(src)
|
||||
return
|
||||
if(istype(W, /obj/item/weapon/pen))
|
||||
var/decalselection = input("Please select a decal") as null|anything in list("Atmospherics", "Bartender", "Barber", "Blueshield", "Brig Physician", "Captain",
|
||||
"Cargo", "Chief Engineer", "Chaplain", "Chef", "Chemist", "Civilian", "Clown", "CMO", "Coroner", "Detective", "Engineering", "Genetics", "HOP",
|
||||
"HOS", "Hydroponics", "Internal Affairs Agent", "Janitor", "Magistrate", "Mechanic", "Medical", "Mime", "Mining", "NT Representative", "Paramedic", "Pod Pilot",
|
||||
"Prisoner", "Research Director", "Security", "Syndicate", "Therapist", "Virology", "Warden", "Xenobiology")
|
||||
if(!decalselection)
|
||||
return
|
||||
if(user.incapacitated())
|
||||
to_chat(user, "You're in no condition to perform this action.")
|
||||
return
|
||||
if(W != user.get_active_hand())
|
||||
to_chat(user, "You must be holding the pen to perform this action.")
|
||||
return
|
||||
if(! Adjacent(user))
|
||||
to_chat(user, "You have moved too far away from the cardboard box.")
|
||||
return
|
||||
decalselection = replacetext(decalselection, " ", "_")
|
||||
decalselection = lowertext(decalselection)
|
||||
icon_opened = ("cardboard_open_"+decalselection)
|
||||
icon_closed = ("cardboard_"+decalselection)
|
||||
update_icon() // a proc declared in the closets parent file used to update opened/closed sprites on normal closets
|
||||
|
||||
@@ -79,7 +79,7 @@
|
||||
if(victim.buckled)
|
||||
return 0
|
||||
var/mob/living/H = victim
|
||||
playsound(loc, "sound/effects/splat.ogg", 25, 1)
|
||||
playsound(loc, 'sound/effects/splat.ogg', 25, 1)
|
||||
H.forceMove(loc)
|
||||
H.emote("scream")
|
||||
if(istype(H, /mob/living/carbon/human)) //So you don't get human blood when you spike a giant spidere
|
||||
|
||||
@@ -138,10 +138,10 @@
|
||||
return data
|
||||
|
||||
/datum/song/Topic(href, href_list)
|
||||
if(!in_range(instrumentObj, usr) || (issilicon(usr) && instrumentObj.loc != usr) || !isliving(usr) || !usr.canmove || usr.restrained())
|
||||
if(!in_range(instrumentObj, usr) || (issilicon(usr) && instrumentObj.loc != usr) || !isliving(usr) || usr.incapacitated())
|
||||
usr << browse(null, "window=instrument")
|
||||
usr.unset_machine()
|
||||
return
|
||||
return 1
|
||||
|
||||
instrumentObj.add_fingerprint(usr)
|
||||
|
||||
@@ -168,6 +168,8 @@
|
||||
//split into lines
|
||||
spawn()
|
||||
lines = splittext(t, "\n")
|
||||
if(lines.len == 0)
|
||||
return 1
|
||||
if(copytext(lines[1],1,6) == "BPM: ")
|
||||
tempo = sanitize_tempo(600 / text2num(copytext(lines[1],6)))
|
||||
lines.Cut(1,2)
|
||||
@@ -291,7 +293,7 @@
|
||||
ui_interact(user)
|
||||
|
||||
/obj/structure/piano/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1)
|
||||
if(!user || !anchored)
|
||||
if(!isliving(user) || user.incapacitated() || !anchored)
|
||||
return
|
||||
|
||||
song.ui_interact(user, ui_key, ui, force_open)
|
||||
|
||||
Reference in New Issue
Block a user