diff --git a/code/defines/obj/clothing/mask.dm b/code/defines/obj/clothing/mask.dm
index b17a44ea2c7a6..c6b45b5d23e0d 100644
--- a/code/defines/obj/clothing/mask.dm
+++ b/code/defines/obj/clothing/mask.dm
@@ -1,4 +1,6 @@
// MASK WAS THAT MOVIE WITH THAT GUY WITH THE MESSED UP FACE. WHAT'S HIS NAME . . . JIM CARREY, I THINK.
+//why is this up here -Pete
+//also: please someone make this less terrible, why are things that work with internals not all under one parent, why why why why why whyyyyyyyyyyyyyyy
/obj/item/clothing/mask
name = "mask"
@@ -12,24 +14,20 @@
name = "breath mask"
icon_state = "breath"
item_state = "breath"
- flags = FPRINT | TABLEPASS | SUITSPACE | HEADSPACE | MASKCOVERSMOUTH | HALFMASK
+ flags = FPRINT | TABLEPASS | SUITSPACE | HEADSPACE | MASKCOVERSMOUTH
w_class = 2
protective_temperature = 420
heat_transfer_coefficient = 0.90
gas_transfer_coefficient = 0.10
permeability_coefficient = 0.50
-/obj/item/clothing/mask/medical
+/obj/item/clothing/mask/breath/medical
desc = "A close-fitting sterile mask that can be connected to an air supply."
name = "medical mask"
icon_state = "medical"
item_state = "medical"
- flags = FPRINT|TABLEPASS|SUITSPACE|HEADSPACE|MASKCOVERSMOUTH
- w_class = 3
- protective_temperature = 420
- gas_transfer_coefficient = 0.10
- permeability_coefficient = 0.10
+//WHY DOES THIS EXIST
/obj/item/clothing/mask/spiderman
desc = "A mask of Deadpool!"
name = "\improper Deadpool mask"
@@ -61,14 +59,15 @@
permeability_coefficient = 0.05
armor = list(melee = 0, bullet = 0, laser = 2,energy = 2, bomb = 0, bio = 75, rad = 0)
+//This now uses the alt sprites, like the emergency gasmask. -Pete
/obj/item/clothing/mask/gas
name = "gas mask"
desc = "A face-covering mask that can be connected to an air supply."
- icon_state = "gas_mask"
+ icon_state = "gas_alt"
flags = FPRINT|TABLEPASS|SUITSPACE|MASKCOVERSMOUTH|MASKCOVERSEYES
w_class = 3.0
see_face = 0.0
- item_state = "gas_mask"
+ item_state = "gas_alt"
protective_temperature = 500
heat_transfer_coefficient = 0.01
gas_transfer_coefficient = 0.01
@@ -80,13 +79,13 @@
icon_state = "plaguedoctor"
item_state = "gas_mask"
armor = list(melee = 0, bullet = 0, laser = 2,energy = 2, bomb = 0, bio = 75, rad = 0)
-
+/*
/obj/item/clothing/mask/gas/emergency
name = "emergency gas mask"
desc = "A face-covering mask that can be connected to an air supply. For use in emergencies."
icon_state = "gas_alt"
item_state = "gas_alt"
-
+*/
/obj/item/clothing/mask/gas/swat
name = "\improper SWAT mask"
desc = "A close-fitting tactical mask that can be connected to an air supply."
@@ -100,7 +99,6 @@
/obj/item/clothing/mask/gas/voice
name = "gas mask"
//desc = "A face-covering mask that can be connected to an air supply. It seems to house some odd electronics."
- icon_state = "gas_mask"
var/mode = 0// 0==Scouter | 1==Night Vision | 2==Thermal | 3==Meson
var/voice = "Unknown"
var/vchange = 0//This didn't do anything before. It now checks if the mask has special functions/N
@@ -143,6 +141,7 @@
icon_state = "sexymime"
item_state = "sexymime"
+//WHY IS THIS A GASMASK
/obj/item/clothing/mask/gas/fakemoustache
name = "fake moustache"
desc = "Warning: moustache is fake."
diff --git a/code/game/gamemodes/wizard/rightandwrong.dm b/code/game/gamemodes/wizard/rightandwrong.dm
index ac4f4b32e4033..2d72f5c452fce 100644
--- a/code/game/gamemodes/wizard/rightandwrong.dm
+++ b/code/game/gamemodes/wizard/rightandwrong.dm
@@ -44,7 +44,7 @@
if("cannon")
new /obj/item/weapon/gun/energy/lasercannon(get_turf(H))
if("shotgun")
- new /obj/item/weapon/gun/projectile/shotgun/combat(get_turf(H))
+ new /obj/item/weapon/gun/projectile/shotgun/pump/combat(get_turf(H))
if("freeze")
new /obj/item/weapon/gun/energy/temperature(get_turf(H))
if("uzi")
diff --git a/code/game/jobs/job/security.dm b/code/game/jobs/job/security.dm
index ded3875298af1..981d0bb563db8 100644
--- a/code/game/jobs/job/security.dm
+++ b/code/game/jobs/job/security.dm
@@ -21,7 +21,7 @@
H.equip_if_possible(new /obj/item/clothing/suit/armor/hos(H), H.slot_wear_suit)
H.equip_if_possible(new /obj/item/clothing/gloves/black(H), H.slot_gloves)
H.equip_if_possible(new /obj/item/clothing/head/helmet/HoS(H), H.slot_head)
- H.equip_if_possible(new /obj/item/clothing/mask/gas/emergency(H), H.slot_wear_mask)
+ H.equip_if_possible(new /obj/item/clothing/mask/gas(H), H.slot_wear_mask)
H.equip_if_possible(new /obj/item/clothing/glasses/sunglasses/sechud(H), H.slot_glasses)
H.equip_if_possible(new /obj/item/weapon/gun/energy/gun(H), H.slot_s_store)
if(H.backbag == 1)
@@ -60,7 +60,7 @@
H.equip_if_possible(new /obj/item/clothing/head/helmet/warden(H), H.slot_head)
H.equip_if_possible(new /obj/item/clothing/gloves/black(H), H.slot_gloves)
H.equip_if_possible(new /obj/item/clothing/glasses/sunglasses/sechud(H), H.slot_glasses)
- H.equip_if_possible(new /obj/item/clothing/mask/gas/emergency(H), H.slot_wear_mask)
+ H.equip_if_possible(new /obj/item/clothing/mask/gas(H), H.slot_wear_mask)
H.equip_if_possible(new /obj/item/device/flash(H), H.slot_l_store)
if(H.backbag == 1)
H.equip_if_possible(new /obj/item/weapon/storage/box/survival(H), H.slot_r_hand)
diff --git a/code/game/objects/closets/secure/medical.dm b/code/game/objects/closets/secure/medical.dm
index 5324f278ad9a3..6f011ca15d8fe 100644
--- a/code/game/objects/closets/secure/medical.dm
+++ b/code/game/objects/closets/secure/medical.dm
@@ -44,9 +44,9 @@
new /obj/item/weapon/tank/anesthetic(src)
new /obj/item/weapon/tank/anesthetic(src)
new /obj/item/weapon/tank/anesthetic(src)
- new /obj/item/clothing/mask/medical(src)
- new /obj/item/clothing/mask/medical(src)
- new /obj/item/clothing/mask/medical(src)
+ new /obj/item/clothing/mask/breath/medical(src)
+ new /obj/item/clothing/mask/breath/medical(src)
+ new /obj/item/clothing/mask/breath/medical(src)
return
diff --git a/code/modules/mob/living/silicon/ai/ai.dm b/code/modules/mob/living/silicon/ai/ai.dm
index 76b2fc084932f..90bd7568d7129 100644
--- a/code/modules/mob/living/silicon/ai/ai.dm
+++ b/code/modules/mob/living/silicon/ai/ai.dm
@@ -453,7 +453,7 @@
malf_picker.use(src)
-//I am the icon meister. Bow fefore me.
+//I am the icon meister. Bow fefore me. //>fefore
/mob/living/silicon/ai/proc/ai_hologram_change()
set name = "Change Hologram"
set desc = "Change the default hologram available to AI to something else."
diff --git a/code/modules/paperwork/folders.dm b/code/modules/paperwork/folders.dm
index 3d4915300337f..0f4fba2aff29c 100644
--- a/code/modules/paperwork/folders.dm
+++ b/code/modules/paperwork/folders.dm
@@ -29,7 +29,7 @@
return
/obj/item/weapon/folder/attackby(obj/item/weapon/W as obj, mob/user as mob)
- if(istype(W, /obj/item/weapon/paper))
+ if(istype(W, /obj/item/weapon/paper) || istype(W, /obj/item/weapon/photo))
user.drop_item()
W.loc = src
user << "\blue You put the [W] into the folder."
@@ -46,6 +46,8 @@
for(var/obj/item/weapon/paper/P in src)
dat += "Remove - [P.name]
"
+ for(var/obj/item/weapon/photo/Ph in src)
+ dat += "Remove - [Ph.name]
"
user << browse(dat, "window=folder")
onclose(user, "folder")
add_fingerprint(usr)
diff --git a/code/modules/projectiles/ammunition.dm b/code/modules/projectiles/ammunition.dm
index bf621d52ca0db..a8802a7f1a31a 100644
--- a/code/modules/projectiles/ammunition.dm
+++ b/code/modules/projectiles/ammunition.dm
@@ -50,5 +50,5 @@
update_icon()
if(multiple_sprites)
- icon_state = text("[initial(icon_state)]-[]", stored_ammo.len)
- desc = text("There are [] shell\s left!", stored_ammo.len)
+ icon_state = "[initial(icon_state)]-[stored_ammo.len]"
+ desc = "There are [stored_ammo.len] shell\s left!"
diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm
index 3916cc1623019..b22cf2eebb62a 100644
--- a/code/modules/projectiles/gun.dm
+++ b/code/modules/projectiles/gun.dm
@@ -19,6 +19,7 @@
caliber = ""
silenced = 0
recoil = 0
+ ejectshell = 1
proc
load_into_chamber()
diff --git a/code/modules/projectiles/guns/projectile.dm b/code/modules/projectiles/guns/projectile.dm
index b0843fe1c5a78..ab72471fe71e1 100644
--- a/code/modules/projectiles/guns/projectile.dm
+++ b/code/modules/projectiles/guns/projectile.dm
@@ -29,6 +29,7 @@
var/obj/item/ammo_casing/AC = loaded[1] //load next casing.
loaded -= AC //Remove casing from loaded list.
AC.loc = get_turf(src) //Eject casing onto ground.
+ AC.desc += " This one is spent." //descriptions are magic
if(AC.BB)
in_chamber = AC.BB //Load projectile into chamber.
@@ -63,13 +64,14 @@
loaded += AC
num_loaded++
if(num_loaded)
- user << text("\blue You load [] shell\s into the gun!", num_loaded)
+ user << "\blue You load [num_loaded] shell\s into the gun!"
A.update_icon()
update_icon()
return
- update_icon()
- desc = initial(desc) + text(" Has [] rounds remaining.", loaded.len)
+ examine()
+ ..()
+ usr << "Has [loaded.len] round\s remaining."
return
diff --git a/code/modules/projectiles/guns/projectile/shotgun.dm b/code/modules/projectiles/guns/projectile/shotgun.dm
index c334fb755d4b8..551c469f41148 100644
--- a/code/modules/projectiles/guns/projectile/shotgun.dm
+++ b/code/modules/projectiles/guns/projectile/shotgun.dm
@@ -1,13 +1,14 @@
-/obj/item/weapon/gun/projectile/shotgun
+/obj/item/weapon/gun/projectile/shotgun/pump
name = "shotgun"
desc = "Useful for sweeping alleys."
icon_state = "shotgun"
- max_shells = 2
+ item_state = "shotgun"
+ max_shells = 4
w_class = 4.0
force = 10
flags = FPRINT | TABLEPASS | CONDUCT | USEDELAY | ONBACK
caliber = "shotgun"
- origin_tech = "combat=3;materials=1"
+ origin_tech = "combat=4;materials=2"
ammo_type = "/obj/item/ammo_casing/shotgun/beanbag"
var
recentpump = 0 // to prevent spammage
@@ -29,7 +30,7 @@
return
- proc/pump(mob/M)
+ proc/pump(mob/M as mob)
playsound(M, 'shotgunpump.ogg', 60, 1)
pumped = 0
if(current_shell)//We have a shell in the chamber
@@ -43,20 +44,79 @@
current_shell = AC
if(AC.BB)
in_chamber = AC.BB //Load projectile into chamber.
+ update_icon() //I.E. fix the desc
return 1
-
-
-/obj/item/weapon/gun/projectile/shotgun/combat
+/obj/item/weapon/gun/projectile/shotgun/pump/combat
name = "combat shotgun"
icon_state = "cshotgun"
max_shells = 8
+ origin_tech = "combat=5;materials=2"
ammo_type = "/obj/item/ammo_casing/shotgun"
+//this is largely hacky and bad :( -Pete
+/obj/item/weapon/gun/projectile/shotgun/doublebarrel
+ name = "double-barreled shotgun"
+ desc = "A true classic."
+ icon_state = "dshotgun"
+ item_state = "shotgun"
+ max_shells = 2
+ w_class = 4.0
+ force = 10
+ flags = FPRINT | TABLEPASS | CONDUCT | USEDELAY | ONBACK
+ caliber = "shotgun"
+ origin_tech = "combat=3;materials=1"
+ ammo_type = "/obj/item/ammo_casing/shotgun/beanbag"
+
+ load_into_chamber()
+ if(!loaded.len) return 0
+ var/obj/item/ammo_casing/AC = loaded[1] //load next casing.
+ loaded -= AC //Remove casing from loaded list.
+ AC.desc += " This one is spent."
-/obj/item/weapon/gun/projectile/shotgun/combat2
- name = "security combat shotgun"
- icon_state = "cshotgun"
- max_shells = 4
+ if(AC.BB)
+ in_chamber = AC.BB //Load projectile into chamber.
+ AC.BB.loc = src //Set projectile loc to gun.
+ return 1
+ return 0
+
+ attack_self(mob/living/user as mob)
+ if(!(locate(/obj/item/ammo_casing/shotgun) in src) && !loaded.len)
+ user << "\The [src] is empty."
+ return
+
+ for(var/obj/item/ammo_casing/shotgun/shell in src) //This feels like a hack. //don't code at 3:30am kids!!
+ if(shell in loaded)
+ loaded -= shell
+ shell.loc = get_turf(src.loc)
+
+ user << "You break \the [src]."
+ update_icon()
+ attackby(var/obj/item/A as obj, mob/user as mob)
+ if(istype(A, /obj/item/ammo_casing) && !load_method)
+ var/obj/item/ammo_casing/AC = A
+ if(AC.caliber == caliber && (loaded.len < max_shells) && (contents.len < max_shells)) //forgive me father, for i have sinned
+ user.drop_item()
+ AC.loc = src
+ loaded += AC
+ user << "You load a shell into \the [src]!"
+ A.update_icon()
+ update_icon()
+ if(istype(A, /obj/item/weapon/circular_saw) || istype(A, /obj/item/weapon/melee/energy) || istype(A, /obj/item/weapon/pickaxe/plasmacutter))
+ user << "You begin to shorten the barrel of \the [src]."
+ if(loaded.len)
+ afterattack(user, user) //will this work?
+ playsound(user, fire_sound, 50, 1)
+ user.visible_message("The shotgun goes off!", "The shotgun goes off in your face!")
+ return
+ if(do_after(user, 30)) //SHIT IS STEALTHY EYYYYY
+ icon_state = "sawnshotgun"
+ w_class = 3.0
+ item_state = "gun"
+ flags &= ~ONBACK //you can't sling it on your back
+ flags |= ONBELT //but you can wear it on your belt (poorly concealed under a trenchcoat, ideally)
+ name = "sawn-off shotgun"
+ desc = "Omar's coming!"
+ user << "You shorten the barrel of \the [src]!"
\ No newline at end of file
diff --git a/code/modules/projectiles/projectile.dm b/code/modules/projectiles/projectile.dm
index 3e5d4e1c0d799..860527fa86157 100644
--- a/code/modules/projectiles/projectile.dm
+++ b/code/modules/projectiles/projectile.dm
@@ -76,12 +76,12 @@
else
M << "\red You've been shot!"
if(istype(firer, /mob))
- M.attack_log += text("\[[]\] []/[] shot []/[] with a []", time_stamp(), firer, firer.ckey, M, M.ckey, src)
- firer.attack_log += text("\[[]\] []/[] shot []/[] with a []", time_stamp(), firer, firer.ckey, M, M.ckey, src)
+ M.attack_log += "\[[time_stamp()]\] [firer]/[firer.ckey] shot [M]/[M.ckey] with a [src]"
+ firer.attack_log += "\[[time_stamp()]\] [firer]/[firer.ckey] shot [M]/[M.ckey] with a [src]"
log_attack("[firer] ([firer.ckey]) shot [M] ([M.ckey]) with a [src]")
else
- M.attack_log += text("\[[]\] UNKNOWN SUBJECT (No longer exists) shot []/[] with a []", time_stamp(), M, M.ckey, src)
+ M.attack_log += "\[[time_stamp()]\] UNKNOWN SUBJECT (No longer exists) shot [M]/[M.ckey] with a [src]"
log_attack("UNKNOWN shot [M] ([M.ckey]) with a [src]")
diff --git a/code/setup.dm b/code/setup.dm
index 8018baa09655f..e3f3d9a196187 100644
--- a/code/setup.dm
+++ b/code/setup.dm
@@ -101,7 +101,12 @@ var/MAX_EXPLOSION_RANGE = 14
//FLAGS BITMASK
#define ONBACK 1 // can be put in back slot
#define TABLEPASS 2 // can pass by a table or rack
-#define HALFMASK 4 // mask only gets 1/2 of air supply from internals
+
+/********************************************************************************
+* WOO WOO WOO THIS IS UNUSED WOO WOO WOO *
+* #define HALFMASK 4 // mask only gets 1/2 of air supply from internals *
+* WOO WOO WOO THIS IS UNUSED WOO WOO WOO *
+********************************************************************************/
#define HEADSPACE 4 // head wear protects against space
diff --git a/html/changelog.html b/html/changelog.html
index 2d2adf39be7ea..23f40033f72b8 100644
--- a/html/changelog.html
+++ b/html/changelog.html
@@ -94,16 +94,26 @@