Merge pull request #435 from skull132/master

Skull's Things, 07MAR2015
This commit is contained in:
skull132
2015-03-08 20:52:21 +02:00
24 changed files with 440 additions and 378 deletions
+4 -2
View File
@@ -142,7 +142,7 @@
//checks text for html tags
//if tag is not in whitelist (var/list/paper_tag_whitelist in global.dm)
//relpaces < with &lt;
proc/checkhtml(var/t)
proc/checkhtml(var/t, var/whitelist = paper_tag_whitelist)
t = sanitize_simple(t, list("&#"="."))
var/p = findtext(t,"<",1)
while (p) //going through all the tags
@@ -153,8 +153,10 @@ proc/checkhtml(var/t)
tag = copytext(t,start, p)
p++
tag = copytext(t,start+1, p)
if (!(tag in paper_tag_whitelist)) //if it's unkown tag, disarming it
if (!(tag in whitelist)) //if it's unkown tag, disarming it
t = copytext(t,1,start-1) + "&lt;" + copytext(t,start+1)
if(whitelist == signature_tag_whitelist)
return null
p = findtext(t,"<",p)
return t
/*
+6
View File
@@ -62,6 +62,10 @@ datum/mind
// the world.time since the mob has been brigged, or -1 if not at all
var/brigged_since = -1
// The custom signature holder
var/signature
var/signature_font
New(var/key)
src.key = key
@@ -1288,6 +1292,8 @@ datum/mind
else
world.log << "## DEBUG: mind_initialize(): No ticker ready yet! Please inform Carn"
if(!mind.name) mind.name = real_name
if(client.prefs.signature) mind.signature = client.prefs.signature
if(client.prefs.signature_font) mind.signature_font = client.prefs.signature_font
mind.current = src
//HUMAN
+2 -1
View File
@@ -193,7 +193,8 @@
/datum/game_mode/proc/remove_cultist(datum/mind/cult_mind, show_message = 1)
if(cult_mind in cult)
cult -= cult_mind
cult_mind.current << "\red <FONT size = 3><B>An unfamiliar white light flashes through your mind, cleansing the taint of the dark-one and the memories of your time as his servant with it.</B></FONT>"
cult_mind.current << "\red <B>An unfamiliar white light flashes through your mind, cleansing the taint of the dark-one and the memories of your time as his servant with it.</B>"
cult_mind.current << "\blue <b>OOC information:</b> Being removed from the clutches of Nar'sie would rip most memories of your service to him. <b>At most</b> you would remember one individual who assisted in converting you. Maybe not even that."
cult_mind.memory = ""
update_cult_icons_removed(cult_mind)
if(show_message)
+1 -1
View File
@@ -131,7 +131,7 @@ Stealthy and Inconspicuous Weapons;
/obj/item/weapon/pen/paralysis:3:Paralysis Pen;
/obj/item/weapon/soap/syndie:1:Syndicate Soap;
/obj/item/weapon/cartridge/syndicate:3:Detomatix PDA Cartridge;
/obj/item/weapon/storage/box/walkingcane:5:Disguised Sword;
/obj/item/weapon/cane/syndie:5:Disguised Sword;
Whitespace:Seperator;
Stealth and Camouflage Items;
/obj/item/weapon/storage/box/syndie_kit/masks:1:Disguised Breathe Mask;
+1 -1
View File
@@ -41,7 +41,7 @@
/obj/item/weapon/melee/baton/stunrod/loaded:4:Stunrod;
Whitespace:Seperator;
Stealthy and Inconspicuous Weapons;
/obj/item/weapon/storage/box/walkingcane:5:Disguised Sword;
/obj/item/weapon/cane/syndie:5:Disguised Sword;
/obj/item/weapon/pen/paralysis:3:Paralysis Pen;
/obj/item/weapon/soap/syndie:1:Syndicate Soap;
/obj/item/weapon/cartridge/syndicate:3:Detomatix PDA Cartridge;
+3 -3
View File
@@ -141,7 +141,7 @@ A list of items and costs is stored under the datum of every game mode, alongsid
if(uses > 4)
randomItems.Add("/obj/item/weapon/gun/energy/crossbow") //Energy Crossbow
randomItems.Add("/obj/item/device/powersink") //Powersink
randomItems.Add("/obj/item/weapon/storage/box/walkingcane")
randomItems.Add("/obj/item/weapon/cane/syndie")
if(uses > 3)
randomItems.Add("/obj/item/weapon/melee/energy/sword") //Energy Sword
@@ -196,7 +196,7 @@ A list of items and costs is stored under the datum of every game mode, alongsid
uses -= 7
if("/obj/item/weapon/gun/projectile")
uses -= 6
if("/obj/item/weapon/gun/energy/crossbow" , "/obj/item/device/powersink" , "/obj/item/weapon/storage/box/walkingcane")
if("/obj/item/weapon/gun/energy/crossbow" , "/obj/item/device/powersink" , "/obj/item/weapon/cane/syndie")
uses -= 5
if("/obj/item/weapon/melee/energy/sword" , "/obj/item/clothing/mask/gas/voice" , "/obj/item/device/chameleon" , "/obj/item/weapon/melee/baton/stunrod/loaded")
uses -= 4
@@ -270,7 +270,7 @@ A list of items and costs is stored under the datum of every game mode, alongsid
feedback_add_details("traitor_uplink_items_bought","SP")
if("/obj/item/weapon/storage/toolbox/syndicate")
feedback_add_details("traitor_uplink_items_bought","ST")
if("/obj/item/weapon/storage/box/walkingcane")
if("/obj/item/weapon/cane/syndie")
feedback_add_details("traitor_uplink_items_bought","WC")
if("/obj/item/weapon/storage/box/syndie_kit/masks_gas")
feedback_add_details("traitor_uplink_items_bought","GM")
+3
View File
@@ -52,6 +52,9 @@
liquidfood
name = "\improper \"LiquidFood\" ration"
icon_state = "liquidfood"
chocolatebox
name = "box of chocolates"
icon_state = "chocolatebox"
/obj/item/trash/attack(mob/M as mob, mob/living/user as mob)
return
@@ -517,26 +517,4 @@
for(var/i = 0; i < 14; i++)
new /obj/item/weapon/light/tube(src)
for(var/i = 0; i < 7; i++)
new /obj/item/weapon/light/bulb(src)
/obj/item/weapon/storage/box/walkingcane
name = "cane"
desc = "A cane used by a true gentlemen. Or a clown."
icon = 'icons/obj/weapons.dmi'
icon_state = "cane"
item_state = "stick"
flags = FPRINT | TABLEPASS| CONDUCT
force = 5.0
throwforce = 7.0
w_class = 2.0
matter = list("metal" = 50)
attack_verb = list("bludgeoned", "whacked", "disciplined", "thrashed")
can_hold = list(
"/obj/item/weapon/canesword")
storage_slots = 1
max_w_class = 4
max_combined_w_class = 4
New()
..()
new /obj/item/weapon/canesword(src)
new /obj/item/weapon/light/bulb(src)
+84 -26
View File
@@ -49,37 +49,40 @@
user.Paralyse(20)
return
if (M.stat !=2)
if((M.mind in ticker.mode.cult) && prob(33))
M << "\red The power of [src] clears your mind of the cult's influence!"
user << "\red You wave [src] over [M]'s head and see their eyes become clear, their mind returning to normal."
ticker.mode.remove_cultist(M.mind)
for(var/mob/O in viewers(M, null))
O.show_message(text("\red [] waves [] over []'s head.", user, src, M), 1)
/* else if(prob(10)) //Fail chance is kind of dumb for something so rarely used.
user << "\red The rod slips in your hand."
..()*/
else if(M.mind)
if(M.mind.vampire)
if(ishuman(M))
if(!(VAMP_FULL in M.mind.vampire.powers))
user << "\red The rod burns cold in your hand, filling you with grim determination. You feel the creature's power weaken."
M << "<span class='warning'>The nullrod's power interferes with your own! They are on to you!</span>"
M.mind.vampire.nullified = max(8, M.mind.vampire.nullified + 8)
if(M.stat !=2 && ishuman(M))
var/mob/living/K = M
if(K.mind in ticker.mode.cult)
if(K == user) //Because apparently Doomberg deconverted himself. Wtf.
return
user.visible_message("\blue [user] starts trying to captivate [K]'s attention with the [src].", "\blue You begin trying to shed light into [K]'s mind.")
K.take_overall_damage(0, 10)
if(do_after(user, 15))
K.visible_message("\red [user] waves the [src] over [K]'s head, [K]'s look captivated by it.", "\red [user] wave's the [src] over your head. <b>You see a foreign light, asking you to follow it. Its presence burns and blinds.</b>")
var/choice = alert(K,"Do you want to give up your goal?","Become cleansed","Resist","Give in")
switch(choice)
if("Resist")
K.visible_message("\red The gaze in [K]'s eyes remains determined.", "\blue You turn away from the light, remaining true to your dark lord. The light burns you due to rejection!")
K.say("*scream")
K.take_overall_damage(5, 15)
if("Give in")
K.visible_message("\blue [K]'s eyes become clearer, the evil gone, but not without leaving scars.")
K.take_overall_damage(15, 30) //Nur'sie ain't a kind host to turn away from. Suffer.
ticker.mode.remove_cultist(K.mind, 0)
else
user.visible_message("\red [user]'s concentration is broken!", "\red Your concentration is broken! You and your target need to stay uninterrupted for longer!")
return
else if(M.mind && M.mind.vampire)
if(!(VAMP_FULL in M.mind.vampire.powers))
user << "\red The rod burns cold in your hand, filling you with grim determination. You feel the creature's power weaken."
M << "<span class='warning'>The nullrod's power interferes with your own! They are on to you!</span>"
M.mind.vampire.nullified = max(8, M.mind.vampire.nullified + 8)
//..() Ported from readapted vamp null code. Original seen down there. This doesn't need to be here since it's in the loops now.
else
user << "\red The rod appears to do nothing."
for(var/mob/O in viewers(M, null))
O.show_message(text("\red [] waves [] over []'s head.", user, src, M), 1)
return
/* if(M.mind)
if(M.mind.vampire)
if(ishuman(M))
if(!(VAMP_FULL in M.mind.vampire.powers))
M << "<span class='warning'>The nullrod's power interferes with your own!</span>"
M.mind.vampire.nullified = max(5, M.mind.vampire.nullified + 2)
..()
*/
/obj/item/weapon/nullrod/afterattack(atom/A, mob/user as mob)
if (istype(A, /turf/simulated/floor))
user << "\blue You hit the floor with the [src]."
@@ -178,9 +181,64 @@
item_state = "canesword"
force = 20
throwforce = 10
w_class = 4 //there ain't no way in fuck you're shuving this inside your rucksack. No way.
w_class = 4 //there ain't no way in fuck you're shoving this inside your rucksack. No way.
attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut")
suicide_act(mob/user)
viewers(user) << "\red <b>[user] brings the blade up to \his throat, and in one rapid motion slits \his throat open!</b>"
return(BRUTELOSS)
//Using a modified cane, with a storage var, instead of a box. Because the box idea is meh, in terms of the interface.
/obj/item/weapon/cane/syndie
var/sword //For holding the blade
var/locked //A small lock, so that you can't accidentally unsheathe it
New()
sword = new /obj/item/weapon/canesword()
locked = 1
..()
proc/unsheathe(mob/user as mob)
if(sword)
user.put_in_hands(sword)
user.visible_message("[user] takes the handle and draws a sword from inside the [src].", "You take the [src] by the handle and draw out a sharp blade from it.")
sword = null
icon_state = "cane_empty"
update_icon()
proc/toggle_lock(mob/user as mob)
if(sword)
switch(locked)
if(1)
locked = 0
user << "You twist and unlock the sword handle from the [src]."
if(0)
locked = 1
user << "You twist and lock the sword handle to the [src]."
attack_self(mob/user as mob)
if(iscarbon(user))
toggle_lock(user)
attack_hand(mob/user as mob)
if(!locked)
unsheathe(user)
else
..()
attackby(obj/item/weapon/W as obj, mob/user as mob)
if(istype(W, /obj/item/weapon/canesword) && !sword)
user.u_equip(W)
W.loc = src
sword = W
W.dropped(user)
W.add_fingerprint(user)
add_fingerprint(user)
icon_state = "cane"
user << "You sheathe the sword, and lock its handle to the [src]."
locked = 1
update_icon()
/obj/item/weapon/metal_bat
desc = "The quality is a swing and a miss."
name = "Metal Bat"
+1
View File
@@ -37,6 +37,7 @@ var/list/paper_tag_whitelist = list("center","p","div","span","h1","h2","h3","h4
var/list/paper_blacklist = list("java","onblur","onchange","onclick","ondblclick","onfocus","onkeydown", \
"onkeypress","onkeyup","onload","onmousedown","onmousemove","onmouseout","onmouseover", \
"onmouseup","onreset","onselect","onsubmit","onunload")
var/list/signature_tag_whitelist = list("i","u","b","small","big")
var/BLINDBLOCK = 0
var/DEAFBLOCK = 0
+38 -1
View File
@@ -125,10 +125,14 @@ datum/preferences
var/uplinklocation = "PDA"
// OOC Metadata:
// OOC Metadata:
var/metadata = ""
var/slot_name = ""
//Signature information:
var/signature
var/signature_font
/datum/preferences/New(client/C)
b_type = pick(4;"O-", 36;"O+", 3;"A-", 28;"A+", 1;"B-", 20;"B+", 1;"AB-", 5;"AB+")
if(istype(C))
@@ -139,6 +143,8 @@ datum/preferences
return
gender = pick(MALE, FEMALE)
real_name = random_name(gender)
signature = "<i>[real_name]</i>"
signature_font = "Verdanta"
gear = list()
@@ -401,6 +407,11 @@ datum/preferences
dat += "<a href='byond://?src=\ref[user];preference=pAI'><b>pAI Configuration</b></a><br>"
dat += "<br>"
dat += "<b>Character's Signature</b><br>"
dat += "<a href='byond://?src=\ref[user];preference=signature;task=input'>Edit</a> <a href='byond://?src=\ref[user];preference=signature;task=font'>Font</a> <a href='byond://?src=\ref[user];preference=signature;task=help'>Help</a><br>"
dat += "<font face=\"[signature_font ? signature_font : "Verdanta"]\">[signature]</font><br>"
dat += "<br><b>Hair</b><br>"
dat += "<a href='?_src_=prefs;preference=hair;task=input'>Change Color</a> <font face='fixedsys' size='3' color='#[num2hex(r_hair, 2)][num2hex(g_hair, 2)][num2hex(b_hair, 2)]'><table style='display:inline;' bgcolor='#[num2hex(r_hair, 2)][num2hex(g_hair, 2)][num2hex(b_hair)]'><tr><td>__</td></tr></table></font> "
dat += " Style: <a href='?_src_=prefs;preference=h_style;task=input'>[h_style]</a><br>"
@@ -1017,11 +1028,34 @@ datum/preferences
gear -= gear_name
break
else if(href_list["preference"] == "signature")
switch(href_list["task"])
if("input")
var/raw_signature = input(user, "Choose your character's signature:","Character Preference") as text
if(!isnull(raw_signature))
var/new_signature = checkhtml(raw_signature, signature_tag_whitelist)
if(new_signature && !(length(new_signature) > MAX_NAME_LEN + 12))
signature = new_signature
else
user << "<font color='red'>Invalid signature. Your character's signature should be at least 2 and at most [MAX_NAME_LEN + 12] characters long. For accepted formatting tags, please review the Help option.</font>"
if("help")
var/HTML
HTML += "A character's signature can be augmented with the following tags:<br>"
HTML += "<ul><li><i>Italics</i> - &lt;i&gt;Text&lt;/i&gt;</li>"
HTML += "<li><b>Bold</b> - &lt;b&gt;Text&lt;/b&gt;</li>"
HTML += "<li><small>Small size</small> - &lt;small&gt;Text&lt;/small&gt;</li>"
HTML += "<li><big>Big size</big> - &lt;big&gt;Text&lt;/big&gt;</li></ul>"
HTML += "<br><br>Beyond that, a maximum of [MAX_NAME_LEN + 12] characters are allowed for the signature text, including symbols."
user << browse(HTML, "window=signaturehelp;size=350x300")
if("font")
signature_font = input(user, "Choose your character's signature:", "Character Preference") as null|anything in list("Times New Roman", "Verdana")
switch(href_list["task"])
if("random")
switch(href_list["preference"])
if("name")
real_name = random_name(gender)
signature = "<i>[real_name]</i>"
if("age")
age = rand(AGE_MIN, AGE_MAX)
if("hair")
@@ -1414,6 +1448,7 @@ datum/preferences
religion = sanitize(copytext(raw_choice,1,MAX_MESSAGE_LEN))
return
religion = choice
else
switch(href_list["preference"])
if("gender")
@@ -1500,6 +1535,8 @@ datum/preferences
/datum/preferences/proc/copy_to(mob/living/carbon/human/character, safety = 0)
if(be_random_name)
real_name = random_name(gender)
signature = "<i>[real_name]</i>"
signature_font = "Verdana"
if(config.humans_need_surnames)
var/firstspace = findtext(real_name, " ")
@@ -179,6 +179,9 @@
S["UI_style_color"] << UI_style_color
S["UI_style_alpha"] << UI_style_alpha
S["signature"] >> signature
S["signature_font"] >> signature_font
//Sanitize
metadata = sanitize_text(metadata, initial(metadata))
real_name = reject_bad_name(real_name)
@@ -187,6 +190,8 @@
if(isnull(spawnpoint)) spawnpoint = "Arrivals Shuttle"
if(isnull(nanotrasen_relation)) nanotrasen_relation = initial(nanotrasen_relation)
if(!real_name) real_name = random_name(gender)
if(!signature) signature = "<i>[real_name]</i>"
if(!signature_font) signature_font = "Times New Roman"
be_random_name = sanitize_integer(be_random_name, 0, 1, initial(be_random_name))
gender = sanitize_gender(gender)
age = sanitize_integer(age, AGE_MIN, AGE_MAX, initial(age))
@@ -319,6 +324,9 @@
S["UI_style_color"] << UI_style_color
S["UI_style_alpha"] << UI_style_alpha
S["signature"] << signature
S["signature_font"] << signature_font
return 1
+180 -317
View File
@@ -147,82 +147,22 @@
item_state = null
/obj/item/weapon/reagent_containers/glass/rag/fluff/rusty_handkerchief //handkerchief - Janet Fisher - rustysh4ckleford - DONE
name = "Handkerchief"
name = "handkerchief"
desc = "An ordinary handkerchief. It looks well used."
w_class = 1
icon = 'icons/obj/custom_items.dmi'
icon_state = "janet_handkerchief"
amount_per_transfer_from_this = 5
possible_transfer_amounts = list(5)
volume = 5
can_be_placed_into = null
/obj/item/weapon/reagent_containers/glass/rag/fluff/rusty_handkerchief/attack_self(mob/user as mob)
user.visible_message("[user] holds [src] up to her face.")
if(do_after(user,30))
user.visible_message("[user] moves [src] away from her face.")
return
/obj/item/weapon/reagent_containers/glass/rag/fluff/rusty_handkerchief/attack(atom/target as obj|turf|area, mob/user as mob , flag)
if(ismob(target) && target.reagents && reagents.total_volume)
user.visible_message("\red \The [target] has been smothered with \the [src] by \the [user]!", "\red You smother \the [target] with \the [src]!", "You hear some struggling and muffled cries of surprise")
src.reagents.reaction(target, TOUCH)
spawn(5) src.reagents.clear_reagents()
return
else
..()
/obj/item/weapon/reagent_containers/glass/rag/fluff/rusty_handkerchief/afterattack(atom/A as obj|turf|area, mob/user as mob, proximity)
if(!proximity) return
if(istype(A) && src in user)
user.visible_message("[user] starts to wipe down [A] with [src]!")
attack_self(mob/user as mob)
user.visible_message("[user] holds [src] up to \his face.")
if(do_after(user,30))
user.visible_message("[user] finishes wiping off the [A]!")
A.clean_blood()
return
/obj/item/weapon/reagent_containers/glass/rag/fluff/rusty_handkerchief/examine()
if (!usr)
user.visible_message("[user] blows \his nose and moves the [src] away from \his face.")
return
usr << "That's \a [src]."
usr << desc
return
/obj/item/clothing/tie/storage/knifeharness/fluff/skull132_harness //A crimson harness - No assign character (Allyn "Crimson" Adema) - skull132 - DONE
name = "a crimson harness"
desc = "An Unathi ceremonial harness with two pieces of crimson cloth draped across the heart of the wearer."
icon = 'icons/obj/custom_items.dmi'
icon_state = "skull_harness2"
item_color = "skull_harness2"
item_state = "skull_harness2"
slots = 2
/*
/obj/item/clothing/tie/storage/knifeharness/fluff/skull132_harness/attackby(var/obj/item/O as obj, mob/user as mob)
..()
update()
/obj/item/clothing/tie/storage/knifeharness/fluff/skull132_harness/proc/updateskull()
var/count = 0
for(var/obj/item/I in hold)
if(istype(I,/obj/item/weapon/hatchet/unathiknife))
count++
if(count>2) count = 2
item_state = "skull_harness[count]"
icon_state = item_state
item_color = item_state
if(istype(loc, /obj/item/clothing))
var/obj/item/clothing/U = loc
if(istype(U.loc, /mob/living/carbon/human))
var/mob/living/carbon/human/H = U.loc
H.update_inv_w_uniform()
/obj/item/clothing/tie/storage/knifeharness/fluff/skull132_harness/New()
..()
new /obj/item/weapon/hatchet/unathiknife(hold)
new /obj/item/weapon/hatchet/unathiknife(hold)
*/
afterattack(atom/A as obj|turf|area, mob/user as mob, proximity)
if(A == user)
attack_self(user)
return
..()
/obj/item/weapon/disk/fluff/nebula_chip //data chip - Roxy Wallace - nebulaflare - DONE
name = "data chip"
@@ -231,59 +171,38 @@
icon_state = "nebula_chip"
w_class = 1
/obj/item/weapon/storage/fluff/nebula_glasses //chich eyewear - Roxy Wallace - nebulaflare - DONE
name = "Chic Eyewear"
desc = " A stylish pair of glasses. They look custom made."
/obj/item/clothing/glasses/fluff/nebula_glasses //chich eyewear - Roxy Wallace - nebulaflare - DONE
name = "chic eyewear"
desc = "A stylish pair of glasses. They look custom made."
icon = 'icons/obj/custom_items.dmi'
icon_state = "nebula_glasses"
item_state = "glasses"
flags = FPRINT | GLASSESCOVERSEYES
slot_flags = SLOT_EYES
can_hold = list(
"/obj/item/weapon/disk/fluff/nebula_chip")
storage_slots = 1
max_combined_w_class = 1
max_w_class = 1
w_class = 2
item_state = "nebula_glasses"
var/chip
New()
chip = new /obj/item/weapon/disk/fluff/nebula_chip()
..()
new /obj/item/weapon/disk/fluff/nebula_chip(src)
return
/obj/item/weapon/storage/fluff/nebula_glasses/proc/can_use()
if(!ismob(loc)) return 0
var/mob/M = loc
if(src in M.get_equipped_items())
return 1
else
return 0
attack_self(mob/user as mob)
if(chip)
user.put_in_hands(chip)
user << "\blue You eject a small, concealed data chip from a small slot in the frames of the [src]."
chip = null
/obj/item/weapon/storage/fluff/nebula_glasses/MouseDrop(obj/over_object as obj, src_location, over_location)
var/mob/M = usr
if(!istype(over_object, /obj/screen))
return ..()
playsound(src.loc, "rustle", 50, 1, -5)
if (!M.restrained() && !M.stat && can_use())
switch(over_object.name)
if("r_hand")
M.u_equip(src)
M.put_in_r_hand(src)
if("l_hand")
M.u_equip(src)
M.put_in_l_hand(src)
src.add_fingerprint(usr)
return
attackby(obj/item/weapon/W as obj, mob/user as mob)
if(istype(W, /obj/item/weapon/disk/fluff/nebula_chip) && !chip)
user.u_equip(W)
W.loc = src
chip = W
W.dropped(user)
W.add_fingerprint(user)
add_fingerprint(user)
user << "You slot the [W] back into its place in the frames of the [src]."
/obj/item/clothing/mask/cigarette/pipe/fluff/tool_pipe //Worn pipe - Michael Tool - mrimatool - DONE
name = "worn pipe"
desc = "A worn wooden pipe with the initials S.F. scratched into the base."
icon = 'icons/obj/custom_items.dmi'
icon_state = "toolpipeoff"
item_state = "pipeoff"
icon_on = "toolpipeon" //Note - these are in masks.dmi
icon_off = "pipeoff"
smoketime = 100
can_hurt_mob = 0
/obj/item/weapon/reagent_containers/food/drinks/flask/fluff/tool_flask //Worn flask - Michael Tool - mrimatool - DONE
name = "worn flask"
@@ -292,51 +211,6 @@
icon_state = "tool_flask"
volume = 60
/*
/obj/item/weapon/melee/baton/fluff/omnivac_baton //Tiger Claw - Zander Moon - omnivac - DONE
name = "Tiger Claw"
desc = "A small energy dagger given to Golden Tigers meant to incapacitate people quickly."
icon = 'icons/obj/custom_items.dmi'
icon_state = "tigerclaw"
item_state = "tigerclaw"
/obj/item/weapon/melee/baton/fluff/omnivac_baton/update_icon()
if(status)
icon_state = "tigerclaw_active"
item_state = "tigerclaw_active"
else
icon_state = "tigerclaw"
item_state = "tigerclaw"
/obj/item/weapon/melee/baton/fluff/omnivac_baton/attack_self(mob/user as mob)
if(status && (CLUMSY in user.mutations) && prob(50))
user << "\red You grab the [src] on the wrong side."
user.Weaken(30)
charges--
if(charges < 1)
status = 0
update_icon()
return
if(charges > 0)
status = !status
user << "<span class='notice'>\The [src] is now [status ? "on" : "off"].</span>"
playsound(user, 'sound/weapons/saberon.ogg', 50, 1)
update_icon()
else
status = 0
user << "<span class='warning'>\The [src] is out of charge.</span>"
add_fingerprint(user)
*/
/*
/obj/item/device/modkit/fluff/omnivac_modkit //Ornate box - Zander Moon - omnivac - SPRITE
name = "ornate box"
desc = "An ornate box, containing the handle of an energy blade."
icon = 'icons/obj/custom_items.dmi'
icon_state = "omni_modkit"
parts = MODKIT_HELMET
from_helmet = list(/obj/item/weapon/melee)
to_helmet = list(/obj/item/weapon/melee/baton/fluff/omnivac_baton)
*/
/obj/item/clothing/head/soft/fluff/nebula_cap //Black baseball cap - Roxy Wallace - nebulaflare - DONE
name = "black baseball cap"
@@ -410,20 +284,20 @@
item_state = "pen"
var/ink = 1
/obj/item/weapon/pen/fluff/eliza_pen/attack_self(mob/user)
switch(ink)
if(1)
ink = 2
colour = "blue"
user << "<span class='notice'>You cycle the pen to use the blue ink cartridge.</span>"
if(2)
ink = 3
colour = "red"
user << "<span class='notice'>You cycle the pen to use the red ink cartridge.</span>"
if(3)
ink = 1
colour = "black"
user << "<span class='notice'>You cycle the pen to use the black ink cartridge.</span>"
attack_self(mob/user)
switch(ink)
if(1)
ink = 2
colour = "blue"
user << "<span class='notice'>You cycle the pen to use the blue ink cartridge.</span>"
if(2)
ink = 3
colour = "red"
user << "<span class='notice'>You cycle the pen to use the red ink cartridge.</span>"
if(3)
ink = 1
colour = "black"
user << "<span class='notice'>You cycle the pen to use the black ink cartridge.</span>"
/obj/item/device/fluff/amy_player //Music player - Amy Heris - gollee - DONE - Modding
name = "music player"
@@ -442,74 +316,66 @@
"Affinity",
"Dream Spark"
)
/obj/item/clothing/ears/headphone
name = "Headphone"
desc = "Headphones made for special players..."
icon_state = "earmuffs"
item_state = "earmuffs"
slot_flags = SLOT_EARS //| SLOT_TWOEARS
//Totally damned surprised this worked on the first go. Huh, well, it works! Considering integration into main code as well. - Skull132
/obj/item/device/fluff/amy_player/emp_act(severity)
emped = 1
icon_state = "amy_player_broken"
playing = 0
emp_act(severity)
emped = 1
icon_state = "amy_player_broken"
playing = 0
/obj/item/device/fluff/amy_player/attackby(var/obj/item/O as obj, var/mob/user as mob)
if (emped == 1)
if(istype(O, /obj/item/weapon/screwdriver) && fixed == 0)
fixed = 1
user << "<span class='notice'>You unfasten the back panel.</span>"
if(istype(O, /obj/item/device/multitool) && fixed == 1)
fixed = 0
user << "<span class='notice'>You quickly pulse a few fires, and reset the screen and device.</span>"
emped = 0
icon_state = "amy_player_off"
attackby(var/obj/item/O as obj, var/mob/user as mob)
if (emped == 1)
if(istype(O, /obj/item/weapon/screwdriver) && fixed == 0)
fixed = 1
user << "<span class='notice'>You unfasten the back panel.</span>"
if(istype(O, /obj/item/device/multitool) && fixed == 1)
fixed = 0
user << "<span class='notice'>You quickly pulse a few fires, and reset the screen and device.</span>"
emped = 0
icon_state = "amy_player_off"
return
// else
// user << "<span class='notice'>You see little reason to start hacking into the player's wiring.</span>"
return
// else
// user << "<span class='notice'>You see little reason to start hacking into the player's wiring.</span>"
/obj/item/device/fluff/amy_player/attack_self(mob/user)
if(emped)
user<< "<span class='notice'>The screen flickers and blinks with errors. It looks like it's about to give up the ghost.</span>"
else if(playing == 0)
var/mob/living/carbon/human/M = usr
var/pickedsong = input("Select the song you want to play.","Songs", null, null) in songs
if(istype(M.l_ear, /obj/item/clothing/ears/headphone) || istype(M.r_ear, /obj/item/clothing/ears/headphone))
switch(pickedsong)
if("Dream Spark")
usr << sound('sound/mp3/dreamspark.ogg')
if("Second Chance")
usr << sound('sound/mp3/secondchance.ogg')
if("Redoubt")
usr << sound('sound/mp3/redoubt.ogg')
if("Affinity")
usr << sound('sound/mp3/affinity.ogg')
if("Lord of Light")
usr << sound('sound/mp3/lordoflight.ogg')
else
for(var/mob/I in view())
attack_self(mob/user)
if(emped)
user<< "<span class='notice'>The screen flickers and blinks with errors. It looks like it's about to give up the ghost.</span>"
else if(playing == 0)
var/mob/living/carbon/human/M = usr
var/pickedsong = input("Select the song you want to play.","Songs", null, null) in songs
if(istype(M.l_ear, /obj/item/clothing/ears/headphone) || istype(M.r_ear, /obj/item/clothing/ears/headphone))
switch(pickedsong)
if("Dream Spark")
I << sound('sound/mp3/dreamspark.ogg')
usr << sound('sound/mp3/dreamspark.ogg')
if("Second Chance")
I << sound('sound/mp3/secondchance.ogg')
usr << sound('sound/mp3/secondchance.ogg')
if("Redoubt")
I << sound('sound/mp3/redoubt.ogg')
usr << sound('sound/mp3/redoubt.ogg')
if("Affinity")
I << sound('sound/mp3/affinity.ogg')
usr << sound('sound/mp3/affinity.ogg')
if("Lord of Light")
I << sound('sound/mp3/lordoflight.ogg')
user << "<span class='notice'>You turn on the music player, selecting a song. A song called '[pickedsong]' starts playing through the earbuds as the device sparks to life.</span>"
icon_state = "amy_player_on"
playing = 1
else
user << "<span class='notice'>You turn off the music player.</span>"
playing = 0
usr << sound('sound/mp3/lordoflight.ogg')
else
for(var/mob/I in view())
switch(pickedsong)
if("Dream Spark")
I << sound('sound/mp3/dreamspark.ogg')
if("Second Chance")
I << sound('sound/mp3/secondchance.ogg')
if("Redoubt")
I << sound('sound/mp3/redoubt.ogg')
if("Affinity")
I << sound('sound/mp3/affinity.ogg')
if("Lord of Light")
I << sound('sound/mp3/lordoflight.ogg')
user << "<span class='notice'>You turn on the music player, selecting a song. A song called '[pickedsong]' starts playing through the earbuds as the device sparks to life.</span>"
icon_state = "amy_player_on"
playing = 1
else
user << "<span class='notice'>You turn off the music player.</span>"
playing = 0
/* if(0)
@@ -529,6 +395,13 @@
/ "Dream Spark"
*/
/obj/item/clothing/ears/headphone
name = "Headphone"
desc = "Headphones made for special players..."
icon_state = "earmuffs"
item_state = "earmuffs"
slot_flags = SLOT_EARS //| SLOT_TWOEARS
/obj/item/device/fluff/sten_synth //VoiceOS.V2 - Sten Asval - vtol - DONE
name = "VoiceOS.V2"
desc = "A text-to-speech device with an appearance that is not too futuristic. It looks slim and light. On the back of it there are initials in silver: SA."
@@ -669,20 +542,21 @@
item_color = "cecillia_locket1"
slots = 1
New()
..()
new /obj/item/weapon/reagent_containers/pill/cecillia_pill(hold)
return
/obj/item/weapon/reagent_containers/pill/cecillia_pill
name = "Cici's moonshine pill"
desc = "Smells of home-made remedies."
icon_state = "pill8"
New()
..()
reagents.add_reagent("space_drugs", 5)
reagents.add_reagent("paroxetine", 5)
/obj/item/clothing/tie/storage/fluff/cecillia_locket/New()
..()
new /obj/item/weapon/reagent_containers/pill/cecillia_pill(hold)
return
/obj/item/weapon/storage/backpack/satchel/fluff/cecillia_satchel //Satchel-bag - Cecillia Lambert - casperf1 - SPRITE
name = "satchel-bag"
desc = "This looks old, is not yours and if you're wearing it, the original owner is probably dead."
@@ -737,17 +611,6 @@
icon_state = "leo_coat"
item_state = "leo_coat"
/*
/obj/item/device/modkit/fluff/leo_modkit //Weapon case - Leo Wyatt - keinto - DONE
name = "weapon case"
desc = "A sturdy leather case, with a velvet covered interior.."
icon = 'icons/obj/custom_items.dmi'
icon_state = "leo_mod"
parts = MODKIT_HELMET
from_helmet = list(/obj/item/weapon/gun/projectile/detective/semiauto)
to_helmet = list(/obj/item/weapon/gun/projectile/detective/semiauto/fluff/leo_gun)
*/
/obj/item/weapon/gun/projectile/detective/semiauto/fluff/leo_gun //Instant Prosecutor - Leo Wyatt - keinto - DONE (stab)
name = "\improper Instant Prosecutor"
desc = "An original Colt 1911 pistol. Slightly worn on the edges, this gun has its name embedded on the side."
@@ -859,15 +722,15 @@
item_state = "ushanka_avadown"
icon_state = "ushankadown"
/obj/item/clothing/head/ushanka/fluff/ava_ushanka/attack_self(mob/user as mob)
if(src.icon_state == "ushankadown")
src.icon_state = "ushankaup"
src.item_state = "ushanka_avaup"
user << "You raise the ear flaps on the ushanka."
else
src.icon_state = "ushankadown"
src.item_state = "ushanka_avadown"
user << "You lower the ear flaps on the ushanka."
attack_self(mob/user as mob)
if(src.icon_state == "ushankadown")
src.icon_state = "ushankaup"
src.item_state = "ushanka_avaup"
user << "You raise the ear flaps on the ushanka."
else
src.icon_state = "ushankadown"
src.item_state = "ushanka_avadown"
user << "You lower the ear flaps on the ushanka."
/obj/item/clothing/tie/fluff/hamil_badge // Internal Investigations Badge - Muhammad Hamil - Jackboot - DONE
name = "Internal Investigations Badge"
@@ -875,13 +738,13 @@
icon = 'icons/obj/custom_items.dmi'
item_state = "hamil_badge"
/obj/item/clothing/tie/fluff/hamil_badge/attack_self(mob/user as mob)
if(isliving(user))
user.visible_message("\red [user] flashes their [src].\nIt reads: Muhammad Hamil, Internal Investigations, Persepolis..","\red You display the [src].\nIt reads: Muhammad Hamil, Internal Investigations, Persepolis.")
attack_self(mob/user as mob)
if(isliving(user))
user.visible_message("\red [user] flashes their [src].\nIt reads: Muhammad Hamil, Internal Investigations, Persepolis..","\red You display the [src].\nIt reads: Muhammad Hamil, Internal Investigations, Persepolis.")
/obj/item/clothing/tie/fluff/hamil_badge/attack(mob/living/carbon/human/M, mob/living/user)
if(isliving(user))
user.visible_message("\red [user] invades [M]'s personal space, thrusting [src] into their face insistently.","\red You invade [M]'s personal space, thrusting [src] into their face insistently. You are the law.")
attack(mob/living/carbon/human/M, mob/living/user)
if(isliving(user))
user.visible_message("\red [user] invades [M]'s personal space, thrusting [src] into their face insistently.","\red You invade [M]'s personal space, thrusting [src] into their face insistently. You are the law.")
/obj/item/clothing/mask/gas/fluff/stefan_mask // Modified Gas Mask - Oliver Stefan - Nbielinski - DONE
desc = "This odd looking gas mask is quite clearly not of NanoTrasen origin as it sports a black metal polish, as well as a reflective face plate that mirrors the view of the mask itself. This particular mask appears to breathe with the user, hissing when they exhale, and whining softly as they inhale."
@@ -902,43 +765,43 @@
force = 2
var/on = 0
/obj/item/weapon/melee/fluff/balisong/attack_self(mob/user as mob)
on = !on
if(on)
user.visible_message("\red With but a flashy twirl of their fingers, [user] flicks open the balisong.",\
"\red You with a bit a flair, open the balisong. The metallic shine of the blade touching your gaze.",\
"You hear an ominous click.")
icon_state = "balisong_1"
item_state = "balisong_m"
w_class = 3
force = 2
attack_verb = list("prodded")
else
user.visible_message("\blue Without even looking, [user] casually flicks the balisong closed.",\
"\blue You skilfully close the balisong.",\
"You hear a click.")
icon_state = "balisong_0"
w_class = 2
force = 2
attack_verb = list("thumped")
attack_self(mob/user as mob)
on = !on
if(on)
user.visible_message("\red With but a flashy twirl of their fingers, [user] flicks open the balisong.",\
"\red You with a bit a flair, open the balisong. The metallic shine of the blade touching your gaze.",\
"You hear an ominous click.")
icon_state = "balisong_1"
item_state = "balisong_m"
w_class = 3
force = 2
attack_verb = list("prodded")
else
user.visible_message("\blue Without even looking, [user] casually flicks the balisong closed.",\
"\blue You skilfully close the balisong.",\
"You hear a click.")
icon_state = "balisong_0"
w_class = 2
force = 2
attack_verb = list("thumped")
if(istype(user,/mob/living/carbon/human))
var/mob/living/carbon/human/H = user
H.update_inv_l_hand()
H.update_inv_r_hand()
if(istype(user,/mob/living/carbon/human))
var/mob/living/carbon/human/H = user
H.update_inv_l_hand()
H.update_inv_r_hand()
playsound(src.loc, 'sound/weapons/empty.ogg', 50, 1)
add_fingerprint(user)
playsound(src.loc, 'sound/weapons/empty.ogg', 50, 1)
add_fingerprint(user)
if(blood_overlay && blood_DNA && (blood_DNA.len >= 1))
var/icon/I = new /icon(src.icon, src.icon_state)
I.Blend(new /icon('icons/effects/blood.dmi', rgb(255,255,255)),ICON_ADD)
I.Blend(new /icon('icons/effects/blood.dmi', "itemblood"),ICON_MULTIPLY)
blood_overlay = I
if(blood_overlay && blood_DNA && (blood_DNA.len >= 1))
var/icon/I = new /icon(src.icon, src.icon_state)
I.Blend(new /icon('icons/effects/blood.dmi', rgb(255,255,255)),ICON_ADD)
I.Blend(new /icon('icons/effects/blood.dmi', "itemblood"),ICON_MULTIPLY)
blood_overlay = I
overlays += blood_overlay
overlays += blood_overlay
return
return
/obj/structure/stool/bed/chair/wheelchair/fluff/kit // Kit's Wheelchair - Cassidy Kit - Meowykins - DONE
name = "Kit's Wheelchair"
@@ -948,12 +811,12 @@
anchored = 0
movable = 1
obj/structure/stool/bed/chair/wheelchair/fluff/kit/handle_rotation()
overlays = null
var/image/O = image(icon = 'icons/obj/custom_items.dmi', icon_state = "kit_w_overlay", layer = FLY_LAYER, dir = src.dir)
overlays += O
if(buckled_mob)
buckled_mob.dir = dir
handle_rotation()
overlays = null
var/image/O = image(icon = 'icons/obj/custom_items.dmi', icon_state = "kit_w_overlay", layer = FLY_LAYER, dir = src.dir)
overlays += O
if(buckled_mob)
buckled_mob.dir = dir
/obj/item/weapon/storage/fluff/binder // Black Binder - Cassidy Kit - Meowykins - DONE
name = "Black Binder"
@@ -966,13 +829,13 @@ obj/structure/stool/bed/chair/wheelchair/fluff/kit/handle_rotation()
"/obj/item/weapon/pen"
)
/obj/item/weapon/storage/fluff/binder/New()
..()
new /obj/item/weapon/folder/blue(src)
new /obj/item/weapon/folder/red(src)
new /obj/item/weapon/folder/white(src)
new /obj/item/weapon/folder/yellow(src)
new /obj/item/weapon/pen/fluff/kit_pen(src)
New()
..()
new /obj/item/weapon/folder/blue(src)
new /obj/item/weapon/folder/red(src)
new /obj/item/weapon/folder/white(src)
new /obj/item/weapon/folder/yellow(src)
new /obj/item/weapon/pen/fluff/kit_pen(src)
/obj/item/weapon/pen/fluff/kit_pen // Fountain Pen - Cassidy Kit - Meowykins - DONE
desc = "A small fountain pen. It has several spots to change the cartridge inside for another color, as well as a selector switch for ease of use."
@@ -982,20 +845,20 @@ obj/structure/stool/bed/chair/wheelchair/fluff/kit/handle_rotation()
item_state = "pen"
var/ink = 1
/obj/item/weapon/pen/fluff/kit_pen/attack_self(mob/user)
switch(ink)
if(1)
ink = 2
colour = "blue"
user << "<span class='notice'>You cycle the pen to use the blue ink cartridge.</span>"
if(2)
ink = 3
colour = "red"
user << "<span class='notice'>You cycle the pen to use the red ink cartridge.</span>"
if(3)
ink = 1
colour = "black"
user << "<span class='notice'>You cycle the pen to use the black ink cartridge.</span>"
attack_self(mob/user)
switch(ink)
if(1)
ink = 2
colour = "blue"
user << "<span class='notice'>You cycle the pen to use the blue ink cartridge.</span>"
if(2)
ink = 3
colour = "red"
user << "<span class='notice'>You cycle the pen to use the red ink cartridge.</span>"
if(3)
ink = 1
colour = "black"
user << "<span class='notice'>You cycle the pen to use the black ink cartridge.</span>"
/obj/structure/sign/shaw_degree //Xenonuerology Doctorate - Alexis Shaw - Tenenza
name = "\improper Xenonuerology degree"//Description trimmed down, summarized.
+10
View File
@@ -1268,4 +1268,14 @@ I said no!
reagents = list("sugar" = 5, "frostoil" = 5)
result = /obj/item/weapon/reagent_containers/food/snacks/mint
//////////////////////////////////////////
// End of BS12 food port
//////////////////////////////////////////
/datum/recipe/chocolatebox
reagents = list("cream" = 5)
items = list(
/obj/item/weapon/reagent_containers/food/snacks/chocolatebar,
/obj/item/weapon/reagent_containers/food/snacks/grown/cherries
)
result = /obj/item/weapon/reagent_containers/food/snacks/chocolatebox
@@ -14,6 +14,8 @@
locked = 0
mecha = null//This does not appear to be used outside of reference in mecha.dm.
var/obj/item/device/radio/radio = null//Let's give it a radio.
/obj/item/device/mmi/posibrain/attack_self(mob/user as mob)
if(brainmob && !brainmob.key && searching == 0)
@@ -142,4 +144,33 @@
// src.brainmob.brain_op_stage = 4.0
dead_mob_list -= src.brainmob
radio = new(src)//Spawns a radio inside the MMI.
radio.broadcasting = 0//So it's broadcasting from the start.
..()
/obj/item/device/mmi/posibrain/verb/Toggle_Broadcasting() //totally not nicking from certain places. Yay.
set name = "Toggle Broadcasting"
set desc = "Toggle broadcasting channel on or off."
set category = "Posi"
set src = usr.loc//In user location, or in MMI in this case.
set popup_menu = 0//Will not appear when right clicking.
if(brainmob.stat)//Only the brainmob will trigger these so no further check is necessary.
brainmob << "Can't do that while incapacitated or dead."
radio.broadcasting = radio.broadcasting==1 ? 0 : 1
brainmob << "\blue Radio is [radio.broadcasting==1 ? "now" : "no longer"] broadcasting."
/obj/item/device/mmi/posibrain/verb/Toggle_Listening()
set name = "Toggle Listening"
set desc = "Toggle listening channel on or off."
set category = "Posi"
set src = usr.loc
set popup_menu = 0
if(brainmob.stat)
brainmob << "Can't do that while incapacitated or dead."
radio.listening = radio.listening==1 ? 0 : 1
brainmob << "\blue Radio is [radio.listening==1 ? "now" : "no longer"] receiving broadcast."
+5 -1
View File
@@ -3,7 +3,7 @@
if (silent)
return
if(!(container && (istype(container, /obj/item/device/mmi) || istype(container, /obj/item/device/mmi/posibrain))))
if(!(container && (istype(container, /obj/item/device/mmi))))
return //No MMI, can't speak, bucko./N
else
if(prob(emp_damage*4))
@@ -15,4 +15,8 @@
var/obj/item/device/mmi/radio_enabled/R = container
if(R.radio)
spawn(0) R.radio.hear_talk(src, sanitize(message))
if(istype(container, /obj/item/device/mmi/posibrain))//For them posibrains that now get radios. Apparently.
var/obj/item/device/mmi/posibrain/R = container
if(R.radio)
spawn(0) R.radio.hear_talk(src, sanitize(message))
..()
+1 -1
View File
@@ -204,7 +204,7 @@
t = replacetext(t, "\[/u\]", "</U>")
t = replacetext(t, "\[large\]", "<font size=\"4\">")
t = replacetext(t, "\[/large\]", "</font>")
t = replacetext(t, "\[sign\]", "<font face=\"[signfont]\"><i>[user ? user.real_name : "Anonymous"]</i></font>")
t = replacetext(t, "\[sign\]", "<font face=\"[user ? user.mind.signature_font : signfont]\">[user ? user.mind.signature : "<i>Anonymous</i>"]</font>")
t = replacetext(t, "\[field\]", "<span class=\"paper_field\"></span>")
if(!iscrayon)
+33 -1
View File
@@ -1177,8 +1177,40 @@ datum
required_container = /obj/item/slime_extract/silver
required_other = 1
on_reaction(var/datum/reagents/holder)
var/blocked = list(/obj/item/weapon/reagent_containers/food/snacks/customizable,
/obj/item/weapon/reagent_containers/food/snacks/customizable/burger,
/obj/item/weapon/reagent_containers/food/snacks/customizable/candy,
/obj/item/weapon/reagent_containers/food/snacks/customizable/candy/bar,
/obj/item/weapon/reagent_containers/food/snacks/customizable/candy/candycane,
/obj/item/weapon/reagent_containers/food/snacks/customizable/candy/cash,
/obj/item/weapon/reagent_containers/food/snacks/customizable/candy/coin,
/obj/item/weapon/reagent_containers/food/snacks/customizable/candy/cookie,
/obj/item/weapon/reagent_containers/food/snacks/customizable/candy/cotton,
/obj/item/weapon/reagent_containers/food/snacks/customizable/candy/donut,
/obj/item/weapon/reagent_containers/food/snacks/customizable/candy/gum,
/obj/item/weapon/reagent_containers/food/snacks/customizable/candy/gummybear,
/obj/item/weapon/reagent_containers/food/snacks/customizable/candy/gummyworm,
/obj/item/weapon/reagent_containers/food/snacks/customizable/candy/jawbreaker,
/obj/item/weapon/reagent_containers/food/snacks/customizable/candy/jellybean,
/obj/item/weapon/reagent_containers/food/snacks/customizable/candy/sucker,
/obj/item/weapon/reagent_containers/food/snacks/customizable/cook,
/obj/item/weapon/reagent_containers/food/snacks/customizable/cook/bread,
/obj/item/weapon/reagent_containers/food/snacks/customizable/cook/cake,
/obj/item/weapon/reagent_containers/food/snacks/customizable/cook/donkpocket,
/obj/item/weapon/reagent_containers/food/snacks/customizable/cook/jelly,
/obj/item/weapon/reagent_containers/food/snacks/customizable/cook/kebab,
/obj/item/weapon/reagent_containers/food/snacks/customizable/cook/pie,
/obj/item/weapon/reagent_containers/food/snacks/customizable/cook/salad,
/obj/item/weapon/reagent_containers/food/snacks/customizable/cook/waffles,
/obj/item/weapon/reagent_containers/food/snacks/customizable/fullycustom,
/obj/item/weapon/reagent_containers/food/snacks/customizable/pasta,
/obj/item/weapon/reagent_containers/food/snacks/customizable/pizza,
/obj/item/weapon/reagent_containers/food/snacks/customizable/sandwich,
/obj/item/weapon/reagent_containers/food/snacks/customizable/soup,
/obj/item/weapon/reagent_containers/food/snacks/cereal,
/obj/item/weapon/reagent_containers/food/snacks/slimesoup)
var/list/borks = typesof(/obj/item/weapon/reagent_containers/food/snacks) - /obj/item/weapon/reagent_containers/food/snacks
var/list/borks = typesof(/obj/item/weapon/reagent_containers/food/snacks) - blocked
// BORK BORK BORK
playsound(get_turf(holder.my_atom), 'sound/effects/phasein.ogg', 100, 1)
@@ -3309,3 +3309,31 @@
..()
reagents.add_reagent("nutriment", 3)
/obj/item/weapon/reagent_containers/food/snacks/chocolatebox
name = "box of chocolates"
desc = "A heart-shaped box of sweet, sweet chocolate-y goodness."
icon_state = "chocolatebox-closed"
wrapped = 1
bitesize = 1
trash = /obj/item/trash/chocolatebox
New()
..()
reagents.add_reagent("nutriment", 6)
attack_self(mob/user as mob)
if(wrapped)
open(user)
proc/open(mob/user as mob)
wrapped = 0
user << "You open the [src]."
icon_state = "chocolatebox-open"
update_icon()
attack(mob/M as mob, mob/user as mob, def_zone)
if(wrapped)
user << "You should open the box, first."
return
else
..()
Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.4 KiB

After

Width:  |  Height:  |  Size: 7.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 84 KiB

After

Width:  |  Height:  |  Size: 82 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 116 KiB

After

Width:  |  Height:  |  Size: 117 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.9 KiB

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 33 KiB

After

Width:  |  Height:  |  Size: 33 KiB