Sieve stuff, this is a stupidly big commit, I'm sorry, I really am.

Full details in this thread:
http://nanotrasen.com/phpBB3/viewtopic.php?f=16&t=8898
And a summary of the most important bits:
-Door animations no longer desync and do the open-close-open thing. That's been around so long most people don't even notice
-Welding tools no longer get their icons desynced
-Fixed unpowered mineral door runtimes
-Chemistry machines now require power to run
-Fixed the proc to apply radiation based on armor, which means that you can actually not die of radiation as quickly if you wear armor that protects against radiation
--By fixing this, it also fixed the singularity, so you might want to be careful next time you run by it naked
--Also means that radiation events take armor into account. How great
-Hopefully have a bugfix to prevent borgs from using lag to enter the game without an AI or laws, but I cannot test it myself other than that it didn't break anything
-Disposal sound can only play once every couple of ticks, so no more ear-rape by disposals!
-Lasertag guns can no longer be used to make lasergun turrets
-Cleaned up stray pixels on several doors and the lasertag guns

-Reworked how falsewalls work, now whenever you attack them with certain tools (drills, welders, etc...) it instantly turns them into a wall and pushes the attackby(), meaning you might not even notice that you just drilled down a falsewall, and at the very least they are much more fitting
-Omni-directional PA console! Never have to worry about rotating that fucking computer again, because now it does it itself!
-The Marisa robe that spawns in the theater no longer protects like armor
-Tweaked coefficient list for fake insulated gloves (misplaced punctuation messed up the list a tad)
-Moved falsewalls out of 'transfer_valve.dm' and into 'structures.dm'
-Tweaked smoothwalls so it only connects walls with like minerals (only seen effect is on the new walls)
--Also added appropriate signs to areas
-Reworked portable turrets to be a lot less laggy, now they determine the projectile type once, then save it so they don't have to go through else if chains every time they fire
-Added many sprites from WJohnston, but many are not fully implemented (Mostly floor ones)
-Added a vending machine for engineering, the Engivend. Apparently it was needed because of the lack of availability of the Autolathe or whatever.
-Added WJohnston's Dark Gygax sprites, then made a Death Squad Gygax out of them. A bit tougher than the standard Gygax, improved battery, and is pre-fit with gear, ideally for 'hit and run' tactics
-New Odysseus construction sprites, also removed the Odysseus Carapace in favor of plasteel like the Ripley, meaning they in terms of construction, a Ripley is equivalent to an Odysseus 
-Added an 'is_hot()' proc, when called it returns the temperature of the item in K, while taking into account things like whether or not the item is active or whatever
-Rewrote the Experimental Welding Tool, now instead of having a super-sized tank, it uses super-concentrated plasma that is turned into gas inside of it as its fuel source. Meaning, it will never have to be refilled, but it takes time for it to fill itself
-Added WJ's firelight sprites and code. Wanted to use them, but haven't had a chance to really implement them, but still, they're there

-Turrets made with lasertag guns now fire their respective team's bolt
-The turrets also automatically target anyone on the opposing team (But will continue to shoot at anyone, for shits n' giggles)
-Turrets get corresponding sprites based on team
-Shooting a turret with a different team's laser will disable it for 10 seconds
-You can also make ED-209's for your lasertag games/pissing off sec
-These are constructed just like a regular ED, but instead of a security vest and taser, it requires a lasertag vest and gun (same colors)
-When geared for lasertag, They will not arrest anyone nor melee them, only patrol (if set) and shoot
-They have their color schemes as well, and can be disabled just like turrets
-For both turrets and EDs, when geared for lasertag, they will not shoot anyone on the ground, this was due to very quickly learning how fucking OP that was for 1 turret to stunlock 3 people for eternity
-And when they are geared for lasertag, both the turrets and EDs have their access changed to maint, clown, and mime (This will not stop any of them from being shot, however)
-As a side note, you can also make lasertag stationary turrets for any map-related things

-Now walls are based on a plating system, meaning all walls have a girder with a mineral plating on top of it.
-As of right now, usable minerals are Silver, Gold, Diamond, Uranium, Plasma, and Sandstone (Lacking sprites for wood, *cough*)
-This also carries over to falsewalls, so you can make falsewalls out of any of those minerals
-Also, this carries over to powered doors, meaning you can construct useful doors out of minerals, so you could have actual diamond forts with doors requiring access to get in or whatever
-All of these are standardized, and for the most part work just like regular walls, meaning if you start slicing a wall, it will drop the mineral, or if you drill it, or whatever
-What was mentioned with the smoothwall tweak above, only walls of the same mineral will connect, so it all looks very nice
-Doors and walls made of uranium emit radiation when interacted with, with walls causing a 'ripple' effect, so the more walls nearby, the more radiation you get hit with
-Doors and walls made of plasma burn. It's a short, quick burn, but can easily be compounded in large structures
--As a note on plasma walls, I cannot get atmos and plasma walls to play nice (Since they are airless turfs), so I can't actually get them to ignite based on air temperature, but when they do ignite, they will auto-magically ignite nearby plasma walls, with a reduced temperature, meaning that if you want a massive chain reaction over a huge area, you better use something a bit hotter than a lighter
--Also, when plasma walls burn, they simply leave behind a girder, while doors leave assemblies
-Lastly, for nearly any kind of destructive action, Diamond walls are much more resilient, meaning they will take twice as long to be destroyed, and are immune to the effects of thermite
(Also, sprites for plasma walls and uranium walls are shite right now, waiting for replacements)
Update:
-Added cult walls as a 'mineral wall', meaning they will work on the same system and 'ReplaceWithMineralWall("cult")' will change any turf into a cult wall, hopefully for some cult-related activities soon

R&D stuff:
-Now instead of 1 sheet or ALL OF THE SHEETS, you enter a number as to how many sheets you want (it's sanitized to hell as well)
-Minerals no longer multiply when inside RnD machines. (Who fucked that one up? Goddamn)
-Mech fabricators are both deconstructable, and putting higher level parts actually improve it, each 'Tier' up is equivalent to +1 tech levels for that, so a High Powered Micro Laser would give the same bonus as +1 Material Research, a Pico Manipulator would give the same bonus as +2 Engineering, etc
-Complete with a shitty opened Mech Fab sprite!
-And not shitty overlays so autolathe's animate the material that is put in them, rather than give everything that's not glass the metal animation

LOL THE JOKES ON YOU I JUST COPY PASTED HIS TOPIC

added a few svn ignores, for thumbs.db and maps/backup

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@3751 316c924e-a436-60f5-8080-3fe189b3f50e
This commit is contained in:
petethegoat@gmail.com
2012-06-06 19:45:03 +00:00
parent b71cebee16
commit 72c72c47d3
77 changed files with 2512 additions and 1135 deletions
+22 -2
View File
@@ -8,6 +8,8 @@
anchored = 1
icon = 'chemical.dmi'
icon_state = "dispenser"
use_power = 1
idle_power_usage = 40
var/energy = 25
var/max_energy = 75
var/amount = 30
@@ -24,6 +26,13 @@
use_power(2000) // This thing uses up alot of power (this is still low as shit for creating reagents from thin air)
spawn(200) recharge()
power_change()
if(powered())
stat &= ~NOPOWER
else
spawn(rand(0, 15))
stat |= NOPOWER
New()
recharge()
@@ -75,7 +84,7 @@
winset(user, "chemdispenser_reagents", "size=340x[8 + 40 * i]")
SkinCmd(mob/user as mob, var/data as text)
if(stat & BROKEN) return
if(stat & (BROKEN|NOPOWER)) return
if(usr.stat || usr.restrained()) return
if(!in_range(src, usr)) return
@@ -159,6 +168,8 @@
anchored = 1
icon = 'chemical.dmi'
icon_state = "mixer0"
use_power = 1
idle_power_usage = 20
var/beaker = null
var/mode = 0
var/condi = 0
@@ -186,6 +197,13 @@
del(src)
return
power_change()
if(powered())
stat &= ~NOPOWER
else
spawn(rand(0, 15))
stat |= NOPOWER
attackby(var/obj/item/weapon/reagent_containers/glass/B as obj, var/mob/user as mob)
if(!istype(B, /obj/item/weapon/reagent_containers/glass))
return
@@ -202,7 +220,7 @@
icon_state = "mixer1"
Topic(href, href_list)
if(stat & BROKEN) return
if(stat & (BROKEN|NOPOWER)) return
if(usr.stat || usr.restrained()) return
if(!in_range(src, usr)) return
@@ -352,6 +370,8 @@
anchored = 1
icon = 'chemical.dmi'
icon_state = "mixer0"
use_power = 1
idle_power_usage = 20
var/temphtml = ""
var/wait = null
var/obj/item/weapon/reagent_containers/glass/beaker = null
+3 -3
View File
@@ -762,7 +762,7 @@ datum
on_mob_life(var/mob/living/M as mob)
if(!M) M = holder.my_atom
M.radiation += 3
M.apply_effect(10,IRRADIATE,0)
..()
return
@@ -828,7 +828,7 @@ datum
on_mob_life(var/mob/living/M as mob)
if(isrobot(M) || isAI(M)) return // Mutagen doesn't do anything to robutts!
if(!M) M = holder.my_atom
M.radiation += 3
M.apply_effect(10,IRRADIATE,0)
..()
return
@@ -911,7 +911,7 @@ datum
on_mob_life(var/mob/living/M as mob)
if(!M) M = holder.my_atom
M.radiation += 1
M.apply_effect(3,IRRADIATE,0)
..()
return
+13
View File
@@ -69,4 +69,17 @@
body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS|LEGS
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0)
/obj/item/clothing/head/wizard/marisa/fake
name = "Witch Hat"
desc = "Strange-looking hat-wear, makes you want to cast fireballs."
icon_state = "marisa"
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0)
/obj/item/clothing/suit/wizrobe/marisa/fake
name = "Witch Robe"
desc = "Magic is all about the spell power, ZE!"
icon_state = "marisa"
item_state = "marisarobe"
body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS|LEGS
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0)
+2 -2
View File
@@ -220,7 +220,7 @@
pixel_y = rand(0,4)-4
/obj/item/stack/sheet/uranium
name = "Uranium block"
name = "uranium"
icon_state = "sheet-uranium"
force = 5.0
throwforce = 5
@@ -231,7 +231,7 @@
perunit = 2000
/obj/item/stack/sheet/enruranium
name = "Enriched Uranium block"
name = "enriched uranium"
icon_state = "sheet-enruranium"
force = 5.0
throwforce = 5
+1 -1
View File
@@ -51,7 +51,7 @@
if(PARALYZE)
Paralyse(effect/(blocked+1))
if(IRRADIATE)
radiation += min((effect - (effect*getarmor(null, "rad"))), 0)//Rads auto check armor
radiation += max((((effect - (effect*(getarmor(null, "rad")/100))))/(blocked+1)),0)//Rads auto check armor
if(STUTTER)
if(canstun) // stun is usually associated with stutter
stuttering = max(stuttering,(effect/(blocked+1)))
+40 -1
View File
@@ -1,4 +1,4 @@
/mob/living/silicon/robot/Login()
/mob/living/silicon/robot/Login(var/syndie = 0)
..()
update_clothing()
@@ -19,4 +19,43 @@
A.connected_robots += src
break
*/
if(!started)
if(!syndie)
if (client)
connected_ai = activeais()
if (connected_ai)
connected_ai.connected_robots += src
// laws = connected_ai.laws //The borg inherits its AI's laws
laws = new /datum/ai_laws
lawsync()
src << "<b>Unit slaved to [connected_ai.name], downloading laws.</b>"
lawupdate = 1
else
laws = new /datum/ai_laws/asimov
lawupdate = 0
src << "<b>Unable to locate an AI, reverting to standard Asimov laws.</b>"
else
laws = new /datum/ai_laws/antimov
lawupdate = 0
scrambledcodes = 1
src << "Follow your laws."
cell.maxcharge = 25000
cell.charge = 25000
module = new /obj/item/weapon/robot_module/syndicate(src)
hands.icon_state = "standard"
icon_state = "secborg"
modtype = "Synd"
radio = new /obj/item/device/radio(src)
camera = new /obj/machinery/camera(src)
camera.c_tag = real_name
camera.network = "SS13"
if(!cell)
var/obj/item/weapon/cell/C = new(src)
C.charge = 1500
cell = C
if(src.mind)
ticker.mode.remove_revolutionary(src.mind)
started = 1
return
@@ -1,3 +1,5 @@
/mob/living/silicon/robot
var/started = null//A fix to ensure people don't try to bypass law assignment. Initial assignment sets it to one but it check on login whether they have been initiated -Sieve
/mob/living/silicon/robot/New(loc,var/syndie = 0)
spark_system = new /datum/effect/effect/system/spark_spread()
@@ -51,6 +53,7 @@
cell = C
if(src.mind)
ticker.mode.remove_revolutionary(src.mind)
started = 1
..()
//If there's an MMI in the robot, have it ejected when the mob goes away. --NEO
@@ -487,6 +490,9 @@
sleep(20)
src << "\red ERRORERRORERROR"
src << "\red \b ALERT: [user.real_name] is your new master. Obey your new laws and his commands."
if(istype(src.module, /obj/item/weapon/robot_module/miner))
src.module.modules -= /obj/item/weapon/pickaxe/borgdrill
src.module.modules += /obj/item/weapon/pickaxe/diamonddrill//Buff when emagged, break down walls, kill men, whatever -Sieve
updateicon()
else
user << "You fail to [ locked ? "unlock" : "lock"] [src]'s interface."
+9
View File
@@ -419,6 +419,15 @@
g_amt = 100
brightness = 5
/obj/item/weapon/light/bulb/fire
name = "fire bulb"
desc = "A replacement fire bulb."
icon_state = "fbulb"
base_state = "fbulb"
item_state = "egg4"
g_amt = 100
brightness = 5
// update the icon state and description of the light
/obj/item/weapon/light
proc/update()
@@ -52,13 +52,13 @@
proc
toxmob(var/mob/living/M)
var/radiation = (energy*2)
if(istype(M,/mob/living/carbon/human))
/* if(istype(M,/mob/living/carbon/human))
if(M:wear_suit) //TODO: check for radiation protection
radiation = round(radiation/2,1)
if(istype(M,/mob/living/carbon/monkey))
if(M:wear_suit) //TODO: check for radiation protection
radiation = round(radiation/2,1)
M.radiation += radiation
radiation = round(radiation/2,1)*/
M.apply_effects((radiation*3),IRRADIATE,0)
M.updatehealth()
//M << "\red You feel odd."
return
@@ -241,7 +241,6 @@ So, hopefully this is helpful if any more icons are to be added/changed/wonderin
src.anchored = 1
user.visible_message("[user.name] secures the [src.name] to the floor.", \
"You secure the external bolts.")
// icon_state = "[reference]"
temp_state++
if(1)
if(iswrench(O))
@@ -249,30 +248,25 @@ So, hopefully this is helpful if any more icons are to be added/changed/wonderin
src.anchored = 0
user.visible_message("[user.name] detaches the [src.name] from the floor.", \
"You remove the external bolts.")
// icon_state = "[reference]"
temp_state--
else if(iscoil(O))
if(O:use(1,user))
user.visible_message("[user.name] adds wires to the [src.name].", \
"You add some wires.")
// icon_state = "[reference]w"
temp_state++
if(2)
if(iswirecutter(O))//TODO:Shock user if its on?
user.visible_message("[user.name] removes some wires from the [src.name].", \
"You remove some wires.")
// icon_state = "[reference]"
temp_state--
else if(isscrewdriver(O))
user.visible_message("[user.name] closes the [src.name]'s access panel.", \
"You close the access panel.")
// icon_state = "[reference]c"
temp_state++
if(3)
if(isscrewdriver(O))
user.visible_message("[user.name] opens the [src.name]'s access panel.", \
"You open the access panel.")
// icon_state = "[reference]w"
temp_state--
if(temp_state == src.construction_state)//Nothing changed
return 0
@@ -398,7 +392,6 @@ So, hopefully this is helpful if any more icons are to be added/changed/wonderin
src.anchored = 1
user.visible_message("[user.name] secures the [src.name] to the floor.", \
"You secure the external bolts.")
//icon_state = "[reference]"
temp_state++
if(1)
if(iswrench(O))
@@ -406,31 +399,27 @@ So, hopefully this is helpful if any more icons are to be added/changed/wonderin
src.anchored = 0
user.visible_message("[user.name] detaches the [src.name] from the floor.", \
"You remove the external bolts.")
//icon_state = "[reference]"
temp_state--
else if(iscoil(O))
if(O:use(1))
user.visible_message("[user.name] adds wires to the [src.name].", \
"You add some wires.")
//icon_state = "[reference]w"
temp_state++
if(2)
if(iswirecutter(O))//TODO:Shock user if its on?
user.visible_message("[user.name] removes some wires from the [src.name].", \
"You remove some wires.")
//icon_state = "[reference]"
temp_state--
else if(isscrewdriver(O))
user.visible_message("[user.name] closes the [src.name]'s access panel.", \
"You close the access panel.")
//icon_state = "[reference]c"
temp_state++
if(3)
if(isscrewdriver(O))
user.visible_message("[user.name] opens the [src.name]'s access panel.", \
"You open the access panel.")
//icon_state = "[reference]w"
temp_state--
active = 0
if(temp_state == src.construction_state)//Nothing changed
return 0
else
@@ -13,10 +13,11 @@
active_power_usage = 10000
construction_state = 0
active = 0
var/list/obj/structure/particle_accelerator/connected_parts
var/assembled = 0
var/parts = null
dir = 1
var
list/obj/structure/particle_accelerator/connected_parts
assembled = 0
parts = null
New()
connected_parts = list()
@@ -27,7 +28,6 @@
if(construction_state >= 3)
interact(user)
update_state()
if(construction_state < 3)
use_power = 0
@@ -47,7 +47,10 @@
icon_state = "[reference]p1"
else
if(use_power)
icon_state = "[reference]p"
if(assembled)
icon_state = "[reference]p"
else
icon_state = "u[reference]p"
else
switch(construction_state)
if(0)
@@ -131,6 +134,8 @@
proc
part_scan()
for(var/obj/structure/particle_accelerator/fuel_chamber/F in orange(1,src))
src.dir = F.dir
connected_parts = list()
var/tally = 0
var/ldir = turn(dir,-90)
@@ -401,13 +401,15 @@ var/global/list/uneatable = list(
toxmob()
var/toxrange = 10
var/toxdamage = 4
var/radiation = 5
var/radiation = 15
var/radiationmin = 3
if (src.energy>200)
toxdamage = round(((src.energy-150)/50)*4,1)
radiation = round(((src.energy-150)/50)*5,1)
radiationmin = round((radiation/5),1)//
for(var/mob/living/M in view(toxrange, src.loc))
if(istype(M,/mob/living/))
M.apply_effect(rand(radiation), IRRADIATE)
M.apply_effect(rand(radiationmin,radiation), IRRADIATE)
toxdamage = (toxdamage - (toxdamage*M.getarmor(null, "rad")))
M.apply_effect(toxdamage, TOX)
return
@@ -73,14 +73,14 @@
M << "\red Your gun feels pleasantly warm for a moment."
else
M << "\red You feel a warm sensation."
M.apply_effect(rand(1,40), IRRADIATE)
M.apply_effect(rand(3,120), IRRADIATE)
lightfail = 1
else
for (var/mob/living/M in range(rand(1,4),src)) //Big failure, TIME FOR RADIATION BITCHES
if (src in M.contents)
M << "\red Your gun's reactor overloads!"
M << "\red You feel a wave of heat wash over you."
M.apply_effect(100, IRRADIATE)
M.apply_effect(300, IRRADIATE)
crit_fail = 1 //break the gun so it stops recharging
processing_objects.Remove(src)
update_icon()
@@ -49,10 +49,11 @@
on_hit(var/atom/target, var/blocked = 0)
var/mob/M = target
if(istype(target, /mob/living/carbon/human) && M:mutantrace == "plant") //Plantmen possibly get mutated and damaged by the rays.
if(istype(target, /mob/living) && M:mutantrace == "plant") //Plantmen possibly get mutated and damaged by the rays.
var/mob/living/L as mob
if(prob(15))
M.radiation += rand(10,30)
M.Weaken(5)
L.apply_effect((rand(30,80)),IRRADIATE)
L.Weaken(5)
for (var/mob/V in viewers(src))
V.show_message("\red [M] writhes in pain as \his vacuoles boil.", 3, "\red You hear the crunching of leaves.", 2)
if(prob(35))
+4 -1
View File
@@ -21,6 +21,7 @@
var/flushing = 0 // true if flushing in progress
var/flush_every_ticks = 30 //Every 30 ticks it will look whether it is ready to flush
var/flush_count = 0 //this var adds 1 once per tick. When it reaches flush_every_ticks it resets and tries to flush.
var/last_sound = 0
// create a new disposal
// find the attached trunk (if present) and init gas resvr.
@@ -394,7 +395,9 @@
air_contents = new() // new empty gas resv.
sleep(10)
playsound(src, 'disposalflush.ogg', 50, 0, 0)
if(last_sound < world.time + 1)
playsound(src, 'disposalflush.ogg', 50, 0, 0)
last_sound = world.time
sleep(5) // wait for animation to finish
+17 -13
View File
@@ -79,6 +79,12 @@ using metal and glass, it uses glass and reagents (usually sulfuric acis).
if(g_amount >= 3750)
var/obj/item/stack/sheet/glass/G = new /obj/item/stack/sheet/glass(src.loc)
G.amount = round(g_amount / 3750)
if(gold_amount >= 2000)
var/obj/item/stack/sheet/gold/G = new /obj/item/stack/sheet/gold(src.loc)
G.amount = round(gold_amount / 2000)
if(diamond_amount >= 2000)
var/obj/item/stack/sheet/diamond/G = new /obj/item/stack/sheet/diamond(src.loc)
G.amount = round(diamond_amount / 2000)
del(src)
return 1
else
@@ -99,20 +105,18 @@ using metal and glass, it uses glass and reagents (usually sulfuric acis).
if (busy)
user << "\red The [name] is busy. Please wait for completion of previous operation."
return 1
if ((TotalMaterials() + 3750) > max_material_amount)
var/obj/item/stack/sheet/stack = O
if ((TotalMaterials() + stack.perunit) > max_material_amount)
user << "\red The [name] is full. Please remove glass from the protolathe in order to insert more."
return 1
var/obj/item/stack/stack = O
var/amount = 1
var/title = "[stack.name]: [stack.amount] sheet\s left"
switch(alert(title, "How many sheets do you want to load?", "one", "max", "cancel", null))
if("one")
amount = 1
if("max")
amount = min(stack.amount, round((max_material_amount-TotalMaterials())/3750))
else
return 1
var/amount = round(input("How many sheets do you want to add?") as num)
if(amount < 0)
amount = 0
if(amount == 0)
return
if(amount > stack.amount)
amount = min(stack.amount, round((max_material_amount-TotalMaterials())/stack.perunit))
busy = 1
use_power(max(1000, (3750*amount/10)))
@@ -121,9 +125,9 @@ using metal and glass, it uses glass and reagents (usually sulfuric acis).
if(istype(stack, /obj/item/stack/sheet/glass))
g_amount += amount * 3750
else if(istype(stack, /obj/item/stack/sheet/gold))
gold_amount += amount * 3750
gold_amount += amount * 2000
else if(istype(stack, /obj/item/stack/sheet/diamond))
diamond_amount += amount * 3750
diamond_amount += amount * 2000
stack.use(amount)
busy = 0
src.updateUsrDialog()
+1 -1
View File
@@ -42,7 +42,7 @@
priority = "Undetermined"
/obj/machinery/message_server
icon = 'stationobjs.dmi'
icon = 'research.dmi'
icon_state = "server"
name = "Messaging Server"
density = 1
+34 -38
View File
@@ -83,31 +83,31 @@ Note: Must be placed west/left of and R&D console to function.
I.loc = src.loc
if(m_amount >= 3750)
var/obj/item/stack/sheet/metal/G = new /obj/item/stack/sheet/metal(src.loc)
G.amount = round(m_amount / 3750)
G.amount = round(m_amount / G.perunit)
if(g_amount >= 3750)
var/obj/item/stack/sheet/glass/G = new /obj/item/stack/sheet/glass(src.loc)
G.amount = round(g_amount / 3750)
if(plasma_amount >= 3750)
G.amount = round(g_amount / G.perunit)
if(plasma_amount >= 2000)
var/obj/item/stack/sheet/plasma/G = new /obj/item/stack/sheet/plasma(src.loc)
G.amount = round(plasma_amount / 3750)
if(silver_amount >= 3750)
G.amount = round(plasma_amount / G.perunit)
if(silver_amount >= 2000)
var/obj/item/stack/sheet/silver/G = new /obj/item/stack/sheet/silver(src.loc)
G.amount = round(silver_amount / 3750)
if(gold_amount >= 3750)
G.amount = round(silver_amount / G.perunit)
if(gold_amount >= 2000)
var/obj/item/stack/sheet/gold/G = new /obj/item/stack/sheet/gold(src.loc)
G.amount = round(gold_amount / 3750)
if(uranium_amount >= 3750)
G.amount = round(gold_amount / G.perunit)
if(uranium_amount >= 2000)
var/obj/item/stack/sheet/uranium/G = new /obj/item/stack/sheet/uranium(src.loc)
G.amount = round(uranium_amount / 3750)
if(diamond_amount >= 3750)
G.amount = round(uranium_amount / G.perunit)
if(diamond_amount >= 2000)
var/obj/item/stack/sheet/diamond/G = new /obj/item/stack/sheet/diamond(src.loc)
G.amount = round(diamond_amount / 3750)
if(clown_amount >= 3750)
G.amount = round(diamond_amount / G.perunit)
if(clown_amount >= 2000)
var/obj/item/stack/sheet/clown/G = new /obj/item/stack/sheet/clown(src.loc)
G.amount = round(clown_amount / 3750)
if(adamantine_amount >= 3750)
G.amount = round(clown_amount / G.perunit)
if(adamantine_amount >= 2000)
var/obj/item/stack/sheet/adamantine/G = new /obj/item/stack/sheet/adamantine(src.loc)
G.amount = round(adamantine_amount / 3750)
G.amount = round(adamantine_amount / G.perunit)
del(src)
return 1
else
@@ -130,21 +130,18 @@ Note: Must be placed west/left of and R&D console to function.
user << "\red The protolathe's material bin is full. Please remove material before adding more."
return 1
var/obj/item/stack/stack = O
var/amount = 1
var/title = "[stack.name]: [stack.amount] sheet\s left"
switch(alert(title, "How many sheets do you want to load?", "one", "max", "cancel", null))
if("one")
amount = 1
if("max")
amount = min(stack.amount, round((max_material_storage-TotalMaterials())/3750))
else
return 1
var/obj/item/stack/sheet/stack = O
var/amount = round(input("How many sheets do you want to add?") as num)
if(amount < 0)
amount = 0
if(amount == 0)
return
if(amount > stack.amount)
amount = min(stack.amount, round((max_material_storage-TotalMaterials())/stack.perunit))
if(istype(O, /obj/item/stack/sheet/glass))
flick("protolathe_r",src)//plays glass insertion animation
else
flick("protolathe_o",src)//plays metal insertion animation
src.overlays += "protolathe_[stack.name]"
sleep(10)
src.overlays -= "protolathe_[stack.name]"
icon_state = "protolathe"
busy = 1
@@ -152,25 +149,24 @@ Note: Must be placed west/left of and R&D console to function.
spawn(16)
user << "\blue You add [amount] sheets to the [src.name]."
icon_state = "protolathe"
flick("protolathe_o",src)
if(istype(stack, /obj/item/stack/sheet/metal))
m_amount += amount * 3750
else if(istype(stack, /obj/item/stack/sheet/glass))
g_amount += amount * 3750
else if(istype(stack, /obj/item/stack/sheet/gold))
gold_amount += amount * 3750
gold_amount += amount * 2000
else if(istype(stack, /obj/item/stack/sheet/silver))
silver_amount += amount * 3750
silver_amount += amount * 2000
else if(istype(stack, /obj/item/stack/sheet/plasma))
plasma_amount += amount * 3750
plasma_amount += amount * 2000
else if(istype(stack, /obj/item/stack/sheet/uranium))
uranium_amount += amount * 3750
uranium_amount += amount * 2000
else if(istype(stack, /obj/item/stack/sheet/diamond))
diamond_amount += amount * 3750
diamond_amount += amount * 2000
else if(istype(stack, /obj/item/stack/sheet/clown))
clown_amount += amount * 3750
clown_amount += amount * 2000
else if(istype(stack, /obj/item/stack/sheet/adamantine))
adamantine_amount += amount * 3750
adamantine_amount += amount * 2000
stack.use(amount)
busy = 0
src.updateUsrDialog()
+33 -33
View File
@@ -739,58 +739,58 @@ won't update every console in existence) but it's more of a hassle to do. Also,
//Metal
dat += "* [linked_lathe.m_amount] cm<sup>3</sup> of Metal || "
dat += "Eject: "
if(linked_lathe.m_amount > 3750) dat += "<A href='?src=\ref[src];lathe_ejectsheet=metal;lathe_ejectsheet_amt=1'>(1 Sheet)</A> "
if(linked_lathe.m_amount > 18750) dat += "<A href='?src=\ref[src];lathe_ejectsheet=metal;lathe_ejectsheet_amt=5'>(5 Sheets)</A> "
if(linked_lathe.m_amount > 3750) dat += "<A href='?src=\ref[src];lathe_ejectsheet=metal;lathe_ejectsheet_amt=50'>(Max Sheets)</A>"
if(linked_lathe.m_amount >= 3750) dat += "<A href='?src=\ref[src];lathe_ejectsheet=metal;lathe_ejectsheet_amt=1'>(1 Sheet)</A> "
if(linked_lathe.m_amount >= 18750) dat += "<A href='?src=\ref[src];lathe_ejectsheet=metal;lathe_ejectsheet_amt=5'>(5 Sheets)</A> "
if(linked_lathe.m_amount >= 3750) dat += "<A href='?src=\ref[src];lathe_ejectsheet=metal;lathe_ejectsheet_amt=50'>(Max Sheets)</A>"
dat += "<BR>"
//Glass
dat += "* [linked_lathe.g_amount] cm<sup>3</sup> of Glass || "
dat += "Eject: "
if(linked_lathe.g_amount > 3750) dat += "<A href='?src=\ref[src];lathe_ejectsheet=glass;lathe_ejectsheet_amt=1'>(1 Sheet)</A> "
if(linked_lathe.g_amount > 18750) dat += "<A href='?src=\ref[src];lathe_ejectsheet=glass;lathe_ejectsheet_amt=5'>(5 Sheets)</A> "
if(linked_lathe.g_amount > 3750) dat += "<A href='?src=\ref[src];lathe_ejectsheet=glass;lathe_ejectsheet_amt=50'>(Max Sheets)</A>"
if(linked_lathe.g_amount >= 3750) dat += "<A href='?src=\ref[src];lathe_ejectsheet=glass;lathe_ejectsheet_amt=1'>(1 Sheet)</A> "
if(linked_lathe.g_amount >= 18750) dat += "<A href='?src=\ref[src];lathe_ejectsheet=glass;lathe_ejectsheet_amt=5'>(5 Sheets)</A> "
if(linked_lathe.g_amount >= 3750) dat += "<A href='?src=\ref[src];lathe_ejectsheet=glass;lathe_ejectsheet_amt=50'>(Max Sheets)</A>"
dat += "<BR>"
//Gold
dat += "* [linked_lathe.gold_amount] cm<sup>3</sup> of Gold || "
dat += "Eject: "
if(linked_lathe.gold_amount > 3750) dat += "<A href='?src=\ref[src];lathe_ejectsheet=gold;lathe_ejectsheet_amt=1'>(1 Sheet)</A> "
if(linked_lathe.gold_amount > 18750) dat += "<A href='?src=\ref[src];lathe_ejectsheet=gold;lathe_ejectsheet_amt=5'>(5 Sheets)</A> "
if(linked_lathe.gold_amount > 3750) dat += "<A href='?src=\ref[src];lathe_ejectsheet=gold;lathe_ejectsheet_amt=50'>(Max Sheets)</A>"
if(linked_lathe.gold_amount >= 2000) dat += "<A href='?src=\ref[src];lathe_ejectsheet=gold;lathe_ejectsheet_amt=1'>(1 Sheet)</A> "
if(linked_lathe.gold_amount >= 10000) dat += "<A href='?src=\ref[src];lathe_ejectsheet=gold;lathe_ejectsheet_amt=5'>(5 Sheets)</A> "
if(linked_lathe.gold_amount >= 2000) dat += "<A href='?src=\ref[src];lathe_ejectsheet=gold;lathe_ejectsheet_amt=50'>(Max Sheets)</A>"
dat += "<BR>"
//Silver
dat += "* [linked_lathe.silver_amount] cm<sup>3</sup> of Silver || "
dat += "Eject: "
if(linked_lathe.silver_amount >= 3750) dat += "<A href='?src=\ref[src];lathe_ejectsheet=silver;lathe_ejectsheet_amt=1'>(1 Sheet)</A> "
if(linked_lathe.silver_amount >= 18750) dat += "<A href='?src=\ref[src];lathe_ejectsheet=silver;lathe_ejectsheet_amt=5'>(5 Sheets)</A> "
if(linked_lathe.silver_amount >= 3750) dat += "<A href='?src=\ref[src];lathe_ejectsheet=silver;lathe_ejectsheet_amt=50'>(Max Sheets)</A>"
if(linked_lathe.silver_amount >= 2000) dat += "<A href='?src=\ref[src];lathe_ejectsheet=silver;lathe_ejectsheet_amt=1'>(1 Sheet)</A> "
if(linked_lathe.silver_amount >= 10000) dat += "<A href='?src=\ref[src];lathe_ejectsheet=silver;lathe_ejectsheet_amt=5'>(5 Sheets)</A> "
if(linked_lathe.silver_amount >= 2000) dat += "<A href='?src=\ref[src];lathe_ejectsheet=silver;lathe_ejectsheet_amt=50'>(Max Sheets)</A>"
dat += "<BR>"
//Plasma
dat += "* [linked_lathe.plasma_amount] cm<sup>3</sup> of Solid Plasma || "
dat += "Eject: "
if(linked_lathe.plasma_amount >= 3750) dat += "<A href='?src=\ref[src];lathe_ejectsheet=plasma;lathe_ejectsheet_amt=1'>(1 Sheet)</A> "
if(linked_lathe.plasma_amount >= 18750) dat += "<A href='?src=\ref[src];lathe_ejectsheet=plasma;lathe_ejectsheet_amt=5'>(5 Sheets)</A> "
if(linked_lathe.plasma_amount >= 3750) dat += "<A href='?src=\ref[src];lathe_ejectsheet=plasmalathe_ejectsheet_amt=50'>(Max Sheets)</A>"
if(linked_lathe.plasma_amount >= 2000) dat += "<A href='?src=\ref[src];lathe_ejectsheet=plasma;lathe_ejectsheet_amt=1'>(1 Sheet)</A> "
if(linked_lathe.plasma_amount >= 10000) dat += "<A href='?src=\ref[src];lathe_ejectsheet=plasma;lathe_ejectsheet_amt=5'>(5 Sheets)</A> "
if(linked_lathe.plasma_amount >= 2000) dat += "<A href='?src=\ref[src];lathe_ejectsheet=plasmalathe_ejectsheet_amt=50'>(Max Sheets)</A>"
dat += "<BR>"
//Uranium
dat += "* [linked_lathe.uranium_amount] cm<sup>3</sup> of Uranium || "
dat += "Eject: "
if(linked_lathe.uranium_amount >= 3750) dat += "<A href='?src=\ref[src];lathe_ejectsheet=uranium;lathe_ejectsheet_amt=1'>(1 Sheet)</A> "
if(linked_lathe.uranium_amount >= 18750) dat += "<A href='?src=\ref[src];lathe_ejectsheet=uranium;lathe_ejectsheet_amt=5'>(5 Sheets)</A> "
if(linked_lathe.uranium_amount >= 3750) dat += "<A href='?src=\ref[src];lathe_ejectsheet=uranium;lathe_ejectsheet_amt=50'>(Max Sheets)</A>"
if(linked_lathe.uranium_amount >= 2000) dat += "<A href='?src=\ref[src];lathe_ejectsheet=uranium;lathe_ejectsheet_amt=1'>(1 Sheet)</A> "
if(linked_lathe.uranium_amount >= 10000) dat += "<A href='?src=\ref[src];lathe_ejectsheet=uranium;lathe_ejectsheet_amt=5'>(5 Sheets)</A> "
if(linked_lathe.uranium_amount >= 2000) dat += "<A href='?src=\ref[src];lathe_ejectsheet=uranium;lathe_ejectsheet_amt=50'>(Max Sheets)</A>"
dat += "<BR>"
//Diamond
dat += "* [linked_lathe.diamond_amount] cm<sup>3</sup> of Diamond || "
dat += "Eject: "
if(linked_lathe.diamond_amount >= 3750) dat += "<A href='?src=\ref[src];lathe_ejectsheet=diamond;lathe_ejectsheet_amt=1'>(1 Sheet)</A> "
if(linked_lathe.diamond_amount >= 18750) dat += "<A href='?src=\ref[src];lathe_ejectsheet=diamond;lathe_ejectsheet_amt=5'>(5 Sheets)</A> "
if(linked_lathe.diamond_amount >= 3750) dat += "<A href='?src=\ref[src];lathe_ejectsheet=diamond;lathe_ejectsheet_amt=50'>(Max Sheets)</A>"
if(linked_lathe.diamond_amount >= 2000) dat += "<A href='?src=\ref[src];lathe_ejectsheet=diamond;lathe_ejectsheet_amt=1'>(1 Sheet)</A> "
if(linked_lathe.diamond_amount >= 10000) dat += "<A href='?src=\ref[src];lathe_ejectsheet=diamond;lathe_ejectsheet_amt=5'>(5 Sheets)</A> "
if(linked_lathe.diamond_amount >= 2000) dat += "<A href='?src=\ref[src];lathe_ejectsheet=diamond;lathe_ejectsheet_amt=50'>(Max Sheets)</A>"
dat += "<BR>"
//Bananium
dat += "* [linked_lathe.clown_amount] cm<sup>3</sup> of Bananium || "
dat += "Eject: "
if(linked_lathe.clown_amount >= 3750) dat += "<A href='?src=\ref[src];lathe_ejectsheet=clown;lathe_ejectsheet_amt=1'>(1 Sheet)</A> "
if(linked_lathe.clown_amount >= 18750) dat += "<A href='?src=\ref[src];lathe_ejectsheet=clown;lathe_ejectsheet_amt=5'>(5 Sheets)</A> "
if(linked_lathe.clown_amount >= 3750) dat += "<A href='?src=\ref[src];lathe_ejectsheet=clown;lathe_ejectsheet_amt=50'>(Max Sheets)</A>"
if(linked_lathe.clown_amount >= 2000) dat += "<A href='?src=\ref[src];lathe_ejectsheet=clown;lathe_ejectsheet_amt=1'>(1 Sheet)</A> "
if(linked_lathe.clown_amount >= 10000) dat += "<A href='?src=\ref[src];lathe_ejectsheet=clown;lathe_ejectsheet_amt=5'>(5 Sheets)</A> "
if(linked_lathe.clown_amount >= 2000) dat += "<A href='?src=\ref[src];lathe_ejectsheet=clown;lathe_ejectsheet_amt=50'>(Max Sheets)</A>"
if(3.3) //Protolathe Chemical Storage Submenu
dat += "<A href='?src=\ref[src];menu=1.0'>Main Menu</A> || "
@@ -852,23 +852,23 @@ won't update every console in existence) but it's more of a hassle to do. Also,
//Glass
dat += "* [linked_imprinter.g_amount] cm<sup>3</sup> of Glass || "
dat += "Eject: "
if(linked_imprinter.g_amount > 3750) dat += "<A href='?src=\ref[src];imprinter_ejectsheet=glass;imprinter_ejectsheet_amt=1'>(1 Sheet)</A> "
if(linked_imprinter.g_amount > 18750) dat += "<A href='?src=\ref[src];imprinter_ejectsheet=glass;imprinter_ejectsheet_amt=5'>(5 Sheets)</A> "
if(linked_imprinter.g_amount > 3750) dat += "<A href='?src=\ref[src];imprinter_ejectsheet=glass;imprinter_ejectsheet_amt=50'>(Max Sheets)</A>"
if(linked_imprinter.g_amount >= 3750) dat += "<A href='?src=\ref[src];imprinter_ejectsheet=glass;imprinter_ejectsheet_amt=1'>(1 Sheet)</A> "
if(linked_imprinter.g_amount >= 18750) dat += "<A href='?src=\ref[src];imprinter_ejectsheet=glass;imprinter_ejectsheet_amt=5'>(5 Sheets)</A> "
if(linked_imprinter.g_amount >= 3750) dat += "<A href='?src=\ref[src];imprinter_ejectsheet=glass;imprinter_ejectsheet_amt=50'>(Max Sheets)</A>"
dat += "<BR>"
//Gold
dat += "* [linked_imprinter.gold_amount] cm<sup>3</sup> of Gold || "
dat += "Eject: "
if(linked_imprinter.gold_amount > 3750) dat += "<A href='?src=\ref[src];imprinter_ejectsheet=gold;imprinter_ejectsheet_amt=1'>(1 Sheet)</A> "
if(linked_imprinter.gold_amount > 18750) dat += "<A href='?src=\ref[src];imprinter_ejectsheet=gold;imprinter_ejectsheet_amt=5'>(5 Sheets)</A> "
if(linked_imprinter.gold_amount > 3750) dat += "<A href='?src=\ref[src];imprinter_ejectsheet=gold;imprinter_ejectsheet_amt=50'>(Max Sheets)</A>"
if(linked_imprinter.gold_amount >= 2000) dat += "<A href='?src=\ref[src];imprinter_ejectsheet=gold;imprinter_ejectsheet_amt=1'>(1 Sheet)</A> "
if(linked_imprinter.gold_amount >= 10000) dat += "<A href='?src=\ref[src];imprinter_ejectsheet=gold;imprinter_ejectsheet_amt=5'>(5 Sheets)</A> "
if(linked_imprinter.gold_amount >= 2000) dat += "<A href='?src=\ref[src];imprinter_ejectsheet=gold;imprinter_ejectsheet_amt=50'>(Max Sheets)</A>"
dat += "<BR>"
//Diamond
dat += "* [linked_imprinter.diamond_amount] cm<sup>3</sup> of Diamond || "
dat += "Eject: "
if(linked_imprinter.diamond_amount > 3750) dat += "<A href='?src=\ref[src];imprinter_ejectsheet=diamond;imprinter_ejectsheet_amt=1'>(1 Sheet)</A> "
if(linked_imprinter.diamond_amount > 18750) dat += "<A href='?src=\ref[src];imprinter_ejectsheet=diamond;imprinter_ejectsheet_amt=5'>(5 Sheets)</A> "
if(linked_imprinter.diamond_amount > 3750) dat += "<A href='?src=\ref[src];imprinter_ejectsheet=diamond;imprinter_ejectsheet_amt=50'>(Max Sheets)</A>"
if(linked_imprinter.diamond_amount >= 2000) dat += "<A href='?src=\ref[src];imprinter_ejectsheet=diamond;imprinter_ejectsheet_amt=1'>(1 Sheet)</A> "
if(linked_imprinter.diamond_amount >= 10000) dat += "<A href='?src=\ref[src];imprinter_ejectsheet=diamond;imprinter_ejectsheet_amt=5'>(5 Sheets)</A> "
if(linked_imprinter.diamond_amount >= 2000) dat += "<A href='?src=\ref[src];imprinter_ejectsheet=diamond;imprinter_ejectsheet_amt=50'>(Max Sheets)</A>"
user << browse("<TITLE>Research and Development Console</TITLE><HR>[dat]", "window=rdconsole;size=575x400")
onclose(user, "rdconsole")
+1
View File
@@ -5,6 +5,7 @@
/obj/machinery/r_n_d
name = "R&D Device"
icon = 'research.dmi'
density = 1
anchored = 1
use_power = 1
+1
View File
@@ -1,5 +1,6 @@
/obj/machinery/r_n_d/server
name = "R&D Server"
icon = 'research.dmi'
icon_state = "server"
var
datum/research/files