Merge branch 'master' of https://github.com/Baystation12/Baystation12
@@ -8,6 +8,9 @@
|
||||
//(And therefore also be portable to another similar codebase simply by transferring the file and including it after the other AI code files.)
|
||||
//There are probably a few parts that don't do that at the moment, but I'll fix them at some point.
|
||||
|
||||
|
||||
#define MINIMAP_UPDATE_DELAY 1200
|
||||
|
||||
/turf
|
||||
var/image/obscured
|
||||
var/image/dim
|
||||
@@ -33,9 +36,128 @@
|
||||
var/list/turfs = list()
|
||||
var/list/seenby = list()
|
||||
var/visible = 0
|
||||
var/changed = 0
|
||||
var/changed = 1
|
||||
var/updating = 0
|
||||
|
||||
var/x
|
||||
var/y
|
||||
var/z
|
||||
|
||||
var/minimap_updating = 0
|
||||
|
||||
var/icon/minimap_icon = new('minimap.dmi', "chunk_base")
|
||||
var/obj/minimap_obj/minimap_obj = new()
|
||||
|
||||
/obj/minimap_obj/Click(location, control, params)
|
||||
if(!istype(usr, /mob/dead) && !istype(usr, /mob/living/silicon/ai) && !(usr.client && usr.client.holder && usr.client.holder.level >= 4))
|
||||
return
|
||||
|
||||
var/list/par = params2list(params)
|
||||
var/screen_loc = par["screen-loc"]
|
||||
|
||||
if(findtext(screen_loc, "minimap:") != 1)
|
||||
return
|
||||
|
||||
screen_loc = copytext(screen_loc, length("minimap:") + 1)
|
||||
|
||||
var/x_text = copytext(screen_loc, 1, findtext(screen_loc, ","))
|
||||
var/y_text = copytext(screen_loc, findtext(screen_loc, ",") + 1)
|
||||
|
||||
var/x = (text2num(copytext(x_text, 1, findtext(x_text, ":"))) - 1) * 16
|
||||
x += round((text2num(copytext(x_text, findtext(x_text, ":") + 1)) + 1) / 2)
|
||||
|
||||
var/y = (text2num(copytext(y_text, 1, findtext(y_text, ":"))) - 1) * 16
|
||||
y += round((text2num(copytext(y_text, findtext(y_text, ":") + 1)) + 1) / 2)
|
||||
|
||||
if(istype(usr, /mob/living/silicon/ai))
|
||||
var/mob/living/silicon/ai/ai = usr
|
||||
ai.freelook()
|
||||
ai.eyeobj.loc = locate(max(1, x - 1), max(1, y - 1), ai.eyeobj.z)
|
||||
cameranet.visibility(ai.eyeobj)
|
||||
|
||||
else
|
||||
usr.loc = locate(max(1, x - 1), max(1, y - 1), usr.z)
|
||||
|
||||
/mob/dead/verb/Open_Minimap()
|
||||
set category = "Ghost"
|
||||
winshow(src, "minimapwindow", 1)
|
||||
client.screen |= cameranet.minimap
|
||||
|
||||
if(cameranet.generating_minimap)
|
||||
cameranet.minimap_viewers += src
|
||||
|
||||
/mob/living/silicon/ai/verb/Open_Minimap()
|
||||
set category = "AI Commands"
|
||||
winshow(src, "minimapwindow", 1)
|
||||
client.screen |= cameranet.minimap
|
||||
|
||||
if(cameranet.generating_minimap)
|
||||
cameranet.minimap_viewers += src
|
||||
|
||||
/client/proc/Open_Minimap()
|
||||
set category = "Admin"
|
||||
winshow(src, "minimapwindow", 1)
|
||||
screen |= cameranet.minimap
|
||||
|
||||
if(cameranet.generating_minimap)
|
||||
cameranet.minimap_viewers += src.mob
|
||||
|
||||
/datum/camerachunk/proc/update_minimap()
|
||||
if(changed && !updating)
|
||||
update()
|
||||
|
||||
minimap_icon.Blend(rgb(255, 0, 0), ICON_MULTIPLY)
|
||||
|
||||
var/list/turfs = visibleTurfs | dimTurfs
|
||||
|
||||
for(var/turf/turf in turfs)
|
||||
var/x = (turf.x & 0xf) * 2
|
||||
var/y = (turf.y & 0xf) * 2
|
||||
|
||||
if(turf.density)
|
||||
minimap_icon.DrawBox(rgb(100, 100, 100), x + 1, y + 1, x + 2, y + 2)
|
||||
continue
|
||||
|
||||
else if(istype(turf, /turf/space))
|
||||
minimap_icon.DrawBox(rgb(0, 0, 0), x + 1, y + 1, x + 2, y + 2)
|
||||
|
||||
else
|
||||
minimap_icon.DrawBox(rgb(200, 200, 200), x + 1, y + 1, x + 2, y + 2)
|
||||
|
||||
for(var/obj/structure/o in turf)
|
||||
if(o.density)
|
||||
if(istype(o, /obj/structure/window) && (o.dir == NORTH || o.dir == SOUTH || o.dir == EAST || o.dir == WEST))
|
||||
if(o.dir == NORTH)
|
||||
minimap_icon.DrawBox(rgb(150, 150, 200), x + 1, y + 2, x + 2, y + 2)
|
||||
else if(o.dir == SOUTH)
|
||||
minimap_icon.DrawBox(rgb(150, 150, 200), x + 1, y + 1, x + 2, y + 1)
|
||||
else if(o.dir == EAST)
|
||||
minimap_icon.DrawBox(rgb(150, 150, 200), x + 3, y + 1, x + 2, y + 2)
|
||||
else if(o.dir == WEST)
|
||||
minimap_icon.DrawBox(rgb(150, 150, 200), x + 1, y + 1, x + 1, y + 2)
|
||||
|
||||
else
|
||||
minimap_icon.DrawBox(rgb(150, 150, 150), x + 1, y + 1, x + 2, y + 2)
|
||||
break
|
||||
|
||||
for(var/obj/machinery/door/o in turf)
|
||||
if(istype(o, /obj/machinery/door/window))
|
||||
if(o.dir == NORTH)
|
||||
minimap_icon.DrawBox(rgb(100, 150, 100), x + 1, y + 2, x + 2, y + 2)
|
||||
else if(o.dir == SOUTH)
|
||||
minimap_icon.DrawBox(rgb(100, 150, 100), x + 1, y + 1, x + 2, y + 1)
|
||||
else if(o.dir == EAST)
|
||||
minimap_icon.DrawBox(rgb(100, 150, 100), x + 2, y + 1, x + 2, y + 2)
|
||||
else if(o.dir == WEST)
|
||||
minimap_icon.DrawBox(rgb(100, 150, 100), x + 1, y + 1, x + 1, y + 2)
|
||||
|
||||
else
|
||||
minimap_icon.DrawBox(rgb(100, 150, 100), x + 1, y + 1, x + 2, y + 2)
|
||||
break
|
||||
|
||||
minimap_obj.screen_loc = "minimap:[src.x / 16],[src.y / 16]"
|
||||
minimap_obj.icon = minimap_icon
|
||||
|
||||
/mob/aiEye
|
||||
var/list/visibleCameraChunks = list()
|
||||
var/mob/ai = null
|
||||
@@ -50,6 +172,7 @@
|
||||
seenby += ai
|
||||
if(changed && !updating)
|
||||
update()
|
||||
changed = 0
|
||||
|
||||
/datum/camerachunk/proc/remove(mob/aiEye/ai)
|
||||
ai.visibleCameraChunks -= src
|
||||
@@ -76,20 +199,28 @@
|
||||
else
|
||||
changed = 1
|
||||
|
||||
if(!minimap_updating)
|
||||
minimap_updating = 1
|
||||
|
||||
spawn(MINIMAP_UPDATE_DELAY)
|
||||
if(changed && !updating)
|
||||
update()
|
||||
changed = 0
|
||||
|
||||
update_minimap()
|
||||
minimap_updating = 0
|
||||
|
||||
/datum/camerachunk/proc/update()
|
||||
|
||||
var/list/newDimTurfs = list()
|
||||
var/list/newVisibleTurfs = list()
|
||||
|
||||
for(var/obj/machinery/camera/c in cameras)
|
||||
var/lum = c.luminosity
|
||||
c.luminosity = 7
|
||||
for(var/turf/t in view(7, c))
|
||||
if(t in turfs)
|
||||
newDimTurfs += t
|
||||
|
||||
for(var/turf/t in view(6, c))
|
||||
if(t in turfs)
|
||||
newVisibleTurfs += t
|
||||
newDimTurfs |= turfs & view(7, c)
|
||||
newVisibleTurfs |= turfs & view(6, c)
|
||||
|
||||
c.luminosity = lum
|
||||
|
||||
@@ -154,29 +285,26 @@
|
||||
m.ai.client.images += t.obscured
|
||||
|
||||
|
||||
|
||||
/datum/camerachunk/New(loc, x, y, z)
|
||||
x &= ~0xf
|
||||
y &= ~0xf
|
||||
|
||||
src.x = x
|
||||
src.y = y
|
||||
src.z = z
|
||||
|
||||
for(var/obj/machinery/camera/c in range(16, locate(x + 8, y + 8, z)))
|
||||
if(c.status)
|
||||
cameras += c
|
||||
|
||||
for(var/turf/t in range(10, locate(x + 8, y + 8, z)))
|
||||
if(t.x >= x && t.y >= y && t.x < x + 16 && t.y < y + 16)
|
||||
turfs += t
|
||||
turfs = block(locate(x, y, z), locate(min(world.maxx, x + 15), min(world.maxy, y + 15), z))
|
||||
|
||||
for(var/obj/machinery/camera/c in cameras)
|
||||
var/lum = c.luminosity
|
||||
c.luminosity = 7
|
||||
for(var/turf/t in view(7, c))
|
||||
if(t in turfs)
|
||||
dimTurfs += t
|
||||
|
||||
for(var/turf/t in view(6, c))
|
||||
if(t in turfs)
|
||||
visibleTurfs += t
|
||||
dimTurfs |= turfs & view(7, c)
|
||||
visibleTurfs |= turfs & view(6, c)
|
||||
|
||||
c.luminosity = lum
|
||||
|
||||
@@ -197,6 +325,8 @@
|
||||
|
||||
dim += t.dim
|
||||
|
||||
cameranet.minimap += minimap_obj
|
||||
|
||||
var/datum/cameranet/cameranet = new()
|
||||
|
||||
/datum/cameranet
|
||||
@@ -205,9 +335,27 @@ var/datum/cameranet/cameranet = new()
|
||||
var/network = "net1"
|
||||
var/ready = 0
|
||||
|
||||
var/list/minimap = list()
|
||||
|
||||
var/generating_minimap = TRUE
|
||||
var/list/minimap_viewers = list()
|
||||
|
||||
/datum/cameranet/New()
|
||||
..()
|
||||
|
||||
spawn(200)
|
||||
for(var/x = 0, x <= world.maxx, x += 16)
|
||||
for(var/y = 0, y <= world.maxy, y += 16)
|
||||
sleep(1)
|
||||
var/datum/camerachunk/c = getCameraChunk(x, y, 1)
|
||||
c.update_minimap()
|
||||
|
||||
for(var/mob/m in minimap_viewers)
|
||||
m.client.screen |= c.minimap_obj
|
||||
|
||||
generating_minimap = FALSE
|
||||
minimap_viewers = list()
|
||||
|
||||
/datum/cameranet/proc/chunkGenerated(x, y, z)
|
||||
var/key = "[x],[y],[z]"
|
||||
return key in chunks
|
||||
@@ -301,6 +449,7 @@ var/datum/cameranet/cameranet = new()
|
||||
// machine = null
|
||||
if(!eyeobj) //if it got deleted somehow (like an admin trying to fix things <.<')
|
||||
eyeobj = new()
|
||||
eyeobj.ai = src
|
||||
client.eye = eyeobj
|
||||
eyeobj.loc = loc
|
||||
cameranet.visibility(eyeobj)
|
||||
@@ -368,12 +517,6 @@ var/datum/cameranet/cameranet = new()
|
||||
return 1
|
||||
return 0
|
||||
|
||||
/mob/living/silicon/ai/switchCamera(var/obj/machinery/camera/C)
|
||||
if(C && isturf(C.loc))
|
||||
eyeobj.loc = C.loc
|
||||
cameranet.visibility(eyeobj)
|
||||
return
|
||||
|
||||
/mob/living/silicon/ai/attack_ai(var/mob/user as mob)
|
||||
if (user != src)
|
||||
return
|
||||
@@ -411,5 +554,20 @@ var/datum/cameranet/cameranet = new()
|
||||
set category = "OOC"
|
||||
reset_view(null)
|
||||
machine = null
|
||||
del eyeobj
|
||||
src.freelook()
|
||||
|
||||
/mob/living/silicon/ai/reset_view(atom/A)
|
||||
if (client)
|
||||
if(!eyeobj)
|
||||
eyeobj = new()
|
||||
eyeobj.ai = src
|
||||
|
||||
client.eye = eyeobj
|
||||
client.perspective = EYE_PERSPECTIVE
|
||||
|
||||
if (istype(A, /atom/movable))
|
||||
eyeobj.loc = locate(A.x, A.y, A.z)
|
||||
|
||||
else
|
||||
eyeobj.loc = locate(src.x, src.y, src.z)
|
||||
|
||||
cameranet.visibility(eyeobj)
|
||||
|
||||
@@ -239,9 +239,6 @@
|
||||
overlays += image("icon" = 'belt_mirror.dmi', "icon_state" = text("[][]", t1, (!( lying ) ? null : "2")), "layer" = MOB_LAYER)
|
||||
s_store.screen_loc = ui_sstore1
|
||||
|
||||
if (h_store)
|
||||
h_store.screen_loc = ui_hstore1
|
||||
|
||||
if(client) hud_used.other_update() //Update the screenloc of the items on the 'other' inventory bar
|
||||
//to hide / show them.
|
||||
if (client)
|
||||
|
||||
@@ -792,12 +792,21 @@
|
||||
/obj/structure/stool/bed/chair/comfy/teal
|
||||
icon_state = "comfychair_teal"
|
||||
|
||||
/obj/structure/stool/bed/chair/office
|
||||
anchored = 0
|
||||
|
||||
/obj/structure/stool/bed/chair/comfy/black
|
||||
icon_state = "comfychair_black"
|
||||
|
||||
/obj/structure/stool/bed/chair/comfy/lime
|
||||
icon_state = "comfychair_lime"
|
||||
|
||||
/obj/structure/stool/bed/chair/office/Move()
|
||||
..()
|
||||
if(buckled_mob)
|
||||
if(buckled_mob.buckled == src)
|
||||
buckled_mob.loc = src.loc
|
||||
buckled_mob.dir = src.dir
|
||||
|
||||
/obj/structure/stool/bed/chair/office/light
|
||||
icon_state = "officechair_white"
|
||||
|
||||
@@ -129,8 +129,59 @@
|
||||
desc = "It's a very robust satchel to wear on your back."
|
||||
icon_state = "satchel"
|
||||
|
||||
/obj/item/weapon/storage/backpack/satchel/withwallet
|
||||
New()
|
||||
..()
|
||||
new /obj/item/weapon/storage/wallet/random( src )
|
||||
|
||||
// Belt Bags/Satchels
|
||||
|
||||
/obj/item/weapon/storage/backpack/satchel_norm
|
||||
name = "satchel"
|
||||
desc = "A trendy looking satchel."
|
||||
icon_state = "satchel-norm"
|
||||
|
||||
/obj/item/weapon/storage/backpack/satchel_eng
|
||||
name = "industrial satchel"
|
||||
desc = "A tough satchel with extra pockets."
|
||||
icon_state = "satchel-eng"
|
||||
|
||||
/obj/item/weapon/storage/backpack/satchel_med
|
||||
name = "medical satchel"
|
||||
desc = "A sterile satchel used in medical departments."
|
||||
icon_state = "satchel-med"
|
||||
|
||||
/obj/item/weapon/storage/backpack/satchel_vir
|
||||
name = "virologist satchel"
|
||||
desc = "A sterile satchel with virologist colours."
|
||||
icon_state = "satchel-vir"
|
||||
|
||||
/obj/item/weapon/storage/backpack/satchel_chem
|
||||
name = "chemist satchel"
|
||||
desc = "A sterile satchel with chemist colours."
|
||||
icon_state = "satchel-chem"
|
||||
|
||||
/obj/item/weapon/storage/backpack/satchel_gen
|
||||
name = "geneticist satchel"
|
||||
desc = "A sterile satchel with geneticist colours."
|
||||
icon_state = "satchel-gen"
|
||||
|
||||
/obj/item/weapon/storage/backpack/satchel_tox
|
||||
name = "scientist satchel"
|
||||
desc = "Useful for holding research materials."
|
||||
icon_state = "satchel-tox"
|
||||
|
||||
/obj/item/weapon/storage/backpack/satchel_sec
|
||||
name = "security satchel"
|
||||
desc = "A robust satchel for security related needs."
|
||||
icon_state = "satchel-sec"
|
||||
|
||||
/obj/item/weapon/storage/backpack/satchel_hyd
|
||||
name = "hydroponics satchel"
|
||||
desc = "A green satchel for plant related work."
|
||||
icon_state = "satchel_hyd"
|
||||
|
||||
|
||||
|
||||
/obj/item/weapon/storage/backpack/bandolier
|
||||
name = "bandolier"
|
||||
@@ -211,6 +262,7 @@
|
||||
desc = "It can hold a few small and personal things."
|
||||
storage_slots = 4
|
||||
icon_state = "wallet"
|
||||
w_class = 2
|
||||
can_hold = list(
|
||||
"/obj/item/weapon/spacecash",
|
||||
"/obj/item/weapon/card",
|
||||
@@ -615,50 +667,3 @@
|
||||
R.amount = R.max_amount
|
||||
|
||||
return
|
||||
|
||||
// Belt Bags/Satchels
|
||||
|
||||
/obj/item/weapon/storage/backpack/satchel_norm
|
||||
name = "satchel"
|
||||
desc = "A trendy looking satchel."
|
||||
icon_state = "satchel-norm"
|
||||
|
||||
/obj/item/weapon/storage/backpack/satchel_eng
|
||||
name = "industrial satchel"
|
||||
desc = "A tough satchel with extra pockets."
|
||||
icon_state = "satchel-eng"
|
||||
|
||||
/obj/item/weapon/storage/backpack/satchel_med
|
||||
name = "medical satchel"
|
||||
desc = "A sterile satchel used in medical departments."
|
||||
icon_state = "satchel-med"
|
||||
|
||||
/obj/item/weapon/storage/backpack/satchel_vir
|
||||
name = "virologist satchel"
|
||||
desc = "A sterile satchel with virologist colours."
|
||||
icon_state = "satchel-vir"
|
||||
|
||||
/obj/item/weapon/storage/backpack/satchel_chem
|
||||
name = "chemist satchel"
|
||||
desc = "A sterile satchel with chemist colours."
|
||||
icon_state = "satchel-chem"
|
||||
|
||||
/obj/item/weapon/storage/backpack/satchel_gen
|
||||
name = "geneticist satchel"
|
||||
desc = "A sterile satchel with geneticist colours."
|
||||
icon_state = "satchel-gen"
|
||||
|
||||
/obj/item/weapon/storage/backpack/satchel_tox
|
||||
name = "scientist satchel"
|
||||
desc = "Useful for holding research materials."
|
||||
icon_state = "satchel-tox"
|
||||
|
||||
/obj/item/weapon/storage/backpack/satchel_sec
|
||||
name = "security satchel"
|
||||
desc = "A robust satchel for security related needs."
|
||||
icon_state = "satchel-sec"
|
||||
|
||||
/obj/item/weapon/storage/backpack/satchel_hyd
|
||||
name = "hydroponics satchel"
|
||||
desc = "A green satchel for plant related work."
|
||||
icon_state = "satchel_hyd"
|
||||
|
||||
@@ -67,7 +67,6 @@ proc/countJob(rank)
|
||||
slot_r_store = 16
|
||||
slot_s_store = 17
|
||||
slot_in_backpack = 18
|
||||
slot_h_store = 19
|
||||
|
||||
/mob/living/carbon/human/proc/equip_in_one_of_slots(obj/item/W, list/slots, del_on_fail = 1)
|
||||
for (var/slot in slots)
|
||||
@@ -86,9 +85,6 @@ proc/countJob(rank)
|
||||
if(slot == s_store && !src.wear_suit)
|
||||
del(W)
|
||||
return
|
||||
if(slot == h_store && !src.head)
|
||||
del(W)
|
||||
return
|
||||
switch(slot)
|
||||
if(slot_back)
|
||||
if(!src.back)
|
||||
@@ -167,10 +163,6 @@ proc/countJob(rank)
|
||||
if(B.contents.len < B.storage_slots && W.w_class <= B.max_w_class)
|
||||
W.loc = B
|
||||
equipped = 1
|
||||
if(slot_h_store)
|
||||
if(!src.h_store)
|
||||
src.h_store = W
|
||||
equipped = 1
|
||||
|
||||
if(equipped)
|
||||
W.layer = 20
|
||||
|
||||
@@ -71,7 +71,7 @@
|
||||
sleep(10 * 60 * 20) // 30 minutes
|
||||
command_alert("Diagnosis suite failure detected. Running backup diagnosis tool.", "Anomaly Alert")
|
||||
sleep(100)
|
||||
command_alert("AI unit diagnosis failed. Unable to detect morality cores. Disabling of unit recommended.", "Anomaly Alert")
|
||||
command_alert("Nanotrasen has received reports that some AI cores may have been tampered with. You are advised to monitor your assigned AI for any abberant bahavior, and are authorized to take corrective action, should it be necessary.", "Security Alert")
|
||||
|
||||
..()
|
||||
|
||||
|
||||
@@ -11,10 +11,10 @@
|
||||
#define ui_storage1 "SOUTH-1,4"
|
||||
#define ui_storage2 "SOUTH-1,5"
|
||||
#define ui_sstore1 "SOUTH+1,4"
|
||||
#define ui_hstore1 "SOUTH+1,5"
|
||||
#define ui_hstore1 "SOUTH+1,6"
|
||||
#define ui_resist "EAST+1,SOUTH-1"
|
||||
#define ui_gloves "SOUTH,5"
|
||||
#define ui_glasses "SOUTH+1,6"
|
||||
#define ui_glasses "SOUTH+1,5"
|
||||
#define ui_lear "SOUTH,7"
|
||||
#define ui_rear "SOUTH,6"
|
||||
#define ui_head "SOUTH+1,2"
|
||||
@@ -68,7 +68,6 @@ obj/hud/New(var/type = 0)
|
||||
if(mymob:r_ear) mymob:r_ear:screen_loc = ui_rear
|
||||
if(mymob:s_store) mymob:s_store:screen_loc = ui_sstore1
|
||||
if(mymob:glasses) mymob:glasses:screen_loc = ui_glasses
|
||||
if(mymob:h_store) mymob:h_store:screen_loc = ui_hstore1
|
||||
else
|
||||
if(istype(mymob, /mob/living/carbon/human))
|
||||
if(mymob:shoes) mymob:shoes:screen_loc = null
|
||||
@@ -77,7 +76,6 @@ obj/hud/New(var/type = 0)
|
||||
if(mymob:r_ear) mymob:r_ear:screen_loc = null
|
||||
if(mymob:s_store) mymob:s_store:screen_loc = null
|
||||
if(mymob:glasses) mymob:glasses:screen_loc = null
|
||||
if(mymob:h_store) mymob:h_store:screen_loc = null
|
||||
|
||||
|
||||
/obj/hud/var/show_otherinventory = 1
|
||||
|
||||
@@ -104,8 +104,6 @@
|
||||
H.equip_if_possible(new /obj/item/device/detective_scanner(H), H.slot_in_backpack)
|
||||
H.equip_if_possible(new /obj/item/weapon/reagent_containers/food/drinks/dflask(H.back), H.slot_in_backpack)
|
||||
H.equip_if_possible(new /obj/item/weapon/lighter/zippo(H), H.slot_l_store)
|
||||
// H.equip_if_possible(new /obj/item/weapon/reagent_containers/food/snacks/candy_corn(H), H.slot_h_store)
|
||||
// No... just no. --SkyMarshal
|
||||
var/datum/organ/external/O = H.organs[pick(H.organs)]
|
||||
var/obj/item/weapon/implant/loyalty/L = new/obj/item/weapon/implant/loyalty(O)
|
||||
O.implant += L
|
||||
|
||||
@@ -98,19 +98,15 @@
|
||||
|
||||
usr:cameraFollow = target
|
||||
usr << "Now tracking target on camera." //Unidentifieds are no longer screamed at you.
|
||||
if (usr.machine == null)
|
||||
|
||||
if (usr.machine == null && client.eye != eyeobj)
|
||||
usr.machine = usr
|
||||
|
||||
spawn (0)
|
||||
if(client.eye == eyeobj)
|
||||
if(checkcameravis(target))
|
||||
eyeobj.loc = target.loc
|
||||
else
|
||||
usr << "Target is not on or near any active cameras on the station."
|
||||
return
|
||||
while (usr:cameraFollow == target)
|
||||
if (usr:cameraFollow == null)
|
||||
return
|
||||
|
||||
else if (istype(target, /mob/living/carbon/human))
|
||||
if(istype(target:wear_id, /obj/item/weapon/card/id/syndicate))
|
||||
usr << "Follow camera mode terminated."
|
||||
@@ -134,6 +130,17 @@
|
||||
sleep(40) //because we're sleeping another second after this (a few lines down)
|
||||
continue
|
||||
|
||||
else if(client.eye == eyeobj)
|
||||
if(checkcameravis(target))
|
||||
eyeobj.loc = target.loc
|
||||
sleep(50)
|
||||
continue
|
||||
|
||||
else
|
||||
usr << "Target is not on or near any active cameras on the station."
|
||||
usr:cameraFollow = null
|
||||
return
|
||||
|
||||
var/obj/machinery/camera/C = usr:current
|
||||
if ((C && istype(C, /obj/machinery/camera)) || C==null)
|
||||
|
||||
|
||||
@@ -195,10 +195,21 @@ Airlock index -> wire color are { 9, 4, 6, 7, 5, 8, 1, 2, 3 }.
|
||||
doortype = 17
|
||||
glass = 1
|
||||
|
||||
|
||||
glass_research
|
||||
name = "Research Airlock"
|
||||
icon = 'doorsciglass.dmi'
|
||||
opacity = 0
|
||||
doortype = 20
|
||||
glass = 1
|
||||
|
||||
|
||||
glass_mining
|
||||
name = "Maintenance Hatch"
|
||||
icon = 'doorminingglass.dmi'
|
||||
opacity = 0
|
||||
doortype = 22
|
||||
glass = 1
|
||||
|
||||
centcom
|
||||
name = "Airlock"
|
||||
@@ -419,7 +430,11 @@ Airlock index -> wire color are { 9, 4, 6, 7, 5, 8, 1, 2, 3 }.
|
||||
if(15) new/obj/structure/door_assembly/door_assembly_eng/glass( src.loc ) //issue 301 -mysthic
|
||||
if(16) new/obj/structure/door_assembly/door_assembly_sec/glass( src.loc )
|
||||
if(17) new/obj/structure/door_assembly/door_assembly_med/glass( src.loc )
|
||||
if(18) new/obj/structure/door_assembly/door_assembly_min( src.loc )
|
||||
if(19) new/obj/structure/door_assembly/door_assembly_atmo( src.loc )
|
||||
if(20) new/obj/structure/door_assembly/door_assembly_research( src.loc )
|
||||
if(21) new/obj/structure/door_assembly/door_assembly_research( src.loc )
|
||||
if(22) new/obj/structure/door_assembly/door_assembly_min/glass( src.loc )
|
||||
var/obj/item/weapon/airlock_electronics/ae
|
||||
if (!electronics)
|
||||
ae = new/obj/item/weapon/airlock_electronics( src.loc )
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/obj/machinery/hydroponics
|
||||
name = "Hydroponics Tray"
|
||||
name = "hydroponics tray"
|
||||
icon = 'hydroponics.dmi'
|
||||
icon_state = "hydrotray3"
|
||||
density = 1
|
||||
@@ -404,7 +404,7 @@ obj/machinery/hydroponics/proc/mutateweed() // If the weeds gets the mutagent in
|
||||
src.updateicon()
|
||||
src.visible_message("\red The mutated weeds in [src] spawned a \blue [src.myseed.plantname]!")
|
||||
else
|
||||
usr << "The few weeds in the tray seem to react, but only for a moment..."
|
||||
usr << "The few weeds in the [src] seem to react, but only for a moment..."
|
||||
return
|
||||
|
||||
|
||||
@@ -441,7 +441,7 @@ obj/machinery/hydroponics/attackby(var/obj/item/O as obj, var/mob/user as mob)
|
||||
O.reagents.remove_reagent("water", b_amount)
|
||||
src.waterlevel += b_amount
|
||||
playsound(src.loc, 'slosh.ogg', 25, 1)
|
||||
user << "You fill the tray with [b_amount] units of water."
|
||||
user << "You fill the [src] with [b_amount] units of water."
|
||||
|
||||
// Toxicity dilutation code. The more water you put in, the lesser the toxin concentration.
|
||||
src.toxic -= round(b_amount/4)
|
||||
@@ -449,7 +449,7 @@ obj/machinery/hydroponics/attackby(var/obj/item/O as obj, var/mob/user as mob)
|
||||
src.toxic = 0
|
||||
|
||||
else if(src.waterlevel >= 100)
|
||||
user << "\red The hydroponics tray is already full."
|
||||
user << "\red The [src] is already full."
|
||||
else
|
||||
user << "\red The bucket is not filled with water."
|
||||
src.updateicon()
|
||||
@@ -460,7 +460,7 @@ obj/machinery/hydroponics/attackby(var/obj/item/O as obj, var/mob/user as mob)
|
||||
src.nutrilevel = 10
|
||||
src.yieldmod = myNut.yieldmod
|
||||
src.mutmod = myNut.mutmod
|
||||
user << "You replace the nutrient solution in the tray"
|
||||
user << "You replace the nutrient solution in the [src]."
|
||||
del(O)
|
||||
src.updateicon()
|
||||
|
||||
@@ -661,7 +661,7 @@ obj/machinery/hydroponics/attackby(var/obj/item/O as obj, var/mob/user as mob)
|
||||
src.updateicon()
|
||||
|
||||
else
|
||||
user << "\red The tray already has seeds in it!"
|
||||
user << "\red The [src] already has seeds in it!"
|
||||
|
||||
else if (istype(O, /obj/item/device/analyzer/plant_analyzer))
|
||||
if(src.planted && src.myseed)
|
||||
@@ -709,7 +709,7 @@ obj/machinery/hydroponics/attackby(var/obj/item/O as obj, var/mob/user as mob)
|
||||
else if (istype(O, /obj/item/weapon/minihoe)) // The minihoe
|
||||
//var/deweeding
|
||||
if(src.weedlevel > 0)
|
||||
user.visible_message("\red [user] starts uprooting the weeds.", "\red You remove the weeds from the tray.")
|
||||
user.visible_message("\red [user] starts uprooting the weeds.", "\red You remove the weeds from the [src].")
|
||||
src.weedlevel = 0
|
||||
else
|
||||
user << "\red This plot is completely devoid of weeds. It doesn't need uprooting."
|
||||
@@ -723,7 +723,7 @@ obj/machinery/hydroponics/attackby(var/obj/item/O as obj, var/mob/user as mob)
|
||||
src.weedlevel = 0
|
||||
if (src.toxic > 100 ) // Make sure it won't go overoboard
|
||||
src.toxic = 100
|
||||
user << "You apply the weedkiller solution into the tray"
|
||||
user << "You apply the weedkiller solution into the [src]."
|
||||
playsound(src.loc, 'spray3.ogg', 50, 1, -6)
|
||||
del(O)
|
||||
src.updateicon()
|
||||
@@ -737,7 +737,7 @@ obj/machinery/hydroponics/attackby(var/obj/item/O as obj, var/mob/user as mob)
|
||||
src.pestlevel = 0
|
||||
if (src.toxic > 100 ) // Make sure it won't go overoboard
|
||||
src.toxic = 100
|
||||
user << "You apply the pestkiller solution into the tray"
|
||||
user << "You apply the pestkiller solution into the [src]."
|
||||
playsound(src.loc, 'spray3.ogg', 50, 1, -6)
|
||||
del(O)
|
||||
src.updateicon()
|
||||
@@ -754,22 +754,22 @@ obj/machinery/hydroponics/attackby(var/obj/item/O as obj, var/mob/user as mob)
|
||||
else if(src.dead)
|
||||
src.planted = 0
|
||||
src.dead = 0
|
||||
usr << text("You remove the dead plant from the tray")
|
||||
usr << text("You remove the dead plant from the [src].")
|
||||
del(src.myseed)
|
||||
src.updateicon()
|
||||
else
|
||||
if(src.planted && !src.dead)
|
||||
usr << text("The hydroponics tray has \blue [src.myseed.plantname] \black planted")
|
||||
usr << text("The [src] has \blue [src.myseed.plantname] \black planted.")
|
||||
if(src.health <= (src.myseed.endurance / 2))
|
||||
usr << text("The plant looks unhealthy")
|
||||
else
|
||||
usr << text("The hydroponics tray is empty")
|
||||
usr << text("The [src] is empty.")
|
||||
usr << text("Water: [src.waterlevel]/100")
|
||||
usr << text("Nutrient: [src.nutrilevel]/10")
|
||||
if(src.weedlevel >= 5) // Visual aid for those blind
|
||||
usr << text("The tray is filled with weeds!")
|
||||
usr << text("The [src] is filled with weeds!")
|
||||
if(src.pestlevel >= 5) // Visual aid for those blind
|
||||
usr << text("The tray is filled with tiny worms!")
|
||||
usr << text("The [src] is filled with tiny worms!")
|
||||
usr << text ("") // Empty line for readability.
|
||||
|
||||
/obj/item/seeds/proc/harvest(mob/user = usr)
|
||||
@@ -977,7 +977,7 @@ obj/machinery/hydroponics/attackby(var/obj/item/O as obj, var/mob/user as mob)
|
||||
harvest = 0
|
||||
lastproduce = src.age
|
||||
if((yieldmod * myseed.yield) <= 0)
|
||||
user << text("\red You fail to harvest anything useful")
|
||||
user << text("\red You fail to harvest anything useful.")
|
||||
else
|
||||
user << text("You harvest from the [src.myseed.plantname]")
|
||||
if(myseed.oneharvest)
|
||||
|
||||
@@ -1,14 +1,12 @@
|
||||
/obj/structure/closet/secure_closet/cargotech
|
||||
name = "Cargo Technician's Locker"
|
||||
req_access = list(access_cargo)
|
||||
//icon_state = "secureeng1"
|
||||
//icon_closed = "secureeng"
|
||||
//icon_locked = "secureeng1"
|
||||
//icon_opened = "toolclosetopen"
|
||||
//icon_broken = "secureengbroken"
|
||||
//icon_off = "secureengoff"
|
||||
|
||||
//Needs proper sprites
|
||||
icon_state = "securecargo1"
|
||||
icon_closed = "securecargo"
|
||||
icon_locked = "securecargo1"
|
||||
icon_opened = "securecargoopen"
|
||||
icon_broken = "securecargobroken"
|
||||
icon_off = "securecargooff"
|
||||
|
||||
New()
|
||||
..()
|
||||
|
||||
@@ -26,7 +26,7 @@
|
||||
..()
|
||||
spawn(4)
|
||||
contents = list()
|
||||
new /obj/item/weapon/storage/backpack/satchel( src )
|
||||
new /obj/item/weapon/storage/backpack/satchel/withwallet( src )
|
||||
new /obj/item/device/radio/headset( src )
|
||||
return
|
||||
|
||||
|
||||
@@ -31,12 +31,12 @@
|
||||
/obj/structure/closet/secure_closet/hop
|
||||
name = "Head of Personnel"
|
||||
req_access = list(access_hop)
|
||||
icon_state = "capsecure1"
|
||||
icon_closed = "capsecure"
|
||||
icon_locked = "capsecure1"
|
||||
icon_opened = "capsecureopen"
|
||||
icon_broken = "capsecurebroken"
|
||||
icon_off = "capsecureoff"
|
||||
icon_state = "hopsecure1"
|
||||
icon_closed = "hopsecure"
|
||||
icon_locked = "hopsecure1"
|
||||
icon_opened = "hopsecureopen"
|
||||
icon_broken = "hopsecurebroken"
|
||||
icon_off = "hopsecureoff"
|
||||
|
||||
New()
|
||||
..()
|
||||
|
||||
@@ -72,12 +72,18 @@ obj/structure/door_assembly
|
||||
door_assembly_min
|
||||
name = "Mining Airlock Assembly"
|
||||
icon_state = "door_as_min1"
|
||||
glass_base_icon_state = "door_as_gmin"
|
||||
glass_type = /obj/machinery/door/airlock/glass/glass_mining
|
||||
airlock_type = /obj/machinery/door/airlock/mining
|
||||
anchored = 1
|
||||
density = 1
|
||||
state = 1
|
||||
glass = 0
|
||||
|
||||
glass
|
||||
glass = 1
|
||||
icon_state = "door_as_gmin1"
|
||||
|
||||
door_assembly_atmo
|
||||
name = "Atmospherics Airlock Assembly"
|
||||
icon_state = "door_as_atmo1"
|
||||
@@ -90,12 +96,18 @@ obj/structure/door_assembly
|
||||
door_assembly_research
|
||||
name = "Research Airlock Assembly"
|
||||
icon_state = "door_as_res1"
|
||||
glass_base_icon_state = "door_as_gres"
|
||||
glass_type = /obj/machinery/door/airlock/glass/glass_research
|
||||
airlock_type = /obj/machinery/door/airlock/research
|
||||
anchored = 1
|
||||
density = 1
|
||||
state = 1
|
||||
glass = 0
|
||||
|
||||
glass
|
||||
glass = 1
|
||||
icon_state = "door_as_gres1"
|
||||
|
||||
door_assembly_med
|
||||
name = "Medical Airlock Assembly"
|
||||
icon_state = "door_as_med1"
|
||||
@@ -243,6 +255,8 @@ obj/structure/door_assembly
|
||||
del(src)
|
||||
else
|
||||
W.loc = src.loc
|
||||
|
||||
//del(W)
|
||||
else if(istype(W, /obj/item/weapon/crowbar) && state == 2 )
|
||||
playsound(src.loc, 'Crowbar.ogg', 100, 1)
|
||||
var/turf/T = get_turf(user)
|
||||
@@ -266,7 +280,7 @@ obj/structure/door_assembly
|
||||
if(do_after(user, 40))
|
||||
if(G)
|
||||
if(G.amount>=1)
|
||||
user << "\blue You installed glass windows into the airlock assembly!"
|
||||
user << "\blue You installed glass windows the airlock assembly!"
|
||||
G.use(1)
|
||||
src.glass = 1
|
||||
src.name = "Near finished Window Airlock Assembly"
|
||||
|
||||
@@ -123,6 +123,7 @@
|
||||
|
||||
if (!safety)
|
||||
if (src.reagents.total_volume < 1)
|
||||
usr << "\red the [src] is empty."
|
||||
return
|
||||
|
||||
if (world.time < src.last_use + 20)
|
||||
@@ -134,6 +135,28 @@
|
||||
|
||||
var/direction = get_dir(src,target)
|
||||
|
||||
if(usr.buckled && isobj(usr.buckled) && !usr.buckled.anchored )
|
||||
spawn(0)
|
||||
var/obj/B = usr.buckled
|
||||
var/movementdirection = turn(direction,180)
|
||||
B.Move(get_step(usr,movementdirection), movementdirection)
|
||||
sleep(1)
|
||||
B.Move(get_step(usr,movementdirection), movementdirection)
|
||||
sleep(1)
|
||||
B.Move(get_step(usr,movementdirection), movementdirection)
|
||||
sleep(1)
|
||||
B.Move(get_step(usr,movementdirection), movementdirection)
|
||||
sleep(2)
|
||||
B.Move(get_step(usr,movementdirection), movementdirection)
|
||||
sleep(2)
|
||||
B.Move(get_step(usr,movementdirection), movementdirection)
|
||||
sleep(3)
|
||||
B.Move(get_step(usr,movementdirection), movementdirection)
|
||||
sleep(3)
|
||||
B.Move(get_step(usr,movementdirection), movementdirection)
|
||||
sleep(3)
|
||||
B.Move(get_step(usr,movementdirection), movementdirection)
|
||||
|
||||
var/turf/T = get_turf(target)
|
||||
var/turf/T1 = get_step(T,turn(direction, 90))
|
||||
var/turf/T2 = get_step(T,turn(direction, -90))
|
||||
|
||||
@@ -118,6 +118,8 @@
|
||||
return
|
||||
|
||||
/obj/structure/stool/bed/chair/New()
|
||||
if(anchored)
|
||||
src.verbs -= /atom/movable/verb/pull
|
||||
if(src.dir == NORTH)
|
||||
src.layer = FLY_LAYER
|
||||
..()
|
||||
|
||||
@@ -207,6 +207,19 @@
|
||||
|
||||
/obj/item/weapon/storage/attack_hand(mob/user as mob)
|
||||
playsound(src.loc, "rustle", 50, 1, -5)
|
||||
|
||||
if(ishuman(user))
|
||||
var/mob/living/carbon/human/H = user
|
||||
if(H.l_store == src && !H.get_active_hand())
|
||||
H.put_in_hand(src)
|
||||
H.l_store = null
|
||||
return
|
||||
if(H.r_store == src && !H.get_active_hand())
|
||||
H.put_in_hand(src)
|
||||
H.r_store = null
|
||||
return
|
||||
|
||||
src.orient2hud(user)
|
||||
if (src.loc == user)
|
||||
if (user.s_active)
|
||||
user.s_active.close(user)
|
||||
@@ -216,7 +229,6 @@
|
||||
for(var/mob/M in range(1))
|
||||
if (M.s_active == src)
|
||||
src.close(M)
|
||||
src.orient2hud(user)
|
||||
src.add_fingerprint(user)
|
||||
return
|
||||
|
||||
|
||||
@@ -40,27 +40,94 @@
|
||||
density = 0
|
||||
anchored = 1
|
||||
var/on = 0
|
||||
var/mist = 0 //needs a var so we can make it linger~
|
||||
var/obj/effect/mist/mymist = null
|
||||
var/ismist = 0 //needs a var so we can make it linger~
|
||||
|
||||
//add heat controls? when emagged, you can freeze to death in it?
|
||||
|
||||
/obj/structure/shower/attack_hand()
|
||||
/obj/effect/mist
|
||||
name = "mist"
|
||||
icon = 'watercloset.dmi'
|
||||
icon_state = "mist"
|
||||
layer = MOB_LAYER + 1
|
||||
mouse_opacity = 0
|
||||
|
||||
/obj/structure/shower/attack_hand(mob/M as mob)
|
||||
on = !on
|
||||
update_icon()
|
||||
if(on && M.loc == loc)
|
||||
wash(M)
|
||||
|
||||
/obj/structure/shower/attackby(mob/M as mob)
|
||||
attack_hand(M)
|
||||
|
||||
/obj/structure/shower/update_icon()
|
||||
overlays = null
|
||||
if(mymist)
|
||||
del(mymist)
|
||||
|
||||
if(on)
|
||||
overlays += image('watercloset.dmi', src, "water", MOB_LAYER + 1, dir)
|
||||
spawn(50)
|
||||
if(src && on)
|
||||
overlays += image('watercloset.dmi', src, "mist", MOB_LAYER + 1, dir)
|
||||
mist = 1
|
||||
else if(mist)
|
||||
overlays += image('watercloset.dmi', src, "mist", MOB_LAYER + 1, dir)
|
||||
spawn(100)
|
||||
if(!ismist)
|
||||
spawn(50)
|
||||
if(src && on)
|
||||
ismist = 1
|
||||
mymist = new /obj/effect/mist(loc)
|
||||
else
|
||||
ismist = 1
|
||||
mymist = new /obj/effect/mist(loc)
|
||||
else if(ismist)
|
||||
ismist = 1
|
||||
mymist = new /obj/effect/mist(loc)
|
||||
spawn(250)
|
||||
if(src && !on)
|
||||
overlays = null
|
||||
del(mymist)
|
||||
ismist = 0
|
||||
|
||||
/obj/structure/shower/HasEntered(atom/movable/O as obj|mob)
|
||||
..()
|
||||
wash(O)
|
||||
|
||||
//Yes, showers are super powerful as far as washing goes.
|
||||
/obj/structure/shower/proc/wash(atom/movable/O as obj|mob)
|
||||
..()
|
||||
if(!on) return
|
||||
|
||||
O.clean_blood()
|
||||
|
||||
if(istype(O, /mob/living/carbon))
|
||||
var/mob/living/carbon/monkey = O //it's not necessarily a monkey, but >accurate varnames
|
||||
if(monkey.r_hand)
|
||||
monkey.r_hand.clean_blood()
|
||||
if(monkey.l_hand)
|
||||
monkey.l_hand.clean_blood()
|
||||
if(monkey.wear_mask)
|
||||
monkey.wear_mask.clean_blood()
|
||||
|
||||
if(istype(O, /mob/living/carbon/human))
|
||||
var/mob/living/carbon/human/washer = O
|
||||
if(washer.head)
|
||||
washer.head.clean_blood()
|
||||
if(washer.w_uniform)
|
||||
washer.w_uniform.clean_blood()
|
||||
if(washer.wear_suit)
|
||||
washer.wear_suit.clean_blood()
|
||||
if(washer.shoes)
|
||||
washer.shoes.clean_blood()
|
||||
if(washer.gloves)
|
||||
washer.gloves.clean_blood()
|
||||
if(washer.head)
|
||||
washer.head.clean_blood()
|
||||
|
||||
if(loc)
|
||||
var/turf/tile = get_turf(loc)
|
||||
loc.clean_blood()
|
||||
for(var/obj/effect/rune/R in tile)
|
||||
del(R)
|
||||
for(var/obj/effect/decal/cleanable/R in tile)
|
||||
del(R)
|
||||
for(var/obj/effect/overlay/R in tile)
|
||||
del(R)
|
||||
|
||||
|
||||
|
||||
@@ -69,4 +136,121 @@
|
||||
desc = "Rubber ducky you're so fine, you make bathtime lots of fuuun. Rubber ducky I'm awfully fooooond of yooooouuuu~" //thanks doohl
|
||||
icon = 'watercloset.dmi'
|
||||
icon_state = "rubberducky"
|
||||
item_state = "rubberducky"
|
||||
item_state = "rubberducky"
|
||||
|
||||
|
||||
|
||||
/obj/structure/sink
|
||||
name = "sink"
|
||||
icon = 'watercloset.dmi'
|
||||
icon_state = "sink"
|
||||
desc = "A sink used for washing one's hands and face."
|
||||
anchored = 1
|
||||
var/busy = 0 //Something's being washed at the moment
|
||||
|
||||
/obj/structure/sink/attack_hand(mob/M as mob)
|
||||
if(isrobot(M) || isAI(M))
|
||||
return
|
||||
|
||||
if(busy)
|
||||
M << "\red Someone's already washing here."
|
||||
return
|
||||
|
||||
var/turf/location = M.loc
|
||||
if(!isturf(location)) return
|
||||
usr << "\blue You start washing your hands."
|
||||
|
||||
busy = 1
|
||||
sleep(40)
|
||||
busy = 0
|
||||
|
||||
if(M.loc != location) return //Person has moved away from the sink
|
||||
|
||||
if(istype(M, /mob/living/carbon))
|
||||
var/mob/living/carbon/C = M
|
||||
if(istype(M, /mob/living/carbon/human))
|
||||
var/mob/living/carbon/human/washer = C
|
||||
if(washer.gloves) //if they have gloves
|
||||
washer.gloves.clean_blood() //clean the gloves
|
||||
else //and if they don't,
|
||||
washer.clean_blood() //wash their hands (a mob being bloody means they are 'red handed')
|
||||
else
|
||||
C.clean_blood() //other things that can't wear gloves should just wash the mob.
|
||||
for(var/mob/V in viewers(src, null))
|
||||
V.show_message(text("\blue [M] washes their hands using \the [src]."))
|
||||
|
||||
/obj/structure/sink/attackby(var/obj/item/O as obj, var/mob/user as mob)
|
||||
if(busy)
|
||||
user << "\red Someone's already washing here."
|
||||
return
|
||||
|
||||
if (istype(O, /obj/item/weapon/reagent_containers/glass/bucket))
|
||||
O:reagents.add_reagent("water", 70)
|
||||
user.visible_message( \
|
||||
"\blue [user] fills the [O] using \the [src].", \
|
||||
"\blue You fill the [O] using \the [src].")
|
||||
return
|
||||
|
||||
if (istype(O, /obj/item/weapon/reagent_containers/glass) || istype(O,/obj/item/weapon/reagent_containers/food/drinks))
|
||||
O:reagents.add_reagent("water", 10)
|
||||
user.visible_message( \
|
||||
"\blue [user] fills the [O] using \the [src].", \
|
||||
"\blue You fill the [O] using \the [src].")
|
||||
return
|
||||
else if (istype(O, /obj/item/weapon/melee/baton))
|
||||
var/obj/item/weapon/melee/baton/B = O
|
||||
if (B.charges > 0 && B.status == 1)
|
||||
flick("baton_active", src)
|
||||
user.Stun(10)
|
||||
user.stuttering = 10
|
||||
user.Weaken(10)
|
||||
if(isrobot(user))
|
||||
var/mob/living/silicon/robot/R = user
|
||||
R.cell.charge -= 20
|
||||
else
|
||||
B.charges--
|
||||
user.visible_message( \
|
||||
"[user] was stunned by his wet [O].", \
|
||||
"\red You have wet \the [O], it shocks you!")
|
||||
return
|
||||
|
||||
var/turf/location = user.loc
|
||||
if(!isturf(location)) return
|
||||
|
||||
var/obj/item/I = O
|
||||
if(!I || !istype(I,/obj/item)) return
|
||||
|
||||
usr << "\blue You start washing \the [I]."
|
||||
|
||||
busy = 1
|
||||
sleep(40)
|
||||
busy = 0
|
||||
|
||||
if(user.loc != location) return //User has moved
|
||||
if(!I) return //Item's been destroyed while washing
|
||||
if(user.get_active_hand() != I) return //Person has switched hands or the item in their hands
|
||||
|
||||
O.clean_blood()
|
||||
user.visible_message( \
|
||||
"\blue [user] washes \a [I] using \the [src].", \
|
||||
"\blue You wash \a [I] using \the [src].")
|
||||
|
||||
|
||||
/obj/structure/sink/kitchen
|
||||
name = "kitchen sink"
|
||||
icon_state = "sink_alt"
|
||||
|
||||
|
||||
/obj/structure/sink/puddle //splishy splashy ^_^
|
||||
name = "puddle"
|
||||
icon_state = "puddle"
|
||||
|
||||
/obj/structure/sink/puddle/attack_hand(mob/M as mob)
|
||||
icon_state = "puddle-splash"
|
||||
..()
|
||||
icon_state = "puddle"
|
||||
|
||||
/obj/structure/sink/puddle/attackby(var/obj/item/O as obj, var/mob/user as mob)
|
||||
icon_state = "puddle-splash"
|
||||
..()
|
||||
icon_state = "puddle"
|
||||
@@ -79,6 +79,7 @@
|
||||
src.health = max(0, src.health - tforce)
|
||||
if (src.health <= 7 && !reinf)
|
||||
src.anchored = 0
|
||||
update_nearby_icons()
|
||||
step(src, get_dir(AM, src))
|
||||
if (src.health <= 0)
|
||||
new /obj/item/weapon/shard( src.loc )
|
||||
@@ -201,22 +202,12 @@
|
||||
usr << ( state==1? "You have unfastened the window from the frame." : "You have fastened the window to the frame." )
|
||||
else if(reinf && state == 0)
|
||||
anchored = !anchored
|
||||
|
||||
for(var/obj/structure/window/w in range(src,1))
|
||||
if (w.anchored)
|
||||
w.relativewindow()
|
||||
src.relativewindow()
|
||||
|
||||
update_nearby_icons()
|
||||
playsound(src.loc, 'Screwdriver.ogg', 75, 1)
|
||||
user << (src.anchored ? "You have fastened the frame to the floor." : "You have unfastened the frame from the floor.")
|
||||
else if(!reinf)
|
||||
src.anchored = !( src.anchored )
|
||||
|
||||
for(var/obj/structure/window/w in range(src,1))
|
||||
if (w.anchored)
|
||||
w.relativewindow()
|
||||
src.relativewindow()
|
||||
|
||||
update_nearby_icons()
|
||||
playsound(src.loc, 'Screwdriver.ogg', 75, 1)
|
||||
user << (src.anchored ? "You have fastened the window to the floor." : "You have unfastened the window.")
|
||||
else if(istype(W, /obj/item/weapon/crowbar) && reinf && state <=1)
|
||||
@@ -232,12 +223,7 @@
|
||||
playsound(src.loc, 'Glasshit.ogg', 75, 1)
|
||||
if (src.health <= 7)
|
||||
src.anchored = 0
|
||||
|
||||
for(var/obj/structure/window/w in range(src,1))
|
||||
if (w.anchored)
|
||||
w.relativewindow()
|
||||
src.relativewindow()
|
||||
|
||||
update_nearby_icons()
|
||||
step(src, get_dir(user, src))
|
||||
if (src.health <= 0)
|
||||
if (src.dir == SOUTHWEST)
|
||||
@@ -328,10 +314,7 @@
|
||||
icon_state = "window"
|
||||
|
||||
update_nearby_tiles(need_rebuild=1)
|
||||
relativewindow()
|
||||
for(var/obj/structure/window/w in range(src,1))
|
||||
if (w.anchored)
|
||||
w.relativewindow()
|
||||
update_nearby_icons()
|
||||
|
||||
return
|
||||
|
||||
@@ -339,10 +322,11 @@
|
||||
density = 0
|
||||
|
||||
update_nearby_tiles()
|
||||
for(var/obj/structure/window/w in range(src,1))
|
||||
w.relativewindow()
|
||||
|
||||
playsound(src, "shatter", 70, 1)
|
||||
|
||||
update_nearby_icons()
|
||||
|
||||
..()
|
||||
|
||||
/obj/structure/window/Move()
|
||||
@@ -355,6 +339,7 @@
|
||||
|
||||
return
|
||||
|
||||
//This proc has to do with airgroups and atmos, it has nothing to do with smoothwindows, that's update_nearby_tiles().
|
||||
/obj/structure/window/proc/update_nearby_tiles(need_rebuild)
|
||||
if(!air_master) return 0
|
||||
|
||||
@@ -378,30 +363,40 @@
|
||||
|
||||
return 1
|
||||
|
||||
|
||||
//checks if this window is full-tile one
|
||||
/obj/structure/window/proc/is_fulltile()
|
||||
return (src.dir == SOUTHWEST || src.dir == SOUTHEAST || src.dir == NORTHWEST || src.dir == NORTHEAST)
|
||||
if(dir in list(5,6,9,10))
|
||||
return 1
|
||||
return 0
|
||||
|
||||
//This proc is used to update the icons of nearby windows. It should not be confused with update_nearby_tiles(), which is an atmos proc!
|
||||
/obj/structure/window/proc/update_nearby_icons()
|
||||
src.update_icon()
|
||||
for(var/direction in cardinal)
|
||||
for(var/obj/structure/window/W in get_step(src,direction) )
|
||||
W.update_icon()
|
||||
|
||||
//merges adjacent full-tile windows into one (blatant ripoff from game/smoothwall.dm)
|
||||
/obj/structure/window/proc/relativewindow()
|
||||
/obj/structure/window/update_icon()
|
||||
//A little cludge here, since I don't know how it will work with slim windows. Most likely VERY wrong.
|
||||
//this way it will only update full-tile ones
|
||||
if (!is_fulltile())
|
||||
return
|
||||
var/junction = 0 //will be used to determine from which side the window is connected to other windows
|
||||
if (src.anchored)
|
||||
for(var/obj/structure/window/W in orange(src,1))
|
||||
if (W.anchored && W.density && W.is_fulltile()) //Only counts anchored, not-destroyed fill-tile windows.
|
||||
if (abs(src.x-W.x)-abs(src.y-W.y) ) //doesn't count windows, placed diagonally to src
|
||||
junction |= get_dir(src,W)
|
||||
if (istype(src,/obj/structure/window/basic))
|
||||
src.icon_state = "window[junction]"
|
||||
else if (istype(src,/obj/structure/window/reinforced))
|
||||
if (istype(src,/obj/structure/window/reinforced/tinted))
|
||||
//This spawn is here so windows get properly updated when one gets deleted.
|
||||
spawn(2)
|
||||
if(!src) return
|
||||
if (!is_fulltile())
|
||||
return
|
||||
var/junction = 0 //will be used to determine from which side the window is connected to other windows
|
||||
if (src.anchored)
|
||||
for(var/obj/structure/window/W in orange(src,1))
|
||||
if (W.anchored && W.density && W.is_fulltile()) //Only counts anchored, not-destroyed fill-tile windows.
|
||||
if (abs(src.x-W.x)-abs(src.y-W.y) ) //doesn't count windows, placed diagonally to src
|
||||
junction |= get_dir(src,W)
|
||||
if (opacity)
|
||||
src.icon_state = "twindow[junction]"
|
||||
else
|
||||
src.icon_state = "rwindow[junction]"
|
||||
|
||||
return
|
||||
if (reinf)
|
||||
src.icon_state = "rwindow[junction]"
|
||||
else
|
||||
src.icon_state = "window[junction]"
|
||||
|
||||
return
|
||||
|
||||
@@ -220,6 +220,7 @@
|
||||
verbs += /client/proc/jumptokey
|
||||
verbs += /client/proc/jumptomob
|
||||
verbs += /client/proc/jumptoturf
|
||||
verbs += /client/proc/Open_Minimap
|
||||
verbs += /client/proc/cmd_admin_delete
|
||||
verbs += /client/proc/cmd_admin_add_freeform_ai_law
|
||||
verbs += /client/proc/cmd_admin_add_random_ai_law
|
||||
|
||||
@@ -3279,6 +3279,12 @@ datum
|
||||
reagent_state = LIQUID
|
||||
color = "#2E6671" // rgb: 46, 102, 113
|
||||
|
||||
driestmartini
|
||||
name = "Driest Martini"
|
||||
id = "driestmartini"
|
||||
description = "Only for the experienced. You think you see sand floating in the glass."
|
||||
nutriment_factor = 1 * REAGENTS_METABOLISM
|
||||
color = "#2E6671" // rgb: 46, 102, 113
|
||||
|
||||
//ALCHOHOL end
|
||||
|
||||
|
||||
@@ -1012,7 +1012,6 @@ datum
|
||||
required_reagents = list("gin" = 2, "tonic" = 1)
|
||||
result_amount = 3
|
||||
|
||||
|
||||
cuba_libre
|
||||
name = "Cuba Libre"
|
||||
id = "cubalibre"
|
||||
@@ -1034,12 +1033,11 @@ datum
|
||||
required_reagents = list("vodka" = 2, "vermouth" = 1)
|
||||
result_amount = 3
|
||||
|
||||
|
||||
white_russian
|
||||
name = "White Russian"
|
||||
id = "whiterussian"
|
||||
result = "whiterussian"
|
||||
required_reagents = list("vodka" = 3, "cream" = 1, "kahlua" = 1)
|
||||
required_reagents = list("blackrussian" = 3, "cream" = 2)
|
||||
result_amount = 5
|
||||
|
||||
whiskey_cola
|
||||
@@ -1221,15 +1219,15 @@ datum
|
||||
name = "Singulo"
|
||||
id = "singulo"
|
||||
result = "singulo"
|
||||
required_reagents = list("vodka" = 5, "radium" = 1, "acid" = 1, "wine" = 5)
|
||||
required_reagents = list("vodka" = 5, "radium" = 1, "wine" = 5)
|
||||
result_amount = 10
|
||||
|
||||
/* alliescocktail
|
||||
alliescocktail
|
||||
name = "Allies Cocktail"
|
||||
id = "alliescocktail"
|
||||
result = "alliescocktail"
|
||||
required_reagents = list("gin" = 1, "vermouth" = 1)
|
||||
result_amount = 2*/
|
||||
required_reagents = list("martini" = 1, "vodka" = 1)
|
||||
result_amount = 2
|
||||
|
||||
demonsblood
|
||||
name = "Demons Blood"
|
||||
@@ -1256,11 +1254,11 @@ datum
|
||||
name = "Barefoot"
|
||||
id = "barefoot"
|
||||
result = "barefoot"
|
||||
required_reagents = list("vodka" = 1, "cream" = 1, "vermouth" = 1, "whiskey" = 1)
|
||||
result_amount = 4
|
||||
required_reagents = list("berryjuice" = 1, "cream" = 1, "vermouth" = 1)
|
||||
result_amount = 3
|
||||
|
||||
|
||||
////DRINKS THAT REQUIRE IMPROVED SPRITES BELOW:: -Agouri/////
|
||||
////DRINKS THAT REQUIRED IMPROVED SPRITES BELOW:: -Agouri/////
|
||||
|
||||
sbiten
|
||||
name = "Sbiten"
|
||||
@@ -1344,7 +1342,7 @@ datum
|
||||
name = "Aloe"
|
||||
id = "aloe"
|
||||
result = "aloe"
|
||||
required_reagents = list("cream" = 1, "whiskey" = 1)
|
||||
required_reagents = list("cream" = 1, "whiskey" = 1, "watermelonjuice" = 1)
|
||||
result_amount = 2
|
||||
|
||||
andalusia
|
||||
@@ -1372,15 +1370,15 @@ datum
|
||||
name = "Irish Car Bomb"
|
||||
id = "irishcarbomb"
|
||||
result = "irishcarbomb"
|
||||
required_reagents = list("ale" = 1, "cream" = 1, "whiskey" = 1)
|
||||
result_amount = 3
|
||||
required_reagents = list("ale" = 1, "irishcream" = 1)
|
||||
result_amount = 2
|
||||
|
||||
syndicatebomb
|
||||
name = "Syndicate Bomb"
|
||||
id = "syndicatebomb"
|
||||
result = "syndicatebomb"
|
||||
required_reagents = list("beer" = 1, "cola" = 1, "whiskey" = 1)
|
||||
result_amount = 3
|
||||
required_reagents = list("beer" = 1, "whiskeycola" = 1)
|
||||
result_amount = 2
|
||||
|
||||
erikasurprise
|
||||
name = "Erika Surprise"
|
||||
@@ -1389,7 +1387,6 @@ datum
|
||||
required_reagents = list("ale" = 1, "limejuice" = 1, "whiskey" = 1, "banana" = 1, "ice" = 1)
|
||||
result_amount = 5
|
||||
|
||||
|
||||
devilskiss
|
||||
name = "Devils Kiss"
|
||||
id = "devilskiss"
|
||||
@@ -1418,6 +1415,10 @@ datum
|
||||
required_reagents = list("nothing" = 1, "cream" = 1, "sugar" = 1)
|
||||
result_amount = 3
|
||||
|
||||
|
||||
|
||||
driestmartini
|
||||
name = "Driest Martini"
|
||||
id = "driestmartini"
|
||||
result = "driestmartini"
|
||||
required_reagents = list("nothing" = 1, "gin" = 1)
|
||||
result_amount = 2
|
||||
|
||||
|
||||
@@ -2310,7 +2310,7 @@
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/pacid
|
||||
name = "Polytrinic Acid Bottle"
|
||||
desc = "A small bottle. Contains a small amount of Polytronic Acid"
|
||||
desc = "A small bottle. Contains a small amount of Polytrinic Acid"
|
||||
icon = 'chemical.dmi'
|
||||
icon_state = "bottle17"
|
||||
New()
|
||||
@@ -3592,7 +3592,7 @@
|
||||
desc = "Creepy time!"
|
||||
if("changelingsting")
|
||||
icon_state = "changelingsting"
|
||||
name = "Changeling sting"
|
||||
name = "Changeling Sting"
|
||||
desc = "A stingy drink."
|
||||
if("irishcarbomb")
|
||||
icon_state = "irishcarbomb"
|
||||
@@ -3606,6 +3606,10 @@
|
||||
icon_state = "erikasurprise"
|
||||
name = "Erika Surprise"
|
||||
desc = "The surprise is, it's green!"
|
||||
if("driestmartini")
|
||||
icon_state = "driestmartini"
|
||||
name = "Driest Martini"
|
||||
desc = "Only for the experienced. You think you see sand floating in the glass."
|
||||
else
|
||||
icon_state ="glass_brown"
|
||||
name = "Glass of ..what?"
|
||||
|
||||
@@ -206,14 +206,6 @@
|
||||
using.layer = 19
|
||||
src.other += using
|
||||
|
||||
using = new src.h_type( src )
|
||||
using.name = "hat storage"
|
||||
using.icon = ui_style
|
||||
using.icon_state = "hair"
|
||||
using.screen_loc = ui_hstore1
|
||||
using.layer = 19
|
||||
src.other += using
|
||||
|
||||
using = new src.h_type( src )
|
||||
using.name = "resist"
|
||||
using.icon = ui_style
|
||||
|
||||
@@ -39,7 +39,6 @@
|
||||
var/obj/item/weapon/r_store = null
|
||||
var/obj/item/weapon/l_store = null
|
||||
var/obj/item/weapon/s_store = null
|
||||
var/obj/item/weapon/h_store = null
|
||||
|
||||
var/icon/stand_icon = null
|
||||
var/icon/lying_icon = null
|
||||
@@ -479,15 +478,6 @@
|
||||
glasses = null
|
||||
else if (W == head)
|
||||
var/obj/item/prev_head = W
|
||||
W = h_store
|
||||
if (W)
|
||||
u_equip(W)
|
||||
if (client)
|
||||
client.screen -= W
|
||||
if (W)
|
||||
W.loc = loc
|
||||
W.dropped(src)
|
||||
W.layer = initial(W.layer)
|
||||
head = null
|
||||
if(prev_head && (prev_head.flags & BLOCKHAIR))
|
||||
// rebuild face
|
||||
@@ -522,8 +512,6 @@
|
||||
l_store = null
|
||||
else if (W == s_store)
|
||||
s_store = null
|
||||
else if (W == h_store)
|
||||
h_store = null
|
||||
else if (W == back)
|
||||
back = null
|
||||
else if (W == handcuffed)
|
||||
@@ -754,22 +742,6 @@
|
||||
u_equip(W)
|
||||
s_store = W
|
||||
|
||||
if("hat storage")
|
||||
if (h_store)
|
||||
if (emptyHand)
|
||||
h_store.DblClick()
|
||||
return
|
||||
var/confirm
|
||||
if (head)
|
||||
if (istype(W, /obj/item/weapon/pen))
|
||||
confirm = 1
|
||||
if (istype(head) && is_type_in_list(W, head.allowed)) // NOTE: head is /obj/item/clothing/head/ and parer hat is not /obj/item/clothing/ and does not have "allowed" --rastaf0
|
||||
confirm = 1
|
||||
if (!confirm) return
|
||||
else
|
||||
u_equip(W)
|
||||
h_store = W
|
||||
|
||||
update_clothing()
|
||||
|
||||
return
|
||||
@@ -1085,9 +1057,6 @@
|
||||
overlays += image("icon" = 'belt_mirror.dmi', "icon_state" = text("[][]", t1, (!( lying ) ? null : "2")), "layer" = MOB_LAYER)
|
||||
s_store.screen_loc = ui_sstore1
|
||||
|
||||
if (h_store)
|
||||
h_store.screen_loc = ui_hstore1
|
||||
|
||||
if(client) hud_used.other_update() //Update the screenloc of the items on the 'other' inventory bar
|
||||
//to hide / show them.
|
||||
if (client)
|
||||
@@ -1703,8 +1672,6 @@
|
||||
message = text("\red <B>[] is trying to take off \a [] from []'s body!</B>", source, target.w_uniform, target)
|
||||
if("s_store")
|
||||
message = text("\red <B>[] is trying to take off \a [] from []'s suit!</B>", source, target.s_store, target)
|
||||
if("h_store")
|
||||
message = text("\red <B>[] is trying to empty []'s hat!</B>", source, target)
|
||||
if("pockets")
|
||||
target.attack_log += text("\[[time_stamp()]\] <font color='orange'>Has had their pockets emptied by [source.name] ([source.ckey])</font>")
|
||||
source.attack_log += text("\[[time_stamp()]\] <font color='red'>Attempted to empty [target.name]'s ([target.ckey]) pockets</font>")
|
||||
@@ -1728,7 +1695,7 @@
|
||||
//SN src = null
|
||||
del(src)
|
||||
return
|
||||
message = text("\red <B>[] is trying perform CPR on []!</B>", source, target)
|
||||
message = text("\red <B>[] is trying to perform CPR on []!</B>", source, target)
|
||||
if("id")
|
||||
target.attack_log += text("\[[time_stamp()]\] <font color='orange'>Has had their ID removed by [source.name] ([source.ckey])</font>")
|
||||
source.attack_log += text("\[[time_stamp()]\] <font color='red'>Attempted to remove [target.name]'s ([target.ckey]) ID</font>")
|
||||
@@ -2158,17 +2125,6 @@ It can still be worn/put on as normal.
|
||||
item.layer = 20
|
||||
target.back = item
|
||||
item.loc = target
|
||||
if("h_store")
|
||||
if (target.h_store)
|
||||
var/obj/item/W = target.h_store
|
||||
target.u_equip(W)
|
||||
if (target.client)
|
||||
target.client.screen -= W
|
||||
if (W)
|
||||
W.loc = target.loc
|
||||
W.dropped(target)
|
||||
W.layer = initial(W.layer)
|
||||
W.add_fingerprint(source)
|
||||
if("handcuff")
|
||||
if (target.handcuffed)
|
||||
var/obj/item/W = target.handcuffed
|
||||
@@ -2319,7 +2275,6 @@ It can still be worn/put on as normal.
|
||||
<BR>[(handcuffed ? text("<A href='?src=\ref[src];item=handcuff'>Handcuffed</A>") : text("<A href='?src=\ref[src];item=handcuff'>Not Handcuffed</A>"))]
|
||||
<BR>[(internal ? text("<A href='?src=\ref[src];item=internal'>Remove Internal</A>") : "")]
|
||||
<BR><A href='?src=\ref[src];item=pockets'>Empty Pockets</A>
|
||||
<BR><A href='?src=\ref[src];item=h_store'>Empty Hat</A>
|
||||
<BR><A href='?src=\ref[user];refresh=1'>Refresh</A>
|
||||
<BR><A href='?src=\ref[user];mach_close=mob[name]'>Close</A>
|
||||
<BR>"}
|
||||
|
||||
@@ -441,6 +441,7 @@
|
||||
|
||||
if(client.eye == eyeobj)
|
||||
eyeobj.loc = C.loc
|
||||
cameranet.visibility(eyeobj)
|
||||
else
|
||||
machine = src
|
||||
src:current = C
|
||||
@@ -578,7 +579,9 @@
|
||||
if(C.network == newnet)
|
||||
cameralist.Add(C)
|
||||
|
||||
switchCamera( pick(cameralist) )
|
||||
if(length(cameralist))
|
||||
switchCamera( pick(cameralist) )
|
||||
|
||||
src << "\blue Jumped to [newnet] camera network."
|
||||
//End of code by Mord_Sith
|
||||
//cael - with the multiple onstation networks all linked together, changing networks is legacy functionality
|
||||
|
||||
@@ -171,7 +171,8 @@
|
||||
/obj/item/clothing/head/helmet/hardhat/white,
|
||||
/obj/item/weapon/bedsheet,
|
||||
/obj/item/clothing/head/helmet/space/santahat,
|
||||
/obj/item/clothing/head/collectable/paper
|
||||
/obj/item/clothing/head/collectable/paper,
|
||||
/obj/item/clothing/head/cargosoft
|
||||
)
|
||||
|
||||
if( ! ( item_to_add.type in allowed_types ) )
|
||||
@@ -183,7 +184,7 @@
|
||||
src.inventory_head = item_to_add
|
||||
update_clothing()
|
||||
|
||||
//Various hats and items (worn on his head) change Ian's behaviour. His attributesare reset when a HAT is removed.
|
||||
//Various hats and items (worn on his head) change Ian's behaviour. His attributes are reset when a HAT is removed.
|
||||
|
||||
|
||||
switch(inventory_head && inventory_head.type)
|
||||
@@ -240,6 +241,10 @@
|
||||
emote_hear = list("barks christmas songs", "yaps")
|
||||
desc = "He has a very shiny nose."
|
||||
src.sd_SetLuminosity(6)
|
||||
if(/obj/item/clothing/head/cargosoft)
|
||||
name = "Corgi Tech [real_name]"
|
||||
speak = list("Needs a stamp!", "Request DENIED!", "Fill these out in triplicate!")
|
||||
desc = "The reason your yellow gloves have chew-marks."
|
||||
|
||||
if("back")
|
||||
if(inventory_back)
|
||||
|
||||
@@ -47,6 +47,20 @@ Stuff which is in development and not yet visible to players or just code relate
|
||||
should be listed in the changelog upon commit though. Thanks. -->
|
||||
|
||||
<!-- To take advantage of the pretty new format (well it was new when I wrote this anyway), open the "add-to-changelog.html" file in any browser and add the stuff and then generate the html code and paste it here -->
|
||||
<div class="commit sansserif">
|
||||
<h2 class="date">19 May 2012</h2>
|
||||
<h3 class="author">TG updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="rscadd">Buckling into an office chair and using a fire extinguisher will lead to interesting results.</li>
|
||||
<li class="tweak">Recipe updates for some booze in an attempt to resolve recipe conflicts.</li>
|
||||
<li class="tweak">Wallets now fit in pockets.</li>
|
||||
<li class="tweak">If you are clicking on a storage item in your pocket with an empty hand it will return that item to your hand.</li>
|
||||
<li class="tweak">Extinguishers now say when they are empty.</li>
|
||||
<li class="imageadd">New sprites for Cargo, HoP, and Captain's lockers.</li>
|
||||
<li class="rscdel">Removed hat storage as it was never used and it cluttered the UI.</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="commit sansserif">
|
||||
<h2 class="date">17 May 2012</h2>
|
||||
<h3 class="author">TG updated:</h3>
|
||||
|
||||
|
After Width: | Height: | Size: 206 B |
|
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 14 KiB |
|
Before Width: | Height: | Size: 73 KiB After Width: | Height: | Size: 76 KiB |
|
Before Width: | Height: | Size: 34 KiB After Width: | Height: | Size: 33 KiB |
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 13 KiB |
|
After Width: | Height: | Size: 20 KiB |
|
Before Width: | Height: | Size: 23 KiB After Width: | Height: | Size: 26 KiB |
|
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 14 KiB |
|
After Width: | Height: | Size: 14 KiB |
|
Before Width: | Height: | Size: 57 KiB After Width: | Height: | Size: 57 KiB |
|
Before Width: | Height: | Size: 51 KiB After Width: | Height: | Size: 50 KiB |
|
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 12 KiB |
@@ -327,6 +327,53 @@ menu "menu"
|
||||
is-disabled = false
|
||||
saved-params = "is-checked"
|
||||
|
||||
menu "minimap_menu"
|
||||
elem
|
||||
name = "Size"
|
||||
command = ""
|
||||
category = ""
|
||||
is-checked = false
|
||||
can-check = false
|
||||
group = ""
|
||||
is-disabled = false
|
||||
saved-params = "is-checked"
|
||||
elem
|
||||
name = "50%"
|
||||
command = ".winset \"minimap.icon-size=16\""
|
||||
category = "Size"
|
||||
is-checked = false
|
||||
can-check = true
|
||||
group = "minimap_size"
|
||||
is-disabled = false
|
||||
saved-params = "is-checked"
|
||||
elem
|
||||
name = "100%"
|
||||
command = ".winset \"minimap.icon-size=32\""
|
||||
category = "Size"
|
||||
is-checked = true
|
||||
can-check = true
|
||||
group = "minimap_size"
|
||||
is-disabled = false
|
||||
saved-params = "is-checked"
|
||||
elem
|
||||
name = "200%"
|
||||
command = ".winset \"minimap.icon-size=64\""
|
||||
category = "Size"
|
||||
is-checked = false
|
||||
can-check = true
|
||||
group = "minimap_size"
|
||||
is-disabled = false
|
||||
saved-params = "is-checked"
|
||||
elem
|
||||
name = "stretch"
|
||||
command = ".winset \"minimap.icon-size=0\""
|
||||
category = "Size"
|
||||
is-checked = false
|
||||
can-check = true
|
||||
group = "minimap_size"
|
||||
is-disabled = false
|
||||
saved-params = "is-checked"
|
||||
|
||||
|
||||
window "Telecomms IDE"
|
||||
elem "Telecomms IDE"
|
||||
@@ -1207,6 +1254,71 @@ window "mapwindow"
|
||||
on-show = ".winset\"mainwindow.mainvsplit.left=mapwindow\""
|
||||
on-hide = ".winset\"mainwindow.mainvsplit.left=\""
|
||||
|
||||
window "minimapwindow"
|
||||
elem "minimapwindow"
|
||||
type = MAIN
|
||||
pos = 281,0
|
||||
size = 640x480
|
||||
anchor1 = none
|
||||
anchor2 = none
|
||||
font-family = ""
|
||||
font-size = 0
|
||||
font-style = ""
|
||||
text-color = #000000
|
||||
background-color = none
|
||||
is-visible = false
|
||||
is-disabled = false
|
||||
is-transparent = false
|
||||
is-default = false
|
||||
border = none
|
||||
drop-zone = false
|
||||
right-click = false
|
||||
saved-params = "pos;size;is-minimized;is-maximized"
|
||||
on-size = ""
|
||||
title = ""
|
||||
titlebar = true
|
||||
statusbar = true
|
||||
can-close = true
|
||||
can-minimize = true
|
||||
can-resize = true
|
||||
is-pane = false
|
||||
is-minimized = false
|
||||
is-maximized = false
|
||||
can-scroll = none
|
||||
icon = ""
|
||||
image = ""
|
||||
image-mode = stretch
|
||||
keep-aspect = false
|
||||
transparent-color = none
|
||||
alpha = 255
|
||||
macro = ""
|
||||
menu = "minimap_menu"
|
||||
on-close = ""
|
||||
elem "minimap"
|
||||
type = MAP
|
||||
pos = 0,0
|
||||
size = 640x480
|
||||
anchor1 = 0,0
|
||||
anchor2 = 100,100
|
||||
font-family = ""
|
||||
font-size = 0
|
||||
font-style = ""
|
||||
text-color = #000000
|
||||
background-color = none
|
||||
is-visible = true
|
||||
is-disabled = false
|
||||
is-transparent = false
|
||||
is-default = false
|
||||
border = none
|
||||
drop-zone = true
|
||||
right-click = false
|
||||
saved-params = "icon-size"
|
||||
on-size = ""
|
||||
icon-size = 32
|
||||
text-mode = false
|
||||
on-show = ""
|
||||
on-hide = ""
|
||||
|
||||
window "outputwindow"
|
||||
elem "outputwindow"
|
||||
type = MAIN
|
||||
|
||||