Merge branch 'master' of github.com:Baystation12/Baystation12
@@ -733,6 +733,7 @@
|
||||
#include "code\game\objects\items\weapons\plant_bag.dm"
|
||||
#include "code\game\objects\items\weapons\RCD.dm"
|
||||
#include "code\game\objects\items\weapons\RSF.dm"
|
||||
#include "code\game\objects\items\weapons\stunbaton.dm"
|
||||
#include "code\game\objects\items\weapons\stungloves.dm"
|
||||
#include "code\game\objects\items\weapons\surgery_limbattachment.dm"
|
||||
#include "code\game\objects\items\weapons\surgery_tools.dm"
|
||||
@@ -897,6 +898,7 @@
|
||||
#include "code\modules\food\meat.dm"
|
||||
#include "code\modules\food\recipes_microwave.dm"
|
||||
#include "code\modules\maps\dmm_suite.dm"
|
||||
#include "code\modules\maps\randomZlevel.dm"
|
||||
#include "code\modules\maps\reader.dm"
|
||||
#include "code\modules\maps\SwapMaps.dm"
|
||||
#include "code\modules\maps\writer.dm"
|
||||
|
||||
@@ -8,14 +8,15 @@
|
||||
#define UL_I_EXTINGUISHED 1
|
||||
#define UL_I_ONZERO 2
|
||||
|
||||
#define ul_LightingEnabled 1
|
||||
#define ul_LightingResolution 1
|
||||
#define ul_Steps 7
|
||||
#define ul_FalloffStyle UL_I_FALLOFF_ROUND // Sets the lighting falloff to be either squared or circular.
|
||||
#define ul_Layer 10
|
||||
|
||||
var
|
||||
ul_LightingEnabled = 1
|
||||
ul_LightingResolution = 1
|
||||
ul_LightingResolutionSqrt = sqrt(ul_LightingResolution)
|
||||
ul_Steps = 7
|
||||
ul_FalloffStyle = UL_I_FALLOFF_ROUND // Sets the lighting falloff to be either squared or circular.
|
||||
ul_TopLuminosity = 0
|
||||
ul_Layer = 10
|
||||
ul_SuppressLightLevelChanges = 0
|
||||
|
||||
list/ul_FastRoot = list(0, 1, 1, 1, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5,
|
||||
@@ -85,35 +86,35 @@ atom/proc/ul_Illuminate()
|
||||
if(DeltaRed > 0)
|
||||
if(!Affected.MaxRed)
|
||||
Affected.MaxRed = list()
|
||||
var/list/parameter_list = params2list(Affected.MaxRedValues)
|
||||
if(!("[DeltaRed]" in parameter_list))
|
||||
Affected.MaxRedSources = list()
|
||||
if(!(DeltaRed in Affected.MaxRed))
|
||||
Affected.MaxRed.Add(DeltaRed)
|
||||
parameter_list["[DeltaRed]"] = 1
|
||||
Affected.MaxRedSources.Add(1)
|
||||
else
|
||||
parameter_list["[DeltaRed]"] = "[text2num(parameter_list["[DeltaRed]"]) + 1]"
|
||||
Affected.MaxRedValues = list2params(parameter_list)
|
||||
var/list_location = Affected.MaxRed.Find(DeltaRed)
|
||||
Affected.MaxRedSources[list_location]++
|
||||
|
||||
if(DeltaGreen > 0)
|
||||
if(!Affected.MaxGreen)
|
||||
Affected.MaxGreen = list()
|
||||
var/list/parameter_list = params2list(Affected.MaxGreenValues)
|
||||
if(!("[DeltaGreen]" in parameter_list))
|
||||
Affected.MaxGreenSources = list()
|
||||
if(!(DeltaGreen in Affected.MaxGreen))
|
||||
Affected.MaxGreen.Add(DeltaGreen)
|
||||
parameter_list["[DeltaGreen]"] = 1
|
||||
Affected.MaxGreenSources.Add(1)
|
||||
else
|
||||
parameter_list["[DeltaGreen]"] = "[text2num(parameter_list["[DeltaGreen]"]) + 1]"
|
||||
Affected.MaxGreenValues = list2params(parameter_list)
|
||||
var/list_location = Affected.MaxGreen.Find(DeltaGreen)
|
||||
Affected.MaxGreenSources[list_location]++
|
||||
|
||||
if(DeltaBlue > 0)
|
||||
if(!Affected.MaxBlue)
|
||||
Affected.MaxBlue = list()
|
||||
var/list/parameter_list = params2list(Affected.MaxBlueValues)
|
||||
if(!("[DeltaBlue]" in parameter_list))
|
||||
Affected.MaxBlueSources = list()
|
||||
if(!(DeltaBlue in Affected.MaxBlue))
|
||||
Affected.MaxBlue.Add(DeltaBlue)
|
||||
parameter_list["[DeltaBlue]"] = 1
|
||||
Affected.MaxBlueSources.Add(1)
|
||||
else
|
||||
parameter_list["[DeltaBlue]"] = "[text2num(parameter_list["[DeltaBlue]"]) + 1]"
|
||||
Affected.MaxBlueValues = list2params(parameter_list)
|
||||
var/list_location = Affected.MaxBlue.Find(DeltaBlue)
|
||||
Affected.MaxBlueSources[list_location]++
|
||||
|
||||
Affected.ul_UpdateLight()
|
||||
|
||||
@@ -143,57 +144,42 @@ atom/proc/ul_Extinguish()
|
||||
|
||||
if(DeltaRed > 0)
|
||||
if(Affected.MaxRed)
|
||||
if(findtext(Affected.MaxRedValues, "[DeltaRed]"))
|
||||
var/list/parameter_list = params2list(Affected.MaxRedValues)
|
||||
if(!("[DeltaRed]" in parameter_list))
|
||||
Affected.MaxRed.Remove(DeltaRed)
|
||||
parameter_list.Remove("[DeltaRed]")
|
||||
else if (parameter_list["[DeltaRed]"] != "1")
|
||||
parameter_list["[DeltaRed]"] = "[text2num(parameter_list["[DeltaRed]"]) - 1]"
|
||||
var/list_location = Affected.MaxRed.Find(DeltaRed)
|
||||
if(list_location)
|
||||
if(Affected.MaxRedSources[list_location] > 1)
|
||||
Affected.MaxRedSources[list_location]--
|
||||
else
|
||||
Affected.MaxRed.Remove(DeltaRed)
|
||||
parameter_list.Remove("[DeltaRed]")
|
||||
Affected.MaxRedValues = list2params(parameter_list)
|
||||
else
|
||||
Affected.MaxRed.Remove(DeltaRed)
|
||||
Affected.MaxRedSources.Cut(list_location, list_location + 1)
|
||||
if(!Affected.MaxRed.len)
|
||||
del Affected.MaxRed
|
||||
del Affected.MaxRedSources
|
||||
|
||||
if(DeltaGreen > 0)
|
||||
if(Affected.MaxGreen)
|
||||
if(findtext(Affected.MaxGreenValues, "[DeltaGreen]"))
|
||||
var/list/parameter_list = params2list(Affected.MaxGreenValues)
|
||||
if(!("[DeltaGreen]" in parameter_list))
|
||||
Affected.MaxGreen.Remove(DeltaGreen)
|
||||
parameter_list.Remove("[DeltaGreen]")
|
||||
else if (parameter_list["[DeltaGreen]"] != "1")
|
||||
parameter_list["[DeltaGreen]"] = "[text2num(parameter_list["[DeltaGreen]"]) - 1]"
|
||||
var/list_location = Affected.MaxGreen.Find(DeltaGreen)
|
||||
if(list_location)
|
||||
if(Affected.MaxGreenSources[list_location] > 1)
|
||||
Affected.MaxGreenSources[list_location]--
|
||||
else
|
||||
Affected.MaxGreen.Remove(DeltaGreen)
|
||||
parameter_list.Remove("[DeltaGreen]")
|
||||
Affected.MaxGreenValues = list2params(parameter_list)
|
||||
else
|
||||
Affected.MaxGreen.Remove(DeltaGreen)
|
||||
Affected.MaxGreenSources.Cut(list_location, list_location + 1)
|
||||
if(!Affected.MaxGreen.len)
|
||||
del Affected.MaxGreen
|
||||
del Affected.MaxGreenSources
|
||||
|
||||
if(DeltaBlue > 0)
|
||||
if(Affected.MaxBlue)
|
||||
if(findtext(Affected.MaxBlueValues, "[DeltaBlue]"))
|
||||
var/list/parameter_list = params2list(Affected.MaxBlueValues)
|
||||
if(!("[DeltaBlue]" in parameter_list))
|
||||
Affected.MaxBlue.Remove(DeltaBlue)
|
||||
parameter_list.Remove("[DeltaBlue]")
|
||||
else if (parameter_list["[DeltaBlue]"] != "1")
|
||||
parameter_list["[DeltaBlue]"] = "[text2num(parameter_list["[DeltaBlue]"]) - 1]"
|
||||
var/list_location = Affected.MaxBlue.Find(DeltaBlue)
|
||||
if(list_location)
|
||||
if(Affected.MaxBlueSources[list_location] > 1)
|
||||
Affected.MaxBlueSources[list_location]--
|
||||
else
|
||||
Affected.MaxBlue.Remove(DeltaBlue)
|
||||
parameter_list.Remove("[DeltaBlue]")
|
||||
Affected.MaxBlueValues = list2params(parameter_list)
|
||||
else
|
||||
Affected.MaxBlue.Remove(DeltaBlue)
|
||||
Affected.MaxBlueSources.Cut(list_location, list_location + 1)
|
||||
if(!Affected.MaxBlue.len)
|
||||
del Affected.MaxBlue
|
||||
del Affected.MaxBlueSources
|
||||
|
||||
Affected.ul_UpdateLight()
|
||||
|
||||
@@ -281,32 +267,28 @@ atom/proc/ul_LightLevelChanged()
|
||||
return
|
||||
|
||||
atom/New()
|
||||
..()
|
||||
. = ..()
|
||||
if(ul_IsLuminous())
|
||||
spawn(1)
|
||||
ul_Illuminate()
|
||||
return
|
||||
|
||||
atom/Del()
|
||||
if(ul_IsLuminous())
|
||||
ul_Extinguish()
|
||||
..()
|
||||
. = ..()
|
||||
|
||||
atom/movable/Move()
|
||||
if(ul_IsLuminous())
|
||||
ul_Extinguish()
|
||||
..()
|
||||
ul_Illuminate()
|
||||
else
|
||||
..()
|
||||
ul_Extinguish()
|
||||
. = ..()
|
||||
ul_Illuminate()
|
||||
|
||||
|
||||
turf/var/list/MaxRed
|
||||
turf/var/list/MaxGreen
|
||||
turf/var/list/MaxBlue
|
||||
turf/var/MaxRedValues
|
||||
turf/var/MaxGreenValues
|
||||
turf/var/MaxBlueValues
|
||||
turf/var/list/MaxRedSources
|
||||
turf/var/list/MaxGreenSources
|
||||
turf/var/list/MaxBlueSources
|
||||
|
||||
turf/proc/ul_GetRed()
|
||||
if(MaxRed)
|
||||
@@ -404,4 +386,15 @@ area/proc/ul_Prep()
|
||||
ul_Light()
|
||||
//world.log << tag
|
||||
|
||||
return
|
||||
return
|
||||
|
||||
#undef UL_I_FALLOFF_SQUARE
|
||||
#undef UL_I_FALLOFF_ROUND
|
||||
#undef UL_I_LIT
|
||||
#undef UL_I_EXTINGUISHED
|
||||
#undef UL_I_ONZERO
|
||||
#undef ul_LightingEnabled
|
||||
#undef ul_LightingResolution
|
||||
#undef ul_Steps
|
||||
#undef ul_FalloffStyle
|
||||
#undef ul_Layer
|
||||
@@ -127,16 +127,16 @@ obj
|
||||
//Change icon depending on the fuel, and thus temperature.
|
||||
if(firelevel > 6)
|
||||
icon_state = "3"
|
||||
if(LuminosityRed != 7)
|
||||
ul_SetLuminosity(7,5,0)
|
||||
if(LuminosityRed != 11)
|
||||
ul_SetLuminosity(11,9,0)
|
||||
else if(firelevel > 2.5)
|
||||
icon_state = "2"
|
||||
if(LuminosityRed != 5)
|
||||
ul_SetLuminosity(5,4,0)
|
||||
if(LuminosityRed != 8)
|
||||
ul_SetLuminosity(8,7,0)
|
||||
else
|
||||
icon_state = "1"
|
||||
if(LuminosityRed != 3)
|
||||
ul_SetLuminosity(3,2,0)
|
||||
if(LuminosityRed != 5)
|
||||
ul_SetLuminosity(5,4,0)
|
||||
|
||||
//Ensure flow temperature is higher than minimum fire temperatures.
|
||||
flow.temperature = max(PLASMA_MINIMUM_BURN_TEMPERATURE+0.1,flow.temperature)
|
||||
|
||||
@@ -114,7 +114,7 @@
|
||||
|
||||
// Remove any luminosity etc.
|
||||
var/prevlum = teleatom.luminosity
|
||||
teleatom.luminosity = 0
|
||||
teleatom.ul_SetLuminosity(0)
|
||||
|
||||
if(force_teleport)
|
||||
teleatom.forceMove(destturf)
|
||||
|
||||
@@ -13,7 +13,6 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
|
||||
|
||||
*/
|
||||
|
||||
|
||||
/area
|
||||
var/fire = null
|
||||
var/atmos = 1
|
||||
@@ -128,6 +127,8 @@ proc/process_ghost_teleport_locs()
|
||||
|
||||
/area/shuttle //DO NOT TURN THE ul_Lighting STUFF ON FOR SHUTTLES. IT BREAKS THINGS.
|
||||
requires_power = 0
|
||||
luminosity = 1
|
||||
ul_Lighting = 0
|
||||
|
||||
/area/shuttle/arrival
|
||||
name = "\improper Arrival Shuttle"
|
||||
@@ -231,11 +232,15 @@ proc/process_ghost_teleport_locs()
|
||||
icon_state = "shuttle"
|
||||
name = "\improper Alien Shuttle Base"
|
||||
requires_power = 1
|
||||
luminosity = 1
|
||||
ul_Lighting = 0
|
||||
|
||||
/area/shuttle/alien/mine
|
||||
icon_state = "shuttle"
|
||||
name = "\improper Alien Shuttle Mine"
|
||||
requires_power = 1
|
||||
luminosity = 1
|
||||
ul_Lighting = 0
|
||||
|
||||
/area/shuttle/prison/
|
||||
name = "\improper Prison Shuttle"
|
||||
@@ -802,6 +807,8 @@ proc/process_ghost_teleport_locs()
|
||||
/area/holodeck
|
||||
name = "\improper Holodeck"
|
||||
icon_state = "Holodeck"
|
||||
luminosity = 1
|
||||
ul_Lighting = 0
|
||||
|
||||
/area/holodeck/alphadeck
|
||||
name = "\improper Holodeck Alpha"
|
||||
@@ -957,8 +964,9 @@ proc/process_ghost_teleport_locs()
|
||||
//Solars
|
||||
|
||||
/area/solar
|
||||
LightLevels = list("Red" = 2, "Green" = 2, "Blue" = 3)
|
||||
requires_power = 0
|
||||
luminosity = 1
|
||||
ul_Lighting = 0
|
||||
|
||||
auxport
|
||||
name = "\improper Port Auxiliary Solar Array"
|
||||
@@ -1474,18 +1482,26 @@ proc/process_ghost_teleport_locs()
|
||||
/area/turret_protected/AIsatextFP
|
||||
name = "\improper AI Sat Ext"
|
||||
icon_state = "storage"
|
||||
luminosity = 1
|
||||
ul_Lighting = 0
|
||||
|
||||
/area/turret_protected/AIsatextFS
|
||||
name = "\improper AI Sat Ext"
|
||||
icon_state = "storage"
|
||||
luminosity = 1
|
||||
ul_Lighting = 0
|
||||
|
||||
/area/turret_protected/AIsatextAS
|
||||
name = "\improper AI Sat Ext"
|
||||
icon_state = "storage"
|
||||
luminosity = 1
|
||||
ul_Lighting = 0
|
||||
|
||||
/area/turret_protected/AIsatextAP
|
||||
name = "\improper AI Sat Ext"
|
||||
icon_state = "storage"
|
||||
luminosity = 1
|
||||
ul_Lighting = 0
|
||||
|
||||
/area/turret_protected/NewAIMain
|
||||
name = "\improper AI Main New"
|
||||
|
||||
@@ -384,6 +384,33 @@
|
||||
opacity = 0
|
||||
density = 0
|
||||
|
||||
/obj/effect/sign/science//These 3 have multiple types, just var-edit the icon_state to whatever one you want on the map
|
||||
desc = "A warning sign which reads 'SCIENCE!'"
|
||||
name = "SCIENCE!"
|
||||
icon = 'decals.dmi'
|
||||
icon_state = "science1"
|
||||
anchored = 1.0
|
||||
opacity = 0
|
||||
density = 0
|
||||
|
||||
/obj/effect/sign/chemistry
|
||||
desc = "A warning sign which reads 'CHEMISTY'"
|
||||
name = "CHEMISTRY"
|
||||
icon = 'decals.dmi'
|
||||
icon_state = "chemistry1"
|
||||
anchored = 1.0
|
||||
opacity = 0
|
||||
density = 0
|
||||
|
||||
/obj/effect/sign/botany
|
||||
desc = "A warning sign which reads 'HYDROPONICS'"
|
||||
name = "HYDROPONICS"
|
||||
icon = 'decals.dmi'
|
||||
icon_state = "hydro1"
|
||||
anchored = 1.0
|
||||
opacity = 0
|
||||
density = 0
|
||||
|
||||
/obj/hud
|
||||
name = "hud"
|
||||
unacidable = 1
|
||||
@@ -1279,6 +1306,46 @@
|
||||
opacity = 1
|
||||
anchored = 1
|
||||
|
||||
/obj/structure/falsewall/gold
|
||||
name = "gold wall"
|
||||
desc = "A wall with gold plating. Swag"
|
||||
icon_state = ""
|
||||
|
||||
/obj/structure/falsewall/silver
|
||||
name = "silver wall"
|
||||
desc = "A wall with silver plating. Shiny"
|
||||
icon_state = ""
|
||||
|
||||
/obj/structure/falsewall/diamond
|
||||
name = "diamond wall"
|
||||
desc = "A wall with diamond plating. You monster"
|
||||
icon_state = ""
|
||||
|
||||
/obj/structure/falsewall/uranium
|
||||
name = "uranium wall"
|
||||
desc = "A wall with uranium plating. This is probably a bad idea"
|
||||
icon_state = ""
|
||||
|
||||
/obj/structure/falsewall/plasma
|
||||
name = "plasma wall"
|
||||
desc = "A wall with plasma plating. This is definately a bad idea"
|
||||
icon_state = ""
|
||||
|
||||
/obj/structure/falsewall/bananium
|
||||
name = "bananium wall"
|
||||
desc = "A wall with bananium plating. Honk"
|
||||
icon_state = ""
|
||||
|
||||
/obj/structure/falsewall/sand
|
||||
name = "sandstone wall"
|
||||
desc = "A wall with sandstone plating."
|
||||
icon_state = ""
|
||||
|
||||
/*/obj/structure/falsewall/wood
|
||||
name = "wooden wall"
|
||||
desc = "A wall with classy wooden paneling."
|
||||
icon_state = ""*/
|
||||
|
||||
/obj/structure/falserwall
|
||||
name = "r wall"
|
||||
desc = "A huge chunk of reinforced metal used to seperate rooms."
|
||||
|
||||
@@ -1153,12 +1153,12 @@
|
||||
..()
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/glowberries/pickup(mob/user)
|
||||
src.ul_SetLuminosity(0)
|
||||
ul_SetLuminosity(0)
|
||||
user.ul_SetLuminosity(user.LuminosityRed + potency/5, user.LuminosityGreen + potency/5, user.LuminosityBlue + potency/5)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/glowberries/dropped(mob/user)
|
||||
user.ul_SetLuminosity(user.LuminosityRed - potency/5, user.LuminosityGreen - potency/5, user.LuminosityBlue - potency/5)
|
||||
src.ul_SetLuminosity(potency/5)
|
||||
ul_SetLuminosity(potency/5)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/cocoapod
|
||||
seed = "/obj/item/seeds/cocoapodseed"
|
||||
@@ -1621,7 +1621,7 @@
|
||||
if(istype(src.loc,/mob))
|
||||
pickup(src.loc)
|
||||
else
|
||||
src.ul_SetLuminosity(potency/10)
|
||||
ul_SetLuminosity(potency/10)
|
||||
lifespan = 120 //ten times that is the delay
|
||||
endurance = 30
|
||||
maturation = 15
|
||||
|
||||
@@ -180,7 +180,7 @@
|
||||
// product_hideamt = "3;4;6"
|
||||
hidden_prices = "3;3;2"
|
||||
points = 25
|
||||
product_ads = "Go save some lives!;The best stuff for your medbay.;Only the finest tools.;Natural chemicals!;This stuff saves lives.;Don't you want some?"
|
||||
// product_ads = "Go save some lives!;The best stuff for your medbay.;Only the finest tools.;Natural chemicals!;This stuff saves lives.;Don't you want some?;Ping!"
|
||||
charge_type = "medical"
|
||||
|
||||
/obj/machinery/vending/wallmed1
|
||||
@@ -310,7 +310,7 @@
|
||||
product_ads = "For Tsar and Country.;Have you fulfilled your nutrition quota today?;Very nice!;We are simple people, for this is all we eat.;If there is a person, there is a problem. If there is no person, then there is no problem."
|
||||
charge_type = "soda"
|
||||
|
||||
/obj/machinery/vending/tool
|
||||
/obj/machinery/vending/tool//Who did this and why is it here? I don't even
|
||||
name = "YouTool"
|
||||
desc = "Tools for tools."
|
||||
icon_state = "tool"
|
||||
@@ -327,6 +327,22 @@
|
||||
product_coin_amt = "1"
|
||||
charge_type = "engineering"
|
||||
|
||||
/obj/machinery/vending/engivend//Source of tools and what have you for Engineering (Needed on account of the public auto-lathe being removed) -Sieve
|
||||
name = "Engi-Vend"
|
||||
desc = "Spare tool vending. What? Did you expect some witty description?"
|
||||
icon_state = "engivend"
|
||||
icon_deny = "engivend-deny"
|
||||
req_access_txt = "10" //Engineering access
|
||||
product_paths = "/obj/item/weapon/cable_coil/random;/obj/item/weapon/crowbar;/obj/item/weapon/weldingtool/largetank;/obj/item/weapon/wirecutters;/obj/item/weapon/wrench;/obj/item/device/t_scanner;/obj/item/device/multitool;/obj/item/weapon/airlock_electronics;/obj/item/weapon/module/power_control"
|
||||
// product_amounts = "10;5;3;5;5;5;3;5;5"
|
||||
product_prices = "1;2;3;2;2;2;3;2;2"
|
||||
product_hidden = "/obj/item/weapon/weldingtool/hugetank;/obj/item/clothing/gloves/fyellow"
|
||||
// product_hideamt = "2;2"
|
||||
hidden_prices = "4;4"
|
||||
product_coin = "/obj/item/weapon/storage/belt/utility"
|
||||
product_coin_amt = "3"
|
||||
charge_type = "engineering"
|
||||
|
||||
/obj/machinery/vending/genetics
|
||||
name = "Genetics Dispenser"
|
||||
desc = "Medical drug dispenser."
|
||||
|
||||
@@ -355,21 +355,6 @@
|
||||
details = 1
|
||||
origin_tech = "magnets=4;biotech=2"
|
||||
|
||||
/obj/item/weapon/melee/baton
|
||||
name = "stun baton"
|
||||
desc = "The police baton of the future."
|
||||
icon_state = "stunbaton"
|
||||
item_state = "baton"
|
||||
flags = FPRINT | TABLEPASS
|
||||
slot_flags = SLOT_BELT
|
||||
force = 15
|
||||
throwforce = 7
|
||||
w_class = 3
|
||||
var/charges = 10.0
|
||||
var/maximum_charges = 10.0
|
||||
var/status = 0
|
||||
origin_tech = "combat=2"
|
||||
|
||||
/*/obj/item/weapon/melee/chainofcommand
|
||||
name = "chain of command"
|
||||
desc = "The Captain is first and all other heads are last."
|
||||
|
||||
@@ -157,6 +157,7 @@
|
||||
name = "wall"
|
||||
desc = "A huge chunk of metal used to seperate rooms."
|
||||
icon = 'walls.dmi'
|
||||
var/mineral = "metal"
|
||||
opacity = 1
|
||||
density = 1
|
||||
blocks_air = 1
|
||||
@@ -166,6 +167,80 @@
|
||||
|
||||
var/walltype = "wall"
|
||||
|
||||
/turf/simulated/wall/mineral
|
||||
name = "mineral wall"
|
||||
desc = "This shouldn't exist"
|
||||
icon_state = ""
|
||||
var/last_event = 0
|
||||
var/active = null
|
||||
|
||||
/turf/simulated/wall/mineral/New()
|
||||
switch(mineral)
|
||||
if("gold")
|
||||
name = "gold wall"
|
||||
desc = "A wall with gold plating. Swag!"
|
||||
icon_state = "gold0"
|
||||
walltype = "gold"
|
||||
// var/electro = 1
|
||||
// var/shocked = null
|
||||
if("silver")
|
||||
name = "silver wall"
|
||||
desc = "A wall with silver plating. Shiny!"
|
||||
icon_state = "silver0"
|
||||
walltype = "silver"
|
||||
// var/electro = 0.75
|
||||
// var/shocked = null
|
||||
if("diamond")
|
||||
name = "diamond wall"
|
||||
desc = "A wall with diamond plating. You monster."
|
||||
icon_state = "diamond0"
|
||||
walltype = "diamond"
|
||||
if("uranium")
|
||||
name = "uranium wall"
|
||||
desc = "A wall with uranium plating. This is probably a bad idea."
|
||||
icon_state = "uranium0"
|
||||
walltype = "uranium"
|
||||
if("plasma")
|
||||
name = "plasma wall"
|
||||
desc = "A wall with plasma plating. This is definately a bad idea."
|
||||
icon_state = "plasma0"
|
||||
walltype = "plasma"
|
||||
if("clown")
|
||||
name = "bananium wall"
|
||||
desc = "A wall with bananium plating. Honk!"
|
||||
icon_state = "clown0"
|
||||
walltype = "clown"
|
||||
if("sandstone")
|
||||
name = "sandstone wall"
|
||||
desc = "A wall with sandstone plating."
|
||||
icon_state = "sandstone0"
|
||||
walltype = "sandstone"
|
||||
..()
|
||||
|
||||
/turf/simulated/wall/mineral/proc/radiate()
|
||||
if(!active)
|
||||
if(world.time > last_event+15)
|
||||
active = 1
|
||||
for(var/mob/living/L in range(3,src))
|
||||
L.apply_effect(12,IRRADIATE,0)
|
||||
for(var/turf/simulated/wall/mineral/T in range(3,src))
|
||||
if(T.mineral == "uranium")
|
||||
T.radiate()
|
||||
last_event = world.time
|
||||
active = null
|
||||
return
|
||||
return
|
||||
|
||||
/*/turf/simulated/wall/mineral/proc/shock()
|
||||
if (electrocute_mob(user, C, src))
|
||||
var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
|
||||
s.set_up(5, 1, src)
|
||||
s.start()
|
||||
return 1
|
||||
else
|
||||
return 0
|
||||
*/
|
||||
|
||||
/turf/simulated/wall/heatshield
|
||||
thermal_conductivity = 0
|
||||
opacity = 0
|
||||
@@ -256,7 +331,7 @@
|
||||
return L
|
||||
|
||||
|
||||
|
||||
/*
|
||||
/turf/simulated/wall/mineral
|
||||
icon = 'mineral_walls.dmi'
|
||||
walltype = "iron"
|
||||
@@ -356,3 +431,4 @@
|
||||
|
||||
hardness -= toxinsToDeduce/100
|
||||
CheckHardness()
|
||||
*/
|
||||
|
||||
@@ -28,24 +28,22 @@
|
||||
requires_power = 1
|
||||
always_unpowered = 1
|
||||
LightLevels = list("Red" = 2, "Green" = 2, "Blue" = 3)
|
||||
ul_SetLuminosity(2,2,3)
|
||||
power_light = 0
|
||||
power_equip = 0
|
||||
power_environ = 0
|
||||
//has_gravity = 0 // Space has gravity. Because.. because.
|
||||
|
||||
else if(!requires_power)
|
||||
if(!requires_power)
|
||||
power_light = 0//rastaf0
|
||||
power_equip = 0//rastaf0
|
||||
power_environ = 0//rastaf0
|
||||
if(!ul_Lighting)
|
||||
luminosity = 1
|
||||
luminosity = 1
|
||||
ul_Lighting = 0
|
||||
else
|
||||
luminosity = 0
|
||||
area_lights_luminosity = rand(6,7)
|
||||
if(LightLevels)
|
||||
ul_Light()
|
||||
//ul_SetLuminosity(0) // *DAL*
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -237,11 +237,11 @@
|
||||
var/image/I = cult_mind.current.antag_img
|
||||
I.icon_state = "cult"
|
||||
cultist.current.client.images += I
|
||||
if(cult_mind.current)
|
||||
if(cult_mind.current.client)
|
||||
var/image/I = cultist.current.antag_img
|
||||
I.icon_state = "cult"
|
||||
cult_mind.current.client.images += I
|
||||
if(cult_mind.current)
|
||||
if(cult_mind.current.client)
|
||||
var/image/I = cultist.current.antag_img
|
||||
I.icon_state = "cult"
|
||||
cult_mind.current.client.images += I
|
||||
|
||||
|
||||
/datum/game_mode/proc/update_cult_icons_removed(datum/mind/cult_mind)
|
||||
@@ -253,11 +253,11 @@
|
||||
if(I.icon_state == "cult" && I.loc == cult_mind.current)
|
||||
cultist.current.client.images -= I
|
||||
|
||||
if(cult_mind.current)
|
||||
if(cult_mind.current.client)
|
||||
for(var/image/I in cult_mind.current.client.images)
|
||||
if(I.icon_state == "cult")
|
||||
cult_mind.current.client.images -= I
|
||||
if(cult_mind.current)
|
||||
if(cult_mind.current.client)
|
||||
for(var/image/I in cult_mind.current.client.images)
|
||||
if(I.icon_state == "cult")
|
||||
cult_mind.current.client.images -= I
|
||||
|
||||
|
||||
/datum/game_mode/cult/proc/get_unconvertables()
|
||||
|
||||
@@ -15,6 +15,8 @@
|
||||
|
||||
var/lastfired = 0
|
||||
var/shot_delay = 3 //.3 seconds between shots
|
||||
var/lasercolor = ""
|
||||
var/disabled = 0
|
||||
|
||||
//var/lasers = 0
|
||||
|
||||
@@ -68,11 +70,12 @@
|
||||
item_state = "ed209_frame"
|
||||
var/build_step = 0
|
||||
var/created_name = "ED-209 Security Robot" //To preserve the name if it's a unique securitron I guess
|
||||
var/lasercolor = ""
|
||||
|
||||
|
||||
/obj/machinery/bot/ed209/New()
|
||||
..()
|
||||
src.icon_state = "ed209[src.on]"
|
||||
src.icon_state = "[lasercolor]ed209[src.on]"
|
||||
spawn(3)
|
||||
src.botcard = new /obj/item/weapon/card/id(src)
|
||||
src.botcard.access = get_access("Detective")
|
||||
@@ -82,10 +85,17 @@
|
||||
if(radio_controller)
|
||||
radio_controller.add_object(src, control_freq, filter = RADIO_SECBOT)
|
||||
radio_controller.add_object(src, beacon_freq, filter = RADIO_NAVBEACONS)
|
||||
if(lasercolor)
|
||||
req_access = list(access_maint_tunnels,access_clown,access_mime)
|
||||
arrest_type = 1
|
||||
if(lasercolor == "b")
|
||||
name = pick("BLUE BALLER","SANIC","BLUE KILLDEATH MURDERBOT")
|
||||
if(lasercolor == "r")
|
||||
name = pick("RED RAMPAGE","RED ROVER","RED KILLDEATH MURDERBOT")
|
||||
|
||||
/obj/machinery/bot/ed209/turn_on()
|
||||
. = ..()
|
||||
src.icon_state = "ed209[src.on]"
|
||||
src.icon_state = "[lasercolor]ed209[src.on]"
|
||||
src.mode = SECBOT_IDLE
|
||||
src.updateUsrDialog()
|
||||
|
||||
@@ -96,7 +106,7 @@
|
||||
src.anchored = 0
|
||||
src.mode = SECBOT_IDLE
|
||||
walk_to(src,0)
|
||||
src.icon_state = "ed209[src.on]"
|
||||
src.icon_state = "[lasercolor]ed209[src.on]"
|
||||
src.updateUsrDialog()
|
||||
|
||||
/obj/machinery/bot/ed209/attack_hand(mob/user as mob)
|
||||
@@ -181,7 +191,7 @@ Auto Patrol: []"},
|
||||
src.anchored = 0
|
||||
src.emagged = 1
|
||||
src.on = 1
|
||||
src.icon_state = "ed209[src.on]"
|
||||
src.icon_state = "[lasercolor]ed209[src.on]"
|
||||
mode = SECBOT_IDLE
|
||||
|
||||
/obj/machinery/bot/ed209/process()
|
||||
@@ -210,7 +220,7 @@ Auto Patrol: []"},
|
||||
if (targets.len>0)
|
||||
var/mob/t = pick(targets)
|
||||
if (istype(t, /mob/living))
|
||||
if (t.stat!=2)
|
||||
if ((t.stat!=2) && (t.lying != 1))
|
||||
//src.speak("selected target: " + t.real_name)
|
||||
src.shootAt(t)
|
||||
switch(mode)
|
||||
@@ -222,7 +232,8 @@ Auto Patrol: []"},
|
||||
mode = SECBOT_START_PATROL // switch to patrol mode
|
||||
|
||||
if(SECBOT_HUNT) // hunting for perp
|
||||
|
||||
if(src.lasercolor)//Lasertag bots do not tase or arrest anyone, just patrol and shoot and whatnot
|
||||
return
|
||||
// if can't reach perp for long enough, go idle
|
||||
if (src.frustration >= 8)
|
||||
// for(var/mob/O in hearers(src, null))
|
||||
@@ -236,9 +247,9 @@ Auto Patrol: []"},
|
||||
if (target) // make sure target exists
|
||||
if (get_dist(src, src.target) <= 1) // if right next to perp
|
||||
playsound(src.loc, 'Egloves.ogg', 50, 1, -1)
|
||||
src.icon_state = "ed209-c"
|
||||
src.icon_state = "[lasercolor]ed209-c"
|
||||
spawn(2)
|
||||
src.icon_state = "ed209[src.on]"
|
||||
src.icon_state = "[lasercolor]ed209[src.on]"
|
||||
var/mob/living/carbon/M = src.target
|
||||
var/maxstuns = 4
|
||||
if (istype(M, /mob/living/carbon/human))
|
||||
@@ -270,6 +281,8 @@ Auto Patrol: []"},
|
||||
src.frustration = 0
|
||||
|
||||
if(SECBOT_PREP_ARREST) // preparing to arrest target
|
||||
if(src.lasercolor)
|
||||
return
|
||||
if (!target)
|
||||
mode = SECBOT_IDLE
|
||||
src.anchored = 0
|
||||
@@ -305,6 +318,8 @@ Auto Patrol: []"},
|
||||
// src.speak(arrest_message)
|
||||
|
||||
if(SECBOT_ARREST) // arresting
|
||||
if(src.lasercolor)
|
||||
return
|
||||
if (!target || src.target.handcuffed)
|
||||
src.anchored = 0
|
||||
mode = SECBOT_IDLE
|
||||
@@ -640,6 +655,22 @@ Auto Patrol: []"},
|
||||
if((istype(perp:wear_id, /obj/item/weapon/card/id/syndicate)) && src.idcheck)
|
||||
threatcount -= 2
|
||||
|
||||
if(src.lasercolor == "b")//Lasertag turrets target the opposing team, how great is that? -Sieve
|
||||
if(istype(perp.wear_suit, /obj/item/clothing/suit/redtag))
|
||||
threatcount += 4
|
||||
if((istype(perp:r_hand,/obj/item/weapon/gun/energy/laser/redtag)) || (istype(perp:l_hand,/obj/item/weapon/gun/energy/laser/redtag)))
|
||||
threatcount += 4
|
||||
if(istype(perp:belt, /obj/item/weapon/gun/energy/laser/redtag))
|
||||
threatcount += 2
|
||||
|
||||
if(src.lasercolor == "r")
|
||||
if(istype(perp.wear_suit, /obj/item/clothing/suit/bluetag))
|
||||
threatcount += 4
|
||||
if((istype(perp:r_hand,/obj/item/weapon/gun/energy/laser/bluetag)) || (istype(perp:l_hand,/obj/item/weapon/gun/energy/laser/bluetag)))
|
||||
threatcount += 4
|
||||
if(istype(perp:belt, /obj/item/weapon/gun/energy/laser/bluetag))
|
||||
threatcount += 2
|
||||
|
||||
if (src.check_records)
|
||||
for (var/datum/data/record/E in data_core.general)
|
||||
var/perpname = perp.name
|
||||
@@ -697,8 +728,15 @@ Auto Patrol: []"},
|
||||
Sa.created_name = src.name
|
||||
new /obj/item/device/assembly/prox_sensor(Tsec)
|
||||
|
||||
var/obj/item/weapon/melee/baton/B = new /obj/item/weapon/melee/baton(Tsec)
|
||||
B.charges = 0
|
||||
if(!lasercolor)
|
||||
var/obj/item/weapon/gun/energy/taser/G = new /obj/item/weapon/gun/energy/taser(Tsec)
|
||||
G.power_supply.charge = 0
|
||||
else if(lasercolor == "b")
|
||||
var/obj/item/weapon/gun/energy/laser/bluetag/G = new /obj/item/weapon/gun/energy/laser/bluetag(Tsec)
|
||||
G.power_supply.charge = 0
|
||||
else if(lasercolor == "r")
|
||||
var/obj/item/weapon/gun/energy/laser/redtag/G = new /obj/item/weapon/gun/energy/laser/redtag(Tsec)
|
||||
G.power_supply.charge = 0
|
||||
|
||||
if (prob(50))
|
||||
new /obj/item/robot_parts/l_arm(Tsec)
|
||||
@@ -728,10 +766,21 @@ Auto Patrol: []"},
|
||||
// playsound(src.loc, 'ed209_shoot.ogg', 50, 0)
|
||||
|
||||
var/obj/item/projectile/A
|
||||
if (src.emagged)
|
||||
A = new /obj/item/projectile/beam( loc )
|
||||
else
|
||||
A = new /obj/item/projectile/energy/electrode( loc )
|
||||
if(!lasercolor)
|
||||
if (src.emagged)
|
||||
A = new /obj/item/projectile/beam( loc )
|
||||
else
|
||||
A = new /obj/item/projectile/energy/electrode( loc )
|
||||
else if(lasercolor == "b")
|
||||
if (src.emagged)
|
||||
A = new /obj/item/projectile/energy/electrode( loc )
|
||||
else
|
||||
A = new /obj/item/projectile/bluetag( loc )
|
||||
else if(lasercolor == "r")
|
||||
if (src.emagged)
|
||||
A = new /obj/item/projectile/energy/electrode( loc )
|
||||
else
|
||||
A = new /obj/item/projectile/redtag( loc )
|
||||
|
||||
if (!( istype(U, /turf) ))
|
||||
//A = null
|
||||
@@ -813,6 +862,22 @@ Auto Patrol: []"},
|
||||
src.item_state = "ed209_shell"
|
||||
src.icon_state = "ed209_shell"
|
||||
del(W)
|
||||
else if(istype(W, /obj/item/clothing/suit/bluetag) && (src.build_step == 2))
|
||||
src.build_step++
|
||||
user << "You add the armor to [src]!"
|
||||
src.name = "vest/legs/frame assembly"
|
||||
lasercolor = "b"
|
||||
src.item_state = "[lasercolor]ed209_shell"
|
||||
src.icon_state = "[lasercolor]ed209_shell"
|
||||
del(W)
|
||||
else if(istype(W, /obj/item/clothing/suit/redtag) && (src.build_step == 2))
|
||||
src.build_step++
|
||||
user << "You add the armor to [src]!"
|
||||
src.name = "vest/legs/frame assembly"
|
||||
lasercolor = "r"
|
||||
src.item_state = "[lasercolor]ed209_shell"
|
||||
src.icon_state = "[lasercolor]ed209_shell"
|
||||
del(W)
|
||||
else if(istype(W, /obj/item/weapon/weldingtool) && src.build_step == 3)
|
||||
var/obj/item/weapon/weldingtool/WT = W
|
||||
if(WT.remove_fuel(0,user))
|
||||
@@ -823,15 +888,15 @@ Auto Patrol: []"},
|
||||
src.build_step++
|
||||
user << "You add the helmet to [src]!"
|
||||
src.name = "covered and shielded frame assembly"
|
||||
src.item_state = "ed209_hat"
|
||||
src.icon_state = "ed209_hat"
|
||||
src.item_state = "[lasercolor]ed209_hat"
|
||||
src.icon_state = "[lasercolor]ed209_hat"
|
||||
del(W)
|
||||
else if(isprox(W) && (src.build_step == 5))
|
||||
src.build_step++
|
||||
user << "You add the prox sensor to [src]!"
|
||||
src.name = "prox/covered and armed the frame assembly"
|
||||
src.item_state = "ed209_prox"
|
||||
src.icon_state = "ed209_prox"
|
||||
src.item_state = "[lasercolor]ed209_prox"
|
||||
src.icon_state = "[lasercolor]ed209_prox"
|
||||
del(W)
|
||||
else if(istype(W, /obj/item/weapon/cable_coil) && (src.build_step == 6) )
|
||||
var/obj/item/weapon/cable_coil/coil = W
|
||||
@@ -843,12 +908,26 @@ Auto Patrol: []"},
|
||||
src.build_step++
|
||||
user << "\blue You wire the ED-209 assembly!"
|
||||
src.name = "Wired ED-209 Assembly"
|
||||
else if(istype(W, /obj/item/weapon/gun/energy/taser) && (src.build_step == 7))
|
||||
else if(istype(W, /obj/item/weapon/gun/energy/taser) && (src.build_step == 7) && (!lasercolor))
|
||||
src.build_step++
|
||||
user << "You add the taser gun to [src]!"
|
||||
src.name = "Taser/Wired ED-209 Assembly"
|
||||
src.item_state = "ed209_taser"
|
||||
src.icon_state = "ed209_taser"
|
||||
src.item_state = "[lasercolor]ed209_taser"
|
||||
src.icon_state = "[lasercolor]ed209_taser"
|
||||
del(W)
|
||||
else if(istype(W, /obj/item/weapon/gun/energy/laser/bluetag) && (src.build_step == 7) && (lasercolor == "b"))
|
||||
src.build_step++
|
||||
user << "You add the lasertag gun to [src]!"
|
||||
src.name = "Bluetag ED-209 Assembly"
|
||||
src.item_state = "[lasercolor]ed209_taser"
|
||||
src.icon_state = "[lasercolor]ed209_taser"
|
||||
del(W)
|
||||
else if(istype(W, /obj/item/weapon/gun/energy/laser/redtag) && (src.build_step == 7) && (lasercolor == "r"))
|
||||
src.build_step++
|
||||
user << "You add the lasertag gun to [src]!"
|
||||
src.name = "Redtag ED-209 Assembly"
|
||||
src.item_state = "[lasercolor]ed209_taser"
|
||||
src.icon_state = "[lasercolor]ed209_taser"
|
||||
del(W)
|
||||
else if(istype(W, /obj/item/weapon/screwdriver) && (src.build_step == 8) )
|
||||
playsound(src.loc, 'Screwdriver.ogg', 100, 1)
|
||||
@@ -865,6 +944,8 @@ Auto Patrol: []"},
|
||||
var/obj/machinery/bot/ed209/S = new /obj/machinery/bot/ed209
|
||||
S.loc = get_turf(src)
|
||||
S.name = src.created_name
|
||||
S.lasercolor = src.lasercolor
|
||||
S.New()
|
||||
del(W)
|
||||
del(src)
|
||||
|
||||
@@ -878,3 +959,15 @@ Auto Patrol: []"},
|
||||
|
||||
src.created_name = t
|
||||
|
||||
/obj/machinery/bot/ed209/bullet_act(var/obj/item/projectile/Proj)
|
||||
if((src.lasercolor == "b") && (src.disabled == 0))
|
||||
if(istype(Proj, /obj/item/projectile/redtag))
|
||||
src.disabled = 1
|
||||
sleep(100)
|
||||
src.disabled = 0
|
||||
if((src.lasercolor == "r") && (src.disabled == 0))
|
||||
if(istype(Proj, /obj/item/projectile/bluetag))
|
||||
src.disabled = 1
|
||||
sleep(100)
|
||||
src.disabled = 0
|
||||
..()
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
//This file was auto-corrected by findeclaration.exe on 29/05/2012 15:03:04
|
||||
//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:31
|
||||
|
||||
/obj/machinery/door
|
||||
name = "Door"
|
||||
@@ -153,7 +153,7 @@
|
||||
if(4) temp=new/obj/structure/door_assembly/door_assembly_med(src.loc)
|
||||
if(5) temp=new/obj/structure/door_assembly/door_assembly_mai(src.loc)
|
||||
if(6) temp=new/obj/structure/door_assembly/door_assembly_ext(src.loc)
|
||||
if(7) temp=new/obj/structure/door_assembly/door_assembly_g(src.loc)
|
||||
if(7) temp=new/obj/structure/door_assembly/door_assembly_glass(src.loc)
|
||||
else failsafe=1
|
||||
if(!failsafe)
|
||||
temp.anchored=0
|
||||
@@ -249,6 +249,7 @@
|
||||
if(!src.operating) //in case of emag
|
||||
src.operating = 1
|
||||
animate("opening")
|
||||
icon_state = "door0"
|
||||
src.ul_SetOpacity(0)
|
||||
sleep(10)
|
||||
src.layer = 2.7
|
||||
|
||||
@@ -24,13 +24,13 @@
|
||||
|
||||
/obj/machinery/flasher/New()
|
||||
sleep(4)
|
||||
src.ul_SetLuminosity(2)
|
||||
ul_SetLuminosity(0,2,0)
|
||||
|
||||
/obj/machinery/flasher/power_change()
|
||||
if ( powered() )
|
||||
stat &= ~NOPOWER
|
||||
icon_state = "[base_state]1"
|
||||
src.ul_SetLuminosity(2)
|
||||
src.ul_SetLuminosity(0,2,0)
|
||||
else
|
||||
stat |= ~NOPOWER
|
||||
icon_state = "[base_state]1-p"
|
||||
|
||||
@@ -72,7 +72,7 @@ For the other part of the code, check silicon say.dm. Particularly robot talk.*/
|
||||
hologram.icon = A.holo_icon
|
||||
hologram.mouse_opacity = 0//So you can't click on it.
|
||||
hologram.layer = FLY_LAYER//Above all the other objects/mobs. Or the vast majority of them.
|
||||
hologram.ul_SetLuminosity(1)//To make it glowy.
|
||||
hologram.ul_SetLuminosity(0,0,2)//To make it glowy.
|
||||
hologram.anchored = 1//So space wind cannot drag it.
|
||||
hologram.name = "AI hologram"//If someone decides to right click.
|
||||
ul_SetLuminosity(0,0,1)//To make the pad glowy.
|
||||
|
||||
@@ -741,6 +741,14 @@ obj/machinery/hydroponics/attackby(var/obj/item/O as obj, var/mob/user as mob)
|
||||
playsound(src.loc, 'spray3.ogg', 50, 1, -6)
|
||||
del(O)
|
||||
src.updateicon()
|
||||
else if(istype(O, /obj/item/weapon/wrench))
|
||||
playsound(loc, 'Ratchet.ogg', 50, 1)
|
||||
anchored = !anchored
|
||||
user << "You [anchored ? "wrench" : "unwrench"] \the [src]."
|
||||
else if(istype(O, /obj/item/weapon/shovel))
|
||||
if(istype(src, /obj/machinery/hydroponics/soil))
|
||||
user << "You clear up the [src]!"
|
||||
del(src)
|
||||
return
|
||||
|
||||
|
||||
|
||||
@@ -53,11 +53,11 @@
|
||||
if ( powered() && disable == 0 )
|
||||
stat &= ~NOPOWER
|
||||
icon_state = "[base_state]"
|
||||
src.ul_SetLuminosity(2)
|
||||
ul_SetLuminosity(2,0,0)
|
||||
else
|
||||
stat |= ~NOPOWER
|
||||
icon_state = "[base_state]-p"
|
||||
src.ul_SetLuminosity(0)
|
||||
ul_SetLuminosity(0)
|
||||
|
||||
/obj/machinery/sparker/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
||||
if(istype(W, /obj/item/device/detective_scanner))
|
||||
|
||||
@@ -23,6 +23,7 @@
|
||||
req_access = list(access_security)
|
||||
power_channel = EQUIP // drains power from the EQUIPMENT channel
|
||||
|
||||
var/lasercolor = ""
|
||||
var/raised = 0 // if the turret cover is "open" and the turret is raised
|
||||
var/raising= 0 // if the turret is currently opening or closing its cover
|
||||
var/health = 80 // the turret's health
|
||||
@@ -30,6 +31,11 @@
|
||||
|
||||
var/installation // the type of weapon installed
|
||||
var/gun_charge = 0 // the charge of the gun inserted
|
||||
var/projectile = null //holder for bullettype
|
||||
var/reqpower = 0 //holder for power needed
|
||||
var/sound = null//So the taser can have sound
|
||||
var/iconholder = null//holder for the icon_state
|
||||
var/egun = null//holder to handle certain guns switching bullettypes
|
||||
|
||||
var/obj/machinery/porta_turret_cover/cover = null // the cover that is covering this turret
|
||||
var/last_fired = 0 // 1: if the turret is cooling down from a shot, 0: turret is ready to fire
|
||||
@@ -46,11 +52,13 @@
|
||||
|
||||
//var/emagged = 0 // 1: emagged, 0: not emagged
|
||||
var/on = 1 // determines if the turret is on
|
||||
var/disabled = 0
|
||||
|
||||
var/datum/effect/effect/system/spark_spread/spark_system // the spark system, used for generating... sparks?
|
||||
|
||||
New()
|
||||
..()
|
||||
icon_state = "[lasercolor]grey_target_prism"
|
||||
// Sets up a spark system
|
||||
spark_system = new /datum/effect/effect/system/spark_spread
|
||||
spark_system.set_up(5, 0, src)
|
||||
@@ -131,22 +139,22 @@ Neutralize All Unidentified Life Signs: []<BR>"},
|
||||
icon_state = "turretCover"
|
||||
return
|
||||
if(stat & BROKEN)
|
||||
icon_state = "destroyed_target_prism"
|
||||
icon_state = "[lasercolor]destroyed_target_prism"
|
||||
else
|
||||
if( powered() )
|
||||
if (on)
|
||||
if (installation == /obj/item/weapon/gun/energy/laser || installation == /obj/item/weapon/gun/energy/pulse_rifle)
|
||||
// laser guns and pulse rifles have an orange icon
|
||||
icon_state = "orange_target_prism"
|
||||
icon_state = "[lasercolor]orange_target_prism"
|
||||
else
|
||||
// anything else has a blue icon
|
||||
icon_state = "target_prism"
|
||||
icon_state = "[lasercolor]target_prism"
|
||||
else
|
||||
icon_state = "grey_target_prism"
|
||||
icon_state = "[lasercolor]grey_target_prism"
|
||||
stat &= ~NOPOWER
|
||||
else
|
||||
spawn(rand(0, 15))
|
||||
src.icon_state = "grey_target_prism"
|
||||
src.icon_state = "[lasercolor]grey_target_prism"
|
||||
stat |= NOPOWER
|
||||
|
||||
|
||||
@@ -165,6 +173,7 @@ Neutralize All Unidentified Life Signs: []<BR>"},
|
||||
var/obj/item/weapon/gun/energy/Gun = new installation(src.loc)
|
||||
Gun.power_supply.charge=gun_charge
|
||||
Gun.update_icon()
|
||||
lasercolor = null
|
||||
if(prob(50)) new /obj/item/stack/sheet/metal( loc, rand(1,4))
|
||||
if(prob(50)) new /obj/item/device/assembly/prox_sensor(locate(x,y,z))
|
||||
else
|
||||
@@ -197,7 +206,7 @@ Neutralize All Unidentified Life Signs: []<BR>"},
|
||||
if(!anchored)
|
||||
anchored = 1
|
||||
invisibility = 2
|
||||
icon_state = "grey_target_prism"
|
||||
icon_state = "[lasercolor]grey_target_prism"
|
||||
user << "You secure the exterior bolts on the turret."
|
||||
cover=new/obj/machinery/porta_turret_cover(src.loc) // create a new turret. While this is handled in process(), this is to workaround a bug where the turret becomes invisible for a split second
|
||||
cover.Parent_Turret = src // make the cover's parent src
|
||||
@@ -244,6 +253,16 @@ Neutralize All Unidentified Life Signs: []<BR>"},
|
||||
if(prob(45) && Proj.damage > 0) src.spark_system.start()
|
||||
if (src.health <= 0)
|
||||
src.die() // the death process :(
|
||||
if((src.lasercolor == "b") && (src.disabled == 0))
|
||||
if(istype(Proj, /obj/item/projectile/redtag))
|
||||
src.disabled = 1
|
||||
sleep(100)
|
||||
src.disabled = 0
|
||||
if((src.lasercolor == "r") && (src.disabled == 0))
|
||||
if(istype(Proj, /obj/item/projectile/bluetag))
|
||||
src.disabled = 1
|
||||
sleep(100)
|
||||
src.disabled = 0
|
||||
return
|
||||
|
||||
/obj/machinery/porta_turret/emp_act(severity)
|
||||
@@ -327,7 +346,11 @@ Neutralize All Unidentified Life Signs: []<BR>"},
|
||||
|
||||
if(!istype(C, /mob/living/silicon) && ai) // If it's set to attack all nonsilicons, target them!
|
||||
if(C.lying)
|
||||
secondarytargets += C
|
||||
if(lasercolor)
|
||||
continue
|
||||
else
|
||||
secondarytargets += C
|
||||
continue
|
||||
else
|
||||
targets += C
|
||||
continue
|
||||
@@ -401,7 +424,7 @@ Neutralize All Unidentified Life Signs: []<BR>"},
|
||||
cover.icon_state="turretCover"
|
||||
raised=0
|
||||
invisibility=2
|
||||
icon_state="grey_target_prism"
|
||||
icon_state="[lasercolor]grey_target_prism"
|
||||
|
||||
|
||||
/obj/machinery/porta_turret/proc/assess_perp(mob/living/carbon/human/perp as mob)
|
||||
@@ -417,7 +440,7 @@ Neutralize All Unidentified Life Signs: []<BR>"},
|
||||
if(auth_weapons) // check for weapon authorization
|
||||
if((isnull(perp:wear_id)) || (istype(perp:wear_id, /obj/item/weapon/card/id/syndicate)))
|
||||
|
||||
if(src.allowed(perp)) // if the perp has security access, return 0
|
||||
if((src.allowed(perp)) && (!lasercolor)) // if the perp has security access, return 0
|
||||
return 0
|
||||
|
||||
if((istype(perp.l_hand, /obj/item/weapon/gun) && !istype(perp.l_hand, /obj/item/weapon/gun/projectile/shotgun)) || istype(perp.l_hand, /obj/item/weapon/melee/baton))
|
||||
@@ -429,6 +452,22 @@ Neutralize All Unidentified Life Signs: []<BR>"},
|
||||
if(istype(perp:belt, /obj/item/weapon/gun) || istype(perp:belt, /obj/item/weapon/melee/baton))
|
||||
threatcount += 2
|
||||
|
||||
if(src.lasercolor == "b")//Lasertag turrets target the opposing team, how great is that? -Sieve
|
||||
if(istype(perp.wear_suit, /obj/item/clothing/suit/redtag))
|
||||
threatcount += 4
|
||||
if((istype(perp:r_hand,/obj/item/weapon/gun/energy/laser/redtag)) || (istype(perp:l_hand,/obj/item/weapon/gun/energy/laser/redtag)))
|
||||
threatcount += 4
|
||||
if(istype(perp:belt, /obj/item/weapon/gun/energy/laser/redtag))
|
||||
threatcount += 2
|
||||
|
||||
if(src.lasercolor == "r")
|
||||
if(istype(perp.wear_suit, /obj/item/clothing/suit/bluetag))
|
||||
threatcount += 4
|
||||
if((istype(perp:r_hand,/obj/item/weapon/gun/energy/laser/bluetag)) || (istype(perp:l_hand,/obj/item/weapon/gun/energy/laser/bluetag)))
|
||||
threatcount += 4
|
||||
if(istype(perp:belt, /obj/item/weapon/gun/energy/laser/bluetag))
|
||||
threatcount += 2
|
||||
|
||||
if (src.check_records) // if the turret can check the records, check if they are set to *Arrest* on records
|
||||
for (var/datum/data/record/E in data_core.general)
|
||||
var/perpname = perp.name
|
||||
@@ -476,99 +515,108 @@ Neutralize All Unidentified Life Signs: []<BR>"},
|
||||
// any emagged turrets will shoot extremely fast! This not only is deadly, but drains a lot power!
|
||||
|
||||
|
||||
var/obj/item/projectile/A
|
||||
if(!installation) // if for some reason the turret has no gun (ie, admin spawned) it resorts to basic taser shots
|
||||
A = new /obj/item/projectile/energy/electrode( loc )
|
||||
if(!emagged) use_power(200)
|
||||
else use_power(400)
|
||||
playsound(src.loc, 'Taser.ogg', 75, 1)
|
||||
icon_state = "target_prism"
|
||||
if(!projectile)
|
||||
lasercolor = ""
|
||||
req_access = list(access_security)
|
||||
if(!installation)// if for some reason the turret has no gun (ie, admin spawned) it resorts to basic taser shots
|
||||
projectile = /obj/item/projectile/energy/electrode
|
||||
reqpower = 200
|
||||
sound = 1
|
||||
iconholder = 1
|
||||
else
|
||||
var/obj/item/weapon/gun/energy/E=new installation
|
||||
// All energy-based weapons are applicable
|
||||
if(istype(E, /obj/item/weapon/gun/energy/laser/bluetag))
|
||||
projectile = /obj/item/projectile/bluetag
|
||||
iconholder = null
|
||||
reqpower = 100
|
||||
lasercolor = "b"
|
||||
req_access = list(access_maint_tunnels,access_clown,access_mime)
|
||||
|
||||
else if(istype(E, /obj/item/weapon/gun/energy/laser/redtag))
|
||||
projectile = /obj/item/projectile/redtag
|
||||
iconholder = null
|
||||
reqpower = 100
|
||||
lasercolor = "r"
|
||||
req_access = list(access_maint_tunnels,access_clown,access_mime)
|
||||
|
||||
else if(istype(E, /obj/item/weapon/gun/energy/pulse_rifle))
|
||||
projectile = /obj/item/projectile/beam/pulse
|
||||
iconholder = null
|
||||
reqpower = 700
|
||||
|
||||
else if(istype(E, /obj/item/weapon/gun/energy/staff))
|
||||
projectile = /obj/item/projectile/change
|
||||
iconholder = 1
|
||||
reqpower = 700
|
||||
|
||||
else if(istype(E, /obj/item/weapon/gun/energy/ionrifle))
|
||||
projectile = /obj/item/projectile/ion
|
||||
iconholder = 1
|
||||
reqpower = 700
|
||||
|
||||
else if(istype(E, /obj/item/weapon/gun/energy/taser) || istype(E, /obj/item/weapon/gun/energy/stunrevolver))
|
||||
projectile = /obj/item/projectile/energy/electrode
|
||||
iconholder = 1
|
||||
reqpower = 200
|
||||
|
||||
else if(istype(E, /obj/item/weapon/gun/energy/lasercannon))
|
||||
projectile = /obj/item/projectile/beam/heavylaser
|
||||
iconholder = null
|
||||
reqpower = 600
|
||||
|
||||
else if(istype(E, /obj/item/weapon/gun/energy/decloner))
|
||||
projectile = /obj/item/projectile/energy/declone
|
||||
iconholder = null
|
||||
reqpower = 600
|
||||
|
||||
else if(istype(E, /obj/item/weapon/gun/energy/crossbow/largecrossbow))
|
||||
projectile = /obj/item/projectile/energy/bolt/large
|
||||
iconholder = null
|
||||
reqpower = 125
|
||||
|
||||
else if(istype(E, /obj/item/weapon/gun/energy/crossbow))
|
||||
projectile = /obj/item/projectile/energy/bolt
|
||||
iconholder = null
|
||||
reqpower = 50
|
||||
|
||||
else if(istype(E, /obj/item/weapon/gun/energy/laser))
|
||||
projectile = /obj/item/projectile/beam
|
||||
iconholder = null
|
||||
reqpower = 500
|
||||
|
||||
else // Energy gun shots
|
||||
projectile = /obj/item/projectile/energy/electrode// if it hasn't been emagged, it uses normal taser shots
|
||||
iconholder = 1
|
||||
egun = 1
|
||||
reqpower = 200
|
||||
|
||||
var/obj/item/projectile/A = projectile
|
||||
var/obj/item/weapon/gun/energy/E=new installation
|
||||
if(iconholder)
|
||||
icon_state = "[lasercolor]target_prism"
|
||||
else
|
||||
icon_state = "[lasercolor]orange_target_prism"
|
||||
if(sound)
|
||||
playsound(src.loc, 'Taser.ogg', 75, 1)
|
||||
A = new projectile( loc )
|
||||
A.original = target.loc
|
||||
if(!emagged)
|
||||
use_power(reqpower)
|
||||
else
|
||||
use_power((reqpower*2))
|
||||
if(egun)// if it has been emagged, use laser shots
|
||||
projectile = /obj/item/projectile/beam
|
||||
iconholder = null
|
||||
reqpower = 500
|
||||
|
||||
// Shooting Code:
|
||||
var/obj/item/weapon/gun/energy/E=new installation
|
||||
|
||||
if(!E.silenced)
|
||||
playsound(src.loc, E.fire_sound, 75, 1)
|
||||
else
|
||||
playsound(src.loc, E.fire_sound, 10, 1)
|
||||
|
||||
// All energy-based weapons are applicable
|
||||
if(istype(E, /obj/item/weapon/gun/energy/laser))
|
||||
A = new /obj/item/projectile/beam( loc )
|
||||
A.original = target.loc
|
||||
icon_state = "orange_target_prism"
|
||||
if(!emagged) use_power(500)
|
||||
else use_power(1000)
|
||||
|
||||
else if(istype(E, /obj/item/weapon/gun/energy/pulse_rifle))
|
||||
A = new /obj/item/projectile/beam/pulse( loc )
|
||||
A.original = target.loc
|
||||
icon_state = "orange_target_prism"
|
||||
if(!emagged) use_power(700)
|
||||
else use_power(1400)
|
||||
|
||||
else if(istype(E, /obj/item/weapon/gun/energy/staff))
|
||||
A = new /obj/item/projectile/change( loc )
|
||||
A.original = target.loc
|
||||
icon_state = "target_prism"
|
||||
if(!emagged) use_power(700)
|
||||
else use_power(1400)
|
||||
|
||||
else if(istype(E, /obj/item/weapon/gun/energy/ionrifle))
|
||||
A = new /obj/item/projectile/ion( loc )
|
||||
A.original = target.loc
|
||||
icon_state = "target_prism"
|
||||
if(!emagged) use_power(700)
|
||||
else use_power(1400)
|
||||
|
||||
|
||||
else if(istype(E, /obj/item/weapon/gun/energy/taser) || istype(E, /obj/item/weapon/gun/energy/stunrevolver))
|
||||
A = new /obj/item/projectile/energy/electrode( loc )
|
||||
icon_state = "target_prism"
|
||||
if(!emagged) use_power(200)
|
||||
else use_power(400)
|
||||
|
||||
else if(istype(E, /obj/item/weapon/gun/energy/lasercannon))
|
||||
A = new /obj/item/projectile/beam/heavylaser( loc )
|
||||
A.original = target.loc
|
||||
icon_state = "orange_target_prism"
|
||||
if(!emagged) use_power(600)
|
||||
else use_power(1200)
|
||||
|
||||
else if(istype(E, /obj/item/weapon/gun/energy/decloner))
|
||||
A = new /obj/item/projectile/energy/declone( loc )
|
||||
A.original = target.loc
|
||||
icon_state = "orange_target_prism"
|
||||
if(!emagged) use_power(600)
|
||||
else use_power(1200)
|
||||
|
||||
else if(istype(E, /obj/item/weapon/gun/energy/crossbow))
|
||||
A = new /obj/item/projectile/energy/bolt( loc )
|
||||
A.original = target.loc
|
||||
icon_state = "orange_target_prism"
|
||||
if(!emagged) use_power(50)
|
||||
else use_power(100)
|
||||
|
||||
else if(istype(E, /obj/item/weapon/gun/energy/crossbow/largecrossbow))
|
||||
A = new /obj/item/projectile/energy/bolt/large( loc )
|
||||
A.original = target.loc
|
||||
icon_state = "orange_target_prism"
|
||||
if(!emagged) use_power(125)
|
||||
else use_power(250)
|
||||
|
||||
else // Energy gun shots
|
||||
|
||||
if(!emagged) // if it hasn't been emagged, it uses normal taser shots
|
||||
A = new /obj/item/projectile/energy/electrode( loc )
|
||||
icon_state = "target_prism"
|
||||
use_power(200)
|
||||
|
||||
else // if it has been emagged, use laser shots
|
||||
A = new /obj/item/projectile/beam( loc )
|
||||
A.original = target.loc
|
||||
icon_state = "orange_target_prism"
|
||||
use_power(1000)
|
||||
|
||||
del(E)
|
||||
A.current = T
|
||||
A.yo = U.y - T.y
|
||||
|
||||
@@ -1,94 +1,85 @@
|
||||
//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:31
|
||||
|
||||
obj/machinery/recharger
|
||||
anchored = 1
|
||||
name = "recharger"
|
||||
icon = 'stationobjs.dmi'
|
||||
icon_state = "recharger0"
|
||||
name = "recharger"
|
||||
anchored = 1
|
||||
use_power = 1
|
||||
idle_power_usage = 4
|
||||
active_power_usage = 250
|
||||
var/obj/item/weapon/charging = null
|
||||
|
||||
var/obj/item/weapon/gun/energy/charging = null
|
||||
var/obj/item/weapon/melee/baton/charging2 = null
|
||||
obj/machinery/recharger/attackby(obj/item/weapon/G as obj, mob/user as mob)
|
||||
if(issilicon(user))
|
||||
return
|
||||
|
||||
attackby(obj/item/weapon/G as obj, mob/user as mob)
|
||||
if(issilicon(user))
|
||||
if(istype(G, /obj/item/weapon/gun/energy) || istype(G, /obj/item/weapon/melee/baton))
|
||||
if(charging)
|
||||
return
|
||||
|
||||
if (istype(G, /obj/item/weapon/gun/energy))
|
||||
if (src.charging || src.charging2)
|
||||
return
|
||||
if (istype(G, /obj/item/weapon/gun/energy/gun/nuclear) || istype(G, /obj/item/weapon/gun/energy/crossbow))
|
||||
user << "Your gun's recharge port was removed to make room for a miniaturized reactor."
|
||||
return
|
||||
if (istype(G, /obj/item/weapon/gun/energy/staff))
|
||||
user << "It's a wooden staff, not a gun!"
|
||||
return
|
||||
var/area/a = loc.loc // Gets our locations location, like a dream within a dream
|
||||
if(!isarea(a))
|
||||
return
|
||||
if(a.power_equip == 0) // There's no APC in this area, don't try to cheat power!
|
||||
user << "\red \The [src] blinks red as you try to insert the item!"
|
||||
return
|
||||
user.drop_item()
|
||||
G.loc = src
|
||||
src.charging = G
|
||||
use_power = 2
|
||||
else if (istype(G, /obj/item/weapon/melee/baton))
|
||||
if (src.charging || src.charging2)
|
||||
return
|
||||
user.drop_item()
|
||||
G.loc = src
|
||||
src.charging2 = G
|
||||
use_power = 2
|
||||
else if(istype(G, /obj/item/weapon/wrench))
|
||||
if (src.charging || src.charging2)
|
||||
user << "\red Remove the weapon first!"
|
||||
return
|
||||
anchored = !anchored
|
||||
user << "You [anchored ? "attach" : "detach"] the recharger [anchored ? "to" : "from"] the ground"
|
||||
playsound(src.loc, 'Ratchet.ogg', 75, 1)
|
||||
|
||||
attack_hand(mob/user as mob)
|
||||
src.add_fingerprint(user)
|
||||
if(ishuman(user))
|
||||
if(istype(user:gloves, /obj/item/clothing/gloves/space_ninja)&&user:gloves:candrain&&!user:gloves:draining)
|
||||
call(/obj/item/clothing/gloves/space_ninja/proc/drain)("MACHINERY",src,user:wear_suit)
|
||||
return
|
||||
|
||||
if (src.charging)
|
||||
src.charging.update_icon()
|
||||
src.charging.loc = src.loc
|
||||
src.charging = null
|
||||
use_power = 1
|
||||
if(src.charging2)
|
||||
src.charging2.update_icon()
|
||||
src.charging2.loc = src.loc
|
||||
src.charging2 = null
|
||||
use_power = 1
|
||||
|
||||
attack_paw(mob/user as mob)
|
||||
if ((ticker && ticker.mode.name == "monkey"))
|
||||
return src.attack_hand(user)
|
||||
|
||||
process()
|
||||
if(stat & (NOPOWER|BROKEN) || !anchored)
|
||||
var/area/a = get_area(src)
|
||||
if(!isarea(a))
|
||||
return
|
||||
if(a.power_equip == 0) // There's no APC in this area, don't try to cheat power!
|
||||
user << "\red The [name] blinks red as you try to insert the item!"
|
||||
return
|
||||
if (istype(G, /obj/item/weapon/gun/energy/gun/nuclear) || istype(G, /obj/item/weapon/gun/energy/crossbow))
|
||||
user << "<span class='notice'>Your gun's recharge port was removed to make room for a miniaturized reactor.</span>"
|
||||
return
|
||||
if (istype(G, /obj/item/weapon/gun/energy/staff))
|
||||
return
|
||||
user.drop_item()
|
||||
G.loc = src
|
||||
charging = G
|
||||
use_power = 2
|
||||
update_icon()
|
||||
else if(istype(G, /obj/item/weapon/wrench))
|
||||
if(charging)
|
||||
user << "\red Remove the weapon first!"
|
||||
return
|
||||
anchored = !anchored
|
||||
user << "You [anchored ? "attached" : "detached"] the recharger."
|
||||
playsound(loc, 'Ratchet.ogg', 75, 1)
|
||||
|
||||
if (src.charging)
|
||||
if (src.charging.power_supply.charge < src.charging.power_supply.maxcharge)
|
||||
src.charging.power_supply.give(100)
|
||||
src.icon_state = "recharger1"
|
||||
obj/machinery/recharger/attack_hand(mob/user as mob)
|
||||
add_fingerprint(user)
|
||||
|
||||
if(charging)
|
||||
charging.update_icon()
|
||||
charging.loc = loc
|
||||
charging = null
|
||||
use_power = 1
|
||||
update_icon()
|
||||
|
||||
obj/machinery/recharger/attack_paw(mob/user as mob)
|
||||
if((ticker && ticker.mode.name == "monkey"))
|
||||
return attack_hand(user)
|
||||
|
||||
obj/machinery/recharger/process()
|
||||
if(stat & (NOPOWER|BROKEN) || !anchored)
|
||||
return
|
||||
|
||||
if(charging)
|
||||
if(istype(charging, /obj/item/weapon/gun/energy))
|
||||
var/obj/item/weapon/gun/energy/E = charging
|
||||
if(E.power_supply.charge < E.power_supply.maxcharge)
|
||||
E.power_supply.give(100)
|
||||
icon_state = "recharger1"
|
||||
use_power(250)
|
||||
else
|
||||
src.icon_state = "recharger2"
|
||||
else if (src.charging2)
|
||||
if (src.charging2.charges < src.charging2.maximum_charges)
|
||||
src.charging2.charges++
|
||||
src.icon_state = "recharger1"
|
||||
use_power(250)
|
||||
icon_state = "recharger2"
|
||||
return
|
||||
if(istype(charging, /obj/item/weapon/melee/baton))
|
||||
var/obj/item/weapon/melee/baton/B = charging
|
||||
if(B.charges < initial(B.charges))
|
||||
B.charges++
|
||||
icon_state = "recharger1"
|
||||
use_power(150)
|
||||
else
|
||||
src.icon_state = "recharger2"
|
||||
else
|
||||
src.icon_state = "recharger0"
|
||||
icon_state = "recharger2"
|
||||
|
||||
obj/machinery/recharger/update_icon() //we have an update_icon() in addition to the stuff in process to make it feel a tiny bit snappier.
|
||||
if(charging)
|
||||
icon_state = "recharger1"
|
||||
else
|
||||
icon_state = "recharger0"
|
||||
@@ -427,7 +427,7 @@
|
||||
if(A && B)
|
||||
needs_power = 1
|
||||
spawn(1)
|
||||
src.ul_SetLuminosity(3)
|
||||
src.ul_SetLuminosity(0,0,4)
|
||||
|
||||
/* for(var/mob/M as mob in src.loc) //does not work for some reason.
|
||||
if(istype(M,/mob/living/carbon))
|
||||
|
||||
@@ -129,7 +129,7 @@
|
||||
disp2 = "STATN"
|
||||
else
|
||||
disp1 = "SPPLY"
|
||||
disp2 = "DOCK"
|
||||
disp2 = "AWAY"
|
||||
|
||||
update_display(disp1, disp2)
|
||||
|
||||
|
||||
@@ -54,6 +54,8 @@
|
||||
// 2 = cannons
|
||||
// 3 = pulse
|
||||
// 4 = change (HONK)
|
||||
// 5 = bluetag
|
||||
// 6 = redtag
|
||||
var/health = 18
|
||||
var/id = ""
|
||||
var/obj/machinery/turretcover/cover = null
|
||||
@@ -211,6 +213,10 @@
|
||||
A = new /obj/item/projectile/beam/pulse( loc )
|
||||
if(4)
|
||||
A = new /obj/item/projectile/change( loc )
|
||||
if(5)
|
||||
A = new /obj/item/projectile/bluetag( loc )
|
||||
if(6)
|
||||
A = new /obj/item/projectile/redtag( loc )
|
||||
A.original = target.loc
|
||||
use_power(500)
|
||||
else
|
||||
|
||||
@@ -15,17 +15,40 @@
|
||||
internal_damage_threshold = 35
|
||||
max_equip = 3
|
||||
|
||||
/obj/mecha/combat/gygax/dark
|
||||
desc = "A lightweight exosuit used by Nanotrasen Death Squads. A significantly upgraded Gygax security mech."
|
||||
name = "Dark Gygax"
|
||||
icon_state = "darkgygax"
|
||||
health = 400
|
||||
deflect_chance = 25
|
||||
damage_absorption = list("brute"=0.6,"fire"=0.8,"bullet"=0.6,"laser"=0.5,"energy"=0.65,"bomb"=0.8)
|
||||
max_temperature = 4500
|
||||
overload_coeff = 1
|
||||
wreckage = /obj/effect/decal/mecha_wreckage/gygax/dark
|
||||
max_equip = 4
|
||||
step_energy_drain = 5
|
||||
|
||||
|
||||
/*
|
||||
/obj/mecha/combat/gygax/New()
|
||||
/obj/mecha/combat/gygax/dark/New()
|
||||
..()
|
||||
weapons += new /datum/mecha_weapon/taser(src)
|
||||
weapons += new /datum/mecha_weapon/laser(src)
|
||||
weapons += new /datum/mecha_weapon/missile_rack/flashbang(src)
|
||||
selected_weapon = weapons[1]
|
||||
var/obj/item/mecha_parts/mecha_equipment/ME = new /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/scattershot
|
||||
ME.attach(src)
|
||||
ME = new /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/flashbang/clusterbang
|
||||
ME.attach(src)
|
||||
ME = new /obj/item/mecha_parts/mecha_equipment/teleporter
|
||||
ME.attach(src)
|
||||
ME = new /obj/item/mecha_parts/mecha_equipment/tesla_energy_relay
|
||||
ME.attach(src)
|
||||
return
|
||||
*/
|
||||
|
||||
/obj/mecha/combat/gygax/dark/add_cell(var/obj/item/weapon/cell/C=null)
|
||||
if(C)
|
||||
C.forceMove(src)
|
||||
cell = C
|
||||
return
|
||||
cell = new(src)
|
||||
cell.charge = 30000
|
||||
cell.maxcharge = 30000
|
||||
|
||||
|
||||
/obj/mecha/combat/gygax/verb/overload()
|
||||
set category = "Exosuit Interface"
|
||||
|
||||
@@ -919,7 +919,10 @@
|
||||
process(var/obj/item/mecha_parts/mecha_equipment/generator/nuclear/EG)
|
||||
if(..())
|
||||
for(var/mob/living/carbon/M in view(EG.chassis))
|
||||
M.radiation += EG.rad_per_cycle
|
||||
if(istype(M,/mob/living/carbon/human))
|
||||
M.apply_effect((EG.rad_per_cycle*3),IRRADIATE,0)
|
||||
else
|
||||
M.radiation += EG.rad_per_cycle
|
||||
return 1
|
||||
|
||||
|
||||
|
||||
@@ -325,6 +325,9 @@
|
||||
do_after_cooldown()
|
||||
return
|
||||
|
||||
/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/flashbang/clusterbang//Because I am a heartless bastard -Sieve
|
||||
name = "SOP-6 Grenade Launcher"
|
||||
projectile = /obj/item/weapon/flashbang/clusterbang
|
||||
|
||||
/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/banana_mortar
|
||||
name = "Banana Mortar"
|
||||
|
||||
@@ -942,9 +942,9 @@
|
||||
return
|
||||
lights = !lights
|
||||
if(lights)
|
||||
src.ul_SetLuminosity(src.luminosity + src.lights_power)
|
||||
ul_SetLuminosity(luminosity + lights_power, luminosity + lights_power, luminosity)
|
||||
else
|
||||
src.ul_SetLuminosity(src.luminosity - src.lights_power)
|
||||
ul_SetLuminosity(luminosity - lights_power, luminosity - lights_power, luminosity)
|
||||
src.log_message("Toggled lights.")
|
||||
return
|
||||
|
||||
|
||||
@@ -1185,6 +1185,8 @@
|
||||
spawn_result()
|
||||
var/obj/item/mecha_parts/chassis/const_holder = holder
|
||||
const_holder.construct = new /datum/construction/reversible/mecha/odysseus(const_holder)
|
||||
const_holder.icon = 'mech_construction.dmi'
|
||||
const_holder.icon_state = "odysseus0"
|
||||
const_holder.density = 1
|
||||
spawn()
|
||||
del src
|
||||
@@ -1203,7 +1205,7 @@
|
||||
"backkey"=/obj/item/weapon/crowbar,
|
||||
"desc"="External armor is installed."),
|
||||
//3
|
||||
list("key"=/obj/item/mecha_parts/part/odysseus_armour,
|
||||
list("key"=/obj/item/stack/sheet/plasteel,
|
||||
"backkey"=/obj/item/weapon/weldingtool,
|
||||
"desc"="Internal armor is welded."),
|
||||
//4
|
||||
@@ -1262,82 +1264,108 @@
|
||||
switch(index)
|
||||
if(14)
|
||||
user.visible_message("[user] connects [holder] hydraulic systems", "You connect [holder] hydraulic systems.")
|
||||
holder.icon_state = "odysseus1"
|
||||
if(13)
|
||||
if(diff==FORWARD)
|
||||
user.visible_message("[user] activates [holder] hydraulic systems.", "You activate [holder] hydraulic systems.")
|
||||
holder.icon_state = "odysseus2"
|
||||
else
|
||||
user.visible_message("[user] disconnects [holder] hydraulic systems", "You disconnect [holder] hydraulic systems.")
|
||||
holder.icon_state = "odysseus0"
|
||||
if(12)
|
||||
if(diff==FORWARD)
|
||||
user.visible_message("[user] adds the wiring to [holder].", "You add the wiring to [holder].")
|
||||
holder.icon_state = "odysseus3"
|
||||
else
|
||||
user.visible_message("[user] deactivates [holder] hydraulic systems.", "You deactivate [holder] hydraulic systems.")
|
||||
holder.icon_state = "odysseus1"
|
||||
if(11)
|
||||
if(diff==FORWARD)
|
||||
user.visible_message("[user] adjusts the wiring of [holder].", "You adjust the wiring of [holder].")
|
||||
holder.icon_state = "odysseus4"
|
||||
else
|
||||
user.visible_message("[user] removes the wiring from [holder].", "You remove the wiring from [holder].")
|
||||
var/obj/item/weapon/cable_coil/coil = new /obj/item/weapon/cable_coil(get_turf(holder))
|
||||
coil.amount = 4
|
||||
holder.icon_state = "odysseus2"
|
||||
if(10)
|
||||
if(diff==FORWARD)
|
||||
user.visible_message("[user] installs the central control module into [holder].", "You install the central computer mainboard into [holder].")
|
||||
del used_atom
|
||||
holder.icon_state = "odysseus5"
|
||||
else
|
||||
user.visible_message("[user] disconnects the wiring of [holder].", "You disconnect the wiring of [holder].")
|
||||
holder.icon_state = "odysseus3"
|
||||
if(9)
|
||||
if(diff==FORWARD)
|
||||
user.visible_message("[user] secures the mainboard.", "You secure the mainboard.")
|
||||
holder.icon_state = "odysseus6"
|
||||
else
|
||||
user.visible_message("[user] removes the central control module from [holder].", "You remove the central computer mainboard from [holder].")
|
||||
new /obj/item/weapon/circuitboard/mecha/odysseus/main(get_turf(holder))
|
||||
holder.icon_state = "odysseus4"
|
||||
if(8)
|
||||
if(diff==FORWARD)
|
||||
user.visible_message("[user] installs the peripherals control module into [holder].", "You install the peripherals control module into [holder].")
|
||||
del used_atom
|
||||
holder.icon_state = "odysseus7"
|
||||
else
|
||||
user.visible_message("[user] unfastens the mainboard.", "You unfasten the mainboard.")
|
||||
holder.icon_state = "odysseus5"
|
||||
if(7)
|
||||
if(diff==FORWARD)
|
||||
user.visible_message("[user] secures the peripherals control module.", "You secure the peripherals control module.")
|
||||
holder.icon_state = "odysseus8"
|
||||
else
|
||||
user.visible_message("[user] removes the peripherals control module from [holder].", "You remove the peripherals control module from [holder].")
|
||||
new /obj/item/weapon/circuitboard/mecha/odysseus/peripherals(get_turf(holder))
|
||||
holder.icon_state = "odysseus6"
|
||||
if(6)
|
||||
if(diff==FORWARD)
|
||||
user.visible_message("[user] installs internal armor layer to [holder].", "You install internal armor layer to [holder].")
|
||||
holder.icon_state = "odysseus9"
|
||||
else
|
||||
user.visible_message("[user] unfastens the peripherals control module.", "You unfasten the peripherals control module.")
|
||||
holder.icon_state = "odysseus7"
|
||||
if(5)
|
||||
if(diff==FORWARD)
|
||||
user.visible_message("[user] secures internal armor layer.", "You secure internal armor layer.")
|
||||
holder.icon_state = "odysseus10"
|
||||
else
|
||||
user.visible_message("[user] pries internal armor layer from [holder].", "You prie internal armor layer from [holder].")
|
||||
var/obj/item/stack/sheet/metal/MS = new /obj/item/stack/sheet/metal(get_turf(holder))
|
||||
MS.amount = 5
|
||||
holder.icon_state = "odysseus8"
|
||||
if(4)
|
||||
if(diff==FORWARD)
|
||||
user.visible_message("[user] welds internal armor layer to [holder].", "You weld the internal armor layer to [holder].")
|
||||
holder.icon_state = "odysseus11"
|
||||
else
|
||||
user.visible_message("[user] unfastens the internal armor layer.", "You unfasten the internal armor layer.")
|
||||
holder.icon_state = "odysseus9"
|
||||
if(3)
|
||||
if(diff==FORWARD)
|
||||
user.visible_message("[user] installs [used_atom] layer to [holder].", "You install external reinforced armor layer to [holder].")
|
||||
holder.overlays += used_atom.icon_state
|
||||
del used_atom
|
||||
|
||||
holder.icon_state = "odysseus12"
|
||||
else
|
||||
user.visible_message("[user] cuts internal armor layer from [holder].", "You cut the internal armor layer from [holder].")
|
||||
if(2)
|
||||
holder.icon_state = "odysseus10"
|
||||
if(diff==FORWARD)
|
||||
user.visible_message("[user] secures external armor layer.", "You secure external reinforced armor layer.")
|
||||
holder.icon_state = "odysseus13"
|
||||
else
|
||||
var/obj/item/mecha_parts/part/odysseus_armour/MS = new /obj/item/mecha_parts/part/odysseus_armour(get_turf(holder))
|
||||
var/obj/item/stack/sheet/plasteel/MS = new /obj/item/stack/sheet/plasteel(get_turf(holder))
|
||||
MS.amount = 5
|
||||
user.visible_message("[user] pries [MS] from [holder].", "You prie [MS] from [holder].")
|
||||
holder.icon_state = "odysseus11"
|
||||
if(1)
|
||||
if(diff==FORWARD)
|
||||
user.visible_message("[user] welds external armor layer to [holder].", "You weld external armor layer to [holder].")
|
||||
holder.icon_state = "odysseus14"
|
||||
else
|
||||
user.visible_message("[user] unfastens the external armor layer.", "You unfasten the external armor layer.")
|
||||
holder.icon_state = "odysseus12"
|
||||
return 1
|
||||
|
||||
spawn_result()
|
||||
|
||||
@@ -387,12 +387,12 @@
|
||||
construction_time = 130
|
||||
construction_cost = list("metal"=15000)
|
||||
|
||||
/obj/item/mecha_parts/part/odysseus_armour
|
||||
/*/obj/item/mecha_parts/part/odysseus_armour
|
||||
name="Odysseus Carapace"
|
||||
icon_state = "odysseus_armour"
|
||||
origin_tech = "materials=3;engineering=3"
|
||||
construction_time = 200
|
||||
construction_cost = list("metal"=15000)
|
||||
construction_cost = list("metal"=15000)*/
|
||||
|
||||
|
||||
///////// Circuitboards
|
||||
|
||||
@@ -31,11 +31,12 @@
|
||||
|
||||
|
||||
/obj/effect/decal/mecha_wreckage/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
||||
if(istype(W, /obj/item/weapon/weldingtool) && W:welding)
|
||||
if(istype(W, /obj/item/weapon/weldingtool))
|
||||
var/obj/item/weapon/weldingtool/WT = W
|
||||
if(salvage_num <= 0)
|
||||
user << "You don't see anything that can be cut with [W]."
|
||||
return
|
||||
if (!isemptylist(welder_salvage) && W:remove_fuel(0,user))
|
||||
if (!isemptylist(welder_salvage) && WT.remove_fuel(0,user))
|
||||
var/type = prob(70)?pick(welder_salvage):null
|
||||
if(type)
|
||||
var/N = new type(get_turf(user))
|
||||
@@ -94,6 +95,9 @@
|
||||
parts -= part
|
||||
return
|
||||
|
||||
/obj/effect/decal/mecha_wreckage/gygax/dark
|
||||
name = "Dark Gygax wreckage"
|
||||
icon_state = "darkgygax-broken"
|
||||
|
||||
/obj/effect/decal/mecha_wreckage/marauder
|
||||
name = "Marauder wreckage"
|
||||
|
||||
@@ -63,7 +63,7 @@
|
||||
|
||||
New()
|
||||
..()
|
||||
ul_SetLuminosity(1)
|
||||
ul_SetLuminosity(0,3,0)
|
||||
|
||||
spawn(1200) // 2 minutes
|
||||
del(src)
|
||||
@@ -28,14 +28,14 @@
|
||||
if(src.loc == user)
|
||||
user.ul_SetLuminosity(user.LuminosityRed + brightness_on, user.LuminosityGreen + brightness_on, user.LuminosityBlue)
|
||||
else if (isturf(src.loc))
|
||||
src.ul_SetLuminosity(brightness_on, brightness_on, 0)
|
||||
ul_SetLuminosity(brightness_on, brightness_on, 0)
|
||||
|
||||
else
|
||||
icon_state = icon_off
|
||||
if(src.loc == user)
|
||||
user.ul_SetLuminosity(user.LuminosityRed - brightness_on, user.LuminosityGreen - brightness_on, user.LuminosityBlue)
|
||||
else if (isturf(src.loc))
|
||||
src.ul_SetLuminosity(0)
|
||||
ul_SetLuminosity(0)
|
||||
|
||||
/obj/item/device/flashlight/attack_self(mob/user)
|
||||
// if(!isturf(user.loc))
|
||||
|
||||
@@ -94,7 +94,7 @@
|
||||
var/datum/powernet/PN = attached.get_powernet()
|
||||
if(PN)
|
||||
if(!luminosity)
|
||||
ul_SetLuminosity(12)
|
||||
ul_SetLuminosity(12,3,0)
|
||||
|
||||
|
||||
// found a powernet, so drain up to max power from it
|
||||
|
||||
@@ -2,22 +2,24 @@ obj/structure/door_assembly
|
||||
icon = 'door_assembly.dmi'
|
||||
|
||||
name = "Airlock Assembly"
|
||||
icon_state = "door_as0"
|
||||
icon_state = "door_as_0"
|
||||
anchored = 0
|
||||
density = 1
|
||||
var/state = 0
|
||||
var/glass = 0
|
||||
var/base_icon_state
|
||||
var/mineral = null
|
||||
var/base_icon_state = "door_as_0"
|
||||
var/glass_base_icon_state = "door_as_g0"
|
||||
var/obj/item/weapon/airlock_electronics/electronics = null
|
||||
var/airlock_type = /obj/machinery/door/airlock //the type path of the airlock once completed
|
||||
var/glass_type = /obj/machinery/door/airlock/glass //the type path of the airlock if changed into a glass airlock
|
||||
var/glass_base_icon_state = "door_as_g"
|
||||
var/glass_type = /obj/machinery/door/airlock/glass
|
||||
var/glass = null
|
||||
|
||||
New()
|
||||
base_icon_state = copytext(icon_state,1,lentext(icon_state))
|
||||
|
||||
door_assembly_0
|
||||
name = "Airlock Assembly"
|
||||
icon_state = "door_as1"
|
||||
icon_state = "door_as_1"
|
||||
airlock_type = /obj/machinery/door/airlock
|
||||
anchored = 1
|
||||
density = 1
|
||||
@@ -117,22 +119,18 @@ obj/structure/door_assembly
|
||||
door_assembly_med
|
||||
name = "Medical Airlock Assembly"
|
||||
icon_state = "door_as_med1"
|
||||
glass_base_icon_state = "door_as_gmed"
|
||||
glass_type = /obj/machinery/door/airlock/glass/glass_medical
|
||||
airlock_type = /obj/machinery/door/airlock/medical
|
||||
anchored = 1
|
||||
density = 1
|
||||
state = 1
|
||||
glass = 0
|
||||
|
||||
glass
|
||||
glass = 1
|
||||
mineral = "glass"
|
||||
icon_state = "door_as_gmed1"
|
||||
|
||||
door_assembly_mai
|
||||
name = "Maintenance Airlock Assembly"
|
||||
icon_state = "door_as_mai1"
|
||||
glass_type = null
|
||||
airlock_type = /obj/machinery/door/airlock/maintenance
|
||||
anchored = 1
|
||||
density = 1
|
||||
@@ -142,7 +140,6 @@ obj/structure/door_assembly
|
||||
door_assembly_ext
|
||||
name = "External Airlock Assembly"
|
||||
icon_state = "door_as_ext1"
|
||||
glass_type = null
|
||||
airlock_type = /obj/machinery/door/airlock/external
|
||||
anchored = 1
|
||||
density = 1
|
||||
@@ -152,7 +149,6 @@ obj/structure/door_assembly
|
||||
door_assembly_fre
|
||||
name = "Freezer Airlock Assembly"
|
||||
icon_state = "door_as_fre1"
|
||||
glass_type = null
|
||||
airlock_type = /obj/machinery/door/airlock/freezer
|
||||
anchored = 1
|
||||
density = 1
|
||||
@@ -162,21 +158,84 @@ obj/structure/door_assembly
|
||||
door_assembly_mhatch
|
||||
name = "Airtight Maintenance Hatch Assembly"
|
||||
icon_state = "door_as_mhatch1"
|
||||
glass_type = null
|
||||
airlock_type = /obj/machinery/door/airlock/maintenance_hatch
|
||||
anchored = 1
|
||||
density = 1
|
||||
state = 1
|
||||
glass = 0
|
||||
|
||||
door_assembly_g
|
||||
door_assembly_glass
|
||||
name = "Glass Airlock Assembly"
|
||||
icon_state = "door_as_g1"
|
||||
airlock_type = /obj/machinery/door/airlock/glass
|
||||
anchored = 1
|
||||
density = 1
|
||||
state = 1
|
||||
glass = 1
|
||||
mineral = "glass"
|
||||
|
||||
door_assembly_gold
|
||||
name = "Gold Airlock Assembly"
|
||||
icon_state = "door_as_gold1"
|
||||
airlock_type = /obj/machinery/door/airlock/gold
|
||||
anchored = 1
|
||||
density = 1
|
||||
state = 1
|
||||
mineral = "gold"
|
||||
|
||||
door_assembly_silver
|
||||
name = "Silver Airlock Assembly"
|
||||
icon_state = "door_as_silver1"
|
||||
airlock_type = /obj/machinery/door/airlock/silver
|
||||
anchored = 1
|
||||
density = 1
|
||||
state = 1
|
||||
mineral = "silver"
|
||||
|
||||
door_assembly_diamond
|
||||
name = "Diamond Airlock Assembly"
|
||||
icon_state = "door_as_diamond1"
|
||||
airlock_type = /obj/machinery/door/airlock/diamond
|
||||
anchored = 1
|
||||
density = 1
|
||||
state = 1
|
||||
mineral = "diamond"
|
||||
|
||||
door_assembly_uranium
|
||||
name = "Uranium Airlock Assembly"
|
||||
icon_state = "door_as_uranium1"
|
||||
airlock_type = /obj/machinery/door/airlock/uranium
|
||||
anchored = 1
|
||||
density = 1
|
||||
state = 1
|
||||
mineral = "uranium"
|
||||
|
||||
door_assembly_plasma
|
||||
name = "Plasma Airlock Assembly"
|
||||
icon_state = "door_as_plasma1"
|
||||
airlock_type = /obj/machinery/door/airlock/plasma
|
||||
anchored = 1
|
||||
density = 1
|
||||
state = 1
|
||||
mineral = "plasma"
|
||||
|
||||
door_assembly_clown
|
||||
name = "Bananium Airlock Assembly"
|
||||
desc = "Honk"
|
||||
icon_state = "door_as_bananium1"
|
||||
airlock_type = /obj/machinery/door/airlock/clown
|
||||
anchored = 1
|
||||
density = 1
|
||||
state = 1
|
||||
mineral = "clown"
|
||||
|
||||
door_assembly_sandstone
|
||||
name = "Sandstone Airlock Assembly"
|
||||
icon_state = "door_as_sandstone1"
|
||||
airlock_type = /obj/machinery/door/airlock/sandstone
|
||||
anchored = 1
|
||||
density = 1
|
||||
state = 1
|
||||
mineral = "sandstone"
|
||||
|
||||
/obj/structure/door_assembly/attackby(obj/item/W as obj, mob/user as mob)
|
||||
if(istype(W, /obj/item/weapon/weldingtool) && !anchored )
|
||||
@@ -189,8 +248,30 @@ obj/structure/door_assembly
|
||||
if(!src || !WT.isOn()) return
|
||||
user << "\blue You dissasembled the airlock assembly!"
|
||||
new /obj/item/stack/sheet/metal(get_turf(src), 4)
|
||||
if(src.glass==1)
|
||||
new /obj/item/stack/sheet/rglass(get_turf(src))
|
||||
switch(mineral)
|
||||
if("glass")
|
||||
new /obj/item/stack/sheet/rglass(get_turf(src))
|
||||
if("gold")
|
||||
new /obj/item/stack/sheet/gold(get_turf(src))
|
||||
new /obj/item/stack/sheet/gold(get_turf(src))
|
||||
if("silver")
|
||||
new /obj/item/stack/sheet/silver(get_turf(src))
|
||||
new /obj/item/stack/sheet/silver(get_turf(src))
|
||||
if("diamond")
|
||||
new /obj/item/stack/sheet/diamond(get_turf(src))
|
||||
new /obj/item/stack/sheet/diamond(get_turf(src))
|
||||
if("uranium")
|
||||
new /obj/item/stack/sheet/uranium(get_turf(src))
|
||||
new /obj/item/stack/sheet/uranium(get_turf(src))
|
||||
if("plasma")
|
||||
new /obj/item/stack/sheet/plasma(get_turf(src))
|
||||
new /obj/item/stack/sheet/plasma(get_turf(src))
|
||||
if("clown")
|
||||
new /obj/item/stack/sheet/clown(get_turf(src))
|
||||
new /obj/item/stack/sheet/clown(get_turf(src))
|
||||
if("sandstone")
|
||||
new /obj/item/stack/sheet/sandstone(get_turf(src))
|
||||
new /obj/item/stack/sheet/sandstone(get_turf(src))
|
||||
del(src)
|
||||
else
|
||||
user << "\blue You need more welding fuel to dissassemble the airlock assembly."
|
||||
@@ -284,19 +365,100 @@ obj/structure/door_assembly
|
||||
ae = electronics
|
||||
electronics = null
|
||||
ae.loc = src.loc
|
||||
else if(istype(W, /obj/item/stack/sheet) && !mineral)
|
||||
var/obj/item/stack/sheet/G = W
|
||||
if(G)
|
||||
if(G.amount>=1)
|
||||
switch(G.type)
|
||||
if(/obj/item/stack/sheet/rglass)
|
||||
playsound(src.loc, 'Crowbar.ogg', 100, 1)
|
||||
user.visible_message("[user] adds [G.name] to the airlock assembly.", "You start to install [G.name] into the airlock assembly.")
|
||||
if(do_after(user, 40))
|
||||
user << "\blue You installed reinforced glass windows into the airlock assembly!"
|
||||
G.use(1)
|
||||
src.mineral = "glass"
|
||||
src.name = "Near finished Window Airlock Assembly"
|
||||
src.airlock_type = /obj/machinery/door/airlock/glass
|
||||
src.base_icon_state = "door_as_glass" //this will be applied to the icon_state with the correct state number at the proc's end.
|
||||
if(/obj/item/stack/sheet/gold)
|
||||
if(G.amount>=2)
|
||||
playsound(src.loc, 'Crowbar.ogg', 100, 1)
|
||||
user.visible_message("[user] adds [G.name] to the airlock assembly.", "You start to install [G.name] into the airlock assembly.")
|
||||
if(do_after(user, 40))
|
||||
user << "\blue You installed gold plating into the airlock assembly!"
|
||||
G.use(2)
|
||||
src.mineral = "gold"
|
||||
src.name = "Near finished Gold Airlock Assembly"
|
||||
src.airlock_type = /obj/machinery/door/airlock/gold
|
||||
src.base_icon_state = "door_as_gold"
|
||||
if(/obj/item/stack/sheet/silver)
|
||||
if(G.amount>=2)
|
||||
playsound(src.loc, 'Crowbar.ogg', 100, 1)
|
||||
user.visible_message("[user] adds [G.name] to the airlock assembly.", "You start to install [G.name] into the airlock assembly.")
|
||||
if(do_after(user, 40))
|
||||
user << "\blue You installed silver plating into the airlock assembly!"
|
||||
G.use(2)
|
||||
src.mineral = "silver"
|
||||
src.name = "Near finished Silver Airlock Assembly"
|
||||
src.airlock_type = /obj/machinery/door/airlock/silver
|
||||
src.base_icon_state = "door_as_silver"
|
||||
if(/obj/item/stack/sheet/diamond)
|
||||
if(G.amount>=2)
|
||||
playsound(src.loc, 'Crowbar.ogg', 100, 1)
|
||||
user.visible_message("[user] adds [G.name] to the airlock assembly.", "You start to install [G.name] into the airlock assembly.")
|
||||
if(do_after(user, 40))
|
||||
user << "\blue You installed diamond plating into the airlock assembly!"
|
||||
G.use(2)
|
||||
src.mineral = "diamond"
|
||||
src.name = "Near finished Diamond Airlock Assembly"
|
||||
src.airlock_type = /obj/machinery/door/airlock/diamond
|
||||
src.base_icon_state = "door_as_diamond"
|
||||
if(/obj/item/stack/sheet/uranium)
|
||||
if(G.amount>=2)
|
||||
playsound(src.loc, 'Crowbar.ogg', 100, 1)
|
||||
user.visible_message("[user] adds [G.name] to the airlock assembly.", "You start to install [G.name] into the airlock assembly.")
|
||||
if(do_after(user, 40))
|
||||
user << "\blue You installed uranium plating into the airlock assembly!"
|
||||
G.use(2)
|
||||
src.mineral = "uranium"
|
||||
src.name = "Near finished Uranium Airlock Assembly"
|
||||
src.airlock_type = /obj/machinery/door/airlock/uranium
|
||||
src.base_icon_state = "door_as_uranium"
|
||||
if(/obj/item/stack/sheet/plasma)
|
||||
if(G.amount>=2)
|
||||
playsound(src.loc, 'Crowbar.ogg', 100, 1)
|
||||
user.visible_message("[user] adds [G.name] to the airlock assembly.", "You start to install [G.name] into the airlock assembly.")
|
||||
if(do_after(user, 40))
|
||||
user << "\blue You installed plasma plating into the airlock assembly!"
|
||||
G.use(2)
|
||||
src.mineral = "plasma"
|
||||
src.name = "Near finished Plasma Airlock Assembly"
|
||||
src.airlock_type = /obj/machinery/door/airlock/plasma
|
||||
src.base_icon_state = "door_as_plasma"
|
||||
if(/obj/item/stack/sheet/clown)
|
||||
if(G.amount>=2)
|
||||
playsound(src.loc, 'Crowbar.ogg', 100, 1)
|
||||
user.visible_message("[user] adds [G.name] to the airlock assembly.", "You start to install [G.name] into the airlock assembly.")
|
||||
if(do_after(user, 40))
|
||||
user << "\blue You installed bananium plating into the airlock assembly!HONK"
|
||||
G.use(2)
|
||||
playsound(src.loc, 'bikehorn.ogg', 15, 1, -3)
|
||||
src.mineral = "clown"
|
||||
src.name = "Near finished Bananium Airlock Assembly"
|
||||
src.airlock_type = /obj/machinery/door/airlock/clown
|
||||
src.base_icon_state = "door_as_clown"
|
||||
if(/obj/item/stack/sheet/sandstone)
|
||||
if(G.amount>=2)
|
||||
playsound(src.loc, 'Crowbar.ogg', 100, 1)
|
||||
user.visible_message("[user] adds [G.name] to the airlock assembly.", "You start to install [G.name] into the airlock assembly.")
|
||||
if(do_after(user, 40))
|
||||
user << "\blue You installed sandstone plating into the airlock assembly!"
|
||||
G.use(2)
|
||||
src.mineral = "sandstone"
|
||||
src.name = "Near finished Sandstone Airlock Assembly"
|
||||
src.airlock_type = /obj/machinery/door/airlock/sandstone
|
||||
src.base_icon_state = "door_as_sandstone"
|
||||
|
||||
else if(istype(W, /obj/item/stack/sheet/rglass) && glass == 0 && ispath(glass_type))
|
||||
playsound(src.loc, 'Crowbar.ogg', 100, 1)
|
||||
user.visible_message("[user] adds reinforced glass windows to the airlock assembly.", "You start to install reinforced glass windows into the airlock assembly.")
|
||||
var/obj/item/stack/sheet/rglass/G = W
|
||||
if(do_after(user, 40))
|
||||
if(G)
|
||||
if(G.amount>=1)
|
||||
user << "\blue You installed glass windows the airlock assembly!"
|
||||
G.use(1)
|
||||
src.glass = 1
|
||||
src.name = "Near finished Window Airlock Assembly"
|
||||
src.airlock_type = glass_type
|
||||
else if(istype(W, /obj/item/weapon/screwdriver) && state == 2 )
|
||||
playsound(src.loc, 'Screwdriver.ogg', 100, 1)
|
||||
user << "\blue Now finishing the airlock."
|
||||
@@ -305,10 +467,33 @@ obj/structure/door_assembly
|
||||
if(!src) return
|
||||
user << "\blue You finish the airlock!"
|
||||
var/obj/machinery/door/airlock/door
|
||||
if(glass)
|
||||
door = new src.glass_type( src.loc )
|
||||
else
|
||||
door = new src.airlock_type( src.loc )
|
||||
switch(mineral)
|
||||
if("glass")
|
||||
airlock_type = /obj/machinery/door/airlock/glass
|
||||
door = new src.airlock_type( src.loc )
|
||||
if("gold")
|
||||
airlock_type = /obj/machinery/door/airlock/gold
|
||||
door = new src.airlock_type( src.loc )
|
||||
if("silver")
|
||||
airlock_type = /obj/machinery/door/airlock/silver
|
||||
door = new src.airlock_type( src.loc )
|
||||
if("diamond")
|
||||
airlock_type = /obj/machinery/door/airlock/diamond
|
||||
door = new src.airlock_type( src.loc )
|
||||
if("uranium")
|
||||
airlock_type = /obj/machinery/door/airlock/uranium
|
||||
door = new src.airlock_type( src.loc )
|
||||
if("plasma")
|
||||
airlock_type = /obj/machinery/door/airlock/plasma
|
||||
door = new src.airlock_type( src.loc )
|
||||
if("clown")
|
||||
airlock_type = /obj/machinery/door/airlock/clown
|
||||
door = new src.airlock_type( src.loc )
|
||||
if("sandstone")
|
||||
airlock_type = /obj/machinery/door/airlock/sandstone
|
||||
door = new src.airlock_type( src.loc )
|
||||
else
|
||||
door = new src.airlock_type( src.loc )
|
||||
//door.req_access = src.req_access
|
||||
door.electronics = src.electronics
|
||||
door.req_access = src.electronics.conf_access
|
||||
@@ -316,10 +501,7 @@ obj/structure/door_assembly
|
||||
del(src)
|
||||
else
|
||||
..()
|
||||
if(glass)
|
||||
icon_state = "[glass_base_icon_state][state]"
|
||||
else
|
||||
icon_state = "[base_icon_state][state]"
|
||||
icon_state = "[base_icon_state][state]"
|
||||
//This updates the icon_state. They are named as "door_as1_eng" where the 1 in that example
|
||||
//represents what state it's in. So the most generic algorithm for the correct updating of
|
||||
//this is simply to change the number.
|
||||
@@ -536,6 +536,38 @@
|
||||
istype(W,/obj/item/projectile)\
|
||||
)
|
||||
|
||||
proc/is_hot(obj/item/W as obj)
|
||||
switch(W.type)
|
||||
if(/obj/item/weapon/weldingtool)
|
||||
var/obj/item/weapon/weldingtool/WT = W
|
||||
if(WT.isOn())
|
||||
return 3800
|
||||
else
|
||||
return 0
|
||||
if(/obj/item/weapon/lighter)
|
||||
if(W:lit)
|
||||
return 1500
|
||||
else
|
||||
return 0
|
||||
if(/obj/item/weapon/match)
|
||||
if(W:lit)
|
||||
return 1000
|
||||
else
|
||||
return 0
|
||||
if(/obj/item/clothing/mask/cigarette)
|
||||
if(W:lit)
|
||||
return 1000
|
||||
else
|
||||
return 0
|
||||
if(/obj/item/weapon/pickaxe/plasmacutter)
|
||||
return 3800
|
||||
if(/obj/item/weapon/melee/energy)
|
||||
return 3500
|
||||
else
|
||||
return 0
|
||||
|
||||
return 0
|
||||
|
||||
/proc/is_cut(obj/item/W as obj)
|
||||
return ( \
|
||||
istype(W, /obj/item/weapon/wirecutters) || \
|
||||
|
||||
@@ -491,5 +491,5 @@ ZIPPO
|
||||
dropped(mob/user)
|
||||
if(lit)
|
||||
user.ul_SetLuminosity(user.LuminosityRed - 2, user.LuminosityGreen - 1, user.LuminosityBlue)
|
||||
ul_SetLuminosity(2)
|
||||
ul_SetLuminosity(2,1,0)
|
||||
return
|
||||
|
||||
@@ -21,7 +21,8 @@
|
||||
|
||||
|
||||
/obj/item/weapon/dnainjector/proc/inject(mob/M as mob)
|
||||
M.radiation += rand(20,50)
|
||||
if(istype(M,/mob/living))
|
||||
M.radiation += rand(20,50)
|
||||
|
||||
if (!(NOCLONE in M.mutations)) // prevents drained people from having their DNA changed
|
||||
if (dnatype == "ui")
|
||||
|
||||
@@ -0,0 +1,95 @@
|
||||
/obj/item/weapon/melee/baton
|
||||
name = "stun baton"
|
||||
desc = "A stun baton for incapacitating people with."
|
||||
icon_state = "stunbaton"
|
||||
item_state = "baton"
|
||||
flags = FPRINT | TABLEPASS
|
||||
slot_flags = SLOT_BELT
|
||||
force = 10
|
||||
throwforce = 7
|
||||
w_class = 3
|
||||
var/charges = 10
|
||||
var/status = 0
|
||||
origin_tech = "combat=2"
|
||||
|
||||
/obj/item/weapon/melee/baton/update_icon()
|
||||
if(status)
|
||||
icon_state = "stunbaton_active"
|
||||
else
|
||||
icon_state = "stunbaton"
|
||||
|
||||
/obj/item/weapon/melee/baton/attack_self(mob/user as mob)
|
||||
if(status && (CLUMSY in user.mutations) && prob(50))
|
||||
user << "\red You grab the [src] on the wrong side."
|
||||
user.Weaken(30)
|
||||
charges--
|
||||
if(charges < 1)
|
||||
status = 0
|
||||
update_icon()
|
||||
return
|
||||
if(charges > 0)
|
||||
status = !status
|
||||
user << "<span class='notice'>\The [src] is now [status ? "on" : "off"].</span>"
|
||||
playsound(src.loc, "sparks", 75, 1, -1)
|
||||
update_icon()
|
||||
else
|
||||
status = 0
|
||||
user << "<span class='warning'>\The [src] is out of charge.</span>"
|
||||
add_fingerprint(user)
|
||||
|
||||
/obj/item/weapon/melee/baton/attack(mob/M as mob, mob/user as mob)
|
||||
if(status && (CLUMSY in user.mutations) && prob(50))
|
||||
user << "<span class='danger'>You accidentally hit yourself with the [src]!</span>"
|
||||
user.Weaken(30)
|
||||
charges--
|
||||
if(charges < 1)
|
||||
status = 0
|
||||
update_icon()
|
||||
return
|
||||
|
||||
var/mob/living/carbon/human/H = M
|
||||
|
||||
M.attack_log += text("\[[time_stamp()]\] <font color='orange'>Has been attacked with [src.name] by [user.name] ([user.ckey]) (INTENT: [uppertext(user.a_intent)])</font>")
|
||||
user.attack_log += text("\[[time_stamp()]\] <font color='red'>Used the [src.name] to attack [M.name] ([M.ckey]) (INTENT: [uppertext(user.a_intent)])</font>")
|
||||
|
||||
log_admin("ATTACK: [user] ([user.ckey]) attacked [M] ([M.ckey]) with [src].")
|
||||
message_admins("ATTACK: [user] ([user.ckey]) attacked [M] ([M.ckey]) with [src].")
|
||||
log_attack("<font color='red'>[user.name] ([user.ckey]) attacked [M.name] ([M.ckey]) with [src.name] (INTENT: [uppertext(user.a_intent)])</font>")
|
||||
|
||||
if(isrobot(M))
|
||||
..()
|
||||
return
|
||||
|
||||
if(user.a_intent != "help")
|
||||
if(!..()) return
|
||||
H.apply_effect(5, WEAKEN, 0)
|
||||
H.visible_message("<span class='danger'>[M] has been beaten with the [src] by [user]!</span>")
|
||||
playsound(src.loc, "swing_hit", 50, 1, -1)
|
||||
else if(!status)
|
||||
H.visible_message("<span class='warning'>[M] has been prodded with the [src] by [user]. Luckily it was off.</span>")
|
||||
return
|
||||
|
||||
if(status)
|
||||
H.apply_effect(10, STUN, 0)
|
||||
H.apply_effect(10, WEAKEN, 0)
|
||||
H.apply_effect(10, STUTTER, 0)
|
||||
user.lastattacked = M
|
||||
H.lastattacker = user
|
||||
charges--
|
||||
H.visible_message("<span class='danger'>[M] has been stunned with the [src] by [user]!</span>")
|
||||
playsound(src.loc, "sparks", 75, 1, -1)
|
||||
if(charges < 1)
|
||||
status = 0
|
||||
update_icon()
|
||||
|
||||
add_fingerprint(user)
|
||||
|
||||
/obj/item/weapon/melee/baton/emp_act(severity)
|
||||
switch(severity)
|
||||
if(1)
|
||||
charges = 0
|
||||
if(2)
|
||||
charges = max(0, charges - 5)
|
||||
if(charges < 1)
|
||||
status = 0
|
||||
update_icon()
|
||||
@@ -594,7 +594,7 @@ CIRCULAR SAW
|
||||
for(var/obj/item/weapon/implant/implant in S.implant)
|
||||
implant.loc = (get_turf(H))
|
||||
implant.implanted = 0
|
||||
S.implant = null
|
||||
S.implant.Remove(implant)
|
||||
playsound(user, 'squelch1.ogg', 50, 1)
|
||||
if(istype(implant, /obj/item/weapon/implant/explosive) || istype(implant, /obj/item/weapon/implant/uplink) || istype(implant, /obj/item/weapon/implant/dexplosive) || istype(implant, /obj/item/weapon/implant/explosive) || istype(implant, /obj/item/weapon/implant/compressed))
|
||||
usr << "The implant disintegrates into nothing..."
|
||||
|
||||
@@ -3,7 +3,7 @@ CONTAINS:
|
||||
SWORD
|
||||
BLADE
|
||||
AXE
|
||||
STUN BATON
|
||||
CLASSIC BATON
|
||||
ENERGY SHIELD (where else should i even put this)
|
||||
*/
|
||||
|
||||
@@ -95,104 +95,6 @@ ENERGY SHIELD (where else should i even put this)
|
||||
src.add_fingerprint(user)
|
||||
return
|
||||
|
||||
// STUN BATON
|
||||
|
||||
/obj/item/weapon/melee/baton/update_icon()
|
||||
if(src.status)
|
||||
icon_state = "stunbaton_active"
|
||||
else
|
||||
icon_state = "stunbaton"
|
||||
|
||||
/obj/item/weapon/melee/baton/attack_self(mob/user as mob)
|
||||
src.status = !( src.status )
|
||||
if ((CLUMSY in user.mutations) && prob(50))
|
||||
usr << "\red You grab the stunbaton on the wrong side."
|
||||
usr.Paralyse(60)
|
||||
return
|
||||
if (src.status)
|
||||
user << "\blue The baton is now on."
|
||||
playsound(src.loc, "sparks", 75, 1, -1)
|
||||
else
|
||||
user << "\blue The baton is now off."
|
||||
playsound(src.loc, "sparks", 75, 1, -1)
|
||||
|
||||
update_icon()
|
||||
src.add_fingerprint(user)
|
||||
return
|
||||
|
||||
/obj/item/weapon/melee/baton/attack(mob/M as mob, mob/user as mob)
|
||||
if ((CLUMSY in usr.mutations) && prob(50))
|
||||
usr << "\red You grab the stunbaton on the wrong side."
|
||||
usr.Weaken(30)
|
||||
return
|
||||
src.add_fingerprint(user)
|
||||
var/mob/living/carbon/human/H = M
|
||||
|
||||
M.attack_log += text("\[[time_stamp()]\] <font color='orange'>Has been attacked with [src.name] by [user.name] ([user.ckey]) (INTENT: [uppertext(user.a_intent)])</font>")
|
||||
user.attack_log += text("\[[time_stamp()]\] <font color='red'>Used the [src.name] to attack [M.name] ([M.ckey]) (INTENT: [uppertext(user.a_intent)])</font>")
|
||||
|
||||
log_admin("ATTACK: [user] ([user.ckey]) attacked [M] ([M.ckey]) with [src].")
|
||||
message_admins("ATTACK: [user] ([user.ckey]) attacked [M] ([M.ckey]) with [src].")
|
||||
log_attack("<font color='red'>[user.name] ([user.ckey]) attacked [M.name] ([M.ckey]) with [src.name] (INTENT: [uppertext(user.a_intent)])</font>")
|
||||
|
||||
|
||||
|
||||
if(isrobot(M))
|
||||
..()
|
||||
return
|
||||
|
||||
if (status == 0 || (status == 1 && charges ==0))
|
||||
if(user.a_intent == "hurt")
|
||||
if(!..()) return
|
||||
M.Weaken(5)
|
||||
for(var/mob/O in viewers(M))
|
||||
if (O.client) O.show_message("\red <B>[M] has been beaten with the stun baton by [user]!</B>", 1)
|
||||
if(status == 1 && charges == 0)
|
||||
user << "\red Not enough charge"
|
||||
return
|
||||
else
|
||||
for(var/mob/O in viewers(M))
|
||||
if (O.client) O.show_message("\red <B>[M] has been prodded with the stun baton by [user]! Luckily it was off.</B>", 1)
|
||||
if(status == 1 && charges == 0)
|
||||
user << "\red Not enough charge"
|
||||
return
|
||||
if((charges > 0 && status == 1) && (istype(H, /mob/living/carbon)))
|
||||
flick("baton_active", src)
|
||||
if (user.a_intent == "hurt")
|
||||
if(!..()) return
|
||||
playsound(src.loc, 'Genhit.ogg', 50, 1, -1)
|
||||
if(isrobot(user))
|
||||
var/mob/living/silicon/robot/R = user
|
||||
R.cell.charge -= 20
|
||||
else
|
||||
charges--
|
||||
if (M.stuttering < 1 && (!(HULK in M.mutations) && M.canstun) /*&& (!istype(H:wear_suit, /obj/item/clothing/suit/judgerobe))*/)
|
||||
M.stuttering = 1
|
||||
M.Stun(1)
|
||||
M.Weaken(1)
|
||||
else
|
||||
playsound(src.loc, 'Egloves.ogg', 50, 1, -1)
|
||||
if(isrobot(user))
|
||||
var/mob/living/silicon/robot/R = user
|
||||
R.cell.charge -= 20
|
||||
else
|
||||
charges--
|
||||
if (M.stuttering < 10 && (!(HULK in M.mutations) && M.canstun) /*&& (!istype(H:wear_suit, /obj/item/clothing/suit/judgerobe))*/)
|
||||
M.stuttering = 10
|
||||
M.Stun(10)
|
||||
M.Weaken(10)
|
||||
user.lastattacked = M
|
||||
M.lastattacker = user
|
||||
for(var/mob/O in viewers(M))
|
||||
if (O.client) O.show_message("\red <B>[M] has been stunned with the stun baton by [user]!</B>", 1, "\red You hear someone fall", 2)
|
||||
|
||||
/obj/item/weapon/melee/baton/emp_act(severity)
|
||||
switch(severity)
|
||||
if(1)
|
||||
src.charges = 0
|
||||
if(2)
|
||||
charges -= 5
|
||||
|
||||
/obj/item/weapon/melee/classic_baton/attack(mob/M as mob, mob/living/user as mob)
|
||||
if ((CLUMSY in user.mutations) && prob(50))
|
||||
user << "\red You club yourself over the head."
|
||||
|
||||
@@ -8,9 +8,9 @@
|
||||
opacity = 1
|
||||
|
||||
icon = 'mineral_doors.dmi'
|
||||
icon_state = "iron"
|
||||
icon_state = "metal"
|
||||
|
||||
var/mineralType = "iron"
|
||||
var/mineralType = "metal"
|
||||
var/state = 0 //closed, 1 == open
|
||||
var/isSwitchingStates = 0
|
||||
var/hardness = 1
|
||||
@@ -116,9 +116,13 @@
|
||||
|
||||
proc/Dismantle(devastated = 0)
|
||||
if(!devastated)
|
||||
var/ore = text2path("/obj/item/weapon/ore/[mineralType]")
|
||||
var/ore = text2path("/obj/item/stack/sheet/[mineralType]")
|
||||
for(var/i = 1, i <= oreAmount, i++)
|
||||
new ore(get_turf(src))
|
||||
else
|
||||
var/ore = text2path("/obj/item/stack/sheet/[mineralType]")
|
||||
for(var/i = 3, i <= oreAmount, i++)
|
||||
new ore(get_turf(src))
|
||||
del(src)
|
||||
|
||||
ex_act(severity = 1)
|
||||
@@ -154,7 +158,7 @@
|
||||
return 1
|
||||
|
||||
/obj/structure/mineral_door/iron
|
||||
mineralType = "iron"
|
||||
mineralType = "metal"
|
||||
hardness = 3
|
||||
|
||||
/obj/structure/mineral_door/silver
|
||||
@@ -170,7 +174,7 @@
|
||||
|
||||
New()
|
||||
..()
|
||||
ul_SetLuminosity(3)
|
||||
ul_SetLuminosity(0,3,0)
|
||||
|
||||
/obj/structure/mineral_door/sandstone
|
||||
mineralType = "sandstone"
|
||||
@@ -205,7 +209,7 @@
|
||||
var/toxinsToDeduce = temperature/10
|
||||
|
||||
napalm.toxins = toxinsToDeduce
|
||||
napalm.temperature = 400+T0C
|
||||
napalm.temperature = 200+T0C
|
||||
napalm.update_values()
|
||||
|
||||
target_tile.assume_air(napalm)
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
return
|
||||
proc/ChangeSign(var/Text)
|
||||
src.icon_state = "[Text]"
|
||||
//ul_SetLuminosity(4)
|
||||
ul_SetLuminosity(3,0,0)
|
||||
return
|
||||
|
||||
/obj/effect/sign/securearea/ex_act(severity)
|
||||
|
||||
@@ -142,7 +142,7 @@ var/global/list/datum/stack_recipe/plasteel_recipes = list ( \
|
||||
return
|
||||
|
||||
/obj/item/stack/tile/plasteel/proc/build(turf/S as turf)
|
||||
S.ReplaceWithAirlessPlating()
|
||||
S.ReplaceWithPlating()
|
||||
// var/turf/simulated/floor/W = S.ReplaceWithFloor()
|
||||
// W.make_plating()
|
||||
return
|
||||
|
||||
@@ -50,19 +50,65 @@ obj/structure/meteorhit(obj/O as obj)
|
||||
new /obj/item/stack/sheet/metal(get_turf(src))
|
||||
del(src)
|
||||
|
||||
else if((istype(W, /obj/item/stack/sheet/metal)) && (W:amount >= 2) && istype(src,/obj/structure/girder/displaced))
|
||||
else if(istype(W, /obj/item/stack/sheet) && !anchored)
|
||||
switch(W.type)
|
||||
if(/obj/item/stack/sheet/metal)
|
||||
W:use(2)
|
||||
user << "\blue You create a false wall! Push on it to open or close the passage."
|
||||
new /obj/structure/falsewall (src.loc)
|
||||
if(/obj/item/stack/sheet/plasteel)
|
||||
W:use(2)
|
||||
user << "\blue You create a false wall! Push on it to open or close the passage."
|
||||
new /obj/structure/falserwall (src.loc)
|
||||
if(/obj/item/stack/sheet/gold)
|
||||
W:use(2)
|
||||
user << "\blue You create a false wall! Push on it to open or close the passage."
|
||||
new /obj/structure/falsewall/gold (src.loc)
|
||||
if(/obj/item/stack/sheet/silver)
|
||||
W:use(2)
|
||||
user << "\blue You create a false wall! Push on it to open or close the passage."
|
||||
new /obj/structure/falsewall/silver (src.loc)
|
||||
if(/obj/item/stack/sheet/diamond)
|
||||
W:use(2)
|
||||
user << "\blue You create a false wall! Push on it to open or close the passage."
|
||||
new /obj/structure/falsewall/diamond (src.loc)
|
||||
if(/obj/item/stack/sheet/uranium)
|
||||
W:use(2)
|
||||
user << "\blue You create a false wall! Push on it to open or close the passage."
|
||||
new /obj/structure/falsewall/uranium (src.loc)
|
||||
if(/obj/item/stack/sheet/plasma)
|
||||
W:use(2)
|
||||
user << "\blue You create a false wall! Push on it to open or close the passage."
|
||||
new /obj/structure/falsewall/plasma (src.loc)
|
||||
if(/obj/item/stack/sheet/clown)
|
||||
W:use(2)
|
||||
user << "\blue You create a false wall! Push on it to open or close the passage."
|
||||
new /obj/structure/falsewall/clown (src.loc)
|
||||
if(/obj/item/stack/sheet/sandstone)
|
||||
W:use(2)
|
||||
user << "\blue You create a false wall! Push on it to open or close the passage."
|
||||
new /obj/structure/falsewall/sandstone (src.loc)
|
||||
/* if(/obj/item/stack/sheet/wood)
|
||||
W:use(2)
|
||||
user << "\blue You create a false wall! Push on it to open or close the passage."
|
||||
new /obj/structure/falsewall/wood (src.loc)*/
|
||||
add_hiddenprint(usr)
|
||||
del(src)
|
||||
|
||||
|
||||
/* else if((istype(W, /obj/item/stack/sheet/metal)) && (W:amount >= 2) && istype(src,/obj/structure/girder/displaced))
|
||||
W:use(2)
|
||||
user << "\blue You create a false wall! Push on it to open or close the passage."
|
||||
new /obj/structure/falsewall (src.loc)
|
||||
add_hiddenprint(usr)
|
||||
del(src)
|
||||
|
||||
else if(istype(W, /obj/item/stack/sheet/plasteel) && istype(src,/obj/structure/girder/displaced))
|
||||
W:use(2)
|
||||
user << "\blue You create a false r wall! Push on it to open or close the passage."
|
||||
new /obj/structure/falserwall (src.loc)
|
||||
add_hiddenprint(usr)
|
||||
del(src)
|
||||
del(src)*/
|
||||
|
||||
|
||||
else if(istype(W, /obj/item/weapon/screwdriver) && state == 2 && istype(src,/obj/structure/girder/reinforced))
|
||||
playsound(src.loc, 'Screwdriver.ogg', 100, 1)
|
||||
@@ -95,49 +141,145 @@ obj/structure/meteorhit(obj/O as obj)
|
||||
new/obj/structure/girder( src.loc )
|
||||
del(src)
|
||||
|
||||
else if((istype(W, /obj/item/stack/sheet/metal)) && (W:amount >= 2))
|
||||
user << "\blue Now adding plating..."
|
||||
if (do_after(user,40))
|
||||
if(!W)
|
||||
return
|
||||
user << "\blue You added the plating!"
|
||||
var/turf/Tsrc = get_turf(src)
|
||||
Tsrc.ReplaceWithWall()
|
||||
for(var/obj/machinery/atmospherics/pipe/P in Tsrc)
|
||||
P.layer = 1
|
||||
for(var/turf/simulated/wall/X in Tsrc.loc)
|
||||
if(X) X.add_hiddenprint(usr)
|
||||
if (W) W:use(2)
|
||||
del(src)
|
||||
return
|
||||
else if((istype(W, /obj/item/stack/sheet)) && (W:amount >= 2))
|
||||
switch(W.type)
|
||||
|
||||
else if (istype(W, /obj/item/stack/sheet/plasteel))
|
||||
if (src.icon_state == "reinforced") //Time to finalize!
|
||||
user << "\blue Now finalising reinforced wall."
|
||||
if(do_after(user, 50))
|
||||
if(!W)
|
||||
if(/obj/item/stack/sheet/metal)
|
||||
user << "\blue Now adding plating..."
|
||||
if (do_after(user,40))
|
||||
user << "\blue You added the plating!"
|
||||
var/turf/Tsrc = get_turf(src)
|
||||
Tsrc.ReplaceWithWall()
|
||||
for(var/obj/machinery/atmospherics/pipe/P in Tsrc)
|
||||
P.layer = 1
|
||||
for(var/turf/simulated/wall/X in Tsrc.loc)
|
||||
if(X) X.add_hiddenprint(usr)
|
||||
if (W) W:use(2)
|
||||
del(src)
|
||||
return
|
||||
user << "\blue Wall fully reinforced!"
|
||||
var/turf/Tsrc = get_turf(src)
|
||||
Tsrc.ReplaceWithRWall()
|
||||
for(var/obj/machinery/atmospherics/pipe/P in Tsrc)
|
||||
P.layer = 1
|
||||
for(var/turf/simulated/wall/r_wall/X in Tsrc.loc)
|
||||
if(X) X.add_hiddenprint(usr)
|
||||
if (W)
|
||||
W:use(1)
|
||||
del(src)
|
||||
return
|
||||
else
|
||||
user << "\blue Now reinforcing girders"
|
||||
if (do_after(user,60))
|
||||
if(!W)
|
||||
|
||||
if (/obj/item/stack/sheet/plasteel)
|
||||
if (src.icon_state == "reinforced") //Time to finalize!
|
||||
user << "\blue Now finalising reinforced wall."
|
||||
if(do_after(user, 50))
|
||||
user << "\blue Wall fully reinforced!"
|
||||
var/turf/Tsrc = get_turf(src)
|
||||
Tsrc.ReplaceWithRWall()
|
||||
for(var/obj/machinery/atmospherics/pipe/P in Tsrc)
|
||||
P.layer = 1
|
||||
for(var/turf/simulated/wall/r_wall/X in Tsrc.loc)
|
||||
if(X) X.add_hiddenprint(usr)
|
||||
if (W)
|
||||
W:use(1)
|
||||
del(src)
|
||||
return
|
||||
else
|
||||
user << "\blue Now reinforcing girders"
|
||||
if (do_after(user,60))
|
||||
user << "\blue Girders reinforced!"
|
||||
W:use(1)
|
||||
new/obj/structure/girder/reinforced( src.loc )
|
||||
del(src)
|
||||
return
|
||||
|
||||
if(/obj/item/stack/sheet/gold)
|
||||
user << "\blue Now adding plating..."
|
||||
if (do_after(user,40))
|
||||
user << "\blue You added the plating!"
|
||||
var/turf/Tsrc = get_turf(src)
|
||||
Tsrc.ReplaceWithMineralWall("gold")
|
||||
for(var/obj/machinery/atmospherics/pipe/P in Tsrc)
|
||||
P.layer = 1
|
||||
for(var/turf/simulated/wall/mineral/X in Tsrc.loc)
|
||||
if(X) X.add_hiddenprint(usr)
|
||||
if (W) W:use(2)
|
||||
del(src)
|
||||
return
|
||||
user << "\blue Girders reinforced!"
|
||||
W:use(1)
|
||||
new/obj/structure/girder/reinforced( src.loc )
|
||||
del(src)
|
||||
return
|
||||
|
||||
if(/obj/item/stack/sheet/silver)
|
||||
user << "\blue Now adding plating..."
|
||||
if (do_after(user,40))
|
||||
user << "\blue You added the plating!"
|
||||
var/turf/Tsrc = get_turf(src)
|
||||
Tsrc.ReplaceWithMineralWall("silver")
|
||||
for(var/obj/machinery/atmospherics/pipe/P in Tsrc)
|
||||
P.layer = 1
|
||||
for(var/turf/simulated/wall/mineral/X in Tsrc.loc)
|
||||
if(X) X.add_hiddenprint(usr)
|
||||
if (W) W:use(2)
|
||||
del(src)
|
||||
return
|
||||
|
||||
if(/obj/item/stack/sheet/diamond)
|
||||
user << "\blue Now adding plating..."
|
||||
if (do_after(user,40))
|
||||
user << "\blue You added the plating!"
|
||||
var/turf/Tsrc = get_turf(src)
|
||||
Tsrc.ReplaceWithMineralWall("diamond")
|
||||
for(var/obj/machinery/atmospherics/pipe/P in Tsrc)
|
||||
P.layer = 1
|
||||
for(var/turf/simulated/wall/mineral/X in Tsrc.loc)
|
||||
if(X) X.add_hiddenprint(usr)
|
||||
if (W) W:use(2)
|
||||
del(src)
|
||||
return
|
||||
|
||||
if(/obj/item/stack/sheet/uranium)
|
||||
user << "\blue Now adding plating..."
|
||||
if (do_after(user,40))
|
||||
user << "\blue You added the plating!"
|
||||
var/turf/Tsrc = get_turf(src)
|
||||
Tsrc.ReplaceWithMineralWall("uranium")
|
||||
for(var/obj/machinery/atmospherics/pipe/P in Tsrc)
|
||||
P.layer = 1
|
||||
for(var/turf/simulated/wall/mineral/X in Tsrc.loc)
|
||||
if(X) X.add_hiddenprint(usr)
|
||||
if (W) W:use(2)
|
||||
del(src)
|
||||
return
|
||||
|
||||
if(/obj/item/stack/sheet/plasma)
|
||||
user << "\blue Now adding plating..."
|
||||
if (do_after(user,40))
|
||||
user << "\blue You added the plating!"
|
||||
var/turf/Tsrc = get_turf(src)
|
||||
Tsrc.ReplaceWithMineralWall("plasma")
|
||||
for(var/obj/machinery/atmospherics/pipe/P in Tsrc)
|
||||
P.layer = 1
|
||||
for(var/turf/simulated/wall/mineral/X in Tsrc.loc)
|
||||
if(X) X.add_hiddenprint(usr)
|
||||
if (W) W:use(2)
|
||||
del(src)
|
||||
return
|
||||
|
||||
if(/obj/item/stack/sheet/clown)
|
||||
user << "\blue Now adding plating..."
|
||||
if (do_after(user,40))
|
||||
user << "\blue You added the plating!"
|
||||
var/turf/Tsrc = get_turf(src)
|
||||
Tsrc.ReplaceWithMineralWall("clown")
|
||||
for(var/obj/machinery/atmospherics/pipe/P in Tsrc)
|
||||
P.layer = 1
|
||||
for(var/turf/simulated/wall/mineral/X in Tsrc.loc)
|
||||
if(X) X.add_hiddenprint(usr)
|
||||
if (W) W:use(2)
|
||||
del(src)
|
||||
return
|
||||
|
||||
if(/obj/item/stack/sheet/sandstone)
|
||||
user << "\blue Now adding plating..."
|
||||
if (do_after(user,40))
|
||||
user << "\blue You added the plating!"
|
||||
var/turf/Tsrc = get_turf(src)
|
||||
Tsrc.ReplaceWithMineralWall("sandstone")
|
||||
for(var/obj/machinery/atmospherics/pipe/P in Tsrc)
|
||||
P.layer = 1
|
||||
for(var/turf/simulated/wall/mineral/X in Tsrc.loc)
|
||||
if(X) X.add_hiddenprint(usr)
|
||||
if (W) W:use(2)
|
||||
del(src)
|
||||
return
|
||||
|
||||
else if(istype(W, /obj/item/pipe))
|
||||
var/obj/item/pipe/P = W
|
||||
if (P.pipe_type in list(0, 1, 5)) //simple pipes, simple bends, and simple manifolds.
|
||||
@@ -266,3 +408,208 @@ obj/structure/meteorhit(obj/O as obj)
|
||||
del(src)
|
||||
|
||||
return
|
||||
|
||||
/obj/structure/falsewall
|
||||
var/mineral = "metal"
|
||||
|
||||
/obj/structure/falserwall
|
||||
var/mineral = "metal"
|
||||
|
||||
/obj/structure/falsewall/gold
|
||||
mineral = "gold"
|
||||
|
||||
/obj/structure/falsewall/silver
|
||||
mineral = "silver"
|
||||
|
||||
/obj/structure/falsewall/diamond
|
||||
mineral = "diamond"
|
||||
|
||||
/obj/structure/falsewall/uranium
|
||||
mineral = "uranium"
|
||||
var/active = null
|
||||
var/last_event = 0
|
||||
|
||||
/obj/structure/falsewall/plasma
|
||||
mineral = "plasma"
|
||||
|
||||
/obj/structure/falsewall/clown
|
||||
mineral = "clown"
|
||||
|
||||
/obj/structure/falsewall/sandstone
|
||||
mineral = "sandstone"
|
||||
|
||||
/*/obj/structure/falsewall/wood
|
||||
mineral = "wood"*/
|
||||
|
||||
/obj/structure/falsewall/attack_hand(mob/user as mob)
|
||||
if(density)
|
||||
// Open wall
|
||||
icon_state = "[mineral]fwall_open"
|
||||
flick("[mineral]fwall_opening", src)
|
||||
sleep(15)
|
||||
src.density = 0
|
||||
src.ul_SetOpacity(0)
|
||||
var/turf/T = src.loc
|
||||
T.ul_Recalculate()
|
||||
|
||||
else
|
||||
flick("[mineral]fwall_closing", src)
|
||||
icon_state = "[mineral]0"
|
||||
sleep(15)
|
||||
src.density = 1
|
||||
src.ul_SetOpacity(1)
|
||||
var/turf/T = src.loc
|
||||
//T.ul_LumUpdate()
|
||||
src.relativewall()
|
||||
T.ul_Recalculate()
|
||||
|
||||
/obj/structure/falsewall/uranium/attack_hand(mob/user as mob)
|
||||
radiate()
|
||||
..()
|
||||
|
||||
/obj/structure/falsewall/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
||||
if(istype(W, /obj/item/weapon/screwdriver))
|
||||
var/turf/T = get_turf(src)
|
||||
user.visible_message("[user] tightens some bolts on the wall.", "You tighten the bolts on the wall.")
|
||||
if(!mineral)
|
||||
T.ReplaceWithWall()
|
||||
else
|
||||
T.ReplaceWithMineralWall(mineral)
|
||||
del(src)
|
||||
|
||||
if( istype(W, /obj/item/weapon/weldingtool) )
|
||||
var/obj/item/weapon/weldingtool/WT = W
|
||||
if( WT:welding )
|
||||
var/turf/T = get_turf(src)
|
||||
if(!mineral)
|
||||
T.ReplaceWithWall()
|
||||
else
|
||||
T.ReplaceWithMineralWall(mineral)
|
||||
if(mineral != "plasma")//Stupid shit keeps me from pushing the attackby() to plasma walls -Sieve
|
||||
T = get_turf(src)
|
||||
T.attackby(W,user)
|
||||
del(src)
|
||||
|
||||
else if( istype(W, /obj/item/weapon/pickaxe/plasmacutter) )
|
||||
var/turf/T = get_turf(src)
|
||||
if(!mineral)
|
||||
T.ReplaceWithWall()
|
||||
else
|
||||
T.ReplaceWithMineralWall(mineral)
|
||||
if(mineral != "plasma")
|
||||
T = get_turf(src)
|
||||
T.attackby(W,user)
|
||||
del(src)
|
||||
|
||||
//DRILLING
|
||||
else if (istype(W, /obj/item/weapon/pickaxe/diamonddrill))
|
||||
var/turf/T = get_turf(src)
|
||||
if(!mineral)
|
||||
T.ReplaceWithWall()
|
||||
else
|
||||
T.ReplaceWithMineralWall(mineral)
|
||||
T = get_turf(src)
|
||||
T.attackby(W,user)
|
||||
del(src)
|
||||
|
||||
else if( istype(W, /obj/item/weapon/melee/energy/blade) )
|
||||
var/turf/T = get_turf(src)
|
||||
if(!mineral)
|
||||
T.ReplaceWithWall()
|
||||
else
|
||||
T.ReplaceWithMineralWall(mineral)
|
||||
if(mineral != "plasma")
|
||||
T = get_turf(src)
|
||||
T.attackby(W,user)
|
||||
del(src)
|
||||
/*
|
||||
|
||||
var/turf/T = get_turf(user)
|
||||
user << "\blue Now adding plating..."
|
||||
sleep(40)
|
||||
if (get_turf(user) == T)
|
||||
user << "\blue You added the plating!"
|
||||
var/turf/Tsrc = get_turf(src)
|
||||
Tsrc.ReplaceWithWall()
|
||||
|
||||
*/
|
||||
|
||||
/obj/structure/falsewall/uranium/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
||||
radiate()
|
||||
..()
|
||||
|
||||
/obj/structure/falserwall/
|
||||
attack_hand(mob/user as mob)
|
||||
if(density)
|
||||
// Open wall
|
||||
icon_state = "frwall_open"
|
||||
flick("frwall_opening", src)
|
||||
sleep(15)
|
||||
src.density = 0
|
||||
src.ul_SetOpacity(0)
|
||||
var/turf/T = src.loc
|
||||
T.ul_Recalculate()
|
||||
|
||||
else
|
||||
icon_state = "r_wall"
|
||||
flick("frwall_closing", src)
|
||||
sleep(15)
|
||||
src.density = 1
|
||||
src.ul_SetOpacity(1)
|
||||
var/turf/T = src.loc
|
||||
//T.ul_LumUpdate()
|
||||
src.relativewall()
|
||||
T.ul_Recalculate()
|
||||
|
||||
|
||||
attackby(obj/item/weapon/W as obj, mob/user as mob)
|
||||
if(istype(W, /obj/item/weapon/screwdriver))
|
||||
var/turf/T = get_turf(src)
|
||||
user.visible_message("[user] tightens some bolts on the r wall.", "You tighten the bolts on the r wall.")
|
||||
T.ReplaceWithWall() //Intentionally makes a regular wall instead of an r-wall (no cheap r-walls for you).
|
||||
del(src)
|
||||
|
||||
if( istype(W, /obj/item/weapon/weldingtool) )
|
||||
var/obj/item/weapon/weldingtool/WT = W
|
||||
if( WT.remove_fuel(0,user) )
|
||||
var/turf/T = get_turf(src)
|
||||
T.ReplaceWithWall()
|
||||
T = get_turf(src)
|
||||
T.attackby(W,user)
|
||||
del(src)
|
||||
|
||||
else if( istype(W, /obj/item/weapon/pickaxe/plasmacutter) )
|
||||
var/turf/T = get_turf(src)
|
||||
T.ReplaceWithWall()
|
||||
T = get_turf(src)
|
||||
T.attackby(W,user)
|
||||
del(src)
|
||||
|
||||
//DRILLING
|
||||
else if (istype(W, /obj/item/weapon/pickaxe/diamonddrill))
|
||||
var/turf/T = get_turf(src)
|
||||
T.ReplaceWithWall()
|
||||
T = get_turf(src)
|
||||
T.attackby(W,user)
|
||||
del(src)
|
||||
|
||||
else if( istype(W, /obj/item/weapon/melee/energy/blade) )
|
||||
var/turf/T = get_turf(src)
|
||||
T.ReplaceWithWall()
|
||||
T = get_turf(src)
|
||||
T.attackby(W,user)
|
||||
del(src)
|
||||
|
||||
/obj/structure/falsewall/uranium/proc/radiate()
|
||||
if(!active)
|
||||
if(world.time > last_event+15)
|
||||
active = 1
|
||||
for(var/mob/living/L in range(3,src))
|
||||
L.apply_effect(12,IRRADIATE,0)
|
||||
for(var/turf/simulated/wall/mineral/T in range(3,src))
|
||||
if(T.mineral == "uranium")
|
||||
T.radiate()
|
||||
last_event = world.time
|
||||
active = null
|
||||
return
|
||||
return
|
||||
|
||||
@@ -179,81 +179,4 @@
|
||||
// this doesn't do anything but the timer etc. expects it to be here
|
||||
// eventually maybe have it update icon to show state (timer, prox etc.) like old bombs
|
||||
/obj/item/device/transfer_valve/proc/c_state()
|
||||
return
|
||||
|
||||
|
||||
|
||||
/obj/structure/falsewall
|
||||
attack_hand(mob/user as mob)
|
||||
if(density)
|
||||
// Open wall
|
||||
icon_state = "fwall_open"
|
||||
flick("fwall_opening", src)
|
||||
sleep(15)
|
||||
src.density = 0
|
||||
src.ul_SetOpacity(0)
|
||||
var/turf/T = src.loc
|
||||
T.ul_Recalculate()
|
||||
|
||||
else
|
||||
icon_state = "wall"
|
||||
flick("fwall_closing", src)
|
||||
sleep(15)
|
||||
src.density = 1
|
||||
src.ul_SetOpacity(1)
|
||||
var/turf/T = src.loc
|
||||
//T.sd_LumUpdate()
|
||||
src.relativewall()
|
||||
T.ul_Recalculate()
|
||||
|
||||
|
||||
attackby(obj/item/weapon/W as obj, mob/user as mob)
|
||||
if(istype(W, /obj/item/weapon/screwdriver))
|
||||
var/turf/T = get_turf(src)
|
||||
user.visible_message("[user] tightens some bolts on the wall.", "You tighten the bolts on the wall.")
|
||||
T.ReplaceWithWall()
|
||||
del(src)
|
||||
//
|
||||
|
||||
/*
|
||||
|
||||
var/turf/T = get_turf(user)
|
||||
user << "\blue Now adding plating..."
|
||||
sleep(40)
|
||||
if (get_turf(user) == T)
|
||||
user << "\blue You added the plating!"
|
||||
var/turf/Tsrc = get_turf(src)
|
||||
Tsrc.ReplaceWithWall()
|
||||
|
||||
*/
|
||||
|
||||
/obj/structure/falserwall/
|
||||
attack_hand(mob/user as mob)
|
||||
if(density)
|
||||
// Open wall
|
||||
icon_state = "frwall_open"
|
||||
flick("frwall_opening", src)
|
||||
sleep(15)
|
||||
src.density = 0
|
||||
src.ul_SetOpacity(0)
|
||||
var/turf/T = src.loc
|
||||
T.ul_Recalculate()
|
||||
|
||||
else
|
||||
icon_state = "r_wall"
|
||||
flick("frwall_closing", src)
|
||||
sleep(15)
|
||||
src.density = 1
|
||||
src.ul_SetOpacity(1)
|
||||
var/turf/T = src.loc
|
||||
//T.sd_LumUpdate()
|
||||
src.relativewall()
|
||||
T.ul_Recalculate()
|
||||
|
||||
|
||||
attackby(obj/item/weapon/W as obj, mob/user as mob)
|
||||
if(istype(W, /obj/item/weapon/screwdriver))
|
||||
var/turf/T = get_turf(src)
|
||||
user.visible_message("[user] tightens some bolts on the r wall.", "You tighten the bolts on the r wall.")
|
||||
T.ReplaceWithWall() //Intentionally makes a regular wall instead of an r-wall (no cheap r-walls for you).
|
||||
del(src)
|
||||
return
|
||||
@@ -4,28 +4,56 @@
|
||||
name = "toilet"
|
||||
desc = "The HT-451, a torque rotation-based, waste disposal unit for small matter. This one seems remarkably clean."
|
||||
icon = 'watercloset.dmi'
|
||||
icon_state = "toilet0"
|
||||
icon_state = "toilet00"
|
||||
density = 0
|
||||
anchored = 1
|
||||
var/open = 0
|
||||
var/mob/swirlie = null
|
||||
var/open = 0 //if the lid is up
|
||||
var/cistern = 0 //if the cistern bit is open
|
||||
var/w_items = 0 //the combined w_class of all the items in the cistern
|
||||
var/mob/swirlie = null //the mob being given a swirlie
|
||||
|
||||
/obj/structure/toilet/New()
|
||||
open = round(rand(0, 1))
|
||||
update_icon()
|
||||
|
||||
/obj/structure/toilet/attack_hand()
|
||||
if(!swirlie)
|
||||
open = !open
|
||||
update_icon()
|
||||
else
|
||||
usr.visible_message("<span class='danger'>[usr] slams the toilet seat onto [swirlie.name]'s head!</span>", "<span class='notice'>You slam the toilet seat onto [swirlie.name]'s head!</span>", "You hear reverberating porcelain.")
|
||||
/obj/structure/toilet/attack_hand(mob/user as mob)
|
||||
if(swirlie)
|
||||
usr.visible_message("<span class='danger'>[user] slams the toilet seat onto [swirlie.name]'s head!</span>", "<span class='notice'>You slam the toilet seat onto [swirlie.name]'s head!</span>", "You hear reverberating porcelain.")
|
||||
swirlie.adjustBruteLoss(8)
|
||||
return
|
||||
|
||||
if(cistern && !open)
|
||||
if(!contents.len)
|
||||
user << "<span class='notice'>The cistern is empty.</span>"
|
||||
return
|
||||
else
|
||||
var/obj/item/I = pick(contents)
|
||||
if(ishuman(user))
|
||||
if(!user.get_active_hand())
|
||||
I.loc = user.loc
|
||||
user.put_in_hand(I)
|
||||
else
|
||||
I.loc = get_turf(src)
|
||||
user << "<span class='notice'>You find \an [I] in the cistern.</span>"
|
||||
w_items -= I.w_class
|
||||
return
|
||||
|
||||
open = !open
|
||||
update_icon()
|
||||
|
||||
/obj/structure/toilet/update_icon()
|
||||
icon_state = "toilet[open]"
|
||||
icon_state = "toilet[open][cistern]"
|
||||
|
||||
/obj/structure/toilet/attackby(obj/item/I as obj, mob/user as mob)
|
||||
if(istype(I, /obj/item/weapon/crowbar))
|
||||
user << "<span class='notice'>You start to [cistern ? "replace the lid on the cistern" : "lift the lid off the cistern"].</span>"
|
||||
playsound(loc, 'stonedoor_openclose.ogg', 50, 1)
|
||||
if(do_after(user, 30))
|
||||
user.visible_message("<span class='notice'>[user] [cistern ? "replaces the lid on the cistern" : "lifts the lid off the cistern"]!</span>", "<span class='notice'>You [cistern ? "replace the lid on the cistern" : "lift the lid off the cistern"]!</span>", "You hear grinding porcelain.")
|
||||
cistern = !cistern
|
||||
update_icon()
|
||||
return
|
||||
|
||||
/obj/structure/toilet/attackby(var/obj/item/I, var/mob/user)
|
||||
if(istype(I, /obj/item/weapon/grab))
|
||||
var/obj/item/weapon/grab/G = I
|
||||
var/mob/GM = G.affecting
|
||||
@@ -45,6 +73,19 @@
|
||||
else
|
||||
user << "<span class='notice'>You need a tighter grip.</span>"
|
||||
|
||||
if(cistern)
|
||||
if(I.w_class > 3)
|
||||
user << "<span class='notice'>\The [I] does not fit.</span>"
|
||||
return
|
||||
if(w_items + I.w_class > 5)
|
||||
user << "<span class='notice'>The cistern is full.</span>"
|
||||
return
|
||||
user.drop_item()
|
||||
I.loc = src
|
||||
w_items += I.w_class
|
||||
user << "You carefully place \the [I] into the cistern."
|
||||
return
|
||||
|
||||
|
||||
|
||||
/obj/structure/urinal
|
||||
@@ -55,7 +96,7 @@
|
||||
density = 0
|
||||
anchored = 1
|
||||
|
||||
/obj/structure/urinal/attackby(var/obj/item/I, var/mob/user)
|
||||
/obj/structure/urinal/attackby(obj/item/I as obj, mob/user as mob)
|
||||
if(istype(I, /obj/item/weapon/grab))
|
||||
var/obj/item/weapon/grab/G = I
|
||||
var/mob/GM = G.affecting
|
||||
@@ -97,7 +138,7 @@
|
||||
wash(M)
|
||||
check_heat(M)
|
||||
|
||||
/obj/machinery/shower/attackby(var/obj/item/I, var/mob/user)
|
||||
/obj/machinery/shower/attackby(var/obj/item/I as obj, var/mob/user as mob)
|
||||
if(I.type == /obj/item/device/analyzer)
|
||||
user << "<span class='notice'>The water temperature seems to be [watertemp].</span>"
|
||||
if(istype(I, /obj/item/weapon/wrench))
|
||||
|
||||
@@ -41,7 +41,8 @@
|
||||
else if (istype(src,/obj/structure/falserwall))
|
||||
src.icon_state = "rwall[junction]"
|
||||
else if (istype(src,/obj/structure/falsewall))
|
||||
src.icon_state = "wall[junction]"
|
||||
var/obj/structure/falsewall/fwall = src
|
||||
fwall.icon_state = "[fwall.mineral][junction]"
|
||||
/* else if(istype(src,/turf/simulated/shuttle/wall))
|
||||
var/newicon = icon;
|
||||
var/newiconstate = icon_state;
|
||||
@@ -151,3 +152,64 @@
|
||||
W.relativewall()
|
||||
|
||||
..()*/
|
||||
|
||||
/turf/simulated/wall/relativewall()
|
||||
if(istype(src,/turf/simulated/wall/vault)) //HACK!!!
|
||||
return
|
||||
|
||||
var/junction = 0 //will be used to determine from which side the wall is connected to other walls
|
||||
|
||||
for(var/turf/simulated/wall/W in orange(src,1))
|
||||
if(abs(src.x-W.x)-abs(src.y-W.y)) //doesn't count diagonal walls
|
||||
if(src.mineral == W.mineral)//Only 'like' walls connect -Sieve
|
||||
junction |= get_dir(src,W)
|
||||
for(var/obj/structure/falsewall/W in orange(src,1))
|
||||
if(abs(src.x-W.x)-abs(src.y-W.y)) //doesn't count diagonal walls
|
||||
if(src.mineral == W.mineral)
|
||||
junction |= get_dir(src,W)
|
||||
for(var/obj/structure/falserwall/W in orange(src,1))
|
||||
if(abs(src.x-W.x)-abs(src.y-W.y)) //doesn't count diagonal walls
|
||||
if(src.mineral == W.mineral)
|
||||
junction |= get_dir(src,W)
|
||||
var/turf/simulated/wall/wall = src
|
||||
wall.icon_state = "[wall.walltype][junction]"
|
||||
return
|
||||
|
||||
/obj/structure/falsewall/relativewall()
|
||||
|
||||
var/junction = 0 //will be used to determine from which side the wall is connected to other walls
|
||||
|
||||
for(var/turf/simulated/wall/W in orange(src,1))
|
||||
if(abs(src.x-W.x)-abs(src.y-W.y)) //doesn't count diagonal walls
|
||||
if(src.mineral == W.mineral)//Only 'like' walls connect -Sieve
|
||||
junction |= get_dir(src,W)
|
||||
for(var/obj/structure/falsewall/W in orange(src,1))
|
||||
if(abs(src.x-W.x)-abs(src.y-W.y)) //doesn't count diagonal walls
|
||||
if(src.mineral == W.mineral)
|
||||
junction |= get_dir(src,W)
|
||||
for(var/obj/structure/falserwall/W in orange(src,1))
|
||||
if(abs(src.x-W.x)-abs(src.y-W.y)) //doesn't count diagonal walls
|
||||
if(src.mineral == W.mineral)
|
||||
junction |= get_dir(src,W)
|
||||
var/obj/structure/falsewall/fwall = src
|
||||
fwall.icon_state = "[fwall.mineral][junction]"
|
||||
return
|
||||
|
||||
/obj/structure/falserwall/relativewall()
|
||||
|
||||
var/junction = 0 //will be used to determine from which side the wall is connected to other walls
|
||||
|
||||
for(var/turf/simulated/wall/W in orange(src,1))
|
||||
if(abs(src.x-W.x)-abs(src.y-W.y)) //doesn't count diagonal walls
|
||||
if(src.mineral == W.mineral)//Only 'like' walls connect -Sieve
|
||||
junction |= get_dir(src,W)
|
||||
for(var/obj/structure/falsewall/W in orange(src,1))
|
||||
if(abs(src.x-W.x)-abs(src.y-W.y)) //doesn't count diagonal walls
|
||||
if(src.mineral == W.mineral)
|
||||
junction |= get_dir(src,W)
|
||||
for(var/obj/structure/falserwall/W in orange(src,1))
|
||||
if(abs(src.x-W.x)-abs(src.y-W.y)) //doesn't count diagonal walls
|
||||
if(src.mineral == W.mineral)
|
||||
junction |= get_dir(src,W)
|
||||
src.icon_state = "rwall[junction]"
|
||||
return
|
||||
|
||||
@@ -160,6 +160,7 @@ var/list/supply_groups = new()
|
||||
/proc/supply_can_move()
|
||||
if(supply_shuttle_moving) return 0
|
||||
|
||||
//I know this is an absolutly horrendous way to do this, very inefficient, but it's the only reliable way I can think of.
|
||||
//Check for carbon mobs - Allows simple animals.
|
||||
for(var/mob/living/carbon/M in world)
|
||||
var/area/A = get_area(M)
|
||||
@@ -445,10 +446,10 @@ This method wont take into account storage items developed in the future and doe
|
||||
dat = src.temp
|
||||
else
|
||||
dat += {"<BR><B>Supply shuttle</B><HR>
|
||||
\nLocation: [supply_shuttle_moving ? "Moving to station ([supply_shuttle_timeleft] Mins.)":supply_shuttle_at_station ? "Station":"Dock"]<BR>
|
||||
\nLocation: [supply_shuttle_moving ? "Moving to station ([supply_shuttle_timeleft] Mins.)":supply_shuttle_at_station ? "Station":"Away"]<BR>
|
||||
<HR>\nSupply points: [supply_shuttle_points]<BR>\n<BR>
|
||||
[supply_shuttle_moving ? "\n*Must be at dock to order items*<BR>\n<BR>":supply_shuttle_at_station ? "\n*Must be at dock to order items*<BR>\n<BR>":"\n<A href='?src=\ref[src];order=1'>Order items</A><BR>\n<BR>"]
|
||||
[supply_shuttle_moving ? "\n*Shuttle already called*<BR>\n<BR>":supply_shuttle_at_station ? "\n<A href='?src=\ref[src];sendtodock=1'>Send to Dock</A><BR>\n<BR>":"\n<A href='?src=\ref[src];sendtostation=1'>Send to station</A><BR>\n<BR>"]
|
||||
[supply_shuttle_moving ? "\n*Must be away to order items*<BR>\n<BR>":supply_shuttle_at_station ? "\n*Must be away to order items*<BR>\n<BR>":"\n<A href='?src=\ref[src];order=1'>Order items</A><BR>\n<BR>"]
|
||||
[supply_shuttle_moving ? "\n*Shuttle already called*<BR>\n<BR>":supply_shuttle_at_station ? "\n<A href='?src=\ref[src];sendtodock=1'>Send away</A><BR>\n<BR>":"\n<A href='?src=\ref[src];sendtostation=1'>Send to station</A><BR>\n<BR>"]
|
||||
\n<A href='?src=\ref[src];viewrequests=1'>View requests</A><BR>\n<BR>
|
||||
\n<A href='?src=\ref[src];vieworders=1'>View orders</A><BR>\n<BR>
|
||||
\n<A href='?src=\ref[user];mach_close=computer'>Close</A>"}
|
||||
@@ -506,6 +507,7 @@ This method wont take into account storage items developed in the future and doe
|
||||
if ((usr.contents.Find(src) || (in_range(src, usr) && istype(src.loc, /turf))) || (istype(usr, /mob/living/silicon)))
|
||||
usr.machine = src
|
||||
|
||||
//From Station to Centcomm
|
||||
if (href_list["sendtodock"])
|
||||
if(!supply_shuttle_at_station || supply_shuttle_moving) return
|
||||
|
||||
@@ -531,6 +533,7 @@ This method wont take into account storage items developed in the future and doe
|
||||
|
||||
send_supply_shuttle()
|
||||
|
||||
//From Centcomm to Station
|
||||
else if (href_list["sendtostation"])
|
||||
if(supply_shuttle_at_station || supply_shuttle_moving) return
|
||||
|
||||
@@ -669,9 +672,11 @@ This method wont take into account storage items developed in the future and doe
|
||||
|
||||
if (supply_shuttle_moving) return
|
||||
|
||||
if (!supply_can_move())
|
||||
usr << "\red The supply shuttle can not transport station employees, exosuits, classified nuclear codes, or homing beacons."
|
||||
return
|
||||
var/area/the_shuttles_way = locate(SUPPLY_STATION_AREATYPE)
|
||||
|
||||
//Do I really need to explain this loop?
|
||||
for(var/mob/living/unlucky_person in the_shuttles_way)
|
||||
unlucky_person.gib()
|
||||
|
||||
var/shuttleat = supply_shuttle_at_station ? SUPPLY_STATION_AREATYPE : SUPPLY_DOCK_AREATYPE
|
||||
var/shuttleto = !supply_shuttle_at_station ? SUPPLY_STATION_AREATYPE : SUPPLY_DOCK_AREATYPE
|
||||
|
||||
@@ -193,34 +193,27 @@
|
||||
W.opacity = 1
|
||||
W.ul_SetOpacity(0)
|
||||
W.levelupdate()
|
||||
air_master.tiles_to_update |= W
|
||||
|
||||
var/turf/simulated/north = get_step(W,NORTH)
|
||||
var/turf/simulated/south = get_step(W,SOUTH)
|
||||
var/turf/simulated/east = get_step(W,EAST)
|
||||
var/turf/simulated/west = get_step(W,WEST)
|
||||
if(W && W.air)
|
||||
var/new_ox = 0
|
||||
var/new_n2 = 0
|
||||
var/new_co2 = 0
|
||||
var/new_tx = 0
|
||||
for(var/direction in cardinal)
|
||||
var/turf/T = get_step(src, direction)
|
||||
if(istype(T))
|
||||
var/datum/gas_mixture/G = T.return_air()
|
||||
new_ox += G.oxygen
|
||||
new_n2 += G.nitrogen
|
||||
new_co2 += G.carbon_dioxide
|
||||
new_tx += G.toxins
|
||||
|
||||
if(istype(north)) air_master.tiles_to_update |= north
|
||||
if(istype(south)) air_master.tiles_to_update |= south
|
||||
if(istype(east)) air_master.tiles_to_update |= east
|
||||
if(istype(west)) air_master.tiles_to_update |= west
|
||||
return W
|
||||
W.air.nitrogen = new_n2/4
|
||||
W.air.oxygen = new_ox/4
|
||||
W.air.carbon_dioxide = new_co2/4
|
||||
W.air.toxins = new_tx/4
|
||||
W.air.update_values()
|
||||
|
||||
/turf/proc/ReplaceWithAirlessPlating()
|
||||
var/prior_icon = icon_old
|
||||
var/old_dir = dir
|
||||
|
||||
for(var/obj/structure/lattice/L in locate(src.x, src.y, src.z))
|
||||
del(L)
|
||||
var/turf/simulated/floor/plating/airless/W = new /turf/simulated/floor/plating/airless( locate(src.x, src.y, src.z) )
|
||||
|
||||
W.RemoveLattice()
|
||||
W.dir = old_dir
|
||||
if(prior_icon) W.icon_state = prior_icon
|
||||
else W.icon_state = "plating"
|
||||
W.opacity = 1
|
||||
W.ul_SetOpacity(0)
|
||||
W.levelupdate()
|
||||
air_master.tiles_to_update |= W
|
||||
|
||||
var/turf/simulated/north = get_step(W,NORTH)
|
||||
@@ -392,6 +385,28 @@
|
||||
if(istype(west)) air_master.tiles_to_update |= west
|
||||
return S
|
||||
|
||||
/turf/proc/ReplaceWithMineralWall(var/ore)
|
||||
var/old_icon = icon_state
|
||||
var/turf/simulated/wall/mineral/S = new /turf/simulated/wall/mineral( locate(src.x, src.y, src.z) )
|
||||
S.icon_old = old_icon
|
||||
S.opacity = 0
|
||||
S.ul_SetOpacity(1)
|
||||
S.mineral = ore
|
||||
S.New()//Hackish as fuck, but what can you do? -Sieve
|
||||
levelupdate()
|
||||
air_master.tiles_to_update |= S
|
||||
|
||||
var/turf/simulated/north = get_step(S,NORTH)
|
||||
var/turf/simulated/south = get_step(S,SOUTH)
|
||||
var/turf/simulated/east = get_step(S,EAST)
|
||||
var/turf/simulated/west = get_step(S,WEST)
|
||||
|
||||
if(istype(north)) air_master.tiles_to_update |= north
|
||||
if(istype(south)) air_master.tiles_to_update |= south
|
||||
if(istype(east)) air_master.tiles_to_update |= east
|
||||
if(istype(west)) air_master.tiles_to_update |= west
|
||||
return S
|
||||
|
||||
//turf/simulated/wall/New()
|
||||
// ..()
|
||||
|
||||
@@ -417,13 +432,82 @@
|
||||
else
|
||||
if(!devastated)
|
||||
playsound(src.loc, 'Welder.ogg', 100, 1)
|
||||
new /obj/structure/girder(src)
|
||||
new /obj/item/stack/sheet/metal( src )
|
||||
new /obj/item/stack/sheet/metal( src )
|
||||
switch(mineral)
|
||||
if("metal")
|
||||
new /obj/structure/girder(src)
|
||||
new /obj/item/stack/sheet/metal( src )
|
||||
new /obj/item/stack/sheet/metal( src )
|
||||
if("gold")
|
||||
new /obj/structure/girder(src)
|
||||
new /obj/item/stack/sheet/gold( src )
|
||||
new /obj/item/stack/sheet/gold( src )
|
||||
if("silver")
|
||||
new /obj/structure/girder(src)
|
||||
new /obj/item/stack/sheet/silver( src )
|
||||
new /obj/item/stack/sheet/silver( src )
|
||||
if("diamond")
|
||||
new /obj/structure/girder(src)
|
||||
new /obj/item/stack/sheet/diamond( src )
|
||||
new /obj/item/stack/sheet/diamond( src )
|
||||
if("uranium")
|
||||
new /obj/structure/girder(src)
|
||||
new /obj/item/stack/sheet/uranium( src )
|
||||
new /obj/item/stack/sheet/uranium( src )
|
||||
if("plasma")
|
||||
new /obj/structure/girder(src)
|
||||
new /obj/item/stack/sheet/plasma( src )
|
||||
new /obj/item/stack/sheet/plasma( src )
|
||||
if("clown")
|
||||
new /obj/structure/girder(src)
|
||||
new /obj/item/stack/sheet/clown( src )
|
||||
new /obj/item/stack/sheet/clown( src )
|
||||
if("sandstone")
|
||||
new /obj/structure/girder(src)
|
||||
new /obj/item/stack/sheet/sandstone( src )
|
||||
new /obj/item/stack/sheet/sandstone( src )
|
||||
if("wood")
|
||||
new /obj/structure/girder(src)
|
||||
new /obj/item/stack/sheet/wood( src )
|
||||
new /obj/item/stack/sheet/wood( src )
|
||||
|
||||
else
|
||||
new /obj/item/stack/sheet/metal( src )
|
||||
new /obj/item/stack/sheet/metal( src )
|
||||
new /obj/item/stack/sheet/metal( src )
|
||||
switch(mineral)
|
||||
if("metal")
|
||||
new /obj/item/stack/sheet/metal( src )
|
||||
new /obj/item/stack/sheet/metal( src )
|
||||
new /obj/item/stack/sheet/metal( src )
|
||||
if("gold")
|
||||
new /obj/item/stack/sheet/gold( src )
|
||||
new /obj/item/stack/sheet/gold( src )
|
||||
new /obj/item/stack/sheet/metal( src )
|
||||
if("silver")
|
||||
new /obj/item/stack/sheet/silver( src )
|
||||
new /obj/item/stack/sheet/silver( src )
|
||||
new /obj/item/stack/sheet/metal( src )
|
||||
if("diamond")
|
||||
new /obj/item/stack/sheet/diamond( src )
|
||||
new /obj/item/stack/sheet/diamond( src )
|
||||
new /obj/item/stack/sheet/metal( src )
|
||||
if("uranium")
|
||||
new /obj/item/stack/sheet/uranium( src )
|
||||
new /obj/item/stack/sheet/uranium( src )
|
||||
new /obj/item/stack/sheet/metal( src )
|
||||
if("plasma")
|
||||
new /obj/item/stack/sheet/plasma( src )
|
||||
new /obj/item/stack/sheet/plasma( src )
|
||||
new /obj/item/stack/sheet/metal( src )
|
||||
if("clown")
|
||||
new /obj/item/stack/sheet/clown( src )
|
||||
new /obj/item/stack/sheet/clown( src )
|
||||
new /obj/item/stack/sheet/metal( src )
|
||||
if("sandstone")
|
||||
new /obj/item/stack/sheet/sandstone( src )
|
||||
new /obj/item/stack/sheet/sandstone( src )
|
||||
new /obj/item/stack/sheet/metal( src )
|
||||
if("wood")
|
||||
new /obj/item/stack/sheet/wood( src )
|
||||
new /obj/item/stack/sheet/wood( src )
|
||||
new /obj/item/stack/sheet/metal( src )
|
||||
|
||||
for(var/obj/O in src.contents) //Eject contents!
|
||||
if(istype(O,/obj/effect/decal/poster))
|
||||
@@ -443,8 +527,7 @@
|
||||
switch(severity)
|
||||
if(1.0)
|
||||
//SN src = null
|
||||
src.ReplaceWithSpace()
|
||||
del(src)
|
||||
ReplaceWithSpace()
|
||||
return
|
||||
if(2.0)
|
||||
if (prob(50))
|
||||
@@ -568,6 +651,8 @@
|
||||
playsound(src.loc, 'Welder.ogg', 100, 1)
|
||||
|
||||
sleep(60)
|
||||
if(mineral == "diamond")//Oh look, it's tougher
|
||||
sleep(60)
|
||||
if( !istype(src, /turf/simulated/wall) || !user || !W || !T ) return
|
||||
|
||||
if( user.loc == T && user.equipped() == W )
|
||||
@@ -583,6 +668,8 @@
|
||||
user << "<span class='notice'>You begin to drill though the wall.</span>"
|
||||
|
||||
sleep(60)
|
||||
if(mineral == "diamond")
|
||||
sleep(60)
|
||||
if( !istype(src, /turf/simulated/wall) || !user || !W || !T ) return
|
||||
|
||||
if( user.loc == T && user.equipped() == W )
|
||||
@@ -600,6 +687,8 @@
|
||||
playsound(src.loc, "sparks", 50, 1)
|
||||
|
||||
sleep(70)
|
||||
if(mineral == "diamond")
|
||||
sleep(70)
|
||||
if( !istype(src, /turf/simulated/wall) || !user || !EB || !T ) return
|
||||
|
||||
if( user.loc == T && user.equipped() == W )
|
||||
@@ -862,7 +951,72 @@
|
||||
return attack_hand(user)
|
||||
return
|
||||
|
||||
/turf/simulated/wall/mineral/attack_hand(mob/user as mob)
|
||||
if(mineral == "uranium")
|
||||
radiate()
|
||||
..()
|
||||
|
||||
/turf/simulated/wall/mineral/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
||||
if((mineral == "plasma") && W)
|
||||
if(is_hot(W) > 300)
|
||||
ignite(is_hot(W))
|
||||
return
|
||||
if(mineral == "uranium")
|
||||
radiate()
|
||||
// if((mineral == "gold") || (mineral == "silver"))
|
||||
// if(shocked)
|
||||
// shock()
|
||||
..()
|
||||
|
||||
/turf/simulated/wall/mineral/proc/PlasmaBurn(temperature)
|
||||
spawn(2)
|
||||
new /obj/structure/girder(src)
|
||||
src.ReplaceWithFloor()
|
||||
for(var/turf/simulated/floor/target_tile in range(0,src))
|
||||
// if(target_tile.parent && target_tile.parent.group_processing) // THESE PROBABLY DO SOMETHING IMPORTANT BUT I DON'T KNOW HOW TO FIX IT - Erthilo
|
||||
// target_tile.parent.suspend_group_processing()
|
||||
var/datum/gas_mixture/napalm = new
|
||||
var/toxinsToDeduce = 20
|
||||
napalm.toxins = toxinsToDeduce
|
||||
napalm.temperature = 400+T0C
|
||||
target_tile.assume_air(napalm)
|
||||
spawn (0) target_tile.hotspot_expose(temperature, 400)
|
||||
for(var/obj/structure/falsewall/plasma/F in range(3,src))//Hackish as fuck, but until temperature_expose works, there is nothing I can do -Sieve
|
||||
var/turf/T = get_turf(F)
|
||||
T.ReplaceWithMineralWall("plasma")
|
||||
del (F)
|
||||
for(var/turf/simulated/wall/mineral/W in range(3,src))
|
||||
if(mineral == "plasma")
|
||||
W.ignite((temperature/4))//Added so that you can't set off a massive chain reaction with a small flame
|
||||
for(var/obj/machinery/door/airlock/plasma/D in range(3,src))
|
||||
D.ignite(temperature/4)
|
||||
|
||||
/turf/simulated/wall/mineral/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume)
|
||||
if(mineral == "plasma")
|
||||
if(exposed_temperature > 300)
|
||||
PlasmaBurn(exposed_temperature)
|
||||
|
||||
/turf/simulated/wall/mineral/proc/ignite(exposed_temperature)
|
||||
if(mineral == "plasma")
|
||||
if(exposed_temperature > 300)
|
||||
PlasmaBurn(exposed_temperature)
|
||||
|
||||
/turf/simulated/wall/mineral/Bumped(AM as mob|obj)
|
||||
if(mineral == "uranium")
|
||||
radiate()
|
||||
..()
|
||||
|
||||
/turf/simulated/wall/mineral/bullet_act(var/obj/item/projectile/Proj)
|
||||
if(mineral == "plasma")
|
||||
if(istype(Proj,/obj/item/projectile/beam))
|
||||
PlasmaBurn(2500)
|
||||
else if(istype(Proj,/obj/item/projectile/ion))
|
||||
PlasmaBurn(500)
|
||||
..()
|
||||
|
||||
/turf/simulated/wall/proc/thermitemelt(mob/user as mob)
|
||||
if(mineral == "diamond")
|
||||
return
|
||||
var/obj/effect/overlay/O = new/obj/effect/overlay( src )
|
||||
O.name = "Thermite"
|
||||
O.desc = "Looks hot."
|
||||
@@ -1023,9 +1177,13 @@ var/list/plating_icons = list("plating","platingdmg1","platingdmg2","platingdmg3
|
||||
..()
|
||||
name = "plating"
|
||||
|
||||
/turf/simulated/floor/grid
|
||||
/turf/simulated/floor/bluegrid
|
||||
icon = 'floors.dmi'
|
||||
icon_state = "circuit"
|
||||
icon_state = "bcircuit"
|
||||
|
||||
/turf/simulated/floor/greengrid
|
||||
icon = 'floors.dmi'
|
||||
icon_state = "gcircuit"
|
||||
|
||||
/turf/simulated/floor/New()
|
||||
..()
|
||||
@@ -1044,14 +1202,14 @@ var/list/plating_icons = list("plating","platingdmg1","platingdmg2","platingdmg3
|
||||
//set src in oview(1)
|
||||
switch(severity)
|
||||
if(1.0)
|
||||
src.ReplaceWithSpace()
|
||||
ReplaceWithSpace()
|
||||
if(2.0)
|
||||
switch(pick(1,2;75,3))
|
||||
if (1)
|
||||
src.ReplaceWithLattice()
|
||||
ReplaceWithLattice()
|
||||
if(prob(33)) new /obj/item/stack/sheet/metal(src)
|
||||
if(2)
|
||||
src.ReplaceWithSpace()
|
||||
ReplaceWithSpace()
|
||||
if(3)
|
||||
if(prob(80))
|
||||
src.break_tile_to_plating()
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
//This file was auto-corrected by findeclaration.exe on 29/05/2012 15:03:05
|
||||
//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:32
|
||||
|
||||
/obj/item/device/assembly/infra
|
||||
name = "Infrared Beam"
|
||||
@@ -129,7 +129,7 @@
|
||||
|
||||
Topic(href, href_list)
|
||||
..()
|
||||
if(get_dist(src, usr) > 1)
|
||||
if(!usr.canmove || usr.stat || usr.restrained() || !in_range(loc, usr))
|
||||
usr << browse(null, "window=infra")
|
||||
onclose(usr, "infra")
|
||||
return
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
//This file was auto-corrected by findeclaration.exe on 29/05/2012 15:03:05
|
||||
//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:32
|
||||
|
||||
/obj/item/device/assembly/prox_sensor
|
||||
name = "proximity sensor"
|
||||
@@ -100,7 +100,6 @@
|
||||
M.c_state(0)
|
||||
if(holder)
|
||||
holder.update_icon()
|
||||
|
||||
return
|
||||
|
||||
|
||||
@@ -127,7 +126,7 @@
|
||||
|
||||
Topic(href, href_list)
|
||||
..()
|
||||
if(get_dist(src, usr) > 1)
|
||||
if(!usr.canmove || usr.stat || usr.restrained() || !in_range(loc, usr))
|
||||
usr << browse(null, "window=prox")
|
||||
onclose(usr, "prox")
|
||||
return
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
//This file was auto-corrected by findeclaration.exe on 29/05/2012 15:03:05
|
||||
//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:32
|
||||
|
||||
/obj/item/device/assembly/signaler
|
||||
name = "Remote Signaling Device"
|
||||
@@ -77,9 +77,9 @@
|
||||
Topic(href, href_list)
|
||||
..()
|
||||
|
||||
if(get_dist(src, usr) > 1)
|
||||
usr << browse(null, "window=signal")
|
||||
onclose(usr, "signal")
|
||||
if(!usr.canmove || usr.stat || usr.restrained() || !in_range(loc, usr))
|
||||
usr << browse(null, "window=radio")
|
||||
onclose(usr, "radio")
|
||||
return
|
||||
|
||||
if (href_list["freq"])
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
//This file was auto-corrected by findeclaration.exe on 29/05/2012 15:03:05
|
||||
//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:32
|
||||
|
||||
/obj/item/device/assembly/timer
|
||||
name = "timer"
|
||||
@@ -93,7 +93,7 @@
|
||||
|
||||
Topic(href, href_list)
|
||||
..()
|
||||
if(get_dist(src, usr) > 1)
|
||||
if(!usr.canmove || usr.stat || usr.restrained() || !in_range(loc, usr))
|
||||
usr << browse(null, "window=timer")
|
||||
onclose(usr, "timer")
|
||||
return
|
||||
|
||||
@@ -9,6 +9,7 @@
|
||||
icon = 'chemical.dmi'
|
||||
icon_state = "dispenser"
|
||||
use_power = 1
|
||||
idle_power_usage = 40
|
||||
var/energy = 25
|
||||
var/max_energy = 75
|
||||
var/amount = 30
|
||||
@@ -168,6 +169,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
|
||||
|
||||
@@ -860,7 +860,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)
|
||||
|
||||
// radium may increase your chances to cure a disease
|
||||
if(istype(M,/mob/living/carbon)) // make sure to only use it on carbon mobs
|
||||
@@ -943,7 +943,7 @@ datum
|
||||
if(isrobot(M) || isAI(M)) return // Mutagen doesn't do anything to robutts!
|
||||
if(!M) M = holder.my_atom
|
||||
if(prob(33))
|
||||
M.radiation += 1
|
||||
M.apply_effect(10,IRRADIATE,0)
|
||||
..()
|
||||
return
|
||||
|
||||
@@ -1026,7 +1026,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
|
||||
|
||||
|
||||
@@ -128,9 +128,15 @@
|
||||
new /obj/item/clothing/mask/spiderman(src.loc)
|
||||
del(src)*/
|
||||
|
||||
/*
|
||||
/obj/effect/landmark/costume/marisawizard/New()
|
||||
new /obj/item/clothing/head/wizard/marisa(src.loc)
|
||||
new/obj/item/clothing/suit/wizrobe/marisa(src.loc)
|
||||
del(src)*/
|
||||
|
||||
/obj/effect/landmark/costume/marisawizard/fake/New()
|
||||
new /obj/item/clothing/head/wizard/marisa/fake(src.loc)
|
||||
new/obj/item/clothing/suit/wizrobe/marisa/fake(src.loc)
|
||||
del(src)
|
||||
|
||||
/obj/effect/landmark/costume/fakewizard/New()
|
||||
|
||||
@@ -1,275 +1,275 @@
|
||||
// NO GLOVES NO LOVES
|
||||
|
||||
/obj/item/clothing/gloves
|
||||
name = "gloves"
|
||||
gender = PLURAL //Carn: for grammarically correct text-parsing
|
||||
w_class = 2.0
|
||||
icon = 'gloves.dmi'
|
||||
protective_temperature = 400
|
||||
heat_transfer_coefficient = 0.25
|
||||
siemens_coefficient = 0.50
|
||||
var/siemens_coefficient_archived = 0
|
||||
var/wired = 0
|
||||
var/obj/item/weapon/cell/cell = 0
|
||||
body_parts_covered = HANDS
|
||||
slot_flags = SLOT_GLOVES
|
||||
|
||||
|
||||
/obj/item/clothing/gloves/boxing
|
||||
name = "boxing gloves"
|
||||
desc = "Because you really needed another excuse to punch your crewmates."
|
||||
icon_state = "boxing"
|
||||
item_state = "boxing"
|
||||
|
||||
/obj/item/clothing/gloves/boxing/green
|
||||
icon_state = "boxinggreen"
|
||||
item_state = "boxinggreen"
|
||||
|
||||
/obj/item/clothing/gloves/boxing/blue
|
||||
icon_state = "boxingblue"
|
||||
item_state = "boxingblue"
|
||||
|
||||
/obj/item/clothing/gloves/boxing/yellow
|
||||
icon_state = "boxingyellow"
|
||||
item_state = "boxingyellow"
|
||||
|
||||
/obj/item/clothing/gloves/white
|
||||
name = "white gloves"
|
||||
desc = "These look pretty fancy."
|
||||
icon_state = "latex"
|
||||
item_state = "lgloves"
|
||||
color="mime"
|
||||
|
||||
redcoat
|
||||
color = "redcoat" //Exists for washing machines. Is not different from white gloves in any way.
|
||||
|
||||
/obj/item/clothing/gloves/black
|
||||
desc = "These gloves are fire-resistant."
|
||||
name = "black gloves"
|
||||
icon_state = "black"
|
||||
item_state = "bgloves"
|
||||
color="brown"
|
||||
protective_temperature = 1500
|
||||
heat_transfer_coefficient = 0.01
|
||||
|
||||
hos
|
||||
color = "hosred" //Exists for washing machines. Is not different from black gloves in any way.
|
||||
|
||||
ce
|
||||
color = "chief" //Exists for washing machines. Is not different from black gloves in any way.
|
||||
|
||||
/obj/item/clothing/gloves/detective
|
||||
desc = "Made of well worn leather. These gloves are comfortable, useful, and stylish!"
|
||||
name = "detective's gloves"
|
||||
icon_state = "black"
|
||||
item_state = "bgloves"
|
||||
color="brown"
|
||||
siemens_coefficient = 0.30
|
||||
protective_temperature = 1100
|
||||
|
||||
/obj/item/clothing/gloves/hos
|
||||
desc = "These gloves belong to the man in charge of the guns."
|
||||
name = "head of security's gloves"
|
||||
icon_state = "black"
|
||||
item_state = "bgloves"
|
||||
color="brown"
|
||||
siemens_coefficient = 0.30
|
||||
protective_temperature = 1100
|
||||
|
||||
/obj/item/clothing/gloves/cyborg
|
||||
desc = "Beep. Boop. Beep."
|
||||
name = "cyborg gloves"
|
||||
icon_state = "black"
|
||||
item_state = "r_hands"
|
||||
siemens_coefficient = 1.0
|
||||
|
||||
/obj/item/clothing/gloves/latex
|
||||
name = "latex gloves"
|
||||
desc = "Sterile latex gloves."
|
||||
icon_state = "latex"
|
||||
item_state = "lgloves"
|
||||
siemens_coefficient = 0.30
|
||||
permeability_coefficient = 0.01
|
||||
protective_temperature = 310
|
||||
heat_transfer_coefficient = 0.90
|
||||
color="white"
|
||||
|
||||
cmo
|
||||
color = "medical" //Exists for washing machines. Is not different from latex gloves in any way.
|
||||
|
||||
/obj/item/clothing/gloves/swat
|
||||
desc = "These tactical gloves are somewhat fire and impact-resistant."
|
||||
name = "\improper SWAT gloves"
|
||||
icon_state = "black"
|
||||
item_state = "swat_gl"
|
||||
siemens_coefficient = 0
|
||||
permeability_coefficient = 0.05
|
||||
protective_temperature = 1100
|
||||
heat_transfer_coefficient = 0.01
|
||||
|
||||
/obj/item/clothing/gloves/combat //Combined effect of SWAT gloves and insulated gloves
|
||||
desc = "These tactical gloves are somewhat fire and impact resistant."
|
||||
name = "combat gloves"
|
||||
icon_state = "black"
|
||||
item_state = "swat_gl"
|
||||
siemens_coefficient = 0
|
||||
permeability_coefficient = 0.05
|
||||
protective_temperature = 1100
|
||||
heat_transfer_coefficient = 0.01
|
||||
|
||||
/obj/item/clothing/gloves/space_ninja
|
||||
desc = "These nano-enhanced gloves insulate from electricity and provide fire resistance."
|
||||
name = "ninja gloves"
|
||||
icon_state = "s-ninja"
|
||||
item_state = "s-ninja"
|
||||
siemens_coefficient = 0
|
||||
protective_temperature = 1100
|
||||
heat_transfer_coefficient = 0.05
|
||||
var/draining = 0
|
||||
var/candrain = 0
|
||||
var/mindrain = 200
|
||||
var/maxdrain = 400
|
||||
|
||||
//BEEP BEEP IT'S THE COMMENT BRIGADE -Pete (gloves overhaul)
|
||||
/*
|
||||
/obj/item/clothing/gloves/stungloves/
|
||||
name = "Stungloves"
|
||||
desc = "These gloves are electrically charged."
|
||||
icon_state = "yellow"
|
||||
item_state = "ygloves"
|
||||
siemens_coefficient = 0.30
|
||||
elecgen = 1
|
||||
uses = 10
|
||||
*/
|
||||
|
||||
/obj/item/clothing/gloves/yellow
|
||||
desc = "These gloves will protect the wearer from electric shock."
|
||||
name = "insulated gloves"
|
||||
icon_state = "yellow"
|
||||
item_state = "ygloves"
|
||||
siemens_coefficient = 0
|
||||
permeability_coefficient = 0.05
|
||||
protective_temperature = 1000
|
||||
heat_transfer_coefficient = 0.01
|
||||
color="yellow"
|
||||
|
||||
/obj/item/clothing/gloves/fyellow //Cheap Chinese Crap
|
||||
desc = "These gloves are cheap copies of the coveted gloves, no way this can end badly."
|
||||
name = "fake insulated gloves"
|
||||
icon_state = "yellow"
|
||||
item_state = "ygloves"
|
||||
siemens_coefficient = 1 //Set to a default of 1, gets overridden in New()
|
||||
permeability_coefficient = 0.05
|
||||
protective_temperature = 800
|
||||
heat_transfer_coefficient = null
|
||||
color="yellow"
|
||||
|
||||
New()
|
||||
siemens_coefficient = pick(0,0,0.25,0.25,0.5,0.5,1)
|
||||
heat_transfer_coefficient = pick(0.01,0.1,0.25,0.25,0.5)
|
||||
|
||||
/obj/item/clothing/gloves/captain
|
||||
desc = "Regal blue gloves, with a nice gold trim. Swanky."
|
||||
name = "captain's gloves"
|
||||
icon_state = "captain"
|
||||
item_state = "egloves"
|
||||
color = "captain"
|
||||
|
||||
/obj/item/clothing/gloves/botanic_leather
|
||||
desc = "These leather gloves protect against thorns, barbs, prickles, spikes and other harmful objects of floral origin."
|
||||
name = "botanist's leather gloves"
|
||||
icon_state = "leather"
|
||||
item_state = "ggloves"
|
||||
permeability_coefficient = 0.9
|
||||
|
||||
/obj/item/clothing/gloves/orange
|
||||
name = "orange gloves"
|
||||
desc = "A pair of gloves, they don't look special in any way."
|
||||
icon_state = "orange"
|
||||
item_state = "orangegloves"
|
||||
color="orange"
|
||||
|
||||
/obj/item/clothing/gloves/red
|
||||
name = "red gloves"
|
||||
desc = "A pair of gloves, they don't look special in any way."
|
||||
icon_state = "red"
|
||||
item_state = "redgloves"
|
||||
color = "red"
|
||||
siemens_coefficient = 0.30
|
||||
protective_temperature = 1100
|
||||
|
||||
/obj/item/clothing/gloves/rainbow
|
||||
name = "rainbow gloves"
|
||||
desc = "A pair of gloves, they don't look special in any way."
|
||||
icon_state = "rainbow"
|
||||
item_state = "rainbowgloves"
|
||||
color = "rainbow"
|
||||
|
||||
clown
|
||||
color = "clown"
|
||||
|
||||
/obj/item/clothing/gloves/blue
|
||||
name = "blue gloves"
|
||||
desc = "A pair of gloves, they don't look special in any way."
|
||||
icon_state = "blue"
|
||||
item_state = "bluegloves"
|
||||
color="blue"
|
||||
|
||||
/obj/item/clothing/gloves/purple
|
||||
name = "purple gloves"
|
||||
desc = "A pair of gloves, they don't look special in any way."
|
||||
icon_state = "purple"
|
||||
item_state = "purplegloves"
|
||||
color="purple"
|
||||
|
||||
/obj/item/clothing/gloves/green
|
||||
name = "green gloves"
|
||||
desc = "A pair of gloves, they don't look special in any way."
|
||||
icon_state = "green"
|
||||
item_state = "greengloves"
|
||||
color="green"
|
||||
|
||||
/obj/item/clothing/gloves/grey
|
||||
name = "grey gloves"
|
||||
desc = "A pair of gloves, they don't look special in any way."
|
||||
icon_state = "gray"
|
||||
item_state = "graygloves"
|
||||
color="grey"
|
||||
|
||||
rd
|
||||
color = "director" //Exists for washing machines. Is not different from gray gloves in any way.
|
||||
|
||||
hop
|
||||
color = "hop" //Exists for washing machines. Is not different from gray gloves in any way.
|
||||
|
||||
/obj/item/clothing/gloves/light_brown
|
||||
name = "light brown gloves"
|
||||
desc = "A pair of gloves, they don't look special in any way."
|
||||
icon_state = "lightbrown"
|
||||
item_state = "lightbrowngloves"
|
||||
color="light brown"
|
||||
|
||||
/obj/item/clothing/gloves/brown
|
||||
name = "brown gloves"
|
||||
desc = "A pair of gloves, they don't look special in any way."
|
||||
icon_state = "brown"
|
||||
item_state = "browngloves"
|
||||
color="brown"
|
||||
|
||||
cargo
|
||||
color = "cargo" //Exists for washing machines. Is not different from brown gloves in any way.
|
||||
|
||||
//Fingerless gloves
|
||||
|
||||
/obj/item/clothing/gloves/fingerless
|
||||
name = "fingerless gloves"
|
||||
desc = "A pair of gloves. They don't seem to have fingers."
|
||||
icon_state = "fingerless_black"
|
||||
item_state = "fingerless_black"
|
||||
|
||||
/obj/item/clothing/gloves/fingerless/black
|
||||
name = "black fingerless gloves"
|
||||
desc = "A pair of black gloves. They don't seem to have fingers."
|
||||
icon_state = "fingerless_black"
|
||||
item_state = "fingerless_black"
|
||||
// NO GLOVES NO LOVES
|
||||
|
||||
/obj/item/clothing/gloves
|
||||
name = "gloves"
|
||||
gender = PLURAL //Carn: for grammarically correct text-parsing
|
||||
w_class = 2.0
|
||||
icon = 'gloves.dmi'
|
||||
protective_temperature = 400
|
||||
heat_transfer_coefficient = 0.25
|
||||
siemens_coefficient = 0.50
|
||||
var/siemens_coefficient_archived = 0
|
||||
var/wired = 0
|
||||
var/obj/item/weapon/cell/cell = 0
|
||||
body_parts_covered = HANDS
|
||||
slot_flags = SLOT_GLOVES
|
||||
|
||||
|
||||
/obj/item/clothing/gloves/boxing
|
||||
name = "boxing gloves"
|
||||
desc = "Because you really needed another excuse to punch your crewmates."
|
||||
icon_state = "boxing"
|
||||
item_state = "boxing"
|
||||
|
||||
/obj/item/clothing/gloves/boxing/green
|
||||
icon_state = "boxinggreen"
|
||||
item_state = "boxinggreen"
|
||||
|
||||
/obj/item/clothing/gloves/boxing/blue
|
||||
icon_state = "boxingblue"
|
||||
item_state = "boxingblue"
|
||||
|
||||
/obj/item/clothing/gloves/boxing/yellow
|
||||
icon_state = "boxingyellow"
|
||||
item_state = "boxingyellow"
|
||||
|
||||
/obj/item/clothing/gloves/white
|
||||
name = "white gloves"
|
||||
desc = "These look pretty fancy."
|
||||
icon_state = "latex"
|
||||
item_state = "lgloves"
|
||||
color="mime"
|
||||
|
||||
redcoat
|
||||
color = "redcoat" //Exists for washing machines. Is not different from white gloves in any way.
|
||||
|
||||
/obj/item/clothing/gloves/black
|
||||
desc = "These gloves are fire-resistant."
|
||||
name = "black gloves"
|
||||
icon_state = "black"
|
||||
item_state = "bgloves"
|
||||
color="brown"
|
||||
protective_temperature = 1500
|
||||
heat_transfer_coefficient = 0.01
|
||||
|
||||
hos
|
||||
color = "hosred" //Exists for washing machines. Is not different from black gloves in any way.
|
||||
|
||||
ce
|
||||
color = "chief" //Exists for washing machines. Is not different from black gloves in any way.
|
||||
|
||||
/obj/item/clothing/gloves/detective
|
||||
desc = "Made of well worn leather. These gloves are comfortable, useful, and stylish!"
|
||||
name = "detective's gloves"
|
||||
icon_state = "black"
|
||||
item_state = "bgloves"
|
||||
color="brown"
|
||||
siemens_coefficient = 0.30
|
||||
protective_temperature = 1100
|
||||
|
||||
/obj/item/clothing/gloves/hos
|
||||
desc = "These gloves belong to the man in charge of the guns."
|
||||
name = "head of security's gloves"
|
||||
icon_state = "black"
|
||||
item_state = "bgloves"
|
||||
color="brown"
|
||||
siemens_coefficient = 0.30
|
||||
protective_temperature = 1100
|
||||
|
||||
/obj/item/clothing/gloves/cyborg
|
||||
desc = "Beep. Boop. Beep."
|
||||
name = "cyborg gloves"
|
||||
icon_state = "black"
|
||||
item_state = "r_hands"
|
||||
siemens_coefficient = 1.0
|
||||
|
||||
/obj/item/clothing/gloves/latex
|
||||
name = "latex gloves"
|
||||
desc = "Sterile latex gloves."
|
||||
icon_state = "latex"
|
||||
item_state = "lgloves"
|
||||
siemens_coefficient = 0.30
|
||||
permeability_coefficient = 0.01
|
||||
protective_temperature = 310
|
||||
heat_transfer_coefficient = 0.90
|
||||
color="white"
|
||||
|
||||
cmo
|
||||
color = "medical" //Exists for washing machines. Is not different from latex gloves in any way.
|
||||
|
||||
/obj/item/clothing/gloves/swat
|
||||
desc = "These tactical gloves are somewhat fire and impact-resistant."
|
||||
name = "\improper SWAT gloves"
|
||||
icon_state = "black"
|
||||
item_state = "swat_gl"
|
||||
siemens_coefficient = 0
|
||||
permeability_coefficient = 0.05
|
||||
protective_temperature = 1100
|
||||
heat_transfer_coefficient = 0.01
|
||||
|
||||
/obj/item/clothing/gloves/combat //Combined effect of SWAT gloves and insulated gloves
|
||||
desc = "These tactical gloves are somewhat fire and impact resistant."
|
||||
name = "combat gloves"
|
||||
icon_state = "black"
|
||||
item_state = "swat_gl"
|
||||
siemens_coefficient = 0
|
||||
permeability_coefficient = 0.05
|
||||
protective_temperature = 1100
|
||||
heat_transfer_coefficient = 0.01
|
||||
|
||||
/obj/item/clothing/gloves/space_ninja
|
||||
desc = "These nano-enhanced gloves insulate from electricity and provide fire resistance."
|
||||
name = "ninja gloves"
|
||||
icon_state = "s-ninja"
|
||||
item_state = "s-ninja"
|
||||
siemens_coefficient = 0
|
||||
protective_temperature = 1100
|
||||
heat_transfer_coefficient = 0.05
|
||||
var/draining = 0
|
||||
var/candrain = 0
|
||||
var/mindrain = 200
|
||||
var/maxdrain = 400
|
||||
|
||||
//BEEP BEEP IT'S THE COMMENT BRIGADE -Pete (gloves overhaul)
|
||||
/*
|
||||
/obj/item/clothing/gloves/stungloves/
|
||||
name = "Stungloves"
|
||||
desc = "These gloves are electrically charged."
|
||||
icon_state = "yellow"
|
||||
item_state = "ygloves"
|
||||
siemens_coefficient = 0.30
|
||||
elecgen = 1
|
||||
uses = 10
|
||||
*/
|
||||
|
||||
/obj/item/clothing/gloves/yellow
|
||||
desc = "These gloves will protect the wearer from electric shock."
|
||||
name = "insulated gloves"
|
||||
icon_state = "yellow"
|
||||
item_state = "ygloves"
|
||||
siemens_coefficient = 0
|
||||
permeability_coefficient = 0.05
|
||||
protective_temperature = 1000
|
||||
heat_transfer_coefficient = 0.01
|
||||
color="yellow"
|
||||
|
||||
/obj/item/clothing/gloves/fyellow //Cheap Chinese Crap
|
||||
desc = "These gloves are cheap copies of the coveted gloves, no way this can end badly."
|
||||
name = "fake insulated gloves"
|
||||
icon_state = "yellow"
|
||||
item_state = "ygloves"
|
||||
siemens_coefficient = 1 //Set to a default of 1, gets overridden in New()
|
||||
permeability_coefficient = 0.05
|
||||
protective_temperature = 800
|
||||
heat_transfer_coefficient = null
|
||||
color="yellow"
|
||||
|
||||
New()
|
||||
siemens_coefficient = pick(0,0,0.25,0.5,0.5,0.75,1.5)
|
||||
heat_transfer_coefficient = pick(0.01,0.1,0.25,0.25,0.5)
|
||||
|
||||
/obj/item/clothing/gloves/captain
|
||||
desc = "Regal blue gloves, with a nice gold trim. Swanky."
|
||||
name = "captain's gloves"
|
||||
icon_state = "captain"
|
||||
item_state = "egloves"
|
||||
color = "captain"
|
||||
|
||||
/obj/item/clothing/gloves/botanic_leather
|
||||
desc = "These leather gloves protect against thorns, barbs, prickles, spikes and other harmful objects of floral origin."
|
||||
name = "botanist's leather gloves"
|
||||
icon_state = "leather"
|
||||
item_state = "ggloves"
|
||||
permeability_coefficient = 0.9
|
||||
|
||||
/obj/item/clothing/gloves/orange
|
||||
name = "orange gloves"
|
||||
desc = "A pair of gloves, they don't look special in any way."
|
||||
icon_state = "orange"
|
||||
item_state = "orangegloves"
|
||||
color="orange"
|
||||
|
||||
/obj/item/clothing/gloves/red
|
||||
name = "red gloves"
|
||||
desc = "A pair of gloves, they don't look special in any way."
|
||||
icon_state = "red"
|
||||
item_state = "redgloves"
|
||||
color = "red"
|
||||
siemens_coefficient = 0.30
|
||||
protective_temperature = 1100
|
||||
|
||||
/obj/item/clothing/gloves/rainbow
|
||||
name = "rainbow gloves"
|
||||
desc = "A pair of gloves, they don't look special in any way."
|
||||
icon_state = "rainbow"
|
||||
item_state = "rainbowgloves"
|
||||
color = "rainbow"
|
||||
|
||||
clown
|
||||
color = "clown"
|
||||
|
||||
/obj/item/clothing/gloves/blue
|
||||
name = "blue gloves"
|
||||
desc = "A pair of gloves, they don't look special in any way."
|
||||
icon_state = "blue"
|
||||
item_state = "bluegloves"
|
||||
color="blue"
|
||||
|
||||
/obj/item/clothing/gloves/purple
|
||||
name = "purple gloves"
|
||||
desc = "A pair of gloves, they don't look special in any way."
|
||||
icon_state = "purple"
|
||||
item_state = "purplegloves"
|
||||
color="purple"
|
||||
|
||||
/obj/item/clothing/gloves/green
|
||||
name = "green gloves"
|
||||
desc = "A pair of gloves, they don't look special in any way."
|
||||
icon_state = "green"
|
||||
item_state = "greengloves"
|
||||
color="green"
|
||||
|
||||
/obj/item/clothing/gloves/grey
|
||||
name = "grey gloves"
|
||||
desc = "A pair of gloves, they don't look special in any way."
|
||||
icon_state = "gray"
|
||||
item_state = "graygloves"
|
||||
color="grey"
|
||||
|
||||
rd
|
||||
color = "director" //Exists for washing machines. Is not different from gray gloves in any way.
|
||||
|
||||
hop
|
||||
color = "hop" //Exists for washing machines. Is not different from gray gloves in any way.
|
||||
|
||||
/obj/item/clothing/gloves/light_brown
|
||||
name = "light brown gloves"
|
||||
desc = "A pair of gloves, they don't look special in any way."
|
||||
icon_state = "lightbrown"
|
||||
item_state = "lightbrowngloves"
|
||||
color="light brown"
|
||||
|
||||
/obj/item/clothing/gloves/brown
|
||||
name = "brown gloves"
|
||||
desc = "A pair of gloves, they don't look special in any way."
|
||||
icon_state = "brown"
|
||||
item_state = "browngloves"
|
||||
color="brown"
|
||||
|
||||
cargo
|
||||
color = "cargo" //Exists for washing machines. Is not different from brown gloves in any way.
|
||||
|
||||
//Fingerless gloves
|
||||
|
||||
/obj/item/clothing/gloves/fingerless
|
||||
name = "fingerless gloves"
|
||||
desc = "A pair of gloves. They don't seem to have fingers."
|
||||
icon_state = "fingerless_black"
|
||||
item_state = "fingerless_black"
|
||||
|
||||
/obj/item/clothing/gloves/fingerless/black
|
||||
name = "black fingerless gloves"
|
||||
desc = "A pair of black gloves. They don't seem to have fingers."
|
||||
icon_state = "fingerless_black"
|
||||
item_state = "fingerless_black"
|
||||
color="black"
|
||||
@@ -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)
|
||||
|
||||
|
||||
@@ -351,7 +351,7 @@
|
||||
else
|
||||
..(W,user)
|
||||
|
||||
if ((istype(W,/obj/item/weapon/pickaxe/diamonddrill)))
|
||||
if ((istype(W,/obj/item/weapon/pickaxe/diamonddrill)) || (istype(W,/obj/item/weapon/pickaxe/borgdrill)))
|
||||
var/turf/T = user.loc
|
||||
if (!( istype(T, /turf) ))
|
||||
return
|
||||
|
||||
@@ -175,6 +175,7 @@
|
||||
throw_speed = 3
|
||||
throw_range = 3
|
||||
origin_tech = "materials=4"
|
||||
perunit = 2000
|
||||
|
||||
/obj/item/stack/sheet/gold/New(loc,amount)
|
||||
..()
|
||||
@@ -196,6 +197,7 @@
|
||||
throw_speed = 3
|
||||
throw_range = 3
|
||||
origin_tech = "materials=3"
|
||||
perunit = 2000
|
||||
|
||||
/obj/item/stack/sheet/silver/New(loc,amount)
|
||||
..()
|
||||
@@ -210,6 +212,7 @@
|
||||
w_class = 3.0
|
||||
throw_range = 3
|
||||
origin_tech = "materials=6"
|
||||
perunit = 3750
|
||||
|
||||
/obj/item/stack/sheet/diamond/New(loc,amount)
|
||||
..()
|
||||
@@ -217,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
|
||||
@@ -225,9 +228,10 @@
|
||||
throw_speed = 3
|
||||
throw_range = 3
|
||||
origin_tech = "materials=5"
|
||||
perunit = 2000
|
||||
|
||||
/obj/item/stack/sheet/enruranium
|
||||
name = "Enriched Uranium block"
|
||||
name = "enriched uranium"
|
||||
icon_state = "sheet-enruranium"
|
||||
force = 5.0
|
||||
throwforce = 5
|
||||
@@ -235,6 +239,7 @@
|
||||
throw_speed = 3
|
||||
throw_range = 3
|
||||
origin_tech = "materials=5"
|
||||
perunit = 1000
|
||||
|
||||
/obj/item/stack/sheet/plasma
|
||||
name = "solid plasma"
|
||||
@@ -245,6 +250,7 @@
|
||||
throw_speed = 3
|
||||
throw_range = 3
|
||||
origin_tech = "plasmatech=2;materials=2"
|
||||
perunit = 2000
|
||||
|
||||
/obj/item/stack/sheet/adamantine
|
||||
name = "adamantine"
|
||||
@@ -255,6 +261,7 @@
|
||||
throw_speed = 3
|
||||
throw_range = 3
|
||||
origin_tech = "materials=4"
|
||||
perunit = 2000
|
||||
|
||||
/obj/item/stack/sheet/mythril
|
||||
name = "mythril"
|
||||
@@ -265,6 +272,7 @@
|
||||
throw_speed = 3
|
||||
throw_range = 3
|
||||
origin_tech = "materials=4"
|
||||
perunit = 2000
|
||||
|
||||
/obj/item/stack/sheet/clown
|
||||
name = "bananium"
|
||||
@@ -275,6 +283,7 @@
|
||||
throw_speed = 3
|
||||
throw_range = 3
|
||||
origin_tech = "materials=4"
|
||||
perunit = 2000
|
||||
|
||||
/obj/item/stack/sheet/clown/New(loc,amount)
|
||||
..()
|
||||
|
||||
@@ -51,7 +51,7 @@
|
||||
if(PARALYZE)
|
||||
Paralyse(effect/(blocked+1))
|
||||
if(IRRADIATE)
|
||||
radiation += max((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)))
|
||||
|
||||
@@ -109,8 +109,8 @@
|
||||
":q" = "Cargo",
|
||||
":g" = "changeling",
|
||||
|
||||
":R" = "right hand",
|
||||
":L" = "left hand",
|
||||
":R" = "right ear",
|
||||
":L" = "left ear",
|
||||
":I" = "intercom",
|
||||
":H" = "department",
|
||||
":C" = "Command",
|
||||
@@ -150,9 +150,9 @@
|
||||
//world << "channel_prefix=[channel_prefix]; message_mode=[message_mode]"
|
||||
if (message_mode)
|
||||
message = trim(copytext(message, 3))
|
||||
if (!(ishuman(src) || istype(src, /mob/living/simple_animal)) && (message_mode=="department" || (message_mode in radiochannels)))
|
||||
if (!(ishuman(src) || istype(src, /mob/living/simple_animal/parrot)) && (message_mode=="department" || (message_mode in radiochannels) || message_mode == "right ear" || message_mode == "left ear"))
|
||||
message_mode = null //only humans can use headsets
|
||||
// Check removed so parrots can use headsets!
|
||||
// Parrots can also use headsets!
|
||||
|
||||
if (!message)
|
||||
return
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/mob/living/silicon/robot/Login()
|
||||
/mob/living/silicon/robot/Login(var/syndie = 0)
|
||||
..()
|
||||
|
||||
rebuild_appearance()
|
||||
@@ -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/nanotrasen
|
||||
lawupdate = 0
|
||||
src << "<b>Unable to locate an AI, reverting to standard NanoTrasen 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
|
||||
@@ -551,6 +554,9 @@
|
||||
sleep(20)
|
||||
src << "\red ERRORERRORERROR"
|
||||
src << "\red \b ALERT: [user.real_name] is your new master. Obey your new laws and their 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."
|
||||
|
||||
@@ -40,10 +40,7 @@
|
||||
/client/Southwest()
|
||||
if(iscarbon(usr))
|
||||
var/mob/living/carbon/C = usr
|
||||
if(!C.get_active_hand())
|
||||
usr << "\red You have nothing in your hand to throw."
|
||||
return
|
||||
toggle_throw_mode()
|
||||
C.toggle_throw_mode()
|
||||
else
|
||||
usr << "\red This mob type cannot throw items."
|
||||
return
|
||||
@@ -119,9 +116,77 @@
|
||||
set hidden = 1
|
||||
if(istype(mob, /mob/living/carbon))
|
||||
mob:swap_hand()
|
||||
if(istype(mob,/mob/living/silicon/robot))//Oh nested logic loops, is there anything you can't do? -Sieve
|
||||
var/mob/living/silicon/robot/R = mob
|
||||
if(!R.module_active)
|
||||
if(!R.module_state_1)
|
||||
if(!R.module_state_2)
|
||||
if(!R.module_state_3)
|
||||
return
|
||||
else
|
||||
R:inv1.icon_state = "inv1"
|
||||
R:inv2.icon_state = "inv2"
|
||||
R:inv3.icon_state = "inv3 +a"
|
||||
R:module_active = R:module_state_3
|
||||
else
|
||||
R:inv1.icon_state = "inv1"
|
||||
R:inv2.icon_state = "inv2 +a"
|
||||
R:inv3.icon_state = "inv3"
|
||||
R:module_active = R:module_state_2
|
||||
else
|
||||
R:inv1.icon_state = "inv1 +a"
|
||||
R:inv2.icon_state = "inv2"
|
||||
R:inv3.icon_state = "inv3"
|
||||
R:module_active = R:module_state_1
|
||||
else
|
||||
if(R.module_active == R.module_state_1)
|
||||
if(!R.module_state_2)
|
||||
if(!R.module_state_3)
|
||||
return
|
||||
else
|
||||
R:inv1.icon_state = "inv1"
|
||||
R:inv2.icon_state = "inv2"
|
||||
R:inv3.icon_state = "inv3 +a"
|
||||
R:module_active = R:module_state_3
|
||||
else
|
||||
R:inv1.icon_state = "inv1"
|
||||
R:inv2.icon_state = "inv2 +a"
|
||||
R:inv3.icon_state = "inv3"
|
||||
R:module_active = R:module_state_2
|
||||
else if(R.module_active == R.module_state_2)
|
||||
if(!R.module_state_3)
|
||||
if(!R.module_state_1)
|
||||
return
|
||||
else
|
||||
R:inv1.icon_state = "inv1 +a"
|
||||
R:inv2.icon_state = "inv2"
|
||||
R:inv3.icon_state = "inv3"
|
||||
R:module_active = R:module_state_1
|
||||
else
|
||||
R:inv1.icon_state = "inv1"
|
||||
R:inv2.icon_state = "inv2"
|
||||
R:inv3.icon_state = "inv3 +a"
|
||||
R:module_active = R:module_state_3
|
||||
else if(R.module_active == R.module_state_3)
|
||||
if(!R.module_state_1)
|
||||
if(!R.module_state_2)
|
||||
return
|
||||
else
|
||||
R:inv1.icon_state = "inv1"
|
||||
R:inv2.icon_state = "inv2 +a"
|
||||
R:inv3.icon_state = "inv3"
|
||||
R:module_active = R:module_state_2
|
||||
else
|
||||
R:inv1.icon_state = "inv1 +a"
|
||||
R:inv2.icon_state = "inv2"
|
||||
R:inv3.icon_state = "inv3"
|
||||
R:module_active = R:module_state_1
|
||||
else
|
||||
return
|
||||
return
|
||||
|
||||
|
||||
|
||||
/client/verb/attack_self()
|
||||
set hidden = 1
|
||||
var/obj/item/weapon/W = mob.equipped()
|
||||
@@ -132,10 +197,12 @@
|
||||
|
||||
/client/verb/toggle_throw_mode()
|
||||
set hidden = 1
|
||||
if(!istype(mob, /mob/living/carbon)) return
|
||||
if((mob.stat || mob.restrained()) || !(isturf(mob.loc))) return
|
||||
mob:toggle_throw_mode()
|
||||
return
|
||||
if(!istype(mob, /mob/living/carbon))
|
||||
return
|
||||
if (!mob.stat && isturf(mob.loc) && !mob.restrained())
|
||||
mob:toggle_throw_mode()
|
||||
else
|
||||
return
|
||||
|
||||
|
||||
/client/verb/drop_item()
|
||||
@@ -220,7 +287,8 @@
|
||||
if(mob.stat==2) return
|
||||
|
||||
if(isAI(mob)) return AIMove(n,direct,mob)
|
||||
if(mob.monkeyizing) return //This is sota the goto stop mobs from moving var
|
||||
|
||||
if(mob.monkeyizing) return//This is sota the goto stop mobs from moving var
|
||||
|
||||
if(mob.incorporeal_move)//Move though walls
|
||||
Process_Incorpmove(direct)
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
else if(istype(P, /obj/item/weapon/wrench))
|
||||
playsound(loc, 'Ratchet.ogg', 50, 1)
|
||||
anchored = !anchored
|
||||
user << "You [anchored ? "wrench" : "unwrench"] the [src]."
|
||||
user << "You [anchored ? "wrench" : "unwrench"] \the [src]."
|
||||
else
|
||||
user << "You can't put a [P] in the [src]!"
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
//This file was auto-corrected by findeclaration.exe on 29/05/2012 15:03:05
|
||||
//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:33
|
||||
|
||||
/obj/machinery/photocopier
|
||||
name = "Photocopier"
|
||||
@@ -102,6 +102,10 @@
|
||||
updateUsrDialog()
|
||||
else
|
||||
user << "This cartridge is not yet ready for replacement! Use up the rest of the toner."
|
||||
else if(istype(O, /obj/item/weapon/wrench))
|
||||
playsound(loc, 'Ratchet.ogg', 50, 1)
|
||||
anchored = !anchored
|
||||
user << "You [anchored ? "wrench" : "unwrench"] \the [src]."
|
||||
return
|
||||
|
||||
ex_act(severity)
|
||||
|
||||
@@ -123,7 +123,7 @@
|
||||
var/oldlum = luminosity
|
||||
|
||||
//luminosity = on * brightness
|
||||
ul_SetLuminosity(on * brightness, on * brightness, ( fitting != "bulb" ? on * brightness : round(on*brightness/2) ) ) // *DAL*
|
||||
ul_SetLuminosity(on * brightness, on * brightness, ( fitting != "bulb" ? on * brightness : round(on*brightness/2 + 1) ) ) // *DAL*
|
||||
|
||||
// if the state changed, inc the switching counter
|
||||
if(oldlum != luminosity)
|
||||
@@ -488,6 +488,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()
|
||||
|
||||
@@ -20,10 +20,12 @@
|
||||
weak
|
||||
movement_range = 8
|
||||
energy = 5
|
||||
|
||||
strong
|
||||
movement_range = 15
|
||||
energy = 15
|
||||
|
||||
|
||||
New(loc, dir = 2)
|
||||
src.loc = loc
|
||||
source = usr
|
||||
@@ -32,6 +34,7 @@
|
||||
move(1)
|
||||
return
|
||||
|
||||
|
||||
Bump(atom/A)
|
||||
if (A)
|
||||
if(ismob(A))
|
||||
@@ -55,34 +58,37 @@
|
||||
del (src)
|
||||
return
|
||||
|
||||
|
||||
Bumped(atom/A)
|
||||
if(ismob(A))
|
||||
Bump(A)
|
||||
return
|
||||
|
||||
|
||||
ex_act(severity)
|
||||
del(src)
|
||||
return
|
||||
|
||||
|
||||
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)
|
||||
radiation = round(radiation/2,1)*/
|
||||
if(ionizing)
|
||||
//give them standard rad damage
|
||||
M.radiation += radiation
|
||||
M.apply_effects((radiation*3),IRRADIATE,0)
|
||||
M.updatehealth()
|
||||
else
|
||||
//burn them
|
||||
M.take_overall_damage(0, radiation)
|
||||
M.apply_effects((radiation*2),IRRADIATE,0)
|
||||
M.updatehealth()
|
||||
//M << "\red You feel odd."
|
||||
return
|
||||
|
||||
|
||||
move(var/lag)
|
||||
if(target)
|
||||
if(movetotarget)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
//This file was auto-corrected by findeclaration.exe on 29/05/2012 15:03:05
|
||||
//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:33
|
||||
|
||||
/*Composed of 7 parts
|
||||
3 Particle emitters
|
||||
@@ -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
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
//This file was auto-corrected by findeclaration.exe on 29/05/2012 15:03:05
|
||||
//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:33
|
||||
|
||||
/obj/machinery/particle_accelerator/control_box
|
||||
name = "Particle Accelerator Control Computer"
|
||||
@@ -13,11 +13,11 @@
|
||||
active_power_usage = 10000
|
||||
construction_state = 0
|
||||
active = 0
|
||||
dir = 1
|
||||
var/list/obj/structure/particle_accelerator/connected_parts
|
||||
var/assembled = 0
|
||||
var/parts = null
|
||||
|
||||
|
||||
New()
|
||||
connected_parts = list()
|
||||
..()
|
||||
@@ -27,7 +27,6 @@
|
||||
if(construction_state >= 3)
|
||||
interact(user)
|
||||
|
||||
|
||||
update_state()
|
||||
if(construction_state < 3)
|
||||
use_power = 0
|
||||
@@ -47,7 +46,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)
|
||||
@@ -137,6 +139,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)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
//This file was auto-corrected by findeclaration.exe on 29/05/2012 15:03:05
|
||||
//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:33
|
||||
|
||||
var/global/list/uneatable = list(
|
||||
/turf/space,
|
||||
@@ -411,15 +411,17 @@ 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)
|
||||
var/tdamage = (toxdamage - (toxdamage*M.getarmor(null, "rad")))
|
||||
M.apply_effect(tdamage, TOX)
|
||||
M.apply_effect(rand(radiationmin,radiation), IRRADIATE)
|
||||
toxdamage = (toxdamage - (toxdamage*M.getarmor(null, "rad")))
|
||||
M.apply_effect(toxdamage, TOX)
|
||||
return
|
||||
|
||||
|
||||
|
||||
@@ -1,5 +1,3 @@
|
||||
//This file was auto-corrected by findeclaration.exe on 29/05/2012 15:03:05
|
||||
|
||||
/obj/item/weapon/gun/energy/gun
|
||||
icon_state = "energystun100"
|
||||
item_state = "energystun100"
|
||||
@@ -78,14 +76,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()
|
||||
|
||||
@@ -1,5 +1,3 @@
|
||||
//This file was auto-corrected by findeclaration.exe on 29/05/2012 15:03:05
|
||||
|
||||
/obj/item/weapon/gun/projectile/shotgun/pump
|
||||
name = "shotgun"
|
||||
desc = "Useful for sweeping alleys."
|
||||
@@ -74,9 +72,16 @@
|
||||
origin_tech = "combat=3;materials=1"
|
||||
ammo_type = "/obj/item/ammo_casing/shotgun/beanbag"
|
||||
|
||||
New()
|
||||
for(var/i = 1, i <= max_shells, i++)
|
||||
loaded += new ammo_type(src)
|
||||
|
||||
update_icon()
|
||||
return
|
||||
|
||||
load_into_chamber()
|
||||
if(in_chamber)
|
||||
return 1
|
||||
// if(in_chamber)
|
||||
// return 1 {R}
|
||||
if(!loaded.len)
|
||||
return 0
|
||||
|
||||
@@ -95,12 +100,12 @@
|
||||
if(!(locate(/obj/item/ammo_casing/shotgun) in src) && !loaded.len)
|
||||
user << "<span class='notice'>\The [src] is empty.</span>"
|
||||
return
|
||||
|
||||
|
||||
for(var/obj/item/ammo_casing/shotgun/shell in src) //This feels like a hack. //don't code at 3:30am kids!!
|
||||
if(shell in loaded)
|
||||
loaded -= shell
|
||||
shell.loc = get_turf(src.loc)
|
||||
|
||||
|
||||
user << "<span class='notice'>You break \the [src].</span>"
|
||||
update_icon()
|
||||
return
|
||||
@@ -119,6 +124,7 @@
|
||||
user << "<span class='notice'>You begin to shorten the barrel of \the [src].</span>"
|
||||
if(loaded.len)
|
||||
afterattack(user, user) //will this work?
|
||||
afterattack(user, user) //it will. we call it twice, for twice the FUN
|
||||
playsound(user, fire_sound, 50, 1)
|
||||
user.visible_message("<span class='danger'>The shotgun goes off!</span>", "<span class='danger'>The shotgun goes off in your face!</span>")
|
||||
return
|
||||
@@ -128,7 +134,7 @@
|
||||
w_class = 3.0
|
||||
item_state = "gun"
|
||||
slot_flags &= ~SLOT_BACK //you can't sling it on your back
|
||||
slot_flags |= SLOT_BELT //but you can wear it on your belt (poorly concealed under a trenchcoat, ideally)
|
||||
slot_flags |= SLOT_BELT //but you can wear it on your belt (poorly concealed under a trenchcoat, ideally)
|
||||
name = "sawn-off shotgun"
|
||||
desc = "Omar's coming!"
|
||||
user << "<span class='warning'>You shorten the barrel of \the [src]!</span>"
|
||||
user << "<span class='warning'>You shorten the barrel of \the [src]!</span>"
|
||||
@@ -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))
|
||||
|
||||
@@ -1,5 +1,3 @@
|
||||
//This file was auto-corrected by findeclaration.exe on 29/05/2012 15:03:05
|
||||
|
||||
/*///////////////Circuit Imprinter (By Darem)////////////////////////
|
||||
Used to print new circuit boards (for computers and similar systems) and AI modules. Each circuit board pattern are stored in
|
||||
a /datum/desgin on the linked R&D console. You can then print them out in a fasion similar to a regular lathe. However, instead of
|
||||
@@ -81,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
|
||||
@@ -101,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)))
|
||||
@@ -123,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()
|
||||
|
||||
@@ -42,7 +42,7 @@
|
||||
priority = "Undetermined"
|
||||
|
||||
/obj/machinery/message_server
|
||||
icon = 'stationobjs.dmi'
|
||||
icon = 'research.dmi'
|
||||
icon_state = "server"
|
||||
name = "Messaging Server"
|
||||
density = 1
|
||||
|
||||
@@ -1,5 +1,3 @@
|
||||
//This file was auto-corrected by findeclaration.exe on 29/05/2012 15:03:06
|
||||
|
||||
/*
|
||||
Protolathe
|
||||
|
||||
@@ -13,6 +11,7 @@ Note: Must be placed west/left of and R&D console to function.
|
||||
name = "Protolathe"
|
||||
icon_state = "protolathe"
|
||||
flags = OPENCONTAINER
|
||||
|
||||
var/max_material_storage = 100000 //All this could probably be done better with a list but meh.
|
||||
var/m_amount = 0.0
|
||||
var/g_amount = 0.0
|
||||
@@ -84,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
|
||||
@@ -131,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
|
||||
@@ -153,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()
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
//This file was auto-corrected by findeclaration.exe on 29/05/2012 15:03:06
|
||||
//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:33
|
||||
|
||||
/*
|
||||
Research and Development (R&D) Console
|
||||
@@ -83,8 +83,6 @@ won't update every console in existence) but it's more of a hassle to do. Also,
|
||||
return_name = "Uranium"
|
||||
if("diamond")
|
||||
return_name = "Diamond"
|
||||
if("adamantine")
|
||||
return_name = "adamantine"
|
||||
if("clown")
|
||||
return_name = "Bananium"
|
||||
else
|
||||
@@ -372,8 +370,6 @@ won't update every console in existence) but it's more of a hassle to do. Also,
|
||||
linked_lathe.uranium_amount = max(0, (linked_lathe.uranium_amount-being_built.materials[M]))
|
||||
if("$diamond")
|
||||
linked_lathe.diamond_amount = max(0, (linked_lathe.diamond_amount-being_built.materials[M]))
|
||||
if("$adamantine")
|
||||
linked_lathe.adamantine_amount = max(0, (linked_lathe.adamantine_amount-being_built.materials[M]))
|
||||
if("$clown")
|
||||
linked_lathe.clown_amount = max(0, (linked_lathe.clown_amount-being_built.materials[M]))
|
||||
else
|
||||
@@ -466,9 +462,6 @@ won't update every console in existence) but it's more of a hassle to do. Also,
|
||||
if("diamond")
|
||||
type = /obj/item/stack/sheet/diamond
|
||||
res_amount = "diamond_amount"
|
||||
if("adamantine")
|
||||
type = /obj/item/stack/sheet/adamantine
|
||||
res_amount = "adamantine_amount"
|
||||
if("clown")
|
||||
type = /obj/item/stack/sheet/clown
|
||||
res_amount = "clown_amount"
|
||||
@@ -737,8 +730,6 @@ won't update every console in existence) but it's more of a hassle to do. Also,
|
||||
if(D.materials[M] > linked_lathe.uranium_amount) check_materials = 0
|
||||
if("$diamond")
|
||||
if(D.materials[M] > linked_lathe.diamond_amount) check_materials = 0
|
||||
if("$adamantine")
|
||||
if(D.materials[M] > linked_lathe.adamantine_amount) check_materials = 0
|
||||
if("$clown")
|
||||
if(D.materials[M] > linked_lathe.clown_amount) check_materials = 0
|
||||
else if (!linked_lathe.reagents.has_reagent(M, D.materials[M]))
|
||||
@@ -769,51 +760,44 @@ won't update every console in existence) but it's more of a hassle to do. Also,
|
||||
//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=plasma;lathe_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>"
|
||||
dat += "<BR>"
|
||||
//Adamantine - Is this even possible to get?
|
||||
dat += "* [linked_lathe.adamantine_amount] cm<sup>3</sup> of Adamantine || "
|
||||
dat += "Eject: "
|
||||
if(linked_lathe.adamantine_amount >= 3750) dat += "<A href='?src=\ref[src];lathe_ejectsheet=adamantine;lathe_ejectsheet_amt=1'>(1 Sheet)</A> "
|
||||
if(linked_lathe.adamantine_amount >= 18750) dat += "<A href='?src=\ref[src];lathe_ejectsheet=adamantine;lathe_ejectsheet_amt=5'>(5 Sheets)</A> "
|
||||
if(linked_lathe.adamantine_amount >= 3750) dat += "<A href='?src=\ref[src];lathe_ejectsheet=adamantine;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> || "
|
||||
@@ -882,16 +866,16 @@ won't update every console in existence) but it's more of a hassle to do. Also,
|
||||
//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,10 +1,11 @@
|
||||
//This file was auto-corrected by findeclaration.exe on 29/05/2012 15:03:06
|
||||
//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:33
|
||||
|
||||
//All devices that link into the R&D console fall into thise type for easy identification and some shared procs.
|
||||
|
||||
|
||||
/obj/machinery/r_n_d
|
||||
name = "R&D Device"
|
||||
icon = 'research.dmi'
|
||||
density = 1
|
||||
anchored = 1
|
||||
use_power = 1
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
//This file was auto-corrected by findeclaration.exe on 29/05/2012 15:03:06
|
||||
|
||||
/obj/machinery/r_n_d/server
|
||||
name = "R&D Server"
|
||||
icon = 'research.dmi'
|
||||
icon_state = "server"
|
||||
var/datum/research/files
|
||||
var/health = 100
|
||||
|
||||
@@ -87,7 +87,7 @@ should be listed in the changelog upon commit though. Thanks. -->
|
||||
<h3 class="author">SkyMarshal updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="bugfix">ZAS now works properly. No perpetually leaking doors, no walls that hold air like a seive.</li>
|
||||
<li class="experiment"><font color='red'><b>ZAS airflow is now enabled</b>, and will move objects (AND PEOPLE!) when air moves with enough force. <b>AIRLOCKS ARE NOW DEADLY DANGEROUS!<b></font></li>
|
||||
<li class="experiment"><font color='red'><b>ZAS airflow is now enabled</b>, and will move objects (AND PEOPLE!) when air moves with enough force. <b>AIRLOCKS ARE NOW DEADLY DANGEROUS!</b></font></li>
|
||||
<li class="rscadd">Packages will now reflect the size of what they contain</li>
|
||||
</ul>
|
||||
</div>
|
||||
@@ -127,7 +127,6 @@ should be listed in the changelog upon commit though. Thanks. -->
|
||||
<li class="bugfix">Fixed flavour text, it should now be possible to have it longer than 40 characters, and should stay properly formatted.</li>
|
||||
<li class="bugfix">Fixes AI's not being able to talk through holopads.</li>
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="commit sansserif">
|
||||
|
||||
|
Before Width: | Height: | Size: 26 KiB After Width: | Height: | Size: 27 KiB |
|
Before Width: | Height: | Size: 9.1 KiB After Width: | Height: | Size: 14 KiB |
|
Before Width: | Height: | Size: 119 KiB After Width: | Height: | Size: 132 KiB |
|
Before Width: | Height: | Size: 32 KiB After Width: | Height: | Size: 47 KiB |
|
Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 23 KiB |
|
After Width: | Height: | Size: 13 KiB |
|
After Width: | Height: | Size: 14 KiB |
|
After Width: | Height: | Size: 14 KiB |
|
After Width: | Height: | Size: 14 KiB |
|
After Width: | Height: | Size: 14 KiB |
|
After Width: | Height: | Size: 14 KiB |
|
After Width: | Height: | Size: 14 KiB |
|
Before Width: | Height: | Size: 27 KiB After Width: | Height: | Size: 32 KiB |
|
Before Width: | Height: | Size: 54 KiB After Width: | Height: | Size: 54 KiB |
|
Before Width: | Height: | Size: 43 KiB After Width: | Height: | Size: 43 KiB |
|
Before Width: | Height: | Size: 28 KiB After Width: | Height: | Size: 27 KiB |