Merge pull request #4 from Miniature/master

Clown/Mime/hand labeler
This commit is contained in:
Baystation12
2011-11-08 05:52:56 -08:00
4 changed files with 82 additions and 33 deletions

View File

@@ -133,6 +133,7 @@
/*
//Griff
/datum/job/clown
title = "Clown"
@@ -189,6 +190,7 @@
H.mind.special_verbs += /client/proc/mimewall
H.miming = 1
return 1
*/

View File

@@ -72,15 +72,6 @@
/obj/item/mecha_parts/part/durand_right_leg,
/obj/item/mecha_parts/part/durand_armour
),
"H.O.N.K"=list(
/obj/item/mecha_parts/chassis/honker,
/obj/item/mecha_parts/part/honker_torso,
/obj/item/mecha_parts/part/honker_head,
/obj/item/mecha_parts/part/honker_left_arm,
/obj/item/mecha_parts/part/honker_right_arm,
/obj/item/mecha_parts/part/honker_left_leg,
/obj/item/mecha_parts/part/honker_right_leg
),
"Exosuit Equipment"=list(
/obj/item/mecha_parts/mecha_equipment/tool/hydraulic_clamp,
/obj/item/mecha_parts/mecha_equipment/tool/drill,

View File

@@ -1,33 +1,50 @@
/atom/var/list/labels
//how to place label:
//1: set label in labeller
//2: pick up label object
//3: click on label with the hand the label is in
//4: place label on something
//how to remove label
//1: use labeller on item
//2: select label to remove (if there is >1 label anyway, if there is only one it will just remove that one)
/obj/item/weapon/hand_labeler
icon = 'items.dmi'
icon_state = "labeler"
item_state = "flight"
name = "Hand labeler"
var/label = null
var/labels_left = 30
/obj/item/weapon/hand_labeler/afterattack(atom/A, mob/user as mob)
if(A==loc) // if placing the labeller into something (e.g. backpack)
return // don't set a label
if(A==loc) // if placing the labeller into something (e.g. backpack)
return // don't remove any labels
if(A.labels.len == 1)
var/t = A.labels[1]
A.name = copytext(A.name,1,lentext(A.name) - (lentext(t) + 2))
A.labels -= t
return
if(A.labels.len > 1)
var/t = input(user, "Which label do you want to remove?") as null|anything in A.labels
var/i = 1
for(, i <= labels.len, i++) //find the thing of the label to remove
if(A.labels[i] == t)
break
if(i != A.labels.len) //if we arent removing the last label
var/k = 0
for(var/j = i+1, j <= A.labels.len, j++)
k += lentext(A.labels[j]) + 3 // 3 = " (" + ")"
var/labelend = lentext(A.name) - (k-1)
var/labelstart = labelend - (lentext(t)+3)
A.name = addtext(copytext(A.name,1,labelstart),copytext(A.name,labelend,0))
A.labels -= t
return
if(i == A.labels.len) //if this is the last label we don't need to find the length of the stuff infront of it
var/labelstart = lentext(A.name) - (lentext(t)+3)
A.name = copytext(A.name,1,labelstart)
A.labels -= t
return
user << "\red Something broke. Please report this (that you were trying to remove a label and what the full name of the item was) to an admin or something."
if(!labels_left)
user << "\red No labels left."
return
if(!label || !length(label))
user << "\red No text set."
return
if(length(A.name) + length(label) > 64)
user << "\red Label too big."
return
if(ishuman(A))
user << "\red You can't label humans."
return
for(var/mob/M in viewers())
M << "\blue [user] labels [A] as [label]."
A.name = "[A.name] ([label])"
/obj/item/weapon/hand_labeler/attack_self()
/obj/item/weapon/hand_labeler/attack_self(mob/user as mob)
var/str = input(usr,"Label text?","Set label","")
if(!str || !length(str))
usr << "\red Invalid text."
@@ -35,5 +52,44 @@
if(length(str) > 64)
usr << "\red Text too long."
return
label = str
usr << "\blue You set the text to '[str]'."
var/obj/item/weapon/label/A = new/obj/item/weapon/label
A.label = str
A.loc = user.loc
A.name += " - '[str]'"
/obj/item/weapon/label
icon = 'items.dmi'
icon_state = "label"
name = "Label"
w_class = 2
var/label = ""
var/backing = 1 //now with added being able to be put on table-ness!
/obj/item/weapon/label/afterattack(atom/A, mob/user as mob)
if(!backing)
if(A==loc) // if placing the label into something (e.g. backpack)
return // don't stick it on
if(!label || !length(label))
user << "\red This label doesn't have any text! How did this happen?!?"
return
if(length(A.name) + length(label) > 64) //this needs to be made bigger too. maybe number of labels instead of a fixed length
user << "\red Label too big."
return
if(ishuman(A))
user << "\red You can't label humans."
return
for(var/i = 1, i < A.labels.len, i++)
if(label == A.labels[i])
user << "\red [A] already has that label!"
return
for(var/mob/M in viewers())
M << "\blue [user] puts a label on [A]."
A.name = "[A.name] ([label])"
A.labels += label
del(src)
/obj/item/weapon/label/attack_self(mob/user as mob) //here so you can put them on tables and stuff more easily to stop them from being all over the floor until you want to use them
if(backing)
backing = 0
user << "\blue You remove the backing from the label." //now it will stick to things

Binary file not shown.

Before

Width:  |  Height:  |  Size: 47 KiB

After

Width:  |  Height:  |  Size: 47 KiB