forked from NebulaSS13/Nebula
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path_macros.dm
197 lines (124 loc) · 7.44 KB
/
_macros.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
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
#define any2ref(x) "\ref[x]"
#define PUBLIC_GAME_MODE SSticker.master_mode
#define CLAMP01(x) (clamp(x, 0, 1))
#define get_turf(A) get_step(A,0)
#define get_area(A) (get_step(A, 0)?.loc)
#define get_x(A) (get_step(A, 0)?.x || 0)
#define get_y(A) (get_step(A, 0)?.y || 0)
#define get_z(A) (get_step(A, 0)?.z || 0)
#define isAI(A) istype(A, /mob/living/silicon/ai)
#define isanimal(A) istype(A, /mob/living/simple_animal)
#define isairlock(A) istype(A, /obj/machinery/door/airlock)
#define isatom(A) isloc(A)
#define isbrain(A) istype(A, /mob/living/brain)
#define isclient(A) istype(A, /client)
#define iscorgi(A) istype(A, /mob/living/simple_animal/corgi)
#define isdrone(A) istype(A, /mob/living/silicon/robot/drone)
#define isEye(A) istype(A, /mob/observer/eye)
#define ishuman(A) istype(A, /mob/living/human)
#define isitem(A) istype(A, /obj/item)
#define isliving(A) istype(A, /mob/living)
#define ismouse(A) istype(A, /mob/living/simple_animal/passive/mouse)
#define islizard(A) istype(A, /mob/living/simple_animal/lizard)
#define isnewplayer(A) istype(A, /mob/new_player)
#define isobj(A) istype(A, /obj)
#define iseffect(A) istype(A, /obj/effect)
#define isghost(A) istype(A, /mob/observer/ghost)
#define isobserver(A) istype(A, /mob/observer)
#define isorgan(A) istype(A, /obj/item/organ/external)
#define isstack(A) istype(A, /obj/item/stack)
#define isspacearea(A) istype(A, /area/space)
#define isspaceturf(A) istype(A, /turf/space)
#define ispAI(A) istype(A, /mob/living/silicon/pai)
#define isrobot(A) istype(A, /mob/living/silicon/robot)
#define issilicon(A) istype(A, /mob/living/silicon)
#define isbot(A) istype(A, /mob/living/bot)
#define isexosuit(A) istype(A, /mob/living/exosuit)
#define isunderwear(A) istype(A, /obj/item/underwear)
#define isvirtualmob(A) istype(A, /mob/observer/virtual)
#define isweakref(A) istype(A, /weakref)
#define attack_animation(A) if(istype(A)) A.do_attack_animation(src)
#define isplunger(A) istype(A, /obj/item/plunger)
#define isassembly(A) istype(A, /obj/item/assembly)
#define isigniter(A) istype(A, /obj/item/assembly/igniter)
#define istimer(A) istype(A, /obj/item/assembly/timer)
#define sequential_id(key) uniqueness_repository.Generate(/datum/uniqueness_generator/id_sequential, key)
#define random_id(key,min_id,max_id) uniqueness_repository.Generate(/datum/uniqueness_generator/id_random, key, min_id, max_id)
/proc/place_meta_charset(content)
if(istext(content))
content = "<!DOCTYPE html><meta charset=\"utf-8\">" + content
return content
#define to_chat(target, message) target << (message)
#define to_world(message) world << (message)
#define to_world_log(message) world.log << (message)
#define sound_to(target, sound) target << (sound)
#define to_file(file_entry, source_var) file_entry << (source_var)
#define from_file(file_entry, target_var) file_entry >> (target_var)
#define show_browser(target, browser_content, browser_name) target << browse(place_meta_charset(browser_content), browser_name)
#define close_browser(target, browser_name) target << browse(null, browser_name)
#define show_image(target, image) target << (image)
#define send_rsc(target, rsc_content, rsc_name) target << browse_rsc(rsc_content, rsc_name)
#define open_link(target, url) target << link(url)
#define to_savefile(target, key, value) target[(key)] << (value)
#define from_savefile(target, key, value) target[(key)] >> (value)
#define to_output(target, output_content, output_args) target << output((output_content), (output_args))
#define direct_output(target, value) target << (value)
/proc/html_icon(var/thing) // Proc instead of macro to avoid precompiler problems.
. = "\icon[thing]"
#define MAP_IMAGE_PATH "nano/images/[global.using_map.path]/"
#define map_image_file_name(z_level) "[global.using_map.path]-[z_level].png"
#define CanInteract(user, state) (CanUseTopic(user, state) == STATUS_INTERACTIVE)
#define CanInteractWith(user, target, state) (target.CanUseTopic(user, state) == STATUS_INTERACTIVE)
#define CanPhysicallyInteract(user) (CanUseTopicPhysical(user) == STATUS_INTERACTIVE)
#define CanPhysicallyInteractWith(user, target) (target.CanUseTopicPhysical(user) == STATUS_INTERACTIVE)
#define DROP_NULL(x) if(x) { x.dropInto(loc); x = null; }
#define ARGS_DEBUG log_debug("[__FILE__] - [__LINE__]") ; for(var/arg in args) { log_debug("\t[log_info_line(arg)]") }
/// Insert an object A into a sorted list using cmp_proc (/code/_helpers/cmp.dm) for comparison.
#define ADD_SORTED(list, A, cmp_proc) if(!list.len) {list.Add(A)} else {list.Insert(FindElementIndex(A, list, cmp_proc), A)}
//Currently used in SDQL2 stuff
#define send_output(target, msg, control) target << output(msg, control)
#define send_link(target, url) target << link(url)
// Spawns multiple objects of the same type
#define cast_new(type, num, args...) if((num) == 1) { new type(args) } else { for(var/i=0;i<(num),i++) { new type(args) } }
#define FLAGS_EQUALS(flag, flags) ((flag & (flags)) == (flags))
#define JOINTEXT(X) jointext(X, null)
#define SPAN_STYLE(S, X) "<span style='[S]'>[X]</span>"
#define SPAN_CLASS(C, X) "<span class='[C]'>[X]</span>"
#define SPAN_ITALIC(X) SPAN_CLASS("italic", X)
#define SPAN_BOLD(X) SPAN_CLASS("bold", X)
#define SPAN_NOTICE(X) SPAN_CLASS("notice", X)
#define SPAN_WARNING(X) SPAN_CLASS("warning", X)
#define SPAN_DANGER(X) SPAN_CLASS("danger", X)
#define SPAN_ROSE(X) SPAN_CLASS("rose", X)
#define SPAN_OCCULT(X) SPAN_CLASS("cult", X)
#define SPAN_MFAUNA(X) SPAN_CLASS("mfauna", X)
#define SPAN_SUBTLE(X) SPAN_CLASS("subtle", X)
#define SPAN_INFO(X) SPAN_CLASS("info", X)
#define SPAN_RED(X) SPAN_CLASS("font_red", X)
#define SPAN_ORANGE(X) SPAN_CLASS("font_orange", X)
#define SPAN_YELLOW(X) SPAN_CLASS("font_yellow", X)
#define SPAN_GREEN(X) SPAN_CLASS("font_green", X)
#define SPAN_BLUE(X) SPAN_CLASS("font_blue", X)
#define SPAN_VIOLET(X) SPAN_CLASS("font_violet", X)
#define SPAN_PURPLE(X) SPAN_CLASS("font_purple", X)
#define SPAN_GREY(X) SPAN_CLASS("font_grey", X)
#define SPAN_MAROON(X) SPAN_CLASS("font_maroon", X)
#define SPAN_PINK(X) SPAN_CLASS("font_pink", X)
#define SPAN_PALEPINK(X) SPAN_CLASS("font_palepink", X)
#define SPAN_SINISTER(X) SPAN_CLASS("sinister", X)
#define SPAN_MODERATE(X) SPAN_CLASS("moderate", X)
// placeholders
#define SPAN_GOOD(X) SPAN_GREEN(X)
#define SPAN_NEUTRAL(X) SPAN_BLUE(X)
#define SPAN_BAD(X) SPAN_RED(X)
#define SPAN_HARDSUIT(X) SPAN_BLUE(X)
#define CSS_CLASS_RADIO "radio"
#define STYLE_SMALLFONTS(X, S, C1) "<span style=\"font-family: 'Small Fonts'; color: [C1]; font-size: [S]px\">[X]</span>"
#define STYLE_SMALLFONTS_OUTLINE(X, S, C1, C2) "<span style=\"font-family: 'Small Fonts'; color: [C1]; -dm-text-outline: 1 [C2]; font-size: [S]px\">[X]</span>"
#define FONT_COLORED(color, text) "<font color='[color]'>[text]</font>"
#define FONT_SMALL(X) "<font size='1'>[X]</font>"
#define FONT_NORMAL(X) "<font size='2'>[X]</font>"
#define FONT_LARGE(X) "<font size='3'>[X]</font>"
#define FONT_HUGE(X) "<font size='4'>[X]</font>"
#define FONT_GIANT(X) "<font size='5'>[X]</font>"
#define PRINT_STACK_TRACE(X) get_stack_trace(X, __FILE__, __LINE__)