Merge pull request #1269 from Erthilo/TGUpdates

TG Updates r3721 to r3745 Redo
This commit is contained in:
SkyMarshal
2012-06-09 17:50:05 -07:00
105 changed files with 2553 additions and 1097 deletions
@@ -252,11 +252,12 @@
return
attackby(obj/item/W, mob/user)
if(istype(W, /obj/item/weapon/weldingtool) && W:welding)
if (W:remove_fuel(0,user))
W:welding = 2
if(istype(W, /obj/item/weapon/weldingtool))
var/obj/item/weapon/weldingtool/WT = W
if (WT.remove_fuel(0,user))
user << "\blue Now welding the vent."
if(do_after(user, 20))
if(!src || !WT.isOn()) return
playsound(src.loc, 'Welder2.ogg', 50, 1)
if(!welded)
user.visible_message("[user] welds the vent shut.", "You weld the vent shut.", "You hear welding.")
@@ -266,7 +267,8 @@
user.visible_message("[user] unwelds the vent.", "You unweld the vent.", "You hear welding.")
welded = 0
update_icon()
W:welding = 1
else
user << "\blue The welding tool needs to be on to start this task."
else
user << "\blue You need more welding fuel to complete this task."
return 1
+19 -19
View File
@@ -6,7 +6,7 @@
log_admin("[key_name(usr)] has left build mode.")
M.client.buildmode = 0
M.client.show_popup_menus = 1
for(var/obj/bmode/buildholder/H)
for(var/obj/effect/bmode/buildholder/H)
if(H.cl == M.client)
del(H)
else
@@ -14,14 +14,14 @@
M.client.buildmode = 1
M.client.show_popup_menus = 0
var/obj/bmode/buildholder/H = new/obj/bmode/buildholder()
var/obj/bmode/builddir/A = new/obj/bmode/builddir(H)
var/obj/effect/bmode/buildholder/H = new/obj/effect/bmode/buildholder()
var/obj/effect/bmode/builddir/A = new/obj/effect/bmode/builddir(H)
A.master = H
var/obj/bmode/buildhelp/B = new/obj/bmode/buildhelp(H)
var/obj/effect/bmode/buildhelp/B = new/obj/effect/bmode/buildhelp(H)
B.master = H
var/obj/bmode/buildmode/C = new/obj/bmode/buildmode(H)
var/obj/effect/bmode/buildmode/C = new/obj/effect/bmode/buildmode(H)
C.master = H
var/obj/bmode/buildquit/D = new/obj/bmode/buildquit(H)
var/obj/effect/bmode/buildquit/D = new/obj/effect/bmode/buildquit(H)
D.master = H
H.builddir = A
@@ -34,15 +34,15 @@
M.client.screen += D
H.cl = M.client
/obj/bmode//Cleaning up the tree a bit
/obj/effect/bmode//Cleaning up the tree a bit
density = 1
anchored = 1
layer = 20
dir = NORTH
icon = 'buildmode.dmi'
var/obj/bmode/buildholder/master = null
var/obj/effect/bmode/buildholder/master = null
/obj/bmode/builddir
/obj/effect/bmode/builddir
icon_state = "build"
screen_loc = "NORTH,WEST"
Click()
@@ -59,7 +59,7 @@
dir = NORTH
return
/obj/bmode/buildhelp
/obj/effect/bmode/buildhelp
icon = 'buildmode.dmi'
icon_state = "buildhelp"
screen_loc = "NORTH,WEST+1"
@@ -97,24 +97,24 @@
usr << "\blue ***********************************************************"
return
/obj/bmode/buildquit
/obj/effect/bmode/buildquit
icon_state = "buildquit"
screen_loc = "NORTH,WEST+3"
Click()
togglebuildmode(master.cl.mob)
/obj/bmode/buildholder
/obj/effect/bmode/buildholder
density = 0
anchored = 1
var/client/cl = null
var/obj/bmode/builddir/builddir = null
var/obj/bmode/buildhelp/buildhelp = null
var/obj/bmode/buildmode/buildmode = null
var/obj/bmode/buildquit/buildquit = null
var/obj/effect/bmode/builddir/builddir = null
var/obj/effect/bmode/buildhelp/buildhelp = null
var/obj/effect/bmode/buildmode/buildmode = null
var/obj/effect/bmode/buildquit/buildquit = null
var/atom/movable/throw_atom = null
/obj/bmode/buildmode
/obj/effect/bmode/buildmode
icon_state = "buildmode1"
screen_loc = "NORTH,WEST+2"
var/varholder = "name"
@@ -173,8 +173,8 @@
/proc/build_click(var/mob/user, buildmode, location, control, params, var/obj/object)
var/obj/bmode/buildholder/holder = null
for(var/obj/bmode/buildholder/H)
var/obj/effect/bmode/buildholder/holder = null
for(var/obj/effect/bmode/buildholder/H)
if(H.cl == user.client)
holder = H
break
+87 -88
View File
@@ -1,18 +1,18 @@
/obj/organstructure //used obj for the "contents" var
/obj/effect/organstructure //used obj for the "contents" var
name = "organs"
var/species = "mob" //for speaking in unknown languages purposes
var/obj/organ/limb/arms/arms = null
var/obj/organ/limb/legs/legs = null
var/obj/organ/torso/torso = null
var/obj/organ/head/head = null
var/obj/effect/organ/limb/arms/arms = null
var/obj/effect/organ/limb/legs/legs = null
var/obj/effect/organ/torso/torso = null
var/obj/effect/organ/head/head = null
proc/GetSpeciesName()
var/list/speciesPresent = list()
for(var/obj/organ/organ in src) //only external organs count, since it's judging by the appearance
for(var/obj/effect/organ/organ in src) //only external organs count, since it's judging by the appearance
if(speciesPresent[organ.species])
speciesPresent[organ.species]++
else
@@ -39,10 +39,10 @@
proc/RecalculateStructure()
var/list/organs = GetAllContents()
arms = locate(/obj/organ/limb/arms) in organs
legs = locate(/obj/organ/limb/legs) in organs
torso = locate(/obj/organ/torso) in organs
head = locate(/obj/organ/head) in organs
arms = locate(/obj/effect/organ/limb/arms) in organs
legs = locate(/obj/effect/organ/limb/legs) in organs
torso = locate(/obj/effect/organ/torso) in organs
head = locate(/obj/effect/organ/head) in organs
GetSpeciesName()
@@ -52,8 +52,7 @@
set background = 1
var/list/organs = GetAllContents()
for(var/name in organs)
var/obj/organ/organ = organs[name]
for(var/obj/effect/organ/organ in organs)
organ.ProcessOrgan()
return
@@ -62,27 +61,27 @@
..()
RecalculateStructure()
/obj/organstructure/human
/obj/effect/organstructure/human
name = "human organs"
New()
new /obj/organ/torso/human(src)
new /obj/effect/organ/torso/human(src)
..()
/obj/organstructure/alien
/obj/effect/organstructure/alien
name = "alien organs"
New()
new /obj/organ/torso/alien(src)
new /obj/effect/organ/torso/alien(src)
..()
/obj/organ
/obj/effect/organ
name = "organ"
//All types
var/organType = 0 //CYBER and SPELL go here
var/species = "mob"
var/obj/organstructure/rootOrganStructure = null
var/obj/effect/organstructure/rootOrganStructure = null
New(location)
..()
@@ -90,129 +89,129 @@
rootOrganStructure = FindRootStructure()
proc/FindRootStructure()
if(istype(loc,/obj/organ))
var/obj/organ/parent = loc
if(istype(loc,/obj/effect/organ))
var/obj/effect/organ/parent = loc
return parent.FindRootStructure()
else if(istype(loc,/obj/organstructure))
else if(istype(loc,/obj/effect/organstructure))
return loc
return null
proc/ProcessOrgan()
return
/obj/organ/torso
/obj/effect/organ/torso
name = "torso"
var/maxHealth = 50 //right now, the mob's (only humans for now) health depends only on it. Will be fixed later
/obj/organ/torso/human
/obj/effect/organ/torso/human
name = "human torso"
species = "human"
maxHealth = 100
New()
..()
new /obj/organ/limb/arms/human(src)
new /obj/organ/limb/legs/human(src)
new /obj/organ/head/human(src)
/obj/organ/torso/alien
new /obj/effect/organ/limb/arms/human(src)
new /obj/effect/organ/limb/legs/human(src)
new /obj/effect/organ/head/human(src)
/obj/effect/organ/torso/alien
name = "alien torso"
species = "alien"
maxHealth = 100
New()
..()
new /obj/organ/limb/arms/alien(src)
new /obj/organ/limb/legs/alien(src)
new /obj/organ/head/alien(src)
new /obj/effect/organ/limb/arms/alien(src)
new /obj/effect/organ/limb/legs/alien(src)
new /obj/effect/organ/head/alien(src)
/obj/organ/limb
/obj/effect/organ/limb
name = "limb"
/obj/organ/limb/arms
/obj/effect/organ/limb/arms
name = "arms"
var/minDamage = 5 //punching damage
var/maxDamage = 5
/obj/organ/limb/arms/alien
/obj/effect/organ/limb/arms/alien
name = "alien arms"
species = "alien"
minDamage = 5
maxDamage = 15
/obj/organ/limb/arms/human
/obj/effect/organ/limb/arms/human
name = "human arms"
species = "human"
minDamage = 1
maxDamage = 9
/obj/organ/limb/legs
/obj/effect/organ/limb/legs
name = "legs"
/obj/organ/limb/legs/human
/obj/effect/organ/limb/legs/human
name = "human legs"
species = "human"
/obj/organ/limb/legs/alien
/obj/effect/organ/limb/legs/alien
name = "alien legs"
species = "alien"
/obj/organ/head
/obj/effect/organ/head
name = "head"
/obj/organ/head/human
/obj/effect/organ/head/human
name = "human head"
species = "human"
/obj/organ/head/alien
/obj/effect/organ/head/alien
name = "alien head"
species = "alien"
/obj/organ/limb/arms/alien
/obj/effect/organ/limb/arms/alien
name = "alien arms"
species = "alien"
minDamage = 5
maxDamage = 15
/obj/organ/limb/legs/alien
/obj/effect/organ/limb/legs/alien
name = "alien legs"
species = "alien"
/obj/organ/head/alien
/obj/effect/organ/head/alien
name = "alien head"
species = "alien"
// ++++STUB ORGAN STRUCTURE. THIS IS THE DEFAULT STRUCTURE. USED TO PREVENT EXCEPTIONS++++
/obj/organstructure/stub
/obj/effect/organstructure/stub
name = "stub organs"
New()
new /obj/organ/torso/stub(src)
new /obj/effect/organ/torso/stub(src)
..()
/obj/organ/torso/stub
/obj/effect/organ/torso/stub
name = "stub torso"
species = "stub"
maxHealth = 100
New()
..()
new /obj/organ/limb/arms/stub(src)
new /obj/organ/limb/legs/stub(src)
new /obj/organ/head/stub(src)
new /obj/effect/organ/limb/arms/stub(src)
new /obj/effect/organ/limb/legs/stub(src)
new /obj/effect/organ/head/stub(src)
/obj/organ/limb/arms/stub
/obj/effect/organ/limb/arms/stub
name = "stub arms"
species = "stub"
/obj/organ/limb/legs/stub
/obj/effect/organ/limb/legs/stub
name = "stub legs"
species = "stub"
/obj/organ/head/stub
/obj/effect/organ/head/stub
name = "stub head"
species = "stub"
@@ -221,129 +220,129 @@
// ++++MONKEY++++
/obj/organstructure/monkey
/obj/effect/organstructure/monkey
name = "monkey organs"
New()
new /obj/organ/torso/monkey(src)
new /obj/effect/organ/torso/monkey(src)
..()
/obj/organ/torso/monkey
/obj/effect/organ/torso/monkey
name = "monkey torso"
species = "monkey"
maxHealth = 100
New()
..()
new /obj/organ/limb/arms/monkey(src)
new /obj/organ/limb/legs/monkey(src)
new /obj/organ/head/monkey(src)
new /obj/effect/organ/limb/arms/monkey(src)
new /obj/effect/organ/limb/legs/monkey(src)
new /obj/effect/organ/head/monkey(src)
/obj/organ/limb/arms/monkey
/obj/effect/organ/limb/arms/monkey
name = "monkey arms"
species = "monkey"
/obj/organ/limb/legs/monkey
/obj/effect/organ/limb/legs/monkey
name = "monkey legs"
species = "monkey"
/obj/organ/head/monkey
/obj/effect/organ/head/monkey
name = "monkey head"
species = "monkey"
// +++++CYBORG+++++
/obj/organstructure/cyborg
/obj/effect/organstructure/cyborg
name = "cyborg organs"
New()
new /obj/organ/torso/cyborg(src)
new /obj/effect/organ/torso/cyborg(src)
..()
/obj/organ/torso/cyborg
/obj/effect/organ/torso/cyborg
name = "cyborg torso"
species = "cyborg"
maxHealth = 100
New()
..()
new /obj/organ/limb/arms/cyborg(src)
new /obj/organ/limb/legs/cyborg(src)
new /obj/organ/head/cyborg(src)
new /obj/effect/organ/limb/arms/cyborg(src)
new /obj/effect/organ/limb/legs/cyborg(src)
new /obj/effect/organ/head/cyborg(src)
/obj/organ/limb/arms/cyborg
/obj/effect/organ/limb/arms/cyborg
name = "cyborg arms"
species = "cyborg"
/obj/organ/limb/legs/cyborg
/obj/effect/organ/limb/legs/cyborg
name = "cyborg legs"
species = "cyborg"
/obj/organ/head/cyborg
/obj/effect/organ/head/cyborg
name = "cyborg head"
species = "cyborg"
// +++++AI++++++
/obj/organstructure/AI
/obj/effect/organstructure/AI
name = "AI organs"
New()
new /obj/organ/torso/AI(src)
new /obj/effect/organ/torso/AI(src)
..()
/obj/organ/torso/AI
/obj/effect/organ/torso/AI
name = "AI torso"
species = "AI"
maxHealth = 100
New()
..()
new /obj/organ/limb/arms/AI(src)
new /obj/organ/limb/legs/AI(src)
new /obj/organ/head/AI(src)
new /obj/effect/organ/limb/arms/AI(src)
new /obj/effect/organ/limb/legs/AI(src)
new /obj/effect/organ/head/AI(src)
/obj/organ/limb/arms/AI
/obj/effect/organ/limb/arms/AI
name = "AI arms"
species = "AI"
/obj/organ/limb/legs/AI
/obj/effect/organ/limb/legs/AI
name = "AI legs"
species = "AI"
/obj/organ/head/AI
/obj/effect/organ/head/AI
name = "AI head"
species = "AI"
/* New organ structure template
/obj/organstructure/template
/obj/effect/organstructure/template
name = "template organs"
New()
new /obj/organ/torso/template(src)
new /obj/effect/organ/torso/template(src)
..()
/obj/organ/torso/template
/obj/effect/organ/torso/template
name = "template torso"
species = "template"
maxHealth = 100
New()
..()
new /obj/organ/limb/arms/template(src)
new /obj/organ/limb/legs/template(src)
new /obj/organ/head/template(src)
new /obj/effect/organ/limb/arms/template(src)
new /obj/effect/organ/limb/legs/template(src)
new /obj/effect/organ/head/template(src)
/obj/organ/limb/arms/template
/obj/effect/organ/limb/arms/template
name = "template arms"
species = "template"
/obj/organ/limb/legs/template
/obj/effect/organ/limb/legs/template
name = "template legs"
species = "template"
/obj/organ/head/template
/obj/effect/organ/head/template
name = "template head"
species = "template"
-37
View File
@@ -626,31 +626,14 @@ var/global/datum/tension/tension_master
//Generates a list of commandos from active ghosts. Then the user picks which characters to respawn as the commandos.
/*
for(var/obj/debug/debugger/B in world)
B.list1 = list()
B.list2 = list()
B.list3 = list()
B.list4 = list()
*/
for(var/mob/dead/observer/G in world)
/*
for(var/obj/debug/debugger/B in world)
B.list1 += G
B.list2 += G.key
*/
spawn(0)
switch(alert(G,"Do you wish to be considered for an elite syndicate strike team being sent in?","Please answer in 30 seconds!","Yes","No"))
if("Yes")
if((world.time-time_passed)>300)//If more than 30 game seconds passed.
return
candidates += G
/*
for(var/obj/debug/debugger/B in world)
B.list3 += G
B.list4 += G.key
*/
if("No")
return
sleep(300)
@@ -660,19 +643,7 @@ var/global/datum/tension/tension_master
candidates.Remove(G)
if(candidates.len)
/*
for(var/obj/debug/debugger/B in world)
B.var1 = candidates.len
B.list5 = candidates.Copy()
for(var/mob/dead/observer/G in candidates)
B.list6 += G.key
*/
var/numagents = 6
/*
for(var/obj/debug/debugger/B in world)
B.var2 = 0
*/
//Spawns commandos and equips them.
for (var/obj/effect/landmark/L in world)
if(numagents<=0)
@@ -685,18 +656,10 @@ var/global/datum/tension/tension_master
while((!theghost || !theghost.client) && candidates.len)
/*
for(var/obj/debug/debugger/B in world)
B.var2++
*/
theghost = pick(candidates)
candidates.Remove(theghost)
if(!theghost)
/*
for(var/obj/debug/debugger/B in world)
B.var4 = 1
*/
del(new_syndicate_commando)
break
+3 -3
View File
@@ -1,6 +1,6 @@
//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
var/global/obj/datacore/data_core = null
var/global/obj/effect/datacore/data_core = null
var/global/obj/effect/overlay/plmaster = null
var/global/obj/effect/overlay/slmaster = null
@@ -80,7 +80,7 @@ var/aliens_allowed = 1
var/ooc_allowed = 1
var/dooc_allowed = 1
var/traitor_scaling = 1
var/goonsay_allowed = 0
//var/goonsay_allowed = 0
var/dna_ident = 1
var/abandon_allowed = 1
var/enter_allowed = 1
+1 -22
View File
@@ -102,7 +102,7 @@
anchored = 1.0
unacidable = 1
/obj/datacore
/obj/effect/datacore
name = "datacore"
var/medical[] = list()
var/general[] = list()
@@ -1526,27 +1526,6 @@
desc = "You can't resist."
// name = ""
/obj/debug/debugger
name = "Quantum Debugger"
desc = "A quantum debugger used by Centcomm Reality Engineers to help monitor transiant variables."
icon = 'stationobjs.dmi'
icon_state = "blackbox"
var/list/list1 = list()
var/list/list2 = list()
var/list/list3 = list()
var/list/list4 = list()
var/list/list5 = list()
var/list/list6 = list()
var/var1 = null
var/var2 = null
var/var3 = null
var/var4 = null
var/var5 = null
/obj/item/rubberduck
name = "rubber duck"
desc = "A rubber duck. Quack."
+2 -1
View File
@@ -332,7 +332,8 @@
attackby(obj/item/weapon/W as obj, mob/user as mob)
if(istype(W,/obj/item/weapon/weldingtool))
if(W:welding)
var/obj/item/weapon/weldingtool/WT = W
if(WT.remove_fuel(0, user))
return TemperatureAct(100)
..()
+1 -1
View File
@@ -97,7 +97,7 @@
radio_controller = new /datum/controller/radio()
//main_hud1 = new /obj/hud()
data_core = new /obj/datacore()
data_core = new /obj/effect/datacore()
paiController = new /datum/paiController()
+2 -1
View File
@@ -38,7 +38,8 @@
else //weapons with subtypes
if(istype(W, /obj/item/weapon/melee/energy/sword)) del src
else if(istype(W, /obj/item/weapon/weldingtool))
if(W:welding) del src
var/obj/item/weapon/weldingtool/WT = W
if(WT.remove_fuel(0, user)) del src
//TODO: add plant-b-gone
..()
+1
View File
@@ -18,6 +18,7 @@
#define ui_back "6:14,1:5"
#define ui_rhand "7:16,1:5"
#define ui_lhand "8:16,1:5"
#define ui_equip "7:16,2:5"
#define ui_swaphand1 "7:16,2:5"
#define ui_swaphand2 "8:16,2:5"
#define ui_storage1 "9:18,1:5"
+5 -1
View File
@@ -18,6 +18,7 @@
H.equip_if_possible(new /obj/item/clothing/shoes/black(H), H.slot_shoes)
H.equip_if_possible(new /obj/item/clothing/suit/armor/vest(H), H.slot_wear_suit)
H.equip_if_possible(new /obj/item/clothing/under/rank/bartender(H), H.slot_w_uniform)
H.equip_if_possible(new /obj/item/device/pda/bar(H), H.slot_belt)
if(H.backbag == 1)
var/obj/item/weapon/storage/box/Barpack = new /obj/item/weapon/storage/box(H)
@@ -54,6 +55,7 @@
H.equip_if_possible(new /obj/item/clothing/suit/storage/chef(H), H.slot_wear_suit)
H.equip_if_possible(new /obj/item/clothing/shoes/black(H), H.slot_shoes)
H.equip_if_possible(new /obj/item/clothing/head/chefhat(H), H.slot_head)
H.equip_if_possible(new /obj/item/device/pda/chef(H), H.slot_belt)
return 1
@@ -124,7 +126,8 @@
H.equip_if_possible(new /obj/item/device/radio/headset/headset_cargo(H), H.slot_ears)
H.equip_if_possible(new /obj/item/clothing/under/rank/cargotech(H), H.slot_w_uniform)
H.equip_if_possible(new /obj/item/clothing/shoes/black(H), H.slot_shoes)
H.equip_if_possible(new /obj/item/device/pda/quartermaster(H), H.slot_belt)
H.equip_if_possible(new /obj/item/device/pda/cargo(H), H.slot_belt)
H.equip_if_possible(new /obj/item/clothing/gloves/fingerless/black(H), H.slot_gloves)
return 1
@@ -149,6 +152,7 @@
H.equip_if_possible(new /obj/item/device/pda/shaftminer(H), H.slot_belt)
H.equip_if_possible(new /obj/item/clothing/under/rank/miner(H), H.slot_w_uniform)
H.equip_if_possible(new /obj/item/clothing/shoes/black(H), H.slot_shoes)
H.equip_if_possible(new /obj/item/clothing/gloves/fingerless/black(H), H.slot_gloves)
if(H.backbag == 1)
H.equip_if_possible(new /obj/item/weapon/storage/box(H), H.slot_r_hand)
H.equip_if_possible(new /obj/item/weapon/crowbar(H), H.slot_l_hand)
+1 -3
View File
@@ -20,8 +20,7 @@
H.equip_if_possible(new /obj/item/clothing/suit/storage/armourrigvest(H), H.slot_wear_suit)
H.equip_if_possible(new /obj/item/clothing/shoes/jackboots(H), H.slot_shoes)
H.equip_if_possible(new /obj/item/device/pda/heads/hos(H), H.slot_belt)
// H.equip_if_possible(new /obj/item/clothing/suit/armor/hos(H), H.slot_wear_suit)
//We're Bay12, not Goon. We don't need armor 24/7
// H.equip_if_possible(new /obj/item/clothing/suit/armor/hos(H), H.slot_wear_suit) //We're Bay12, not Goon. We don't need armor 24/7
H.equip_if_possible(new /obj/item/clothing/gloves/hos(H), H.slot_gloves)
H.equip_if_possible(new /obj/item/clothing/head/helmet/HoS(H), H.slot_head)
H.equip_if_possible(new /obj/item/clothing/glasses/sunglasses/sechud(H), H.slot_glasses)
@@ -87,7 +86,6 @@
/* var/obj/item/clothing/mask/cigarette/CIG = new /obj/item/clothing/mask/cigarette(H)
CIG.light("")
H.equip_if_possible(CIG, H.slot_wear_mask) */
//Fuck that thing. --SkyMarshal
H.equip_if_possible(new /obj/item/clothing/gloves/detective(H), H.slot_gloves)
H.equip_if_possible(new /obj/item/weapon/storage/box/evidence(H.back), H.slot_in_backpack)
H.equip_if_possible(new /obj/item/weapon/fcardholder(H), H.slot_in_backpack)
+3 -2
View File
@@ -813,8 +813,9 @@ Auto Patrol: []"},
src.item_state = "ed209_shell"
src.icon_state = "ed209_shell"
del(W)
else if((istype(W, /obj/item/weapon/weldingtool) && W:welding) && (src.build_step == 3))
if (W:remove_fuel(0,user))
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))
src.build_step++
src.name = "shielded frame assembly"
user << "You welded the vest to [src]!"
+3 -2
View File
@@ -730,8 +730,9 @@ Auto Patrol: []"},
/obj/item/weapon/secbot_assembly/attackby(obj/item/weapon/W as obj, mob/user as mob)
..()
if((istype(W, /obj/item/weapon/weldingtool) && W:welding) && (!src.build_step))
if(W:remove_fuel(0,user))
if((istype(W, /obj/item/weapon/weldingtool)) && (!src.build_step))
var/obj/item/weapon/weldingtool/WT = W
if(WT.remove_fuel(0,user))
src.build_step++
src.overlays += image('aibots.dmi', "hs_hole")
user << "You weld a hole in [src]!"
+6 -2
View File
@@ -20,13 +20,16 @@
anchored = 1
state = 1
if(istype(P, /obj/item/weapon/weldingtool))
var/obj/item/weapon/weldingtool/WT = P
if(!WT.isOn())
user << "The welder must be on for this task."
return
playsound(loc, 'Welder.ogg', 50, 1)
P:welding = 2
if(do_after(user, 20))
if(!src || !WT.remove_fuel(0, user)) return
user << "\blue You deconstruct the frame."
new /obj/item/stack/sheet/plasteel( loc, 4)
del(src)
P:welding = 1
if(1)
if(istype(P, /obj/item/weapon/wrench))
playsound(loc, 'Ratchet.ogg', 50, 1)
@@ -162,6 +165,7 @@
playsound(loc, 'Screwdriver.ogg', 50, 1)
user << "\blue You connect the monitor."
new /mob/living/silicon/ai ( loc, laws, brain )
// feedback_inc("cyborg_ais_created",1)
del(src)
/obj/structure/AIcore/deactivated
@@ -259,13 +259,16 @@
src.anchored = 1
src.state = 1
if(istype(P, /obj/item/weapon/weldingtool))
P:welding = 2
var/obj/item/weapon/weldingtool/WT = P
if(!WT.remove_fuel(0, user))
user << "The welding tool must be on to complete this task."
return
playsound(src.loc, 'Welder.ogg', 50, 1)
if(do_after(user, 20))
if(!src || !WT.isOn()) return
user << "\blue You deconstruct the frame."
new /obj/item/stack/sheet/metal( src.loc, 5 )
del(src)
P:welding = 1
if(1)
if(istype(P, /obj/item/weapon/wrench))
playsound(src.loc, 'Ratchet.ogg', 50, 1)
+3 -3
View File
@@ -134,7 +134,7 @@ Pod/Blast Doors computer
return 1
/obj/datacore/proc/manifest(var/nosleep = 0)
/obj/effect/datacore/proc/manifest(var/nosleep = 0)
spawn()
if(!nosleep)
sleep(40)
@@ -244,7 +244,7 @@ Pod/Blast Doors computer
locked += L
return
/obj/datacore/proc/manifest_modify(var/name, var/assignment)
/obj/effect/datacore/proc/manifest_modify(var/name, var/assignment)
var/datum/data/record/foundrecord
for(var/datum/data/record/t in data_core.general)
@@ -258,7 +258,7 @@ Pod/Blast Doors computer
foundrecord.fields["real_rank"] = assignment
/obj/datacore/proc/manifest_inject(var/mob/living/carbon/human/H)
/obj/effect/datacore/proc/manifest_inject(var/mob/living/carbon/human/H)
if (!isnull(H.mind) && (H.mind.assigned_role != "MODE"))
var/datum/data/record/G = new()
var/datum/data/record/M = new()
+1 -1
View File
@@ -96,7 +96,7 @@
for(var/obj/machinery/power/apc/A in L)
t += copytext(add_tspace(A.area.name, 30), 1, 30)
t += copytext(add_tspace("\The [A.area]", 30), 1, 30)
if(control)
t += " (<A href='?src=\ref[src];apc=\ref[A];breaker=1'>[A.operating? " On" : "Off"]</A>)"
else
@@ -108,6 +108,27 @@
density = 1
anchored = 1.0
/*
//Allow you to push disposal pipes into it (for those with density 1)
/obj/machinery/pipedispenser/disposal/HasEntered(var/obj/structure/disposalconstruct/pipe as obj)
if(istype(pipe) && !pipe.anchored)
del(pipe)
Nah
*/
//Allow you to drag-drop disposal pipes into it
/obj/machinery/pipedispenser/disposal/MouseDrop_T(var/obj/structure/disposalconstruct/pipe as obj, mob/usr as mob)
if(!usr.canmove || usr.stat || usr.restrained())
return
if (!istype(pipe) || get_dist(usr, src) > 1 || get_dist(src,pipe) > 1 )
return
if (pipe.anchored)
return
del(pipe)
/obj/machinery/pipedispenser/disposal/attack_hand(user as mob)
if(..())
+33 -21
View File
@@ -456,6 +456,7 @@ Neutralize All Unidentified Life Signs: []<BR>"},
/obj/machinery/porta_turret/proc/shootAt(var/atom/movable/target) // shoots at a target
if(!emagged) // if it hasn't been emagged, it has to obey a cooldown rate
if(last_fired || !raised) return // prevents rapid-fire shooting, unless it's been emagged
last_fired = 1
@@ -644,13 +645,19 @@ Neutralize All Unidentified Life Signs: []<BR>"},
return
else if(istype(W, /obj/item/weapon/weldingtool))
if (W:remove_fuel(5,user)) // uses up 5 fuel.
playsound(src.loc, pick('Welder.ogg', 'Welder2.ogg'), 50, 1)
if(do_after(user, 20))
build_step = 1
user << "You remove the turret's interior metal armor."
new /obj/item/stack/sheet/metal( loc, 2)
return
var/obj/item/weapon/weldingtool/WT = W
if(!WT.isOn()) return
if (WT.get_fuel() < 5) // uses up 5 fuel.
user << "\red You need more fuel to complete this task."
return
playsound(src.loc, pick('Welder.ogg', 'Welder2.ogg'), 50, 1)
if(do_after(user, 20))
if(!src || !WT.remove_fuel(5, user)) return
build_step = 1
user << "You remove the turret's interior metal armor."
new /obj/item/stack/sheet/metal( loc, 2)
return
if(3)
@@ -706,22 +713,27 @@ Neutralize All Unidentified Life Signs: []<BR>"},
if(7)
if(istype(W, /obj/item/weapon/weldingtool))
if (W:remove_fuel(5,user))
playsound(src.loc, pick('Welder.ogg', 'Welder2.ogg'), 50, 1)
if(do_after(user, 30))
build_step = 8
user << "\blue You weld the turret's armor down."
var/obj/item/weapon/weldingtool/WT = W
if(!WT.isOn()) return
if (WT.get_fuel() < 5)
user << "\red You need more fuel to complete this task."
// The final step: create a full turret
var/obj/machinery/porta_turret/Turret = new/obj/machinery/porta_turret(locate(x,y,z))
Turret.name = finish_name
Turret.installation = src.installation
Turret.gun_charge = src.gun_charge
playsound(src.loc, pick('Welder.ogg', 'Welder2.ogg'), 50, 1)
if(do_after(user, 30))
if(!src || !WT.remove_fuel(5, user)) return
build_step = 8
user << "\blue You weld the turret's armor down."
Turret.cover=new/obj/machinery/porta_turret_cover(src.loc)
Turret.cover.Parent_Turret=Turret
Turret.cover.name = finish_name
del(src)
// The final step: create a full turret
var/obj/machinery/porta_turret/Turret = new/obj/machinery/porta_turret(locate(x,y,z))
Turret.name = finish_name
Turret.installation = src.installation
Turret.gun_charge = src.gun_charge
Turret.cover=new/obj/machinery/porta_turret_cover(src.loc)
Turret.cover.Parent_Turret=Turret
Turret.cover.name = finish_name
del(src)
else if(istype(W, /obj/item/weapon/crowbar))
playsound(src.loc, 'Crowbar.ogg', 75, 1)
+1
View File
@@ -119,6 +119,7 @@
// add to inventory
if(comp)
comp.inventory += B
update_icon()
/obj/structure/bookcase/attackby(obj/O as obj, mob/user as mob)
if(istype(O, /obj/item/weapon/book))
+3 -2
View File
@@ -757,8 +757,9 @@
user << "There's already a powercell installed."
return
else if(istype(W, /obj/item/weapon/weldingtool) && W:welding && user.a_intent != "hurt")
if (W:remove_fuel(0,user))
else if(istype(W, /obj/item/weapon/weldingtool) && user.a_intent != "hurt")
var/obj/item/weapon/weldingtool/WT = W
if (WT.remove_fuel(0,user))
if (hasInternalDamage(MECHA_INT_TANK_BREACH))
clearInternalDamage(MECHA_INT_TANK_BREACH)
user << "\blue You repair the damaged gas tank."
+2 -2
View File
@@ -5,7 +5,7 @@
/datum/construction/mecha/custom_action(step, atom/used_atom, mob/user)
if(istype(used_atom, /obj/item/weapon/weldingtool))
var/obj/item/weapon/weldingtool/W = used_atom
if (W:remove_fuel(0, user))
if (W.remove_fuel(0, user))
playsound(holder, 'Welder2.ogg', 50, 1)
else
return 0
@@ -38,7 +38,7 @@
/datum/construction/reversible/mecha/custom_action(index as num, diff as num, atom/used_atom, mob/user as mob)
if(istype(used_atom, /obj/item/weapon/weldingtool))
var/obj/item/weapon/weldingtool/W = used_atom
if (W:remove_fuel(0, user))
if (W.remove_fuel(0, user))
playsound(holder, 'Welder2.ogg', 50, 1)
else
return 0
+1 -1
View File
@@ -82,7 +82,7 @@
if(istype(W, /obj/item/weapon/weldingtool))
var/obj/item/weapon/weldingtool/WT = W
if(WT.welding)
if(WT.remove_fuel(0, user))
damage = 15
playsound(src.loc, 'Welder.ogg', 100, 1)
+1 -1
View File
@@ -76,7 +76,7 @@ Alien plants should do something if theres a lot of poison
if(istype(W, /obj/item/weapon/weldingtool))
var/obj/item/weapon/weldingtool/WT = W
if(WT.welding)
if(WT.remove_fuel(0, user))
damage = 15
playsound(loc, 'Welder.ogg', 100, 1)
+6 -4
View File
@@ -133,8 +133,9 @@
if(istype(W, /obj/item/weapon/grab))
src.MouseDrop_T(W:affecting, user) //act like they were dragged onto the closet
if(istype(W, /obj/item/weapon/weldingtool) && W:welding )
if(!W:remove_fuel(0,user))
if(istype(W, /obj/item/weapon/weldingtool))
var/obj/item/weapon/weldingtool/WT = W
if(!WT.remove_fuel(0,user))
user << "\blue You need more welding fuel to complete this task."
return
new /obj/item/stack/sheet/metal(src.loc)
@@ -156,8 +157,9 @@
else if(istype(W, /obj/item/weapon/packageWrap))
return
else if(istype(W, /obj/item/weapon/weldingtool) && W:welding )
if(!W:remove_fuel(0,user))
else if(istype(W, /obj/item/weapon/weldingtool))
var/obj/item/weapon/weldingtool/WT = W
if(!WT.remove_fuel(0,user))
user << "\blue You need more welding fuel to complete this task."
return
src.welded =! src.welded
+4 -2
View File
@@ -72,14 +72,14 @@
new /obj/item/device/pda/medical(src)
new /obj/item/weapon/storage/firstaid/regular(src)
new /obj/item/device/flashlight/pen(src)
switch(pick(list("blue", "green", "purple")))
switch(pick("blue", "green", "purple"))
if ("blue")
new /obj/item/clothing/under/rank/medical/blue(src)
if ("green")
new /obj/item/clothing/under/rank/medical/green(src)
if ("purple")
new /obj/item/clothing/under/rank/medical/purple(src)
switch(pick(list("blue", "green", "purple")))
switch(pick("blue", "green", "purple"))
if ("blue")
new /obj/item/clothing/under/rank/medical/blue(src)
if ("green")
@@ -162,6 +162,8 @@
new /obj/item/device/flashlight/pen(src)
new /obj/item/weapon/cartridge/cmo(src)
new /obj/item/device/radio/headset/heads/cmo(src)
new /obj/item/weapon/storage/belt/medical(src)
new /obj/item/device/flash(src)
return
@@ -136,6 +136,8 @@
if(!usr.canmove || usr.stat || usr.restrained()) // Don't use it if you're not able to! Checks for stuns, ghost and restrain
return
if(!opened) // If we let him lock it while it's open, it will close without the items inside going with it
togglelock(usr)
if (ishuman(usr))
if (!opened)
togglelock(usr)
else
usr << "\red This mob type can't use this verb."
+16 -1
View File
@@ -54,7 +54,11 @@
/obj/item/device/pda/detective
default_cartridge = /obj/item/weapon/cartridge/detective
icon_state = "pda-s"
icon_state = "pda-det"
/obj/item/device/pda/warden
default_cartridge = /obj/item/weapon/cartridge/security
icon_state = "pda-warden"
/obj/item/device/pda/janitor
default_cartridge = /obj/item/weapon/cartridge/janitor
@@ -107,6 +111,10 @@
icon_state = "pda-c"
toff = 1
/obj/item/device/pda/cargo
default_cartridge = /obj/item/weapon/cartridge/quartermaster
icon_state = "pda-cargo"
/obj/item/device/pda/quartermaster
default_cartridge = /obj/item/weapon/cartridge/quartermaster
icon_state = "pda-q"
@@ -143,6 +151,13 @@
note = "Congratulations, your station has chosen the Thinktronic 5290 WGW-11 Series E-reader and Personal Data Assistant!"
silent = 1 //Quiet in the library!
/obj/item/device/pda/chef
icon_state = "pda-chef"
/obj/item/device/pda/bar
icon_state = "pda-bar"
/obj/item/device/pda/atmos
icon_state = "pda-atmo"
+4 -5
View File
@@ -179,20 +179,19 @@ obj/structure/door_assembly
glass = 1
/obj/structure/door_assembly/attackby(obj/item/W as obj, mob/user as mob)
if(istype(W, /obj/item/weapon/weldingtool) && W:welding && !anchored )
if (W:remove_fuel(0,user))
W:welding = 2
if(istype(W, /obj/item/weapon/weldingtool) && !anchored )
var/obj/item/weapon/weldingtool/WT = W
if(WT.remove_fuel(0,user))
user.visible_message("[user] dissassembles the airlock assembly.", "You start to dissassemble the airlock assembly.")
playsound(src.loc, 'Welder2.ogg', 50, 1)
if(do_after(user, 40))
if(!src) return
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))
del(src)
W:welding = 1
else
user << "\blue You need more welding fuel to dissassemble the airlock assembly."
return
+7 -6
View File
@@ -511,18 +511,19 @@
if (is_sharp(W))
burst()
//Is this even used for anything besides balloons? Yes I took out the W:lit stuff because : really shouldnt be used.
/proc/is_sharp(obj/item/W as obj) // For the record, WHAT THE HELL IS THIS METHOD OF DOING IT?
return ( \
istype(W, /obj/item/weapon/screwdriver) || \
istype(W, /obj/item/weapon/pen) || \
istype(W, /obj/item/weapon/weldingtool) && W:welding || \
istype(W, /obj/item/weapon/lighter/zippo) && W:lit || \
istype(W, /obj/item/weapon/match) && W:lit || \
istype(W, /obj/item/clothing/mask/cigarette) && W:lit || \
istype(W, /obj/item/weapon/weldingtool) || \
istype(W, /obj/item/weapon/lighter/zippo) || \
istype(W, /obj/item/weapon/match) || \
istype(W, /obj/item/clothing/mask/cigarette) || \
istype(W, /obj/item/weapon/wirecutters) || \
istype(W, /obj/item/weapon/circular_saw) || \
istype(W, /obj/item/weapon/melee/energy/sword) && W:active || \
istype(W, /obj/item/weapon/melee/energy/blade) || \
istype(W, /obj/item/weapon/melee/energy/sword) || \
istype(W, /obj/item/weapon/melee/energy/blade) || \
istype(W, /obj/item/weapon/shovel) || \
istype(W, /obj/item/weapon/kitchenknife) || \
istype(W, /obj/item/weapon/butch) || \
+17 -9
View File
@@ -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
#define CANDLE_LUM 3
@@ -27,14 +27,22 @@
attackby(obj/item/weapon/W as obj, mob/user as mob)
..()
if(istype(W, /obj/item/weapon/weldingtool) && W:welding)
light("\red [user] casually lights the [name] with [W], what a badass.")
else if(istype(W, /obj/item/weapon/lighter) && W:lit)
light()
else if(istype(W, /obj/item/weapon/match) && W:lit)
light()
else if(istype(W, /obj/item/candle) && W:lit)
light()
if(istype(W, /obj/item/weapon/weldingtool))
var/obj/item/weapon/weldingtool/WT = W
if(WT.isOn()) //Badasses dont get blinded by lighting their candle with a welding tool
light("\red [user] casually lights the [name] with [W], what a badass.")
else if(istype(W, /obj/item/weapon/lighter))
var/obj/item/weapon/lighter/L = W
if(L.lit)
light()
else if(istype(W, /obj/item/weapon/match))
var/obj/item/weapon/match/M = W
if(M.lit)
light()
else if(istype(W, /obj/item/candle))
var/obj/item/candle/C = W
if(C.lit)
light()
light(var/flavor_text = "\red [usr] lights the [name].")
+87 -80
View File
@@ -330,87 +330,93 @@ THERMAL GLASSES
/obj/item/clothing/suit/storage/labcoat/verb/toggle()
set name = "Toggle Labcoat Buttons"
set category = "Object"
if(src.icon_state == "labcoat_open")
src.icon_state = "labcoat"
usr << "You button up the labcoat."
else if(src.icon_state == "labcoat")
src.icon_state = "labcoat_open"
usr << "You unbutton the labcoat."
else if(src.icon_state == "labcoat_cmo_open")
src.icon_state = "labcoat_cmo"
usr << "You button up the labcoat."
else if(src.icon_state == "labcoat_cmo")
src.icon_state = "labcoat_cmo_open"
usr << "You unbutton the labcoat."
else if(src.icon_state == "labcoat_cmoalt_open")
src.icon_state = "labcoat_cmoalt"
usr << "You button up the labcoat."
else if(src.icon_state == "labcoat_cmoalt")
src.icon_state = "labcoat_cmoalt_open"
usr << "You unbutton the labcoat."
else if(src.icon_state == "labcoat_gen_open")
src.icon_state = "labcoat_gen"
usr << "You button up the labcoat."
else if(src.icon_state == "labcoat_gen")
src.icon_state = "labcoat_gen_open"
usr << "You unbutton the labcoat."
else if(src.icon_state == "labcoat_chem_open")
src.icon_state = "labcoat_chem"
usr << "You button up the labcoat."
else if(src.icon_state == "labcoat_chem")
src.icon_state = "labcoat_chem_open"
usr << "You unbutton the labcoat."
else if(src.icon_state == "labcoat_vir_open")
src.icon_state = "labcoat_vir"
usr << "You button up the labcoat."
else if(src.icon_state == "labcoat_vir")
src.icon_state = "labcoat_vir_open"
usr << "You unbutton the labcoat."
else if(src.icon_state == "labcoat_tox_open")
src.icon_state = "labcoat_tox"
usr << "You button up the labcoat."
else if(src.icon_state == "labcoat_tox")
src.icon_state = "labcoat_tox_open"
usr << "You unbutton the labcoat."
else if(src.icon_state == "labgreen_open")
src.icon_state = "labgreen"
usr << "You button up the labcoat."
else if(src.icon_state == "labgreen")
src.icon_state = "labgreen_open"
usr << "You unbutton the labcoat."
else if(src.icon_state == "labcoat_pink_open")
src.icon_state = "labcoat_pink"
usr << "You button up the labcoat."
else if(src.icon_state == "labcoat_pink")
src.icon_state = "labcoat_pink_open"
usr << "You unbutton the labcoat."
else if(src.icon_state == "labcoat_red_open")
src.icon_state = "labcoat_red"
usr << "You button up the labcoat."
else if(src.icon_state == "labcoat_red")
src.icon_state = "labcoat_red_open"
usr << "You unbutton the labcoat."
else if(src.icon_state == "labcoat_cdc_open")
src.icon_state = "labcoat_cdc"
usr << "You button up the labcoat."
else if(src.icon_state == "labcoat_cdc")
src.icon_state = "labcoat_cdc_open"
usr << "You unbutton the labcoat."
else if(src.icon_state == "fr_jacket_open")
src.icon_state = "fr_jacket"
usr << "You button up the jacket."
else if(src.icon_state == "fr_jacket")
src.icon_state = "fr_jacket_open"
usr << "You unbutton the jacket."
else if(src.icon_state == "fr_sleeve_open")
src.icon_state = "fr_sleeve"
usr << "You button up the jacket."
else if(src.icon_state == "fr_sleeve")
src.icon_state = "fr_sleeve_open"
usr << "You unbutton the jacket."
if(!usr.canmove || usr.stat || usr.restrained())
return 0
else
usr << "Sorry! The suit you're wearing doesn't have buttons!"
usr.update_clothing()
if(src.icon_state == "labcoat_open")
src.icon_state = "labcoat"
usr << "You button up the labcoat."
else if(src.icon_state == "labcoat")
src.icon_state = "labcoat_open"
usr << "You unbutton the labcoat."
else if(src.icon_state == "labcoat_cmo_open")
src.icon_state = "labcoat_cmo"
usr << "You button up the labcoat."
else if(src.icon_state == "labcoat_cmo")
src.icon_state = "labcoat_cmo_open"
usr << "You unbutton the labcoat."
else if(src.icon_state == "labcoat_cmoalt_open")
src.icon_state = "labcoat_cmoalt"
usr << "You button up the labcoat."
else if(src.icon_state == "labcoat_cmoalt")
src.icon_state = "labcoat_cmoalt_open"
usr << "You unbutton the labcoat."
else if(src.icon_state == "labcoat_gen_open")
src.icon_state = "labcoat_gen"
usr << "You button up the labcoat."
else if(src.icon_state == "labcoat_gen")
src.icon_state = "labcoat_gen_open"
usr << "You unbutton the labcoat."
else if(src.icon_state == "labcoat_chem_open")
src.icon_state = "labcoat_chem"
usr << "You button up the labcoat."
else if(src.icon_state == "labcoat_chem")
src.icon_state = "labcoat_chem_open"
usr << "You unbutton the labcoat."
else if(src.icon_state == "labcoat_vir_open")
src.icon_state = "labcoat_vir"
usr << "You button up the labcoat."
else if(src.icon_state == "labcoat_vir")
src.icon_state = "labcoat_vir_open"
usr << "You unbutton the labcoat."
else if(src.icon_state == "labcoat_tox_open")
src.icon_state = "labcoat_tox"
usr << "You button up the labcoat."
else if(src.icon_state == "labcoat_tox")
src.icon_state = "labcoat_tox_open"
usr << "You unbutton the labcoat."
else if(src.icon_state == "labgreen_open")
src.icon_state = "labgreen"
usr << "You button up the labcoat."
else if(src.icon_state == "labgreen")
src.icon_state = "labgreen_open"
usr << "You unbutton the labcoat."
else if(src.icon_state == "labcoat_pink_open")
src.icon_state = "labcoat_pink"
usr << "You button up the labcoat."
else if(src.icon_state == "labcoat_pink")
src.icon_state = "labcoat_pink_open"
usr << "You unbutton the labcoat."
else if(src.icon_state == "labcoat_red_open")
src.icon_state = "labcoat_red"
usr << "You button up the labcoat."
else if(src.icon_state == "labcoat_red")
src.icon_state = "labcoat_red_open"
usr << "You unbutton the labcoat."
else if(src.icon_state == "labcoat_cdc_open")
src.icon_state = "labcoat_cdc"
usr << "You button up the labcoat."
else if(src.icon_state == "labcoat_cdc")
src.icon_state = "labcoat_cdc_open"
usr << "You unbutton the labcoat."
else if(src.icon_state == "fr_jacket_open")
src.icon_state = "fr_jacket"
usr << "You button up the jacket."
else if(src.icon_state == "fr_jacket")
src.icon_state = "fr_jacket_open"
usr << "You unbutton the jacket."
else if(src.icon_state == "fr_sleeve_open")
src.icon_state = "fr_sleeve"
usr << "You button up the jacket."
else if(src.icon_state == "fr_sleeve")
src.icon_state = "fr_sleeve_open"
usr << "You unbutton the jacket."
else
usr << "Sorry! The suit you're wearing doesn't have buttons!"
usr.update_clothing()
/obj/item/clothing/head/ushanka/attack_self(mob/user as mob)
if(src.icon_state == "ushankadown")
@@ -422,6 +428,7 @@ THERMAL GLASSES
src.item_state = "ushankadown"
user << "You lower the ear flaps on the ushanka."
/obj/item/clothing/glasses/thermal/emp_act(severity)
if(istype(src.loc, /mob/living/carbon/human))
var/mob/living/carbon/human/M = src.loc
@@ -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
/*
CONTAINS:
@@ -124,71 +124,82 @@ ZIPPO
var/smoketime = 300
var/butt_count = 5 //count of butt sprite variations
proc
light(var/flavor_text = "[usr] lights the [name].")
put_out()
if (src.lit == -1)
return
src.lit = -1
src.damtype = "brute"
src.icon_state = icon_butt + "[rand(0,butt_count)]"
src.item_state = icon_off
src.desc = "A [src.name] butt."
src.name = "[src.name] butt"
attackby(obj/item/weapon/W as obj, mob/user as mob)
..()
if(istype(W, /obj/item/weapon/weldingtool) && W:welding)
/obj/item/clothing/mask/cigarette/attackby(obj/item/weapon/W as obj, mob/user as mob)
..()
if(istype(W, /obj/item/weapon/weldingtool))
var/obj/item/weapon/weldingtool/WT = W
if(WT.isOn())//Badasses dont get blinded while lighting their cig with a welding tool
light("\red [user] casually lights the [name] with [W], what a badass.")
else if(istype(W, /obj/item/weapon/lighter/zippo) && (W:lit > 0))
else if(istype(W, /obj/item/weapon/lighter/zippo))
var/obj/item/weapon/lighter/zippo/Z = W
if(Z.lit > 0)
light("\red With a single flick of their wrist, [user] smoothly lights their [name] with their [W]. Damn they're cool.")
else if(istype(W, /obj/item/weapon/lighter) && (W:lit > 0))
else if(istype(W, /obj/item/weapon/lighter))
var/obj/item/weapon/lighter/L = W
if(L.lit > 0)
light("\red After some fiddling, [user] manages to light their [name] with [W].")
else if(istype(W, /obj/item/weapon/match) && (W:lit > 0))
else if(istype(W, /obj/item/weapon/melee/energy/sword))
var/obj/item/weapon/melee/energy/sword/S = W
if(S.active)
light("\red [user] swings their [W], barely missing their nose. They light their [name] in the process.")
else if(istype(W, /obj/item/weapon/match))
var/obj/item/weapon/match/M = W
if(M.lit > 0)
light("\red [user] lights their [name] with their [W].")
return
return
light(var/flavor_text = "[usr] lights the [name].")
if(!src.lit)
src.lit = 1
src.damtype = "fire"
src.icon_state = icon_on
src.item_state = icon_on
for(var/mob/O in viewers(usr, null))
O.show_message(flavor_text, 1)
processing_objects.Add(src)
/obj/item/clothing/mask/cigarette/proc/light(var/flavor_text = "[usr] lights the [name].")
if(!src.lit)
src.lit = 1
src.damtype = "fire"
src.icon_state = icon_on
src.item_state = icon_on
for(var/mob/O in viewers(usr, null))
O.show_message(flavor_text, 1)
processing_objects.Add(src)
process()
var/turf/location = get_turf(src)
src.smoketime--
if(src.smoketime < 1)
if(ismob(src.loc))
var/mob/living/M = src.loc
M << "\red Your [src.name] goes out."
put_out()
M.update_clothing()
else
put_out()
processing_objects.Remove(src)
return
if(location)
location.hotspot_expose(700, 5)
return
dropped(mob/user as mob)
if(src.lit == 1)
src.visible_message("\red [user] calmly drops and treads on the lit [src], putting it out instantly.")
/obj/item/clothing/mask/cigarette/process()
var/turf/location = get_turf(src)
src.smoketime--
if(src.smoketime < 1)
if(ismob(src.loc))
var/mob/living/M = src.loc
M << "\red Your [src.name] goes out."
put_out()
return ..()
M.update_clothing()
else
put_out()
processing_objects.Remove(src)
return
if(location)
location.hotspot_expose(700, 5)
return
/obj/item/clothing/mask/cigarette/dropped(mob/user as mob)
if(src.lit == 1)
src.visible_message("\red [user] calmly drops and treads on the lit [src], putting it out instantly.")
put_out()
return ..()
/obj/item/clothing/mask/cigarette/proc/put_out()
if (src.lit == -1)
return
src.lit = -1
src.damtype = "brute"
src.icon_state = icon_butt + "[rand(0,butt_count)]"
src.item_state = icon_off
src.desc = "A [src.name] butt."
src.name = "[src.name] butt"
////////////
// CIGARS //
@@ -252,24 +263,30 @@ ZIPPO
var/lastHolder = null
var/smoketime = 100
var/maxsmoketime = 100 //make sure this is equal to your smoketime
proc
light(var/flavor_text = "[usr] lights the [name].")
attackby(obj/item/weapon/W as obj, mob/user as mob)
..()
if(istype(W, /obj/item/weapon/weldingtool) && W:welding)
light("\red [user] casually lights the [name] with [W], what a badass.")
if(istype(W, /obj/item/weapon/weldingtool))
var/obj/item/weapon/weldingtool/WT = W
if(WT.isOn())
light("\red [user] casually lights the [name] with [W], what a badass.")
else if(istype(W, /obj/item/weapon/lighter/zippo) && (W:lit > 0))
light("\red With a single flick of their wrist, [user] smoothly lights their [name] with their [W]. Damn they're cool.")
else if(istype(W, /obj/item/weapon/lighter/zippo))
var/obj/item/weapon/lighter/zippo/Z = W
if(Z.lit > 0)
light("\red With a single flick of their wrist, [user] smoothly lights their [name] with their [W]. Damn they're cool.")
else if(istype(W, /obj/item/weapon/lighter) && (W:lit > 0))
light("\red After some fiddling, [user] manages to light their [name] with [W].")
else if(istype(W, /obj/item/weapon/lighter))
var/obj/item/weapon/lighter/L = W
if(L.lit > 0)
light("\red After some fiddling, [user] manages to light their [name] with [W].")
else if(istype(W, /obj/item/weapon/match) && (W:lit > 0))
light("\red [user] lights \his [name] with \his [W].")
return
else if(istype(W, /obj/item/weapon/match))
var/obj/item/weapon/match/M = W
if(M.lit > 0)
light("\red [user] lights their [name] with their [W].")
light(var/flavor_text = "[usr] lights the [name].")
if(!src.lit)
@@ -475,4 +492,4 @@ ZIPPO
if(lit)
user.total_luminosity -= 2
src.sd_SetLuminosity(2)
return
return
+260 -216
View File
@@ -71,242 +71,278 @@ WELDINGTOOOL
icon_state = "welder"
flags = FPRINT | TABLEPASS| CONDUCT
slot_flags = SLOT_BELT
//Amount of OUCH when it's thrown
force = 3.0
throwforce = 5.0
throw_speed = 1
throw_range = 5
w_class = 2.0
//Cost to make in the autolathe
m_amt = 70
g_amt = 30
//R&D tech level
origin_tech = "engineering=1"
var/welding = 0
var/status = 1
var/max_fuel = 20
proc
get_fuel()
remove_fuel(var/amount = 1, var/mob/M = null)
check_status()
toggle(var/message = 0)
eyecheck(mob/user as mob)
//Welding tool specific stuff
var/welding = 0 //Whether or not the welding tool is off(0), on(1) or currently welding(2)
var/status = 1 //Whether the welder is secured or unsecured (able to attach rods to it to make a flamethrower)
var/max_fuel = 20 //The max amount of fuel the welder can hold
/obj/item/weapon/weldingtool/New()
// var/random_fuel = min(rand(10,20),max_fuel)
var/datum/reagents/R = new/datum/reagents(max_fuel)
reagents = R
R.my_atom = src
R.add_reagent("fuel", max_fuel)
return
New()
var/random_fuel = min(rand(10,20),max_fuel)
var/datum/reagents/R = new/datum/reagents(max_fuel)
reagents = R
R.my_atom = src
R.add_reagent("fuel", random_fuel)
return
/obj/item/weapon/weldingtool/examine()
set src in usr
usr << text("\icon[] [] contains []/[] units of fuel!", src, src.name, get_fuel(),src.max_fuel )
return
examine()
set src in usr
usr << text("\icon[] [] contains []/[] units of fuel!", src, src.name, get_fuel(),src.max_fuel )
return
attackby(obj/item/W as obj, mob/user as mob)
if(istype(W,/obj/item/weapon/screwdriver))
if(welding)
user << "\red Stop welding first!"
return
status = !status
if(status)
user << "\blue You resecure the welder."
else
user << "\blue The welder can now be attached and modified."
src.add_fingerprint(user)
/obj/item/weapon/weldingtool/attackby(obj/item/W as obj, mob/user as mob)
if(istype(W,/obj/item/weapon/screwdriver))
if(welding)
user << "\red Stop welding first!"
return
if((!status) && (istype(W,/obj/item/stack/rods)))
var/obj/item/stack/rods/R = W
R.use(1)
var/obj/item/weapon/flamethrower/F = new/obj/item/weapon/flamethrower(user.loc)
src.loc = F
F.weldtool = src
if (user.client)
user.client.screen -= src
if (user.r_hand == src)
user.u_equip(src)
else
user.u_equip(src)
src.master = F
src.layer = initial(src.layer)
user.u_equip(src)
if (user.client)
user.client.screen -= src
src.loc = F
src.add_fingerprint(user)
return
..()
return
process()
switch(welding)
if(0)
processing_objects.Remove(src)
return
if(1)
if(prob(5))//Welders left on now use up fuel, but lets not have them run out quite that fast
remove_fuel(1)
if(2)
if(prob(75))
remove_fuel(1)
//if you're actually actively welding, use fuel faster.
var/turf/location = src.loc
if(istype(location, /mob/))
var/mob/M = location
if(M.l_hand == src || M.r_hand == src)
location = get_turf(M)
if (istype(location, /turf))
location.hotspot_expose(700, 5)
afterattack(obj/O as obj, mob/user as mob)
if (istype(O, /obj/structure/reagent_dispensers/fueltank) && get_dist(src,O) <= 1 && !src.welding)
O.reagents.trans_to(src, max_fuel)
user << "\blue Welder refueled"
playsound(src.loc, 'refill.ogg', 50, 1, -6)
return
else if (istype(O, /obj/structure/reagent_dispensers/fueltank) && get_dist(src,O) <= 1 && src.welding)
message_admins("[key_name_admin(user)] triggered a fueltank explosion.")
log_game("[key_name(user)] triggered a fueltank explosion.")
user << "\red That was stupid of you."
explosion(O.loc,-1,0,2)
if(O)
del(O)
return
if (src.welding)
remove_fuel(1)
var/turf/location = get_turf(user)
if (istype(location, /turf))
location.hotspot_expose(700, 50, 1)
return
attack_self(mob/user as mob)
toggle()
user.update_clothing()
return
///GET prop for fuel
get_fuel()
return reagents.get_reagent_amount("fuel")
///SET prop for fuel
///Will also turn it off if it is out of fuel
///The mob argument is not needed but if included will call eyecheck() on it if the welder is on.
remove_fuel(var/amount = 1, var/mob/M = null)
if(!welding || !check_status())
return 0
if(get_fuel() >= amount)
reagents.remove_reagent("fuel", amount)
check_status()
if(M)
eyecheck(M)//TODO:eyecheck should really be in mob not here
return 1
status = !status
if(status)
user << "\blue You resecure the welder."
else
if(M)
M << "\blue You need more welding fuel to complete this task."
return 0
user << "\blue The welder can now be attached and modified."
src.add_fingerprint(user)
return
if((!status) && (istype(W,/obj/item/stack/rods)))
var/obj/item/stack/rods/R = W
R.use(1)
var/obj/item/weapon/flamethrower/F = new/obj/item/weapon/flamethrower(user.loc)
src.loc = F
F.weldtool = src
if (user.client)
user.client.screen -= src
if (user.r_hand == src)
user.u_equip(src)
else
user.u_equip(src)
src.master = F
src.layer = initial(src.layer)
user.u_equip(src)
if (user.client)
user.client.screen -= src
src.loc = F
src.add_fingerprint(user)
return
..()
return
///Quick check to see if we even have any fuel and should shut off
///This could use a better name
check_status()
if((get_fuel() <= 0) && welding)
toggle(1)
return 0
return 1
//toggles the welder off and on
toggle(var/message = 0)
if(!status) return
src.welding = !( src.welding )
if (src.welding)
if (remove_fuel(1))
usr << "\blue You switch the [src] on."
/obj/item/weapon/weldingtool/process()
switch(welding)
//If off
if(0)
if(src.icon_state != "welder") //Check that the sprite is correct, if it isnt, it means toggle() was not called
src.force = 3
src.damtype = "brute"
src.icon_state = "welder"
src.welding = 0
processing_objects.Remove(src)
return
//Welders left on now use up fuel, but lets not have them run out quite that fast
if(1)
if(src.icon_state != "welder1") //Check that the sprite is correct, if it isnt, it means toggle() was not called
src.force = 15
src.damtype = "fire"
src.icon_state = "welder1"
processing_objects.Add(src)
else
usr << "\blue Need more fuel!"
src.welding = 0
return
else
if(!message)
usr << "\blue You switch the [src] off."
else
usr << "\blue The [src] shuts off!"
src.force = 3
src.damtype = "brute"
src.icon_state = "welder"
src.welding = 0
if(prob(5))
remove_fuel(1)
//If you're actually actively welding, use fuel faster.
//Is this actually used or set anywhere? - Nodrak
if(2)
if(prob(75))
remove_fuel(1)
eyecheck(mob/user as mob)
//check eye protection
if(!iscarbon(user)) return 1
var/safety = user:eyecheck()
switch(safety)
if(1)
usr << "\red Your eyes sting a little."
user.eye_stat += rand(1, 2)
if(user.eye_stat > 12)
user.eye_blurry += rand(3,6)
if(0)
usr << "\red Your eyes burn."
user.eye_stat += rand(2, 4)
if(user.eye_stat > 10)
user.eye_blurry += rand(4,10)
if(-1)
usr << "\red Your thermals intensify the welder's glow. Your eyes itch and burn severely."
user.eye_blurry += rand(12,20)
user.eye_stat += rand(12, 16)
if(user.eye_stat > 10 && safety < 2)
user << "\red Your eyes are really starting to hurt. This can't be good for you!"
if (prob(user.eye_stat - 25 + 1))
user << "\red You go blind!"
user.disabilities |= 128
else if (prob(user.eye_stat - 15 + 1))
user << "\red You go blind!"
user.eye_blind = 5
user.eye_blurry = 5
user.disabilities |= 1
// spawn(100)
// user.disabilities &= ~1 //Simpler to just leave them short sighted.
//I'm not sure what this does. I assume it has to do with starting fires...
//...but it doesnt check to see if the welder is on or not.
var/turf/location = src.loc
if(istype(location, /mob/))
var/mob/M = location
if(M.l_hand == src || M.r_hand == src)
location = get_turf(M)
if (istype(location, /turf))
location.hotspot_expose(700, 5)
/obj/item/weapon/weldingtool/afterattack(obj/O as obj, mob/user as mob)
if (istype(O, /obj/structure/reagent_dispensers/fueltank) && get_dist(src,O) <= 1 && !src.welding)
O.reagents.trans_to(src, max_fuel)
user << "\blue Welder refueled"
playsound(src.loc, 'refill.ogg', 50, 1, -6)
return
else if (istype(O, /obj/structure/reagent_dispensers/fueltank) && get_dist(src,O) <= 1 && src.welding)
message_admins("[key_name_admin(user)] triggered a fueltank explosion.")
log_game("[key_name(user)] triggered a fueltank explosion.")
user << "\red That was stupid of you."
explosion(O.loc,-1,0,2)
if(O)
del(O)
return
if (src.welding)
remove_fuel(1)
var/turf/location = get_turf(user)
if (istype(location, /turf))
location.hotspot_expose(700, 50, 1)
return
attack(mob/M as mob, mob/user as mob)
if(hasorgans(M))
var/datum/organ/external/S = M:organs[user.zone_sel.selecting]
if(S)
message_admins("It appears [M] has \"null\" where there should be a [user.zone_sel.selecting]. Check into this, and tell SkyMarshal: \"[M.type]\"")
return ..()
if(!S.robot || user.a_intent != "help")
return ..()
if(S.brute_dam)
S.heal_damage(15,0,0,1)
if(user != M)
user.visible_message("\red You patch some dents on \the [M]'s [S.display_name]",\
"\red \The [user] patches some dents on \the [M]'s [S.display_name] with \the [src]",\
"You hear a welder.")
else
user.visible_message("\red You patch some dents on your [S.display_name]",\
"\red \The [user] patches some dents on their [S.display_name] with \the [src]",\
"You hear a welder.")
else
user << "Nothing to fix!"
/obj/item/weapon/weldingtool/attack_self(mob/user as mob)
toggle()
user.update_clothing()
return
//Returns the amount of fuel in the welder
/obj/item/weapon/weldingtool/proc/get_fuel()
return reagents.get_reagent_amount("fuel")
//Removes fuel from the welding tool. If a mob is passed, it will perform an eyecheck on the mob. This should probably be renamed to use()
/obj/item/weapon/weldingtool/proc/remove_fuel(var/amount = 1, var/mob/M = null)
if(!welding || !check_fuel())
return 0
if(get_fuel() >= amount)
reagents.remove_reagent("fuel", amount)
check_fuel()
if(M)
eyecheck(M)
return 1
else
if(M)
M << "\blue You need more welding fuel to complete this task."
return 0
//Returns whether or not the welding tool is currently on.
/obj/item/weapon/weldingtool/proc/isOn()
return src.welding
//Sets the welding state of the welding tool. If you see W.welding = 1 anywhere, please change it to W.setWelding(1)
//so that the welding tool updates accordingly
/obj/item/weapon/weldingtool/proc/setWelding(var/temp_welding)
//If we're turning it on
if(temp_welding > 0)
if (remove_fuel(1))
usr << "\blue The [src] switches on."
src.force = 15
src.damtype = "fire"
src.icon_state = "welder1"
processing_objects.Add(src)
else
return ..()
usr << "\blue Need more fuel!"
src.welding = 0
return
//Otherwise
else
usr << "\blue The [src] switches off."
src.force = 3
src.damtype = "brute"
src.icon_state = "welder"
src.welding = 0
//Turns off the welder if there is no more fuel (does this really need to be its own proc?)
/obj/item/weapon/weldingtool/proc/check_fuel()
if((get_fuel() <= 0) && welding)
toggle(1)
return 0
return 1
//Toggles the welder off and on
/obj/item/weapon/weldingtool/proc/toggle(var/message = 0)
if(!status) return
src.welding = !( src.welding )
if (src.welding)
if (remove_fuel(1))
usr << "\blue You switch the [src] on."
src.force = 15
src.damtype = "fire"
src.icon_state = "welder1"
processing_objects.Add(src)
else
usr << "\blue Need more fuel!"
src.welding = 0
return
else
if(!message)
usr << "\blue You switch the [src] off."
else
usr << "\blue The [src] shuts off!"
src.force = 3
src.damtype = "brute"
src.icon_state = "welder"
src.welding = 0
return
//Decides whether or not to damage a player's eyes based on what they're wearing as protection
//Note: This should probably be moved to mob
/obj/item/weapon/weldingtool/proc/eyecheck(mob/user as mob)
if(!iscarbon(user)) return 1
var/safety = user:eyecheck()
switch(safety)
if(1)
usr << "\red Your eyes sting a little."
user.eye_stat += rand(1, 2)
if(user.eye_stat > 12)
user.eye_blurry += rand(3,6)
if(0)
usr << "\red Your eyes burn."
user.eye_stat += rand(2, 4)
if(user.eye_stat > 10)
user.eye_blurry += rand(4,10)
if(-1)
usr << "\red Your thermals intensify the welder's glow. Your eyes itch and burn severely."
user.eye_blurry += rand(12,20)
user.eye_stat += rand(12, 16)
if(user.eye_stat > 10 && safety < 2)
user << "\red Your eyes are really starting to hurt. This can't be good for you!"
if (prob(user.eye_stat - 25 + 1))
user << "\red You go blind!"
user.disabilities |= 128
else if (prob(user.eye_stat - 15 + 1))
user << "\red You go blind!"
user.eye_blind = 5
user.eye_blurry = 5
user.disabilities |= 1
// spawn(100)
// user.disabilities &= ~1 //Simpler to just leave them short sighted.
return
/obj/item/weapon/weldingtool/attack(mob/M as mob, mob/user as mob)
if(hasorgans(M))
var/datum/organ/external/S = M:organs[user.zone_sel.selecting]
if(!S.robot || user.a_intent != "help")
return ..()
if(S.brute_dam)
S.heal_damage(15,0,0,1)
if(user != M)
user.visible_message("\red You patch some dents on \the [M]'s [S.display_name]",\
"\red \The [user] patches some dents on \the [M]'s [S.display_name] with \the [src]",\
"You hear a welder.")
else
user.visible_message("\red You patch some dents on your [S.display_name]",\
"\red \The [user] patches some dents on their [S.display_name] with \the [src]",\
"You hear a welder.")
else
user << "Nothing to fix!"
else
return ..()
/obj/item/weapon/weldingtool/largetank
name = "Industrial Welding Tool"
@@ -325,13 +361,21 @@ WELDINGTOOOL
/obj/item/weapon/weldingtool/experimental
name = "Experimental Welding Tool"
max_fuel = 80
max_fuel = 40
w_class = 3.0
m_amt = 70
g_amt = 120
origin_tech = "engineering=4;plasma=3"
icon_state = "ewelder"
var/last_gen = 0
/obj/item/weapon/weldingtool/experimental/proc/fuel_gen()//Proc to make the experimental welder generate fuel, optimized as fuck -Sieve
var/gen_amount = ((world.time-last_gen)/25)
reagents += (gen_amount)
if(reagents > max_fuel)
reagents = max_fuel
/obj/item/weapon/wirecutters
name = "wirecutters"
desc = "This cuts wires."
@@ -346,10 +390,10 @@ WELDINGTOOOL
m_amt = 80
origin_tech = "materials=1;engineering=1"
New()
if(prob(50))
icon_state = "cutters-y"
item_state = "cutters_yellow"
/obj/item/weapon/wirecutters/New()
if(prob(50))
icon_state = "cutters-y"
item_state = "cutters_yellow"
/obj/item/weapon/wirecutters/attack(mob/M as mob, mob/user as mob)
if((M.handcuffed) && (istype(M:handcuffed, /obj/item/weapon/handcuffs/cable)))
+2 -1
View File
@@ -188,7 +188,8 @@
attackby(obj/item/weapon/W as obj, mob/user as mob)
if(istype(W,/obj/item/weapon/weldingtool))
if(W:welding)
var/obj/item/weapon/weldingtool/WT = W
if(WT.remove_fuel(0, user))
TemperatureAct(100)
..()
+6 -6
View File
@@ -67,16 +67,16 @@
var/cx = tx
var/cy = ty
src.boxes.screen_loc = text("[],[] to [],[]", tx, ty, mx, my)
src.boxes.screen_loc = "[tx],[ty] to [mx],[my]"
for(var/obj/O in src.contents)
O.screen_loc = text("[],[]", cx, cy)
O.screen_loc = "[cx],[cy]"
O.layer = 20
cx++
if (cx > mx)
cx = tx
cy--
//Foreach goto(56)
src.closer.screen_loc = text("[],[]", mx, my)
src.closer.screen_loc = "[mx],[my]"
return
//This proc draws out the inventory and places the items on it. It uses the standard position.
@@ -85,15 +85,15 @@
var/cols = 6
var/cx = 4
var/cy = 2+rows
src.boxes.screen_loc = text("4:16,2:16 to [4+cols]:16,[2+rows]:16")
src.boxes.screen_loc = "4:16,2:16 to [4+cols]:16,[2+rows]:16"
for(var/obj/O in src.contents)
O.screen_loc = text("[cx]:16,[cy]:16")
O.screen_loc = "[cx]:16,[cy]:16"
O.layer = 20
cx++
if (cx > (4+cols))
cx = 4
cy--
src.closer.screen_loc = text("11:16,2:16")
src.closer.screen_loc = "11:16,2:16"
return
/obj/item/weapon/secstorage/proc/orient2hud(mob/user as mob)
+2 -1
View File
@@ -95,7 +95,8 @@
attackby(obj/item/W as obj, mob/user as mob)
if (istype(W, /obj/item/weapon/weldingtool))
if(W:welding == 1)
var/obj/item/weapon/weldingtool/WT = W
if(WT.remove_fuel(0, user))
overlays = null
usr << "You slice off [src]'s uneven chunks of aluminum and scorch marks."
return
+14 -13
View File
@@ -237,19 +237,20 @@ SHARDS
/obj/item/weapon/shard/attackby(obj/item/weapon/W as obj, mob/user as mob)
..()
if ( istype(W, /obj/item/weapon/weldingtool) && W:welding )
W:eyecheck(user)
var/obj/item/stack/sheet/glass/NG = new (user.loc)
for (var/obj/item/stack/sheet/glass/G in user.loc)
if(G==NG)
continue
if(G.amount>=G.max_amount)
continue
G.attackby(NG, user)
usr << "You add the newly-formed glass to the stack. It now contains [NG.amount] sheets."
//SN src = null
del(src)
return
if ( istype(W, /obj/item/weapon/weldingtool))
var/obj/item/weapon/weldingtool/WT = W
if(WT.remove_fuel(0, user))
var/obj/item/stack/sheet/glass/NG = new (user.loc)
for (var/obj/item/stack/sheet/glass/G in user.loc)
if(G==NG)
continue
if(G.amount>=G.max_amount)
continue
G.attackby(NG, user)
usr << "You add the newly-formed glass to the stack. It now contains [NG.amount] sheets."
//SN src = null
del(src)
return
return ..()
/obj/item/weapon/shard/HasEntered(AM as mob|obj)
+5 -2
View File
@@ -12,11 +12,14 @@ FLOOR TILES
/obj/item/stack/rods/attackby(obj/item/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(amount < 2)
user << "\red You need at least two rods to do this."
return
if(W:remove_fuel(0,user))
if(WT.remove_fuel(0,user))
var/obj/item/stack/sheet/metal/new_item = new(usr.loc)
new_item.add_to_stacks(usr)
for (var/mob/M in viewers(src))
+4 -4
View File
@@ -8,9 +8,9 @@ var/global/list/datum/stack_recipe/wood_recipes = list ( \
new/datum/stack_recipe("table parts", /obj/item/weapon/table_parts/wood, 2), \
new/datum/stack_recipe("wooden barricade", /obj/structure/barricade/wooden, 5, time = 30, one_per_turf = 1, on_floor = 1), \
new/datum/stack_recipe("wooden door", /obj/structure/mineral_door/wood, 10, time = 20, one_per_turf = 1, on_floor = 1), \
new/datum/stack_recipe("coffin", /obj/structure/closet/coffin, 5, time = 15, one_per_turf = 1, on_floor = 1), \
)
/obj/item/stack/sheet/wood
New(var/loc, var/amount=null)
recipes = wood_recipes
return ..()
/obj/item/stack/sheet/wood/New(var/loc, var/amount=null)
recipes = wood_recipes
return ..()
+6 -6
View File
@@ -66,30 +66,30 @@
/obj/item/weapon/storage/proc/orient_objs(tx, ty, mx, my)
var/cx = tx
var/cy = ty
src.boxes.screen_loc = text("[tx]:,[ty] to [mx],[my]")
src.boxes.screen_loc = "[tx]:,[ty] to [mx],[my]"
for(var/obj/O in src.contents)
O.screen_loc = text("[cx],[cy]")
O.screen_loc = "[cx],[cy]"
O.layer = 20
cx++
if (cx > mx)
cx = tx
cy--
src.closer.screen_loc = text("[mx+1],[my]")
src.closer.screen_loc = "[mx+1],[my]"
return
//This proc draws out the inventory and places the items on it. It uses the standard position.
/obj/item/weapon/storage/proc/standard_orient_objs(var/rows,var/cols)
var/cx = 4
var/cy = 2+rows
src.boxes.screen_loc = text("4:16,2:16 to [4+cols]:16,[2+rows]:16")
src.boxes.screen_loc = "4:16,2:16 to [4+cols]:16,[2+rows]:16"
for(var/obj/O in src.contents)
O.screen_loc = text("[cx]:16,[cy]:16")
O.screen_loc = "[cx]:16,[cy]:16"
O.layer = 20
cx++
if (cx > (4+cols))
cx = 4
cy--
src.closer.screen_loc = text("[4+cols+1]:16,2:16")
src.closer.screen_loc = "[4+cols+1]:16,2:16"
return
//This proc determins the size of the inventory to be displayed. Please touch it only if you know what you're doing.
+4 -4
View File
@@ -173,7 +173,6 @@ obj/structure/meteorhit(obj/O as obj)
else
return
/obj/structure/girder/displaced
icon_state = "displaced"
anchored = 0
@@ -259,9 +258,10 @@ obj/structure/meteorhit(obj/O as obj)
var/turf/T = get_turf(src)
T.attackby(C, user) //BubbleWrap - hand this off to the underlying turf instead
return
if (istype(C, /obj/item/weapon/weldingtool) && C:welding)
user << "\blue Slicing lattice joints ..."
C:eyecheck(user)
if (istype(C, /obj/item/weapon/weldingtool))
var/obj/item/weapon/weldingtool/WT = C
if(WT.remove_fuel(0, user))
user << "\blue Slicing lattice joints ..."
new /obj/item/stack/rods(src.loc)
del(src)
+4 -5
View File
@@ -283,23 +283,22 @@ TABLE AND RACK OBJECT INTERATIONS
return
if (istype(W, /obj/item/weapon/weldingtool))
if(W:welding == 1)
var/obj/item/weapon/weldingtool/WT = W
if(WT.remove_fuel(0, user))
if(src.status == 2)
W:welding = 2
user << "\blue Now weakening the reinforced table"
playsound(src.loc, 'Welder.ogg', 50, 1)
if (do_after(user, 50))
if(!src || !WT.isOn()) return
user << "\blue Table weakened"
src.status = 1
W:welding = 1
else
W:welding = 2
user << "\blue Now strengthening the reinforced table"
playsound(src.loc, 'Welder.ogg', 50, 1)
if (do_after(user, 50))
if(!src || !WT.isOn()) return
user << "\blue Table strengthened"
src.status = 2
W:welding = 1
return
if(isrobot(user))
return
+172 -101
View File
@@ -81,113 +81,184 @@ A list of items and costs is stored under the datum of every game mode, alongsid
// src.menu_message += "<A href='byond://?src=\ref[src];buy_item=random'>Random Item (??)</A><br>"
src.menu_message += "<HR>"
return
/*
//If 'random' was selected
proc/chooseRandomItem()
var/list/randomItems = list()
//Sorry for all the ifs, but it makes it 1000 times easier for other people/servers to add or remove items from this list
//Add only items the player can afford:
if(uses > 19)
randomItems.Add("/obj/item/weapon/circuitboard/teleporter") //Teleporter Circuit Board (costs 20, for nuke ops)
if(uses > 9)
randomItems.Add("/obj/item/toy/syndicateballoon")//Syndicate Balloon
randomItems.Add("/obj/item/weapon/storage/syndie_kit/imp_uplink") //Uplink Implanter
randomItems.Add("/obj/item/weapon/storage/box/syndicate") //Syndicate bundle
//if(uses > 8) //Nothing... yet.
//if(uses > 7) //Nothing... yet.
if(uses > 6)
randomItems.Add("/obj/item/weapon/aiModule/syndicate") //Hacked AI Upload Module
randomItems.Add("/obj/item/device/radio/beacon/syndicate") //Singularity Beacon
if(uses > 5)
randomItems.Add("/obj/item/weapon/gun/projectile") //Revolver
if(uses > 4)
randomItems.Add("/obj/item/weapon/gun/energy/crossbow") //Energy Crossbow
randomItems.Add("/obj/item/device/powersink") //Powersink
if(uses > 3)
randomItems.Add("/obj/item/weapon/melee/energy/sword") //Energy Sword
randomItems.Add("/obj/item/clothing/mask/gas/voice") //Voice Changer
randomItems.Add("/obj/item/device/chameleon") //Chameleon Projector
if(uses > 2)
randomItems.Add("/obj/item/weapon/storage/emp_kit") //EMP Grenades
randomItems.Add("/obj/item/weapon/pen/paralysis") //Paralysis Pen
randomItems.Add("/obj/item/weapon/cartridge/syndicate") //Detomatix Cartridge
randomItems.Add("/obj/item/clothing/under/chameleon") //Chameleon Jumpsuit
randomItems.Add("/obj/item/weapon/card/id/syndicate") //Agent ID Card
randomItems.Add("/obj/item/weapon/card/emag") //Cryptographic Sequencer
randomItems.Add("/obj/item/weapon/storage/syndie_kit/space") //Syndicate Space Suit
randomItems.Add("/obj/item/device/encryptionkey/binary") //Binary Translator Key
randomItems.Add("/obj/item/weapon/storage/syndie_kit/imp_freedom") //Freedom Implant
randomItems.Add("/obj/item/clothing/glasses/thermal") //Thermal Imaging Goggles
if(uses > 1)
/*
var/list/usrItems = usr.get_contents() //Checks to see if the user has a revolver before giving ammo
var/hasRevolver = 0
for(var/obj/I in usrItems) //Only add revolver ammo if the user has a gun that can shoot it
if(istype(I,/obj/item/weapon/gun/projectile))
hasRevolver = 1
if(hasRevolver) randomItems.Add("/obj/item/ammo_magazine/a357") //Revolver ammo
*/
randomItems.Add("/obj/item/ammo_magazine/a357") //Revolver ammo
randomItems.Add("/obj/item/clothing/shoes/syndigaloshes") //No-Slip Syndicate Shoes
randomItems.Add("/obj/item/weapon/plastique") //C4
if(uses > 0)
randomItems.Add("/obj/item/weapon/soap/syndie") //Syndicate Soap
randomItems.Add("/obj/item/weapon/storage/toolbox/syndicate") //Syndicate Toolbox
if(!randomItems)
del(randomItems)
return 0
else
var/buyItem = pick(randomItems)
switch(buyItem) //Ok, this gets a little messy, sorry.
if("/obj/item/weapon/circuitboard/teleporter")
uses -= 20
if("/obj/item/toy/syndicateballoon" , "/obj/item/weapon/storage/syndie_kit/imp_uplink" , "/obj/item/weapon/storage/box/syndicate")
uses -= 10
if("/obj/item/weapon/aiModule/syndicate" , "/obj/item/device/radio/beacon/syndicate")
uses -= 7
if("/obj/item/weapon/gun/projectile")
uses -= 6
if("/obj/item/weapon/gun/energy/crossbow" , "/obj/item/device/powersink")
uses -= 5
if("/obj/item/weapon/melee/energy/sword" , "/obj/item/clothing/mask/gas/voice" , "/obj/item/device/chameleon")
uses -= 4
if("/obj/item/weapon/storage/emp_kit" , "/obj/item/weapon/pen/paralysis" , "/obj/item/weapon/cartridge/syndicate" , "/obj/item/clothing/under/chameleon" , \
"/obj/item/weapon/card/id/syndicate" , "/obj/item/weapon/card/emag" , "/obj/item/weapon/storage/syndie_kit/space" , "/obj/item/device/encryptionkey/binary" , \
"/obj/item/weapon/storage/syndie_kit/imp_freedom" , "/obj/item/clothing/glasses/thermal")
uses -= 3
if("/obj/item/ammo_magazine/a357" , "/obj/item/clothing/shoes/syndigaloshes" , "/obj/item/weapon/plastique")
uses -= 2
if("/obj/item/weapon/soap/syndie" , "/obj/item/weapon/storage/toolbox/syndicate")
uses -= 1
del(randomItems)
return buyItem
proc/handleStatTracking(var/boughtItem)
//For stat tracking, sorry for making it so ugly
if(!boughtItem) return
switch(boughtItem)
if("/obj/item/weapon/circuitboard/teleporter")
feedback_add_details("traitor_uplink_items_bought","TP")
if("/obj/item/toy/syndicateballoon")
feedback_add_details("traitor_uplink_items_bought","BS")
if("/obj/item/weapon/storage/syndie_kit/imp_uplink")
feedback_add_details("traitor_uplink_items_bought","UI")
if("/obj/item/weapon/storage/box/syndicate")
feedback_add_details("traitor_uplink_items_bought","BU")
if("/obj/item/weapon/aiModule/syndicate")
feedback_add_details("traitor_uplink_items_bought","AI")
if("/obj/item/device/radio/beacon/syndicate")
feedback_add_details("traitor_uplink_items_bought","SB")
if("/obj/item/weapon/gun/projectile")
feedback_add_details("traitor_uplink_items_bought","RE")
if("/obj/item/weapon/gun/energy/crossbow")
feedback_add_details("traitor_uplink_items_bought","XB")
if("/obj/item/device/powersink")
feedback_add_details("traitor_uplink_items_bought","PS")
if("/obj/item/weapon/melee/energy/sword")
feedback_add_details("traitor_uplink_items_bought","ES")
if("/obj/item/clothing/mask/gas/voice")
feedback_add_details("traitor_uplink_items_bought","VC")
if("/obj/item/device/chameleon")
feedback_add_details("traitor_uplink_items_bought","CP")
if("/obj/item/weapon/storage/emp_kit")
feedback_add_details("traitor_uplink_items_bought","EM")
if("/obj/item/weapon/pen/paralysis")
feedback_add_details("traitor_uplink_items_bought","PP")
if("/obj/item/weapon/cartridge/syndicate")
feedback_add_details("traitor_uplink_items_bought","DC")
if("/obj/item/clothing/under/chameleon")
feedback_add_details("traitor_uplink_items_bought","CJ")
if("/obj/item/weapon/card/id/syndicate")
feedback_add_details("traitor_uplink_items_bought","AC")
if("/obj/item/weapon/card/emag")
feedback_add_details("traitor_uplink_items_bought","EC")
if("/obj/item/weapon/storage/syndie_kit/space")
feedback_add_details("traitor_uplink_items_bought","SS")
if("/obj/item/device/encryptionkey/binary")
feedback_add_details("traitor_uplink_items_bought","BT")
if("/obj/item/weapon/storage/syndie_kit/imp_freedom")
feedback_add_details("traitor_uplink_items_bought","FI")
if("/obj/item/clothing/glasses/thermal")
feedback_add_details("traitor_uplink_items_bought","TM")
if("/obj/item/ammo_magazine/a357")
feedback_add_details("traitor_uplink_items_bought","RA")
if("/obj/item/clothing/shoes/syndigaloshes")
feedback_add_details("traitor_uplink_items_bought","SH")
if("/obj/item/weapon/plastique")
feedback_add_details("traitor_uplink_items_bought","C4")
if("/obj/item/weapon/soap/syndie")
feedback_add_details("traitor_uplink_items_bought","SP")
if("/obj/item/weapon/storage/toolbox/syndicate")
feedback_add_details("traitor_uplink_items_bought","ST")
*/
Topic(href, href_list)
if (href_list["buy_item"])
/* if(href_list["buy_item"] == "random")
var/list/randomItems = list()
//Sorry for all the ifs, but it makes it 1000 times easier for other people/servers to add or remove items from this list
//Add only items the player can afford:
if(uses > 19)
randomItems.Add("/obj/item/weapon/circuitboard/teleporter") //Teleporter Circuit Board (costs 20, for nuke ops)
if(uses > 9)
randomItems.Add("/obj/item/toy/syndicateballoon")//Syndicate Balloon
randomItems.Add("/obj/item/weapon/storage/syndie_kit/imp_uplink") //Uplink Implanter
randomItems.Add("/obj/item/weapon/storage/box/syndicate") //Syndicate bundle
//if(uses > 8) //Nothing... yet.
//if(uses > 7) //Nothing... yet.
if(uses > 6)
randomItems.Add("/obj/item/weapon/aiModule/syndicate") //Hacked AI Upload Module
randomItems.Add("/obj/item/device/radio/beacon/syndicate") //Singularity Beacon
if(uses > 5)
randomItems.Add("/obj/item/weapon/gun/projectile") //Revolver
if(uses > 4)
randomItems.Add("/obj/item/weapon/gun/energy/crossbow") //Energy Crossbow
randomItems.Add("/obj/item/device/powersink") //Powersink
if(uses > 3)
randomItems.Add("/obj/item/weapon/melee/energy/sword") //Energy Sword
randomItems.Add("/obj/item/clothing/mask/gas/voice") //Voice Changer
randomItems.Add("/obj/item/device/chameleon") //Chameleon Projector
if(uses > 2)
randomItems.Add("/obj/item/weapon/storage/emp_kit") //EMP Grenades
randomItems.Add("/obj/item/weapon/pen/paralysis") //Paralysis Pen
randomItems.Add("/obj/item/weapon/cartridge/syndicate") //Detomatix Cartridge
randomItems.Add("/obj/item/clothing/under/chameleon") //Chameleon Jumpsuit
randomItems.Add("/obj/item/weapon/card/id/syndicate") //Agent ID Card
randomItems.Add("/obj/item/weapon/card/emag") //Cryptographic Sequencer
randomItems.Add("/obj/item/weapon/storage/syndie_kit/space") //Syndicate Space Suit
randomItems.Add("/obj/item/device/encryptionkey/binary") //Binary Translator Key
randomItems.Add("/obj/item/weapon/storage/syndie_kit/imp_freedom") //Freedom Implant
randomItems.Add("/obj/item/clothing/glasses/thermal") //Thermal Imaging Goggles
if(uses > 1)
/*
var/list/usrItems = usr.get_contents() //Checks to see if the user has a revolver before giving ammo
var/hasRevolver = 0
for(var/obj/I in usrItems) //Only add revolver ammo if the user has a gun that can shoot it
if(istype(I,/obj/item/weapon/gun/projectile))
hasRevolver = 1
if(hasRevolver) randomItems.Add("/obj/item/ammo_magazine/a357") //Revolver ammo
*/
randomItems.Add("/obj/item/ammo_magazine/a357") //Revolver ammo
randomItems.Add("/obj/item/clothing/shoes/syndigaloshes") //No-Slip Syndicate Shoes
randomItems.Add("/obj/item/weapon/plastique") //C4
if(uses > 0)
randomItems.Add("/obj/item/weapon/soap/syndie") //Syndicate Soap
randomItems.Add("/obj/item/weapon/storage/toolbox/syndicate") //Syndicate Toolbox
if(!randomItems)
del(randomItems)
return 0
else
href_list["buy_item"] = pick(randomItems)
switch(href_list["buy_item"]) //Ok, this gets a little messy, sorry.
if("/obj/item/weapon/circuitboard/teleporter")
uses -= 20
if("/obj/item/toy/syndicateballoon" , "/obj/item/weapon/storage/syndie_kit/imp_uplink" , "/obj/item/weapon/storage/box/syndicate")
uses -= 10
if("/obj/item/weapon/aiModule/syndicate" , "/obj/item/device/radio/beacon/syndicate")
uses -= 7
if("/obj/item/weapon/gun/projectile")
uses -= 6
if("/obj/item/weapon/gun/energy/crossbow" , "/obj/item/device/powersink")
uses -= 5
if("/obj/item/weapon/melee/energy/sword" , "/obj/item/clothing/mask/gas/voice" , "/obj/item/device/chameleon")
uses -= 4
if("/obj/item/weapon/storage/emp_kit" , "/obj/item/weapon/pen/paralysis" , "/obj/item/weapon/cartridge/syndicate" , "/obj/item/clothing/under/chameleon" , \
"/obj/item/weapon/card/id/syndicate" , "/obj/item/weapon/card/emag" , "/obj/item/weapon/storage/syndie_kit/space" , "/obj/item/device/encryptionkey/binary" , \
"/obj/item/weapon/storage/syndie_kit/imp_freedom" , "/obj/item/clothing/glasses/thermal")
uses -= 3
if("/obj/item/ammo_magazine/a357" , "/obj/item/clothing/shoes/syndigaloshes" , "/obj/item/weapon/plastique")
uses -= 2
if("/obj/item/weapon/soap/syndie" , "/obj/item/weapon/storage/toolbox/syndicate")
uses -= 1
del(randomItems)
return 1
*/
if(text2num(href_list["cost"]) > uses) // Not enough crystals for the item
if(href_list["buy_item"] == "random")
return 0
/*
var/boughtItem = chooseRandomItem()
if(boughtItem)
href_list["buy_item"] = boughtItem
feedback_add_details("traitor_uplink_items_bought","RN")
return 1
else
return 0
*/
else
if(text2num(href_list["cost"]) > uses) // Not enough crystals for the item
return 0
//if(usr:mind && ticker.mode.traitors[usr:mind])
//var/datum/traitorinfo/info = ticker.mode.traitors[usr:mind]
//info.spawnlist += href_list["buy_item"]
uses -= text2num(href_list["cost"])
//if(usr:mind && ticker.mode.traitors[usr:mind])
//var/datum/traitorinfo/info = ticker.mode.traitors[usr:mind]
//info.spawnlist += href_list["buy_item"]
uses -= text2num(href_list["cost"])
// handleStatTracking(href_list["buy_item"]) //Note: chooseRandomItem handles it's own stat tracking. This proc is not meant for 'random'.
return 1
+1 -1
View File
@@ -68,7 +68,7 @@ obj/structure/windoor_assembly/Del()
playsound(src.loc, 'Welder2.ogg', 50, 1)
if(do_after(user, 40))
if(!src) return
if(!src || !WT.isOn()) return
user << "\blue You dissasembled the windoor assembly!"
new /obj/item/stack/sheet/rglass(get_turf(src), 5)
if(secure)
+10 -10
View File
@@ -1,15 +1,15 @@
/* Simple object type, calls a proc when "stepped" on by something */
/obj/step_trigger
/obj/effect/step_trigger
var/affect_ghosts = 0
var/stopper = 1 // stops throwers
invisibility = 101 // nope cant see this shit
anchored = 1
/obj/step_trigger/proc/Trigger(var/atom/movable/A)
/obj/effect/step_trigger/proc/Trigger(var/atom/movable/A)
return 0
/obj/step_trigger/HasEntered(H as mob|obj)
/obj/effect/step_trigger/HasEntered(H as mob|obj)
..()
if(!H)
return
@@ -21,7 +21,7 @@
/* Tosses things in a certain direction */
/obj/step_trigger/thrower
/obj/effect/step_trigger/thrower
var/direction = SOUTH // the direction of throw
var/tiles = 3 // if 0: forever until atom hits a stopper
var/immobilize = 1 // if nonzero: prevents mobs from moving while they're being flung
@@ -33,7 +33,7 @@
Trigger(var/atom/movable/A)
var/curtiles = 0
var/stopthrow = 0
for(var/obj/step_trigger/thrower/T in orange(2, src))
for(var/obj/effect/step_trigger/thrower/T in orange(2, src))
if(A in T.affecting)
return
@@ -56,11 +56,11 @@
// Calculate if we should stop the process
if(!nostop)
for(var/obj/step_trigger/T in get_step(A, direction))
for(var/obj/effect/step_trigger/T in get_step(A, direction))
if(T.stopper && T != src)
stopthrow = 1
else
for(var/obj/step_trigger/teleporter/T in get_step(A, direction))
for(var/obj/effect/step_trigger/teleporter/T in get_step(A, direction))
if(T.stopper)
stopthrow = 1
@@ -81,11 +81,11 @@
/* Stops things thrown by a thrower, doesn't do anything */
/obj/step_trigger/stopper
/obj/effect/step_trigger/stopper
/* Instant teleporter */
/obj/step_trigger/teleporter
/obj/effect/step_trigger/teleporter
var/teleport_x = 0 // teleportation coordinates (if one is null, then no teleport!)
var/teleport_y = 0
var/teleport_z = 0
@@ -99,7 +99,7 @@
/* Random teleporter, teleports atoms to locations ranging from teleport_x - teleport_x_offset, etc */
/obj/step_trigger/teleporter/random
/obj/effect/step_trigger/teleporter/random
var/teleport_x_offset = 0
var/teleport_y_offset = 0
var/teleport_z_offset = 0
+4 -11
View File
@@ -521,14 +521,11 @@
if( istype(W, /obj/item/weapon/weldingtool) )
var/obj/item/weapon/weldingtool/WT = W
if( WT.remove_fuel(0,user) )
WT.welding = 2
user << "<span class='notice'>You begin slicing through the outer plating.</span>"
playsound(src.loc, 'Welder.ogg', 100, 1)
sleep(100)
if( !istype(src, /turf/simulated/wall) || !user || !WT || !T ) return
WT.welding = 1
if( !istype(src, /turf/simulated/wall) || !user || !WT || !WT.isOn() || !T ) return
if( user.loc == T && user.equipped() == WT )
user << "<span class='notice'>You remove the outer plating.</span>"
@@ -681,14 +678,12 @@
if( istype(W, /obj/item/weapon/weldingtool) )
var/obj/item/weapon/weldingtool/WT = W
if( WT.remove_fuel(0,user) )
WT.welding = 2
user << "<span class='notice'>You begin slicing through the metal cover.</span>"
playsound(src.loc, 'Welder.ogg', 100, 1)
sleep(60)
if( !istype(src, /turf/simulated/wall/r_wall) || !user || !WT || !T ) return
WT.welding = 1
if( !istype(src, /turf/simulated/wall/r_wall) || !user || !WT || !WT.isOn() || !T ) return
if( d_state == 2 && user.loc == T && user.equipped() == WT )
src.d_state = 3
@@ -746,14 +741,12 @@
if( istype(W, /obj/item/weapon/weldingtool) )
var/obj/item/weapon/weldingtool/WT = W
if( WT.remove_fuel(0,user) )
WT.welding = 2
user << "<span class='notice'>You begin slicing through the support rods.</span>"
playsound(src.loc, 'Welder.ogg', 100, 1)
sleep(100)
if( !istype(src, /turf/simulated/wall/r_wall) || !user || !WT || !T ) return
WT.welding = 1
if( !istype(src, /turf/simulated/wall/r_wall) || !user || !WT || !WT.isOn() || !T ) return
if( d_state == 5 && user.loc == T && user.equipped() == WT )
src.d_state = 6
@@ -1382,7 +1375,7 @@ turf/simulated/floor/return_siding_icon_state()
if(istype(C, /obj/item/weapon/weldingtool))
var/obj/item/weapon/weldingtool/welder = C
if(welder.welding && (is_plating()))
if(welder.isOn() && (is_plating()))
if(broken || burnt)
if(welder.remove_fuel(0,user))
user << "\red You fix some dents on the broken plating."
+9 -1
View File
@@ -31,7 +31,15 @@
for (var/mob/M in world)
if(M && M.client && M.client.holder)
if(usr.client.holder && (usr.client.holder.level != 0))
usr << "[M.key] is a [M.client.holder.rank][M.client.stealth ? " <i>(as [M.client.fakekey])</i>" : ""]"
var/afk = 0
if( M.client.inactivity > 3000 ) //3000 deciseconds = 300 seconds = 5 minutes
afk = 1
if(isobserver(M))
usr << "[M.key] is a [M.client.holder.rank][M.client.stealth ? " <i>(as [M.client.fakekey])</i>" : ""] - Observing [afk ? "(AFK)" : ""]"
else if(istype(M,/mob/new_player))
usr << "[M.key] is a [M.client.holder.rank][M.client.stealth ? " <i>(as [M.client.fakekey])</i>" : ""] - Has not entered [afk ? "(AFK)" : ""]"
else if(istype(M,/mob/living))
usr << "[M.key] is a [M.client.holder.rank][M.client.stealth ? " <i>(as [M.client.fakekey])</i>" : ""] - Playing [afk ? "(AFK)" : ""]"
else if(!M.client.stealth && (M.client.holder.level != -3))
usr << "\t[pick(nobles)] [M.client] is a [M.client.holder.rank]"
+19 -16
View File
@@ -9,13 +9,7 @@
//SYSTEM
/proc/investigate_subject2file(var/subject)
switch(subject)
if("singulo")
return file("[INVESTIGATE_DIR]singulo.html")
if("silicon")
return file("[INVESTIGATE_DIR]silicon.html")
else
return
return file("[INVESTIGATE_DIR][subject].html")
/proc/investigate_reset()
if(fdel(INVESTIGATE_DIR)) return 1
@@ -27,17 +21,26 @@
if(!F) return
F << "<small>[time2text(world.timeofday,"hh:mm")] \ref[src] ([x],[y],[z])</small> || [src] [message]<br>"
//ADMINVERBS
/client/proc/investigate_show( subject in list("singulo","silicon") )
/client/proc/investigate_show( subject in list("hrefs","singulo") )
set name = "Investigate"
set category = "Admin"
if(!holder) return
var/F = investigate_subject2file(subject)
if(!F)
src << "<font color='red'>Error: admin_investigate: [INVESTIGATE_DIR][subject] is an invalid path or cannot be accessed.</font>"
return
src << browse(F,"window=investigate;size=800x300")
switch(subject)
if("singulo") //general one-round-only stuff
var/F = investigate_subject2file(subject)
if(!F)
src << "<font color='red'>Error: admin_investigate: [INVESTIGATE_DIR][subject] is an invalid path or cannot be accessed.</font>"
return
src << browse(F,"window=investigate[subject];size=800x300")
if("hrefs") //persistant logs and stuff
if(config && config.log_hrefs)
if(href_logfile)
src << browse(href_logfile,"window=investigate[subject];size=800x300")
else
src << "<font color='red'>Error: admin_investigate: No href logfile found.</font>"
return
else
src << "<font color='red'>Error: admin_investigate: Href Logging is not on.</font>"
return
+15 -1
View File
@@ -307,6 +307,7 @@
verbs += /client/proc/giveruntimelog //used by coders to retrieve runtime logs
verbs += /client/proc/cinematic //show a cinematic sequence
verbs += /client/proc/startSinglo //Used to prevent the station from losing power while testing stuff out.
verbs += /client/proc/toggle_log_hrefs
verbs += /client/proc/enable_debug_verbs
verbs += /client/proc/kill_air
verbs += /client/proc/callprocgen
@@ -440,7 +441,8 @@
verbs -= /client/proc/getserverlog
verbs -= /client/proc/cinematic //show a cinematic sequence
verbs -= /client/proc/admin_memo
verbs -= /client/proc/investigate_show
verbs -= /client/proc/investigate_show //investigate in-game mishaps using various logs.
verbs -= /client/proc/toggle_log_hrefs
verbs -= /client/proc/cmd_admin_change_custom_event
verbs -= /client/proc/admin_invis
verbs -= /client/proc/callprocgen
@@ -881,6 +883,18 @@
// feedback_add_details("admin_verb","TAVVH") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
return
/client/proc/toggle_log_hrefs()
set name = "Toggle href logging"
set category = "Server"
if(!holder) return
if(config)
if(config.log_hrefs)
config.log_hrefs = 0
src << "<b>Stopped logging hrefs</b>"
else
config.log_hrefs = 1
src << "<b>Started logging hrefs</b>"
/client/proc/admin_invis()
set category = "Admin"
set name = "Invisibility"
+3 -3
View File
@@ -215,7 +215,7 @@ proc/check_panel(mob/M)
return 1
return 0*/
/obj/fake_attacker
/obj/effect/fake_attacker
icon = null
icon_state = null
name = ""
@@ -358,8 +358,8 @@ var/list/non_fakeattack_weapons = list(/obj/item/weapon/gun/projectile, /obj/ite
if(!possible_clones.len) return
clone = pick(possible_clones)
//var/obj/fake_attacker/F = new/obj/fake_attacker(outside_range(target))
var/obj/fake_attacker/F = new/obj/fake_attacker(target.loc)
//var/obj/effect/fake_attacker/F = new/obj/effect/fake_attacker(outside_range(target))
var/obj/effect/fake_attacker/F = new/obj/effect/fake_attacker(target.loc)
if(clone.l_hand)
if(!(locate(clone.l_hand) in non_fakeattack_weapons))
clone_weapon = clone.l_hand.name
+2 -2
View File
@@ -85,7 +85,7 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
/mob/dead/observer/Move(NewLoc, direct)
if(NewLoc)
loc = NewLoc
for(var/obj/step_trigger/S in NewLoc)
for(var/obj/effect/step_trigger/S in NewLoc)
S.HasEntered(src)
return
@@ -99,7 +99,7 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
if((direct & WEST) && x > 1)
x--
for(var/obj/step_trigger/S in locate(x, y, z))
for(var/obj/effect/step_trigger/S in locate(x, y, z))
S.HasEntered(src)
/mob/dead/observer/examine()
@@ -294,6 +294,14 @@
using.layer = 20
src.adding += using
using = new src.h_type( src )
using.name = "equip"
using.icon = ui_style
using.icon_state = "act_equip"
using.screen_loc = ui_equip
using.layer = 20
src.adding += using
/*
using = new src.h_type( src )
using.name = "intent"
+13 -9
View File
@@ -942,10 +942,6 @@
client.screen -= hud_used.intents
client.screen -= hud_used.mov_int
//Screenlocs for these slots are handled by the huds other_update()
//because theyre located on the 'other' inventory bar.
// Gloves
var/datum/organ/external/lo = organs["l_hand"]
var/datum/organ/external/ro = organs["r_hand"]
@@ -1067,9 +1063,10 @@
clothing_overlays += image("icon" = 'back.dmi', "icon_state" = text("[][]", t1, (!( lying ) ? null : "2")), "layer" = BACK_LAYER)
back.screen_loc = ui_back
if(client) hud_used.other_update() //Update the screenloc of the items on the 'other' inventory bar
//to hide / show them.
// WHAT IS THIS DOING IN UPDATE_CLOTHING(), AHHHHHHHHHHHHH
if(client)
client.screen -= contents
client.screen += contents
//to hide / show them.
if (handcuffed)
pulling = null
var/h1 = handcuffed.icon_state
@@ -1128,6 +1125,11 @@
clothing_overlays += image("icon" = stain_icon, "layer" = B_SUIT_LAYER)
wear_suit.screen_loc = ui_oclothing
//Update_other() MUST be called after all the storage slots get updated. This is because all the storage slots assign their
//respective items a screen_loc, which other_update() will then override if needed.
if(client)
hud_used.other_update() //Update the screenloc of the items on the 'other' inventory bar
switch(shielded)
if(1)
overlays += image("icon" = 'effects.dmi', "icon_state" = "shield", "layer" = SHIELD_LAYER)
@@ -1225,11 +1227,13 @@
if(lying)
icon = lying_icon
overlays += body_overlays_lying
if(damageicon_lying)
overlays += body_overlays_lying
if(!lying)
icon = stand_icon
overlays += body_overlays_standing
if(damageicon_standing)
overlays += body_overlays_standing
+1 -1
View File
@@ -481,7 +481,7 @@
return null
update_canmove()
if(sleeping || paralysis || stunned || weakened || resting || buckled || (changeling && changeling.changeling_fakedeath))
if(stat || sleeping || paralysis || stunned || weakened || resting || buckled || (changeling && changeling.changeling_fakedeath))
canmove = 0
else
+20 -19
View File
@@ -67,6 +67,25 @@
return
message = "<B>[src]</B> [input]"
if ("me")
if(silent)
return
if (src.client && (client.muted || client.muted_complete))
src << "You are muted."
return
if (stat)
return
if(!(message))
return
else
if(cmptext(copytext(message, 1, 3), "v "))
message = "<B>[src]</B> [copytext(message, 3)]"
m_type = 1
else if(cmptext(copytext(message, 1, 3), "h "))
message = "<B>[src]</B> [copytext(message, 3)]"
m_type = 2
else
message = "<B>[src]</B> [message]"
if ("twitch")
message = "<B>[src]</B> twitches violently."
m_type = 1
@@ -189,25 +208,7 @@
playsound(src.loc, 'biamthelaw.ogg', 50, 0)
m_type = 2
if ("me")
if(silent)
return
if (src.client && (client.muted || client.muted_complete))
src << "You are muted."
return
if (stat)
return
if(!(message))
return
else
if(cmptext(copytext(message, 1, 3), "v "))
message = "<B>[src]</B> [copytext(message, 3)]"
m_type = 1
else if(cmptext(copytext(message, 1, 3), "h "))
message = "<B>[src]</B> [copytext(message, 3)]"
m_type = 2
else
message = "<B>[src]</B> [message]"
if("help")
src << "beep-(none)/mob, ping-(none)/mob, buzz-(none)/mob, look-(none)/mob, stare-(none)/mob, glare-(none)/mob, twitch, twitch_s, law"
@@ -420,11 +420,12 @@
if (istype(W, /obj/item/weapon/handcuffs)) // fuck i don't even know why isrobot() in handcuff code isn't working so this will have to do
return
if (istype(W, /obj/item/weapon/weldingtool) && W:welding)
if (istype(W, /obj/item/weapon/weldingtool))
var/obj/item/weapon/weldingtool/WT = W
if(getBruteLoss() == 0)
user << "There are no dents to fix here!"
return
else if (W:remove_fuel(0))
else if (WT.remove_fuel(0))
adjustBruteLoss(-30)
if(getBruteLoss() < 0) bruteloss = 0
updatehealth()
+1 -1
View File
@@ -12,7 +12,7 @@
//MOB overhaul
//Not in use yet
// var/obj/organstructure/organStructure = null
// var/obj/effect/organstructure/organStructure = null
//Vars that have been relocated to organStructure
//Vars that have been relocated to organStructure ++END
-5
View File
@@ -1,5 +1,3 @@
//This file was auto-corrected by findeclaration.exe on 29/05/2012 15:03:05
/mob/CanPass(atom/movable/mover, turf/target, height=0, air_group=0)
if(air_group || (height==0)) return 1
@@ -107,9 +105,6 @@
usr.hud_used.help_intent.icon_state = "help_small_active"
usr.hud_used.grab_intent.icon_state = "grab_small"
usr.hud_used.disarm_intent.icon_state = "disarm_small"
usr << "\blue Your intent is now \"[usr.a_intent]\"."
else
usr << "\red This mob type does not use intents."
//This gets called when you press the delete button.
/client/verb/delete_key_pressed()
+39 -7
View File
@@ -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
#define UI_OLD 0
#define UI_NEW 1
@@ -439,14 +439,48 @@ datum/preferences
if(job.title != new_title)
job_alt_titles[job.title] = new_title
proc/SetChoices(mob/user, changedjob)
proc/SetChoices(mob/user, limit = 17, list/splitJobs, width = 550, height = 500)
//limit - The amount of jobs allowed per column. Defaults to 17 to make it look nice.
//splitJobs - Allows you split the table by job. You can make different tables for each department by including their heads. Defaults to CE to make it look nice.
//width - Screen' width. Defaults to 550 to make it look nice.
//height - Screen's height. Defaults to 500 to make it look nice.
// Modify this if you added more jobs and it looks like a mess. Add the jobs in the splitJobs that you want to trigger and intitate a new table.
if(splitJobs == null)
if (ticker.current_state >= GAME_STATE_PLAYING
)
splitJobs = list()
else
splitJobs = list("Chief Engineer")
var/HTML = "<body>"
HTML += "<tt><center>"
HTML += "<b>Choose occupation chances</b><br>Unavailable occupations are in red.<br>"
HTML += "<table width='100%' cellpadding='1' cellspacing='0' align='center'>"
HTML += "<b>Choose occupation chances</b><br>Unavailable occupations are in red.<br><br>"
HTML += "<a align='center' href=\"byond://?src=\ref[user];preferences=1;occ=0;job=cancel\">\[Done\]</a><br><br>" // Easier to press up here.
HTML += "<table width='100%' cellpadding='1' cellspacing='0'><tr><td width='20%'>" // Table within a table for alignment, also allows you to easily add more colomns.
HTML += "<table width='100%' cellpadding='1' cellspacing='0'>"
var/index = -1
//The job before the current job. I only use this to get the previous jobs color when I'm filling in blank rows.
var/datum/job/lastJob
for(var/datum/job/job in job_master.occupations)
index += 1
if((index >= limit) || (job.title in splitJobs))
if((index < limit) && (lastJob != null))
//If the cells were broken up by a job in the splitJob list then it will fill in the rest of the cells with
//the last job's selection color. Creating a rather nice effect.
for(var/i = 0, i < (limit - index), i += 1)
HTML += "<tr bgcolor='[lastJob.selection_color]'><td width='60%' align='right'><a>&nbsp</a></td><td><a>&nbsp</a></td></tr>"
HTML += "</table></td><td width='20%'><table width='100%' cellpadding='1' cellspacing='0'>"
index = 0
HTML += "<tr bgcolor='[job.selection_color]'><td width='60%' align='right'>"
var/rank = job.title
lastJob = job
if(jobban_isbanned(user, rank))
HTML += "<font color=red>[rank]</font></td><td><font color=red><b> \[BANNED]</b></font></td></tr>"
continue
@@ -483,12 +517,10 @@ datum/preferences
else
HTML += "</a></td></tr>"
HTML += "</table><br>"
HTML += "<a href=\"byond://?src=\ref[user];preferences=1;occ=0;job=cancel\">\[Done\]</a>"
HTML += "</center></tt>"
user << browse(null, "window=preferences")
user << browse(HTML, "window=mob_occupation;size=320x600")
user << browse(HTML, "window=mob_occupation;size=[width]x[height]")
return
+9
View File
@@ -303,6 +303,15 @@
usr.hud_used.other_update()
if("equip")
var/obj/item/I = usr.get_active_hand()
if(!I)
usr << "\blue You are not holding anything to equip."
return
if(ishuman(usr))
var/mob/living/carbon/human/H = usr
H.equip_to_appropriate_slot(I)
if("maprefresh")
var/obj/machinery/computer/security/seccomp = usr.machine
+20 -22
View File
@@ -394,29 +394,27 @@
else if (istype(W, /obj/item/weapon/module/power_control) && opened && has_electronics==0 && ((stat & BROKEN) || malfhack))
user << "\red You cannot put the board inside, the frame is damaged."
return
else if (istype(W, /obj/item/weapon/weldingtool) && W:welding && opened && has_electronics==0 && !terminal)
if (W:get_fuel() < 3)
user << "\blue You need more welding fuel to do this."
else if (istype(W, /obj/item/weapon/weldingtool) && opened && has_electronics==0 && !terminal)
var/obj/item/weapon/weldingtool/WT = W
if (WT.get_fuel() < 3)
user << "\blue You need more welding fuel to complete this task."
return
user << "You start welding APC frame..."
if(W:remove_fuel(0,user))
W:welding = 2
playsound(src.loc, 'Welder.ogg', 50, 1)
if(do_after(user, 50))
if (emagged || malfhack || (stat & BROKEN) || opened==2)
new /obj/item/stack/sheet/metal(loc)
user.visible_message(\
"\red \The [src] has been cut apart by [user.name] with the welding tool.",\
"You disassemble the broken APC frame.",\
"\red You hear welding.")
else
new /obj/item/apc_frame(loc)
user.visible_message(\
"\red \The [src] has been cut from the wall by [user.name] with the welding tool.",\
"You cut APC frame from the wall.",\
"\red You hear welding.")
W:welding = 1
playsound(src.loc, 'Welder.ogg', 50, 1)
if(do_after(user, 50))
if(!src || !WT.remove_fuel(3, user)) return
if (emagged || malfhack || (stat & BROKEN) || opened==2)
new /obj/item/stack/sheet/metal(loc)
user.visible_message(\
"\red [src] has been cut apart by [user.name] with the weldingtool.",\
"You disassembled the broken APC frame.",\
"\red You hear welding.")
else
new /obj/item/apc_frame(loc)
user.visible_message(\
"\red [src] has been cut from the wall by [user.name] with the weldingtool.",\
"You cut APC frame from the wall.",\
"\red You hear welding.")
del(src)
return
else if (istype(W, /obj/item/apc_frame) && opened && emagged)
@@ -769,7 +767,7 @@
(istype(robot) && (robot in malfai.connected_robots)) \
) \
)
user << "\red \The [src] has it's AI control disabled!"
user << "\red \The [src] has its AI control disabled!"
user << browse(null, "window=apc")
user.machine = null
return 0
+7 -8
View File
@@ -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
/* new portable generator - work in progress
@@ -57,15 +57,14 @@ display round(lastgen) and plasmatank amount
var/recent_fault = 0
var/power_output = 1
proc
HasFuel() //Placeholder for fuel check.
return 1
proc/HasFuel() //Placeholder for fuel check.
return 1
UseFuel() //Placeholder for fuel use.
return
proc/UseFuel() //Placeholder for fuel use.
return
handleInactive()
return
proc/handleInactive()
return
process()
if(active && HasFuel() && !crit_fail && anchored)
+7 -8
View File
@@ -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/emitter
name = "Emitter"
@@ -149,7 +149,8 @@
user << "\red The [src.name] needs to be unwelded from the floor."
return
if(istype(W, /obj/item/weapon/weldingtool) && W:welding)
if(istype(W, /obj/item/weapon/weldingtool))
var/obj/item/weapon/weldingtool/WT = W
if(active)
user << "Turn off the [src] first."
return
@@ -157,29 +158,27 @@
if(0)
user << "\red The [src.name] needs to be wrenched to the floor."
if(1)
if (W:remove_fuel(0,user))
W:welding = 2
if (WT.remove_fuel(0,user))
playsound(src.loc, 'Welder2.ogg', 50, 1)
user.visible_message("[user.name] starts to weld the [src.name] to the floor.", \
"You start to weld the [src] to the floor.", \
"You hear welding")
if (do_after(user,20))
if(!src || !WT.isOn()) return
state = 2
user << "You weld the [src] to the floor."
W:welding = 1
else
user << "\red You need more welding fuel to complete this task."
if(2)
if (W:remove_fuel(0,user))
W:welding = 2
if (WT.remove_fuel(0,user))
playsound(src.loc, 'Welder2.ogg', 50, 1)
user.visible_message("[user.name] starts to cut the [src.name] free from the floor.", \
"You start to cut the [src] free from the floor.", \
"You hear welding")
if (do_after(user,20))
if(!src || !WT.isOn()) return
state = 1
user << "You cut the [src] free from the floor."
W:welding = 1
else
user << "\red You need more welding fuel to complete this task."
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:33
var/containment_fail_announced = 0
@@ -119,35 +119,34 @@ field_generator power level display
if(2)
user << "\red The [src.name] needs to be unwelded from the floor."
return
else if(istype(W, /obj/item/weapon/weldingtool) && W:welding)
else if(istype(W, /obj/item/weapon/weldingtool))
var/obj/item/weapon/weldingtool/WT = W
switch(state)
if(0)
user << "\red The [src.name] needs to be wrenched to the floor."
return
if(1)
if (W:remove_fuel(0,user))
W:welding = 2
if (WT.remove_fuel(0,user))
playsound(src.loc, 'Welder2.ogg', 50, 1)
user.visible_message("[user.name] starts to weld the [src.name] to the floor.", \
"You start to weld the [src] to the floor.", \
"You hear welding")
if (do_after(user,20))
if(!src || !WT.isOn()) return
state = 2
user << "You weld the field generator to the floor."
W:welding = 1
else
return
if(2)
if (W:remove_fuel(0,user))
W:welding = 2
if (WT.remove_fuel(0,user))
playsound(src.loc, 'Welder2.ogg', 50, 1)
user.visible_message("[user.name] starts to cut the [src.name] free from the floor.", \
"You start to cut the [src] free from the floor.", \
"You hear welding")
if (do_after(user,20))
if(!src || !WT.isOn()) return
state = 1
user << "You cut the [src] free from the floor."
W:welding = 2
else
return
else
@@ -356,4 +355,5 @@ field_generator power level display
if((world.time - O.last_warning) > 50) //to stop message-spam
temp = 0
message_admins("A singulo exists and a containment field has failed.",1)
investigate_log("has <font color='red'>failed</font> whilst a singulo exists.","singulo")
O.last_warning = world.time
+35 -28
View File
@@ -87,8 +87,11 @@
if(usr.stat)
return
if(anchored)
usr << "You must unfasten the pipe before rotating it."
return
dir = turn(dir, -90)
update()
@@ -100,6 +103,7 @@
if(anchored)
usr << "You must unfasten the pipe before flipping it."
return
dir = turn(dir, 180)
if(ptype == 2)
@@ -194,41 +198,44 @@
update()
else if(istype(I, /obj/item/weapon/weldingtool))
var/obj/item/weapon/weldingtool/W = I
if(W.remove_fuel(0,user))
playsound(src.loc, 'Welder2.ogg', 100, 1)
user << "Welding the [nicetype] in place."
W:welding = 2
if(do_after(user, 20))
user << "The [nicetype] has been welded in place!"
update() // TODO: Make this neat
if(ispipe) // Pipe
if(anchored)
var/obj/item/weapon/weldingtool/W = I
if(W.remove_fuel(0,user))
playsound(src.loc, 'Welder2.ogg', 100, 1)
user << "Welding the [nicetype] in place."
if(do_after(user, 20))
if(!src || !W.isOn()) return
user << "The [nicetype] has been welded in place!"
update() // TODO: Make this neat
if(ispipe) // Pipe
var/pipetype = dpipetype()
var/obj/structure/disposalpipe/P = new pipetype(src.loc)
P.base_icon_state = base_state
P.dir = dir
P.dpdir = dpdir
P.updateicon()
var/pipetype = dpipetype()
var/obj/structure/disposalpipe/P = new pipetype(src.loc)
P.base_icon_state = base_state
P.dir = dir
P.dpdir = dpdir
P.updateicon()
else if(ptype==6) // Disposal bin
var/obj/machinery/disposal/P = new /obj/machinery/disposal(src.loc)
P.mode = 0 // start with pump off
else if(ptype==6) // Disposal bin
var/obj/machinery/disposal/P = new /obj/machinery/disposal(src.loc)
P.mode = 0 // start with pump off
else if(ptype==7) // Disposal outlet
else if(ptype==7) // Disposal outlet
var/obj/structure/disposaloutlet/P = new /obj/structure/disposaloutlet(src.loc)
P.dir = dir
Trunk.linked = P
var/obj/structure/disposaloutlet/P = new /obj/structure/disposaloutlet(src.loc)
P.dir = dir
Trunk.linked = P
else if(ptype==8) // Disposal outlet
else if(ptype==8) // Disposal outlet
var/obj/machinery/disposal/deliveryChute/P = new /obj/machinery/disposal/deliveryChute(src.loc)
P.dir = dir
var/obj/machinery/disposal/deliveryChute/P = new /obj/machinery/disposal/deliveryChute(src.loc)
P.dir = dir
del(src)
del(src)
return
else
user << "You need more welding fuel to complete this task."
return
W:welding = 1
else
user << "You need more welding fuel to complete this task."
user << "You need to attach it to the plating first!"
return
+110 -85
View File
@@ -48,6 +48,10 @@
if(isrobot(user) && !istype(I, /obj/item/weapon/trashbag))
return
if(mode<=0) // It's off
if(contents.len > 0)
user << "Eject the items first!"
return
if(istype(I, /obj/item/weapon/screwdriver))
if(mode==0) // It's off but still not unscrewed
mode=-1 // Set it to doubleoff l0l
@@ -64,8 +68,9 @@
if(W.remove_fuel(0,user))
playsound(src.loc, 'Welder2.ogg', 100, 1)
user << "You start slicing the floorweld off the disposal unit."
W:welding = 2
if(do_after(user,20))
if(!src || !W.isOn()) return
user << "You sliced the floorweld off the disposal unit."
var/obj/structure/disposalconstruct/C = new (src.loc)
C.ptype = 6 // 6 = disposal unit
@@ -73,7 +78,6 @@
C.density = 1
C.update()
del(src)
W:welding = 1
return
else
user << "You need more welding fuel to complete this task."
@@ -896,23 +900,21 @@
if(istype(I, /obj/item/weapon/weldingtool))
var/obj/item/weapon/weldingtool/W = I
if(W.welding)
if(W.remove_fuel(0,user))
W:welding = 2
playsound(src.loc, 'Welder2.ogg', 100, 1)
// check if anything changed over 2 seconds
var/turf/uloc = user.loc
var/atom/wloc = W.loc
user << "Slicing the disposal pipe."
sleep(30)
if(user.loc == uloc && wloc == W.loc)
welded()
else
user << "You must stay still while welding the pipe."
W:welding = 1
if(W.remove_fuel(0,user))
playsound(src.loc, 'Welder2.ogg', 100, 1)
// check if anything changed over 2 seconds
var/turf/uloc = user.loc
var/atom/wloc = W.loc
user << "Slicing the disposal pipe."
sleep(30)
if(!W.isOn()) return
if(user.loc == uloc && wloc == W.loc)
welded()
else
user << "You need more welding fuel to cut the pipe."
return
user << "You must stay still while welding the pipe."
else
user << "You need more welding fuel to cut the pipe."
return
// called when pipe is cut with welder
proc/welded()
@@ -1238,95 +1240,114 @@
return P
//a trunk joining to a disposal bin or outlet on the same turf
/obj/structure/disposalpipe/trunk
icon_state = "pipe-t"
var/obj/linked // the linked obj/machinery/disposal or obj/disposaloutlet
New()
..()
dpdir = dir
spawn(1)
getlinked()
/obj/structure/disposalpipe/trunk/New()
..()
dpdir = dir
spawn(1)
getlinked()
update()
return
update()
return
proc/getlinked()
linked = null
var/obj/machinery/disposal/D = locate() in src.loc
if(D)
linked = D
if (!D.trunk)
D.trunk = src
/obj/structure/disposalpipe/trunk/proc/getlinked()
linked = null
var/obj/machinery/disposal/D = locate() in src.loc
if(D)
linked = D
if (!D.trunk)
D.trunk = src
var/obj/structure/disposaloutlet/O = locate() in src.loc
if(O)
linked = O
var/obj/structure/disposaloutlet/O = locate() in src.loc
if(O)
linked = O
update()
return
update()
return
// Override attackby so we disallow trunkremoval when somethings ontop
attackby(var/obj/item/I, var/mob/user)
/obj/structure/disposalpipe/trunk/attackby(var/obj/item/I, var/mob/user)
if(linked != null)
//Disposal bins or chutes
/*
These shouldn't be required
var/obj/machinery/disposal/D = locate() in src.loc
if(D && D.anchored)
return
//Disposal outlet
var/obj/structure/disposaloutlet/O = locate() in src.loc
if(O && O.anchored)
return
*/
//Disposal constructors
var/obj/structure/disposalconstruct/C = locate() in src.loc
if(C && C.anchored)
return
var/turf/T = src.loc
if(T.intact)
return // prevent interaction with T-scanner revealed pipes
if(istype(I, /obj/item/weapon/weldingtool))
var/obj/item/weapon/weldingtool/W = I
if(W.remove_fuel(0,user))
playsound(src.loc, 'Welder2.ogg', 100, 1)
// check if anything changed over 2 seconds
var/turf/uloc = user.loc
var/atom/wloc = W.loc
user << "Slicing the disposal pipe."
sleep(30)
if(!W.isOn()) return
if(user.loc == uloc && wloc == W.loc)
welded()
else
user << "You must stay still while welding the pipe."
else
user << "You need more welding fuel to cut the pipe."
return
var/turf/T = src.loc
if(T.intact)
return // prevent interaction with T-scanner revealed pipes
if(istype(I, /obj/item/weapon/weldingtool))
var/obj/item/weapon/weldingtool/W = I
if(W.welding)
if(W.remove_fuel(0,user))
W:welding = 2
playsound(src.loc, 'Welder2.ogg', 100, 1)
// check if anything changed over 2 seconds
var/turf/uloc = user.loc
var/atom/wloc = W.loc
user << "Slicing the disposal pipe."
sleep(30)
if(user.loc == uloc && wloc == W.loc)
welded()
else
user << "You must stay still while welding the pipe."
W:welding = 1
else
user << "You need more welding fuel to cut the pipe."
return
// would transfer to next pipe segment, but we are in a trunk
// if not entering from disposal bin,
// transfer to linked object (outlet or bin)
transfer(var/obj/structure/disposalholder/H)
/obj/structure/disposalpipe/trunk/transfer(var/obj/structure/disposalholder/H)
if(H.dir == DOWN) // we just entered from a disposer
return ..() // so do base transfer proc
// otherwise, go to the linked object
if(linked)
var/obj/structure/disposaloutlet/O = linked
if(istype(O) && (H))
O.expel(H) // expel at outlet
else
var/obj/machinery/disposal/D = linked
if(H)
D.expel(H) // expel at disposal
if(H.dir == DOWN) // we just entered from a disposer
return ..() // so do base transfer proc
// otherwise, go to the linked object
if(linked)
var/obj/structure/disposaloutlet/O = linked
if(istype(O) && (H))
O.expel(H) // expel at outlet
else
var/obj/machinery/disposal/D = linked
if(H)
src.expel(H, src.loc, 0) // expel at turf
return null
D.expel(H) // expel at disposal
else
if(H)
src.expel(H, src.loc, 0) // expel at turf
return null
// nextdir
nextdir(var/fromdir)
if(fromdir == DOWN)
return dir
else
return 0
/obj/structure/disposalpipe/trunk/nextdir(var/fromdir)
if(fromdir == DOWN)
return dir
else
return 0
// a broken pipe
/obj/structure/disposalpipe/broken
@@ -1369,6 +1390,11 @@
spawn(1)
target = get_ranged_target_turf(src, dir, 10)
var/obj/structure/disposalpipe/trunk/trunk = locate() in src.loc
if(trunk)
trunk.linked = src // link the pipe trunk to self
// expel the contents of the holder object, then delete it
// called when the holder exits the outlet
proc/expel(var/obj/structure/disposalholder/H)
@@ -1419,8 +1445,8 @@
if(W.remove_fuel(0,user))
playsound(src.loc, 'Welder2.ogg', 100, 1)
user << "You start slicing the floorweld off the disposal outlet."
W:welding = 2
if(do_after(user,20))
if(!src || !W.isOn()) return
user << "You sliced the floorweld off the disposal outlet."
var/obj/structure/disposalconstruct/C = new (src.loc)
C.ptype = 7 // 7 = outlet
@@ -1428,7 +1454,6 @@
C.anchored = 1
C.density = 1
del(src)
W:welding = 1
return
else
user << "You need more welding fuel to complete this task."
+9 -2
View File
@@ -375,6 +375,14 @@
var/defaultDestination = "Disposals"
var/c_mode = 0
New()
..()
spawn(5)
trunk = locate() in src.loc
if(trunk)
trunk.linked = src // link the pipe trunk to self
interact()
return
@@ -451,8 +459,8 @@
if(W.remove_fuel(0,user))
playsound(src.loc, 'Welder2.ogg', 100, 1)
user << "You start slicing the floorweld off the delivery chute."
W:welding = 2
if(do_after(user,20))
if(!src || !W.isOn()) return
user << "You sliced the floorweld off the delivery chute."
var/obj/structure/disposalconstruct/C = new (src.loc)
C.ptype = 8 // 8 = Delivery chute
@@ -460,7 +468,6 @@
C.anchored = 1
C.density = 1
del(src)
W:welding = 1
return
else
user << "You need more welding fuel to complete this task."
Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.0 KiB

After

Width:  |  Height:  |  Size: 7.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 139 KiB

After

Width:  |  Height:  |  Size: 139 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 151 KiB

After

Width:  |  Height:  |  Size: 153 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 121 KiB

After

Width:  |  Height:  |  Size: 124 KiB

BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 15 KiB

BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 16 KiB

+98 -98
View File
@@ -5943,21 +5943,21 @@
"cko" = (/turf/space,/area/syndicate_station/one)
"ckp" = (/turf/space,/area/syndicate_station/four)
"ckq" = (/turf/unsimulated/wall,/area)
"ckr" = (/obj/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/north/shuttlespace_ns15,/area)
"cks" = (/obj/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/north/shuttlespace_ns9,/area)
"ckt" = (/obj/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/north/shuttlespace_ns5,/area)
"cku" = (/obj/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/north/shuttlespace_ns12,/area)
"ckv" = (/obj/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/north/shuttlespace_ns8,/area)
"ckw" = (/obj/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/north/shuttlespace_ns3,/area)
"ckx" = (/obj/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/north/shuttlespace_ns6,/area)
"cky" = (/obj/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/north/shuttlespace_ns7,/area)
"ckz" = (/obj/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/north/shuttlespace_ns4,/area)
"ckA" = (/obj/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/north/shuttlespace_ns14,/area)
"ckB" = (/obj/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/north/shuttlespace_ns1,/area)
"ckC" = (/obj/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/north/shuttlespace_ns11,/area)
"ckD" = (/obj/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/north/shuttlespace_ns13,/area)
"ckE" = (/obj/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/north/shuttlespace_ns2,/area)
"ckF" = (/obj/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/north/shuttlespace_ns10,/area)
"ckr" = (/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/north/shuttlespace_ns15,/area)
"cks" = (/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/north/shuttlespace_ns9,/area)
"ckt" = (/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/north/shuttlespace_ns5,/area)
"cku" = (/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/north/shuttlespace_ns12,/area)
"ckv" = (/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/north/shuttlespace_ns8,/area)
"ckw" = (/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/north/shuttlespace_ns3,/area)
"ckx" = (/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/north/shuttlespace_ns6,/area)
"cky" = (/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/north/shuttlespace_ns7,/area)
"ckz" = (/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/north/shuttlespace_ns4,/area)
"ckA" = (/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/north/shuttlespace_ns14,/area)
"ckB" = (/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/north/shuttlespace_ns1,/area)
"ckC" = (/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/north/shuttlespace_ns11,/area)
"ckD" = (/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/north/shuttlespace_ns13,/area)
"ckE" = (/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/north/shuttlespace_ns2,/area)
"ckF" = (/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/north/shuttlespace_ns10,/area)
"ckG" = (/turf/space/transit/east/shuttlespace_ew13,/area)
"ckH" = (/turf/space/transit/east/shuttlespace_ew14,/area)
"ckI" = (/turf/space/transit/east/shuttlespace_ew15,/area)
@@ -5965,21 +5965,21 @@
"ckK" = (/turf/space/transit/east/shuttlespace_ew2,/area)
"ckL" = (/turf/space/transit/east/shuttlespace_ew3,/area)
"ckM" = (/turf/space/transit/east/shuttlespace_ew4,/area)
"ckN" = (/obj/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/east/shuttlespace_ew5,/area)
"ckO" = (/obj/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/east/shuttlespace_ew6,/area)
"ckP" = (/obj/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/east/shuttlespace_ew7,/area)
"ckQ" = (/obj/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/east/shuttlespace_ew8,/area)
"ckR" = (/obj/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/east/shuttlespace_ew9,/area)
"ckS" = (/obj/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/east/shuttlespace_ew10,/area)
"ckT" = (/obj/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/east/shuttlespace_ew11,/area)
"ckU" = (/obj/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/east/shuttlespace_ew12,/area)
"ckV" = (/obj/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/east/shuttlespace_ew13,/area)
"ckW" = (/obj/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/east/shuttlespace_ew14,/area)
"ckX" = (/obj/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/east/shuttlespace_ew15,/area)
"ckY" = (/obj/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/east/shuttlespace_ew1,/area)
"ckZ" = (/obj/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/east/shuttlespace_ew2,/area)
"cla" = (/obj/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/east/shuttlespace_ew3,/area)
"clb" = (/obj/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/east/shuttlespace_ew4,/area)
"ckN" = (/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/east/shuttlespace_ew5,/area)
"ckO" = (/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/east/shuttlespace_ew6,/area)
"ckP" = (/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/east/shuttlespace_ew7,/area)
"ckQ" = (/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/east/shuttlespace_ew8,/area)
"ckR" = (/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/east/shuttlespace_ew9,/area)
"ckS" = (/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/east/shuttlespace_ew10,/area)
"ckT" = (/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/east/shuttlespace_ew11,/area)
"ckU" = (/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/east/shuttlespace_ew12,/area)
"ckV" = (/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/east/shuttlespace_ew13,/area)
"ckW" = (/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/east/shuttlespace_ew14,/area)
"ckX" = (/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/east/shuttlespace_ew15,/area)
"ckY" = (/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/east/shuttlespace_ew1,/area)
"ckZ" = (/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/east/shuttlespace_ew2,/area)
"cla" = (/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/east/shuttlespace_ew3,/area)
"clb" = (/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/east/shuttlespace_ew4,/area)
"clc" = (/turf/space{icon_state = "black"},/area)
"cld" = (/turf/unsimulated/wall{icon = 'mineral_walls.dmi'; icon_state = "iron6"},/area)
"cle" = (/obj/structure/window/reinforced,/turf/unsimulated/wall{icon = 'mineral_walls.dmi'; icon_state = "iron12"},/area)
@@ -6026,31 +6026,31 @@
"clT" = (/turf/simulated/floor/holofloor{dir = 4; icon_state = "red"},/area/holodeck/source_emptycourt)
"clU" = (/turf/simulated/floor/holofloor{dir = 8; icon_state = "blue"},/area/holodeck/source_emptycourt)
"clV" = (/turf/simulated/floor/holofloor{dir = 4; icon_state = "blue"},/area/holodeck/source_emptycourt)
"clW" = (/obj/step_trigger/thrower{affect_ghosts = 1; name = "thrower_leftnostop"},/turf/space/transit/east/shuttlespace_ew13,/area)
"clX" = (/obj/step_trigger/thrower{affect_ghosts = 1; name = "thrower_leftnostop"},/turf/space/transit/east/shuttlespace_ew14,/area)
"clY" = (/obj/step_trigger/thrower{affect_ghosts = 1; name = "thrower_leftnostop"},/turf/space/transit/east/shuttlespace_ew15,/area)
"clZ" = (/obj/step_trigger/thrower{affect_ghosts = 1; name = "thrower_leftnostop"},/turf/space/transit/east/shuttlespace_ew1,/area)
"cma" = (/obj/step_trigger/thrower{affect_ghosts = 1; name = "thrower_leftnostop"},/turf/space/transit/east/shuttlespace_ew2,/area)
"cmb" = (/obj/step_trigger/thrower{affect_ghosts = 1; name = "thrower_leftnostop"},/turf/space/transit/east/shuttlespace_ew3,/area)
"cmc" = (/obj/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdown"; tiles = 0},/turf/space/transit/north/shuttlespace_ns13,/area)
"cmd" = (/obj/step_trigger/thrower{affect_ghosts = 1; direction = 8; name = "thrower_escapeshuttletop(left)"; tiles = 0},/turf/space/transit/north/shuttlespace_ns11,/area)
"cme" = (/obj/step_trigger/thrower{affect_ghosts = 1; direction = 8; name = "thrower_escapeshuttletop(left)"; tiles = 0},/turf/space/transit/north/shuttlespace_ns6,/area)
"cmf" = (/obj/step_trigger/thrower{affect_ghosts = 1; direction = 8; name = "thrower_escapeshuttletop(left)"; tiles = 0},/turf/space/transit/north/shuttlespace_ns8,/area)
"cmg" = (/obj/step_trigger/thrower{affect_ghosts = 1; direction = 8; name = "thrower_escapeshuttletop(left)"; tiles = 0},/turf/space/transit/north/shuttlespace_ns3,/area)
"cmh" = (/obj/step_trigger/thrower{affect_ghosts = 1; direction = 8; name = "thrower_escapeshuttletop(left)"; tiles = 0},/turf/space/transit/north/shuttlespace_ns5,/area)
"cmi" = (/obj/step_trigger/thrower{affect_ghosts = 1; direction = 4; name = "thrower_escapeshuttletop(right)"; tiles = 0},/turf/space/transit/north/shuttlespace_ns9,/area)
"cmj" = (/obj/step_trigger/thrower{affect_ghosts = 1; direction = 4; name = "thrower_escapeshuttletop(right)"; tiles = 0},/turf/space/transit/north/shuttlespace_ns2,/area)
"cmk" = (/obj/step_trigger/thrower{affect_ghosts = 1; direction = 4; name = "thrower_escapeshuttletop(right)"; tiles = 0},/turf/space/transit/north/shuttlespace_ns13,/area)
"cml" = (/obj/step_trigger/thrower{affect_ghosts = 1; direction = 4; name = "thrower_escapeshuttletop(right)"; tiles = 0},/turf/space/transit/north/shuttlespace_ns10,/area)
"cmm" = (/obj/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdown"; tiles = 0},/turf/space/transit/north/shuttlespace_ns4,/area)
"cmn" = (/obj/step_trigger/thrower{affect_ghosts = 1; name = "thrower_leftnostop"},/turf/space/transit/east/shuttlespace_ew8,/area)
"clW" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; name = "thrower_leftnostop"},/turf/space/transit/east/shuttlespace_ew13,/area)
"clX" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; name = "thrower_leftnostop"},/turf/space/transit/east/shuttlespace_ew14,/area)
"clY" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; name = "thrower_leftnostop"},/turf/space/transit/east/shuttlespace_ew15,/area)
"clZ" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; name = "thrower_leftnostop"},/turf/space/transit/east/shuttlespace_ew1,/area)
"cma" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; name = "thrower_leftnostop"},/turf/space/transit/east/shuttlespace_ew2,/area)
"cmb" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; name = "thrower_leftnostop"},/turf/space/transit/east/shuttlespace_ew3,/area)
"cmc" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdown"; tiles = 0},/turf/space/transit/north/shuttlespace_ns13,/area)
"cmd" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 8; name = "thrower_escapeshuttletop(left)"; tiles = 0},/turf/space/transit/north/shuttlespace_ns11,/area)
"cme" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 8; name = "thrower_escapeshuttletop(left)"; tiles = 0},/turf/space/transit/north/shuttlespace_ns6,/area)
"cmf" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 8; name = "thrower_escapeshuttletop(left)"; tiles = 0},/turf/space/transit/north/shuttlespace_ns8,/area)
"cmg" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 8; name = "thrower_escapeshuttletop(left)"; tiles = 0},/turf/space/transit/north/shuttlespace_ns3,/area)
"cmh" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 8; name = "thrower_escapeshuttletop(left)"; tiles = 0},/turf/space/transit/north/shuttlespace_ns5,/area)
"cmi" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 4; name = "thrower_escapeshuttletop(right)"; tiles = 0},/turf/space/transit/north/shuttlespace_ns9,/area)
"cmj" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 4; name = "thrower_escapeshuttletop(right)"; tiles = 0},/turf/space/transit/north/shuttlespace_ns2,/area)
"cmk" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 4; name = "thrower_escapeshuttletop(right)"; tiles = 0},/turf/space/transit/north/shuttlespace_ns13,/area)
"cml" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 4; name = "thrower_escapeshuttletop(right)"; tiles = 0},/turf/space/transit/north/shuttlespace_ns10,/area)
"cmm" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdown"; tiles = 0},/turf/space/transit/north/shuttlespace_ns4,/area)
"cmn" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; name = "thrower_leftnostop"},/turf/space/transit/east/shuttlespace_ew8,/area)
"cmo" = (/turf/space/transit/east/shuttlespace_ew7,/area/shuttle/escape_pod5/transit)
"cmp" = (/turf/space/transit/east/shuttlespace_ew8,/area/shuttle/escape_pod5/transit)
"cmq" = (/turf/space/transit/east/shuttlespace_ew9,/area/shuttle/escape_pod5/transit)
"cmr" = (/turf/space/transit/east/shuttlespace_ew10,/area/shuttle/escape_pod5/transit)
"cms" = (/obj/step_trigger/thrower{direction = 1; name = "thrower_throwup"; nostop = 0; tiles = 0},/turf/space/transit/east/shuttlespace_ew13,/area)
"cmt" = (/obj/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdown"; tiles = 0},/turf/space/transit/north/shuttlespace_ns9,/area)
"cmu" = (/obj/step_trigger/thrower{affect_ghosts = 1; direction = 8; name = "thrower_escapeshuttletop(left)"; tiles = 0},/turf/space/transit/north/shuttlespace_ns10,/area)
"cms" = (/obj/effect/step_trigger/thrower{direction = 1; name = "thrower_throwup"; nostop = 0; tiles = 0},/turf/space/transit/east/shuttlespace_ew13,/area)
"cmt" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdown"; tiles = 0},/turf/space/transit/north/shuttlespace_ns9,/area)
"cmu" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 8; name = "thrower_escapeshuttletop(left)"; tiles = 0},/turf/space/transit/north/shuttlespace_ns10,/area)
"cmv" = (/turf/space/transit/north/shuttlespace_ns12,/area/shuttle/escape/transit)
"cmw" = (/turf/space/transit/north/shuttlespace_ns14,/area/shuttle/escape/transit)
"cmx" = (/turf/space/transit/north/shuttlespace_ns9,/area/shuttle/escape/transit)
@@ -6062,34 +6062,34 @@
"cmD" = (/turf/space/transit/east/shuttlespace_ew3,/area/shuttle/escape_pod5/transit)
"cmE" = (/turf/space/transit/east/shuttlespace_ew4,/area/shuttle/escape_pod5/transit)
"cmF" = (/turf/space/transit/east/shuttlespace_ew5,/area/shuttle/escape_pod5/transit)
"cmG" = (/obj/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdown"; stopper = 0; tiles = 0},/turf/space/transit/east/shuttlespace_ew7,/area)
"cmG" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdown"; stopper = 0; tiles = 0},/turf/space/transit/east/shuttlespace_ew7,/area)
"cmH" = (/turf/simulated/floor/holofloor{icon_state = "bluecorner"},/area/holodeck/source_emptycourt)
"cmI" = (/turf/simulated/floor/holofloor{icon_state = "blue"},/area/holodeck/source_emptycourt)
"cmJ" = (/turf/simulated/floor/holofloor{dir = 8; icon_state = "bluecorner"},/area/holodeck/source_emptycourt)
"cmK" = (/obj/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdownside"; nostop = 1; stopper = 0; tiles = 0},/turf/space/transit/north/shuttlespace_ns5,/area)
"cmK" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdownside"; nostop = 1; stopper = 0; tiles = 0},/turf/space/transit/north/shuttlespace_ns5,/area)
"cmL" = (/turf/space/transit/north/shuttlespace_ns2,/area/shuttle/escape/transit)
"cmM" = (/turf/space/transit/north/shuttlespace_ns13,/area/shuttle/escape/transit)
"cmN" = (/turf/space/transit/north/shuttlespace_ns10,/area/shuttle/escape/transit)
"cmO" = (/turf/space/transit/north/shuttlespace_ns7,/area/shuttle/escape/transit)
"cmP" = (/obj/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdownside"; nostop = 1; stopper = 0; tiles = 0},/turf/space/transit/north/shuttlespace_ns4,/area)
"cmQ" = (/obj/step_trigger/thrower{affect_ghosts = 1; name = "thrower_leftnostop"},/turf/space/transit/east/shuttlespace_ew7,/area)
"cmP" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdownside"; nostop = 1; stopper = 0; tiles = 0},/turf/space/transit/north/shuttlespace_ns4,/area)
"cmQ" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; name = "thrower_leftnostop"},/turf/space/transit/east/shuttlespace_ew7,/area)
"cmR" = (/turf/space/transit/east/shuttlespace_ew11,/area/shuttle/escape_pod5/transit)
"cmS" = (/turf/space/transit/east/shuttlespace_ew12,/area/shuttle/escape_pod5/transit)
"cmT" = (/turf/space/transit/east/shuttlespace_ew13,/area/shuttle/escape_pod5/transit)
"cmU" = (/turf/space/transit/east/shuttlespace_ew14,/area/shuttle/escape_pod5/transit)
"cmV" = (/obj/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdown"; stopper = 0; tiles = 0},/turf/space/transit/east/shuttlespace_ew12,/area)
"cmV" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdown"; stopper = 0; tiles = 0},/turf/space/transit/east/shuttlespace_ew12,/area)
"cmW" = (/turf/simulated/floor/holofloor{dir = 10; icon_state = "blue"},/area/holodeck/source_emptycourt)
"cmX" = (/turf/simulated/floor/holofloor{dir = 6; icon_state = "blue"},/area/holodeck/source_emptycourt)
"cmY" = (/turf/space/transit/north/shuttlespace_ns1,/area/shuttle/escape/transit)
"cmZ" = (/turf/space/transit/north/shuttlespace_ns6,/area/shuttle/escape/transit)
"cna" = (/obj/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdownside"; nostop = 1; stopper = 0; tiles = 0},/turf/space/transit/north/shuttlespace_ns3,/area)
"cnb" = (/obj/step_trigger/thrower{affect_ghosts = 1; name = "thrower_leftnostop"},/turf/space/transit/east/shuttlespace_ew4,/area)
"cnc" = (/obj/step_trigger/thrower{affect_ghosts = 1; name = "thrower_leftnostop"},/turf/space/transit/east/shuttlespace_ew5,/area)
"cna" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdownside"; nostop = 1; stopper = 0; tiles = 0},/turf/space/transit/north/shuttlespace_ns3,/area)
"cnb" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; name = "thrower_leftnostop"},/turf/space/transit/east/shuttlespace_ew4,/area)
"cnc" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; name = "thrower_leftnostop"},/turf/space/transit/east/shuttlespace_ew5,/area)
"cnd" = (/turf/unsimulated/wall{icon = 'mineral_walls.dmi'; icon_state = "iron7"},/area)
"cne" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/turf/unsimulated/wall{icon = 'mineral_walls.dmi'; icon_state = "iron12"},/area)
"cnf" = (/turf/unsimulated/wall{icon = 'mineral_walls.dmi'; icon_state = "iron11"},/area)
"cng" = (/turf/space/transit/north/shuttlespace_ns5,/area/shuttle/escape/transit)
"cnh" = (/obj/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdownside"; nostop = 1; stopper = 0; tiles = 0},/turf/space/transit/north/shuttlespace_ns2,/area)
"cnh" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdownside"; nostop = 1; stopper = 0; tiles = 0},/turf/space/transit/north/shuttlespace_ns2,/area)
"cni" = (/turf/simulated/floor/holofloor/grass,/area/holodeck/source_beach)
"cnj" = (/obj/structure/table/holotable,/obj/machinery/readybutton,/turf/simulated/floor/holofloor{dir = 9; icon_state = "red"},/area/holodeck/source_thunderdomecourt)
"cnk" = (/obj/structure/table/holotable,/obj/item/clothing/head/helmet/thunderdome,/obj/item/clothing/suit/armor/tdome/red,/obj/item/clothing/under/color/red,/obj/item/weapon/melee/energy/sword/holosword/red,/turf/simulated/floor/holofloor{dir = 5; icon_state = "red"},/area/holodeck/source_thunderdomecourt)
@@ -6101,7 +6101,7 @@
"cnq" = (/turf/simulated/floor/holofloor,/area/holodeck/source_boxingcourt)
"cnr" = (/obj/structure/table/holotable,/obj/item/clothing/gloves/boxing/hologlove{icon_state = "boxingyellow"},/turf/simulated/floor/holofloor{dir = 9; icon_state = "red"},/area/holodeck/source_boxingcourt)
"cns" = (/turf/simulated/floor/holofloor{dir = 5; icon_state = "red"},/area/holodeck/source_boxingcourt)
"cnt" = (/obj/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdownside"; nostop = 1; stopper = 0; tiles = 0},/turf/space/transit/north/shuttlespace_ns1,/area)
"cnt" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdownside"; nostop = 1; stopper = 0; tiles = 0},/turf/space/transit/north/shuttlespace_ns1,/area)
"cnu" = (/obj/effect/overlay{anchored = 1; icon = 'icons/misc/beach2.dmi'; icon_state = "palm2"; layer = 10; name = "palm tree"},/turf/simulated/floor/holofloor/grass,/area/holodeck/source_beach)
"cnv" = (/obj/effect/overlay{anchored = 1; icon = 'icons/misc/beach2.dmi'; icon_state = "palm1"; layer = 10; name = "palm tree"},/turf/simulated/floor/holofloor/grass,/area/holodeck/source_beach)
"cnw" = (/turf/simulated/floor/holofloor{dir = 8; icon_state = "red"},/area/holodeck/source_thunderdomecourt)
@@ -6114,34 +6114,34 @@
"cnD" = (/turf/simulated/floor/holofloor{dir = 1; icon_state = "red"},/area/holodeck/source_boxingcourt)
"cnE" = (/turf/simulated/floor/holofloor{dir = 1; icon_state = "redcorner"},/area/holodeck/source_boxingcourt)
"cnF" = (/turf/simulated/floor/holofloor{dir = 4; icon_state = "red"},/area/holodeck/source_boxingcourt)
"cnG" = (/obj/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdownside"; nostop = 1; stopper = 0; tiles = 0},/turf/space/transit/north/shuttlespace_ns15,/area)
"cnH" = (/obj/step_trigger/thrower{affect_ghosts = 1; name = "thrower_leftnostop"},/turf/space/transit/east/shuttlespace_ew6,/area)
"cnI" = (/obj/step_trigger/thrower{affect_ghosts = 1; name = "thrower_leftnostop"},/turf/space/transit/east/shuttlespace_ew9,/area)
"cnG" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdownside"; nostop = 1; stopper = 0; tiles = 0},/turf/space/transit/north/shuttlespace_ns15,/area)
"cnH" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; name = "thrower_leftnostop"},/turf/space/transit/east/shuttlespace_ew6,/area)
"cnI" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; name = "thrower_leftnostop"},/turf/space/transit/east/shuttlespace_ew9,/area)
"cnJ" = (/turf/simulated/floor/holofloor,/area/holodeck/source_thunderdomecourt)
"cnK" = (/turf/space/transit/north/shuttlespace_ns3,/area/shuttle/escape/transit)
"cnL" = (/obj/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdownside"; nostop = 1; stopper = 0; tiles = 0},/turf/space/transit/north/shuttlespace_ns14,/area)
"cnM" = (/obj/step_trigger/thrower{direction = 1; name = "thrower_throwup"; nostop = 0; tiles = 0},/turf/space/transit/east/shuttlespace_ew14,/area)
"cnN" = (/obj/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdownside"; nostop = 1; stopper = 0; tiles = 0},/turf/space/transit/north/shuttlespace_ns13,/area)
"cnO" = (/obj/step_trigger/thrower{affect_ghosts = 1; name = "thrower_leftnostop"},/turf/space/transit/east/shuttlespace_ew11,/area)
"cnP" = (/obj/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdown"; stopper = 0; tiles = 0},/turf/space/transit/east/shuttlespace_ew1,/area)
"cnL" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdownside"; nostop = 1; stopper = 0; tiles = 0},/turf/space/transit/north/shuttlespace_ns14,/area)
"cnM" = (/obj/effect/step_trigger/thrower{direction = 1; name = "thrower_throwup"; nostop = 0; tiles = 0},/turf/space/transit/east/shuttlespace_ew14,/area)
"cnN" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdownside"; nostop = 1; stopper = 0; tiles = 0},/turf/space/transit/north/shuttlespace_ns13,/area)
"cnO" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; name = "thrower_leftnostop"},/turf/space/transit/east/shuttlespace_ew11,/area)
"cnP" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdown"; stopper = 0; tiles = 0},/turf/space/transit/east/shuttlespace_ew1,/area)
"cnQ" = (/obj/structure/holowindow,/turf/simulated/floor/holofloor{dir = 8; icon_state = "red"},/area/holodeck/source_thunderdomecourt)
"cnR" = (/obj/structure/holowindow,/turf/simulated/floor/holofloor,/area/holodeck/source_thunderdomecourt)
"cnS" = (/obj/structure/holowindow,/turf/simulated/floor/holofloor{dir = 4; icon_state = "red"},/area/holodeck/source_thunderdomecourt)
"cnT" = (/obj/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdownside"; nostop = 1; stopper = 0; tiles = 0},/turf/space/transit/north/shuttlespace_ns12,/area)
"cnU" = (/obj/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdown"; stopper = 0; tiles = 0},/turf/space/transit/east/shuttlespace_ew10,/area)
"cnT" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdownside"; nostop = 1; stopper = 0; tiles = 0},/turf/space/transit/north/shuttlespace_ns12,/area)
"cnU" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdown"; stopper = 0; tiles = 0},/turf/space/transit/east/shuttlespace_ew10,/area)
"cnV" = (/obj/structure/holowindow{dir = 1},/turf/simulated/floor/holofloor{dir = 8; icon_state = "blue"},/area/holodeck/source_thunderdomecourt)
"cnW" = (/obj/structure/holowindow{dir = 1},/turf/simulated/floor/holofloor,/area/holodeck/source_thunderdomecourt)
"cnX" = (/obj/structure/holowindow{dir = 1},/turf/simulated/floor/holofloor{dir = 4; icon_state = "blue"},/area/holodeck/source_thunderdomecourt)
"cnY" = (/turf/simulated/floor/holofloor{dir = 8; icon_state = "blue"},/area/holodeck/source_boxingcourt)
"cnZ" = (/turf/simulated/floor/holofloor{dir = 4; icon_state = "blue"},/area/holodeck/source_boxingcourt)
"coa" = (/obj/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdownside"; nostop = 1; stopper = 0; tiles = 0},/turf/space/transit/north/shuttlespace_ns11,/area)
"cob" = (/obj/step_trigger/thrower{affect_ghosts = 1; name = "thrower_leftnostop"},/turf/space/transit/east/shuttlespace_ew10,/area)
"coc" = (/obj/step_trigger/thrower{affect_ghosts = 1; name = "thrower_leftnostop"},/turf/space/transit/east/shuttlespace_ew12,/area)
"coa" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdownside"; nostop = 1; stopper = 0; tiles = 0},/turf/space/transit/north/shuttlespace_ns11,/area)
"cob" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; name = "thrower_leftnostop"},/turf/space/transit/east/shuttlespace_ew10,/area)
"coc" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; name = "thrower_leftnostop"},/turf/space/transit/east/shuttlespace_ew12,/area)
"cod" = (/turf/simulated/floor/holofloor{icon = 'beach.dmi'; icon_state = "sand"; name = "Soft sand"},/area/holodeck/source_beach)
"coe" = (/turf/simulated/floor/holofloor{dir = 8; icon_state = "blue"},/area/holodeck/source_thunderdomecourt)
"cof" = (/turf/simulated/floor/holofloor{dir = 4; icon_state = "blue"},/area/holodeck/source_thunderdomecourt)
"cog" = (/obj/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdownside"; nostop = 1; stopper = 0; tiles = 0},/turf/space/transit/north/shuttlespace_ns10,/area)
"coh" = (/obj/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdownside"; nostop = 1; stopper = 0; tiles = 0},/turf/space/transit/north/shuttlespace_ns9,/area)
"cog" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdownside"; nostop = 1; stopper = 0; tiles = 0},/turf/space/transit/north/shuttlespace_ns10,/area)
"coh" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdownside"; nostop = 1; stopper = 0; tiles = 0},/turf/space/transit/north/shuttlespace_ns9,/area)
"coi" = (/turf/simulated/floor/holofloor{icon = 'icons/misc/beach2.dmi'; icon_state = "sandwater"; name = "Beach Front"},/area/holodeck/source_beach)
"coj" = (/turf/simulated/floor/holofloor{icon_state = "bluecorner"},/area/holodeck/source_thunderdomecourt)
"cok" = (/turf/simulated/floor/holofloor{icon_state = "blue"},/area/holodeck/source_thunderdomecourt)
@@ -6149,7 +6149,7 @@
"com" = (/turf/simulated/floor/holofloor{icon_state = "bluecorner"},/area/holodeck/source_boxingcourt)
"con" = (/turf/simulated/floor/holofloor{icon_state = "blue"},/area/holodeck/source_boxingcourt)
"coo" = (/turf/simulated/floor/holofloor{dir = 8; icon_state = "bluecorner"},/area/holodeck/source_boxingcourt)
"cop" = (/obj/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdownside"; nostop = 1; stopper = 0; tiles = 0},/turf/space/transit/north/shuttlespace_ns8,/area)
"cop" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdownside"; nostop = 1; stopper = 0; tiles = 0},/turf/space/transit/north/shuttlespace_ns8,/area)
"coq" = (/obj/effect/overlay{anchored = 1; icon = 'beach.dmi'; icon_state = "water2"; layer = 10; mouse_opacity = 0; name = "water"},/turf/simulated/floor/holofloor{icon = 'beach.dmi'; icon_plating = "water"; icon_regular_floor = "water"; icon_state = "water"; name = "Water"},/area/holodeck/source_beach)
"cor" = (/turf/simulated/floor/holofloor{dir = 10; icon_state = "blue"},/area/holodeck/source_thunderdomecourt)
"cos" = (/obj/structure/table/holotable,/obj/item/clothing/head/helmet/thunderdome,/obj/item/clothing/suit/armor/tdome/green,/obj/item/clothing/under/color/green,/obj/item/weapon/melee/energy/sword/holosword/green,/turf/simulated/floor/holofloor{dir = 6; icon_state = "blue"},/area/holodeck/source_thunderdomecourt)
@@ -6160,12 +6160,12 @@
"cox" = (/obj/structure/table/holotable,/obj/item/clothing/gloves/boxing/hologlove,/turf/simulated/floor/holofloor{dir = 6; icon_state = "blue"},/area/holodeck/source_boxingcourt)
"coy" = (/obj/structure/table/holotable,/obj/item/clothing/gloves/boxing/hologlove,/turf/simulated/floor/holofloor{dir = 10; icon_state = "blue"},/area/holodeck/source_boxingcourt)
"coz" = (/turf/simulated/floor/holofloor{dir = 6; icon_state = "blue"},/area/holodeck/source_boxingcourt)
"coA" = (/obj/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdownside"; nostop = 1; stopper = 0; tiles = 0},/turf/space/transit/north/shuttlespace_ns7,/area)
"coA" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdownside"; nostop = 1; stopper = 0; tiles = 0},/turf/space/transit/north/shuttlespace_ns7,/area)
"coB" = (/turf/unsimulated/wall{icon = 'mineral_walls.dmi'; icon_state = "iron5"},/area)
"coC" = (/obj/structure/window/reinforced{dir = 1},/turf/unsimulated/wall{icon = 'mineral_walls.dmi'; icon_state = "iron12"},/area)
"coD" = (/turf/unsimulated/wall{icon = 'mineral_walls.dmi'; icon_state = "iron13"},/area)
"coE" = (/turf/unsimulated/wall{icon = 'mineral_walls.dmi'; icon_state = "iron9"},/area)
"coF" = (/obj/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdownside"; nostop = 1; stopper = 0; tiles = 0},/turf/space/transit/north/shuttlespace_ns6,/area)
"coF" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdownside"; nostop = 1; stopper = 0; tiles = 0},/turf/space/transit/north/shuttlespace_ns6,/area)
"coG" = (/turf/space,/area/shuttle/escape_pod1/centcom)
"coH" = (/turf/space,/area/shuttle/escape_pod2/centcom)
"coI" = (/turf/space,/area/shuttle/escape_pod3/centcom)
@@ -6228,14 +6228,14 @@
"cpN" = (/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/centcom/evac)
"cpO" = (/obj/machinery/sleeper,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/centcom/evac)
"cpP" = (/obj/structure/shuttle/engine/propulsion{icon_state = "burst_l"; dir = 8},/turf/space,/area/centcom/evac)
"cpQ" = (/obj/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdownside"; nostop = 1; tiles = 0},/turf/space/transit/north/shuttlespace_ns15,/area)
"cpR" = (/obj/step_trigger/thrower{affect_ghosts = 1; direction = 8; name = "thrower_escapeshuttletop(left)"; tiles = 0},/turf/space/transit/north/shuttlespace_ns4,/area)
"cpS" = (/obj/step_trigger/thrower{affect_ghosts = 1; direction = 8; name = "thrower_escapeshuttletop(left)"; tiles = 0},/turf/space/transit/north/shuttlespace_ns14,/area)
"cpT" = (/obj/step_trigger/thrower{affect_ghosts = 1; direction = 4; name = "thrower_escapeshuttletop(right)"; tiles = 0},/turf/space/transit/north/shuttlespace_ns1,/area)
"cpU" = (/obj/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdownside"; nostop = 1; tiles = 0},/turf/space/transit/north/shuttlespace_ns11,/area)
"cpV" = (/obj/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdownside"; nostop = 1; tiles = 0},/turf/space/transit/north/shuttlespace_ns2,/area)
"cpW" = (/obj/step_trigger/thrower{affect_ghosts = 1; direction = 4; name = "thrower_escapeshuttletop(right)"; tiles = 0},/turf/space/transit/north/shuttlespace_ns3,/area)
"cpX" = (/obj/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdownside"; nostop = 1; tiles = 0},/turf/space/transit/north/shuttlespace_ns14,/area)
"cpQ" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdownside"; nostop = 1; tiles = 0},/turf/space/transit/north/shuttlespace_ns15,/area)
"cpR" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 8; name = "thrower_escapeshuttletop(left)"; tiles = 0},/turf/space/transit/north/shuttlespace_ns4,/area)
"cpS" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 8; name = "thrower_escapeshuttletop(left)"; tiles = 0},/turf/space/transit/north/shuttlespace_ns14,/area)
"cpT" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 4; name = "thrower_escapeshuttletop(right)"; tiles = 0},/turf/space/transit/north/shuttlespace_ns1,/area)
"cpU" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdownside"; nostop = 1; tiles = 0},/turf/space/transit/north/shuttlespace_ns11,/area)
"cpV" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdownside"; nostop = 1; tiles = 0},/turf/space/transit/north/shuttlespace_ns2,/area)
"cpW" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 4; name = "thrower_escapeshuttletop(right)"; tiles = 0},/turf/space/transit/north/shuttlespace_ns3,/area)
"cpX" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdownside"; nostop = 1; tiles = 0},/turf/space/transit/north/shuttlespace_ns14,/area)
"cpY" = (/turf/simulated/shuttle/wall{icon_state = "swall_s5"; dir = 2},/area/centcom/evac)
"cpZ" = (/obj/machinery/computer/secure_data,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/centcom/evac)
"cqa" = (/obj/structure/stool/bed/chair{dir = 1},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/centcom/evac)
@@ -6243,12 +6243,12 @@
"cqc" = (/turf/space/transit/north/shuttlespace_ns9,/area/shuttle/escape_pod1/transit)
"cqd" = (/turf/space/transit/north/shuttlespace_ns4,/area/shuttle/escape_pod1/transit)
"cqe" = (/turf/space/transit/north/shuttlespace_ns6,/area/shuttle/escape_pod1/transit)
"cqf" = (/obj/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdownside"; nostop = 1; tiles = 0},/turf/space/transit/north/shuttlespace_ns10,/area)
"cqg" = (/obj/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdownside"; nostop = 1; tiles = 0},/turf/space/transit/north/shuttlespace_ns1,/area)
"cqf" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdownside"; nostop = 1; tiles = 0},/turf/space/transit/north/shuttlespace_ns10,/area)
"cqg" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdownside"; nostop = 1; tiles = 0},/turf/space/transit/north/shuttlespace_ns1,/area)
"cqh" = (/turf/space/transit/north/shuttlespace_ns11,/area/shuttle/escape_pod2/transit)
"cqi" = (/turf/space/transit/north/shuttlespace_ns1,/area/shuttle/escape_pod2/transit)
"cqj" = (/turf/space/transit/north/shuttlespace_ns7,/area/shuttle/escape_pod2/transit)
"cqk" = (/obj/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdownside"; nostop = 1; tiles = 0},/turf/space/transit/north/shuttlespace_ns13,/area)
"cqk" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdownside"; nostop = 1; tiles = 0},/turf/space/transit/north/shuttlespace_ns13,/area)
"cql" = (/obj/machinery/door/window/northleft{base_state = "right"; dir = 8; icon_state = "right"; req_access_txt = "100"},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/centcom/evac)
"cqm" = (/obj/structure/table/reinforced,/obj/item/weapon/storage/PDAbox{pixel_x = -2; pixel_y = 4},/obj/item/weapon/storage/id_kit{pixel_x = 2},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/centcom/evac)
"cqn" = (/obj/structure/table,/obj/item/weapon/book/manual/medical_cloning{pixel_y = 6},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/centcom/evac)
@@ -6258,29 +6258,29 @@
"cqr" = (/turf/space/transit/north/shuttlespace_ns8,/area/shuttle/escape_pod1/transit)
"cqs" = (/turf/space/transit/north/shuttlespace_ns3,/area/shuttle/escape_pod1/transit)
"cqt" = (/turf/space/transit/north/shuttlespace_ns5,/area/shuttle/escape_pod1/transit)
"cqu" = (/obj/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdownside"; nostop = 1; tiles = 0},/turf/space/transit/north/shuttlespace_ns9,/area)
"cqu" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdownside"; nostop = 1; tiles = 0},/turf/space/transit/north/shuttlespace_ns9,/area)
"cqv" = (/turf/space/transit/north/shuttlespace_ns10,/area/shuttle/escape_pod2/transit)
"cqw" = (/turf/space/transit/north/shuttlespace_ns15,/area/shuttle/escape_pod2/transit)
"cqx" = (/turf/space/transit/north/shuttlespace_ns6,/area/shuttle/escape_pod2/transit)
"cqy" = (/obj/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdownside"; nostop = 1; tiles = 0},/turf/space/transit/north/shuttlespace_ns12,/area)
"cqy" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdownside"; nostop = 1; tiles = 0},/turf/space/transit/north/shuttlespace_ns12,/area)
"cqz" = (/turf/space/transit/north/shuttlespace_ns7,/area/shuttle/escape_pod1/transit)
"cqA" = (/turf/space/transit/north/shuttlespace_ns2,/area/shuttle/escape_pod1/transit)
"cqB" = (/obj/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdownside"; nostop = 1; tiles = 0},/turf/space/transit/north/shuttlespace_ns8,/area)
"cqB" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdownside"; nostop = 1; tiles = 0},/turf/space/transit/north/shuttlespace_ns8,/area)
"cqC" = (/turf/space/transit/north/shuttlespace_ns9,/area/shuttle/escape_pod2/transit)
"cqD" = (/turf/space/transit/north/shuttlespace_ns14,/area/shuttle/escape_pod2/transit)
"cqE" = (/turf/space/transit/north/shuttlespace_ns5,/area/shuttle/escape_pod2/transit)
"cqF" = (/turf/space/transit/north/shuttlespace_ns1,/area/shuttle/escape_pod1/transit)
"cqG" = (/obj/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdownside"; nostop = 1; tiles = 0},/turf/space/transit/north/shuttlespace_ns7,/area)
"cqG" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdownside"; nostop = 1; tiles = 0},/turf/space/transit/north/shuttlespace_ns7,/area)
"cqH" = (/turf/space/transit/north/shuttlespace_ns8,/area/shuttle/escape_pod2/transit)
"cqI" = (/turf/space/transit/north/shuttlespace_ns13,/area/shuttle/escape_pod2/transit)
"cqJ" = (/turf/space/transit/north/shuttlespace_ns4,/area/shuttle/escape_pod2/transit)
"cqK" = (/obj/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdownside"; nostop = 1; tiles = 0},/turf/space/transit/north/shuttlespace_ns6,/area)
"cqL" = (/obj/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdownside"; nostop = 1; tiles = 0},/turf/space/transit/north/shuttlespace_ns5,/area)
"cqM" = (/obj/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdownside"; nostop = 1; tiles = 0},/turf/space/transit/north/shuttlespace_ns4,/area)
"cqK" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdownside"; nostop = 1; tiles = 0},/turf/space/transit/north/shuttlespace_ns6,/area)
"cqL" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdownside"; nostop = 1; tiles = 0},/turf/space/transit/north/shuttlespace_ns5,/area)
"cqM" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdownside"; nostop = 1; tiles = 0},/turf/space/transit/north/shuttlespace_ns4,/area)
"cqN" = (/turf/space/transit/north/shuttlespace_ns13,/area/shuttle/escape_pod3/transit)
"cqO" = (/turf/space/transit/north/shuttlespace_ns5,/area/shuttle/escape_pod3/transit)
"cqP" = (/turf/space/transit/north/shuttlespace_ns15,/area/shuttle/escape_pod3/transit)
"cqQ" = (/obj/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdownside"; nostop = 1; tiles = 0},/turf/space/transit/north/shuttlespace_ns3,/area)
"cqQ" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdownside"; nostop = 1; tiles = 0},/turf/space/transit/north/shuttlespace_ns3,/area)
"cqR" = (/turf/space/transit/north/shuttlespace_ns12,/area/shuttle/escape_pod3/transit)
"cqS" = (/turf/space/transit/north/shuttlespace_ns4,/area/shuttle/escape_pod3/transit)
"cqT" = (/turf/space/transit/north/shuttlespace_ns14,/area/shuttle/escape_pod3/transit)
@@ -0,0 +1,20 @@

Microsoft Visual Studio Solution File, Format Version 11.00
# Visual Studio 2010
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UnstandardnessTestForDM", "UnstandardnessTestForDM\UnstandardnessTestForDM.csproj", "{A0EEBFC9-41D4-474D-853D-126AFDFB82DE}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|x86 = Debug|x86
Release|x86 = Release|x86
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{A0EEBFC9-41D4-474D-853D-126AFDFB82DE}.Debug|x86.ActiveCfg = Debug|x86
{A0EEBFC9-41D4-474D-853D-126AFDFB82DE}.Debug|x86.Build.0 = Debug|x86
{A0EEBFC9-41D4-474D-853D-126AFDFB82DE}.Release|x86.ActiveCfg = Release|x86
{A0EEBFC9-41D4-474D-853D-126AFDFB82DE}.Release|x86.Build.0 = Release|x86
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
EndGlobal
@@ -0,0 +1,160 @@
namespace UnstandardnessTestForDM
{
partial class Form1
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.button1 = new System.Windows.Forms.Button();
this.listBox1 = new System.Windows.Forms.ListBox();
this.panel1 = new System.Windows.Forms.Panel();
this.listBox2 = new System.Windows.Forms.ListBox();
this.label4 = new System.Windows.Forms.Label();
this.label3 = new System.Windows.Forms.Label();
this.label2 = new System.Windows.Forms.Label();
this.label1 = new System.Windows.Forms.Label();
this.label5 = new System.Windows.Forms.Label();
this.panel1.SuspendLayout();
this.SuspendLayout();
//
// button1
//
this.button1.Location = new System.Drawing.Point(12, 12);
this.button1.Name = "button1";
this.button1.Size = new System.Drawing.Size(222, 23);
this.button1.TabIndex = 0;
this.button1.Text = "Locate all #defines";
this.button1.UseVisualStyleBackColor = true;
this.button1.Click += new System.EventHandler(this.button1_Click);
//
// listBox1
//
this.listBox1.FormattingEnabled = true;
this.listBox1.Location = new System.Drawing.Point(12, 82);
this.listBox1.Name = "listBox1";
this.listBox1.Size = new System.Drawing.Size(696, 160);
this.listBox1.TabIndex = 1;
this.listBox1.SelectedIndexChanged += new System.EventHandler(this.listBox1_SelectedIndexChanged);
//
// panel1
//
this.panel1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.panel1.Controls.Add(this.listBox2);
this.panel1.Controls.Add(this.label4);
this.panel1.Controls.Add(this.label3);
this.panel1.Controls.Add(this.label2);
this.panel1.Controls.Add(this.label1);
this.panel1.Location = new System.Drawing.Point(12, 297);
this.panel1.Name = "panel1";
this.panel1.Size = new System.Drawing.Size(696, 244);
this.panel1.TabIndex = 2;
//
// listBox2
//
this.listBox2.FormattingEnabled = true;
this.listBox2.Location = new System.Drawing.Point(8, 71);
this.listBox2.Name = "listBox2";
this.listBox2.Size = new System.Drawing.Size(683, 160);
this.listBox2.TabIndex = 4;
//
// label4
//
this.label4.AutoSize = true;
this.label4.Location = new System.Drawing.Point(5, 55);
this.label4.Name = "label4";
this.label4.Size = new System.Drawing.Size(69, 13);
this.label4.TabIndex = 3;
this.label4.Text = "Referenced: ";
//
// label3
//
this.label3.AutoSize = true;
this.label3.Location = new System.Drawing.Point(5, 42);
this.label3.Name = "label3";
this.label3.Size = new System.Drawing.Size(40, 13);
this.label3.TabIndex = 2;
this.label3.Text = "Value: ";
//
// label2
//
this.label2.AutoSize = true;
this.label2.Location = new System.Drawing.Point(5, 29);
this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(61, 13);
this.label2.TabIndex = 1;
this.label2.Text = "Defined in: ";
//
// label1
//
this.label1.AutoSize = true;
this.label1.Font = new System.Drawing.Font("Microsoft Sans Serif", 18F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
this.label1.Location = new System.Drawing.Point(3, 0);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(79, 29);
this.label1.TabIndex = 0;
this.label1.Text = "label1";
//
// label5
//
this.label5.AutoSize = true;
this.label5.Location = new System.Drawing.Point(9, 38);
this.label5.Name = "label5";
this.label5.Size = new System.Drawing.Size(81, 13);
this.label5.TabIndex = 3;
this.label5.Text = "Files searched: ";
//
// Form1
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(720, 553);
this.Controls.Add(this.label5);
this.Controls.Add(this.panel1);
this.Controls.Add(this.listBox1);
this.Controls.Add(this.button1);
this.Name = "Form1";
this.Text = "Unstandardness Test For DM";
this.panel1.ResumeLayout(false);
this.panel1.PerformLayout();
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private System.Windows.Forms.Button button1;
private System.Windows.Forms.Panel panel1;
private System.Windows.Forms.Label label4;
private System.Windows.Forms.Label label3;
private System.Windows.Forms.Label label2;
private System.Windows.Forms.Label label1;
public System.Windows.Forms.ListBox listBox2;
public System.Windows.Forms.Label label5;
public System.Windows.Forms.ListBox listBox1;
}
}
@@ -0,0 +1,484 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Collections;
using System.IO;
namespace UnstandardnessTestForDM
{
public partial class Form1 : Form
{
DMSource source;
public Form1()
{
InitializeComponent();
source = new DMSource();
source.mainform = this;
}
private void button1_Click(object sender, EventArgs e)
{
source.find_all_defines();
generate_define_report();
}
public void generate_define_report()
{
TextWriter tw = new StreamWriter("DEFINES REPORT.txt");
tw.WriteLine("Unstandardness Test For DM report for DEFINES");
tw.WriteLine("Generated on " + DateTime.Now);
tw.WriteLine("Total number of defines " + source.defines.Count());
tw.WriteLine("Total number of Files " + source.filessearched);
tw.WriteLine("Total number of references " + source.totalreferences);
tw.WriteLine("Total number of errorous defines " + source.errordefines);
tw.WriteLine("------------------------------------------------");
foreach (Define d in source.defines)
{
tw.WriteLine(d.name);
tw.WriteLine("\tValue: " + d.value);
tw.WriteLine("\tComment: " + d.comment);
tw.WriteLine("\tDefined in: " + d.location + " : " + d.line);
tw.WriteLine("\tNumber of references: " + d.references.Count());
foreach (String s in d.references)
{
tw.WriteLine("\t\t" + s);
}
}
tw.WriteLine("------------------------------------------------");
tw.WriteLine("SUCCESS");
tw.Close();
}
private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
{
try
{
Define d = (Define)listBox1.Items[listBox1.SelectedIndex];
label1.Text = d.name;
label2.Text = "Defined in: " + d.location + " : " + d.line;
label3.Text = "Value: " + d.value;
label4.Text = "References: " + d.references.Count();
listBox2.Items.Clear();
foreach (String s in d.references)
{
listBox2.Items.Add(s);
}
}
catch (Exception ex) { Console.WriteLine("ERROR HERE: " + ex.Message); }
}
}
public class DMSource
{
public List<Define> defines;
public const int FLAG_DEFINE = 1;
public Form1 mainform;
public int filessearched = 0;
public int totalreferences = 0;
public int errordefines = 0;
public List<String> filenames;
public DMSource()
{
defines = new List<Define>();
filenames = new List<String>();
}
public void find_all_defines()
{
find_all_files();
foreach(String filename in filenames){
searchFileForDefines(filename);
}
}
public void find_all_files()
{
filenames = new List<String>();
String dmefilename = "";
foreach (string f in Directory.GetFiles("."))
{
if (f.ToLower().EndsWith(".dme"))
{
dmefilename = f;
break;
}
}
if (dmefilename.Equals(""))
{
MessageBox.Show("dme file not found");
return;
}
using (var reader = File.OpenText(dmefilename))
{
String s;
while (true)
{
s = reader.ReadLine();
if (!(s is String))
break;
if (s.StartsWith("#include"))
{
int start = s.IndexOf("\"")+1;
s = s.Substring(start, s.Length - 11);
if (s.EndsWith(".dm"))
{
filenames.Add(s);
}
}
s = s.Trim(' ');
if (s == "") { continue; }
}
reader.Close();
}
}
public void DirSearch(string sDir, int flag)
{
try
{
foreach (string d in Directory.GetDirectories(sDir))
{
foreach (string f in Directory.GetFiles(d))
{
if (f.ToLower().EndsWith(".dm"))
{
if ((flag & FLAG_DEFINE) > 0)
{
searchFileForDefines(f);
}
}
}
DirSearch(d, flag);
}
}
catch (System.Exception excpt)
{
Console.WriteLine("ERROR IN DIRSEARCH");
Console.WriteLine(excpt.Message);
Console.WriteLine(excpt.Data);
Console.WriteLine(excpt.ToString());
Console.WriteLine(excpt.StackTrace);
Console.WriteLine("END OF ERROR IN DIRSEARCH");
}
}
//DEFINES
public void searchFileForDefines(String fileName)
{
filessearched++;
FileInfo f = new FileInfo(fileName);
List<String> lines = new List<String>();
List<String> lines_without_comments = new List<String>();
mainform.label5.Text = "Files searched: " + filessearched + "; Defines found: " + defines.Count() + "; References found: " + totalreferences + "; Errorous defines: " + errordefines;
mainform.label5.Refresh();
//This code segment reads the file and stores it into the lines variable.
using (var reader = File.OpenText(fileName))
{
try
{
String s;
while (true)
{
s = reader.ReadLine();
lines.Add(s);
s = s.Trim(' ');
if (s == "") { continue; }
}
}
catch { }
reader.Close();
}
mainform.listBox1.Items.Add("ATTEMPTING: " + fileName);
lines_without_comments = remove_comments(lines);
/*TextWriter tw = new StreamWriter(fileName);
foreach (String s in lines_without_comments)
{
tw.WriteLine(s);
}
tw.Close();
mainform.listBox1.Items.Add("REWRITE: "+fileName);*/
try
{
for (int i = 0; i < lines_without_comments.Count; i++)
{
String line = lines_without_comments[i];
if (!(line is string))
continue;
//Console.WriteLine("LINE: " + line);
foreach (Define define in defines)
{
if (line.IndexOf(define.name) >= 0)
{
define.references.Add(fileName + " : " + i);
totalreferences++;
}
}
if( line.ToLower().IndexOf("#define") >= 0 )
{
line = line.Trim();
line = line.Replace('\t', ' ');
//Console.WriteLine("LINE = "+line);
String[] slist = line.Split(' ');
if(slist.Length >= 3){
//slist[0] has the value of "#define"
String name = slist[1];
String value = slist[2];
for (int j = 3; j < slist.Length; j++)
{
value += " " + slist[j];
//Console.WriteLine("LISTITEM["+j+"] = "+slist[j]);
}
value = value.Trim();
String comment = "";
if (value.IndexOf("//") >= 0)
{
comment = value.Substring(value.IndexOf("//"));
value = value.Substring(0, value.IndexOf("//"));
}
comment = comment.Trim();
value = value.Trim();
Define d = new Define(fileName,i,name,value,comment);
defines.Add(d);
mainform.listBox1.Items.Add(d);
mainform.listBox1.Refresh();
}else{
Define d = new Define(fileName, i, "ERROR ERROR", "Something went wrong here", line);
errordefines++;
defines.Add(d);
mainform.listBox1.Items.Add(d);
mainform.listBox1.Refresh();
}
}
}
}
catch (Exception e) {
Console.WriteLine(e.Message);
Console.WriteLine(e.StackTrace);
MessageBox.Show("Exception: " + e.Message + " | " + e.ToString());
}
}
bool iscomment = false;
int ismultilinecomment = 0;
bool isstring = false;
bool ismultilinestring = false;
int escapesequence = 0;
int stringvar = 0;
public List<String> remove_comments(List<String> lines)
{
List<String> r = new List<String>();
iscomment = false;
ismultilinecomment = 0;
isstring = false;
ismultilinestring = false;
bool skiponechar = false; //Used so the / in */ doesn't get written;
for (int i = 0; i < lines.Count(); i++)
{
String line = lines[i];
if (!(line is String))
continue;
iscomment = false;
isstring = false;
char ca = ' ';
escapesequence = 0;
String newline = "";
int k = line.Length;
for (int j = 0; j < k; j++)
{
char c = line.ToCharArray()[j];
if (escapesequence == 0)
if (normalstatus())
{
if (ca == '/' && c == '/')
{
c = ' ';
iscomment = true;
newline = newline.Remove(newline.Length - 1);
k = line.Length;
}
if (ca == '/' && c == '*')
{
c = ' ';
ismultilinecomment = 1;
newline = newline.Remove(newline.Length - 1);
k = line.Length;
}
if (c == '"')
{
isstring = true;
}
if (ca == '{' && c == '"')
{
ismultilinestring = true;
}
}
else if (isstring)
{
if (c == '\\')
{
escapesequence = 2;
}
else if (stringvar > 0)
{
if (c == ']')
{
stringvar--;
}
else if (c == '[')
{
stringvar++;
}
}
else if (c == '"')
{
isstring = false;
}
else if (c == '[')
{
stringvar++;
}
}
else if (ismultilinestring)
{
if (ca == '"' && c == '}')
{
ismultilinestring = false;
}
}
else if (ismultilinecomment > 0)
{
if (ca == '/' && c == '*')
{
c = ' '; //These things are here to prevent /*/ from bieng interpreted as the start and end of a comment.
skiponechar = true;
ismultilinecomment++;
}
if (ca == '*' && c == '/')
{
c = ' '; //These things are here to prevent /*/ from bieng interpreted as the start and end of a comment.
skiponechar = true;
ismultilinecomment--;
}
}
if (!iscomment && (ismultilinecomment==0) && !skiponechar)
{
newline += c;
}
if (skiponechar)
{
skiponechar = false;
}
if (escapesequence > 0)
{
escapesequence--;
}
else
{
ca = c;
}
}
r.Add(newline.TrimEnd());
}
return r;
}
private bool normalstatus()
{
return !isstring && !ismultilinestring && (ismultilinecomment==0) && !iscomment && (escapesequence == 0);
}
}
public class Define
{
public String location;
public int line;
public String name;
public String value;
public String comment;
public List<String> references;
public Define(String location, int line, String name, String value, String comment)
{
this.location = location;
this.line = line;
this.name = name;
this.value = value;
this.comment = comment;
this.references = new List<String>();
}
public override String ToString()
{
return "DEFINE: \""+name+"\" is defined as \""+value+"\" AT "+location+" : "+line;
}
}
}
@@ -0,0 +1,120 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>
@@ -0,0 +1,21 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;
namespace UnstandardnessTestForDM
{
static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}
}
}
@@ -0,0 +1,36 @@
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("UnstandardnessTestForDM")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("Microsoft")]
[assembly: AssemblyProduct("UnstandardnessTestForDM")]
[assembly: AssemblyCopyright("Copyright © Microsoft 2012")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// Setting ComVisible to false makes the types in this assembly not visible
// to COM components. If you need to access a type in this assembly from
// COM, set the ComVisible attribute to true on that type.
[assembly: ComVisible(false)]
// The following GUID is for the ID of the typelib if this project is exposed to COM
[assembly: Guid("c0e09000-1840-4416-8bb2-d86a8227adf1")]
// Version information for an assembly consists of the following four values:
//
// Major Version
// Minor Version
// Build Number
// Revision
//
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]
@@ -0,0 +1,71 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.239
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace UnstandardnessTestForDM.Properties
{
/// <summary>
/// A strongly-typed resource class, for looking up localized strings, etc.
/// </summary>
// This class was auto-generated by the StronglyTypedResourceBuilder
// class via a tool like ResGen or Visual Studio.
// To add or remove a member, edit your .ResX file then rerun ResGen
// with the /str option, or rebuild your VS project.
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
internal class Resources
{
private static global::System.Resources.ResourceManager resourceMan;
private static global::System.Globalization.CultureInfo resourceCulture;
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
internal Resources()
{
}
/// <summary>
/// Returns the cached ResourceManager instance used by this class.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Resources.ResourceManager ResourceManager
{
get
{
if ((resourceMan == null))
{
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("UnstandardnessTestForDM.Properties.Resources", typeof(Resources).Assembly);
resourceMan = temp;
}
return resourceMan;
}
}
/// <summary>
/// Overrides the current thread's CurrentUICulture property for all
/// resource lookups using this strongly typed resource class.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Globalization.CultureInfo Culture
{
get
{
return resourceCulture;
}
set
{
resourceCulture = value;
}
}
}
}
@@ -0,0 +1,117 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>
@@ -0,0 +1,30 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.239
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace UnstandardnessTestForDM.Properties
{
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "10.0.0.0")]
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase
{
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
public static Settings Default
{
get
{
return defaultInstance;
}
}
}
}
@@ -0,0 +1,7 @@
<?xml version='1.0' encoding='utf-8'?>
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)">
<Profiles>
<Profile Name="(Default)" />
</Profiles>
<Settings />
</SettingsFile>
@@ -0,0 +1,87 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">x86</Platform>
<ProductVersion>8.0.30703</ProductVersion>
<SchemaVersion>2.0</SchemaVersion>
<ProjectGuid>{A0EEBFC9-41D4-474D-853D-126AFDFB82DE}</ProjectGuid>
<OutputType>WinExe</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>UnstandardnessTestForDM</RootNamespace>
<AssemblyName>UnstandardnessTestForDM</AssemblyName>
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
<TargetFrameworkProfile>Client</TargetFrameworkProfile>
<FileAlignment>512</FileAlignment>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
<PlatformTarget>x86</PlatformTarget>
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
<PlatformTarget>x86</PlatformTarget>
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
<Reference Include="System.Deployment" />
<Reference Include="System.Drawing" />
<Reference Include="System.Windows.Forms" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="Form1.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="Form1.Designer.cs">
<DependentUpon>Form1.cs</DependentUpon>
</Compile>
<Compile Include="Program.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<EmbeddedResource Include="Form1.resx">
<DependentUpon>Form1.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Properties\Resources.resx">
<Generator>ResXFileCodeGenerator</Generator>
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
<SubType>Designer</SubType>
</EmbeddedResource>
<Compile Include="Properties\Resources.Designer.cs">
<AutoGen>True</AutoGen>
<DependentUpon>Resources.resx</DependentUpon>
</Compile>
<None Include="Properties\Settings.settings">
<Generator>SettingsSingleFileGenerator</Generator>
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
</None>
<Compile Include="Properties\Settings.Designer.cs">
<AutoGen>True</AutoGen>
<DependentUpon>Settings.settings</DependentUpon>
<DesignTimeSharedInput>True</DesignTimeSharedInput>
</Compile>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
</Project>
@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity version="1.0.0.0" name="MyApplication.app"/>
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
<security>
<requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
<requestedExecutionLevel level="asInvoker" uiAccess="false"/>
</requestedPrivileges>
</security>
</trustInfo>
</assembly>

Some files were not shown because too many files have changed in this diff Show More