[key_name(Sender, 1)] (PP) (VV) (SM) (JMP) (CA) (BSA) (RPLY): [msg]"
- admins << msg
+ if(silicon)
+ msg = "\blue CENTCOMM(A.L.I.C.E.):[key_name(Sender, 1)] (PP) (VV) (SM) (JMP) (CA) (BSA) (RPLY): [msg]"
+ else
+ msg = "\blue CENTCOMM[iamessage ? " IA" : ""]:[key_name(Sender, 1)] (PP) (VV) (SM) (JMP) (CA) (BSA) (RPLY): [msg]"
+ for(var/client/C in admins)
+ if((R_ADMIN & C.holder.rights) || (R_MOD & C.holder.rights))
+ C << msg
/proc/Syndicate_announce(var/text , var/mob/Sender)
var/msg = copytext(sanitize(text), 1, MAX_MESSAGE_LEN)
msg = "\blue SYNDICATE:[key_name(Sender, 1)] (PP) (VV) (SM) (JMP) (CA) (BSA) (RPLY): [msg]"
- admins << msg
+ for(var/client/C in admins)
+ if((R_ADMIN & C.holder.rights) || (R_MOD & C.holder.rights))
+ C << msg
\ No newline at end of file
diff --git a/code/modules/assembly/bomb.dm b/code/modules/assembly/bomb.dm
index 303b1140..7d4e05f9 100644
--- a/code/modules/assembly/bomb.dm
+++ b/code/modules/assembly/bomb.dm
@@ -46,6 +46,7 @@
status = 1
bombers += "[key_name(user)] welded a single tank bomb. Temp: [bombtank.air_contents.temperature-T0C]"
message_admins("[key_name_admin(user)] welded a single tank bomb. Temp: [bombtank.air_contents.temperature-T0C]")
+ message_mods("[key_name_admin(user)] welded a single tank bomb. Temp: [bombtank.air_contents.temperature-T0C]")
user << "A pressure hole has been bored to [bombtank] valve. \The [bombtank] can now be ignited."
else
status = 0
diff --git a/code/modules/aurora/weldbackpack.dm b/code/modules/aurora/weldbackpack.dm
index 1bbedce2..7d7c9d61 100644
--- a/code/modules/aurora/weldbackpack.dm
+++ b/code/modules/aurora/weldbackpack.dm
@@ -18,6 +18,7 @@
var/obj/item/weapon/weldingtool/T = W
if(T.welding & prob(50))
message_admins("[key_name_admin(user)] triggered a welderpack explosion at ([loc.x],[loc.y],[loc.z]) - JMP")
+ message_mods("[key_name_admin(user)] triggered a welderpack explosion at ([loc.x],[loc.y],[loc.z]) - JMP")
log_game("[key_name(user)] triggered a fueltank explosion.")
user << "\red That was stupid of you."
explosion(get_turf(src),-1,0,2)
diff --git a/code/modules/client/client procs.dm b/code/modules/client/client procs.dm
index b3cdba60..378aed54 100644
--- a/code/modules/client/client procs.dm
+++ b/code/modules/client/client procs.dm
@@ -54,7 +54,7 @@
return
cmd_admin_irc_pm()
return
-
+
//Logs all hrefs
@@ -155,6 +155,12 @@
if(holder)
add_admin_verbs()
admin_memo_show()
+ if(!ooc_allowed)
+ src << "OOC is Disabled"
+ if(!looc_allowed)
+ src << "LOOC is Disabled"
+ if(!dsay_allowed)
+ src << "Deadchat is Disabled"
log_client_to_db()
@@ -255,7 +261,7 @@
//send resources to the client. It's here in its own proc so we can move it around easiliy if need be
/client/proc/send_resources()
// preload_vox() //Causes long delays with initial start window and subsequent windows when first logged in.
-
+
getFiles(
'html/search.js',
'html/panels.css',
diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm
index a5375661..f2a67218 100644
--- a/code/modules/client/preferences.dm
+++ b/code/modules/client/preferences.dm
@@ -1401,6 +1401,17 @@ datum/preferences
else continue
+ // Wheelchair necessary?
+ var/datum/organ/external/l_foot = character.get_organ("l_foot")
+ var/datum/organ/external/r_foot = character.get_organ("r_foot")
+ if((!l_foot || l_foot.status & ORGAN_DESTROYED) && (!r_foot || r_foot.status & ORGAN_DESTROYED))
+ var/obj/structure/stool/bed/chair/wheelchair/W = new /obj/structure/stool/bed/chair/wheelchair (character.loc)
+ character.buckled = W
+ character.update_canmove()
+ W.dir = character.dir
+ W.buckled_mob = character
+ W.add_fingerprint(character)
+
if(underwear > underwear_m.len || underwear < 1)
underwear = 0 //I'm sure this is 100% unnecessary, but I'm paranoid... sue me. //HAH NOW NO MORE MAGIC CLONING UNDIES
character.underwear = underwear
diff --git a/code/modules/client/preferences_gear.dm b/code/modules/client/preferences_gear.dm
index cbea8c1f..6ae0ec5c 100644
--- a/code/modules/client/preferences_gear.dm
+++ b/code/modules/client/preferences_gear.dm
@@ -25,7 +25,7 @@ proc/populate_gear_list()
path = /obj/item/weapon/dice/d20
cost = 1
-/datum/gear/dice
+/datum/gear/wallet
display_name = "wallet"
path = /obj/item/weapon/storage/wallet
cost = 2
@@ -41,6 +41,51 @@ proc/populate_gear_list()
path = /obj/item/weapon/cane
cost = 2
+/datum/gear/briefcase
+ display_name = "briefcase"
+ path = /obj/item/weapon/storage/briefcase
+ cost = 2
+
+/datum/gear/securebriefcase
+ display_name = "secure briefcase"
+ path = /obj/item/weapon/storage/secure/briefcase
+ cost = 3
+
+/datum/gear/zippolighter
+ display_name = "zippo lighter"
+ path = /obj/item/weapon/lighter/zippo
+ cost = 1
+
+/datum/gear/recorder
+ display_name = "universal recorder"
+ path = /obj/item/device/taperecorder
+ cost = 2
+
+/datum/gear/camera
+ display_name = "camera"
+ path = /obj/item/device/camera
+ cost = 1
+
+/datum/gear/clipboard
+ display_name = "clipboard"
+ path = /obj/item/weapon/clipboard
+ cost = 1
+
+/datum/gear/redpen
+ display_name = "red pen"
+ path = /obj/item/weapon/pen/red
+ cost = 1
+
+/datum/gear/bluepen
+ display_name = "blue pen"
+ path = /obj/item/weapon/pen/blue
+ cost = 1
+
+/datum/gear/flask
+ display_name = "flask"
+ path = /obj/item/weapon/reagent_containers/food/drinks/flask/barflask
+ cost = 2
+
/datum/gear/tie_horrible
display_name = "horrible tie"
path = /obj/item/clothing/tie/horrible
@@ -395,12 +440,6 @@ proc/populate_gear_list()
// slot = slot_w_uniform
cost = 3
-/datum/gear/exec_suit
- display_name = "executive suit"
- path = /obj/item/clothing/under/suit_jacket/really_black
-// slot = slot_w_uniform
- cost = 3
-
/datum/gear/oldmansuit
display_name = "old man suit"
path = /obj/item/clothing/under/lawyer/oldman
@@ -423,10 +462,16 @@ proc/populate_gear_list()
/datum/gear/armpit
display_name = "shoulder holster"
-// path = /obj/item/clothing/tie/holster/armpit
+ path = /obj/item/clothing/tie/holster/armpit
cost = 3
allowed_roles = list("Captain", "Head of Personnel", "Security Officer", "Head of Security")
+
+/datum/gear/normal_beret
+ display_name = "beret"
+ path = /obj/item/clothing/head/beret
+ cost = 3
+
/datum/gear/sec_beret
display_name = "security beret"
path = /obj/item/clothing/head/beret/sec
diff --git a/code/modules/clothing/spacesuits/alien.dm b/code/modules/clothing/spacesuits/alien.dm
index 381259b8..9af5880e 100644
--- a/code/modules/clothing/spacesuits/alien.dm
+++ b/code/modules/clothing/spacesuits/alien.dm
@@ -390,14 +390,14 @@
desc = "A special helmet designed for work in a hazardous, low pressure environment. Has minor radiation shielding."
icon_state = "rig0-medical"
item_state = "medical_helm"
- species_restricted = list("tajara")
+ species_restricted = list("Tajaran")
/obj/item/clothing/head/helmet/space/rig/medical/unathi
name = "medical hardsuit helmet"
desc = "A special helmet designed for work in a hazardous, low pressure environment. Has minor radiation shielding."
icon_state = "rig0-medical"
item_state = "medical_helm"
- species_restricted = list("unathi")
+ species_restricted = list("Unathi")
/obj/item/clothing/head/helmet/space/rig/medical/skrell
name = "medical hardsuit helmet"
diff --git a/code/modules/events/event_manager.dm b/code/modules/events/event_manager.dm
index 9d88a467..4f101779 100644
--- a/code/modules/events/event_manager.dm
+++ b/code/modules/events/event_manager.dm
@@ -59,10 +59,11 @@ var/scheduledEvent = null
set name = "Trigger Event (Debug Only)"
set category = "Debug"
+ if(!check_rights(R_DEBUG)) return
+
if(!holder)
return
if(ispath(type))
new type
message_admins("[key_name_admin(usr)] has triggered an event. ([type])", 1)
- msg_scopes("[key_name_admin(usr)] has triggered an event. ([type])", 0)
diff --git a/code/modules/mob/hear_say.dm b/code/modules/mob/hear_say.dm
index 80a01ba5..49554154 100644
--- a/code/modules/mob/hear_say.dm
+++ b/code/modules/mob/hear_say.dm
@@ -76,7 +76,9 @@
if(hard_to_hear)
message = stars(message)
- var/speaker_name = speaker.name
+ var/speaker_name
+ if(speaker)
+ speaker_name = speaker.name
if(vname)
speaker_name = vname
diff --git a/code/modules/mob/living/carbon/human/human_attackhand.dm b/code/modules/mob/living/carbon/human/human_attackhand.dm
index 9d9f1145..844d239e 100644
--- a/code/modules/mob/living/carbon/human/human_attackhand.dm
+++ b/code/modules/mob/living/carbon/human/human_attackhand.dm
@@ -131,13 +131,15 @@
//and leave an attack log
M.attack_log += text("\[[time_stamp()]\] Bit [src.name] ([src.ckey]) in the neck and draining their blood")
src.attack_log += text("\[[time_stamp()]\] Has been bit in the neck by [M.name] ([M.ckey])")
- msg_admin_attack("[M.name] ([M.ckey]) bit [src.name] ([src.ckey]) in the neck")
+ msg_admin_attack("[M.name] ([M.ckey]) bit [src.name] ([src.ckey]) in the neck - JMP")
M.handle_bloodsucking(src)
+// var/datum/organ/external/affecting = get_organ(src.zone_sel.selecting)
+// affecting.take_damage(10,0,1,0,"dual puncture marks") //this does not work and causes runtimes.
return
//end vampire codes
M.attack_log += text("\[[time_stamp()]\] [pick(attack.attack_verb)]ed [src.name] ([src.ckey])")
src.attack_log += text("\[[time_stamp()]\] Has been [pick(attack.attack_verb)]ed by [M.name] ([M.ckey])")
- msg_admin_attack("[key_name(M)] [pick(attack.attack_verb)]ed [key_name(src)]")
+ msg_admin_attack("[key_name(M)] [pick(attack.attack_verb)]ed [key_name(src)] - JMP")
var/damage = rand(0, 5)//BS12 EDIT
if(!damage)
@@ -168,7 +170,7 @@
M.attack_log += text("\[[time_stamp()]\] Disarmed [src.name] ([src.ckey])")
src.attack_log += text("\[[time_stamp()]\] Has been disarmed by [M.name] ([M.ckey])")
- msg_admin_attack("[key_name(M)] disarmed [src.name] ([src.ckey])")
+ msg_admin_attack("[key_name(M)] disarmed [src.name] ([src.ckey]) - JMP")
if(w_uniform)
w_uniform.add_fingerprint(M)
diff --git a/code/modules/mob/living/carbon/human/human_movement.dm b/code/modules/mob/living/carbon/human/human_movement.dm
index 60c44fe3..5bf36827 100644
--- a/code/modules/mob/living/carbon/human/human_movement.dm
+++ b/code/modules/mob/living/carbon/human/human_movement.dm
@@ -22,17 +22,29 @@
if(wear_suit)
tally += wear_suit.slowdown
- if(shoes)
- tally += shoes.slowdown
- for(var/organ_name in list("l_foot","r_foot","l_leg","r_leg"))
- var/datum/organ/external/E = get_organ(organ_name)
- if(!E || (E.status & ORGAN_DESTROYED))
- tally += 4
- if(E.status & ORGAN_SPLINTED)
- tally += 0.5
- else if(E.status & ORGAN_BROKEN)
- tally += 1.5
+ if(!buckled || (buckled && !istype(buckled, /obj/structure/stool/bed/chair/wheelchair)))
+ if(shoes)
+ tally += shoes.slowdown
+
+ for(var/organ_name in list("l_foot","r_foot","l_leg","r_leg"))
+ var/datum/organ/external/E = get_organ(organ_name)
+ if(!E || (E.status & ORGAN_DESTROYED))
+ tally += 4
+ if(E.status & ORGAN_SPLINTED)
+ tally += 0.5
+ else if(E.status & ORGAN_BROKEN)
+ tally += 1.5
+
+ if(buckled && istype(buckled, /obj/structure/stool/bed/chair/wheelchair))
+ for(var/organ_name in list("l_hand","r_hand","l_arm","r_arm"))
+ var/datum/organ/external/E = get_organ(organ_name)
+ if(!E || (E.status & ORGAN_DESTROYED))
+ tally += 4
+ if(E.status & ORGAN_SPLINTED)
+ tally += 0.5
+ else if(E.status & ORGAN_BROKEN)
+ tally += 1.5
if(shock_stage >= 10) tally += 3
diff --git a/code/modules/mob/living/carbon/human/say.dm b/code/modules/mob/living/carbon/human/say.dm
index 1f5cce5f..3839ee2e 100644
--- a/code/modules/mob/living/carbon/human/say.dm
+++ b/code/modules/mob/living/carbon/human/say.dm
@@ -237,7 +237,7 @@
handled = 1
if((HULK in mutations) && health >= 25 && length(message))
- message = "[uppertext(message)]!!!"
+ //message = "[uppertext(message)]!!!" //this is really irritating. let's not.
verb = pick("yells","roars","hollers")
handled = 1
if(slurring)
diff --git a/code/modules/mob/living/silicon/ai/ai.dm b/code/modules/mob/living/silicon/ai/ai.dm
index 4b684828..00c72af6 100644
--- a/code/modules/mob/living/silicon/ai/ai.dm
+++ b/code/modules/mob/living/silicon/ai/ai.dm
@@ -747,12 +747,12 @@ var/list/ai_list = list()
if(centcomm_message_cooldown)
usr << "\red Arrays recycling. Please stand by."
return
- var/input = stripped_input(usr, "Please choose a message to transmit to Centcomm via quantum entanglement. Please be aware that this process is very expensive, and abuse will lead to... termination. Transmission does not guarantee a response. There is a 30 second delay before you may send another message, be clear, full and concise.", "To abort, send an empty message.", "")
+ var/input = stripped_input(usr, "Please choose a message to transmit to Centcomm via quantum entanglement. Please be aware that this process is very expensive, and abuse will lead to... termination. Transmission does not guarantee a response. There is a 10 minute delay before you may send another message, be clear, full and concise.", "To abort, send an empty message.", "")
if(!input || !(usr in view(1,src)))
return
- Centcomm_announce(input, usr)
+ Centcomm_announce(input, usr, 1)
usr << "\blue Message transmitted."
log_say("[key_name(usr)] has made an IA Centcomm announcement: [input]")
centcomm_message_cooldown = 1
- spawn(300)//10 minute cooldown
+ spawn(6000)//10 minute cooldown
centcomm_message_cooldown = 0
diff --git a/code/modules/mob/living/silicon/ai/death.dm b/code/modules/mob/living/silicon/ai/death.dm
index 52b59873..d95f9c19 100644
--- a/code/modules/mob/living/silicon/ai/death.dm
+++ b/code/modules/mob/living/silicon/ai/death.dm
@@ -42,6 +42,7 @@
emergency_shuttle.incall(2)
log_game("All the AIs, comm consoles and boards are destroyed. Shuttle called.")
message_admins("All the AIs, comm consoles and boards are destroyed. Shuttle called.", 1)
+ message_mods("All the AIs, comm consoles and boards are destroyed. Shuttle called.")
captain_announce("The emergency shuttle has been called. It will arrive in [round(emergency_shuttle.timeleft()/60)] minutes.")
world << sound('sound/AI/shuttlecalled.ogg')
diff --git a/code/modules/mob/living/silicon/robot/drone/drone_console.dm b/code/modules/mob/living/silicon/robot/drone/drone_console.dm
index 82ee8c50..73727f8e 100644
--- a/code/modules/mob/living/silicon/robot/drone/drone_console.dm
+++ b/code/modules/mob/living/silicon/robot/drone/drone_console.dm
@@ -90,6 +90,7 @@
if(D.stat != 2)
usr << "\red You issue a kill command for the unfortunate drone."
message_admins("[key_name_admin(usr)] issued kill order for drone [key_name_admin(D)] from control console.")
+ message_mods("[key_name_admin(usr)] issued kill order for drone [key_name_admin(D)] from control console.")
log_game("[key_name(usr)] issued kill order for [key_name(src)] from control console.")
D.shut_down()
diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm
index 407ef126..16a3b62a 100644
--- a/code/modules/mob/living/silicon/robot/robot.dm
+++ b/code/modules/mob/living/silicon/robot/robot.dm
@@ -731,6 +731,7 @@
connected_ai = null
user << "You emag [src]'s interface."
message_admins("[key_name_admin(user)] emagged cyborg [key_name_admin(src)]. Laws overridden.")
+ message_mods("[key_name_admin(user)] emagged cyborg [key_name_admin(src)]. Laws overridden.")
log_game("[key_name(user)] emagged cyborg [key_name(src)]. Laws overridden.")
clear_supplied_laws()
clear_inherent_laws()
diff --git a/code/modules/mob/living/simple_animal/hostile/bat.dm b/code/modules/mob/living/simple_animal/hostile/bat.dm
index 32e38ce9..5487e317 100644
--- a/code/modules/mob/living/simple_animal/hostile/bat.dm
+++ b/code/modules/mob/living/simple_animal/hostile/bat.dm
@@ -13,11 +13,11 @@
response_disarm = "gently pushes aside the"
response_harm = "hits the"
speed = 4
- maxHealth = 70
- health = 70
+ maxHealth = 45
+ health = 45
harm_intent_damage = 8
- melee_damage_lower = 15
+ melee_damage_lower = 10
melee_damage_upper = 15
attacktext = "bites"
attack_sound = 'sound/weapons/bite.ogg'
diff --git a/code/modules/mob/login.dm b/code/modules/mob/login.dm
index 342dde47..385885bd 100644
--- a/code/modules/mob/login.dm
+++ b/code/modules/mob/login.dm
@@ -18,9 +18,11 @@
if(matches)
if(M.client)
message_admins("Notice: [key_name_admin(src)] has the same [matches] as [key_name_admin(M)].", 1)
+ message_mods("Notice: [key_name_admin(src)] has the same [matches] as [key_name_admin(M)].")
log_access("Notice: [key_name(src)] has the same [matches] as [key_name(M)].")
else
message_admins("Notice: [key_name_admin(src)] has the same [matches] as [key_name_admin(M)] (no longer logged in). ", 1)
+ message_mods("Notice: [key_name_admin(src)] has the same [matches] as [key_name_admin(M)] (no longer logged in). ")
log_access("Notice: [key_name(src)] has the same [matches] as [key_name(M)] (no longer logged in).")
/mob/Login()
@@ -56,4 +58,4 @@
if(H.species && H.species.abilities)
client.verbs |= H.species.abilities
- nanomanager.send_resources(client)
+ nanomanager.send_resources(client)
\ No newline at end of file
diff --git a/code/modules/mob/logout.dm b/code/modules/mob/logout.dm
index 2460285a..77cfef8b 100644
--- a/code/modules/mob/logout.dm
+++ b/code/modules/mob/logout.dm
@@ -7,6 +7,7 @@
var/admins_number = admins.len
message_admins("Admin logout: [key_name(src)]")
+ message_mods("Staff logout: [key_name(src)]")
if(admins_number == 0) //Apparently the admin logging out is no longer an admin at this point, so we have to check this towards 0 and not towards 1. Awell.
send2adminirc("[key_name(src)] logged out - no more admins online.")
..()
diff --git a/code/modules/mob/mob_grab.dm b/code/modules/mob/mob_grab.dm
index fcaf9888..9c9656d6 100644
--- a/code/modules/mob/mob_grab.dm
+++ b/code/modules/mob/mob_grab.dm
@@ -137,7 +137,7 @@
affecting.loc = assailant.loc
affecting.attack_log += "\[[time_stamp()]\] Has had their neck grabbed by [assailant.name] ([assailant.ckey])"
assailant.attack_log += "\[[time_stamp()]\] Grabbed the neck of [affecting.name] ([affecting.ckey])"
- msg_admin_attack("[key_name(assailant)] grabbed the neck of [key_name(affecting)]")
+ msg_admin_attack("[key_name(assailant)] grabbed the neck of [key_name(affecting)] - JMP")
hud.icon_state = "disarm/kill"
hud.name = "disarm/kill"
else
@@ -158,7 +158,7 @@
assailant.visible_message("[assailant] has tightened \his grip on [affecting]'s neck!")
affecting.attack_log += "\[[time_stamp()]\] Has been strangled (kill intent) by [assailant.name] ([assailant.ckey])"
assailant.attack_log += "\[[time_stamp()]\] Strangled (kill intent) [affecting.name] ([affecting.ckey])"
- msg_admin_attack("[key_name(assailant)] strangled (kill intent) [key_name(affecting)]")
+ msg_admin_attack("[key_name(assailant)] strangled (kill intent) [key_name(affecting)] - JMP")
assailant.next_move = world.time + 10
affecting.losebreath += 1
diff --git a/code/modules/mob/mob_movement.dm b/code/modules/mob/mob_movement.dm
index 82dead6f..c3537785 100644
--- a/code/modules/mob/mob_movement.dm
+++ b/code/modules/mob/mob_movement.dm
@@ -200,10 +200,14 @@
if(Process_Grab()) return
- if(mob.buckled) //if we're buckled to something, tell it we moved.
- return mob.buckled.relaymove(mob, direct)
+// if(mob.buckled) //if we're buckled to something, tell it we moved.
+// return mob.buckled.relaymove(mob, direct)
- if(!mob.canmove) return
+// if(!mob.canmove) return
+
+ if(!mob.canmove)
+ if (mob.buckled && (istype(mob.buckled, /obj/structure/stool/bed/chair/wheelchair))) // Exception for wheelchairs
+ else return
//if(istype(mob.loc, /turf/space) || (mob.flags & NOGRAV))
// if(!mob.Process_Spacemove(0)) return 0
@@ -254,8 +258,20 @@
var/tickcomp = ((1/(world.tick_lag))*1.3)
move_delay = move_delay + tickcomp
-
-
+ if(mob.pulledby || mob.buckled) // Wheelchair driving!
+ if(istype(mob.loc, /turf/space))
+ return // No wheelchair driving in space
+ if(istype(mob.pulledby, /obj/structure/stool/bed/chair/wheelchair))
+ return mob.pulledby.relaymove(mob, direct)
+ else if(istype(mob.buckled, /obj/structure/stool/bed/chair/wheelchair))
+ if(ishuman(mob.buckled))
+ var/mob/living/carbon/human/driver = mob.buckled
+ var/datum/organ/external/l_hand = driver.get_organ("l_hand")
+ var/datum/organ/external/r_hand = driver.get_organ("r_hand")
+ if((!l_hand || (l_hand.status & ORGAN_DESTROYED)) && (!r_hand || (r_hand.status & ORGAN_DESTROYED)))
+ return // No hands to drive your chair? Tough luck!
+ move_delay += 2
+ return mob.buckled.relaymove(mob,direct)
//We are now going to move
moving = 1
diff --git a/code/modules/mob/new_player/new_player.dm b/code/modules/mob/new_player/new_player.dm
index 29ea9173..45a1ee4f 100644
--- a/code/modules/mob/new_player/new_player.dm
+++ b/code/modules/mob/new_player/new_player.dm
@@ -293,6 +293,10 @@
EquipCustomItems(character)
character.loc = pick(latejoin)
character.lastarea = get_area(loc)
+ // Moving wheelchair if they have one
+ if(character.buckled && istype(character.buckled, /obj/structure/stool/bed/chair/wheelchair))
+ character.buckled.loc = character.loc
+ character.buckled.dir = character.dir
ticker.mode.latespawn(character)
diff --git a/code/modules/power/cell.dm b/code/modules/power/cell.dm
index 03fddfb8..1d374f73 100644
--- a/code/modules/power/cell.dm
+++ b/code/modules/power/cell.dm
@@ -82,7 +82,8 @@
rigged = 1
log_admin("LOG: [user.name] ([user.ckey]) injected a power cell with plasma, rigging it to explode.")
- message_admins("LOG: [user.name] ([user.ckey]) injected a power cell with plasma, rigging it to explode.")
+ message_admins("[user.name] ([user.ckey]) injected a power cell with plasma, rigging it to explode.")
+ message_mods("[user.name] ([user.ckey]) injected a power cell with plasma, rigging it to explode.")
S.reagents.clear_reagents()
@@ -108,7 +109,8 @@
//explosion(T, 0, 1, 2, 2)
log_admin("LOG: Rigged power cell explosion, last touched by [fingerprintslast]")
- message_admins("LOG: Rigged power cell explosion, last touched by [fingerprintslast]")
+ message_admins("Rigged power cell explosion, last touched by [fingerprintslast]")
+ message_mods("Rigged power cell explosion, last touched by [fingerprintslast]")
explosion(T, devastation_range, heavy_impact_range, light_impact_range, flash_range)
diff --git a/code/modules/power/lighting.dm b/code/modules/power/lighting.dm
index 357f3587..2197fc5c 100644
--- a/code/modules/power/lighting.dm
+++ b/code/modules/power/lighting.dm
@@ -287,7 +287,8 @@
if(status == LIGHT_OK && trigger)
log_admin("LOG: Rigged light explosion, last touched by [fingerprintslast]")
- message_admins("LOG: Rigged light explosion, last touched by [fingerprintslast]")
+ message_admins("Rigged light explosion, last touched by [fingerprintslast]")
+ message_mods("Rigged light explosion, last touched by [fingerprintslast]")
explode()
else if( prob( min(60, switchcount*switchcount*0.01) ) )
@@ -365,7 +366,8 @@
if(on && rigged)
log_admin("LOG: Rigged light explosion, last touched by [fingerprintslast]")
- message_admins("LOG: Rigged light explosion, last touched by [fingerprintslast]")
+ message_admins("Rigged light explosion, last touched by [fingerprintslast]")
+ message_mods("Rigged light explosion, last touched by [fingerprintslast]")
explode()
else
@@ -723,7 +725,8 @@
if(S.reagents.has_reagent("plasma", 5))
log_admin("LOG: [user.name] ([user.ckey]) injected a light with plasma, rigging it to explode.")
- message_admins("LOG: [user.name] ([user.ckey]) injected a light with plasma, rigging it to explode.")
+ message_admins("[user.name] ([user.ckey]) injected a light with plasma, rigging it to explode.")
+ message_mods("[user.name] ([user.ckey]) injected a light with plasma, rigging it to explode.")
rigged = 1
diff --git a/code/modules/power/singularity/emitter.dm b/code/modules/power/singularity/emitter.dm
index cbacdd7b..0a22877d 100644
--- a/code/modules/power/singularity/emitter.dm
+++ b/code/modules/power/singularity/emitter.dm
@@ -41,6 +41,7 @@
/obj/machinery/power/emitter/Del()
message_admins("Emitter deleted at ([x],[y],[z] - JMP)",0,1)
+ message_mods("Emitter deleted at ([x],[y],[z] - JMP)",0,1)
log_game("Emitter deleted at ([x],[y],[z])")
investigate_log("deleted at ([x],[y],[z])","singulo")
..()
@@ -63,6 +64,7 @@
src.active = 0
user << "You turn off the [src]."
message_admins("Emitter turned off by [key_name(user, user.client)](?) in ([x],[y],[z] - JMP)",0,1)
+ message_mods("Emitter turned off by [key_name(user, user.client)](?) in ([x],[y],[z] - JMP)",0,1)
log_game("Emitter turned off by [user.ckey]([user]) in ([x],[y],[z])")
investigate_log("turned off by [user.key]","singulo")
else
@@ -71,6 +73,7 @@
src.shot_number = 0
src.fire_delay = 100
message_admins("Emitter turned on by [key_name(user, user.client)](?) in ([x],[y],[z] - JMP)",0,1)
+ message_mods("Emitter turned on by [key_name(user, user.client)](?) in ([x],[y],[z] - JMP)",0,1)
log_game("Emitter turned on by [user.ckey]([user]) in ([x],[y],[z])")
investigate_log("turned on by [user.key]","singulo")
update_icon()
diff --git a/code/modules/power/singularity/field_generator.dm b/code/modules/power/singularity/field_generator.dm
index 31f32143..b4289730 100644
--- a/code/modules/power/singularity/field_generator.dm
+++ b/code/modules/power/singularity/field_generator.dm
@@ -350,6 +350,7 @@ field_generator power level display
if(O.last_warning && temp)
if((world.time - O.last_warning) > 50) //to stop message-spam
temp = 0
+ message_mods("A singulo exists and a containment field has failed.")
message_admins("A singulo exists and a containment field has failed.",1)
investigate_log("has failed whilst a singulo exists.","singulo")
O.last_warning = world.time
diff --git a/code/modules/power/singularity/particle_accelerator/particle_control.dm b/code/modules/power/singularity/particle_accelerator/particle_control.dm
index 85cd68cd..cdc4013d 100644
--- a/code/modules/power/singularity/particle_accelerator/particle_control.dm
+++ b/code/modules/power/singularity/particle_accelerator/particle_control.dm
@@ -87,9 +87,9 @@
if(href_list["togglep"])
src.toggle_power()
investigate_log("turned [active?"ON":"OFF"] by [usr.key]","singulo")
- if (active)
- message_admins("PA Control Computer turned ON by [key_name(usr, usr.client)](?) in ([x],[y],[z] - JMP)",0,1)
- log_game("PA Control Computer turned ON by [usr.ckey]([usr]) in ([x],[y],[z])")
+ message_admins("PA Control Computer turned [active?"ON":"OFF"] by [key_name(usr, usr.client)](?) in ([x],[y],[z] - JMP)",0,1)
+ message_mods("PA Control Computer turned [active?"ON":"OFF"] by [key_name(usr, usr.client)](?) in ([x],[y],[z] - JMP)")
+ log_game("PA Control Computer turned [active?"ON":"OFF"] by [usr.ckey]([usr]) in ([x],[y],[z])")
else if(href_list["scan"])
src.part_scan()
else if(href_list["strengthup"])
@@ -98,6 +98,7 @@
strength = 2
else
message_admins("PA Control Computer increased to [strength] by [key_name(usr, usr.client)](?) in ([x],[y],[z] - JMP)",0,1)
+ message_mods("PA Control Computer increased to [strength] by [key_name(usr, usr.client)](?) in ([x],[y],[z] - JMP)")
log_game("PA Control Computer increased to [strength] by [usr.ckey]([usr]) in ([x],[y],[z])")
investigate_log("increased to [strength] by [usr.key]","singulo")
for(var/obj/structure/particle_accelerator/part in connected_parts)
@@ -109,6 +110,9 @@
if(strength < 0)
strength = 0
else
+ message_admins("PA Control Computer decreased to [strength] by [key_name(usr, usr.client)](?) in ([x],[y],[z] - JMP)",0,1)
+ message_mods("PA Control Computer decreased to [strength] by [key_name(usr, usr.client)](?) in ([x],[y],[z] - JMP)")
+ log_game("PA Control Computer decreased to [strength] by [usr.ckey]([usr]) in ([x],[y],[z])")
investigate_log("decreased to [strength] by [usr.key]","singulo")
for(var/obj/structure/particle_accelerator/part in connected_parts)
part.strength = strength
diff --git a/code/modules/power/singularity/singularity.dm b/code/modules/power/singularity/singularity.dm
index ba7bc25d..010bcd61 100644
--- a/code/modules/power/singularity/singularity.dm
+++ b/code/modules/power/singularity/singularity.dm
@@ -102,7 +102,9 @@ var/global/list/uneatable = list(
/obj/machinery/singularity/proc/admin_investigate_setup()
last_warning = world.time
var/count = locate(/obj/machinery/containment_field) in orange(30, src)
- if(!count) message_admins("A singulo has been created without containment fields active ([x],[y],[z])",1)
+ if(!count)
+ message_mods("A singulo has been created without containment fields active ([x],[y],[z])")
+ message_admins("A singulo has been created without containment fields active ([x],[y],[z])",1)
investigate_log("was created. [count?"":"No containment fields were active"]","singulo")
/obj/machinery/singularity/proc/dissipate()
@@ -166,6 +168,10 @@ var/global/list/uneatable = list(
dissipate_delay = 10
dissipate_track = 0
dissipate_strength = 10
+ investigate_log("turned to a stage 4","singulo")
+ message_mods("Singluo is at stage 4 ([x],[y],[z] - JMP)")
+ message_admins("Singluo is at stage 4 ([x],[y],[z] - JMP)",0,1)
+ log_game("Singluo turned to a stage 4 ([x],[y],[z])")
if(9)//this one also lacks a check for gens because it eats everything
current_size = 9
icon = 'icons/effects/288x288.dmi'
diff --git a/code/modules/projectiles/guns/energy.dm b/code/modules/projectiles/guns/energy.dm
index bda822eb..ebac699d 100644
--- a/code/modules/projectiles/guns/energy.dm
+++ b/code/modules/projectiles/guns/energy.dm
@@ -9,6 +9,7 @@
var/cell_type = "/obj/item/weapon/cell"
var/projectile_type = "/obj/item/projectile/beam/practice"
var/modifystate
+ rangedrop = -5 // energy weapons more accurate than bulletweapons.
isHandgun()
return 0
diff --git a/code/modules/projectiles/guns/energy/erifles.dm b/code/modules/projectiles/guns/energy/erifles.dm
index 9fda55e1..e0899974 100644
--- a/code/modules/projectiles/guns/energy/erifles.dm
+++ b/code/modules/projectiles/guns/energy/erifles.dm
@@ -135,7 +135,7 @@ Commenting out right now, due to a lack of sprites existing. I hate on-mob weapo
fire_delay_unwielded = 105 //3x difference, let's be an arse about this, and push the issue
var/zoom = 0
- accuracy = -90
+ accuracy = -110
rangedrop = -5 // 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)
@@ -210,7 +210,7 @@ modules/mob/living/carbon/human/life.dm if you die, you will be zoomed out.
slot_flags = SLOT_BACK //Just realized... Going to need A LOT more on-back sprites now... FECK...
var/mode = 2
fire_delay_wielded = 8
- fire_delay_unwielded = 75
+ fire_delay_unwielded = 24
// attack_self(mob/living/user as mob)
//Let's do some magical things, make this a verb, yes?
diff --git a/code/modules/projectiles/guns/energy/modular.dm b/code/modules/projectiles/guns/energy/modular.dm
index 6807b113..7b218704 100644
--- a/code/modules/projectiles/guns/energy/modular.dm
+++ b/code/modules/projectiles/guns/energy/modular.dm
@@ -58,8 +58,8 @@
desc = "A basic, modular laser pistol."
icon_state = "modpistolopen"
open = 1
- w_class = 2
- upgradepointtotal = 16
+ w_class = 3 // leave it at three until protorifle is implemented. then severely nerf pistol points.
+ upgradepointtotal = 16 //current protopistol is at protorifle point totals.
/obj/item/weapon/gun/energy/laser/modular/pistol/advanced //better version of the pistol
name = "advanced protopistol"
@@ -310,16 +310,16 @@
accuracy = 30 //positive. subtracts to 0 accuracy base, 30 if aimed. fully accurate up to two tiles *if aimed*, -15% per tile after
canzoom = 0
else if(targetmod.rating == 1)
- rangedrop = 5
+ rangedrop = 0
accuracy = -30 //standard accuracy. standard gun.
canzoom = 0
else if(targetmod.rating == 2)
- rangedrop = 5
+ rangedrop = 0
accuracy = -60 //Fully accurate up to 6 tiles aimed. 15% drop per tile after that for ~-120% accuracy at 14 tiles. If you want to snipe things, get phasic.
canzoom = 1 //advanced and up scanning modules let you zoom in. good luck hitting without phasic though pal. good luck.
else if(targetmod.rating == 3)
rangedrop = -5 //Accurate aimed up to 12 tiles. 20% miss at 14. 9 tiles and 50% miss at 14 without aiming.
- accuracy = -90 //If you're paying a premium for accuracy, you can have accuracy.
+ accuracy = -110 //If you're paying a premium for accuracy, you can have accuracy.
canzoom = 1
if(!powermod)
diff --git a/code/modules/projectiles/guns/projectile/rocket.dm b/code/modules/projectiles/guns/projectile/rocket.dm
index a1575b93..bcf183cf 100644
--- a/code/modules/projectiles/guns/projectile/rocket.dm
+++ b/code/modules/projectiles/guns/projectile/rocket.dm
@@ -45,6 +45,7 @@
M.primed = 1
M.throw_at(target, missile_range, missile_speed)
message_admins("[key_name_admin(user)] fired a rocket from a rocket launcher ([src.name]).")
+ message_mods("[key_name_admin(user)] fired a rocket from a rocket launcher ([src.name]).")
log_game("[key_name_admin(user)] used a rocket launcher ([src.name]).")
rockets -= I
del(I)
diff --git a/code/modules/projectiles/projectile.dm b/code/modules/projectiles/projectile.dm
index ca3e127d..e57d13e6 100644
--- a/code/modules/projectiles/projectile.dm
+++ b/code/modules/projectiles/projectile.dm
@@ -94,7 +94,7 @@
if (daddy.target && original in daddy.target) //As opposed to no-delay pew pew
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
+//moving def_zone to be a child of the daddyblock because i need the daddy. all projectiles should be fired from guns anyway
if(!def_zone)
visible_message("\blue \The [src] misses [M] narrowly!")
forcedodge = -1
diff --git a/code/modules/reagents/Chemistry-Reagents.dm b/code/modules/reagents/Chemistry-Reagents.dm
index 5db22131..3f7772e0 100644
--- a/code/modules/reagents/Chemistry-Reagents.dm
+++ b/code/modules/reagents/Chemistry-Reagents.dm
@@ -278,7 +278,7 @@ datum
description = "An ashen-obsidian-water mix, this solution will alter certain sections of the brain's rationality."
color = "#E0E8EF" // rgb: 224, 232, 239
- on_mob_life(var/mob/living/M as mob)
+ on_mob_life(var/mob/living/carbon/human/M as mob)
if(ishuman(M))
if((M.mind in ticker.mode.cult) && prob(10))
M << "\blue A cooling sensation from inside you brings you an untold calmness."
@@ -288,8 +288,10 @@ datum
if((M.mind in ticker.mode.vampires) && (M.mind.vampire) && (!(VAMP_FULL in M.mind.vampire.powers)))
if(!M) M = holder.my_atom
M.adjustFireLoss(6)
+ M.adjust_fire_stacks(1)
+ M.IgniteMob()
//M.take_organ_damage(0, 1*REM)
- if(prob(50))
+ if(prob(20))
for(var/mob/O in viewers(M, null))
O.show_message(text("\red []'s skin sizzles and burns.", M), 1)
holder.remove_reagent(src.id, 10 * REAGENTS_METABOLISM) //high metabolism to prevent extended uncult rolls.
@@ -1532,8 +1534,10 @@ datum
if((M.mind in ticker.mode.vampires) && (M.mind.vampire) && (!(VAMP_FULL in M.mind.vampire.powers)))
if(!M) M = holder.my_atom
M.adjustFireLoss(6)
+ M.adjust_fire_stacks(1)
+ M.IgniteMob()
//M.take_organ_damage(0, 1*REM)
- if(prob(50))
+ if(prob(20))
for(var/mob/O in viewers(M, null))
O.show_message(text("\red []'s skin sizzles and burns.", M), 1)
holder.remove_reagent(src.id, 10 * REAGENTS_METABOLISM) //high metabolism to prevent extended uncult rolls.
diff --git a/code/modules/reagents/grenade_launcher.dm b/code/modules/reagents/grenade_launcher.dm
index 0ea66d79..ce8c7f2e 100644
--- a/code/modules/reagents/grenade_launcher.dm
+++ b/code/modules/reagents/grenade_launcher.dm
@@ -58,6 +58,7 @@
F.loc = user.loc
F.throw_at(target, 30, 2)
message_admins("[key_name_admin(user)] fired a grenade ([F.name]) from a grenade launcher ([src.name]).")
+ message_mods("[key_name_admin(user)] fired a grenade ([F.name]) from a grenade launcher ([src.name]).")
log_game("[key_name_admin(user)] used a grenade ([src.name]).")
F.active = 1
F.icon_state = initial(icon_state) + "_active"
diff --git a/code/modules/reagents/reagent_containers/food/snacks/grown.dm b/code/modules/reagents/reagent_containers/food/snacks/grown.dm
index acbb5810..6a04ea7f 100644
--- a/code/modules/reagents/reagent_containers/food/snacks/grown.dm
+++ b/code/modules/reagents/reagent_containers/food/snacks/grown.dm
@@ -382,7 +382,7 @@
reagents.add_reagent("nutriment", 1)
reagents.add_reagent("toxin", 3+round(potency / 3, 1))
reagents.add_reagent("lexorin", 1+round(potency / 5, 1))
- bitesize = 1+round(reagents.total_volume / 2, 1)
+ bitesize = reagents.total_volume
/obj/item/weapon/reagent_containers/food/snacks/grown/ambrosiavulgaris
seed = "/obj/item/seeds/ambrosiavulgaris"
@@ -833,7 +833,7 @@
reagents.add_reagent("nutriment", 1)
reagents.add_reagent("amatoxin", 3+round(potency / 3, 1))
reagents.add_reagent("psilocybin", 1+round(potency / 25, 1))
- bitesize = 1+round(reagents.total_volume / 2, 1)
+ bitesize = reagents.total_volume
/obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/amanita/attackby(var/obj/item/O as obj, var/mob/user as mob)
. = ..()
@@ -854,7 +854,7 @@
reagents.add_reagent("nutriment", 1+round((potency / 50), 1))
reagents.add_reagent("amatoxin", 13+round(potency / 3, 1))
reagents.add_reagent("psilocybin", 1+round(potency / 25, 1))
- bitesize = 1+round(reagents.total_volume / 2, 1)
+ bitesize = reagents.total_volume
/obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/angel/attackby(var/obj/item/O as obj, var/mob/user as mob)
. = ..()
diff --git a/code/modules/reagents/reagent_dispenser.dm b/code/modules/reagents/reagent_dispenser.dm
index fe6e1dd0..70908cfe 100644
--- a/code/modules/reagents/reagent_dispenser.dm
+++ b/code/modules/reagents/reagent_dispenser.dm
@@ -122,6 +122,7 @@
modded = modded ? 0 : 1
if (modded)
message_admins("[key_name_admin(user)] opened fueltank at ([loc.x],[loc.y],[loc.z]) - JMP.")
+ message_mods("[key_name_admin(user)] opened fueltank at ([loc.x],[loc.y],[loc.z]) - JMP.")
leak_fuel(amount_per_transfer_from_this)
if (istype(W,/obj/item/device/assembly_holder))
if (rig)
@@ -134,6 +135,7 @@
var/obj/item/device/assembly_holder/H = W
if (istype(H.a_left,/obj/item/device/assembly/igniter) || istype(H.a_right,/obj/item/device/assembly/igniter))
message_admins("[key_name_admin(user)] rigged fueltank at ([loc.x],[loc.y],[loc.z]) for explosion - JMP.")
+ message_mods("[key_name_admin(user)] rigged fueltank at ([loc.x],[loc.y],[loc.z]) for explosion - JMP.")
log_game("[key_name(user)] rigged fueltank at ([loc.x],[loc.y],[loc.z]) for explosion.")
rig = W
@@ -153,10 +155,12 @@
if(!src.defuse && user.client.holder)
src.defuse = 1
message_admins("[key_name_admin(user)] defused fueltank at ([loc.x],[loc.y],[loc.z]).")
+ message_mods("[key_name_admin(user)] defused fueltank at ([loc.x],[loc.y],[loc.z]).")
else
if(!src.armed && user.client.holder)
src.defuse = 0
message_admins("[key_name_admin(user)] reset fuse on fueltank at ([loc.x],[loc.y],[loc.z]).")
+ message_mods("[key_name_admin(user)] reset fuse on fueltank at ([loc.x],[loc.y],[loc.z]).")
/obj/structure/reagent_dispensers/fueltank/bullet_act(var/obj/item/projectile/Proj)
if(istype(Proj ,/obj/item/projectile/beam)||istype(Proj,/obj/item/projectile/bullet))
diff --git a/data/investigate/gravity.html b/data/investigate/gravity.html
index 510be218..2f2f7345 100644
--- a/data/investigate/gravity.html
+++ b/data/investigate/gravity.html
@@ -1,2 +1,2 @@
-20:24 [0x20077ee] (92,152,1) || the gravitational generator has regained power.
-20:24 [0x20077ee] (92,152,1) || the gravitational generator is now charging.
+13:13 [0x20077c6] (92,152,1) || the gravitational generator has regained power.
+13:13 [0x20077c6] (92,152,1) || the gravitational generator is now charging.
diff --git a/html/changelog.html b/html/changelog.html
index 1eb93bb8..c79977ed 100644
--- a/html/changelog.html
+++ b/html/changelog.html
@@ -56,6 +56,65 @@ should be listed in the changelog upon commit though. Thanks. -->
+
+
23 September 2014
+
SoundScopes updated:
+
+ - Forensics
+ - Forensics - Microscope
+ - Forensics - DNA Analyzer
+ - Forensics - Luminol and luminol reactions
+ - Forensics - Crime scene kit
+ - Forensics - Swab kits
+ - Forensics - Detective must now collate case files by himself + run partial prints without the system doing it for them
+ - Forensics - Luminol goggles (fluff item(does nothing))
+ - Forensics - Gunshot Residue
+ - Admin - Area make sound
+ - Admin - Mod Logs similar to admin logs for better modding abillitys
+ - All staff get a message if a chat channel is muted when they login
+ - New Medicines
+ - Chemicals - Philodexphil
+ - Chemicals - Ecyeipate
+ - Wheelchairs
+ - Cargo can order encryption keys for headsets (secure access crates)
+ - Cargo can order Swab kits
+ - Blood is now only completely cleanable by a mop
+ - Custom Loadout - Berets
+ - Custom Loadout - Universal Recorder
+ - Custom Loadout - Camera
+ - Custom Loadout - Clipboard
+ - Custom Loadout - Briefcase
+ - Custom Loadout - Zippo lighter
+ - Custom Loadout - Flask
+ - Custom Loadout - Red and Blue pens
+ - Telescopic baton knockdown adjusted
+ - Poisonous plants you'll now eat in a single bite
+ - Death nettles buffed significantly
+ - Vampire - Hypnotize now a free power with increased cooldown time
+ - Vampire - Vampjaunt brought back down to thirty
+ - Vampire - Holy water ignites and burns vamps
+ - Vampire - Health and Damage lowered on bats
+ - Table laserblocking chance increased significantly
+ - All energy weapons made more accurate.
+ - AI's can only message centcom every 10 minutes.
+ - Hulks no longer talk in all capitals
+ - Laserpointer permablinding severely nerfed
+ - Pulse Rifle unwielded firedelay to match other weapons delays
+ - Built turrets start unlocked
+ - Turrets now fire electrode/high like all other tasing implements
+ - Robotics fabricator access changed to general research access
+ - Shotgun shell crate changed-- doubled cost. Contains several shellboxes: slugs, incendiaries, blanks.
+ - Turret placement in the AI core won't kill the AI now
+ - Tajaran & Unathi Medical Hardsuit Helmet actually go on their head
+ - IPC's can't be vamps or changelings (Actual fix)
+ - Vampires added to one click antags
+ - Tcomms runtime fix. NOTE: Rest of Tcomms does not actually work
+ - Fixes pulse rifle firedelay (Its firedelay used to be 24, so its unwielded firedelay was like a million)
+ - New hairstyles
+
+
+
+
6 September 2014
SoundScopes updated:
diff --git a/icons/obj/objects.dmi b/icons/obj/objects.dmi
index 0d8fba24..fd693889 100644
Binary files a/icons/obj/objects.dmi and b/icons/obj/objects.dmi differ