Should be up to date now.

This commit is contained in:
CosmicScientist
2015-04-11 14:39:37 +01:00
323 changed files with 7045 additions and 4000 deletions
+2 -13
View File
@@ -34,9 +34,7 @@
name = "body bag"
desc = "A plastic bag designed for the storage and transportation of cadavers."
icon = 'icons/obj/bodybag.dmi'
icon_state = "bodybag_closed"
icon_closed = "bodybag_closed"
icon_opened = "bodybag_open"
icon_state = "bodybag"
var/foldedbag_path = /obj/item/bodybag
density = 0
mob_storage_capacity = 2
@@ -84,13 +82,6 @@
qdel(src)
/obj/structure/closet/body_bag/update_icon()
if(!opened)
icon_state = icon_closed
else
icon_state = icon_opened
// Bluespace bodybag
/obj/item/bodybag/bluespace
@@ -105,9 +96,7 @@
name = "bluespace body bag"
desc = "A bluespace body bag designed for the storage and transportation of cadavers."
icon = 'icons/obj/bodybag.dmi'
icon_state = "bluebodybag_closed"
icon_closed = "bluebodybag_closed"
icon_opened = "bluebodybag_open"
icon_state = "bluebodybag"
foldedbag_path = /obj/item/bodybag/bluespace
density = 0
mob_storage_capacity = 15
+1
View File
@@ -125,6 +125,7 @@
C.confused = max(C.confused, 3)
C.Weaken(3)
C.lip_style = "spray_face"
C.lip_color = colour
C.update_body()
playsound(user.loc, 'sound/effects/spray.ogg', 5, 1, 5)
..()
+10 -6
View File
@@ -17,12 +17,11 @@
if(user.client.prefs.muted & MUTE_IC)
src << "<span class='warning'>You cannot speak in IC (muted).</span>"
return
if(!ishuman(user))
user << "<span class='warning'>You don't know how to use this!</span>"
return
if(user.can_speak())
user << "<span class='warning'>You find yourself unable to speak at all.</span>"
return
if(spamcheck > world.time)
user << "<span class='warning'>\The [src] needs to recharge!</span>"
return
@@ -30,16 +29,21 @@
var/message = copytext(sanitize(input(user, "Shout a message?", "Megaphone", null) as text),1,MAX_MESSAGE_LEN)
if(!message)
return
message = capitalize(message)
if(!user.can_speak(message))
user << "<span class='warning'>You find yourself unable to speak at all.</span>"
return
if ((src.loc == user && user.stat == 0))
if(emagged)
if(insults)
user.audible_message("<B>[user]</B> broadcasts, <FONT size=3>\"[pick(insultmsg)]\"</FONT>", null, 1) // 2 stands for hearable message
user.audible_message("<B>[user]</B> broadcasts, <FONT size=3>\"[pick(insultmsg)]\"</FONT>")
insults--
else
user << "<span class='warning'>*BZZZZzzzzzt*</span>"
else
user.audible_message("<B>[user]</B> broadcasts, <FONT size=3>\"[message]\"</FONT>", null, 1) // 2 stands for hearable message
user.audible_message("<B>[user]</B> broadcasts, <FONT size=3>\"[message]\"</FONT>")
playsound(loc, 'sound/items/megaphone.ogg', 100, 0, 1)
spamcheck = world.time + 50
@@ -60,4 +64,4 @@
/obj/item/device/megaphone/cargo
name = "supply megaphone"
icon_state = "megaphone-cargo"
icon_state = "megaphone-cargo"
@@ -0,0 +1,101 @@
/obj/item/device/pizza_bomb
name = "pizza box"
desc = "A box suited for pizzas."
icon = 'icons/obj/food/containers.dmi'
icon_state = "pizzabox1"
var/timer = 10 //Adjustable timer
var/timer_set = 0
var/primed = 0
var/disarmed = 0
var/wires = list("orange", "green", "blue", "yellow", "aqua", "purple")
var/correct_wire
var/armer //Used for admin purposes
/obj/item/device/pizza_bomb/attack_self(mob/user)
if(disarmed)
user << "<span class='notice'>\The [src] is disarmed.</span>"
return
if(!timer_set)
name = "pizza bomb"
desc = "It seems inactive."
icon_state = "pizzabox_bomb"
timer_set = 1
timer = (input(user, "Set a timer, from one second to ten seconds.", "Timer", "[timer]") as num) * 10
if(!user.canUseTopic(src))
timer_set = 0
name = "pizza box"
desc = "A box suited for pizzas."
icon_state = "pizzabox1"
return
timer = Clamp(timer, 10, 100)
icon_state = "pizzabox1"
user << "<span class='notice'>You set the timer to [timer / 10] before activating the payload and closing \the [src]."
message_admins("[key_name(usr)]<A HREF='?_src_=holder;adminmoreinfo=\ref[usr]'>?</A> has set a timer on a pizza bomb to [timer/10] seconds at <A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[loc.x];Y=[loc.y];Z=[loc.z]'>(JMP)</a>.")
log_game("[key_name(usr)] has set the timer on a pizza bomb to [timer/10] seconds ([loc.x],[loc.y],[loc.z]).")
armer = usr
name = "pizza box"
desc = "A box suited for pizzas."
return
if(!primed)
name = "pizza bomb"
desc = "OH GOD THAT'S NOT A PIZZA"
icon_state = "pizzabox_bomb"
audible_message("<span class='warning'>\icon[src] *beep* *beep*</span>")
user << "<span class='danger'>That's no pizza! That's a bomb!</span>"
message_admins("[key_name(usr)]<A HREF='?_src_=holder;adminmoreinfo=\ref[usr]'>?</A> has triggered a pizza bomb armed by [armer] at <A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[loc.x];Y=[loc.y];Z=[loc.z]'>(JMP)</a>.")
log_game("[key_name(usr)] has triggered a pizza bomb armed by [armer] ([loc.x],[loc.y],[loc.z]).")
primed = 1
sleep(timer)
return go_boom()
/obj/item/device/pizza_bomb/proc/go_boom()
if(disarmed)
visible_message("<span class='danger'>\icon[src] Sparks briefly jump out of the [correct_wire] wire on \the [src], but it's disarmed!")
return
src.audible_message("\icon[src] <b>[src]</b> beeps, \"Enjoy the pizza!\"")
src.visible_message("<span class='userdanger'>\The [src] violently explodes!</span>")
explosion(src.loc,1,2,4,flame_range = 2) //Identical to a minibomb
qdel(src)
/obj/item/device/pizza_bomb/attackby(var/obj/item/I, var/mob/user, params)
if(istype(I, /obj/item/weapon/wirecutters) && primed)
user << "<span class='danger'>Oh God, what wire do you cut?!</span>"
var/chosen_wire = input(user, "OH GOD OH GOD", "WHAT WIRE?!") in wires
if(!user.canUseTopic(src))
return
playsound(src, 'sound/items/Wirecutter.ogg', 50, 1, 1)
user.visible_message("<span class='warning'>[user] cuts the [chosen_wire] wire!</span>", "<span class='danger'>You cut the [chosen_wire] wire!</span>")
sleep(5)
if(chosen_wire == correct_wire)
src.audible_message("<span class='warning'>\icon[src] \The [src] suddenly stops beeping and seems lifeless.</span>")
user << "<span class='notice'>You did it!</span>"
icon_state = "pizzabox_bomb_[correct_wire]"
name = "pizza bomb"
desc = "A devious contraption, made of a small explosive payload hooked up to pressure-sensitive wires. It's disarmed."
disarmed = 1
primed = 0
return
else
user << "<span class='userdanger'>WRONG WIRE!</span>"
go_boom()
return
if(istype(I, /obj/item/weapon/wirecutters) && disarmed)
if(!in_range(user, src))
user << "<span class='warning'>You can't see the box well enough to cut the wires out.</span>"
return
user.visible_message("<span class='notice'>[user] starts removing the payload and wires from \the [src].</span>")
if(do_after(user, 40))
playsound(src, 'sound/items/Wirecutter.ogg', 50, 1, 1)
user.unEquip(src)
user.visible_message("<span class='notice'>[user] removes the insides of \the [src]!</span>")
var/obj/item/stack/cable_coil/C = new /obj/item/stack/cable_coil(src.loc)
C.amount = 3
new /obj/item/weapon/bombcore/miniature(src.loc)
new /obj/item/pizzabox(src.loc)
qdel(src)
return
..()
/obj/item/device/pizza_bomb/New()
..()
correct_wire = pick(wires)
+13 -6
View File
@@ -14,8 +14,9 @@
colour = "purple"
/obj/item/weapon/lipstick/jade
//It's still called Jade, but theres no HTML color for jade, so we use lime.
name = "jade lipstick"
colour = "jade"
colour = "lime"
/obj/item/weapon/lipstick/black
name = "black lipstick"
@@ -26,17 +27,21 @@
name = "lipstick"
/obj/item/weapon/lipstick/random/New()
colour = pick("red","purple","jade","black")
colour = pick("red","purple","lime","black","green","blue","white")
name = "[colour] lipstick"
/obj/item/weapon/lipstick/attack_self(mob/user)
overlays.Cut()
user << "<span class='notice'>You twist \the [src] [open ? "closed" : "open"].</span>"
open = !open
if(open)
icon_state = "[initial(icon_state)]_[colour]"
var/image/colored = image("icon"='icons/obj/items.dmi', "icon_state"="lipstick_uncap_color")
colored.color = colour
icon_state = "lipstick_uncap"
overlays += colored
else
icon_state = initial(icon_state)
icon_state = "lipstick"
/obj/item/weapon/lipstick/attack(mob/M, mob/user)
if(!open) return
@@ -51,7 +56,8 @@
if(H == user)
user.visible_message("<span class='notice'>[user] does their lips with \the [src].</span>", \
"<span class='notice'>You take a moment to apply \the [src]. Perfect!</span>")
H.lip_style = colour
H.lip_style = "lipstick"
H.lip_color = colour
H.update_body()
else
user.visible_message("<span class='warning'>[user] begins to do [H]'s lips with \the [src].</span>", \
@@ -59,7 +65,8 @@
if(do_after(user, 20) && do_after(H, 20, 5, 0)) //user needs to keep their active hand, H does not.
user.visible_message("<span class='notice'>[user] does [H]'s lips with \the [src].</span>", \
"<span class='notice'>You apply \the [src].</span>")
H.lip_style = colour
H.lip_style = "lipstick"
H.lip_color = colour
H.update_body()
else
user << "<span class='notice'>Where are the lips on that?</span>"
+30 -23
View File
@@ -1,3 +1,7 @@
/obj/item/weapon/restraints
var/breakouttime = 600
//Handcuffs
/obj/item/weapon/restraints/handcuffs
@@ -14,7 +18,7 @@
throw_range = 5
m_amt = 500
origin_tech = "materials=1"
var/breakouttime = 600 //Deciseconds = 60s = 1 minute
breakouttime = 600 //Deciseconds = 60s = 1 minute
var/cuffsound = 'sound/weapons/handcuffs.ogg'
var/trashtype = null //for disposable cuffs
@@ -144,7 +148,7 @@
w_class = 3.0
origin_tech = "materials=1"
slowdown = 7
var/breakouttime = 300 //Deciseconds = 30s = 0.5 minute
breakouttime = 300 //Deciseconds = 30s = 0.5 minute
/obj/item/weapon/restraints/legcuffs/beartrap
name = "bear trap"
@@ -169,26 +173,29 @@
/obj/item/weapon/restraints/legcuffs/beartrap/Crossed(AM as mob|obj)
if(armed && isturf(src.loc))
if( (iscarbon(AM) || isanimal(AM)) && !istype(AM, /mob/living/simple_animal/parrot) && !istype(AM, /mob/living/simple_animal/construct) && !istype(AM, /mob/living/simple_animal/shade) && !istype(AM, /mob/living/simple_animal/hostile/viscerator))
if(isliving(AM))
var/mob/living/L = AM
armed = 0
icon_state = "beartrap0"
playsound(src.loc, 'sound/effects/snap.ogg', 50, 1)
L.visible_message("<span class='danger'>[L] triggers \the [src].</span>", \
"<span class='userdanger'>You trigger \the [src]!</span>")
if(ishuman(AM))
var/mob/living/carbon/H = AM
if(H.lying)
H.apply_damage(20,BRUTE,"chest")
else
H.apply_damage(20,BRUTE,(pick("l_leg", "r_leg")))
if(!H.legcuffed) //beartrap can't cuff you leg if there's already a beartrap or legcuffs.
H.legcuffed = src
src.loc = H
H.update_inv_legcuffed(0)
feedback_add_details("handcuffs","B") //Yes, I know they're legcuffs. Don't change this, no need for an extra variable. The "B" is used to tell them apart.
else
L.apply_damage(20,BRUTE)
var/snap = 0
var/def_zone = "chest"
if(iscarbon(L))
var/mob/living/carbon/C = L
snap = 1
if(!C.lying)
def_zone = pick("l_leg", "r_leg")
if(!C.legcuffed) //beartrap can't cuff your leg if there's already a beartrap or legcuffs.
C.legcuffed = src
src.loc = C
C.update_inv_legcuffed(0)
feedback_add_details("handcuffs","B") //Yes, I know they're legcuffs. Don't change this, no need for an extra variable. The "B" is used to tell them apart.
else if(isanimal(L))
var/mob/living/simple_animal/SA = L
if(!SA.flying && SA.mob_size > MOB_SIZE_TINY)
snap = 1
if(snap)
armed = 0
icon_state = "beartrap0"
playsound(src.loc, 'sound/effects/snap.ogg', 50, 1)
L.visible_message("<span class='danger'>[L] triggers \the [src].</span>", \
"<span class='userdanger'>You trigger \the [src]!</span>")
L.apply_damage(20,BRUTE, def_zone)
..()
+2 -1
View File
@@ -686,7 +686,8 @@
All doughs can be microwaved.<br>
<b>Bowl:</b> Add water to it for soup preparation.<br>
<b>Meat:</b> Microwave it, process it, slice it into microwavable cutlets with your knife, or use it raw.<br>
<b>Cheese:</b> Add 5u universal enzyme (catalyst) to milk and soy milk to prepare cheese (sliceable) and tofu.
<b>Cheese:</b> Add 5u universal enzyme (catalyst) to milk and soy milk to prepare cheese (sliceable) and tofu.<br>
<b>Rice:</b> Mix 10u rice with 10u water in a bowl then microwave it.
<h2>Custom food:</h2>
Add ingredients to a base item to prepare a custom meal.<br>
+8 -5
View File
@@ -7,6 +7,7 @@
attack_verb = list("bashed","smacked")
var/label = ""
var/last_wave = 0
/obj/item/weapon/picket_sign/attackby(obj/item/weapon/W, mob/user, params)
if(istype(W, /obj/item/weapon/pen) || istype(W, /obj/item/toy/crayon))
@@ -18,11 +19,13 @@
..()
/obj/item/weapon/picket_sign/attack_self(mob/living/carbon/human/user)
if(label)
user.visible_message("<span class='warning'>[user] waves around \the \"[label]\" sign.</span>")
else
user.visible_message("<span class='warning'>[user] waves around blank sign.</span>")
user.changeNext_move(CLICK_CD_MELEE)
if( last_wave + 20 < world.time )
last_wave = world.time
if(label)
user.visible_message("<span class='warning'>[user] waves around \the \"[label]\" sign.</span>")
else
user.visible_message("<span class='warning'>[user] waves around blank sign.</span>")
user.changeNext_move(CLICK_CD_MELEE)
/datum/table_recipe/picket_sign
name = "Picket Sign"
@@ -43,6 +43,9 @@
/obj/item/weapon/storage/backpack/holding/handle_item_insertion(obj/item/W, prevent_warning = 0, mob/user)
if(istype(W, /obj/item/weapon/storage/backpack/holding) && !W.crit_fail)
var/safety = alert(user, "You feel this may not be the best idea.", "Put in [name]?", "Proceed", "Abort")
if(safety == "Abort" || !in_range(src, user) || !src || !W)
return
investigate_log("has become a singularity. Caused by [user.key]","singulo")
user << "<span class='danger'>The Bluespace interfaces of the two devices catastrophically malfunction!</span>"
qdel(W)
@@ -286,7 +286,7 @@
*/
/obj/item/weapon/storage/bag/tray
name = "tray"
icon = 'icons/obj/food.dmi'
icon = 'icons/obj/food/containers.dmi'
icon_state = "tray"
desc = "A metal tray to lay food on."
force = 5
@@ -350,7 +350,7 @@
/obj/item/weapon/storage/box/monkeycubes
name = "monkey cube box"
desc = "Drymate brand monkey cubes. Just add water!"
icon = 'icons/obj/food.dmi'
icon = 'icons/obj/food/food.dmi'
icon_state = "monkeycubebox"
storage_slots = 7
can_hold = list(/obj/item/weapon/reagent_containers/food/snacks/monkeycube)
@@ -15,7 +15,7 @@
*/
/obj/item/weapon/storage/fancy/
icon = 'icons/obj/food.dmi'
icon = 'icons/obj/food/containers.dmi'
icon_state = "donutbox6"
name = "donut box"
var/icon_type = "donut"
@@ -39,7 +39,7 @@
*/
/obj/item/weapon/storage/fancy/donut_box
icon = 'icons/obj/food.dmi'
icon = 'icons/obj/food/containers.dmi'
icon_state = "donutbox6"
icon_type = "donut"
name = "donut box"
@@ -58,7 +58,7 @@
*/
/obj/item/weapon/storage/fancy/egg_box
icon = 'icons/obj/food.dmi'
icon = 'icons/obj/food/containers.dmi'
icon_state = "eggbox"
icon_type = "egg"
name = "egg box"
+1 -19
View File
@@ -13,7 +13,6 @@
var/status = 0
var/obj/item/weapon/stock_parts/cell/high/bcell = null
var/hitcost = 1000
var/losspertick = 5
/obj/item/weapon/melee/baton/suicide_act(mob/user)
user.visible_message("<span class='suicide'>[user] is putting the live [name] in \his mouth! It looks like \he's trying to commit suicide.</span>")
@@ -45,24 +44,8 @@
else
return 0
/obj/item/weapon/melee/baton/proc/update_process()
if(status)
SSobj.processing |= src
else
SSobj.processing.Remove(src)
/obj/item/weapon/melee/baton/process()
if(bcell)
if(bcell.charge < hitcost)
status = 0
update_icon()
if(status)
if(isrobot(loc))
var/mob/living/silicon/robot/R = loc
if(R && R.cell)
R.cell.use(losspertick)
else
bcell.use(losspertick)
/obj/item/weapon/melee/baton/update_icon()
if(status)
@@ -71,7 +54,6 @@
icon_state = "[initial(name)]_nocell"
else
icon_state = "[initial(name)]"
update_process()
/obj/item/weapon/melee/baton/examine(mob/user)
..()
@@ -102,7 +102,7 @@
<b>Tank</b><BR>
<FONT color='blue'><b>Tank Pressure:</b> [air_contents.return_pressure()]</FONT><BR>
<BR>
<b>Mask Release Pressure:</b> <A href='?src=\ref[src];dist_p=-10'>-</A> <A href='?src=\ref[src];dist_p=-1'>-</A> [distribute_pressure] <A href='?src=\ref[src];dist_p=1'>+</A> <A href='?src=\ref[src];dist_p=10'>+</A><BR>
<b>Mask Release Pressure:</b> <A href='?src=\ref[src];dist_p=-5'>-</A> <A href='?src=\ref[src];dist_p=-1'>-</A> [distribute_pressure] <A href='?src=\ref[src];dist_p=1'>+</A> <A href='?src=\ref[src];dist_p=5'>+</A><BR>
<b>Mask Release Valve:</b> <A href='?src=\ref[src];stat=1'>[using_internal?("Open"):("Closed")]</A>
"}
user << browse(message, "window=tank;size=600x300")
+1 -1
View File
@@ -138,7 +138,7 @@ obj/item/weapon/wirerod/attackby(var/obj/item/I, mob/user as mob, params)
icon_state = "throwingstar"
item_state = "eshield0"
force = 2
throwforce = 0 //This is never used since this has a 100% embed chance.
throwforce = 20 //This is never used on mobs since this has a 100% embed chance.
throw_speed = 4
embedded_pain_multiplier = 4
w_class = 2