mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-10 10:12:45 +00:00
Merge branch 'release' of https://github.com/VOREStation/VOREStation
# Conflicts: # code/game/area/Away Mission areas.dm # code/game/objects/items/weapons/stunbaton.dm # code/game/objects/items/weapons/teleportation.dm # code/modules/clothing/glasses/glasses.dm # code/modules/events/event_container_vr.dm # code/modules/mining/ore_box.dm # code/modules/paperwork/paper.dm # code/modules/rogueminer_vr/zone_console.dm # config/custom_items.txt # icons/mob/items/lefthand_suits.dmi # icons/mob/items/righthand_suits.dmi # icons/mob/species/vulpkanin/helmet.dmi # icons/mob/species/vulpkanin/suit.dmi # icons/mob/suit.dmi # icons/obj/clothing/suits.dmi # maps/tether/tether_defines.dm
This commit is contained in:
@@ -147,7 +147,7 @@
|
||||
if(!locked)
|
||||
return
|
||||
|
||||
user << "<span class='notice'>The crate is locked with a Deca-code lock.</span>"
|
||||
to_chat(user, "<span class='notice'>The crate is locked with a Deca-code lock.</span>")
|
||||
var/input = input(usr, "Enter [codelen] digits. All digits must be unique.", "Deca-Code Lock", "") as text
|
||||
if(!Adjacent(user))
|
||||
return
|
||||
@@ -161,23 +161,23 @@
|
||||
sanitycheck = null //if a digit is repeated, reject the input
|
||||
|
||||
if(input == null || sanitycheck == null || length(input) != codelen)
|
||||
user << "<span class='notice'>You leave the crate alone.</span>"
|
||||
to_chat(user, "<span class='notice'>You leave the crate alone.</span>")
|
||||
else if(check_input(input))
|
||||
user << "<span class='notice'>The crate unlocks!</span>"
|
||||
to_chat(user, "<span class='notice'>The crate unlocks!</span>")
|
||||
playsound(user, 'sound/machines/lockreset.ogg', 50, 1)
|
||||
set_locked(0)
|
||||
else
|
||||
visible_message("<span class='warning'>A red light on \the [src]'s control panel flashes briefly.</span>")
|
||||
attempts--
|
||||
if (attempts == 0)
|
||||
user << "<span class='danger'>The crate's anti-tamper system activates!</span>"
|
||||
to_chat(user, "<span class='danger'>The crate's anti-tamper system activates!</span>")
|
||||
var/turf/T = get_turf(src.loc)
|
||||
explosion(T, 0, 0, 1, 2)
|
||||
qdel(src)
|
||||
|
||||
/obj/structure/closet/crate/secure/loot/emag_act(var/remaining_charges, var/mob/user)
|
||||
if (locked)
|
||||
user << "<span class='notice'>The crate unlocks!</span>"
|
||||
to_chat(user, "<span class='notice'>The crate unlocks!</span>")
|
||||
locked = 0
|
||||
|
||||
/obj/structure/closet/crate/secure/loot/proc/check_input(var/input)
|
||||
@@ -195,11 +195,11 @@
|
||||
/obj/structure/closet/crate/secure/loot/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
||||
if(locked)
|
||||
if (istype(W, /obj/item/device/multitool)) // Greetings Urist McProfessor, how about a nice game of cows and bulls?
|
||||
user << "<span class='notice'>DECA-CODE LOCK ANALYSIS:</span>"
|
||||
to_chat(user, "<span class='notice'>DECA-CODE LOCK ANALYSIS:</span>")
|
||||
if (attempts == 1)
|
||||
user << "<span class='warning'>* Anti-Tamper system will activate on the next failed access attempt.</span>"
|
||||
to_chat(user, "<span class='warning'>* Anti-Tamper system will activate on the next failed access attempt.</span>")
|
||||
else
|
||||
user << "<span class='notice'>* Anti-Tamper system will activate after [src.attempts] failed access attempts.</span>"
|
||||
to_chat(user, "<span class='notice'>* Anti-Tamper system will activate after [src.attempts] failed access attempts.</span>")
|
||||
if(lastattempt.len)
|
||||
var/bulls = 0
|
||||
var/cows = 0
|
||||
@@ -214,6 +214,6 @@
|
||||
var/previousattempt = null //convert back to string for readback
|
||||
for(var/i in 1 to codelen)
|
||||
previousattempt = addtext(previousattempt, lastattempt[i])
|
||||
user << "<span class='notice'>Last code attempt, [previousattempt], had [bulls] correct digits at correct positions and [cows] correct digits at incorrect positions.</span>"
|
||||
to_chat(user, "<span class='notice'>Last code attempt, [previousattempt], had [bulls] correct digits at correct positions and [cows] correct digits at incorrect positions.</span>")
|
||||
return
|
||||
..()
|
||||
|
||||
@@ -48,14 +48,14 @@
|
||||
if(istype(W,/obj/item/stack/cable_coil))
|
||||
var/obj/item/stack/cable_coil/CC = W
|
||||
if(string_attached)
|
||||
user << "<span class='notice'>There already is a string attached to this coin.</span>"
|
||||
to_chat(user, "<span class='notice'>There already is a string attached to this coin.</span>")
|
||||
return
|
||||
if (CC.use(1))
|
||||
overlays += image('icons/obj/items.dmi',"coin_string_overlay")
|
||||
string_attached = 1
|
||||
user << "<span class='notice'>You attach a string to the coin.</span>"
|
||||
to_chat(user, "<span class='notice'>You attach a string to the coin.</span>")
|
||||
else
|
||||
user << "<span class='notice'>This cable coil appears to be empty.</span>"
|
||||
to_chat(user, "<span class='notice'>This cable coil appears to be empty.</span>")
|
||||
return
|
||||
else if(W.is_wirecutter())
|
||||
if(!string_attached)
|
||||
@@ -67,7 +67,7 @@
|
||||
CC.update_icon()
|
||||
overlays = list()
|
||||
string_attached = null
|
||||
user << "<font color='blue'>You detach the string from the coin.</font>"
|
||||
to_chat(user, "<font color='blue'>You detach the string from the coin.</font>")
|
||||
else ..()
|
||||
|
||||
/obj/item/weapon/coin/attack_self(mob/user as mob)
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
var/scan_time = 5 SECONDS
|
||||
|
||||
/obj/item/weapon/mining_scanner/attack_self(mob/user as mob)
|
||||
user << "You begin sweeping \the [src] about, scanning for metal deposits."
|
||||
to_chat(user, "You begin sweeping \the [src] about, scanning for metal deposits.")
|
||||
playsound(loc, 'sound/items/goggles_charge.ogg', 50, 1, -6)
|
||||
|
||||
if(!do_after(user, scan_time))
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
machine.console = src
|
||||
else
|
||||
//Silently failing and causing mappers to scratch their heads while runtiming isn't ideal.
|
||||
world << "<span class='danger'>Warning: Stacking machine console at [src.x], [src.y], [src.z] could not find its machine!</span>"
|
||||
to_world("<span class='danger'>Warning: Stacking machine console at [src.x], [src.y], [src.z] could not find its machine!</span>")
|
||||
qdel(src)
|
||||
|
||||
/obj/machinery/mineral/stacking_unit_console/attack_hand(mob/user)
|
||||
|
||||
@@ -201,11 +201,11 @@
|
||||
|
||||
var/turf/T = get_turf(src)
|
||||
if(!T || !istype(T,/turf/simulated/mineral))
|
||||
user << "The flag won't stand up in this terrain."
|
||||
to_chat(user, "The flag won't stand up in this terrain.")
|
||||
return
|
||||
|
||||
if(F && F.upright)
|
||||
user << "There is already a flag here."
|
||||
to_chat(user, "There is already a flag here.")
|
||||
return
|
||||
|
||||
var/obj/item/stack/flag/newflag = new src.type(T)
|
||||
|
||||
@@ -133,15 +133,6 @@ turf/simulated/mineral/floor/light_corner
|
||||
if(air_master)
|
||||
air_master.mark_for_update(src)
|
||||
|
||||
/turf/simulated/mineral/Entered(atom/movable/M as mob|obj)
|
||||
. = ..()
|
||||
if(istype(M,/mob/living/silicon/robot))
|
||||
var/mob/living/silicon/robot/R = M
|
||||
if(R.module)
|
||||
for(var/obj/item/weapon/storage/bag/ore/O in list(R.module_state_1, R.module_state_2, R.module_state_3))
|
||||
attackby(O, R)
|
||||
return
|
||||
|
||||
/turf/simulated/mineral/proc/get_cached_border(var/cache_id, var/direction, var/icon_file, var/icon_state, var/offset = 32)
|
||||
//Cache miss
|
||||
if(!mining_overlay_cache["[cache_id]_[direction]"])
|
||||
|
||||
@@ -12,4 +12,14 @@
|
||||
ignore_cavegen = TRUE
|
||||
|
||||
/turf/simulated/mineral/floor/ignore_cavegen
|
||||
ignore_cavegen = TRUE
|
||||
ignore_cavegen = TRUE
|
||||
|
||||
/turf/simulated/mineral/vacuum
|
||||
oxygen = 0
|
||||
nitrogen = 0
|
||||
temperature = TCMB
|
||||
|
||||
/turf/simulated/mineral/floor/vacuum
|
||||
oxygen = 0
|
||||
nitrogen = 0
|
||||
temperature = TCMB
|
||||
@@ -22,5 +22,5 @@
|
||||
if(O)
|
||||
scanner_image = image(icon, loc = get_turf(src), icon_state = (O.scan_icon ? O.scan_icon : icon_state))
|
||||
else
|
||||
world << "No ore data for [src]!"
|
||||
to_world("No ore data for [src]!")
|
||||
return scanner_image
|
||||
@@ -120,7 +120,7 @@
|
||||
usr.set_machine(src)
|
||||
src.add_fingerprint(usr)
|
||||
if(processing==1)
|
||||
usr << "<font color='blue'>The machine is processing.</font>"
|
||||
to_chat(usr, "<font color='blue'>The machine is processing.</font>")
|
||||
return
|
||||
if(href_list["choose"])
|
||||
chosen = href_list["choose"]
|
||||
|
||||
@@ -49,14 +49,14 @@
|
||||
..()
|
||||
if (istype(W, /obj/item/weapon/coin))
|
||||
var/obj/item/weapon/coin/C = W
|
||||
user << "<font color='blue'>You add the [C.name] into the bag.</font>"
|
||||
to_chat(user, "<font color='blue'>You add the [C.name] into the bag.</font>")
|
||||
usr.drop_item()
|
||||
contents += C
|
||||
if (istype(W, /obj/item/weapon/moneybag))
|
||||
var/obj/item/weapon/moneybag/C = W
|
||||
for (var/obj/O in C.contents)
|
||||
contents += O;
|
||||
user << "<font color='blue'>You empty the [C.name] into the bag.</font>"
|
||||
to_chat(user, "<font color='blue'>You empty the [C.name] into the bag.</font>")
|
||||
return
|
||||
|
||||
/obj/item/weapon/moneybag/Topic(href, href_list)
|
||||
|
||||
@@ -42,7 +42,7 @@
|
||||
..()
|
||||
var/mob/living/carbon/human/H = hit_atom
|
||||
if(istype(H) && H.has_eyes() && prob(85))
|
||||
H << "<span class='danger'>Some of \the [src] gets in your eyes!</span>"
|
||||
to_chat(H, "<span class='danger'>Some of \the [src] gets in your eyes!</span>")
|
||||
H.Blind(5)
|
||||
H.eye_blurry += 10
|
||||
spawn(1)
|
||||
@@ -94,7 +94,7 @@
|
||||
..()
|
||||
var/mob/living/carbon/human/H = hit_atom
|
||||
if(istype(H) && H.has_eyes() && prob(85))
|
||||
H << "<span class='danger'>Some of \the [src] gets in your eyes!</span>"
|
||||
to_chat(H, "<span class='danger'>Some of \the [src] gets in your eyes!</span>")
|
||||
H.Blind(10)
|
||||
H.eye_blurry += 15
|
||||
spawn(1)
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
|
||||
/**********************Ore box**************************/
|
||||
//Why the hell is this file called satchel_ore_boxdm.dm? -CK
|
||||
/obj/structure/ore_box
|
||||
icon = 'icons/obj/mining.dmi'
|
||||
icon_state = "orebox0"
|
||||
@@ -45,12 +44,8 @@
|
||||
stored_ore[O.name] = 1
|
||||
|
||||
/obj/structure/ore_box/examine(mob/user)
|
||||
user << "That's an [src]."
|
||||
user << desc
|
||||
|
||||
// Borgs can now check contents too.
|
||||
if((!istype(user, /mob/living/carbon/human)) && (!istype(user, /mob/living/silicon/robot)))
|
||||
return
|
||||
to_chat(user, "That's an [src].")
|
||||
to_chat(user, desc)
|
||||
|
||||
if(!Adjacent(user)) //Can only check the contents of ore boxes if you can physically reach them.
|
||||
return
|
||||
@@ -58,16 +53,16 @@
|
||||
add_fingerprint(user)
|
||||
|
||||
if(!contents.len)
|
||||
user << "It is empty."
|
||||
to_chat(user, "It is empty.")
|
||||
return
|
||||
|
||||
if(world.time > last_update + 10)
|
||||
update_ore_count()
|
||||
last_update = world.time
|
||||
|
||||
user << "It holds:"
|
||||
to_chat(user, "It holds:")
|
||||
for(var/ore in stored_ore)
|
||||
user << "- [stored_ore[ore]] [ore]"
|
||||
to_chat(user, "- [stored_ore[ore]] [ore]")
|
||||
return
|
||||
|
||||
/obj/structure/ore_box/verb/empty_box()
|
||||
@@ -75,27 +70,27 @@
|
||||
set category = "Object"
|
||||
set src in view(1)
|
||||
|
||||
if(!istype(usr, /mob/living/carbon/human) && !istype(usr, /mob/living/silicon/robot)) //Only living, intelligent creatures with gripping aparatti can empty ore boxes.
|
||||
usr << "<font color='red'>You are physically incapable of emptying the ore box.</font>"
|
||||
if(!ishuman(usr) && !isrobot(usr)) //Only living, intelligent creatures with gripping aparatti can empty ore boxes.
|
||||
to_chat(usr, "<span class='warning'>You are physically incapable of emptying the ore box.</span>")
|
||||
return
|
||||
|
||||
if( usr.stat || usr.restrained() )
|
||||
if(usr.stat || usr.restrained())
|
||||
return
|
||||
|
||||
if(!Adjacent(usr)) //You can only empty the box if you can physically reach it
|
||||
usr << "You cannot reach the ore box."
|
||||
to_chat(usr, "You cannot reach the ore box.")
|
||||
return
|
||||
|
||||
add_fingerprint(usr)
|
||||
|
||||
if(contents.len < 1)
|
||||
usr << "<font color='red'>The ore box is empty.</font>"
|
||||
to_chat(usr, "<span class='warning'>The ore box is empty.</span>")
|
||||
return
|
||||
|
||||
for (var/obj/item/weapon/ore/O in contents)
|
||||
contents -= O
|
||||
O.loc = src.loc
|
||||
usr << "<font color='blue'>You empty the ore box.</font>"
|
||||
to_chat(usr, "<span class='notice'>You empty the ore box.</span>")
|
||||
|
||||
return
|
||||
|
||||
@@ -105,4 +100,4 @@
|
||||
O.loc = src.loc
|
||||
O.ex_act(severity++)
|
||||
qdel(src)
|
||||
return
|
||||
return
|
||||
Reference in New Issue
Block a user