-
-
Notifications
You must be signed in to change notification settings - Fork 444
/
Copy pathmime.dm
138 lines (110 loc) · 4.24 KB
/
mime.dm
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
/datum/job/mime
title = "Mime"
description = "..."
orbit_icon = "comment-slash"
department_head = list("Head of Personnel")
faction = "Station"
total_positions = 1
spawn_positions = 1
supervisors = "the head of personnel"
outfit = /datum/outfit/job/mime
alt_titles = list("Mute Entertainer", "Silent Jokester", "Pantomimist")
base_access = list(ACCESS_SERVICE, ACCESS_THEATRE, ACCESS_MAINT_TUNNELS)
paycheck = PAYCHECK_MINIMAL
paycheck_department = ACCOUNT_SRV
display_order = JOB_DISPLAY_ORDER_MIME
minimal_character_age = 18 //Mime?? Might increase this a LOT depending on how mime lore turns out
departments_list = list(
/datum/job_department/service,
)
mail_goodies = list(
/obj/item/reagent_containers/food/snacks/baguette = 15,
/obj/item/reagent_containers/food/snacks/store/cheesewheel/brie = 10,
/obj/item/reagent_containers/food/drinks/bottle/bottleofnothing = 10,
/obj/item/book/mimery = 1,
)
minimal_lightup_areas = list(/area/crew_quarters/theatre)
smells_like = "complete nothingness"
/datum/job/mime/after_spawn(mob/living/carbon/human/H, mob/M)
. = ..()
H.apply_pref_name(/datum/preference/name/mime, M.client)
/datum/outfit/job/mime
name = "Mime"
jobtype = /datum/job/mime
pda_type = /obj/item/modular_computer/tablet/pda/preset/mime
ears = /obj/item/radio/headset/headset_srv
uniform = /obj/item/clothing/under/rank/civilian/mime
uniform_skirt = /obj/item/clothing/under/rank/civilian/mime/skirt
mask = /obj/item/clothing/mask/gas/mime
gloves = /obj/item/clothing/gloves/color/white
head = /obj/item/clothing/head/frenchberet
suit = /obj/item/clothing/suit/suspenders
backpack_contents = list(
/obj/item/book/mimery=1,
/obj/item/reagent_containers/food/drinks/bottle/bottleofnothing=1,
/obj/item/stamp/mime = 1)
box = /obj/item/storage/box/survival/hug/black
backpack = /obj/item/storage/backpack/mime
satchel = /obj/item/storage/backpack/mime
chameleon_extras = /obj/item/stamp/mime
/datum/outfit/job/mime/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
..()
if(visualsOnly)
return
H.grant_language(/datum/language/french, TRUE, TRUE, LANGUAGE_MIME)
if(H.mind)
var/datum/action/cooldown/spell/vow_of_silence/vow = new(H.mind)
vow.Grant(H)
H.mind.miming = 1
/obj/item/book/mimery
name = "Guide to Dank Mimery"
desc = "A primer on basic pantomime."
icon_state ="bookmime"
/obj/item/book/mimery/attack_self(mob/user,)
. = ..()
if(.)
return
var/list/spell_icons = list(
"Invisible Wall" = image(icon = 'icons/mob/actions/actions_mime.dmi', icon_state = "invisible_wall"),
"Invisible Chair" = image(icon = 'icons/mob/actions/actions_mime.dmi', icon_state = "invisible_chair"),
"Invisible Box" = image(icon = 'icons/mob/actions/actions_mime.dmi', icon_state = "invisible_box"),
"Invisible Touch" = image(icon = 'icons/mob/actions/actions_mime.dmi', icon_state = "invisible_touch")
)
var/picked_spell = show_radial_menu(user, src, spell_icons, custom_check = CALLBACK(src, PROC_REF(check_menu), user), radius = 36, require_near = TRUE)
var/datum/action/cooldown/spell/picked_spell_type
switch(picked_spell)
if("Invisible Wall")
picked_spell_type = /datum/action/cooldown/spell/conjure/invisible_wall
if("Invisible Chair")
picked_spell_type = /datum/action/cooldown/spell/conjure/invisible_chair
if("Invisible Box")
picked_spell_type = /datum/action/cooldown/spell/conjure_item/invisible_box
if("Invisible Touch")
picked_spell_type = /datum/action/cooldown/spell/touch/invisible_touch
if(ispath(picked_spell_type))
// Gives the user a vow ability too, if they don't already have one
var/datum/action/cooldown/spell/vow_of_silence/vow = locate() in user.actions
if(!vow && user.mind)
vow = new(user.mind)
vow.Grant(user)
picked_spell_type = new picked_spell_type(user.mind || user)
picked_spell_type.Grant(user)
to_chat(user, span_warning("The book disappears into thin air."))
qdel(src)
return TRUE
/**
* Checks if we are allowed to interact with a radial menu
*
* Arguments:
* * user The human mob interacting with the menu
*/
/obj/item/book/mimery/proc/check_menu(mob/living/carbon/human/user)
if(!istype(user))
return FALSE
if(!user.is_holding(src))
return FALSE
if(user.incapacitated())
return FALSE
if(!user.mind)
return FALSE
return TRUE