Cancel now cancels the emote, none is an option where applicable

As discussed with @Krausus
This commit is contained in:
VampyrBytes
2016-06-17 00:15:14 +01:00
parent 67018f4638
commit e346003268
2 changed files with 35 additions and 22 deletions
+24 -7
View File
@@ -32,6 +32,7 @@ VampyrBytes
var/canTarget = 0 // 1 if the emote accepts a target
var/targetMob = 0 // 0 if target can be any atom, 1 if it has to be a mob,
var/mustTarget = 0 // 1 if the emote needs a target to work (won't get None as an option)
var/targetText = "at" // what goes inbetween user and target
var/takesNumber = 0 // 1 if the emote uses a number parameter
@@ -124,16 +125,32 @@ VampyrBytes
/datum/emote/proc/getTarget(var/mob/user)
if(user.sdisabilities & BLIND || user.blinded || user.paralysis)
return
var/list/targets = list()
if(!mustTarget)
targets += "None"
var/target
if(targetMob)
return getMobTarget(user)
return getAtomTarget(user)
/datum/emote/proc/getMobTarget(var/mob/user)
var/mob/target = input("Select target", "Target Mob") as null|mob in view(getLoc(user))
target = getMobTarget(user, targets)
else
target = getAtomTarget(user, targets)
if(!target)
return INVALID
if(target == "None")
return
return target
/datum/emote/proc/getAtomTarget(var/mob/user)
var/atom/target = input("Select target", "Target") as null|mob|obj|turf in oview(getLoc(user))
/datum/emote/proc/getMobTarget(var/mob/user, var/list/targets)
for(var/mob/M in view(getLoc(user)))
targets += M
var/mob/target = input("Select target", "Target Mob") as null|anything in targets
return target
/datum/emote/proc/getAtomTarget(var/mob/user, var/list/targets)
for(var/A in oview(getLoc(user)))
if(ismob(A) || isobj(A) || isturf(A))
targets += A
var/atom/target = input("Select target", "Target") as null|anything in targets
return target
// returns the reason the user can't currently do the emote
+11 -15
View File
@@ -756,6 +756,7 @@
selfText = "shake hands"
canTarget = 1
targetMob = 1
mustTarget = 1
targetText = "with"
restrained = 1
@@ -768,13 +769,6 @@
if(!. && user.r_hand)
return "you need your right hand free"
/datum/emote/handshake/getMobTarget(var/mob/user)
var/mob/target = ..()
if(target)
return target
to_chat(user, "You need someone to shake hands with")
return INVALID
/datum/emote/handshake/addTarget(var/mob/user, var/list/params, var/message)
var/mob/target = params["target"]
if(target.r_hand)
@@ -836,6 +830,7 @@
mimeSelf = "take a drag from a cigarette and blow"
canTarget = 1
targetMob = 1
mustTarget = 1
targetText = ""
/datum/emote/johnny/available(var/mob/user)
@@ -844,7 +839,7 @@
/datum/emote/johnny/getTarget(var/mob/user)
var/mob/target = ..()
if(target && target != user)
if(target != user)
return target
to_chat(user, "You need a target that isn't yourself")
return INVALID
@@ -1144,11 +1139,10 @@
if(!. && user.buckled)
return "you are buckled to something"
/datum/emote/salute/getMobTarget(var/mob/user)
/datum/emote/salute/getMobTarget(var/mob/user, var/list/targets)
var/mob/target = ..()
if(target == user)
return
return target
if(target != user)
return target
/datum/emote/scratch
name = "scratch"
@@ -1342,9 +1336,11 @@
if(ishuman(user))
return 1
/datum/emote/slap/getMobTarget(var/mob/user)
var/mob/target = input("Select target", "Target Mob") as null|mob in view(1)
if(!target)
/datum/emote/slap/getMobTarget(var/mob/user, var/list/targets)
for(var/mob/M in view(getLoc(user), 1))
targets += M
var/mob/target = input("Select target", "Target Mob") as null|anything in targets
if(target == "None")
target = user
return target