diff --git a/baystation12.dme b/baystation12.dme
index 52310b50e60..42bf49595c2 100644
--- a/baystation12.dme
+++ b/baystation12.dme
@@ -203,6 +203,7 @@
#define FILE_DIR "icons/spideros_icons"
#define FILE_DIR "icons/Testing"
#define FILE_DIR "icons/turf"
+#define FILE_DIR "icons/vehicles"
#define FILE_DIR "icons/vending_icons"
#define FILE_DIR "interface"
#define FILE_DIR "maps"
diff --git a/code/ATMOSPHERICS/atmospherics.dm b/code/ATMOSPHERICS/atmospherics.dm
index fca51ad7ce2..d745a48d89d 100644
--- a/code/ATMOSPHERICS/atmospherics.dm
+++ b/code/ATMOSPHERICS/atmospherics.dm
@@ -20,40 +20,39 @@ obj/machinery/atmospherics
- var/initialize_directions = 0
- var/color
+obj/machinery/atmospherics/var/initialize_directions = 0
+obj/machinery/atmospherics/var/color
- process()
- build_network()
+obj/machinery/atmospherics/process()
+ build_network()
- proc
- network_expand(datum/pipe_network/new_network, obj/machinery/atmospherics/pipe/reference)
- // Check to see if should be added to network. Add self if so and adjust variables appropriately.
- // Note don't forget to have neighbors look as well!
+obj/machinery/atmospherics/proc/network_expand(datum/pipe_network/new_network, obj/machinery/atmospherics/pipe/reference)
+ // Check to see if should be added to network. Add self if so and adjust variables appropriately.
+ // Note don't forget to have neighbors look as well!
- return null
+ return null
- build_network()
- // Called to build a network from this node
+obj/machinery/atmospherics/proc/build_network()
+ // Called to build a network from this node
- return null
+ return null
- return_network(obj/machinery/atmospherics/reference)
- // Returns pipe_network associated with connection to reference
- // Notes: should create network if necessary
- // Should never return null
+obj/machinery/atmospherics/proc/return_network(obj/machinery/atmospherics/reference)
+ // Returns pipe_network associated with connection to reference
+ // Notes: should create network if necessary
+ // Should never return null
- return null
+ return null
- reassign_network(datum/pipe_network/old_network, datum/pipe_network/new_network)
- // Used when two pipe_networks are combining
+obj/machinery/atmospherics/proc/reassign_network(datum/pipe_network/old_network, datum/pipe_network/new_network)
+ // Used when two pipe_networks are combining
- return_network_air(datum/network/reference)
- // Return a list of gas_mixture(s) in the object
- // associated with reference pipe_network for use in rebuilding the networks gases list
- // Is permitted to return null
+obj/machinery/atmospherics/proc/return_network_air(datum/network/reference)
+ // Return a list of gas_mixture(s) in the object
+ // associated with reference pipe_network for use in rebuilding the networks gases list
+ // Is permitted to return null
- disconnect(obj/machinery/atmospherics/reference)
+obj/machinery/atmospherics/proc/disconnect(obj/machinery/atmospherics/reference)
- update_icon()
- return null
\ No newline at end of file
+obj/machinery/atmospherics/update_icon()
+ return null
\ No newline at end of file
diff --git a/code/defines/obj/storage.dm b/code/defines/obj/storage.dm
index e5253e9441b..1bfc31340d2 100644
--- a/code/defines/obj/storage.dm
+++ b/code/defines/obj/storage.dm
@@ -88,7 +88,7 @@
/obj/item/weapon/storage/pillbottlebox
name = "box of pill bottles"
desc = "It has pictures of pill bottles on its front."
- icon_state = "box"
+ icon_state = "pillbox"
item_state = "syringe_kit"
foldable = /obj/item/stack/sheet/cardboard //BubbleWrap
@@ -292,12 +292,19 @@
update_icon()
for(var/obj/item/weapon/card/id/ID in contents)
- if(ID.icon_state == "gold")
- icon_state = "walletid_gold"
- return
- else if(ID.icon_state == "id")
- icon_state = "walletid"
- return
+ switch(ID.icon_state)
+ if("id")
+ icon_state = "walletid"
+ return
+ if("silver")
+ icon_state = "walletid_silver"
+ return
+ if("gold")
+ icon_state = "walletid_gold"
+ return
+ if("centcom")
+ icon_state = "walletid_centcom"
+ return
icon_state = "wallet"
diff --git a/code/game/machinery/newscaster.dm b/code/game/machinery/newscaster.dm
index 151b75843be..a44b28b76ec 100644
--- a/code/game/machinery/newscaster.dm
+++ b/code/game/machinery/newscaster.dm
@@ -142,12 +142,12 @@ var/list/obj/machinery/newscaster/allCasters = list() //list that will contain r
/obj/machinery/newscaster/attack_hand(mob/user as mob)
if(!src.ispowered || src.isbroken)
return
- if(istype(user, /mob/living/carbon/human) )
- var/mob/living/carbon/human/human_user = user
+ if(istype(user, /mob/living/carbon/human) || istype(user,/mob/living/silicon) )
+ var/mob/living/human_or_robot_user = user
var/dat
dat = text("
NewscasterNewscaster Unit #[src.unit_no]
")
- src.scan_user(human_user) //Newscaster scans you
+ src.scan_user(human_or_robot_user) //Newscaster scans you
switch(screen)
if(0)
@@ -160,7 +160,7 @@ var/list/obj/machinery/newscaster/allCasters = list() //list that will contain r
dat+= "
Submit new Feed story"
dat+= "
Print newspaper"
dat+= "
Re-scan User"
- dat+= "
Exit"
+ dat+= "
Exit"
if(src.securityCaster)
var/wanted_already = 0
for(var/obj/machinery/newscaster/N in allCasters)
@@ -363,8 +363,8 @@ var/list/obj/machinery/newscaster/allCasters = list() //list that will contain r
dat+="I'm sorry to break your immersion. This shit's bugged. Report this bug to Agouri, polyxenitopalidou@gmail.com"
- human_user << browse(dat, "window=newscaster_main;size=400x600")
- onclose(human_user, "newscaster_main")
+ human_or_robot_user << browse(dat, "window=newscaster_main;size=400x600")
+ onclose(human_or_robot_user, "newscaster_main")
/*if(src.isbroken) //debugging shit
return
@@ -377,7 +377,7 @@ var/list/obj/machinery/newscaster/allCasters = list() //list that will contain r
/obj/machinery/newscaster/Topic(href, href_list)
if(..())
return
- if ((usr.contents.Find(src) || ((get_dist(src, usr) <= 1) && istype(src.loc, /turf))) || (istype(usr, /mob/living/silicon/ai)))
+ if ((usr.contents.Find(src) || ((get_dist(src, usr) <= 1) && istype(src.loc, /turf))) || (istype(usr, /mob/living/silicon)))
usr.machine = src
if(href_list["set_channel_name"])
src.channel_name = strip_html(input(usr, "Provide a Feed Channel Name", "Network Channel Handler", ""))
@@ -444,6 +444,7 @@ var/list/obj/machinery/newscaster/allCasters = list() //list that will contain r
FC.messages += newMsg // To avoid further confusion, this one for adds the message to all existing newscasters' channel_list's channels.
break // Another for to go through newscasters is not needed. Due to the nature of submit_new_CHANNEL, every reference
src.screen=4 // to a channel in ANY newscaster is the same. Editing one will edit them all.
+
for(var/obj/machinery/newscaster/NEWSCASTER in allCasters)
NEWSCASTER.newsAlert(src.channel_name)
@@ -747,7 +748,7 @@ obj/item/weapon/newspaper/attack_self(mob/user as mob)
obj/item/weapon/newspaper/Topic(href, href_list)
var/mob/living/U = usr
..()
- if ((src in U.contents) || ( istype(loc, /turf) && in_range(src, U) ) )
+ if ((src in U.contents) || ( istype(loc, /turf) && in_range(src, U) ))
U.machine = src
if(href_list["next_page"])
if(curr_page==src.pages+1)
@@ -796,21 +797,26 @@ obj/item/weapon/newspaper/attackby(obj/item/weapon/W as obj, mob/user as mob)
////////////////////////////////////helper procs
-/obj/machinery/newscaster/proc/scan_user(mob/living/carbon/human/human_user as mob)
- if(human_user.wear_id) //Newscaster scans you
- if(istype(human_user.wear_id, /obj/item/device/pda) ) //autorecognition, woo!
- var/obj/item/device/pda/P = human_user.wear_id
- if(P.id)
- src.scanned_user = "[P.id.registered_name] ([P.id.assignment])"
+/obj/machinery/newscaster/proc/scan_user(mob/living/user as mob)
+ if(istype(user,/mob/living/carbon/human)) //User is a human
+ var/mob/living/carbon/human/human_user = user
+ if(human_user.wear_id) //Newscaster scans you
+ if(istype(human_user.wear_id, /obj/item/device/pda) ) //autorecognition, woo!
+ var/obj/item/device/pda/P = human_user.wear_id
+ if(P.id)
+ src.scanned_user = "[P.id.registered_name] ([P.id.assignment])"
+ else
+ src.scanned_user = "Unknown"
+ else if(istype(human_user.wear_id, /obj/item/weapon/card/id) )
+ var/obj/item/weapon/card/id/ID = human_user.wear_id
+ src.scanned_user ="[ID.registered_name] ([ID.assignment])"
else
- src.scanned_user = "Unknown"
- else if(istype(human_user.wear_id, /obj/item/weapon/card/id) )
- var/obj/item/weapon/card/id/ID = human_user.wear_id
- src.scanned_user ="[ID.registered_name] ([ID.assignment])"
+ src.scanned_user ="Unknown"
else
src.scanned_user ="Unknown"
else
- src.scanned_user ="Unknown"
+ var/mob/living/silicon/ai_user = user
+ src.scanned_user = "[ai_user.name] ([ai_user.job])"
/obj/machinery/newscaster/proc/print_paper()
diff --git a/code/game/objects/items/weapons/stunbaton.dm b/code/game/objects/items/weapons/stunbaton.dm
index 217a4b9f931..0b88d78a530 100644
--- a/code/game/objects/items/weapons/stunbaton.dm
+++ b/code/game/objects/items/weapons/stunbaton.dm
@@ -75,7 +75,12 @@
H.apply_effect(10, STUTTER, 0)
user.lastattacked = M
H.lastattacker = user
- charges--
+ if(isrobot(src.loc))
+ var/mob/living/silicon/robot/R = src.loc
+ if(R && R.cell)
+ R.cell.use(50)
+ else
+ charges--
H.visible_message("[M] has been stunned with the [src] by [user]!")
playsound(src.loc, 'Egloves.ogg', 50, 1, -1)
if(charges < 1)
diff --git a/code/game/objects/stacks/glass.dm b/code/game/objects/stacks/glass.dm
index 76d63e9d337..d21d25886b4 100644
--- a/code/game/objects/stacks/glass.dm
+++ b/code/game/objects/stacks/glass.dm
@@ -262,6 +262,8 @@ SHARDS
playsound(src.loc, 'glass_step.ogg', 50, 1)
if(ishuman(M))
var/mob/living/carbon/human/H = M
+ if(H.mutantrace == "lizard") //Soghun have... Scales? Yeah that works
+ return
if(!((H.shoes) || (H.wear_suit && H.wear_suit.body_parts_covered & FEET)))
var/datum/organ/external/affecting = H.get_organ(pick("l_foot", "r_foot"))
if(affecting.status & ROBOT)
diff --git a/code/game/objects/uplinks.dm b/code/game/objects/uplinks.dm
index b9aa1276c51..3c138a527ab 100644
--- a/code/game/objects/uplinks.dm
+++ b/code/game/objects/uplinks.dm
@@ -145,7 +145,7 @@ A list of items and costs is stored under the datum of every game mode, alongsid
randomItems.Add("/obj/item/weapon/soap/syndie") //Syndicate Soap
randomItems.Add("/obj/item/weapon/storage/toolbox/syndicate") //Syndicate Toolbox
- if(!randomItems)
+ if(!randomItems.len)
del(randomItems)
return 0
else
diff --git a/code/game/objects/watercloset.dm b/code/game/objects/watercloset.dm
index 38b8c5ea470..1a0d1e09a34 100644
--- a/code/game/objects/watercloset.dm
+++ b/code/game/objects/watercloset.dm
@@ -58,7 +58,10 @@
var/obj/item/weapon/grab/G = I
var/mob/GM = G.affecting
if(ismob(G.affecting))
- if(G.state>1 && GM.loc == get_turf(src))
+ if(G.state>1)
+ if(!GM.loc == get_turf(src))
+ user << "[GM.name] needs to be on the toilet."
+ return
if(open && !swirlie)
user.visible_message("[user] starts to give [GM.name] a swirlie!", "You start to give [GM.name] a swirlie!")
swirlie = GM
@@ -101,7 +104,10 @@
var/obj/item/weapon/grab/G = I
var/mob/GM = G.affecting
if(ismob(G.affecting))
- if(G.state>1 && GM.loc == get_turf(src))
+ if(G.state>1)
+ if(!GM.loc == get_turf(src))
+ user << "[GM.name] needs to be on the urinal."
+ return
user.visible_message("[user] slams [GM.name] into the [src]!", "You slam [GM.name] into the [src]!")
GM.adjustBruteLoss(8)
else
diff --git a/code/modules/mining/mine_items.dm b/code/modules/mining/mine_items.dm
index 54befddcbc3..08470a9a2e9 100644
--- a/code/modules/mining/mine_items.dm
+++ b/code/modules/mining/mine_items.dm
@@ -266,7 +266,8 @@ proc/move_mining_shuttle()
/*****************************Shovel********************************/
/obj/item/weapon/shovel
- name = "Shovel"
+ name = "shovel"
+ desc = "A large tool for digging and moving dirt."
icon = 'items.dmi'
icon_state = "shovel"
flags = FPRINT | TABLEPASS| CONDUCT
@@ -278,11 +279,14 @@ proc/move_mining_shuttle()
m_amt = 50
origin_tech = "materials=1;engineering=1"
-
-
-
-
-
+/obj/item/weapon/shovel/spade
+ name = "spade"
+ desc = "A small tool for digging and moving dirt."
+ icon_state = "spade"
+ item_state = "spade"
+ force = 5.0
+ throwforce = 7.0
+ w_class = 2.0
/**********************Mining car (Crate like thing, not the rail car)**************************/
diff --git a/code/modules/mob/new_player/preferences.dm b/code/modules/mob/new_player/preferences.dm
index 9b566bba4b2..24b4a5c9235 100644
--- a/code/modules/mob/new_player/preferences.dm
+++ b/code/modules/mob/new_player/preferences.dm
@@ -128,6 +128,8 @@ datum/preferences
// OOC Metadata:
var/metadata = ""
+ var/sound_adminhelp = 0
+
New()
hair_style = new/datum/sprite_accessory/hair/short
@@ -261,9 +263,13 @@ datum/preferences
if(config.allow_Metadata)
dat += "OOC Notes: Edit
"
- if((user.client) && (user.client.holder) && (user.client.holder.rank) && (user.client.holder.level >= 5))
- dat += "
OOC
"
- dat += "Change colour "
+ if((user.client) && (user.client.holder) && (user.client.holder.rank))
+ dat += "
Adminhelp sound: "
+ dat += "[(sound_adminhelp)?"On":"Off"] toggle"
+
+ if(user.client.holder.level >= 5)
+ dat += "
OOC
"
+ dat += "Change color "
dat += "
Occupation Choices
"
dat += "\tSet Preferences
"
@@ -875,6 +881,9 @@ datum/preferences
if(ooccolor)
src.ooccolor = ooccolor
+ if(link_tags["toggleadminhelpsound"])
+ src.sound_adminhelp = !src.sound_adminhelp
+
if(link_tags["f_style"])
if(species != "Human") //Non-humans don't have hair stuff yet.
return
@@ -1175,6 +1184,7 @@ datum/preferences
proc/setup_client(var/client/C)
if(C)
+ C.sound_adminhelp = src.sound_adminhelp
C.midis = src.midis
C.ooccolor = src.ooccolor
C.be_alien = be_special & BE_ALIEN
diff --git a/code/modules/mob/new_player/savefile.dm b/code/modules/mob/new_player/savefile.dm
index f0c4c3a6bd6..4cc787486ed 100644
--- a/code/modules/mob/new_player/savefile.dm
+++ b/code/modules/mob/new_player/savefile.dm
@@ -159,6 +159,8 @@ datum/preferences/proc/savefile_save(mob/user, slot)
F["OOC_Notes"] << src.metadata
+ F["sound_adminhelp"] << src.sound_adminhelp
+
return 1
// loads the savefile corresponding to the mob's ckey
@@ -264,6 +266,8 @@ datum/preferences/proc/savefile_load(mob/user, slot)
F["OOC_Notes"] >> src.metadata
+ F["sound_adminhelp"] >> src.sound_adminhelp
+
if(isnull(metadata))
metadata = ""
diff --git a/html/changelog.html b/html/changelog.html
index 63274d2fbc0..ae1f9dfdef0 100644
--- a/html/changelog.html
+++ b/html/changelog.html
@@ -91,6 +91,15 @@ should be listed in the changelog upon commit though. Thanks. -->
Fixes medical items. Gauze/kits/ointment can now be applied correctly again.
+
+
26 June 2012
+
TG updated:
+
+ - Fixed silicon mobs not being able to access newscaster.
+ - Fixed harmbatons on everything other than harm, now it is the opposite way round.
+
+
+
25 June 2012
Erthilo updated:
diff --git a/icons/mob/items_lefthand.dmi b/icons/mob/items_lefthand.dmi
index fa909660e26..127bf82a851 100644
Binary files a/icons/mob/items_lefthand.dmi and b/icons/mob/items_lefthand.dmi differ
diff --git a/icons/mob/items_righthand.dmi b/icons/mob/items_righthand.dmi
index 190315199dc..7a541c4a34e 100644
Binary files a/icons/mob/items_righthand.dmi and b/icons/mob/items_righthand.dmi differ
diff --git a/icons/obj/items.dmi b/icons/obj/items.dmi
index 69c55d472b1..759442da114 100644
Binary files a/icons/obj/items.dmi and b/icons/obj/items.dmi differ
diff --git a/icons/obj/storage.dmi b/icons/obj/storage.dmi
index 6292adc2211..176d76c5b4c 100644
Binary files a/icons/obj/storage.dmi and b/icons/obj/storage.dmi differ
diff --git a/icons/obj/vehicles.dmi b/icons/obj/vehicles.dmi
deleted file mode 100644
index 2dbaedd6397..00000000000
Binary files a/icons/obj/vehicles.dmi and /dev/null differ
diff --git a/icons/vehicles/vehicles.dmi b/icons/vehicles/vehicles.dmi
new file mode 100644
index 00000000000..5650366b18e
Binary files /dev/null and b/icons/vehicles/vehicles.dmi differ