Merge branch 'master' of https://github.com/ParadiseSS13/Paradise into RingRingHello

This commit is contained in:
Aurorablade
2018-02-24 22:45:26 -05:00
85 changed files with 1593 additions and 324 deletions
+6 -6
View File
@@ -1,18 +1,18 @@
"a" = (/turf/simulated/wall/survival,/area/survivalpod)
"b" = (/obj/structure/sign/mining/survival{tag = "icon-survival (NORTH)"; icon_state = "survival"; dir = 1},/turf/simulated/wall/survival,/area/survivalpod)
"a" = (/turf/simulated/wall/mineral/titanium/survival,/area/survivalpod)
"b" = (/obj/structure/sign/mining/survival{tag = "icon-survival (NORTH)"; icon_state = "survival"; dir = 1},/turf/simulated/wall/mineral/titanium/survival,/area/survivalpod)
"c" = (/obj/structure/fans,/turf/simulated/floor/pod,/area/survivalpod)
"d" = (/obj/machinery/smartfridge/survival_pod/loaded,/turf/simulated/floor/pod,/area/survivalpod)
"e" = (/obj/item/device/gps/computer,/turf/simulated/floor/pod,/area/survivalpod)
"f" = (/obj/structure/sign/mining/survival{dir = 8},/turf/simulated/wall/survival,/area/survivalpod)
"f" = (/obj/structure/sign/mining/survival{dir = 8},/turf/simulated/wall/mineral/titanium/survival,/area/survivalpod)
"g" = (/obj/machinery/sleeper/survival_pod,/turf/simulated/floor/pod,/area/survivalpod)
"h" = (/turf/simulated/floor/pod,/area/survivalpod)
"i" = (/obj/structure/stool/bed/pod,/obj/item/weapon/bedsheet/brown,/turf/simulated/floor/pod,/area/survivalpod)
"j" = (/obj/structure/sign/mining/survival{tag = "icon-survival (EAST)"; icon_state = "survival"; dir = 4},/turf/simulated/wall/survival,/area/survivalpod)
"j" = (/obj/structure/sign/mining/survival{tag = "icon-survival (EAST)"; icon_state = "survival"; dir = 4},/turf/simulated/wall/mineral/titanium/survival,/area/survivalpod)
"k" = (/obj/structure/table/survival_pod,/turf/simulated/floor/pod,/area/survivalpod)
"l" = (/obj/structure/tubes,/obj/structure/stool/bed/chair/comfy/black{dir = 8},/turf/simulated/floor/pod,/area/survivalpod)
"m" = (/obj/structure/sign/mining/survival,/turf/simulated/wall/survival,/area/survivalpod)
"m" = (/obj/structure/sign/mining/survival,/turf/simulated/wall/mineral/titanium/survival,/area/survivalpod)
"n" = (/obj/structure/fans/tiny,/obj/machinery/door/airlock/survival_pod/glass,/turf/simulated/floor/pod,/area/survivalpod)
"o" = (/obj/structure/sign/mining,/turf/simulated/wall/survival,/area/survivalpod)
"o" = (/obj/structure/sign/mining,/turf/simulated/wall/mineral/titanium/survival,/area/survivalpod)
(1,1,1) = {"
aabaa
+6 -6
View File
@@ -1,16 +1,16 @@
"a" = (/turf/simulated/wall/survival,/area/survivalpod)
"b" = (/obj/structure/sign/mining/survival{dir = 8},/turf/simulated/wall/survival,/area/survivalpod)
"a" = (/turf/simulated/wall/mineral/titanium/survival,/area/survivalpod)
"b" = (/obj/structure/sign/mining/survival{dir = 8},/turf/simulated/wall/mineral/titanium/survival,/area/survivalpod)
"c" = (/obj/machinery/smartfridge/survival_pod/loaded,/turf/simulated/floor/pod,/area/survivalpod)
"d" = (/turf/simulated/floor/pod,/area/survivalpod)
"e" = (/obj/machinery/door/window/survival_pod{dir = 1},/turf/simulated/floor/carpet/black,/area/survivalpod)
"f" = (/obj/machinery/light,/turf/simulated/floor/carpet/black,/area/survivalpod)
"g" = (/obj/structure/sign/mining/survival{tag = "icon-survival (NORTH)"; icon_state = "survival"; dir = 1},/turf/simulated/wall/survival,/area/survivalpod)
"g" = (/obj/structure/sign/mining/survival{tag = "icon-survival (NORTH)"; icon_state = "survival"; dir = 1},/turf/simulated/wall/mineral/titanium/survival,/area/survivalpod)
"h" = (/obj/structure/fans,/turf/simulated/floor/pod,/area/survivalpod)
"i" = (/obj/machinery/sleeper/survival_pod,/turf/simulated/floor/pod,/area/survivalpod)
"j" = (/obj/structure/table/survival_pod,/obj/item/weapon/storage/firstaid/regular,/obj/item/weapon/storage/firstaid/brute{pixel_x = 4; pixel_y = -2},/turf/simulated/floor/pod,/area/survivalpod)
"k" = (/obj/structure/table/wood/fancy/black{pixel_y = -9},/obj/structure/window/reinforced/survival_pod{dir = 1},/obj/machinery/microwave,/turf/simulated/floor/carpet/black,/area/survivalpod)
"l" = (/obj/structure/sink/kitchen{dir = 4; pixel_x = -11},/turf/simulated/floor/carpet/black,/area/survivalpod)
"m" = (/obj/structure/sign/mining/survival,/turf/simulated/wall/survival,/area/survivalpod)
"m" = (/obj/structure/sign/mining/survival,/turf/simulated/wall/mineral/titanium/survival,/area/survivalpod)
"n" = (/obj/structure/curtain/black,/obj/machinery/shower{pixel_y = 20},/turf/simulated/floor/pod{pixel_y = 0},/area/survivalpod)
"o" = (/obj/structure/window/reinforced/survival_pod{dir = 8},/obj/machinery/door/window/survival_pod{dir = 1},/turf/simulated/floor/carpet/black,/area/survivalpod)
"p" = (/obj/structure/window/reinforced/survival_pod{dir = 8},/turf/simulated/floor/carpet/black,/area/survivalpod)
@@ -21,13 +21,13 @@
"u" = (/obj/structure/tubes,/obj/item/weapon/twohanded/required/kirbyplants,/turf/simulated/floor/pod,/area/survivalpod)
"v" = (/obj/structure/window/reinforced/survival_pod{dir = 1},/obj/structure/displaycase{desc = "A display case containing an expensive forgery, probably."; locked = 1; pixel_y = -4; req_access_txt = "48"; start_showpiece_type = /obj/item/fakeartefact},/turf/simulated/floor/carpet/black{dir = 1},/area/survivalpod)
"w" = (/obj/structure/fans/tiny,/obj/machinery/door/airlock/survival_pod/glass,/turf/simulated/floor/pod,/area/survivalpod)
"x" = (/obj/structure/sign/mining/survival{tag = "icon-survival (EAST)"; icon_state = "survival"; dir = 4},/turf/simulated/wall/survival,/area/survivalpod)
"x" = (/obj/structure/sign/mining/survival{tag = "icon-survival (EAST)"; icon_state = "survival"; dir = 4},/turf/simulated/wall/mineral/titanium/survival,/area/survivalpod)
"y" = (/obj/structure/toilet/secret{pixel_y = 12},/turf/simulated/floor/pod,/area/survivalpod)
"z" = (/obj/structure/window/reinforced/survival_pod{dir = 1},/obj/item/cardboard_cutout{desc = "A cardboard cutout of a xenomorph maid."; icon_state = "cutout_lusty"; name = "lusty xenomorph maid"}, /turf/simulated/floor/carpet/black,/area/survivalpod)
"A" = (/obj/structure/table/wood/fancy/black,/obj/machinery/light{dir = 4},/obj/item/weapon/reagent_containers/food/drinks/drinkingglass{pixel_x = 6; pixel_y = 3},/obj/item/weapon/reagent_containers/food/drinks/bottle/wine,/turf/simulated/floor/carpet/black,/area/survivalpod)
"B" = (/obj/structure/table/wood/fancy/black,/obj/item/weapon/reagent_containers/food/drinks/drinkingglass{pixel_x = -4; pixel_y = 1},/obj/effect/spawner/lootdrop/three_course_meal,/turf/simulated/floor/carpet/black,/area/survivalpod)
"C" = (/obj/structure/stool/bed/chair/comfy/black{dir = 1},/turf/simulated/floor/carpet/black,/area/survivalpod)
"D" = (/obj/structure/sign/mining,/turf/simulated/wall/survival,/area/survivalpod)
"D" = (/obj/structure/sign/mining,/turf/simulated/wall/mineral/titanium/survival,/area/survivalpod)
(1,1,1) = {"
agagaga
+1 -1
View File
@@ -318,7 +318,7 @@
to_chat(src, "<span class='userdanger'>The pressure sends you flying!</span>")
if(ishuman(src))
var/mob/living/carbon/human/H = src
H.Weaken(min(pressure_difference / 10, 10))
H.Weaken(min(pressure_difference / 50, 2))
spawn()
throw_at(general_direction, pressure_difference / 10, pressure_difference / 200, null, 0, 0, null)
last_forced_movement = air_master.current_cycle
+19
View File
@@ -26,3 +26,22 @@
//plastic flaps construction states
#define PLASTIC_FLAPS_NORMAL 0
#define PLASTIC_FLAPS_DETACHED 1
//Material defines, for determining how much of a given material an item contains
#define MAT_METAL "$metal"
#define MAT_GLASS "$glass"
#define MAT_SILVER "$silver"
#define MAT_GOLD "$gold"
#define MAT_DIAMOND "$diamond"
#define MAT_URANIUM "$uranium"
#define MAT_PLASMA "$plasma"
#define MAT_BANANIUM "$bananium"
#define MAT_TRANQUILLITE "$tranquillite"
#define MAT_TITANIUM "$titanium"
#define MAT_BIOMASS "$biomass"
//The amount of materials you get from a sheet of mineral like iron/diamond/glass etc
#define MINERAL_MATERIAL_AMOUNT 2000
//The maximum size of a stack object.
#define MAX_STACK_SIZE 50
//maximum amount of cable in a coil
#define MAXCOIL 30
-2
View File
@@ -15,8 +15,6 @@
#define FILE_DRM 16 // Some files want to not be copied/moved. This is them complaining that you tried.
#define NETWORK_FAILURE 32
#define MINERAL_MATERIAL_AMOUNT 2000 //The amount of materials you get from a sheet of mineral like iron/diamond/glass etc
#define IMPRINTER 1 //For circuits. Uses glass/chemicals.
#define PROTOLATHE 2 //New stuff. Uses glass/metal/chemicals
#define AUTOLATHE 4 //Uses glass/metal only.
-14
View File
@@ -162,20 +162,6 @@
#define MIN_SUPPLIED_LAW_NUMBER 15
#define MAX_SUPPLIED_LAW_NUMBER 50
//Material defines
#define MAT_METAL "$metal"
#define MAT_GLASS "$glass"
#define MAT_SILVER "$silver"
#define MAT_GOLD "$gold"
#define MAT_DIAMOND "$diamond"
#define MAT_URANIUM "$uranium"
#define MAT_PLASMA "$plasma"
#define MAT_BANANIUM "$bananium"
#define MAT_TRANQUILLITE "$tranquillite"
#define MAT_BIOMASS "$biomass"
#define MAX_STACK_SIZE 50
//check_target_facings() return defines
#define FACING_FAILED 0
#define FACING_SAME_DIR 1
+5 -4
View File
@@ -2,14 +2,15 @@
#define CHANNEL_LOBBYMUSIC 1024
#define CHANNEL_ADMIN 1023
#define CHANNEL_VOX 1022
#define CHANNEL_HEARTBEAT 1021 //sound channel for heartbeats
#define CHANNEL_BUZZ 1020
#define CHANNEL_AMBIENCE 1019
#define CHANNEL_JUKEBOX 1021
#define CHANNEL_HEARTBEAT 1020 //sound channel for heartbeats
#define CHANNEL_BUZZ 1019
#define CHANNEL_AMBIENCE 1018
//THIS SHOULD ALWAYS BE THE LOWEST ONE!
//KEEP IT UPDATED
#define CHANNEL_HIGHEST_AVAILABLE 1018
#define CHANNEL_HIGHEST_AVAILABLE 1017
#define SOUND_MINIMUM_PRESSURE 10
+5
View File
@@ -116,3 +116,8 @@ var/gaussian_next
if(num < 0)
return 0
return sqrt(num)
/proc/round_down(num)
if(round(num) != num)
return round(num--)
else return num
+1
View File
@@ -505,6 +505,7 @@ proc/checkhtml(var/t)
text = replacetext(text, "\[row\]", "</td><tr>")
text = replacetext(text, "\[cell\]", "<td>")
text = replacetext(text, "\[logo\]", "<img src = ntlogo.png>")
text = replacetext(text, "\[time\]", "[gameTimestamp()]") // TO DO
if(P)
text = "<font face=\"[deffont]\" color=[P ? P.colour : "black"]>[text]</font>"
else
+97 -1
View File
@@ -69,4 +69,100 @@ proc/isDay(var/month, var/day)
/proc/seconds_to_time(var/seconds as num)
var/numSeconds = seconds % 60
var/numMinutes = (seconds - numSeconds) / 60
return "[numMinutes] [numMinutes > 1 ? "minutes" : "minute"] and [numSeconds] seconds."
return "[numMinutes] [numMinutes > 1 ? "minutes" : "minute"] and [numSeconds] seconds."
//Takes a value of time in deciseconds.
//Returns a text value of that number in hours, minutes, or seconds.
/proc/DisplayTimeText(time_value)
var/second = time_value * 0.1
var/second_adjusted = null
var/second_rounded = FALSE
var/minute = null
var/hour = null
var/day = null
if(!second)
return "0 seconds"
if(second >= 60)
minute = round_down(second / 60)
second = round(second - (minute * 60), 0.1)
second_rounded = TRUE
if(second) //check if we still have seconds remaining to format, or if everything went into minute.
second_adjusted = round(second) //used to prevent '1 seconds' being shown
if(day || hour || minute)
if(second_adjusted == 1 && second >= 1)
second = " and 1 second"
else if(second > 1)
second = " and [second_adjusted] seconds"
else //shows a fraction if seconds is < 1
if(second_rounded) //no sense rounding again if it's already done
second = " and [second] seconds"
else
second = " and [round(second, 0.1)] seconds"
else
if(second_adjusted == 1 && second >= 1)
second = "1 second"
else if(second > 1)
second = "[second_adjusted] seconds"
else
if(second_rounded)
second = "[second] seconds"
else
second = "[round(second, 0.1)] seconds"
else
second = null
if(!minute)
return "[second]"
if(minute >= 60)
hour = round_down(minute / 60,1)
minute = (minute - (hour * 60))
if(minute) //alot simpler from here since you don't have to worry about fractions
if(minute != 1)
if((day || hour) && second)
minute = ", [minute] minutes"
else if((day || hour) && !second)
minute = " and [minute] minutes"
else
minute = "[minute] minutes"
else
if((day || hour) && second)
minute = ", 1 minute"
else if((day || hour) && !second)
minute = " and 1 minute"
else
minute = "1 minute"
else
minute = null
if(!hour)
return "[minute][second]"
if(hour >= 24)
day = round_down(hour / 24,1)
hour = (hour - (day * 24))
if(hour)
if(hour != 1)
if(day && (minute || second))
hour = ", [hour] hours"
else if(day && (!minute || !second))
hour = " and [hour] hours"
else
hour = "[hour] hours"
else
if(day && (minute || second))
hour = ", 1 hour"
else if(day && (!minute || !second))
hour = " and 1 hour"
else
hour = "1 hour"
else
hour = null
if(!day)
return "[hour][minute][second]"
if(day > 1)
day = "[day] days"
else
day = "1 day"
return "[day][hour][minute][second]"
-2
View File
@@ -1,4 +1,3 @@
#define MAXCOIL 30
/datum/cargoprofile
var/name = "All Items"
var/id = "all" // unique ID for the UI
@@ -787,4 +786,3 @@
var/punches = punch(M,remaining / PUNCH_WORK)
if(punches>1)master.sleep++
return punches * PUNCH_WORK
#undef MAXCOIL
+9
View File
@@ -40,6 +40,8 @@
materials[MAT_BANANIUM] = new /datum/material/bananium()
if(mat_list[MAT_TRANQUILLITE])
materials[MAT_TRANQUILLITE] = new /datum/material/tranquillite()
if(mat_list[MAT_TITANIUM])
materials[MAT_TITANIUM] = new /datum/material/titanium()
/datum/material_container/Destroy()
QDEL_LIST_ASSOC_VAL(materials)
@@ -276,6 +278,13 @@
material_type = MAT_TRANQUILLITE
sheet_type = /obj/item/stack/sheet/mineral/tranquillite
/datum/material/titanium
/datum/material/titanium/New()
..()
material_type = MAT_TITANIUM
sheet_type = /obj/item/stack/sheet/mineral/titanium
/datum/material/biomass
/datum/material/biomass/New()
+13
View File
@@ -0,0 +1,13 @@
// Mutable appearances are an inbuilt byond datastructure. Read the documentation on them by hitting F1 in DM.
// Basically use them instead of images for overlays/underlays and when changing an object's appearance if you're doing so with any regularity.
// Unless you need the overlay/underlay to have a different direction than the base object. Then you have to use an image due to a bug.
// Mutable appearances are children of images, just so you know.
// Helper similar to image()
/proc/mutable_appearance(icon, icon_state = "", layer = FLOAT_LAYER)
var/mutable_appearance/MA = new()
MA.icon = icon
MA.icon_state = icon_state
MA.layer = layer
return MA
+1 -1
View File
@@ -264,7 +264,7 @@ var/list/potential_theft_objectives = subtypesof(/datum/theft_objective) - /datu
if(!location)
return 0
if(istype(location, /turf/simulated/shuttle/floor4)) // Fails traitors if they are in the shuttle brig -- Polymorph
if(istype(location, /turf/simulated/shuttle/floor4) || istype(location, /turf/simulated/floor/mineral/plastitanium/brig)) // Fails traitors if they are in the shuttle brig -- Polymorph
return 0
if(location.onCentcom() || location.onSyndieBase())
+479
View File
@@ -0,0 +1,479 @@
/obj/machinery/disco
name = "radiant dance machine mark IV"
desc = "The first three prototypes were discontinued after mass casualty incidents."
icon = 'icons/obj/lighting.dmi'
icon_state = "disco0"
anchored = FALSE
atom_say_verb = "states"
density = TRUE
var/active = FALSE
var/list/rangers = list()
var/charge = 35
var/stop = 0
var/list/spotlights = list()
var/list/sparkles = list()
var/static/list/songs = list(
new /datum/track("Engineering's Basic Beat", 'sound/misc/disco.ogg', 600, 5),
new /datum/track("Engineering's Domination Dance", 'sound/misc/e1m1.ogg', 950, 6),
new /datum/track("Engineering's Superiority Shimmy", 'sound/misc/paradox.ogg', 2400, 4),
new /datum/track("Engineering's Ultimate High-Energy Hustle", 'sound/misc/boogie2.ogg', 1770, 5),
)
var/datum/track/selection = null
/datum/track
var/song_name = "generic"
var/song_path = null
var/song_length = 0
var/song_beat = 0
var/GBP_required = 0
/datum/track/New(name, path, length, beat)
song_name = name
song_path = path
song_length = length
song_beat = beat
/obj/machinery/disco/proc/add_track(file, name, length, beat)
var/sound/S = file
if(!istype(S))
return
if(!name)
name = "[file]"
if(!beat)
beat = 5
if(!length)
length = 2400 //Unless there's a way to discern via BYOND.
var/datum/track/T = new /datum/track(name, file, length, beat)
songs += T
/obj/machinery/disco/New()
. = ..()
selection = songs[1]
/obj/machinery/disco/Destroy()
dance_over()
selection = null
return ..()
/obj/machinery/disco/attackby(obj/item/O, mob/user, params)
if(!active)
if(iswrench(O))
if(!anchored && !isinspace())
to_chat(user,"<span class='notice'>You secure [src] to the floor.</span>")
anchored = TRUE
else if(anchored)
to_chat(user,"<span class='notice'>You unsecure and disconnect [src].</span>")
anchored = FALSE
playsound(src, 'sound/items/deconstruct.ogg', 50, 1)
return
return ..()
/obj/machinery/disco/update_icon()
if(active)
icon_state = "disco1"
else
icon_state = "disco0"
..()
/obj/machinery/disco/attack_hand(mob/user)
if(..())
return
interact(user)
/obj/machinery/disco/interact(mob/user)
if(!anchored)
to_chat(user,"<span class='warning'>This device must be anchored by a wrench!</span>")
return
if(!Adjacent(user) && !isAI(user))
return
user.set_machine(src)
var/list/dat = list()
dat +="<div class='statusDisplay' style='text-align:center'>"
dat += "<b><A href='?src=[UID()];action=toggle'>[!active ? "BREAK IT DOWN" : "SHUT IT DOWN"]<b></A><br>"
dat += "</div><br>"
dat += "<A href='?src=[UID()];action=select'> Select Track</A><br>"
dat += "Track Selected: [selection.song_name]<br>"
dat += "Track Length: [DisplayTimeText(selection.song_length)]<br><br>"
dat += "<br>DJ's Soundboard:<b><br>"
dat +="<div class='statusDisplay'><div style='text-align:center'>"
dat += "<A href='?src=[UID()];action=horn'>Air Horn</A> "
dat += "<A href='?src=[UID()];action=alert'>Station Alert</A> "
dat += "<A href='?src=[UID()];action=siren'>Warning Siren</A> "
dat += "<A href='?src=[UID()];action=honk'>Honk</A><br>"
dat += "<A href='?src=[UID()];action=pump'>Shotgun Pump</A>"
dat += "<A href='?src=[UID()];action=pop'>Gunshot</A>"
dat += "<A href='?src=[UID()];action=saber'>Esword</A>"
dat += "<A href='?src=[UID()];action=harm'>Harm Alarm</A>"
var/datum/browser/popup = new(user, "vending", "Radiance Dance Machine - Mark IV", 400, 350)
popup.set_content(dat.Join())
popup.open()
/obj/machinery/disco/Topic(href, href_list)
if(..())
return
add_fingerprint(usr)
switch(href_list["action"])
if("toggle")
if(qdeleted(src))
return
if(!active)
if(stop > world.time)
to_chat(usr, "<span class='warning'>Error: The device is still resetting from the last activation, it will be ready again in [DisplayTimeText(stop-world.time)].</span>")
playsound(src, 'sound/misc/compiler-failure.ogg', 50, 1)
return
active = TRUE
update_icon()
dance_setup()
processing_objects.Add(src)
lights_spin()
updateUsrDialog()
else if(active)
stop = 0
updateUsrDialog()
if("select")
if(active)
to_chat(usr, "<span class='warning'>Error: You cannot change the song until the current one is over.</span>")
return
var/list/available = list()
for(var/datum/track/S in songs)
available[S.song_name] = S
var/selected = input(usr, "Choose your song", "Track:") as null|anything in available
if(qdeleted(src) || !selected || !istype(available[selected], /datum/track))
return
selection = available[selected]
updateUsrDialog()
if("horn")
deejay('sound/items/airhorn2.ogg')
if("alert")
deejay('sound/misc/notice1.ogg')
if("siren")
deejay('sound/machines/engine_alert1.ogg')
if("honk")
deejay('sound/items/bikehorn.ogg')
if("pump")
deejay('sound/weapons/shotgunpump.ogg')
if("pop")
deejay('sound/weapons/gunshot3.ogg')
if("saber")
deejay('sound/weapons/saberon.ogg')
if("harm")
deejay('sound/ai/harmalarm.ogg')
/obj/machinery/disco/proc/deejay(S)
if(qdeleted(src) || !active || charge < 5)
to_chat(usr, "<span class='warning'>The device is not able to play more DJ sounds at this time.</span>")
return
charge -= 5
playsound(src, S, 300, 1)
/obj/machinery/disco/proc/dance_setup()
stop = world.time + selection.song_length
var/turf/cen = get_turf(src)
FOR_DVIEW(var/turf/t, 3, get_turf(src),INVISIBILITY_LIGHTING)
if(t.x == cen.x && t.y > cen.y)
var/obj/item/device/flashlight/spotlight/L = new /obj/item/device/flashlight/spotlight(t)
L.light_color = "red"
L.light_power = 30 - (get_dist(src, L) * 8)
L.range = 1+get_dist(src, L)
spotlights+=L
continue
if(t.x == cen.x && t.y < cen.y)
var/obj/item/device/flashlight/spotlight/L = new /obj/item/device/flashlight/spotlight(t)
L.light_color = "purple"
L.light_power = 30 - (get_dist(src, L) * 8)
L.range = 1+get_dist(src, L)
spotlights+=L
continue
if(t.x > cen.x && t.y == cen.y)
var/obj/item/device/flashlight/spotlight/L = new /obj/item/device/flashlight/spotlight(t)
L.light_color = "#ffff00"
L.light_power = 30 - (get_dist(src, L) * 8)
L.range = 1+get_dist(src, L)
spotlights+=L
continue
if(t.x < cen.x && t.y == cen.y)
var/obj/item/device/flashlight/spotlight/L = new /obj/item/device/flashlight/spotlight(t)
L.light_color = "green"
L.light_power = 30 - (get_dist(src, L) * 8)
L.range = 1+get_dist(src, L)
spotlights+=L
continue
if((t.x+1 == cen.x && t.y+1 == cen.y) || (t.x+2==cen.x && t.y+2 == cen.y))
var/obj/item/device/flashlight/spotlight/L = new /obj/item/device/flashlight/spotlight(t)
L.light_color = "sw"
L.light_power = 30 - (get_dist(src, L) * 8)
L.range = 1.4+get_dist(src, L)
spotlights+=L
continue
if((t.x-1 == cen.x && t.y-1 == cen.y) || (t.x-2==cen.x && t.y-2 == cen.y))
var/obj/item/device/flashlight/spotlight/L = new /obj/item/device/flashlight/spotlight(t)
L.light_color = "ne"
L.light_power = 30 - (get_dist(src, L) * 8)
L.range = 1.4+get_dist(src, L)
spotlights+=L
continue
if((t.x-1 == cen.x && t.y+1 == cen.y) || (t.x-2==cen.x && t.y+2 == cen.y))
var/obj/item/device/flashlight/spotlight/L = new /obj/item/device/flashlight/spotlight(t)
L.light_color = "se"
L.light_power = 30 - (get_dist(src, L) * 8)
L.range = 1.4+get_dist(src, L)
spotlights+=L
continue
if((t.x+1 == cen.x && t.y-1 == cen.y) || (t.x+2==cen.x && t.y-2 == cen.y))
var/obj/item/device/flashlight/spotlight/L = new /obj/item/device/flashlight/spotlight(t)
L.light_color = "nw"
L.light_power = 30 - (get_dist(src, L) * 8)
L.range = 1.4+get_dist(src, L)
spotlights+=L
continue
continue
END_FOR_DVIEW
/obj/machinery/disco/proc/hierofunk()
for(var/i in 1 to 10)
new /obj/effect/temp_visual/hierophant/telegraph/edge(get_turf(src))
sleep(5)
/obj/machinery/disco/proc/lights_spin()
for(var/i in 1 to 25)
if(qdeleted(src) || !active)
return
var/obj/effect/overlay/sparkles/S = new /obj/effect/overlay/sparkles(src)
S.alpha = 0
sparkles += S
switch(i)
if(1 to 8)
spawn(0)
S.orbit(src, 30, TRUE, 60, 36, TRUE, FALSE)
if(9 to 16)
spawn(0)
S.orbit(src, 62, TRUE, 60, 36, TRUE, FALSE)
if(17 to 24)
spawn(0)
S.orbit(src, 95, TRUE, 60, 36, TRUE, FALSE)
if(25)
S.pixel_y = 7
S.forceMove(get_turf(src))
sleep(7)
if(selection.song_name == "Engineering's Ultimate High-Energy Hustle")
sleep(280)
for(var/obj/reveal in sparkles)
reveal.alpha = 255
while(active)
for(var/obj/item/device/flashlight/spotlight/glow in spotlights) // The multiples reflects custom adjustments to each colors after dozens of tests
if(qdeleted(src) || !active || qdeleted(glow))
return
if(glow.light_color == "red")
glow.light_color = "nw"
glow.light_power = glow.light_power * 1.48
glow.light_range = 0
glow.update_light()
continue
if(glow.light_color == "nw")
glow.light_color = "green"
glow.light_range = glow.range * 1.1
glow.light_power = glow.light_power * 2 // Any changes to power must come in pairs to neutralize it for other colors
glow.update_light()
continue
if(glow.light_color == "green")
glow.light_color = "sw"
glow.light_power = glow.light_power * 0.5
glow.light_range = 0
glow.update_light()
continue
if(glow.light_color == "sw")
glow.light_color = "purple"
glow.light_power = glow.light_power * 2.27
glow.light_range = glow.range * 1.15
glow.update_light()
continue
if(glow.light_color == "purple")
glow.light_color = "se"
glow.light_power = glow.light_power * 0.44
glow.light_range = 0
glow.update_light()
continue
if(glow.light_color == "se")
glow.light_color = "#ffff00"
glow.light_range = glow.range * 0.9
glow.update_light()
continue
if(glow.light_color == "#ffff00")
glow.light_color = "ne"
glow.light_range = 0
glow.update_light()
continue
if(glow.light_color == "ne")
glow.light_color = "red"
glow.light_power = glow.light_power * 0.68
glow.light_range = glow.range * 0.85
glow.update_light()
continue
if(prob(2)) // Unique effects for the dance floor that show up randomly to mix things up
INVOKE_ASYNC(src, .proc/hierofunk)
sleep(selection.song_beat)
/obj/machinery/disco/proc/dance(mob/living/M) //Show your moves
set waitfor = FALSE
switch(rand(0,9))
if(0 to 1)
dance2(M)
if(2 to 3)
dance3(M)
if(4 to 6)
dance4(M)
if(7 to 9)
dance5(M)
/obj/machinery/disco/proc/dance2(mob/living/M)
for(var/i = 1, i < 10, i++)
for(var/d in list(NORTH, SOUTH, EAST, WEST, EAST, SOUTH, NORTH, SOUTH, EAST, WEST, EAST, SOUTH))
M.setDir(d)
if(i == WEST && !M.incapacitated())
M.SpinAnimation(7, 1)
sleep(1)
sleep(20)
/obj/machinery/disco/proc/dance3(mob/living/M)
var/matrix/initial_matrix = matrix(M.transform)
for(var/i in 1 to 75)
if(!M)
return
switch(i)
if(1 to 15)
initial_matrix = matrix(M.transform)
initial_matrix.Translate(0, 1)
animate(M, transform = initial_matrix, time = 1, loop = 0)
if(16 to 30)
initial_matrix = matrix(M.transform)
initial_matrix.Translate(1, -1)
animate(M, transform = initial_matrix, time = 1, loop = 0)
if(31 to 45)
initial_matrix = matrix(M.transform)
initial_matrix.Translate(-1, -1)
animate(M, transform = initial_matrix, time = 1, loop = 0)
if(46 to 60)
initial_matrix = matrix(M.transform)
initial_matrix.Translate(-1, 1)
animate(M, transform = initial_matrix, time = 1, loop = 0)
if(61 to 75)
initial_matrix = matrix(M.transform)
initial_matrix.Translate(1, 0)
animate(M, transform = initial_matrix, time = 1, loop = 0)
M.setDir(turn(M.dir, 90))
switch(M.dir)
if(NORTH)
initial_matrix = matrix(M.transform)
initial_matrix.Translate(0,3)
animate(M, transform = initial_matrix, time = 1, loop = 0)
if(SOUTH)
initial_matrix = matrix(M.transform)
initial_matrix.Translate(0,-3)
animate(M, transform = initial_matrix, time = 1, loop = 0)
if(EAST)
initial_matrix = matrix(M.transform)
initial_matrix.Translate(3,0)
animate(M, transform = initial_matrix, time = 1, loop = 0)
if(WEST)
initial_matrix = matrix(M.transform)
initial_matrix.Translate(-3,0)
animate(M, transform = initial_matrix, time = 1, loop = 0)
sleep(1)
M.lying_fix()
/obj/machinery/disco/proc/dance4(mob/living/M)
var/speed = rand(1, 3)
set waitfor = 0
var/time = 30
while(time)
sleep(speed)
for(var/i in 1 to speed)
M.setDir(pick(cardinal))
M.resting = !M.resting
M.update_canmove()
time--
/obj/machinery/disco/proc/dance5(mob/living/M)
animate(M, transform = matrix(180, MATRIX_ROTATE), time = 1, loop = 0)
var/matrix/initial_matrix = matrix(M.transform)
for(var/i in 1 to 60)
if(!M)
return
if(i<31)
initial_matrix = matrix(M.transform)
initial_matrix.Translate(0,1)
animate(M, transform = initial_matrix, time = 1, loop = 0)
if(i>30)
initial_matrix = matrix(M.transform)
initial_matrix.Translate(0,-1)
animate(M, transform = initial_matrix, time = 1, loop = 0)
M.setDir(turn(M.dir, 90))
switch(M.dir)
if(NORTH)
initial_matrix = matrix(M.transform)
initial_matrix.Translate(0,3)
animate(M, transform = initial_matrix, time = 1, loop = 0)
if(SOUTH)
initial_matrix = matrix(M.transform)
initial_matrix.Translate(0,-3)
animate(M, transform = initial_matrix, time = 1, loop = 0)
if(EAST)
initial_matrix = matrix(M.transform)
initial_matrix.Translate(3,0)
animate(M, transform = initial_matrix, time = 1, loop = 0)
if(WEST)
initial_matrix = matrix(M.transform)
initial_matrix.Translate(-3,0)
animate(M, transform = initial_matrix, time = 1, loop = 0)
sleep(1)
M.lying_fix()
/mob/living/proc/lying_fix()
animate(src, transform = null, time = 1, loop = 0)
lying_prev = 0
/obj/machinery/disco/proc/dance_over()
QDEL_LIST(spotlights)
QDEL_LIST(sparkles)
for(var/mob/living/L in rangers)
if(!L || !L.client)
continue
L.stop_sound_channel(CHANNEL_JUKEBOX)
rangers = list()
/obj/machinery/disco/process()
if(charge < 35)
charge += 1
if(world.time < stop && active)
var/sound/song_played = sound(selection.song_path)
for(var/mob/M in range(10,src))
if(!(M in rangers))
rangers[M] = TRUE
M.playsound_local(get_turf(M), null, 100, channel = CHANNEL_JUKEBOX, S = song_played)
if(prob(5+(allowed(M) * 4)) && M.canmove)
dance(M)
for(var/mob/L in rangers)
if(get_dist(src, L) > 10)
rangers -= L
if(!L || !L.client)
continue
L.stop_sound_channel(CHANNEL_JUKEBOX)
else if(active)
active = FALSE
processing_objects.Remove(src)
dance_over()
playsound(src,'sound/machines/terminal_off.ogg',50,1)
icon_state = "disco0"
stop = world.time + 100
@@ -234,6 +234,16 @@
opacity = 0
glass = TRUE
/obj/machinery/door/airlock/titanium
name = "shuttle airlock"
assemblytype = /obj/structure/door_assembly/door_assembly_titanium
icon = 'icons/obj/doors/airlocks/shuttle/shuttle.dmi'
overlays_file = 'icons/obj/doors/airlocks/shuttle/overlays.dmi'
/obj/machinery/door/airlock/titanium/glass
opacity = 0
glass = TRUE
//////////////////////////////////
/*
Station2 Airlocks
+22 -18
View File
@@ -4,6 +4,7 @@
/datum/feed_message
var/author = ""
var/title = ""
var/body = ""
var/message_type = "Story"
var/backup_body = ""
@@ -42,8 +43,10 @@
is_admin_channel = 0
total_view_count = 0
/datum/feed_channel/proc/announce_news()
return "Breaking news from [channel_name]!"
/datum/feed_channel/proc/announce_news(title="")
if(title)
return "Breaking news from [channel_name]: [title]"
return "Breaking news from [channel_name]"
/datum/feed_channel/station/announce_news()
return "New Station Announcement Available"
@@ -87,6 +90,7 @@ var/list/obj/machinery/newscaster/allCasters = list() //Global list that will co
// 1 = there has
var/scanned_user = "Unknown" //Will contain the name of the person who currently uses the newscaster
var/msg = "" //Feed message
var/msg_title = "" // Feed message title
var/obj/item/weapon/photo/photo = null
var/channel_name = "" //the feed channel which will be receiving the feed, or being created
var/c_locked = 0 //Will our new channel be locked to public submissions?
@@ -213,6 +217,7 @@ var/list/obj/machinery/newscaster/allCasters = list() //Global list that will co
if(3)
data["scanned_user"] = scanned_user
data["channel_name"] = channel_name
data["title"] = msg_title
data["msg"] = msg
data["photo"] = photo ? 1 : 0
if(4)
@@ -236,7 +241,7 @@ var/list/obj/machinery/newscaster/allCasters = list() //Global list that will co
var/list/messages = list()
data["messages"] = messages
for(var/datum/feed_message/M in viewing_channel.messages)
messages[++messages.len] = list("body" = M.body, "img" = M.img ? icon2base64(M.img) : null, "message_type" = M.message_type, "author" = M.author, "view_count" = M.view_count)
messages[++messages.len] = list("title" = M.title, "body" = M.body, "img" = M.img ? icon2base64(M.img) : null, "message_type" = M.message_type, "author" = M.author, "view_count" = M.view_count)
if(8, 9)
data["channel_name"] = viewing_channel.channel_name
data["ref"] = "\ref[viewing_channel]"
@@ -247,7 +252,7 @@ var/list/obj/machinery/newscaster/allCasters = list() //Global list that will co
var/list/messages = list()
data["messages"] = messages
for(var/datum/feed_message/M in viewing_channel.messages)
messages[++messages.len] = list("body" = M.body, "body_redacted" = (M.body == REDACTED ? 1 : 0) , "message_type" = M.message_type, "author" = M.author, "author_redacted" = (M.author == REDACTED ? 1 : 0), "ref" = "\ref[M]", "view_count" = M.view_count)
messages[++messages.len] = list("title" = M.title, "body" = M.body, "body_redacted" = (M.body == REDACTED ? 1 : 0) , "message_type" = M.message_type, "author" = M.author, "author_redacted" = (M.author == REDACTED ? 1 : 0), "ref" = "\ref[M]", "view_count" = M.view_count)
if(10)
var/wanted_already = 0
var/end_param = 1
@@ -283,9 +288,7 @@ var/list/obj/machinery/newscaster/allCasters = list() //Global list that will co
return 1
if(href_list["set_channel_name"])
channel_name = sanitizeSQL(strip_html_simple(input(usr, "Provide a Feed Channel Name", "Network Channel Handler", "")))
while(findtext(channel_name," ") == 1)
channel_name = copytext(channel_name, 2, lentext(channel_name) + 1)
channel_name = trim(sanitize(strip_html_simple(input(usr, "Provide a Feed Channel Name", "Network Channel Handler", ""))))
else if(href_list["set_channel_lock"])
c_locked = !c_locked
@@ -333,10 +336,12 @@ var/list/obj/machinery/newscaster/allCasters = list() //Global list that will co
available_channels += F.channel_name
channel_name = strip_html_simple(input(usr, "Choose receiving Feed Channel", "Network Channel Handler") in available_channels)
else if(href_list["set_message_title"])
msg_title = trim(strip_html(input(usr, "Write a title for your feed story", "Network Channel Handler", "")))
msg_title = dd_limittext(msg_title, 256)
else if(href_list["set_new_message"])
msg = strip_html(input(usr, "Write your feed story", "Network Channel Handler", ""))
while(findtext(msg, " ") == 1)
msg = copytext(msg, 2, lentext(msg) + 1)
msg = trim(strip_html(input(usr, "Write your feed story", "Network Channel Handler", "")))
else if(href_list["set_attachment"])
AttachPhoto(usr)
@@ -355,6 +360,7 @@ var/list/obj/machinery/newscaster/allCasters = list() //Global list that will co
else
var/datum/feed_message/newMsg = new /datum/feed_message
newMsg.author = scanned_user
newMsg.title = msg_title
newMsg.body = msg
if(photo)
newMsg.img = photo.img
@@ -363,7 +369,7 @@ var/list/obj/machinery/newscaster/allCasters = list() //Global list that will co
for(var/datum/feed_channel/FC in news_network.network_channels)
if(FC.channel_name == channel_name)
FC.messages += newMsg //Adding message to the network's appropriate feed_channel
announcement = FC.announce_news()
announcement = FC.announce_news(msg_title)
break
temp = "<span class='good'>Feed story successfully submitted to [channel_name].</span>"
temp_back_screen = NEWSCASTER_MAIN
@@ -408,14 +414,10 @@ var/list/obj/machinery/newscaster/allCasters = list() //Global list that will co
screen = NEWSCASTER_W_ISSUE_H
else if(href_list["set_wanted_name"])
channel_name = strip_html(input(usr, "Provide the name of the wanted person", "Network Security Handler", ""))
while(findtext(channel_name, " ") == 1)
channel_name = copytext(channel_name, 2, lentext(channel_name) + 1)
channel_name = trim(strip_html(input(usr, "Provide the name of the wanted person", "Network Security Handler", "")))
else if(href_list["set_wanted_desc"])
msg = strip_html(input(usr, "Provide the a description of the wanted person and any other details you deem important", "Network Security Handler", ""))
while(findtext(msg, " ") == 1)
msg = copytext(msg, 2, lentext(msg) + 1)
msg = trim(strip_html(input(usr, "Provide the a description of the wanted person and any other details you deem important", "Network Security Handler", "")))
else if(href_list["submit_wanted"])
var/input_param = text2num(href_list["submit_wanted"])
@@ -534,6 +536,7 @@ var/list/obj/machinery/newscaster/allCasters = list() //Global list that will co
if(screen == NEWSCASTER_MAIN)
scanned_user = "Unknown"
msg = ""
msg_title = ""
c_locked = 0
channel_name = ""
viewing_channel = null
@@ -687,7 +690,8 @@ var/list/obj/machinery/newscaster/allCasters = list() //Global list that will co
var/i = 0
for(var/datum/feed_message/MESSAGE in C.messages)
i++
dat+="-[MESSAGE.body] <BR>"
dat+="<b>[MESSAGE.title]</b> <br>"
dat+="[MESSAGE.body] <BR>"
if(MESSAGE.img)
user << browse_rsc(MESSAGE.img, "tmp_photo[i].png")
dat+="<img src='tmp_photo[i].png' width = '180'><BR>"
+1 -1
View File
@@ -24,7 +24,7 @@ var/const/SAFETY_COOLDOWN = 100
component_parts += new /obj/item/weapon/circuitboard/recycler(null)
component_parts += new /obj/item/weapon/stock_parts/matter_bin(null)
component_parts += new /obj/item/weapon/stock_parts/manipulator(null)
materials = new /datum/material_container(src, list(MAT_METAL=1, MAT_GLASS=1, MAT_SILVER=1, MAT_GOLD=1, MAT_DIAMOND=1, MAT_PLASMA=1, MAT_URANIUM=1, MAT_BANANIUM=1, MAT_TRANQUILLITE=1))
materials = new /datum/material_container(src, list(MAT_METAL=1, MAT_GLASS=1, MAT_SILVER=1, MAT_GOLD=1, MAT_DIAMOND=1, MAT_PLASMA=1, MAT_URANIUM=1, MAT_BANANIUM=1, MAT_TRANQUILLITE=1, MAT_TITANIUM=1))
RefreshParts()
update_icon()
+6 -1
View File
@@ -19,7 +19,8 @@
MAT_GOLD=0,
MAT_PLASMA=0,
MAT_SILVER=0,
MAT_URANIUM=0
MAT_URANIUM=0,
MAT_TITANIUM=0
)
var/res_max_amount = 200000
var/datum/research/files
@@ -435,6 +436,8 @@
type = /obj/item/stack/sheet/mineral/bananium
if(MAT_TRANQUILLITE)
type = /obj/item/stack/sheet/mineral/tranquillite
if(MAT_TITANIUM)
type = /obj/item/stack/sheet/mineral/titanium
else
return 0
var/result = 0
@@ -492,6 +495,8 @@
material = MAT_TRANQUILLITE
if(/obj/item/stack/sheet/mineral/uranium)
material = MAT_URANIUM
if(/obj/item/stack/sheet/mineral/titanium)
material = MAT_TITANIUM
else
return ..()
+5
View File
@@ -40,6 +40,11 @@
icon = 'icons/misc/beach.dmi'
icon_state = "coconuts"
/obj/effect/overlay/sparkles
name = "sparkles"
icon = 'icons/effects/effects.dmi'
icon_state = "shieldsparkles"
/obj/effect/overlay/adminoverlay
name = "adminoverlay"
icon = 'icons/effects/effects.dmi'
@@ -284,3 +284,19 @@ obj/item/device/flashlight/lamp/bananalamp
else
to_chat(user, "<span class='warning'>\The [src] needs time to recharge!</span>")
return
/obj/item/device/flashlight/spotlight //invisible lighting source
name = "disco light"
desc = "Groovy..."
icon_state = null
light_color = null
brightness_on = 0
light_range = 0
light_power = 10
alpha = 0
layer = 0
on = TRUE
anchored = TRUE
var/range = null
unacidable = TRUE
burn_state = LAVA_PROOF
+33 -8
View File
@@ -1,4 +1,6 @@
/obj/item/flag
name = "flag"
desc = "It's a flag."
icon = 'icons/obj/flag.dmi'
icon_state = "ntflag"
lefthand_file = 'icons/mob/inhands/flags_lefthand.dmi'
@@ -6,13 +8,19 @@
w_class = WEIGHT_CLASS_BULKY
burntime = 20
burn_state = FLAMMABLE
var/rolled = FALSE
/obj/item/flag/attackby(obj/item/weapon/W, mob/user, params)
..()
if(is_hot(W) && burn_state != ON_FIRE)
user.visible_message("<span class='notice'>[user] lights the [name] with [W].</span>")
user.visible_message("<span class='notice'>[user] lights [src] with [W].</span>", "<span class='notice'>You light [src] with [W].</span>", "<span class='warning'>You hear a low whoosh.</span>")
fire_act()
/obj/item/flag/attack_self(mob/user)
rolled = !rolled
user.visible_message("<span class='notice'>[user] [rolled ? "rolls up" : "unfurls"] [src].</span>", "<span class='notice'>You [rolled ? "roll up" : "unfurl"] [src].</span>", "<span class='warning'>You hear fabric rustling.</span>")
update_icon()
/obj/item/flag/fire_act(global_overlay = FALSE)
..()
update_icon()
@@ -23,16 +31,24 @@
/obj/item/flag/update_icon()
overlays.Cut()
updateFlagIcon()
item_state = icon_state
if(rolled)
icon_state = "[icon_state]_rolled"
if(burn_state == ON_FIRE)
item_state = "[item_state]_fire"
if(burn_state == ON_FIRE && rolled)
overlays += image('icons/obj/flag.dmi', src , "fire_rolled")
else if(burn_state == ON_FIRE && !rolled)
overlays += image('icons/obj/flag.dmi', src , "fire")
item_state = "[icon_state]_fire"
else
item_state = initial(icon_state)
if(ismob(loc))
var/mob/M = loc
M.update_inv_r_hand()
M.update_inv_l_hand()
/obj/item/flag/proc/updateFlagIcon()
icon_state = initial(icon_state)
/obj/item/flag/nt
name = "Nanotrasen flag"
desc = "A flag proudly boasting the logo of NT."
@@ -187,11 +203,16 @@
desc = "A poor recreation of the official NT flag. It seems to shimmer a little."
icon_state = "ntflag"
origin_tech = "syndicate=4;magnets=4"
var/used = 0
var/updated_icon_state = null
var/used = FALSE
/obj/item/flag/chameleon/New()
updated_icon_state = icon_state
..()
/obj/item/flag/chameleon/attack_self(mob/user)
if(used)
return
return ..()
var/list/flag_types = typesof(/obj/item/flag) - list(src.type, /obj/item/flag)
var/list/flag = list()
@@ -208,12 +229,16 @@
var/obj/item/flag/chosen_flag = flag[input_flag]
if(chosen_flag)
if(chosen_flag && !used)
name = chosen_flag.name
icon_state = chosen_flag.icon_state
updated_icon_state = icon_state
desc = chosen_flag.desc
used = 1
used = TRUE
/obj/item/flag/chameleon/burn()
explosion(loc,1,2,4,4, flame_range = 4)
qdel(src)
/obj/item/flag/chameleon/updateFlagIcon()
icon_state = updated_icon_state
@@ -103,9 +103,8 @@ var/global/list/datum/stack_recipe/abductor_recipes = list ( \
)
/obj/item/stack/sheet/mineral
force = 5.0
force = 5
throwforce = 5
w_class = WEIGHT_CLASS_NORMAL
throw_speed = 3
/obj/item/stack/sheet/mineral/New()
@@ -226,6 +225,56 @@ var/global/list/datum/stack_recipe/abductor_recipes = list ( \
..()
recipes = tranquillite_recipes
/*
* Titanium
*/
/obj/item/stack/sheet/mineral/titanium
name = "titanium"
icon_state = "sheet-titanium"
singular_name = "titanium sheet"
force = 5
throwforce = 5
w_class = WEIGHT_CLASS_NORMAL
throw_speed = 1
throw_range = 3
sheettype = "titanium"
materials = list(MAT_TITANIUM=MINERAL_MATERIAL_AMOUNT)
var/global/list/datum/stack_recipe/titanium_recipes = list (
new/datum/stack_recipe("titanium tile", /obj/item/stack/tile/mineral/titanium, 1, 4, 20),
)
/obj/item/stack/sheet/mineral/titanium/New(loc, amount=null)
recipes = titanium_recipes
..()
/obj/item/stack/sheet/mineral/titanium/fifty
amount = 50
/*
* Plastitanium
*/
/obj/item/stack/sheet/mineral/plastitanium
name = "plastitanium"
icon_state = "sheet-plastitanium"
singular_name = "plastitanium sheet"
force = 5
throwforce = 5
w_class = WEIGHT_CLASS_NORMAL
throw_speed = 1
throw_range = 3
sheettype = "plastitanium"
materials = list(MAT_TITANIUM=2000, MAT_PLASMA=2000)
var/global/list/datum/stack_recipe/plastitanium_recipes = list (
new/datum/stack_recipe("plas-titanium tile", /obj/item/stack/tile/mineral/plastitanium, 1, 4, 20),
)
/obj/item/stack/sheet/mineral/plastitanium/New(loc, amount=null)
recipes = plastitanium_recipes
..()
/obj/item/stack/sheet/mineral/enruranium
name = "enriched uranium"
icon_state = "sheet-enruranium"
@@ -111,4 +111,22 @@ var/global/list/datum/stack_recipe/silverfancy_tile_recipes = list ( \
icon_state = "tile_abductor"
origin_tech = "materials=6;abductor=1"
turf_type = /turf/simulated/floor/mineral/abductor
mineralType = "abductor"
mineralType = "abductor"
/obj/item/stack/tile/mineral/titanium
name = "titanium tile"
singular_name = "titanium floor tile"
desc = "A tile made of titanium, used for shuttles."
icon_state = "tile_shuttle"
turf_type = /turf/simulated/floor/mineral/titanium
mineralType = "titanium"
materials = list(MAT_TITANIUM=500)
/obj/item/stack/tile/mineral/plastitanium
name = "plas-titanium tile"
singular_name = "plas-titanium floor tile"
desc = "A tile made of plas-titanium, used for very evil shuttles."
icon_state = "tile_darkshuttle"
turf_type = /turf/simulated/floor/mineral/plastitanium
mineralType = "plastitanium"
materials = list(MAT_TITANIUM=250, MAT_PLASMA=250)
@@ -1,70 +1,6 @@
//improvised explosives//
//iedcasing assembly crafting//
/obj/item/weapon/reagent_containers/food/drinks/cans/attackby(var/obj/item/I, mob/user as mob)
if(istype(I, /obj/item/device/assembly/igniter))
var/obj/item/device/assembly/igniter/G = I
var/obj/item/weapon/grenade/iedcasing/W = new /obj/item/weapon/grenade/iedcasing
user.unEquip(G)
user.unEquip(src)
user.put_in_hands(W)
to_chat(user, "<span class='notice'>You stuff the [I] in the [src], emptying the contents beforehand.</span>")
W.underlays += image(src.icon, icon_state = src.icon_state)
qdel(I)
qdel(src)
/obj/item/weapon/grenade/iedcasing
name = "improvised explosive assembly"
desc = "An igniter stuffed into an aluminum shell."
w_class = WEIGHT_CLASS_SMALL
icon = 'icons/obj/grenade.dmi'
icon_state = "improvised_grenade"
item_state = "flashbang"
throw_speed = 3
throw_range = 7
flags = CONDUCT
slot_flags = SLOT_BELT
var/assembled = 0
active = 1
det_time = 50
display_timer = 0
var/range = 3
var/times = list()
/obj/item/weapon/grenade/iedcasing/afterattack(atom/target, mob/user , flag) //Filling up the can
if(assembled == 0)
if( istype(target, /obj/structure/reagent_dispensers/fueltank))
if(target.reagents.total_volume < 50)
to_chat(user, "<span class='notice'>There's not enough fuel left to work with.</span>")
return
var/obj/structure/reagent_dispensers/fueltank/F = target
F.reagents.remove_reagent("fuel", 50, 1)//Deleting 50 fuel from the welding fuel tank,
assembled = 1
to_chat(user, "<span class='notice'>You've filled the makeshift explosive with welding fuel.</span>")
playsound(src.loc, 'sound/effects/refill.ogg', 50, 1, -6)
desc = "An improvised explosive assembly. Filled to the brim with 'Explosive flavor'"
overlays += image('icons/obj/grenade.dmi', icon_state = "improvised_grenade_filled")
return
/obj/item/weapon/grenade/iedcasing/attackby(var/obj/item/I, mob/user as mob) //Wiring the can for ignition
if(istype(I, /obj/item/stack/cable_coil))
if(assembled == 1)
var/obj/item/stack/cable_coil/C = I
C.use(1)
assembled = 2
to_chat(user, "<span class='notice'>You wire the igniter to detonate the fuel.</span>")
desc = "A weak, improvised explosive."
overlays += image('icons/obj/grenade.dmi', icon_state = "improvised_grenade_wired")
name = "improvised explosive"
active = 0
det_time = rand(30,80)
/obj/item/weapon/grenade/iedcasing/filled
name = "improvised firebomb"
desc = "A weak, improvised incendiary device."
w_class = WEIGHT_CLASS_SMALL
@@ -77,53 +13,53 @@
slot_flags = SLOT_BELT
active = 0
det_time = 50
assembled = 2
display_timer = 0
var/list/times
/obj/item/weapon/grenade/iedcasing/filled/New(loc)
/obj/item/weapon/grenade/iedcasing/New()
..()
overlays += image('icons/obj/grenade.dmi', icon_state = "improvised_grenade_filled")
overlays += image('icons/obj/grenade.dmi', icon_state = "improvised_grenade_wired")
times = list("5" = 10, "-1" = 20, "[rand(30,80)]" = 50, "[rand(65,180)]" = 20)// "Premature, Dud, Short Fuse, Long Fuse"=[weighting value]
overlays += "improvised_grenade_filled"
overlays += "improvised_grenade_wired"
times = list("5" = 10, "-1" = 20, "[rand(30, 80)]" = 50, "[rand(65, 180)]" = 20)// "Premature, Dud, Short Fuse, Long Fuse"=[weighting value]
det_time = text2num(pickweight(times))
if(det_time < 0) //checking for 'duds'
range = 1
det_time = rand(30,80)
else
range = pick(2,2,2,3,3,3,4)
/obj/item/weapon/grenade/iedcasing/CheckParts(list/parts_list)
..()
var/obj/item/weapon/reagent_containers/food/drinks/cans/can = locate() in contents
if(can)
underlays += can
can.pixel_x = 0 //Reset the sprite's position to make it consistent with the rest of the IED
can.pixel_y = 0
var/mutable_appearance/can_underlay = new(can)
can_underlay.layer = FLOAT_LAYER
can_underlay.plane = FLOAT_PLANE
underlays += can_underlay
/obj/item/weapon/grenade/iedcasing/attack_self(mob/user as mob) //
/obj/item/weapon/grenade/iedcasing/attack_self(mob/user) //
if(!active)
if(clown_check(user))
to_chat(user, "<span class='warning'>You light the [name]!</span>")
active = 1
overlays -= image('icons/obj/grenade.dmi', icon_state = "improvised_grenade_filled")
active = TRUE
overlays -= "improvised_grenade_filled"
icon_state = initial(icon_state) + "_active"
add_fingerprint(user)
var/turf/bombturf = get_turf(src)
var/area/A = get_area(bombturf)
message_admins("[key_name_admin(usr)] has primed a [name] for detonation at <A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[bombturf.x];Y=[bombturf.y];Z=[bombturf.z]'>[A.name] (JMP)</a>")
log_game("[key_name(usr)] has primed a [name] for detonation at [A.name] ([bombturf.x],[bombturf.y],[bombturf.z])")
message_admins("[ADMIN_LOOKUPFLW(user)] has primed a [name] for detonation at [ADMIN_COORDJMP(bombturf)].")
log_game("[key_name(usr)] has primed a [name] for detonation at [A.name] [COORD(bombturf)].")
if(iscarbon(user))
var/mob/living/carbon/C = user
C.throw_mode_on()
spawn(det_time)
prime()
addtimer(src, "prime", det_time)
/obj/item/weapon/grenade/iedcasing/prime() //Blowing that can up
update_mob()
explosion(src.loc,-1,-1,-1, flame_range = range) // no explosive damage, only a large fireball.
explosion(loc, -1, -1, 2, flame_range = 4) // small explosion, plus a very large fireball.
qdel(src)
/obj/item/weapon/grenade/iedcasing/examine(mob/user)
..(user)
..()
to_chat(user, "You can't tell when it will explode!")
+6 -20
View File
@@ -52,23 +52,12 @@
if(sig)
to_chat(user, "<span class='warning'>This beartrap already has a signaler hooked up to it!</span>")
return
IED = I
switch(IED.assembled)
if(0,1) //if it's not fueled/hooked up
to_chat(user, "<span class='warning'>You haven't prepared this IED yet!</span>")
IED = null
return
if(2,3)
user.drop_item()
I.forceMove(src)
message_admins("[key_name_admin(user)] has rigged a beartrap with an IED.")
log_game("[key_name(user)] has rigged a beartrap with an IED.")
to_chat(user, "<span class='notice'>You sneak the [IED] underneath the pressure plate and connect the trigger wire.</span>")
desc = "A trap used to catch bears and other legged creatures. <span class='warning'>There is an IED hooked up to it.</span>"
else
to_chat(user, "<span class='danger'>You shouldn't be reading this message! Contact a coder or someone, something broke!</span>")
IED = null
return
user.drop_item()
I.forceMove(src)
message_admins("[key_name_admin(user)] has rigged a beartrap with an IED.")
log_game("[key_name(user)] has rigged a beartrap with an IED.")
to_chat(user, "<span class='notice'>You sneak [IED] underneath the pressure plate and connect the trigger wire.</span>")
desc = "A trap used to catch bears and other legged creatures. <span class='warning'>There is an IED hooked up to it.</span>"
if(istype(I, /obj/item/device/assembly/signaler))
if(IED)
to_chat(user, "<span class='warning'>This beartrap already has an IED hooked up to it!</span>")
@@ -110,9 +99,6 @@
if(IED && isturf(src.loc))
IED.active = 1
IED.overlays -= image('icons/obj/grenade.dmi', icon_state = "improvised_grenade_filled")
IED.icon_state = initial(icon_state) + "_active"
IED.assembled = 3
message_admins("[key_name_admin(usr)] has triggered an IED-rigged [name].")
log_game("[key_name(usr)] has triggered an IED-rigged [name].")
spawn(IED.det_time)
+4 -4
View File
@@ -58,7 +58,7 @@
icon_state = "drill_bolt"
item_state = "drill"
usesound = 'sound/items/drill_use.ogg'
materials = list(MAT_METAL=150,MAT_SILVER=50,MAT_GOLD=25)
materials = list(MAT_METAL=150,MAT_SILVER=50,MAT_TITANIUM=25)
origin_tech = "materials=2;engineering=2" //done for balance reasons, making them high value for research, but harder to get
force = 8 //might or might not be too high, subject to change
throwforce = 8
@@ -180,7 +180,7 @@
desc = "A simple hand drill with a screwdriver bit attached."
icon_state = "drill_screw"
item_state = "drill"
materials = list(MAT_METAL=150,MAT_SILVER=50,MAT_GOLD=25)
materials = list(MAT_METAL=150,MAT_SILVER=50,MAT_TITANIUM=25)
origin_tech = "materials=2;engineering=2" //done for balance reasons, making them high value for research, but harder to get
force = 8 //might or might not be too high, subject to change
throwforce = 8
@@ -276,7 +276,7 @@
icon_state = "jaws_cutter"
item_state = "jawsoflife"
origin_tech = "materials=2;engineering=2"
materials = list(MAT_METAL=150,MAT_SILVER=50,MAT_GOLD=25)
materials = list(MAT_METAL=150,MAT_SILVER=50,MAT_TITANIUM=25)
usesound = 'sound/items/jaws_cut.ogg'
toolspeed = 0.25
@@ -691,7 +691,7 @@ obj/item/weapon/weldingtool/experimental/process()
desc = "A set of jaws of life, the magic of science has managed to fit it down into a device small enough to fit in a tool belt. It's fitted with a prying head."
icon_state = "jaws_pry"
item_state = "jawsoflife"
materials = list(MAT_METAL=150,MAT_SILVER=50,MAT_DIAMOND=25)
materials = list(MAT_METAL=150,MAT_SILVER=50,MAT_TITANIUM=25)
origin_tech = "materials=2;engineering=2"
usesound = 'sound/items/jaws_pry.ogg'
force = 15
@@ -100,6 +100,14 @@
if(pickednum >= 40)
new /obj/item/stack/sheet/mineral/uranium(src, rand(rare_min, rare_max))
//Titanium (rare ore)
if(pickednum >= 40)
new /obj/item/stack/sheet/mineral/titanium(src, rand(rare_min, rare_max))
//Plastitanium (rare ore)
if(pickednum >= 40)
new /obj/item/stack/sheet/mineral/plastitanium(src, rand(rare_min, rare_max))
//Diamond (rare HONK)
if(pickednum >= 45)
new /obj/item/stack/sheet/mineral/diamond(src, rand(rare_min, rare_max))
@@ -122,6 +130,8 @@
/obj/item/stack/sheet/mineral/uranium,
/obj/item/stack/sheet/mineral/diamond,
/obj/item/stack/sheet/mineral/bananium,
/obj/item/stack/sheet/mineral/titanium,
/obj/item/stack/sheet/mineral/plastitanium,
/obj/item/stack/sheet/plasteel,
/obj/item/stack/rods
)
@@ -246,6 +246,15 @@
mineral = "sandstone"
glass_type = /obj/machinery/door/airlock/sandstone/glass
/obj/structure/door_assembly/door_assembly_titanium
name = "titanium airlock assembly"
icon = 'icons/obj/doors/airlocks/shuttle/shuttle.dmi'
base_name = "shuttle airlock"
overlays_file = 'icons/obj/doors/airlocks/shuttle/overlays.dmi'
glass_type = /obj/machinery/door/airlock/titanium/glass
airlock_type = /obj/machinery/door/airlock/titanium
mineral = "titanium"
/obj/structure/door_assembly/door_assembly_wood
name = "wooden airlock assembly"
icon = 'icons/obj/doors/airlocks/station/wood.dmi'
+20 -2
View File
@@ -80,9 +80,9 @@
/obj/structure/falsewall/update_icon()
if(density)
icon_state = initial(icon_state)
smooth = SMOOTH_TRUE
smooth_icon(src)
icon_state = ""
else
icon_state = "fwall_open"
@@ -304,4 +304,22 @@
icon_state = "abductor"
mineral = "abductor"
walltype = "abductor"
canSmoothWith = list(/obj/structure/falsewall/abductor, /turf/simulated/wall/mineral/abductor)
canSmoothWith = list(/obj/structure/falsewall/abductor, /turf/simulated/wall/mineral/abductor)
/obj/structure/falsewall/titanium
desc = "A light-weight titanium wall used in shuttles."
icon = 'icons/turf/walls/shuttle_wall.dmi'
icon_state = "shuttle"
mineral = /obj/item/stack/sheet/mineral/titanium
walltype = /turf/simulated/wall/mineral/titanium
smooth = SMOOTH_MORE
canSmoothWith = list(/turf/simulated/wall/mineral/titanium, /obj/machinery/door/airlock/shuttle, /obj/machinery/door/airlock, /obj/structure/window/full/shuttle, /obj/structure/shuttle/engine/heater)
/obj/structure/falsewall/plastitanium
desc = "An evil wall of plasma and titanium."
icon = 'icons/turf/walls/plastitanium_wall.dmi'
icon_state = "shuttle"
mineral = /obj/item/stack/sheet/mineral/plastitanium
walltype = /turf/simulated/wall/mineral/plastitanium
smooth = SMOOTH_MORE
canSmoothWith = list(/turf/simulated/wall/mineral/plastitanium, /obj/machinery/door/airlock/shuttle, /obj/machinery/door/airlock, /obj/structure/window/full/shuttle, /obj/structure/shuttle/engine/heater)
@@ -94,6 +94,7 @@
basestate = "window"
health = 160
reinf = 1
explosion_block = 3
/obj/structure/window/full/shuttle/New()
..()
@@ -6,6 +6,7 @@
* Bananium floor
* Diamond floor
* Uranium floor
* Shuttle floor (Titanium)
*/
/turf/simulated/floor/mineral
@@ -76,6 +77,61 @@
floor_tile = /obj/item/stack/tile/mineral/silver/fancy
icons = list("silverfancy","silverfancy_dam")
//TITANIUM (shuttle)
/turf/simulated/floor/mineral/titanium/blue
icon_state = "shuttlefloor"
icons = list("shuttlefloor","shuttlefloor_dam")
/turf/simulated/floor/mineral/titanium/blue/airless
oxygen = 0.01
nitrogen = 0.01
temperature = TCMB
/turf/simulated/floor/mineral/titanium/yellow
icon_state = "shuttlefloor2"
icons = list("shuttlefloor2","shuttlefloor2_dam")
/turf/simulated/floor/mineral/titanium/yellow/airless
oxygen = 0.01
nitrogen = 0.01
temperature = TCMB
/turf/simulated/floor/mineral/titanium
name = "shuttle floor"
icon_state = "shuttlefloor3"
floor_tile = /obj/item/stack/tile/mineral/titanium
icons = list("shuttlefloor3","shuttlefloor3_dam")
/turf/simulated/floor/mineral/titanium/airless
oxygen = 0.01
nitrogen = 0.01
temperature = TCMB
/turf/simulated/floor/mineral/titanium/purple
icon_state = "shuttlefloor5"
icons = list("shuttlefloor5","shuttlefloor5_dam")
/turf/simulated/floor/mineral/titanium/purple/airless
oxygen = 0.01
nitrogen = 0.01
temperature = TCMB
//PLASTITANIUM (syndieshuttle)
/turf/simulated/floor/mineral/plastitanium
name = "shuttle floor"
icon_state = "shuttlefloor4"
floor_tile = /obj/item/stack/tile/mineral/plastitanium
icons = list("shuttlefloor4","shuttlefloor4_dam")
/turf/simulated/floor/mineral/plastitanium/airless
oxygen = 0.01
nitrogen = 0.01
temperature = TCMB
/turf/simulated/floor/mineral/plastitanium/brig
name = "brig floor"
//BANANIUM
/turf/simulated/floor/mineral/bananium
name = "bananium floor"
+108 -1
View File
@@ -156,4 +156,111 @@
smooth = SMOOTH_TRUE|SMOOTH_DIAGONAL
sheet_type = /obj/item/stack/sheet/mineral/abductor
explosion_block = 3
canSmoothWith = list(/turf/simulated/wall/mineral/abductor, /obj/structure/falsewall/abductor)
canSmoothWith = list(/turf/simulated/wall/mineral/abductor, /obj/structure/falsewall/abductor)
/////////////////////Titanium walls/////////////////////
/turf/simulated/wall/mineral/titanium //has to use this path due to how building walls works
name = "wall"
desc = "A light-weight titanium wall used in shuttles."
icon = 'icons/turf/walls/shuttle_wall.dmi'
icon_state = "map-shuttle"
explosion_block = 3
sheet_type = /obj/item/stack/sheet/mineral/titanium
smooth = SMOOTH_MORE|SMOOTH_DIAGONAL
canSmoothWith = list(/turf/simulated/wall/mineral/titanium, /obj/machinery/door/airlock/shuttle, /obj/machinery/door/airlock, /obj/structure/window/full/shuttle, /obj/structure/shuttle/engine/heater, /obj/structure/falsewall/titanium)
/turf/simulated/wall/mineral/titanium/nodiagonal
smooth = SMOOTH_MORE
icon_state = "map-shuttle_nd"
/turf/simulated/wall/mineral/titanium/nosmooth
icon = 'icons/turf/shuttle.dmi'
icon_state = "wall"
smooth = SMOOTH_FALSE
/turf/simulated/wall/mineral/titanium/overspace
icon_state = "map-overspace"
fixed_underlay = list("space"=1)
//sub-type to be used for interior shuttle walls
//won't get an underlay of the destination turf on shuttle move
/turf/simulated/wall/mineral/titanium/interior/copyTurf(turf/T)
if(T.type != type)
T.ChangeTurf(type)
if(underlays.len)
T.underlays = underlays
if(T.icon_state != icon_state)
T.icon_state = icon_state
if(T.icon != icon)
T.icon = icon
if(T.color != color)
T.color = color
if(T.dir != dir)
T.dir = dir
T.transform = transform
return T
/turf/simulated/wall/mineral/titanium/copyTurf(turf/T)
. = ..()
T.transform = transform
/turf/simulated/wall/mineral/titanium/survival
name = "pod wall"
desc = "An easily-compressable wall used for temporary shelter."
icon = 'icons/turf/walls/survival_pod_walls.dmi'
icon_state = "smooth"
smooth = SMOOTH_MORE|SMOOTH_DIAGONAL
canSmoothWith = list(/turf/simulated/wall/mineral/titanium/survival, /obj/machinery/door/airlock, /obj/structure/window/full, /obj/structure/window/full/reinforced, /obj/structure/window/full/reinforced/tinted, /obj/structure/window/full/shuttle, /obj/structure/shuttle/engine)
/turf/simulated/wall/mineral/titanium/survival/nodiagonal
smooth = SMOOTH_MORE
/turf/simulated/wall/mineral/titanium/survival/pod
canSmoothWith = list(/turf/simulated/wall/mineral/titanium/survival, /obj/machinery/door/airlock/survival_pod)
/////////////////////Plastitanium walls/////////////////////
/turf/simulated/wall/mineral/plastitanium
name = "wall"
desc = "An evil wall of plasma and titanium."
icon = 'icons/turf/walls/plastitanium_wall.dmi'
icon_state = "map-shuttle"
explosion_block = 4
sheet_type = /obj/item/stack/sheet/mineral/plastitanium
smooth = SMOOTH_MORE|SMOOTH_DIAGONAL
canSmoothWith = list(/turf/simulated/wall/mineral/plastitanium, /obj/machinery/door/airlock/shuttle, /obj/machinery/door/airlock, /obj/structure/shuttle/engine, /obj/structure/falsewall/plastitanium)
/turf/simulated/wall/mineral/plastitanium/nodiagonal
smooth = SMOOTH_MORE
icon_state = "map-shuttle_nd"
/turf/simulated/wall/mineral/plastitanium/nosmooth
icon = 'icons/turf/shuttle.dmi'
icon_state = "wall"
smooth = SMOOTH_FALSE
/turf/simulated/wall/mineral/plastitanium/overspace
icon_state = "map-overspace"
fixed_underlay = list("space"=1)
//have to copypaste this code
/turf/simulated/wall/mineral/plastitanium/interior/copyTurf(turf/T)
if(T.type != type)
T.ChangeTurf(type)
if(underlays.len)
T.underlays = underlays
if(T.icon_state != icon_state)
T.icon_state = icon_state
if(T.icon != icon)
T.icon = icon
if(T.color != color)
T.color = color
if(T.dir != dir)
T.dir = dir
T.transform = transform
return T
/turf/simulated/wall/mineral/plastitanium/copyTurf(turf/T)
. = ..()
T.transform = transform
+1 -1
View File
@@ -16,7 +16,7 @@
/datum/crafting_recipe/IED
name = "IED"
result = /obj/item/weapon/grenade/iedcasing/filled
result = /obj/item/weapon/grenade/iedcasing
reqs = list(/datum/reagent/fuel = 50,
/obj/item/stack/cable_coil = 1,
/obj/item/device/assembly/igniter = 1,
+38 -40
View File
@@ -19,7 +19,7 @@
var/ore_pickup_rate = 15
var/sheet_per_ore = 1
var/point_upgrade = 1
var/list/ore_values = list(("sand" = 1), ("iron" = 1), ("plasma" = 15), ("silver" = 16), ("gold" = 18), ("uranium" = 30), ("diamond" = 50), ("bluespace crystal" = 50), ("bananium" = 60), ("tranquillite" = 60))
var/list/ore_values = list(("sand" = 1), ("iron" = 1), ("plasma" = 15), ("silver" = 16), ("gold" = 18), ("titanium" = 30), ("uranium" = 30), ("diamond" = 50), ("bluespace crystal" = 50), ("bananium" = 60), ("tranquillite" = 60))
var/list/supply_consoles = list("Science", "Robotics", "Research Director's Desk", "Mechanic", "Engineering" = list("metal", "glass", "plasma"), "Chief Engineer's Desk" = list("metal", "glass", "plasma"), "Atmospherics" = list("metal", "glass", "plasma"), "Bar" = list("uranium", "plasma"), "Virology" = list("plasma", "uranium", "gold"))
speed_process = 1
@@ -175,17 +175,28 @@
dat += "<br>" //just looks nicer
dat += text("[capitalize(s.name)]: [s.amount] <A href='?src=[UID()];release=[s.type]'>Release</A><br>")
if((/obj/item/stack/sheet/metal in stack_list) && (/obj/item/stack/sheet/mineral/plasma in stack_list))
var/obj/item/stack/sheet/metalstack = stack_list[/obj/item/stack/sheet/metal]
var/obj/item/stack/sheet/plasmastack = stack_list[/obj/item/stack/sheet/mineral/plasma]
if(min(metalstack.amount, plasmastack.amount))
dat += text("Plasteel Alloy (Metal + Plasma): <A href='?src=[UID()];plasteel=1'>Smelt</A><BR>")
if((/obj/item/stack/sheet/glass in stack_list) && (/obj/item/stack/sheet/mineral/plasma in stack_list))
var/obj/item/stack/sheet/glassstack = stack_list[/obj/item/stack/sheet/glass]
var/obj/item/stack/sheet/plasmastack = stack_list[/obj/item/stack/sheet/mineral/plasma]
if(min(glassstack.amount, plasmastack.amount))
dat += "Plasma Glass (Glass + Plasma): <A href='?src=[UID()];plasglass=1'>Smelt</A><BR>"
var/obj/item/stack/sheet/metalstack
if(/obj/item/stack/sheet/metal in stack_list)
metalstack = stack_list[/obj/item/stack/sheet/metal]
var/obj/item/stack/sheet/glass/glassstack
if(/obj/item/stack/sheet/glass in stack_list)
glassstack = stack_list[/obj/item/stack/sheet/glass]
var/obj/item/stack/sheet/plasmastack
if((/obj/item/stack/sheet/mineral/plasma in stack_list))
plasmastack = stack_list[/obj/item/stack/sheet/mineral/plasma]
var/obj/item/stack/sheet/mineral/titaniumstack
if((/obj/item/stack/sheet/mineral/titanium in stack_list))
titaniumstack = stack_list[/obj/item/stack/sheet/mineral/titanium]
if(metalstack && plasmastack && min(metalstack.amount, plasmastack.amount))
dat += text("Plasteel Alloy (Metal + Plasma): <A href='?src=[UID()];alloytype1=/obj/item/stack/sheet/metal;alloytype2=/obj/item/stack/sheet/mineral/plasma;alloytypeout=/obj/item/stack/sheet/plasteel'>Smelt</A><BR>")
if(titaniumstack && plasmastack && min(titaniumstack.amount, plasmastack.amount))
dat += text("Plastitanium Alloy (Titanium + Plasma): <A href='?src=[UID()];alloytype1=/obj/item/stack/sheet/mineral/titanium;alloytype2=/obj/item/stack/sheet/mineral/plasma;alloytypeout=/obj/item/stack/sheet/mineral/plastitanium'>Smelt</A><BR>")
if(glassstack && plasmastack && min(glassstack.amount, plasmastack.amount))
dat += text("Plasma Glass (Glass + Plasma): <A href='?src=[UID()];alloytype1=/obj/item/stack/sheet/glass;alloytype2=/obj/item/stack/sheet/mineral/plasma;alloytypeout=/obj/item/stack/sheet/plasmaglass'>Smelt</A><BR>")
dat += text("<br><div class='statusDisplay'><b>Mineral Value List:</b><BR>[get_ore_values()]</div>")
var/datum/browser/popup = new(user, "console_stacking_machine", "Ore Redemption Machine", 400, 500)
@@ -242,37 +253,24 @@
else
to_chat(usr, "<span class='warning'>Required access not found.</span>")
if(href_list["plasteel"])
if(href_list["alloytype1"] && href_list["alloytype2"] && href_list["alloytypeout"])
var/alloytype1 = text2path(href_list["alloytype1"])
var/alloytype2 = text2path(href_list["alloytype2"])
var/alloytypeout = text2path(href_list["alloytypeout"])
if(check_access(inserted_id) || allowed(usr))
if(!(/obj/item/stack/sheet/metal in stack_list)) return
if(!(/obj/item/stack/sheet/mineral/plasma in stack_list)) return
var/obj/item/stack/sheet/metalstack = stack_list[/obj/item/stack/sheet/metal]
var/obj/item/stack/sheet/plasmastack = stack_list[/obj/item/stack/sheet/mineral/plasma]
if(!(alloytype1 in stack_list))
return
if(!(alloytype2 in stack_list))
return
var/obj/item/stack/sheet/stack1 = stack_list[alloytype1]
var/obj/item/stack/sheet/stack2 = stack_list[alloytype2]
var/desired = input("How much?", "How much would you like to smelt?", 1) as num
var/obj/item/stack/sheet/plasteel/plasteelout = new
plasteelout.amount = round(min(desired,50,metalstack.amount,plasmastack.amount))
if(plasteelout.amount >= 1)
metalstack.amount -= plasteelout.amount
plasmastack.amount -= plasteelout.amount
unload_mineral(plasteelout)
else
to_chat(usr, "<span class='warning'>Required access not found.</span>")
if(href_list["plasglass"])
if(check_access(inserted_id) || allowed(usr))
if(!(/obj/item/stack/sheet/glass in stack_list)) return
if(!(/obj/item/stack/sheet/mineral/plasma in stack_list)) return
var/obj/item/stack/sheet/glassstack = stack_list[/obj/item/stack/sheet/glass]
var/obj/item/stack/sheet/plasmastack = stack_list[/obj/item/stack/sheet/mineral/plasma]
var/desired = input("How much?", "How much would you like to smelt?", 1) as num
var/obj/item/stack/sheet/plasmaglass/plasglassout = new
plasglassout.amount = round(min(desired, 50, glassstack.amount, plasmastack.amount))
if(plasglassout.amount >= 1)
glassstack.amount -= plasglassout.amount
plasmastack.amount -= plasglassout.amount
unload_mineral(plasglassout)
var/obj/item/stack/sheet/alloyout = new alloytypeout
alloyout.amount = round(min(desired,50,stack1.amount,stack2.amount))
if(alloyout.amount >= 1)
stack1.amount -= alloyout.amount
stack2.amount -= alloyout.amount
unload_mineral(alloyout)
else
to_chat(usr, "<span class='warning'>Required access not found.</span>")
updateUsrDialog()
+92 -54
View File
@@ -25,93 +25,102 @@
if(machine.ore_iron || machine.ore_glass || machine.ore_plasma || machine.ore_uranium || machine.ore_gold || machine.ore_silver || machine.ore_diamond || machine.ore_clown || machine.ore_mime || machine.ore_adamantine)
if(machine.ore_iron)
if(machine.selected_iron==1)
dat += text("<A href='?src=[UID()];sel_iron=no'><font color='green'>Smelting</font></A> ")
dat += "<A href='?src=[UID()];sel_iron=no'><font color='green'>Smelting</font></A> "
else
dat += text("<A href='?src=[UID()];sel_iron=yes'><font color='red'>Not smelting</font></A> ")
dat += text("Iron: [machine.ore_iron]<br>")
dat += "<A href='?src=[UID()];sel_iron=yes'><font color='red'>Not smelting</font></A> "
dat += "Iron: [machine.ore_iron]<br>"
else
machine.selected_iron = 0
//sand - glass
if(machine.ore_glass)
if(machine.selected_glass==1)
dat += text("<A href='?src=[UID()];sel_glass=no'><font color='green'>Smelting</font></A> ")
dat += "<A href='?src=[UID()];sel_glass=no'><font color='green'>Smelting</font></A> "
else
dat += text("<A href='?src=[UID()];sel_glass=yes'><font color='red'>Not smelting</font></A> ")
dat += text("Sand: [machine.ore_glass]<br>")
dat += "<A href='?src=[UID()];sel_glass=yes'><font color='red'>Not smelting</font></A> "
dat += "Sand: [machine.ore_glass]<br>"
else
machine.selected_glass = 0
//plasma
if(machine.ore_plasma)
if(machine.selected_plasma==1)
dat += text("<A href='?src=[UID()];sel_plasma=no'><font color='green'>Smelting</font></A> ")
dat += "<A href='?src=[UID()];sel_plasma=no'><font color='green'>Smelting</font></A> "
else
dat += text("<A href='?src=[UID()];sel_plasma=yes'><font color='red'>Not smelting</font></A> ")
dat += text("Plasma: [machine.ore_plasma]<br>")
dat += "<A href='?src=[UID()];sel_plasma=yes'><font color='red'>Not smelting</font></A> "
dat += "Plasma: [machine.ore_plasma]<br>"
else
machine.selected_plasma = 0
//uranium
if(machine.ore_uranium)
if(machine.selected_uranium==1)
dat += text("<A href='?src=[UID()];sel_uranium=no'><font color='green'>Smelting</font></A> ")
dat += "<A href='?src=[UID()];sel_uranium=no'><font color='green'>Smelting</font></A> "
else
dat += text("<A href='?src=[UID()];sel_uranium=yes'><font color='red'>Not smelting</font></A> ")
dat += text("Uranium: [machine.ore_uranium]<br>")
dat += "<A href='?src=[UID()];sel_uranium=yes'><font color='red'>Not smelting</font></A> "
dat += "Uranium: [machine.ore_uranium]<br>"
else
machine.selected_uranium = 0
//gold
if(machine.ore_gold)
if(machine.selected_gold==1)
dat += text("<A href='?src=[UID()];sel_gold=no'><font color='green'>Smelting</font></A> ")
dat += "<A href='?src=[UID()];sel_gold=no'><font color='green'>Smelting</font></A> "
else
dat += text("<A href='?src=[UID()];sel_gold=yes'><font color='red'>Not smelting</font></A> ")
dat += text("Gold: [machine.ore_gold]<br>")
dat += "<A href='?src=[UID()];sel_gold=yes'><font color='red'>Not smelting</font></A> "
dat += "Gold: [machine.ore_gold]<br>"
else
machine.selected_gold = 0
//silver
if(machine.ore_silver)
if(machine.selected_silver==1)
dat += text("<A href='?src=[UID()];sel_silver=no'><font color='green'>Smelting</font></A> ")
dat += "<A href='?src=[UID()];sel_silver=no'><font color='green'>Smelting</font></A> "
else
dat += text("<A href='?src=[UID()];sel_silver=yes'><font color='red'>Not smelting</font></A> ")
dat += text("Silver: [machine.ore_silver]<br>")
dat += "<A href='?src=[UID()];sel_silver=yes'><font color='red'>Not smelting</font></A> "
dat += "Silver: [machine.ore_silver]<br>"
else
machine.selected_silver = 0
//diamond
if(machine.ore_diamond)
if(machine.selected_diamond==1)
dat += text("<A href='?src=[UID()];sel_diamond=no'><font color='green'>Smelting</font></A> ")
dat += "<A href='?src=[UID()];sel_diamond=no'><font color='green'>Smelting</font></A> "
else
dat += text("<A href='?src=[UID()];sel_diamond=yes'><font color='red'>Not smelting</font></A> ")
dat += text("Diamond: [machine.ore_diamond]<br>")
dat += "<A href='?src=[UID()];sel_diamond=yes'><font color='red'>Not smelting</font></A> "
dat += "Diamond: [machine.ore_diamond]<br>"
else
machine.selected_diamond = 0
//bananium
if(machine.ore_clown)
if(machine.selected_clown==1)
dat += text("<A href='?src=[UID()];sel_clown=no'><font color='green'>Smelting</font></A> ")
dat += "<A href='?src=[UID()];sel_clown=no'><font color='green'>Smelting</font></A> "
else
dat += text("<A href='?src=[UID()];sel_clown=yes'><font color='red'>Not smelting</font></A> ")
dat += text("Bananium: [machine.ore_clown]<br>")
dat += "<A href='?src=[UID()];sel_clown=yes'><font color='red'>Not smelting</font></A> "
dat += "Bananium: [machine.ore_clown]<br>"
else
machine.selected_clown = 0
//tranquillite
if(machine.ore_mime)
if(machine.selected_mime==1)
dat += text("<A href='?src=[UID()];sel_mime=no'><font color='green'>Smelting</font></A> ")
dat += "<A href='?src=[UID()];sel_mime=no'><font color='green'>Smelting</font></A> "
else
dat += text("<A href='?src=[UID()];sel_mime=yes'><font color='red'>Not smelting</font></A> ")
dat += text("Tranquillite: [machine.ore_mime]<br>")
dat += "<A href='?src=[UID()];sel_mime=yes'><font color='red'>Not smelting</font></A> "
dat += "Tranquillite: [machine.ore_mime]<br>"
else
machine.selected_mime = 0
//titanium
if(machine.ore_titanium)
if (machine.selected_titanium==1)
dat += "<A href='?src=\ref[src];sel_titanium=no'><font color='green'>Smelting</font></A> "
else
dat += "<A href='?src=\ref[src];sel_titanium=yes'><font color='red'>Not smelting</font></A> "
dat += "Titanium: [machine.ore_titanium]<br>"
else
machine.selected_titanium = 0
//On or off
dat += text("Machine is currently ")
@@ -175,6 +184,11 @@
machine.selected_mime = 1
else
machine.selected_mime = 0
if(href_list["sel_titanium"])
if (href_list["sel_titanium"] == "yes")
machine.selected_titanium = 1
else
machine.selected_titanium = 0
if(href_list["set_on"])
if(href_list["set_on"] == "on")
machine.on = 1
@@ -203,6 +217,7 @@
var/ore_clown = 0
var/ore_mime = 0
var/ore_adamantine = 0
var/ore_titanium = 0
var/selected_gold = 0
var/selected_silver = 0
var/selected_diamond = 0
@@ -212,92 +227,106 @@
var/selected_iron = 0
var/selected_clown = 0
var/selected_mime = 0
var/selected_titanium = 0
var/on = 0 //0 = off, 1 =... oh you know!
/obj/machinery/mineral/processing_unit/process()
var/i
for(i = 0; i < 10; i++)
for(var/i in 1 to 10)
if(on)
if(selected_glass == 1 && selected_gold == 0 && selected_silver == 0 && selected_diamond == 0 && selected_plasma == 0 && selected_uranium == 0 && selected_iron == 0 && selected_clown == 0 && selected_mime == 0)
if(selected_glass && !selected_gold && !selected_silver && !selected_diamond && !selected_plasma && !selected_uranium && !selected_iron && !selected_clown && !selected_mime)
if(ore_glass > 0)
ore_glass--;
ore_glass--
generate_mineral(/obj/item/stack/sheet/glass)
else
on = 0
continue
if(selected_glass == 1 && selected_gold == 0 && selected_silver == 0 && selected_diamond == 0 && selected_plasma == 0 && selected_uranium == 0 && selected_iron == 1 && selected_clown == 0 && selected_mime == 0)
if(selected_glass && !selected_gold && !selected_silver && !selected_diamond && !selected_plasma && !selected_uranium && selected_iron && !selected_clown && !selected_mime)
if(ore_glass > 0 && ore_iron > 0)
ore_glass--;
ore_iron--;
ore_glass--
ore_iron--
generate_mineral(/obj/item/stack/sheet/rglass)
else
on = 0
continue
if(selected_glass == 0 && selected_gold == 1 && selected_silver == 0 && selected_diamond == 0 && selected_plasma == 0 && selected_uranium == 0 && selected_iron == 0 && selected_clown == 0 && selected_mime == 0)
if(!selected_glass && selected_gold && !selected_silver && !selected_diamond && !selected_plasma && !selected_uranium && !selected_iron && !selected_clown && !selected_mime)
if(ore_gold > 0)
ore_gold--;
ore_gold--
generate_mineral(/obj/item/stack/sheet/mineral/gold)
else
on = 0
continue
if(selected_glass == 0 && selected_gold == 0 && selected_silver == 1 && selected_diamond == 0 && selected_plasma == 0 && selected_uranium == 0 && selected_iron == 0 && selected_clown == 0 && selected_mime == 0)
if(!selected_glass && !selected_gold && selected_silver && !selected_diamond && !selected_plasma && !selected_uranium && !selected_iron && !selected_clown && !selected_mime)
if(ore_silver > 0)
ore_silver--;
ore_silver--
generate_mineral(/obj/item/stack/sheet/mineral/silver)
else
on = 0
continue
if(selected_glass == 0 && selected_gold == 0 && selected_silver == 0 && selected_diamond == 1 && selected_plasma == 0 && selected_uranium == 0 && selected_iron == 0 && selected_clown == 0 && selected_mime == 0)
if(!selected_glass && !selected_gold && !selected_silver && selected_diamond && !selected_plasma && !selected_uranium && !selected_iron && !selected_clown && !selected_mime)
if(ore_diamond > 0)
ore_diamond--;
ore_diamond--
generate_mineral(/obj/item/stack/sheet/mineral/diamond)
else
on = 0
continue
if(selected_glass == 0 && selected_gold == 0 && selected_silver == 0 && selected_diamond == 0 && selected_plasma == 1 && selected_uranium == 0 && selected_iron == 0 && selected_clown == 0 && selected_mime == 0)
if(!selected_glass && !selected_gold && !selected_silver && !selected_diamond && selected_plasma && !selected_uranium && !selected_iron && !selected_clown && !selected_mime)
if(ore_plasma > 0)
ore_plasma--;
ore_plasma--
generate_mineral(/obj/item/stack/sheet/mineral/plasma)
else
on = 0
continue
if(selected_glass == 0 && selected_gold == 0 && selected_silver == 0 && selected_diamond == 0 && selected_plasma == 0 && selected_uranium == 1 && selected_iron == 0 && selected_clown == 0 && selected_mime == 0)
if(!selected_glass && !selected_gold && !selected_silver && !selected_diamond && !selected_plasma && selected_uranium && !selected_iron && !selected_clown && !selected_mime)
if(ore_uranium > 0)
ore_uranium--;
ore_uranium--
generate_mineral(/obj/item/stack/sheet/mineral/uranium)
else
on = 0
continue
if(selected_glass == 0 && selected_gold == 0 && selected_silver == 0 && selected_diamond == 0 && selected_plasma == 0 && selected_uranium == 0 && selected_iron == 1 && selected_clown == 0 && selected_mime == 0)
if(!selected_glass && !selected_gold && !selected_silver && !selected_diamond && !selected_plasma && !selected_uranium && selected_iron && !selected_clown && !selected_mime)
if(ore_iron > 0)
ore_iron--;
ore_iron--
generate_mineral(/obj/item/stack/sheet/metal)
else
on = 0
continue
if(selected_glass == 0 && selected_gold == 0 && selected_silver == 0 && selected_diamond == 0 && selected_plasma == 1 && selected_uranium == 0 && selected_iron == 1 && selected_clown == 0 && selected_mime == 0)
if(!selected_glass && !selected_gold && !selected_silver && !selected_diamond && selected_plasma && !selected_uranium && selected_iron && !selected_clown && !selected_mime)
if(ore_iron > 0 && ore_plasma > 0)
ore_iron--;
ore_plasma--;
ore_iron--
ore_plasma--
generate_mineral(/obj/item/stack/sheet/plasteel)
else
on = 0
continue
if(selected_glass == 0 && selected_gold == 0 && selected_silver == 0 && selected_diamond == 0 && selected_plasma == 0 && selected_uranium == 0 && selected_iron == 0 && selected_clown == 1 && selected_mime == 0)
if(!selected_glass && !selected_gold && !selected_silver && !selected_diamond && !selected_plasma && !selected_uranium && !selected_iron && selected_clown && !selected_mime)
if(ore_clown > 0)
ore_clown--;
ore_clown--
generate_mineral(/obj/item/stack/sheet/mineral/bananium)
else
on = 0
continue
if(selected_glass == 0 && selected_gold == 0 && selected_silver == 0 && selected_diamond == 0 && selected_plasma == 0 && selected_uranium == 0 && selected_iron == 0 && selected_clown == 0 && selected_mime == 1)
if(!selected_glass && !selected_gold && !selected_silver && !selected_diamond && !selected_plasma && !selected_uranium && !selected_iron && !selected_clown && selected_mime)
if(ore_mime > 0)
ore_mime--;
ore_mime--
generate_mineral(/obj/item/stack/sheet/mineral/tranquillite)
else
on = 0
continue
if (!selected_glass && !selected_gold && !selected_silver && !selected_diamond && !selected_plasma && !selected_uranium && !selected_iron && !selected_clown && !selected_mime && selected_titanium)
if (ore_titanium > 0)
ore_titanium--
generate_mineral(/obj/item/stack/sheet/mineral/titanium)
else
on = 0
continue
if (!selected_glass && !selected_gold && !selected_silver && !selected_diamond && selected_plasma && !selected_uranium && !selected_iron && !selected_clown && !selected_mime && selected_titanium)
if (ore_titanium > 0)
ore_titanium--
ore_plasma--
generate_mineral(/obj/item/stack/sheet/mineral/plastitanium)
else
on = 0
continue
//if a non valid combination is selected
@@ -333,6 +362,9 @@
if(selected_mime == 1)
if(ore_mime <= 0)
b = 0
if(selected_titanium == 1)
if(ore_titanium <= 0)
b = 0
if(b) //if they are, deduct one from each, produce slag and shut the machine off
if(selected_gold == 1)
@@ -351,6 +383,8 @@
ore_clown--
if(selected_mime == 1)
ore_mime--
if(selected_titanium == 1)
ore_titanium--
generate_mineral(/obj/item/weapon/ore/slag)
on = 0
else
@@ -402,6 +436,10 @@
ore_mime++
O.loc = null
continue
if(istype(O,/obj/item/weapon/ore/titanium))
ore_titanium++
O.loc = null
continue
unload_mineral(O)
/obj/machinery/mineral/processing_unit/proc/generate_mineral(var/P)
-9
View File
@@ -362,15 +362,6 @@
icon_regular_floor = "podfloor"
floor_tile = /obj/item/stack/tile/pod
//Walls
/turf/simulated/wall/survival
name = "pod wall"
desc = "An easily-compressable wall used for temporary shelter."
icon = 'icons/turf/walls/survival_pod_walls.dmi'
icon_state = "smooth"
smooth = SMOOTH_MORE|SMOOTH_DIAGONAL
canSmoothWith = list(/turf/simulated/wall/survival, /obj/machinery/door/airlock/survival_pod)
//Door
/obj/machinery/door/airlock/survival_pod
icon = 'icons/obj/doors/airlocks/survival/survival.dmi'
+15 -6
View File
@@ -110,8 +110,7 @@ var/global/list/rockTurfEdgeCache = list(
"Uranium" = 5, "Diamond" = 1, "Gold" = 10,
"Silver" = 12, "Plasma" = 20, "Iron" = 40,
"Gibtonite" = 4, "Cave" = 2, "BScrystal" = 1,
/*, "Adamantine" =5*/)
//Currently, Adamantine won't spawn as it has no uses. -Durandan
"Titanium" = 11)
var/mineralChance = 13
/turf/simulated/mineral/random/New()
@@ -142,6 +141,8 @@ var/global/list/rockTurfEdgeCache = list(
M = new/turf/simulated/mineral/clown(src)
if("Tranquillite")
M = new/turf/simulated/mineral/mime(src)
if("Titanium")
M = new/turf/simulated/mineral/titanium(src)
if("BScrystal")
M = new/turf/simulated/mineral/bscrystal(src)
if(M)
@@ -155,9 +156,9 @@ var/global/list/rockTurfEdgeCache = list(
icon_state = "rock_highchance"
mineralChance = 25
mineralSpawnChanceList = list(
"Uranium" = 35, "Diamond" = 30,
"Gold" = 45, "Silver" = 50, "Plasma" = 50,
"BScrystal" = 20)
"Uranium" = 35, "Diamond" = 30, "Gold" = 45,
"Silver" = 50, "Plasma" = 50, "BScrystal" = 20,
"Titanium" = 45)
/turf/simulated/mineral/random/high_chance_clown
@@ -177,7 +178,7 @@ var/global/list/rockTurfEdgeCache = list(
mineralSpawnChanceList = list(
"Uranium" = 2, "Diamond" = 1, "Gold" = 4,
"Silver" = 6, "Plasma" = 15, "Iron" = 40,
"Gibtonite" = 2, "BScrystal" = 1)
"Gibtonite" = 2, "BScrystal" = 1, "Titanium" = 4)
/turf/simulated/mineral/random/low_chance/New()
icon_state = "rock"
@@ -228,6 +229,14 @@ var/global/list/rockTurfEdgeCache = list(
hidden = 1
scan_state = "rock_Silver"
/turf/simulated/mineral/titanium
name = "titanium deposit"
mineralType = /obj/item/weapon/ore/titanium
spreadChance = 5
spread = 1
hidden = 1
scan_state = "rock_Titanium"
/turf/simulated/mineral/plasma
name = "plasma deposit"
icon_state = "rock_Plasma"
+2 -1
View File
@@ -37,7 +37,8 @@
speak_emote = list("states")
wanted_objects = list(/obj/item/weapon/ore/diamond, /obj/item/weapon/ore/gold, /obj/item/weapon/ore/silver,
/obj/item/weapon/ore/plasma, /obj/item/weapon/ore/uranium, /obj/item/weapon/ore/iron,
/obj/item/weapon/ore/bananium, /obj/item/weapon/ore/tranquillite, /obj/item/weapon/ore/glass)
/obj/item/weapon/ore/bananium, /obj/item/weapon/ore/tranquillite, /obj/item/weapon/ore/glass,
/obj/item/weapon/ore/titanium)
healable = 0
var/mode = MINEDRONE_COLLECT
var/light_on = 0
+7
View File
@@ -142,6 +142,13 @@
refined_type = /obj/item/stack/sheet/mineral/tranquillite
materials = list(MAT_TRANQUILLITE=MINERAL_MATERIAL_AMOUNT)
/obj/item/weapon/ore/titanium
name = "titanium ore"
icon_state = "Titanium ore"
points = 50
materials = list(MAT_TITANIUM=MINERAL_MATERIAL_AMOUNT)
refined_type = /obj/item/stack/sheet/mineral/titanium
/obj/item/weapon/ore/slag
name = "slag"
desc = "Completely useless"
+5
View File
@@ -33,6 +33,7 @@
var/amt_iron = 0
var/amt_plasma = 0
var/amt_uranium = 0
var/amt_titanium = 0
var/amt_clown = 0
var/amt_mime = 0
var/amt_bluespace = 0
@@ -56,6 +57,8 @@
amt_clown++
if(istype(C,/obj/item/weapon/ore/tranquillite))
amt_mime++
if(istype(C, /obj/item/weapon/ore/titanium))
amt_titanium++
if(istype(C,/obj/item/weapon/ore/bluespace_crystal))
amt_bluespace++
@@ -74,6 +77,8 @@
dat += text("Plasma ore: [amt_plasma]<br>")
if(amt_uranium)
dat += text("Uranium ore: [amt_uranium]<br>")
if(amt_titanium)
dat += text("Titanium ore: [amt_titanium]<br>")
if(amt_clown)
dat += text("Bananium ore: [amt_clown]<br>")
if(amt_mime)
@@ -287,6 +287,7 @@
// Do species-specific reagent handling here
// Return 1 if it should do normal processing too
// Return the parent value if processing does not explicitly stop
// Return 0 if it shouldn't deplete and do its normal effect
// Other return values will cause weird badness
/datum/species/proc/handle_reagents(mob/living/carbon/human/H, datum/reagent/R)
@@ -744,6 +744,12 @@
if(speech_pref)
H.mind.speech_span = "wingdings"
/datum/species/grey/handle_reagents(mob/living/carbon/human/H, datum/reagent/R)
if(R.id == "sacid")
H.reagents.del_reagent(R.id)
return 0
return ..()
/datum/species/diona
name = "Diona"
name_plural = "Dionaea"
@@ -963,10 +969,10 @@
speech_chance = 20
male_scream_sound = 'sound/voice/DraskTalk2.ogg'
female_scream_sound = 'sound/voice/DraskTalk2.ogg'
male_cough_sounds = null //whale cough when
female_cough_sounds = null
male_sneeze_sound = null
female_sneeze_sound = null
male_cough_sounds = 'sound/voice/DraskCough.ogg'
female_cough_sounds = 'sound/voice/DraskCough.ogg'
male_sneeze_sound = 'sound/voice/DraskSneeze.ogg'
female_sneeze_sound = 'sound/voice/DraskSneeze.ogg'
burn_mod = 2
//exotic_blood = "cryoxadone"
@@ -490,6 +490,10 @@ Difficulty: Hard
icon_state = "hierophant_telegraph_teleport"
duration = 9
/obj/effect/temp_visual/hierophant/telegraph/edge
icon_state = "hierophant_telegraph_edge"
duration = 40
/obj/effect/temp_visual/hierophant/blast
icon = 'icons/effects/effects.dmi'
icon_state = "hierophant_blast"
@@ -982,6 +982,14 @@
icon_state = "skrell_hair_f"
gender = FEMALE
/datum/sprite_accessory/hair/skrell/skr_tentacleslong
name = "Long Skrell Tentacles"
icon_state = "skrell_hair_verylong"
/datum/sprite_accessory/hair/skrell/skr_tentaclesshort
name = "Short Skrell Tentacles"
icon_state = "skrell_hair_veryshort"
/datum/sprite_accessory/hair/skrell/skr_gold_m
name = "Gold plated Skrell Male Tentacles"
icon_state = "skrell_hair_m"
@@ -1008,6 +1016,117 @@
gender = FEMALE
secondary_theme = "cloth"
/datum/sprite_accessory/hair/skrell/skr_gclothtentacle_m
name = "Ombre Dye, Skrell Male Tentacles"
icon_state = "skrell_hair_m"
gender = MALE
secondary_theme = "gradient"
/datum/sprite_accessory/hair/skrell/skr_gclothtentacle_f
name = "Ombre Dye, Skrell Female Tentacles"
icon_state = "skrell_hair_f"
gender = FEMALE
secondary_theme = "gradient"
/datum/sprite_accessory/hair/skrell/skr_gclothtentacleslong
name = "Ombre Dye, Long Skrell Tentacles"
icon_state = "skrell_hair_verylong"
secondary_theme = "gradient"
/datum/sprite_accessory/hair/skrell/skr_gclothtentaclesshort
name = "Ombre Dye, Short Skrell Tentacles"
icon_state = "skrell_hair_veryshort"
secondary_theme = "gradient"
/datum/sprite_accessory/hair/skrell/skr_diablacktentacle_m
name = "Black headress Skrell Male Tentacles"
icon_state = "skrell_hair_m"
gender = MALE
secondary_theme = "blackdia"
no_sec_colour = 1
/datum/sprite_accessory/hair/skrell/skr_diablacktentacle_f
name = "Black headress Skrell Female Tentacles"
icon_state = "skrell_hair_f"
gender = FEMALE
secondary_theme = "blackdia"
no_sec_colour = 1
/datum/sprite_accessory/hair/skrell/skr_diablacktentacleslong
name = "Black headress Long Skrell Tentacles"
icon_state = "skrell_hair_verylong"
secondary_theme = "blackdia"
no_sec_colour = 1
/datum/sprite_accessory/hair/skrell/skr_diagoldtentacle_m
name = "Gold headress Skrell Male Tentacles"
icon_state = "skrell_hair_m"
gender = MALE
secondary_theme = "golddia"
no_sec_colour = 1
/datum/sprite_accessory/hair/skrell/skr_diagoldtentacle_f
name = "Gold headress Skrell Female Tentacles"
icon_state = "skrell_hair_f"
gender = FEMALE
secondary_theme = "golddia"
no_sec_colour = 1
/datum/sprite_accessory/hair/skrell/skr_diagoldtentacleslong
name = "Gold headress Long Skrell Tentacles"
icon_state = "skrell_hair_verylong"
secondary_theme = "golddia"
no_sec_colour = 1
/datum/sprite_accessory/hair/skrell/skr_diasilvertentacle_m
name = "Silver headress Skrell Male Tentacles"
icon_state = "skrell_hair_m"
gender = MALE
secondary_theme = "silvdia"
no_sec_colour = 1
/datum/sprite_accessory/hair/skrell/skr_diasilvertentacle_f
name = "Silver headress Skrell Female Tentacles"
icon_state = "skrell_hair_f"
gender = FEMALE
secondary_theme = "silvdia"
no_sec_colour = 1
/datum/sprite_accessory/hair/skrell/skr_diasilvertentacleslong
name = "Silver headress Long Skrell Tentacles"
icon_state = "skrell_hair_verylong"
secondary_theme = "silvdia"
no_sec_colour = 1
/datum/sprite_accessory/hair/skrell/skr_festivetentacle_m
name = "Festive headress Skrell Male Tentacles"
icon_state = "skrell_hair_m"
gender = MALE
secondary_theme = "fest"
no_sec_colour = 1
/datum/sprite_accessory/hair/skrell/skr_festivetentacle_f
name = "Festive headress Skrell Female Tentacles"
icon_state = "skrell_hair_f"
gender = FEMALE
secondary_theme = "fest"
no_sec_colour = 1
/datum/sprite_accessory/hair/skrell/skr_festivetentacleslong
name = "Festive headress Long Skrell Tentacles"
icon_state = "skrell_hair_verylong"
secondary_theme = "fest"
no_sec_colour = 1
/datum/sprite_accessory/hair/skrell/skr_festivetentaclesshort
name = "Festive headress Short Skrell Tentacles"
icon_state = "skrell_hair_veryshort"
secondary_theme = "fest"
no_sec_colour = 1
//Tajaran styles
/datum/sprite_accessory/hair/tajara
species_allowed = list("Tajaran")
glasses_over = 1
@@ -1064,6 +1183,11 @@
icon_state = "hair_curly"
glasses_over = null
/datum/sprite_accessory/hair/tajara/taj_hair_bedhead
name = "Tajara bedhead"
icon_state = "hair_tbedhead"
glasses_over = null
/datum/sprite_accessory/hair/tajara/taj_hair_retro
name = "Tajaran Ladies' Retro"
icon_state = "hair_ladies_retro"
+1
View File
@@ -239,6 +239,7 @@
\[list\] - \[/list\] : A list.<br>
\[*\] : A dot used for lists.<br>
\[hr\] : Adds a horizontal rule.
\[time\] : Inserts the current station time in HH:MM:SS.<br>
</BODY></HTML>"}, "window=paper_help")
/obj/item/weapon/paper/Topic(href, href_list)
+129
View File
@@ -0,0 +1,129 @@
// Ported from TG
/obj/item/weapon/paperplane
name = "paper plane"
desc = "Paper, folded in the shape of a plane."
icon = 'icons/obj/bureaucracy.dmi'
icon_state = "paperplane"
throw_range = 7
throw_speed = 1
throwforce = 0
w_class = WEIGHT_CLASS_TINY
burn_state = FLAMMABLE
burntime = 5
no_spin = TRUE
var/obj/item/weapon/paper/internal_paper
/obj/item/weapon/paperplane/New(loc, obj/item/weapon/paper/new_paper)
..()
pixel_y = rand(-8, 8)
pixel_x = rand(-9, 9)
if(new_paper)
internal_paper = new_paper
flags = new_paper.flags
color = new_paper.color
new_paper.forceMove(src)
else
internal_paper = new /obj/item/weapon/paper(src)
update_icon()
/obj/item/weapon/paperplane/Destroy()
QDEL_NULL(internal_paper)
return ..()
/obj/item/weapon/paperplane/suicide_act(mob/living/user)
user.Stun(10)
user.visible_message("<span class='suicide'>[user] jams [name] in \his nose. It looks like \he's trying to commit suicide!</span>")
user.EyeBlurry(6)
var/obj/item/organ/internal/eyes/E = user.get_int_organ(/obj/item/organ/internal/eyes)
if(E)
E.take_damage(8, 1)
sleep(10)
return BRUTELOSS
/obj/item/weapon/paperplane/update_icon()
overlays.Cut()
var/list/stamped = internal_paper.stamped
if(!stamped)
stamped = new
else if(stamped)
for(var/S in stamped)
var/obj/item/weapon/stamp = S
var/image/stampoverlay = image('icons/obj/bureaucracy.dmi', "paperplane_[initial(stamp.icon_state)]")
overlays += stampoverlay
/obj/item/weapon/paperplane/attack_self(mob/user) // Unfold the paper plane
to_chat(user, "<span class='notice'>You unfold [src].</span>")
if(internal_paper)
internal_paper.forceMove(get_turf(src))
user.put_in_hands(internal_paper)
internal_paper = null
qdel(src)
/obj/item/weapon/paperplane/attackby(obj/item/P, mob/living/carbon/human/user, params)
..()
if(istype(P, /obj/item/weapon/pen) || istype(P, /obj/item/toy/crayon))
to_chat(user, "<span class='notice'>You should unfold [src] before changing it.</span>")
return
else if(istype(P, /obj/item/weapon/stamp)) //we don't randomize stamps on a paperplane
internal_paper.attackby(P, user) //spoofed attack to update internal paper.
update_icon()
else if(is_hot(P))
if(user.disabilities & CLUMSY && prob(10))
user.visible_message("<span class='warning'>[user] accidentally ignites themselves!</span>", \
"<span class='userdanger'>You miss [src] and accidentally light yourself on fire!</span>")
user.unEquip(P)
user.adjust_fire_stacks(1)
user.IgniteMob()
return
if(!in_range(user, src)) //to prevent issues as a result of telepathically lighting a paper
return
user.unEquip(src)
user.visible_message("<span class='danger'>[user] lights [src] on fire with [P]!</span>", "<span class='danger'>You lights [src] on fire!</span>")
fire_act()
add_fingerprint(user)
/obj/item/weapon/paperplane/throw_impact(atom/hit_atom)
if(..())
return
if(!ishuman(hit_atom))
return
var/mob/living/carbon/human/H = hit_atom
if(prob(2))
if(H.head && H.head.flags_cover & HEADCOVERSEYES)
return
if(H.wear_mask && H.wear_mask.flags_cover & MASKCOVERSEYES)
return
if(H.glasses && H.glasses.flags_cover & GLASSESCOVERSEYES)
return
visible_message("<span class='danger'>[src] hits [H] in the eye!</span>")
H.EyeBlurry(6)
H.Weaken(2)
var/obj/item/organ/internal/eyes/E = H.get_int_organ(/obj/item/organ/internal/eyes)
if(E)
E.take_damage(8, 1)
H.emote("scream")
/obj/item/weapon/paper/AltClick(mob/user, obj/item/I)
var/mob/living/carbon/human/H = user
I = H.is_in_hands(/obj/item/weapon/paper)
if(I)
ProcFoldPlane(H, I)
else
..()
/obj/item/weapon/paper/proc/ProcFoldPlane(mob/living/carbon/user, obj/item/I)
if(istype(user))
if((!in_range(src, user)) || user.stat || user.restrained())
return
to_chat(user, "<span class='notice'>You fold [src] into the shape of a plane!</span>")
user.unEquip(src)
I = new /obj/item/weapon/paperplane(user, src)
user.put_in_hands(I)
else
to_chat(user, "<span class='notice'>You lack the dexterity to fold [src].</span>")
-2
View File
@@ -467,8 +467,6 @@ obj/structure/cable/proc/cableColor(var/colorC)
// Definitions
////////////////////////////////
#define MAXCOIL 30
var/global/list/datum/stack_recipe/cable_coil_recipes = list(
new /datum/stack_recipe/cable_restraints("cable restraints", /obj/item/weapon/restraints/handcuffs/cable, 15),
)
@@ -186,7 +186,7 @@
id = "handdrill"
req_tech = list("materials" = 4, "engineering" = 6)
build_type = PROTOLATHE
materials = list(MAT_METAL = 3500, MAT_SILVER = 1500, MAT_GOLD = 1000)
materials = list(MAT_METAL = 3500, MAT_SILVER = 1500, MAT_TITANIUM = 2500)
build_path = /obj/item/weapon/screwdriver/power
category = list("Equipment")
@@ -197,7 +197,7 @@
req_tech = list("materials" = 4, "engineering" = 6, "magnets" = 6) // added one more requirment since the Jaws of Life are a bit OP
build_path = /obj/item/weapon/crowbar/power
build_type = PROTOLATHE
materials = list(MAT_METAL = 4500, MAT_SILVER = 2500, MAT_DIAMOND = 1000)
materials = list(MAT_METAL = 4500, MAT_SILVER = 2500, MAT_TITANIUM = 3500)
category = list("Equipment")
/datum/design/alienwrench
@@ -207,7 +207,7 @@
req_tech = list("engineering" = 5, "materials" = 5, "abductor" = 4)
build_path = /obj/item/weapon/wrench/abductor
build_type = PROTOLATHE
materials = list(MAT_METAL = 5000, MAT_SILVER = 2500, MAT_PLASMA = 1000, MAT_DIAMOND = 2000)
materials = list(MAT_METAL = 5000, MAT_SILVER = 2500, MAT_PLASMA = 1000, MAT_TITANIUM = 2000, MAT_DIAMOND = 2000)
category = list("Equipment")
/datum/design/alienwirecutters
@@ -217,7 +217,7 @@
req_tech = list("engineering" = 5, "materials" = 5, "abductor" = 4)
build_path = /obj/item/weapon/wirecutters/abductor
build_type = PROTOLATHE
materials = list(MAT_METAL = 5000, MAT_SILVER = 2500, MAT_PLASMA = 1000, MAT_DIAMOND = 2000)
materials = list(MAT_METAL = 5000, MAT_SILVER = 2500, MAT_PLASMA = 1000, MAT_TITANIUM = 2000, MAT_DIAMOND = 2000)
category = list("Equipment")
/datum/design/alienscrewdriver
@@ -227,7 +227,7 @@
req_tech = list("engineering" = 5, "materials" = 5, "abductor" = 4)
build_path = /obj/item/weapon/screwdriver/abductor
build_type = PROTOLATHE
materials = list(MAT_METAL = 5000, MAT_SILVER = 2500, MAT_PLASMA = 1000, MAT_DIAMOND = 2000)
materials = list(MAT_METAL = 5000, MAT_SILVER = 2500, MAT_PLASMA = 1000, MAT_TITANIUM = 2000, MAT_DIAMOND = 2000)
category = list("Equipment")
/datum/design/aliencrowbar
@@ -237,7 +237,7 @@
req_tech = list("engineering" = 5, "materials" = 5, "abductor" = 4)
build_path = /obj/item/weapon/crowbar/abductor
build_type = PROTOLATHE
materials = list(MAT_METAL = 5000, MAT_SILVER = 2500, MAT_PLASMA = 1000, MAT_DIAMOND = 2000)
materials = list(MAT_METAL = 5000, MAT_SILVER = 2500, MAT_PLASMA = 1000, MAT_TITANIUM = 2000, MAT_DIAMOND = 2000)
category = list("Equipment")
/datum/design/alienwelder
@@ -247,7 +247,7 @@
req_tech = list("engineering" = 5, "plasmatech" = 5, "abductor" = 4)
build_path = /obj/item/weapon/weldingtool/abductor
build_type = PROTOLATHE
materials = list(MAT_METAL = 5000, MAT_SILVER = 2500, MAT_PLASMA = 5000, MAT_DIAMOND = 2000)
materials = list(MAT_METAL = 5000, MAT_SILVER = 2500, MAT_PLASMA = 5000, MAT_TITANIUM = 2000, MAT_DIAMOND = 2000)
category = list("Equipment")
/datum/design/alienmultitool
@@ -257,5 +257,5 @@
req_tech = list("engineering" = 5, "programming" = 5, "abductor" = 4)
build_path = /obj/item/device/multitool/abductor
build_type = PROTOLATHE
materials = list(MAT_METAL = 5000, MAT_SILVER = 2500, MAT_PLASMA = 5000, MAT_DIAMOND = 2000)
materials = list(MAT_METAL = 5000, MAT_SILVER = 2500, MAT_PLASMA = 5000, MAT_TITANIUM = 2000, MAT_DIAMOND = 2000)
category = list("Equipment")
@@ -318,7 +318,7 @@
id = "gygax_armor"
build_type = MECHFAB
build_path = /obj/item/mecha_parts/part/gygax_armour
materials = list(MAT_METAL=25000,MAT_DIAMOND=10000)
materials = list(MAT_METAL=15000,MAT_DIAMOND=10000,MAT_TITANIUM=10000)
construction_time = 600
category = list("Gygax")
@@ -391,7 +391,7 @@
id = "durand_armor"
build_type = MECHFAB
build_path = /obj/item/mecha_parts/part/durand_armor
materials = list(MAT_METAL=50000,MAT_URANIUM=30000)
materials = list(MAT_METAL=30000,MAT_URANIUM=25000,MAT_TITANIUM=20000)
construction_time = 600
category = list("Durand")
@@ -592,7 +592,7 @@
id = "phazon_armor"
build_type = MECHFAB
build_path = /obj/item/mecha_parts/part/phazon_armor
materials = list(MAT_METAL=45000,MAT_PLASMA=30000)
materials = list(MAT_METAL=25000,MAT_PLASMA=20000,MAT_TITANIUM=20000)
construction_time = 300
category = list("Phazon")
@@ -192,7 +192,7 @@
req_tech = list("biotech" = 4, "materials" = 4, "abductor" = 3)
build_path = /obj/item/weapon/scalpel/alien
build_type = PROTOLATHE
materials = list(MAT_METAL = 2000, MAT_SILVER = 1500, MAT_GOLD = 500, MAT_PLASMA = 500)
materials = list(MAT_METAL = 2000, MAT_SILVER = 1500, MAT_PLASMA = 500, MAT_TITANIUM = 1500)
category = list("Medical")
/datum/design/alienhemostat
@@ -202,7 +202,7 @@
req_tech = list("biotech" = 4, "materials" = 4, "abductor" = 3)
build_path = /obj/item/weapon/hemostat/alien
build_type = PROTOLATHE
materials = list(MAT_METAL = 2000, MAT_SILVER = 1500, MAT_GOLD = 500, MAT_PLASMA = 500)
materials = list(MAT_METAL = 2000, MAT_SILVER = 1500, MAT_PLASMA = 500, MAT_TITANIUM = 1500)
category = list("Medical")
/datum/design/alienretractor
@@ -212,7 +212,7 @@
req_tech = list("biotech" = 4, "materials" = 4, "abductor" = 3)
build_path = /obj/item/weapon/retractor/alien
build_type = PROTOLATHE
materials = list(MAT_METAL = 2000, MAT_SILVER = 1500, MAT_GOLD = 500, MAT_PLASMA = 500)
materials = list(MAT_METAL = 2000, MAT_SILVER = 1500, MAT_PLASMA = 500, MAT_TITANIUM = 1500)
category = list("Medical")
/datum/design/aliensaw
@@ -222,7 +222,7 @@
req_tech = list("biotech" = 4, "materials" = 4, "abductor" = 3)
build_path = /obj/item/weapon/circular_saw/alien
build_type = PROTOLATHE
materials = list(MAT_METAL = 10000, MAT_SILVER = 2500, MAT_GOLD = 1000, MAT_PLASMA = 1000)
materials = list(MAT_METAL = 10000, MAT_SILVER = 2500, MAT_PLASMA = 1000, MAT_TITANIUM = 1500)
category = list("Medical")
/datum/design/aliendrill
@@ -232,7 +232,7 @@
req_tech = list("biotech" = 4, "materials" = 4, "abductor" = 3)
build_path = /obj/item/weapon/surgicaldrill/alien
build_type = PROTOLATHE
materials = list(MAT_METAL = 10000, MAT_SILVER = 2500, MAT_GOLD = 1000, MAT_PLASMA = 1000)
materials = list(MAT_METAL = 10000, MAT_SILVER = 2500, MAT_PLASMA = 1000, MAT_TITANIUM = 1500)
category = list("Medical")
/datum/design/aliencautery
@@ -242,7 +242,7 @@
req_tech = list("biotech" = 4, "materials" = 4, "abductor" = 3)
build_path = /obj/item/weapon/cautery/alien
build_type = PROTOLATHE
materials = list(MAT_METAL = 2000, MAT_SILVER = 1500, MAT_GOLD = 500, MAT_PLASMA = 500)
materials = list(MAT_METAL = 2000, MAT_SILVER = 1500, MAT_PLASMA = 500, MAT_TITANIUM = 1500)
category = list("Medical")
/////////////////////////////////////////
@@ -52,7 +52,7 @@
id = "bluespace_cell"
req_tech = list("powerstorage" = 6, "materials" = 5, "engineering" = 5, "bluespace" = 5)
build_type = PROTOLATHE | MECHFAB
materials = list(MAT_METAL = 800, MAT_GOLD = 300, MAT_SILVER = 300, MAT_GLASS = 160, MAT_DIAMOND = 160)
materials = list(MAT_METAL = 800, MAT_GOLD = 120, MAT_SILVER = 150, MAT_GLASS = 160, MAT_DIAMOND = 160, MAT_TITANIUM = 300)
construction_time=100
build_path = /obj/item/weapon/stock_parts/cell/bluespace
category = list("Misc","Power")
@@ -203,7 +203,7 @@
id = "femto_mani"
req_tech = list("materials" = 7, "programming" = 5, "engineering" = 5, "bluespace" = 5)
build_type = PROTOLATHE
materials = list(MAT_METAL = 200, MAT_DIAMOND = 60)
materials = list(MAT_METAL = 200, MAT_DIAMOND = 30, MAT_TITANIUM = 30)
build_path = /obj/item/weapon/stock_parts/manipulator/femto
category = list("Stock Parts")
lathe_time_factor = 0.2
@@ -8,7 +8,7 @@
id = "nuclear_gun"
req_tech = list("combat" = 5, "magnets" = 5, "powerstorage" = 5)
build_type = PROTOLATHE
materials = list(MAT_METAL = 10000, MAT_GLASS = 2000, MAT_URANIUM = 4000)
materials = list(MAT_METAL = 10000, MAT_GLASS = 2000, MAT_URANIUM = 3000, MAT_TITANIUM = 1000)
build_path = /obj/item/weapon/gun/energy/gun/nuclear
locked = 1
category = list("Weapons")
@@ -116,7 +116,7 @@
id = "tele_shield"
req_tech = list("combat" = 4, "materials" = 3, "engineering" = 4)
build_type = PROTOLATHE
materials = list(MAT_METAL = 4000, MAT_GLASS = 5000, MAT_SILVER = 300)
materials = list(MAT_METAL = 4000, MAT_GLASS = 4000, MAT_SILVER = 300, MAT_TITANIUM = 200)
build_path = /obj/item/weapon/shield/riot/tele
category = list("Weapons")
@@ -242,7 +242,7 @@
id = "xray"
req_tech = list("combat" = 7, "magnets" = 5, "biotech" = 5, "powerstorage" = 4)
build_type = PROTOLATHE
materials = list(MAT_GOLD = 5000,MAT_URANIUM = 10000, MAT_METAL = 5000)
materials = list(MAT_GOLD = 5000,MAT_URANIUM = 8000, MAT_METAL = 5000, MAT_TITANIUM = 2000)
build_path = /obj/item/weapon/gun/energy/xray
locked = 1
category = list("Weapons")
+1 -1
View File
@@ -42,7 +42,7 @@ Note: Must be placed west/left of and R&D console to function.
component_parts += new /obj/item/weapon/stock_parts/manipulator(null)
component_parts += new /obj/item/weapon/reagent_containers/glass/beaker/large(null)
component_parts += new /obj/item/weapon/reagent_containers/glass/beaker/large(null)
materials = new(src, list(MAT_METAL=1, MAT_GLASS=1, MAT_SILVER=1, MAT_GOLD=1, MAT_DIAMOND=1, MAT_PLASMA=1, MAT_URANIUM=1, MAT_BANANIUM=1, MAT_TRANQUILLITE=1))
materials = new(src, list(MAT_METAL=1, MAT_GLASS=1, MAT_SILVER=1, MAT_GOLD=1, MAT_DIAMOND=1, MAT_PLASMA=1, MAT_URANIUM=1, MAT_BANANIUM=1, MAT_TRANQUILLITE=1, MAT_TITANIUM=1))
RefreshParts()
reagents.my_atom = src
+3
View File
@@ -98,6 +98,8 @@ won't update every console in existence) but it's more of a hassle to do. Also,
return_name = "Bananium"
if("mime")
return_name = "Tranquillite"
if("titanium")
return_name = "Titanium"
return return_name
else
for(var/R in subtypesof(/datum/reagent))
@@ -808,6 +810,7 @@ won't update every console in existence) but it's more of a hassle to do. Also,
materials_list[++materials_list.len] = list("name" = "Diamond", "id" = MAT_DIAMOND, "amount" = linked_lathe.materials.amount(MAT_DIAMOND))
materials_list[++materials_list.len] = list("name" = "Bananium", "id" = MAT_BANANIUM, "amount" = linked_lathe.materials.amount(MAT_BANANIUM))
materials_list[++materials_list.len] = list("name" = "Tranquillite", "id" = MAT_TRANQUILLITE, "amount" = linked_lathe.materials.amount(MAT_TRANQUILLITE))
materials_list[++materials_list.len] = list("name" = "Titanium", "id" = MAT_TITANIUM, "amount" = linked_lathe.materials.amount(MAT_TITANIUM))
if(submenu == 3)
var/list/loaded_chemicals = list()
data["loaded_chemicals"] = loaded_chemicals
+1 -1
View File
@@ -140,7 +140,7 @@
state_next = list(
"key" = /obj/item/stack/sheet/metal,
"amount" = 5,
"vis_msg" = "{USER} frabricates a pressure bulkhead for the {HOLDER}.",
"vis_msg" = "{USER} fabricates a pressure bulkhead for the {HOLDER}.",
"self_msg" = "You frabricate a pressure bulkhead for the {HOLDER}."
)
),
+50
View File
@@ -56,6 +56,56 @@
-->
<div class="commit sansserif">
<h2 class="date">21 February 2018</h2>
<h3 class="author">uraniummeltdown updated:</h3>
<ul class="changes bgimages16">
<li class="rscadd">Added titanium and plastitanium. Mine the asteroid for titanium, make plastitanium by smelting together titanium and plasma</li>
<li class="rscadd">You can build shuttle floors and walls with titanium and plastitanium. Can also make shuttle airlocks by applying titanium to a non-mineral airlock</li>
<li class="tweak">Shuttle windows have explosion resistance now</li>
<li class="tweak">A few RnD recipes require titanium now</li>
</ul>
<h2 class="date">20 February 2018</h2>
<h3 class="author">Alffd updated:</h3>
<ul class="changes bgimages16">
<li class="tweak">Reduce all atmospheric stuns by 80%</li>
<li class="tweak">Cap the maximum atmospheric stun time to 4 seconds</li>
</ul>
<h3 class="author">Anasari updated:</h3>
<ul class="changes bgimages16">
<li class="rscadd">Add paperplane. Alt-click or use a verb on a piece of paper in your hand to make them.</li>
</ul>
<h3 class="author">Birdtalon updated:</h3>
<ul class="changes bgimages16">
<li class="rscadd">adds [time] tag for paperwork</li>
</ul>
<h3 class="author">Citinited updated:</h3>
<ul class="changes bgimages16">
<li class="tweak">You can now roll up flags.</li>
</ul>
<h3 class="author">Fox McCloud updated:</h3>
<ul class="changes bgimages16">
<li class="rscadd">Adds in a Dance Machine</li>
<li class="tweak">IEDs now have a blast radius again</li>
<li class="tweak">Slap crafting of IEDs is gone; use personal crafting instead</li>
</ul>
<h3 class="author">HugoLuman updated:</h3>
<ul class="changes bgimages16">
<li class="rscadd">coughing and sneezing sounds for the Drask</li>
</ul>
<h3 class="author">MarcellusPye updated:</h3>
<ul class="changes bgimages16">
<li class="bugfix">Grays can now drink sulphuric acid without being burnt</li>
</ul>
<h3 class="author">Shazbot updated:</h3>
<ul class="changes bgimages16">
<li class="bugfix">Fixes Patch's patch</li>
</ul>
<h3 class="author">Tayyyyyyy, bryanayalalugo updated:</h3>
<ul class="changes bgimages16">
<li class="rscadd">News reporters can now add titles to their stories!</li>
</ul>
<h2 class="date">05 February 2018</h2>
<h3 class="author">IK3I updated:</h3>
<ul class="changes bgimages16">
+31
View File
@@ -6051,3 +6051,34 @@ DO NOT EDIT THIS FILE BY HAND! AUTOMATICALLY GENERATED BY ss13_genchangelog.py.
uraniummeltdown:
- bugfix: Multitile airlock opening/closing animation is no longer glitchy and paper/photos
don't float in the air when opening/closing them
2018-02-20:
Alffd:
- tweak: Reduce all atmospheric stuns by 80%
- tweak: Cap the maximum atmospheric stun time to 4 seconds
Anasari:
- rscadd: Add paperplane. Alt-click or use a verb on a piece of paper in your hand
to make them.
Birdtalon:
- rscadd: adds [time] tag for paperwork
Citinited:
- tweak: You can now roll up flags.
Fox McCloud:
- rscadd: Adds in a Dance Machine
- tweak: IEDs now have a blast radius again
- tweak: Slap crafting of IEDs is gone; use personal crafting instead
HugoLuman:
- rscadd: coughing and sneezing sounds for the Drask
MarcellusPye:
- bugfix: Grays can now drink sulphuric acid without being burnt
Shazbot:
- bugfix: Fixes Patch's patch
Tayyyyyyy, bryanayalalugo:
- rscadd: News reporters can now add titles to their stories!
2018-02-21:
uraniummeltdown:
- rscadd: Added titanium and plastitanium. Mine the asteroid for titanium, make
plastitanium by smelting together titanium and plasma
- rscadd: You can build shuttle floors and walls with titanium and plastitanium.
Can also make shuttle airlocks by applying titanium to a non-mineral airlock
- tweak: Shuttle windows have explosion resistance now
- tweak: A few RnD recipes require titanium now
Binary file not shown.

Before

Width:  |  Height:  |  Size: 366 KiB

After

Width:  |  Height:  |  Size: 358 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 106 KiB

After

Width:  |  Height:  |  Size: 113 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 254 KiB

After

Width:  |  Height:  |  Size: 282 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 443 KiB

After

Width:  |  Height:  |  Size: 443 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 39 KiB

After

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 94 KiB

After

Width:  |  Height:  |  Size: 94 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 72 KiB

After

Width:  |  Height:  |  Size: 81 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 48 KiB

After

Width:  |  Height:  |  Size: 48 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.6 KiB

After

Width:  |  Height:  |  Size: 5.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 395 KiB

After

Width:  |  Height:  |  Size: 416 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 33 KiB

After

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

+14 -4
View File
@@ -96,6 +96,13 @@ Property of Nanotrasen</font><br>
{{:helper.link('Edit', 'pencil', {'set_channel_receiving' : 1})}}
</div>
</div>
<div class='item'>
<div class='itemLabel'>Title:</div>
<div class='itemContent'>
<a style='float: left; padding-right: 6px;'>{{:data.title}}</a>
{{:helper.link('Edit', 'pencil', {'set_message_title' : 1})}}
</div>
</div>
<div class='item'>
<div class='itemLabel'>Message body:</div>
<div class='itemContent'>
@@ -132,7 +139,8 @@ Property of Nanotrasen</font><br>
{{else}}
{{for data.messages}}
<div class='statusDisplay'>
- {{:value.body}}<br>
<b>{{:value.title}}</b><br>
{{:value.body}}<br>
{{if value.img}}
<img src='data:image/png;base64,{{:value.img}}' width=180><br>
{{/if}}
@@ -198,7 +206,8 @@ Property of Nanotrasen</font><br>
<i>{{:helper.link(data.author_redacted ? 'Undo author censorship' : 'Censor channel author', null, {'censor_channel_author' : data.ref})}}</i><br><hr>
{{for data.messages}}
<div class='statusDisplay'>
- {{:value.body}}<br>
<b>{{:value.title}}</b><br>
{{:value.body}}<br>
{{if value.img}}
<img src='{{:value.img}}' width=180><br>
{{/if}}
@@ -217,7 +226,7 @@ Property of Nanotrasen</font><br>
</div>
{{else data.screen == 9}} <!-- NEWSCASTER_D_NOTICE_FC -->
<b>{{:data.channel_name}}</b> <i><font size=1>[created by: <span class='good'>{{:data.author}}</span>]</font></i><br>
<i>Channel messages listed below. If you deem them dangerous to the station, you can <div style='clear: both;'>{{:helper.link('Bestow a D-Notice upon the channel', null, {'toggle_d_notice' : data.ref})}}</div></i><br><hr>
<i>Channel messages listed below. If you deem them dangerous to the station, you can <div style='clear: both;'>{{:helper.link(data.censored ? 'Remove the D-Notice on the channel' : 'Bestow a D-Notice upon the channel', null, {'toggle_d_notice' : data.ref})}}</div></i><br><hr>
{{if data.censored}}
<div class='statusDisplay'>
<b class='bad'>ATTENTION: </b>This channel has been deemed as threatening to the welfare of the station, and marked with a Nanotrasen D-Notice.
@@ -226,7 +235,8 @@ Property of Nanotrasen</font><br>
{{else}}
{{for data.messages}}
<div class='statusDisplay'>
- {{:value.body}}<br>
<b>{{:value.title}}</b><br>
{{:value.body}}<br>
{{if value.img}}
<img src='{{:value.img}}' width=180><br>
{{/if}}
+3
View File
@@ -216,6 +216,7 @@
#include "code\datums\mind.dm"
#include "code\datums\mixed.dm"
#include "code\datums\modules.dm"
#include "code\datums\mutable_appearance.dm"
#include "code\datums\periodic_news.dm"
#include "code\datums\progressbar.dm"
#include "code\datums\recipe.dm"
@@ -535,6 +536,7 @@
#include "code\game\machinery\constructable_frame.dm"
#include "code\game\machinery\cryo.dm"
#include "code\game\machinery\cryopod.dm"
#include "code\game\machinery\dance_machine.dm"
#include "code\game\machinery\deployable.dm"
#include "code\game\machinery\door_control.dm"
#include "code\game\machinery\doppler_array.dm"
@@ -1884,6 +1886,7 @@
#include "code\modules\paperwork\paper.dm"
#include "code\modules\paperwork\paper_bundle.dm"
#include "code\modules\paperwork\paperbin.dm"
#include "code\modules\paperwork\paperplane.dm"
#include "code\modules\paperwork\pen.dm"
#include "code\modules\paperwork\photocopier.dm"
#include "code\modules\paperwork\photography.dm"
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.