Skip to content

Commit a00f075

Browse files
Merge pull request #126 from MistakeNot4892/fork/pyrelight
Updating from Neb dev
2 parents b941eb1 + f0390d3 commit a00f075

File tree

763 files changed

+6344
-5063
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

763 files changed

+6344
-5063
lines changed

code/__defines/genetics.dm

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
#define GENE_COND_REMOTE_TALK /decl/genetic_condition/superpower/remotetalk
66
#define GENE_COND_RUNNING /decl/genetic_condition/superpower/running
77
#define GENE_COND_REMOTE_VIEW /decl/genetic_condition/superpower/remoteview
8-
#define GENE_COND_SHAPESHIFTER /decl/genetic_condition/superpower/morph
98
#define GENE_COND_NO_FINGERPRINTS /decl/genetic_condition/superpower/noprints
109

1110
#define GENE_COND_CLUMSY /decl/genetic_condition/disability/clumsy

code/__defines/hydroponics.dm

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
// Defining these to point to the relevant decl types just to avoid a massive changeset.
55
// TODO: rename to PLANT_TRAIT or bare decls to avoid mixing up with GetTrait etc.
66
#define TRAIT_CHEMS /decl/plant_trait/chems
7+
#define TRAIT_POLLEN /decl/plant_trait/pollen
78
#define TRAIT_EXUDE_GASSES /decl/plant_trait/exude_gasses
89
#define TRAIT_ALTER_TEMP /decl/plant_trait/alter_temp
910
#define TRAIT_POTENCY /decl/plant_trait/potency

code/__defines/math_physics.dm

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,5 +34,8 @@
3434
#define TICKS_IN_DAY 24*60*60*10
3535
#define TICKS_IN_SECOND 10
3636

37-
#define SIMPLE_SIGN(X) ((X) < 0 ? -1 : 1)
38-
#define SIGN(X) ((X) ? SIMPLE_SIGN(X) : 0)
37+
#if DM_VERSION < 516
38+
#define SIGN(X) ( (X) ? ( (X) < 0 ? -1 : 1 ) : 0 )
39+
#else
40+
#define SIGN(X) sign(X)
41+
#endif

code/__defines/tools.dm

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@
6262
#define IS_KNIFE(A) IS_TOOL(A, TOOL_KNIFE)
6363
#define IS_HAMMER(A) IS_TOOL(A, TOOL_HAMMER)
6464
#define IS_HOE(A) IS_TOOL(A, TOOL_HOE)
65+
#define IS_SHEARS(A) IS_TOOL(A, TOOL_SHEARS)
6566

6667
#define IS_HEMOSTAT(A) IS_TOOL(A, TOOL_HEMOSTAT)
6768
#define IS_RETRACTOR(A) IS_TOOL(A, TOOL_RETRACTOR)

code/_helpers/areas.dm

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -36,28 +36,30 @@
3636
*/
3737
/proc/pick_area_turf_by_flag(var/area_flags, var/list/predicates)
3838
var/list/turfs
39-
for(var/sub_area_type in subtypesof(/area))
40-
var/area/sub_area = sub_area_type
41-
if(!(initial(sub_area.area_flags) & area_flags))
39+
var/list/valid_areas = list()
40+
for(var/area/candidate_area as anything in global.areas)
41+
if(!(candidate_area.area_flags & area_flags))
4242
continue
43-
sub_area = locate(sub_area_type)
44-
if(!sub_area)
43+
valid_areas[candidate_area] = TRUE
44+
if(!length(valid_areas)) // no turfs at all have that flag
45+
return FALSE
46+
// Each area contents loop is an in-world loop, so we just do one here.
47+
for(var/turf/turf_candidate in world)
48+
var/area/candidate_area = get_area(turf_candidate)
49+
if(!valid_areas[candidate_area])
4550
continue
46-
for(var/turf/T in sub_area.contents)
47-
if(!predicates || all_predicates_true(list(T), predicates))
48-
LAZYADD(turfs, T)
51+
if(!predicates || all_predicates_true(list(turf_candidate), predicates))
52+
LAZYADD(turfs, turf_candidate)
4953
if(LAZYLEN(turfs))
5054
return pick(turfs)
5155

5256
/proc/pick_area_turf(var/areatype, var/list/predicates)
5357
var/list/turfs = get_area_turfs(areatype, predicates)
54-
if(turfs && turfs.len)
55-
return pick(turfs)
58+
return SAFEPICK(turfs)
5659

5760
/proc/pick_area(var/list/predicates)
5861
var/list/areas = get_filtered_areas(predicates)
59-
if(LAZYLEN(areas))
60-
. = pick(areas)
62+
return SAFEPICK(areas)
6163

6264
/proc/pick_area_and_turf(var/list/area_predicates, var/list/turf_predicates)
6365
var/list/areas = get_filtered_areas(area_predicates)

code/_helpers/game.dm

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -223,7 +223,7 @@
223223
if(Y1==Y2)
224224
return 1 //Light cannot be blocked on same tile
225225
else
226-
var/s = SIMPLE_SIGN(Y2-Y1)
226+
var/s = SIGN(Y2-Y1)
227227
Y1+=s
228228
while(Y1!=Y2)
229229
T=locate(X1,Y1,Z)
@@ -233,8 +233,8 @@
233233
else
234234
var/m=(32*(Y2-Y1)+(PY2-PY1))/(32*(X2-X1)+(PX2-PX1))
235235
var/b=(Y1+PY1/32-0.015625)-m*(X1+PX1/32-0.015625) //In tiles
236-
var/signX = SIMPLE_SIGN(X2-X1)
237-
var/signY = SIMPLE_SIGN(Y2-Y1)
236+
var/signX = SIGN(X2-X1)
237+
var/signY = SIGN(Y2-Y1)
238238
if(X1<X2)
239239
b+=m
240240
while(X1!=X2 || Y1!=Y2)

code/_helpers/icons.dm

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -271,8 +271,8 @@ world
271271

272272
// make this icon fully opaque--transparent pixels become black
273273
/icon/proc/Opaque(background = "#000000")
274-
SwapColor(null, background)
275-
MapColors(1,0,0,0, 0,1,0,0, 0,0,1,0, 0,0,0,0, 0,0,0,1)
274+
SwapColor(null, background)
275+
MapColors(1,0,0,0, 0,1,0,0, 0,0,1,0, 0,0,0,0, 0,0,0,1)
276276

277277
// Change a grayscale icon into a white icon where the original color becomes the alpha
278278
// I.e., black -> transparent, gray -> translucent white, white -> solid white

code/_helpers/medical_scans.dm

Lines changed: 42 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
if(!brain || stat == DEAD || (status_flags & FAKEDEATH))
99
brain_result = 0
1010
else if(stat != DEAD)
11-
brain_result = round(max(0,(1 - brain.damage/brain.max_damage)*100))
11+
brain_result = round(max(0,(1 - brain.get_organ_damage() / brain.max_damage)*100))
1212
else
1313
brain_result = -1
1414
.["brain_activity"] = brain_result
@@ -60,29 +60,29 @@
6060
.["reagents"] += list(reagent)
6161

6262
.["external_organs"] = list()
63-
for(var/obj/item/organ/external/E in get_external_organs())
63+
for(var/obj/item/organ/external/limb in get_external_organs())
6464
var/list/O = list()
65-
O["name"] = E.name
66-
O["brute_ratio"] = E.brute_ratio
67-
O["burn_ratio"] = E.burn_ratio
68-
O["limb_flags"] = E.limb_flags
69-
O["brute_dam"] = E.brute_dam
70-
O["burn_dam"] = E.burn_dam
71-
O["scan_results"] = E.get_scan_results(tag)
72-
O["tumors"] = E.has_growths()
73-
O["ailments"] = E.has_diagnosable_ailments(scanner = TRUE)
65+
O["name"] = limb.name
66+
O["brute_ratio"] = limb.brute_ratio
67+
O["burn_ratio"] = limb.burn_ratio
68+
O["limb_flags"] = limb.limb_flags
69+
O["brute_dam"] = limb.brute_dam
70+
O["burn_dam"] = limb.burn_dam
71+
O["scan_results"] = limb.get_scan_results(tag)
72+
O["tumors"] = limb.has_growths()
73+
O["ailments"] = limb.has_diagnosable_ailments(scanner = TRUE)
7474
.["external_organs"] += list(O)
7575

7676
.["internal_organs"] = list()
7777
var/list/internal_organs = get_internal_organs()
78-
for(var/obj/item/organ/internal/I in internal_organs)
78+
for(var/obj/item/organ/internal/organ in internal_organs)
7979
var/list/O = list()
80-
O["name"] = I.name
81-
O["is_broken"] = I.is_broken()
82-
O["is_bruised"] = I.is_bruised()
83-
O["is_damaged"] = I.damage > 0
84-
O["scan_results"] = I.get_scan_results(tag)
85-
O["ailments"] = I.has_diagnosable_ailments(scanner = TRUE)
80+
O["name"] = organ.name
81+
O["is_broken"] = organ.is_broken()
82+
O["is_bruised"] = organ.is_bruised()
83+
O["is_damaged"] = organ.get_organ_damage() > 0
84+
O["scan_results"] = organ.get_scan_results(tag)
85+
O["ailments"] = organ.has_diagnosable_ailments(scanner = TRUE)
8686
.["internal_organs"] += list(O)
8787

8888
.["missing_organs"] = list()
@@ -270,34 +270,34 @@
270270
dat += "<tr><th>Organ</th><th>Damage</th><th>Status</th></tr>"
271271
subdat = list()
272272

273-
for(var/list/E in scan["external_organs"])
274-
if(!E)
273+
for(var/list/organ_data in scan["external_organs"])
274+
if(!organ_data)
275275
break
276276
var/row = list()
277-
row += "<tr><td>[E["name"]]</td>"
277+
row += "<tr><td>[organ_data["name"]]</td>"
278278
var/rowdata = list()
279-
if(E["brute_dam"] + E["burn_dam"] == 0)
279+
if(organ_data["brute_dam"] + organ_data["burn_dam"] == 0)
280280
rowdata += "None"
281281
else if(skill_level < SKILL_ADEPT)
282-
if(E["brute_dam"])
282+
if(organ_data["brute_dam"])
283283
rowdata += "<span class='bad'>Damaged</span>"
284-
if(E["burn_dam"])
284+
if(organ_data["burn_dam"])
285285
rowdata += "<span class='average'>Burned</span>"
286286
else
287-
if(E["brute_dam"])
288-
rowdata += "<span class='bad'>[capitalize(get_wound_severity(E["brute_ratio"], (E["limb_flags"] & ORGAN_FLAG_HEALS_OVERKILL)))] physical trauma</span>"
289-
if(E["burn_dam"])
290-
rowdata += "<span class='average'>[capitalize(get_wound_severity(E["burn_ratio"], (E["limb_flags"] & ORGAN_FLAG_HEALS_OVERKILL)))] burns</span>"
287+
if(organ_data["brute_dam"])
288+
rowdata += "<span class='bad'>[capitalize(get_wound_severity(organ_data["brute_ratio"], (organ_data["limb_flags"] & ORGAN_FLAG_HEALS_OVERKILL)))] physical trauma</span>"
289+
if(organ_data["burn_dam"])
290+
rowdata += "<span class='average'>[capitalize(get_wound_severity(organ_data["burn_ratio"], (organ_data["limb_flags"] & ORGAN_FLAG_HEALS_OVERKILL)))] burns</span>"
291291
row += "<td>[jointext(rowdata, "<br>")]</td>"
292292

293293
if(skill_level >= SKILL_ADEPT)
294294
var/list/status = list()
295-
if(E["scan_results"])
296-
status += "<span class='bad'>[english_list(E["scan_results"], nothing_text = "&nbsp;")]</span>"
297-
if(E["tumors"])
295+
if(organ_data["scan_results"])
296+
status += "<span class='bad'>[english_list(organ_data["scan_results"], nothing_text = "&nbsp;")]</span>"
297+
if(organ_data["tumors"])
298298
status += "<span class='bad'>Abnormal internal growth</span>"
299-
if(E["ailments"])
300-
status += "[jointext(E["ailments"], "<br>")]"
299+
if(organ_data["ailments"])
300+
status += "[jointext(organ_data["ailments"], "<br>")]"
301301
row += "<td>[status ? jointext(status, "<br>") : "Nominal."]</td>"
302302
else
303303
row += "<td>&nbsp;</td>"
@@ -311,24 +311,24 @@
311311
//Internal Organs
312312
if(skill_level >= SKILL_BASIC)
313313
dat += "<tr><th colspan='3'><center>Internal Organs</center></th></tr>"
314-
for(var/list/I in scan["internal_organs"])
314+
for(var/list/organ_data in scan["internal_organs"])
315315
var/row = list()
316-
row += "<tr><td>[I["name"]]</td>"
317-
if(I["is_broken"])
316+
row += "<tr><td>[organ_data["name"]]</td>"
317+
if(organ_data["is_broken"])
318318
row += "<td><span class='bad'>Severe</span></td>"
319-
else if(I["is_bruised"])
319+
else if(organ_data["is_bruised"])
320320
row += "<td><span class='average'>Moderate</span></td>"
321-
else if(I["is_damaged"])
321+
else if(organ_data["is_damaged"])
322322
row += "<td><span class='mild'>Minor</span></td>"
323323
else
324324
row += "<td>None</td>"
325325

326326
if(skill_level >= SKILL_ADEPT)
327327
var/list/status = list()
328-
if(I["scan_results"])
329-
status += "<span class='bad'>[english_list(I["scan_results"], nothing_text = "&nbsp;")]</span>"
330-
if(I["ailments"])
331-
status += "[jointext(I["ailments"], "<br>")]"
328+
if(organ_data["scan_results"])
329+
status += "<span class='bad'>[english_list(organ_data["scan_results"], nothing_text = "&nbsp;")]</span>"
330+
if(organ_data["ailments"])
331+
status += "[jointext(organ_data["ailments"], "<br>")]"
332332
row += "<td>[status ? jointext(status, "<br>") : "Nominal."]</td>"
333333
else
334334
row += "<td>&nbsp;</td>"

code/_helpers/text.dm

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,10 @@
2727
* from text that will be sent to the browser.
2828
*/
2929
#define strip_improper(input_text) replacetext(replacetext(input_text, "\proper", ""), "\improper", "")
30+
var/global/regex/starts_uppercase_regex = regex(@"^[A-Z]")
31+
var/global/regex/starts_lowercase_regex = regex(@"^[a-z]")
32+
#define is_proper(input_text) ((findtext(input_text, "\proper") == 1) || findtext(input_text, starts_uppercase_regex))
33+
#define is_improper(input_text) ((findtext(input_text, "\improper") == 1 || findtext(input_text, starts_lowercase_regex)))
3034

3135
//Used for preprocessing entered text
3236
//Added in an additional check to alert players if input is too long

code/_helpers/unsorted.dm

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -169,11 +169,6 @@ Turf and target are seperate in case you want to teleport some distance from a t
169169
return 1
170170
return 0
171171

172-
#if DM_VERSION < 516
173-
/proc/sign(x)
174-
return x!=0?x/abs(x):0
175-
#endif
176-
177172
/proc/getline(atom/M,atom/N)//Ultra-Fast Bresenham Line-Drawing Algorithm
178173
var/px=M.x //starting x
179174
var/py=M.y
@@ -182,8 +177,8 @@ Turf and target are seperate in case you want to teleport some distance from a t
182177
var/dy=N.y-py
183178
var/dxabs=abs(dx)//Absolute value of x distance
184179
var/dyabs=abs(dy)
185-
var/sdx=sign(dx) //Sign of x distance (+ or -)
186-
var/sdy=sign(dy)
180+
var/sdx=SIGN(dx) //Sign of x distance (+ or -)
181+
var/sdy=SIGN(dy)
187182
var/x=BITSHIFT_RIGHT(dxabs,1) //Counters for steps taken, setting to distance/2
188183
var/y=BITSHIFT_RIGHT(dyabs,1) //Bit-shifting makes me l33t. It also makes getline() unnessecarrily fast.
189184
var/j //Generic integer for counting

0 commit comments

Comments
 (0)