@@ -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 <
|
||||
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) + "<" + copytext(t,start+1)
|
||||
if(whitelist == signature_tag_whitelist)
|
||||
return null
|
||||
p = findtext(t,"<",p)
|
||||
return t
|
||||
/*
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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")
|
||||
|
||||
@@ -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)
|
||||
@@ -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"
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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> - <i>Text</i></li>"
|
||||
HTML += "<li><b>Bold</b> - <b>Text</b></li>"
|
||||
HTML += "<li><small>Small size</small> - <small>Text</small></li>"
|
||||
HTML += "<li><big>Big size</big> - <big>Text</big></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
|
||||
|
||||
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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."
|
||||
@@ -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))
|
||||
..()
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
..()
|
||||
|
Before Width: | Height: | Size: 7.4 KiB After Width: | Height: | Size: 7.6 KiB |
|
Before Width: | Height: | Size: 84 KiB After Width: | Height: | Size: 82 KiB |
|
Before Width: | Height: | Size: 116 KiB After Width: | Height: | Size: 117 KiB |
|
Before Width: | Height: | Size: 7.9 KiB After Width: | Height: | Size: 3.8 KiB |
|
Before Width: | Height: | Size: 33 KiB After Width: | Height: | Size: 33 KiB |