[name], [speaker.name]"
else if (!S.binarycheck())
continue
@@ -270,13 +425,13 @@
if(istype(M, /mob/living/silicon) || M.binarycheck())
continue
M.show_message("synthesised voice beeps, \"beep beep beep\"",2)
-/*
+
//robot binary xmitter component power usage
- if (isrobot(speaker))
- var/mob/living/silicon/robot/R = speaker
- var/datum/robot_component/C = R.components["comms"]
- R.cell_use_power(C.active_usage)
-*/
+// if (isrobot(speaker))
+// var/mob/living/silicon/robot/R = speaker
+// var/datum/robot_component/C = R.components["comms"]
+// R.cell_use_power(C.active_usage)
+
/datum/language/binary/drone
name = "Drone Talk"
desc = "A heavily encoded damage control coordination stream."
@@ -287,9 +442,6 @@
key = "d"
flags = RESTRICTED | HIVEMIND
drone_only = 1
-///////////////////////////////////////
-//Yeah but stuff if sure not
-///////////////////////////////////////
// Language handling.
/mob/proc/add_language(var/language)
@@ -303,15 +455,14 @@
return 1
/mob/proc/remove_language(var/rem_language)
-
- languages.Remove(all_languages[rem_language])
-
- return 0
+ var/datum/language/L = all_languages[rem_language]
+ . = (L in languages)
+ languages.Remove(L)
// Can we speak this language, as opposed to just understanding it?
/mob/proc/can_speak(datum/language/speaking)
- return (universal_speak || speaking in src.languages)
+ return (universal_speak || (speaking && speaking.flags & INNATE) || speaking in src.languages)
//TBD
/mob/verb/check_languages()
@@ -322,7 +473,10 @@
var/dat = "Known Languages
"
for(var/datum/language/L in languages)
- dat += "[L.name] (:[L.key])
[L.desc]
"
+ if(!(L.flags & NONGLOBAL))
+ dat += "[L.name] (:[L.key])
[L.desc]
"
src << browse(dat, "window=checklanguage")
- return
\ No newline at end of file
+ return
+
+#undef SCRAMBLE_CACHE_LEN
diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm
index 0e41a169..1a0399fa 100644
--- a/code/modules/mob/living/carbon/human/life.dm
+++ b/code/modules/mob/living/carbon/human/life.dm
@@ -1344,7 +1344,14 @@
if(!druggy) see_invisible = SEE_INVISIBLE_LEVEL_TWO
if(healths) healths.icon_state = "health7" //DEAD healthmeter
if(client)
- if(client.view != world.view)if(client.view != world.view) // If mob moves while zoomed in with device, unzoom them.
+ if(client.view != world.view) // If mob moves while zoomed in with device, unzoom them.
+ for(var/obj/item/item in contents)
+ if(item.zoom)
+ item.zoom()
+ break
+
+
+ /*
if(locate(/obj/item/weapon/gun/energy/rifle/sniperrifle, contents))
var/obj/item/weapon/gun/energy/rifle/sniperrifle/s = locate() in src
if(s.zoom)
@@ -1353,7 +1360,7 @@
var/obj/item/weapon/gun/energy/laser/modular/s = locate() in src
if(s.zoom)
s.zoom()
-
+ */
else
sight &= ~(SEE_TURFS|SEE_MOBS|SEE_OBJS)
see_in_dark = species.darksight
diff --git a/code/modules/mob/living/carbon/human/say.dm b/code/modules/mob/living/carbon/human/say.dm
index b679a874..648bcefa 100644
--- a/code/modules/mob/living/carbon/human/say.dm
+++ b/code/modules/mob/living/carbon/human/say.dm
@@ -1,4 +1,6 @@
-/mob/living/carbon/human/say(var/message, var/verb = "says")
+/mob/living/carbon/human/say(var/message)
+
+ var/verb = "says"
var/alt_name = ""
var/message_range = world.view
var/italics = 0
@@ -8,16 +10,19 @@
src << "\red You cannot speak in IC (Muted)."
return
- message = trim(copytext(sanitize(message), 1, MAX_MESSAGE_LEN))
+ message = trim_strip_html_properly(message)
- if(stat == 2)
- return say_dead(message)
+ if(stat)
+ if(stat == 2)
+ return say_dead(message)
+ return
+
+ if (istype(src.wear_mask, /obj/item/clothing/mask/muzzle))
+ src << "You're muzzled and cannot speak!"
+ return
var/message_mode = parse_message_mode(message, "headset")
-// if (istype(wear_mask, /obj/item/clothing/mask/muzzle) && message_mode != "changeling") //Todo: Add this to speech_problem_flag checks.
-// return
-//
if(copytext(message,1,2) == "*")
return emote(copytext(message,2))
@@ -31,6 +36,8 @@
else
message = copytext(message,3)
+ message = trim_left(message)
+
//parse the language code and consume it
var/datum/language/speaking = parse_language(message)
if(speaking)
@@ -66,7 +73,6 @@
if(!message || stat)
return
-
if(speaking && speaking.flags & SIGNLANG)
message_mode = null
..(message, speaking, verb, alt_name, italics, message_range)
@@ -123,27 +129,14 @@
if("whisper")
whisper_say(message, speaking, alt_name)
return
-/* if("binary")
- if(robot_talk_understand || binarycheck())
- robot_talk(message)
- return
- if("changeling")
- if(mind && mind.changeling)
- for(var/mob/Changeling in mob_list)
- if((Changeling.mind && Changeling.mind.changeling) || istype(Changeling, /mob/dead/observer))
- Changeling << "[mind.changeling.changelingID]: [message]"
- return
-*/
else
- if(!(stunned >= 4))
- if(message_mode)
- if(message_mode in (radiochannels | "department" | "special"))
- if(l_ear && istype(l_ear,/obj/item/device/radio))
- l_ear.talk_into(src,message, message_mode, verb, speaking)
- used_radios += l_ear
- else if(r_ear && istype(r_ear,/obj/item/device/radio))
- r_ear.talk_into(src,message, message_mode, verb, speaking)
- used_radios += r_ear
+ if(message_mode)
+ if(l_ear && istype(l_ear,/obj/item/device/radio))
+ l_ear.talk_into(src,message, message_mode, verb, speaking)
+ used_radios += l_ear
+ else if(r_ear && istype(r_ear,/obj/item/device/radio))
+ r_ear.talk_into(src,message, message_mode, verb, speaking)
+ used_radios += r_ear
var/sound/speech_sound
var/sound_vol
@@ -155,10 +148,14 @@
if(used_radios.len)
italics = 1
message_range = 1
-
+ if(speaking)
+ message_range = speaking.get_talkinto_msg_range(message)
+ var/msg
+ if(!speaking || !(speaking.flags & NO_TALK_MSG))
+ msg = "\The [src] talks into \the [used_radios[1]]"
for(var/mob/living/M in hearers(5, src))
- if(M != src)
- M.show_message("[src] talks into [used_radios.len ? used_radios[1] : "the radio."]")
+ if((M != src) && msg)
+ M.show_message(msg)
if (speech_sound)
sound_vol *= 0.5
@@ -237,6 +234,7 @@
return GetSpecialVoice()
return real_name
+
/mob/living/carbon/human/proc/SetSpecialVoice(var/new_voice)
if(new_voice)
special_voice = new_voice
@@ -274,45 +272,46 @@
return verb
/mob/living/carbon/human/proc/handle_speech_problems(var/message)
+
var/list/returns[3]
var/verb = "says"
var/handled = 0
- if(silent)
+ if(silent || (sdisabilities & MUTE))
message = ""
handled = 1
- if(sdisabilities & MUTE)
- message = ""
- handled = 1
- if(wear_mask)
- if(istype(wear_mask, /obj/item/clothing/mask/horsehead))
- var/obj/item/clothing/mask/horsehead/hoers = wear_mask
- if(hoers.voicechange)
- if(mind && mind.changeling && department_radio_keys[copytext(message, 1, 3)] != "changeling")
- message = pick("NEEIIGGGHHHH!", "NEEEIIIIGHH!", "NEIIIGGHH!", "HAAWWWWW!", "HAAAWWW!")
- verb = pick("whinnies","neighs", "says")
- handled = 1
+ if(istype(wear_mask, /obj/item/clothing/mask/horsehead))
+ var/obj/item/clothing/mask/horsehead/hoers = wear_mask
+ if(hoers.voicechange)
+ if(mind && mind.changeling && department_radio_keys[copytext(message, 1, 3)] != "changeling")
+ message = pick("NEEIIGGGHHHH!", "NEEEIIIIGHH!", "NEIIIGGHH!", "HAAWWWWW!", "HAAAWWW!")
+ verb = pick("whinnies","neighs", "says")
+ handled = 1
- if((HULK in mutations) && health >= 25 && length(message))
-// message = "[uppertext(message)]!!!" //No!
- verb = pick("yells","roars","hollers")
- handled = 1
- if(slurring)
- message = slur(message)
- verb = pick("stammers","stutters")
- handled = 1
-
- var/braindam = getBrainLoss()
- if(braindam >= 60)
- handled = 1
- if(prob(braindam/4))
+ if(message != "")
+ if((HULK in mutations) && health >= 25 && length(message))
+ message = "[uppertext(message)]!!!"
+ verb = pick("yells","roars","hollers")
+ handled = 1
+ if(slurring)
+ message = slur(message)
+ verb = pick("slobbers","slurs")
+ handled = 1
+ if(stuttering)
message = stutter(message)
- verb = pick("stammers", "stutters")
- if(prob(braindam))
- message = uppertext(message)
- verb = pick("yells like an idiot","says rather loudly")
+ verb = pick("stammers","stutters")
+ handled = 1
+
+ var/braindam = getBrainLoss()
+ if(braindam >= 60)
+ handled = 1
+ if(prob(braindam/4))
+ message = stutter(message)
+ verb = pick("stammers", "stutters")
+ if(prob(braindam))
+ message = uppertext(message)
+ verb = "yells loudly"
returns[1] = message
returns[2] = verb
returns[3] = handled
-
return returns
diff --git a/code/modules/mob/living/simple_animal/friendly/mushroom.dm b/code/modules/mob/living/simple_animal/friendly/mushroom.dm
index 9bd464db..c39a3031 100644
--- a/code/modules/mob/living/simple_animal/friendly/mushroom.dm
+++ b/code/modules/mob/living/simple_animal/friendly/mushroom.dm
@@ -1,9 +1,10 @@
/mob/living/simple_animal/mushroom
name = "walking mushroom"
desc = "It's a massive mushroom... with legs?"
- icon_state = "mushroom"
- icon_living = "mushroom"
- icon_dead = "mushroom_dead"
+ icon = 'icons/mob/livestock.dmi'
+ icon_state = "walkingmushroom"
+ icon_living = "walkingmushroom"
+ icon_dead = "walkingmushroom_d"
small = 1
speak_chance = 0
turns_per_move = 1
diff --git a/code/modules/mob/living/simple_animal/simple_animal.dm b/code/modules/mob/living/simple_animal/simple_animal.dm
index dd72497f..e4a8f93e 100644
--- a/code/modules/mob/living/simple_animal/simple_animal.dm
+++ b/code/modules/mob/living/simple_animal/simple_animal.dm
@@ -243,6 +243,12 @@
if ((O.client && !( O.blinded )))
O.show_message("\blue [M] [response_help] [src]")
+ if("disarm")
+ if (health > 0)
+ for(var/mob/O in viewers(src, null))
+ if ((O.client && !( O.blinded )))
+ O.show_message("\blue [M] [response_disarm] [src]")
+
if("grab")
if (M == src)
return
@@ -262,7 +268,7 @@
if ((O.client && !( O.blinded )))
O.show_message(text("\red [] has grabbed [] passively!", M, src), 1)
- if("hurt", "disarm")
+ if("hurt")
adjustBruteLoss(harm_intent_damage)
for(var/mob/O in viewers(src, null))
if ((O.client && !( O.blinded )))
diff --git a/code/modules/mob/mob_movement.dm b/code/modules/mob/mob_movement.dm
index 3e58626b..3fcdecb0 100644
--- a/code/modules/mob/mob_movement.dm
+++ b/code/modules/mob/mob_movement.dm
@@ -190,6 +190,12 @@
return
if(mob.client)
if(mob.client.view != world.view)
+ for(var/obj/item/item in mob.contents)
+ if(item.zoom)
+ item.zoom()
+ break
+
+ /*
if(locate(/obj/item/weapon/gun/energy/rifle/sniperrifle, mob.contents)) // If mob moves while zoomed in with sniper rifle, unzoom them.
var/obj/item/weapon/gun/energy/rifle/sniperrifle/s = locate() in mob
if(s.zoom)
@@ -198,6 +204,7 @@
var/obj/item/weapon/gun/energy/laser/modular/s = locate() in mob
if(s.zoom)
s.zoom()
+ */
if(Process_Grab()) return
diff --git a/code/modules/mob/say.dm b/code/modules/mob/say.dm
index ad2e5977..454c962f 100644
--- a/code/modules/mob/say.dm
+++ b/code/modules/mob/say.dm
@@ -12,6 +12,21 @@
if(say_disabled) //This is here to try to identify lag problems
usr << "\red Speech is currently admin-disabled."
return
+ //Let's try to make users fix their errors - we try to detect single, out-of-place letters and 'unintended' words
+ /*
+ var/first_letter = copytext(message,1,2)
+ if((copytext(message,2,3) == " " && first_letter != "I" && first_letter != "A" && first_letter != ";") || cmptext(copytext(message,1,5), "say ") || cmptext(copytext(message,1,4), "me ") || cmptext(copytext(message,1,6), "looc ") || cmptext(copytext(message,1,5), "ooc ") || cmptext(copytext(message,2,6), "say "))
+ var/response = alert(usr, "Do you really want to say this using the *say* verb?\n\n[message]\n", "Confirm your message", "Yes", "Edit message", "No")
+ if(response == "Edit message")
+ message = input(usr, "Please edit your message carefully:", "Edit message", message)
+ if(!message)
+ return
+ else if(response == "No")
+ return
+ */
+
+//We do not have typing indicator code yet - Waiting for the okay from Skull before considering adding - Jamini
+// set_typing_indicator(0)
usr.say(message)
/mob/verb/me_verb(message as text)
@@ -22,8 +37,9 @@
usr << "\red Speech is currently admin-disabled."
return
- message = trim(copytext(sanitize(message), 1, MAX_MESSAGE_LEN))
-
+ message = strip_html_properly(message)
+//We do not have typing indicator code yet - Waiting for the okay from Skull before considering adding - Jamini
+// set_typing_indicator(0)
if(use_me)
usr.emote("me",usr.emote_type,message)
else
@@ -68,7 +84,6 @@
return
-
/mob/proc/say_understands(var/mob/other,var/datum/language/speaking = null)
if (src.stat == 2) //Dead
@@ -90,6 +105,9 @@
return 1
return 0
+ if(speaking.flags & INNATE)
+ return 1
+
//Language check.
for(var/datum/language/L in src.languages)
if(speaking.name == L.name)
@@ -153,6 +171,9 @@
//parses the language code (e.g. :j) from text, such as that supplied to say.
//returns the language object only if the code corresponds to a language that src can speak, otherwise null.
/mob/proc/parse_language(var/message)
+ if(length(message) >= 1 && copytext(message,1,2) == "!")
+ return all_languages["Noise"]
+
if(length(message) >= 2)
var/language_prefix = lowertext(copytext(message, 1 ,3))
var/datum/language/L = language_keys[language_prefix]
diff --git a/code/modules/power/smes.dm b/code/modules/power/smes.dm
index 512b9429..515f2e51 100644
--- a/code/modules/power/smes.dm
+++ b/code/modules/power/smes.dm
@@ -37,7 +37,7 @@
spawn(5)
if(!powernet)
connect_to_network()
-
+
dir_loop:
for(var/d in cardinal)
var/turf/T = get_step(src, d)
diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm
index 89608e7e..ff8a05e0 100644
--- a/code/modules/projectiles/gun.dm
+++ b/code/modules/projectiles/gun.dm
@@ -249,6 +249,11 @@
mouthshoot = 0
return
+ if(istype(in_chamber, /obj/item/projectile/beam/practice))
+ user.show_message("You feel rather silly, trying to commit suicide with a practice gun.")
+ mouthshoot = 0
+ return
+
in_chamber.on_hit(M)
if (in_chamber.damage_type != HALLOSS)
user.apply_damage(in_chamber.damage*2.5, in_chamber.damage_type, "head", used_weapon = "Point blank shot in the mouth with \a [in_chamber]", sharp=1)
diff --git a/code/modules/projectiles/guns/energy/erifles.dm b/code/modules/projectiles/guns/energy/erifles.dm
index 1ef01d0d..230f1119 100644
--- a/code/modules/projectiles/guns/energy/erifles.dm
+++ b/code/modules/projectiles/guns/energy/erifles.dm
@@ -133,61 +133,17 @@ Commenting out right now, due to a lack of sprites existing. I hate on-mob weapo
w_class = 4.0
fire_delay_wielded = 35 //35 is normal fire_delay -- this is going to suck. Yiss, what we want!
fire_delay_unwielded = 105 //3x difference, let's be an arse about this, and push the issue
- var/zoom = 0
+ zoomdevicename = "sniper scope"
accuracy = -110
- rangedrop = -5 // fully accurate up to first 10 tiles. the last 4 zoomed tiles you are on your
+ rangedrop = -2 // fully accurate up to first 10 tiles. the last 4 zoomed tiles you are on your
-/obj/item/weapon/gun/energy/rifle/sniperrifle/dropped(mob/user)
- user.client.view = world.view
- ..()
-
-/obj/item/weapon/gun/energy/rifle/sniperrifle/ready_to_fire()
- if(!zoom)
- return 0
- if(world.time >= last_fired + fire_delay)
- last_fired = world.time
- return 1
- else
- return 0
-
-///obj/item/weapon/gun/energy/rifle/sniperrifle/update_icon() //Currently only here to fuck with the on-mob icons.
-// icon_state = "sniper[wielded]"
-// return
-
-/*
-This is called from
-modules/mob/mob_movement.dm if you move you will be zoomed out
-modules/mob/living/carbon/human/life.dm if you die, you will be zoomed out.
-*/
-
-/obj/item/weapon/gun/energy/rifle/sniperrifle/verb/zoom()
+/obj/item/weapon/gun/energy/rifle/sniperrifle/verb/scope()
set category = "Object"
- set name = "Use Sniper Scope"
- set popup_menu = 0
- if(usr.stat || !(istype(usr,/mob/living/carbon/human)))
- usr << "You are unable to focus down the scope of the rifle."
- return
- if(!zoom && global_hud.darkMask[1] in usr.client.screen)
- usr << "Your welding equipment gets in the way of you looking down the scope"
- return
- if(!zoom && usr.get_active_hand() != src)
- usr << "You are too distracted to look down the scope, perhaps if it was in your active hand this might work better"
- return
+ set name = "Use Scope"
+ set popup_menu = 1
- if(usr.client.view == world.view)
- if(!usr.hud_used.hud_shown)
- usr.button_pressed_F12(1) // If the user has already limited their HUD this avoids them having a HUD when they zoom in
- usr.button_pressed_F12(1)
- usr.client.view = 12
- zoom = 1
- else
- usr.client.view = world.view
- if(!usr.hud_used.hud_shown)
- usr.button_pressed_F12(1)
- zoom = 0
- usr << "Zoom mode [zoom?"en":"dis"]abled."
- return
+ zoom()
///////////LASER CANNON//////////////
diff --git a/code/modules/projectiles/guns/energy/modular.dm b/code/modules/projectiles/guns/energy/modular.dm
index 87564873..0f41b1d7 100644
--- a/code/modules/projectiles/guns/energy/modular.dm
+++ b/code/modules/projectiles/guns/energy/modular.dm
@@ -13,7 +13,7 @@
cell_type = "/obj/item/weapon/cell"
var/canzoom = 0
- var/zoom = 0
+ zoomdevicename = "scan screen"
var/open = 0
var/upgradepointtotal = 16 //KNOWN BUG: Crashes if you try to VV it with a lot of stuff inside. By a lot, I mean 'everything.' At least in all my tests.
@@ -358,34 +358,9 @@
/obj/item/weapon/gun/energy/laser/modular/dropped(mob/user)
user.client.view = world.view
-/obj/item/weapon/gun/energy/laser/modular/verb/zoom()
+/obj/item/weapon/gun/energy/laser/modular/verb/scope()
set category = "Object"
set name = "Use Scan-Screen"
- set popup_menu = 0
+ set popup_menu = 1
- if(usr.stat || !(istype(usr,/mob/living/carbon/human)))
- usr << "You are unable to focus on the screen."
- return
- if(!zoom && global_hud.darkMask[1] in usr.client.screen)
- usr << "Your welding equipment makes it hard to see the screen."
- return
- if(!zoom && usr.get_active_hand() != src)
- usr << "You are too distracted to watch the screen, perhaps if it was in your active hand this might work better"
- return
- if((hasscreen == 0) || (canzoom == 0))
- usr << "This gun lacks the parts for components for zooming."
- return
-
- if(usr.client.view == world.view)
- if(!usr.hud_used.hud_shown)
- usr.button_pressed_F12(1) // If the user has already limited their HUD this avoids them having a HUD when they zoom in
- usr.button_pressed_F12(1)
- usr.client.view = 12
- zoom = 1
- else
- usr.client.view = world.view
- if(!usr.hud_used.hud_shown)
- usr.button_pressed_F12(1)
- zoom = 0
- usr << "Zoom mode [zoom?"en":"dis"]abled."
- return
\ No newline at end of file
+ zoom()
\ No newline at end of file
diff --git a/code/modules/projectiles/projectile.dm b/code/modules/projectiles/projectile.dm
index bb11ef81..a54e5df2 100644
--- a/code/modules/projectiles/projectile.dm
+++ b/code/modules/projectiles/projectile.dm
@@ -95,6 +95,10 @@
miss_modifier += -30
def_zone = get_zone_with_miss_chance(def_zone, M, miss_modifier + 15*distance + daddy.accuracy + daddy.rangedrop) // add +daddy.missmod vars to gun and this. snowflake accuracy
//moving def_zone to be a child of the daddyblock because i need the daddy. all projectiles should be fired from guns anyway
+
+ if (istype(shot_from,/obj/item/mecha_parts/mecha_equipment/weapon)) //If you shoot with a mecha weapon instead, check accuracy without a steady variable
+ def_zone = get_zone_with_miss_chance(def_zone, M, miss_modifier + 10*distance)
+
if(!def_zone)
visible_message("\blue \The [src] misses [M] narrowly!")
forcedodge = -1
diff --git a/code/setup.dm b/code/setup.dm
index 9f687a5b..37517f27 100644
--- a/code/setup.dm
+++ b/code/setup.dm
@@ -710,6 +710,9 @@ var/list/be_special_flags = list(
#define LEFT 1
#define RIGHT 2
+
+
+
// for secHUDs and medHUDs and variants. The number is the location of the image on the list hud_list of humans.
#define HEALTH_HUD 1 // a simple line rounding the mob's number health
#define STATUS_HUD 2 // alive, dead, diseased, etc.
@@ -773,6 +776,10 @@ var/list/RESTRICTED_CAMERA_NETWORKS = list( //Those networks can only be accesse
#define NONVERBAL 4 // Language has a significant non-verbal component. Speech is garbled without line-of-sight
#define SIGNLANG 8 // Language is completely non-verbal. Speech is displayed through emotes for those who can understand.
#define HIVEMIND 16 // Broadcast to all mobs with this language.
+#define NONGLOBAL 32 // Do not add to general languages list
+#define INNATE 64 // All mobs can be assumed to speak and understand this language (audible emotes)
+#define NO_TALK_MSG 128 // Do not show the "\The [speaker] talks into \the [radio]" message
+#define NO_STUTTER 256 // No stuttering, slurring, or other speech problems
//Flags for zone sleeping
#define ZONE_ACTIVE 1
diff --git a/html/changelog.html b/html/changelog.html
index 46dc21c1..6182eb63 100644
--- a/html/changelog.html
+++ b/html/changelog.html
@@ -56,6 +56,35 @@ should be listed in the changelog upon commit though. Thanks. -->
+
+
29 March 2015
+
SoundScopes updated:
+
+ - Languages no longer come out as ***********
+ - Changelings can change thier arms into Blades
+ - Changelings can change thier arms into a Shield
+ - Force gloves (Trial)
+ - Binoculars
+ - No longer able to modify the genomes for IPCs, nor inject them with the DNA injectors(Might carry over to Diona)
+ - Vampires can no longer stunn themselves when using glare
+ - (Server)Security flaw
+ - Player Memo's show up again
+ - Mech projectile weapons will now hit their target
+ - Suit cooling units will now work while on back as well, much like an oxygen tank
+ - Walking mushrooms are now visible
+ - Altered the EMP code so that mechas are actually affected by the exosuit computer commands
+ - Requests consoles no longer print when out of paper
+ - Duty Officer things
+ - Zoom code.
+ - Cane Sword is now called a thin sword, so you don't know what it's from.
+ - No longer able to suicide with a practice rifle
+ - Added disarm to simple mobs rather than defaulting to harm
+ - Tables are a little more resistant to damage (100% increase) and has a better chance of deflecting projectiles
+
+
+
+
+
16 March 2015
Skull132 updated:
diff --git a/icons/mob/back.dmi b/icons/mob/back.dmi
index 654d35b6..52db8a3d 100644
Binary files a/icons/mob/back.dmi and b/icons/mob/back.dmi differ
diff --git a/icons/mob/belt.dmi b/icons/mob/belt.dmi
index 8d7f7f0c..e784cc74 100644
Binary files a/icons/mob/belt.dmi and b/icons/mob/belt.dmi differ
diff --git a/icons/mob/hands.dmi b/icons/mob/hands.dmi
index c6acbcf8..635146b9 100644
Binary files a/icons/mob/hands.dmi and b/icons/mob/hands.dmi differ
diff --git a/icons/mob/head.dmi b/icons/mob/head.dmi
index ab05d894..bda8b2a1 100644
Binary files a/icons/mob/head.dmi and b/icons/mob/head.dmi differ
diff --git a/icons/mob/items_lefthand.dmi b/icons/mob/items_lefthand.dmi
index f383fb50..66ea91d0 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 30636b09..77ee1897 100644
Binary files a/icons/mob/items_righthand.dmi and b/icons/mob/items_righthand.dmi differ
diff --git a/icons/mob/mask.dmi b/icons/mob/mask.dmi
index 7b448e9c..37c84f14 100644
Binary files a/icons/mob/mask.dmi and b/icons/mob/mask.dmi differ
diff --git a/icons/mob/species/skrell/helmet.dmi b/icons/mob/species/skrell/helmet.dmi
index 1a7219ab..99ee56a1 100644
Binary files a/icons/mob/species/skrell/helmet.dmi and b/icons/mob/species/skrell/helmet.dmi differ
diff --git a/icons/mob/species/skrell/suit.dmi b/icons/mob/species/skrell/suit.dmi
index 2cf6c293..bc0eafe0 100644
Binary files a/icons/mob/species/skrell/suit.dmi and b/icons/mob/species/skrell/suit.dmi differ
diff --git a/icons/mob/species/tajaran/helmet.dmi b/icons/mob/species/tajaran/helmet.dmi
index 3461fd47..a492b871 100644
Binary files a/icons/mob/species/tajaran/helmet.dmi and b/icons/mob/species/tajaran/helmet.dmi differ
diff --git a/icons/mob/species/tajaran/suit.dmi b/icons/mob/species/tajaran/suit.dmi
index be9e7e6e..5ebfbfd2 100644
Binary files a/icons/mob/species/tajaran/suit.dmi and b/icons/mob/species/tajaran/suit.dmi differ
diff --git a/icons/mob/species/unathi/helmet.dmi b/icons/mob/species/unathi/helmet.dmi
index 367693a6..b4b3c859 100644
Binary files a/icons/mob/species/unathi/helmet.dmi and b/icons/mob/species/unathi/helmet.dmi differ
diff --git a/icons/mob/species/unathi/suit.dmi b/icons/mob/species/unathi/suit.dmi
index 9a2fe5a4..74c29181 100644
Binary files a/icons/mob/species/unathi/suit.dmi and b/icons/mob/species/unathi/suit.dmi differ
diff --git a/icons/mob/suit.dmi b/icons/mob/suit.dmi
index 6229066b..105e29c0 100644
Binary files a/icons/mob/suit.dmi and b/icons/mob/suit.dmi differ
diff --git a/icons/mob/ties.dmi b/icons/mob/ties.dmi
index 87293f95..83099df9 100644
Binary files a/icons/mob/ties.dmi and b/icons/mob/ties.dmi differ
diff --git a/icons/mob/uniform.dmi b/icons/mob/uniform.dmi
index 89a7b011..206b00ec 100644
Binary files a/icons/mob/uniform.dmi and b/icons/mob/uniform.dmi differ
diff --git a/icons/obj/clothing/species/skrell/hats.dmi b/icons/obj/clothing/species/skrell/hats.dmi
index faf209c3..83547faf 100644
Binary files a/icons/obj/clothing/species/skrell/hats.dmi and b/icons/obj/clothing/species/skrell/hats.dmi differ
diff --git a/icons/obj/clothing/species/skrell/suits.dmi b/icons/obj/clothing/species/skrell/suits.dmi
index 5f6f5843..eedbbf78 100644
Binary files a/icons/obj/clothing/species/skrell/suits.dmi and b/icons/obj/clothing/species/skrell/suits.dmi differ
diff --git a/icons/obj/clothing/species/tajaran/hats.dmi b/icons/obj/clothing/species/tajaran/hats.dmi
index 65b959c8..0de513c2 100644
Binary files a/icons/obj/clothing/species/tajaran/hats.dmi and b/icons/obj/clothing/species/tajaran/hats.dmi differ
diff --git a/icons/obj/clothing/species/tajaran/suits.dmi b/icons/obj/clothing/species/tajaran/suits.dmi
index 0028463f..7af157fd 100644
Binary files a/icons/obj/clothing/species/tajaran/suits.dmi and b/icons/obj/clothing/species/tajaran/suits.dmi differ
diff --git a/icons/obj/clothing/species/unathi/hats.dmi b/icons/obj/clothing/species/unathi/hats.dmi
index f8cb49ed..7f541867 100644
Binary files a/icons/obj/clothing/species/unathi/hats.dmi and b/icons/obj/clothing/species/unathi/hats.dmi differ
diff --git a/icons/obj/clothing/species/unathi/suits.dmi b/icons/obj/clothing/species/unathi/suits.dmi
index f67b2668..095313ee 100644
Binary files a/icons/obj/clothing/species/unathi/suits.dmi and b/icons/obj/clothing/species/unathi/suits.dmi differ
diff --git a/icons/obj/clothing/ties.dmi b/icons/obj/clothing/ties.dmi
index da88859f..01d3193f 100644
Binary files a/icons/obj/clothing/ties.dmi and b/icons/obj/clothing/ties.dmi differ
diff --git a/icons/obj/custom_items.dmi b/icons/obj/custom_items.dmi
index 9b215b9c..1f4cb48b 100644
Binary files a/icons/obj/custom_items.dmi and b/icons/obj/custom_items.dmi differ
diff --git a/icons/obj/device.dmi b/icons/obj/device.dmi
index 449854fb..db13b108 100644
Binary files a/icons/obj/device.dmi and b/icons/obj/device.dmi differ