-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathD'LIRIUM Entity List (Updated 2026-01-21).txt
More file actions
2815 lines (2520 loc) · 272 KB
/
Copy pathD'LIRIUM Entity List (Updated 2026-01-21).txt
File metadata and controls
2815 lines (2520 loc) · 272 KB
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
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
//===========================================================================================//
//------------------------------ Resources for your custommap: ------------------------------//
//===========================================================================================//
//Store your resources in a folder that located near custommap and have the same name as the custommap.
//You can store all your resources in this folder. But (optionally !) you can also made in it a subfolders for specific filetypes or however you prefer to organize your files. To access files in such nested folders you need either - redefine "e_assets_folder" (more about it in the end of this chapter) or use relative path in resource name (note , you need to use normal "/" and NOT a windows "\").
//"Sprites" is a fancy word for "images". Their supported file format is ".png".
//If you need sprite with multiple images in it then you need to make "strip" - this means that you need to arrange all your individual frames horizontally inside one ".png" file.
//As example here is a "e_sprite" usage -
//If your custommap named "my_map.tmj" and it path is "%LocalAppdata%/delirium/maps/my_map.tmj" then image file "my_test.png" should have path "%LocalAppdata%/delirium/maps/my_map/my_test.png", and "e_sprite" properties should have "my_test" value in it.
//Supported sounds format is ".ogg". If your sound isn't in ".ogg" format, then you need a file converter (you can find many online or use some programms). You CAN'T just manually change file extension!
//As example here is a "e_sound" usage -
//If your custommap named "my_map.tmj" and it path is "%LocalAppdata%/delirium/maps/my_map.tmj" then sound file "my_test.ogg" should have path "%LocalAppdata%/delirium/maps/my_map/my_test.ogg", and "e_sound" properties should have "my_test" value in it.
//Supported text format is ".txt".
//As example here is a "e_text_file" usage -
//If your custommap named "my_map.tmj" and it path is "%LocalAppdata%/delirium/maps/my_map.tmj" then text file "my_test.txt" should have path "%LocalAppdata%/delirium/maps/my_map/my_test.txt", and "e_text_file" properties should have "my_test" value in it.
//There is also custommaps and prefabs rosources.
//Custommap resources is just another custommaps in .tmj format. You can switch between them using entity changelevel like levels chained in story mode.
//For custommaps resources there is no special rules - just make sure that they are have .tmj file format.
//You can read more about chaining custommaps to each others in entity changelevel notes and properties descriptions.
//While prefab resources are custommaps that you can spawn inside your current custommap.
//Prefabs should have "!prefab" prefix in the begining of their name and also have ".tmj" file format.
//You can read more about prefabs in Entity Prefaber notes and properties descriptions.
//As example here is a "e_pref_file" usage -
//If your custommap named "my_map.tmj" and it path is "%LocalAppdata%/delirium/maps/my_map.tmj" then prefab "!prefab_my_test.tmj" should have path "%LocalAppdata%/delirium/maps/my_map/!prefab_my_test.tmj", and "e_prefab_file" property should have "!prefab_my_test" value in it.
//Bellow is advanced work with folders
//All above examples are described for particullar scenario - when "e_assets_folder" = "".
//By default (when "e_assets_folder" = "") entity will search for resources in a folder that located near custommap and have the same name as the custommap.
//But you can redefine "e_assets_folder" to change this behaviour in to one of bellow.
//Folder near custommap
//No prefix.
//If you write a some folder name in "e_assets_folder" without any prefix then the game will use it as `folder in which custommap is + "e_assets_folder" + resource name variable`.
//Also, if you write a name of your custommap in the "e_assets_folder" it will be equivalent of "e_assets_folder" = "", with exception that prefabs which loaded by Entity Prefaber or console command "inject", will not inherit "e_assets_folder" from prefaber or "inject" command.
//This folder alway have READ access but may or may NOT have WRITE access. As turns out steam didn't give a write access for game that made in our game engine to this folder, so if you need read/write access to files for you workshop please look at "%/" prefix usage lower.
//LocalAppdata
//Prefix "%/" expands to "%LocalAppdata%/delirium/" under the game hood.
//If you write "%/" before folder name in "e_assets_folder" game will use it as `"%LocalAppdata%/delirium/" + "e_assets_folder"(without prefix) + resource name variable`.
//This folder always have full READ/WRITE access.
//Workshop subscriptions
//Prefix ">/" expands to "<Steam Path>/steamapps/workshop/content/670160/" under the game hood.
//If you write ">/" before folder name in "e_assets_folder" game will use it as `"<Steam Path>/steamapps/workshop/content/670160/" + "e_assets_folder"(without prefix) + resource name variable`.
//This folder always have READ ONLY access.
//Scripts context
//Prefix "?/" expands to "Curent script folder" under the game hood.
//It's affect only one complex command - "inject". Execute command "inject --help" in game for more info about use case of it.
//This folder alway have READ access but may or may NOT have WRITE access. In general script context works like custommaps one, but it is designed for scripts files.
//===========================================================================================//
//---------------------------------------- Entities: ----------------------------------------//
//===========================================================================================//
//-------------------- Entity Activator (ent_activator) --------------------//
{
//@brief - Used when you need to activate other entity. In most cases you will use it as simpliest entity with e_delay.
//@shape - always point
"e_name" (string) // current entity name
"e_tag" (string) // Second name of entity. Helpful if you need to chose certain entity from many that have the same name and types.
"e_target" (string) // name of entity that current entity will activate (if e_sort_method isn't 0 then "!Any" allowed)
"e_delay" (int) // delay before activating "e_target" ("30" means 1 second)
"e_refresh" (int) // entity refresh (never if "-1", "30" means 1 second)
"e_activated" (bool) // current entity activation ("true" if must activate on start)
"e_sound" (string) // activation sound (quiet if "sound_NULL")
"e_assets_folder" (string) // folder in which entity will search for sound resource file (you can leave it blank, if your resources inside folder that located near custommap and have the same name as the custommap)
"e_sort_method" (int) // "0" (used by default) - all entities specified in "e_target", below sort parametrs are ignored, "1" - one nearest entity on "e_sort_position" that match all not empty sorts, "2" - one furthest entity on "e_sort_position" that match all not empty sorts, "3" - "e_sort_position" nearest entities that match all not empty sorts, "4" - "e_sort_position" furthest entities that match all not empty sorts, "5" - "e_sort_position" some (random) entities that match all not empty sorts.
"e_sort_tag" (string) // you can add unique tag for entity and find it by this tag ("!Any" allowed)
"e_sort_type" (string) // you can find entity by it's type , like "ent_button", "ent_spawner", etc ("!Entity" allowed) . Also note that this is the only sort parameter that truly decrease CPU load caused by sort algorithm.
"e_sort_position" (int) // number of entity in order (if "e_sort_method" is "1" or "2") OR count of entities (if "e_sort_method" is "3" or "4" or "5")
"e_sort_radius" (int) // you can find entity in specified radius (or outside it if "e_sort_radius" less than or equel "0")
"e_sort_ox" (int) // x offset of "e_sort_radius"
"e_sort_oy" (int) // y offset of "e_sort_radius"
}
//-------------------- Entity Active Area (ent_forceload_area) --------------------//
{
//@brief - Used when you need to mark all objects (commonly non-entities) in specific zone to be processed by game in next frame (thats otherwise would not be processed by game due to optimization system).
//@shape - always rectangular
"e_name" (string) // current entity name
"e_tag" (string) // Second name of entity. Helpful if you need to chose certain entity from many that have the same name and types.
"e_activated" (bool) // (true by default) current entity activation ("true" if must activate on start)
"e_disable" (bool) // deactivate entity after performing activation
// Notes - Commonly, you don't need to use this entity, unless you build something really big (more than thousands of entities) or complex (like moving/checking/programming/deleting non-entity objects)!
// If you feel that you custommap is slowed down due to thousands of entities and you want to optimize it, please consider to look at "Entity Prefaber" first. You can still use combination of "Entity Active Area" and "unload_entities"==true, but "Entity Prefaber" is a much more elegant and efficient way to unload/load your mechanisms on runtime (since you control when entiites/objects from prefab should appear and dissapear in game while optimization system do it work every tick).
//
// D' have something like occlusion culling plus mobs loading/unloading in minecraft chunks. This optimization system automatically keep needed objects loaded, and unload anything else. And this entity exist to give mapmaker ability to manipulate this system.
// Basically this is work like this - on start of each frame game update what objects are loaded - i.e. should execute their code and draw their stuf. Unloaded object stored in RAM but didn't do almost anything, it's reduced ~95% of their impact on fps, since they are no more exist in the game in a normal form.
// Here is list of objects that are always loaded each frame: game cores, anything on screen, all projectiles, monsters that chase player, anything close enoght to loaded monsters and projectiles(64 pixel radius), obj_Player, obj_NPC, obj_interact_personalHeart, obj_nightmarishMass, obj_gib, obj_gear, obj_light_custom, and obj_portalOut.
// And then game have two option - load all entities (global variable "unload_entities" = "false") or load only ent_forceload_area (global variable "unload_entities" = true).
// And finally, no matter what option is, game will load anything located inside activated ent_forceload_area.
// To visualize this process you can save debug wrap(screenshot) of whole level with only loaded objects. You need to press Ctrl+Shift+F11 (besides displaying on screen this will save wrap in to %LocalAppdata%\delirium). Try to look on such wraps in story and custom maps.
// It is also worth mention that game optimization unloads entities/objects pretty fast, but game engine still perform some needed code on them every tick even in unloaded state, this is a remaining ~5% of fps impact mentioned earlier (i.e. on your custommap you CAN'T infinetely create entities/objects and leve them to be unloaded by oprimization system. They still will slowly drain game fps).
// While "Entity Prefaber" work slower than game optimization, but it stored unloaded entities/objects as JSON string inside prefabs, thus game engine didn't do anything with them inside prefabs, they just lay in RAM or on disk (i.e. you CAN AND SHOULD create and unload in to prefab entities/objects if you want to infinetely do something on your custommap. Prefabs didn't do anything to game fps while they are unused, it's just a string in RAM or file on disk).
}
//-------------------- Entity Active Type (ent_forceload_type) --------------------//
{
//@brief - Used when you need to mark all objects (commonly non-entities) of the specific type to be processed by game in next frame (thats otherwise would not be processed by game due to optimization system).
//@shape - always point
"e_name" (string) // current entity name
"e_tag" (string) // Second name of entity. Helpful if you need to chose certain entity from many that have the same name and types.
"e_activated" (bool) // current entity activation ("true" if must activate on start)
"e_forceload_type" (string) // Type of object which all instances will be forceloaded
"e_disable" (bool) // deactivate entity after performing activation
// Note - Don't use it on entities, they are forceloaded by default(unless unload_entities global is true)! And in general, don't use this entity unless you really need to keep specific type of objects always active.
// Always active objects can be accessed by entities even when they are too far from camera/player/projectiles/etc(read more in "Entity Active Area" notes), but in the same time always active objects can give a massive impact on FPS. Try your best to use it for a few frames or for objects that count are low on level.
// This entity is similar to "Entity Active Area" ("ent_forceload_area") but instead of keeping anything active in some area, this entity work with all level instances of the specific object type.
// As example of usage - in the story mode on graveyard crypt when all normal monsters dissapears, it's actually this entity forceloaded all monsters, before "Entity Destroyer" destroy them all. Without it, destroyer could destroy only those monsters that are close enough to player/camera, but not those that are in other custommap end.
}
//-------------------- Entity Breakable (ent_breakable) --------------------//
{
//@shape - always point
"e_name" (string) // current entity name
"e_tag" (string) // Second name of entity. Helpful if you need to chose certain entity from many that have the same name and types.
"e_target" (string) // name of entity that current entity will activate (if e_sort_method isn't 0 then "!Any" allowed)
"e_delay" (int) // delay before activating "e_target" ("30" means 1 second)
"e_sound" (string) // activation sound (quiet if "sound_NULL")
"e_activated" (bool) // current entity activation ("true" if must activate on start)
"e_sprite" (string) // current entity sprite
"e_sprite_alpha" (string) // sprite alpha ("0" to "1")
"e_sprite_remback" (bool) // makes all pixels with the sprite background color (left-bottom pixel) transparent (if "e_sprite" is external)
"e_sprite_smooth" (bool) // smooth the sprite edges (if "e_sprite_remback" is "true")
"e_sprite_ox" (int) // sprite X origin (if "e_sprite" is external)
"e_sprite_oy" (int) // sprite Y origin (if "e_sprite" is external)
"e_sprite_xscale" (float) // sprite X scale ("1" is default)
"e_sprite_yscale" (float) // sprite Y scale ("1" is default)
"e_sprite_angle" (int) // sprite angle (anti-clockwise, "0" is default)
"e_sprite_color" (color || int) // current entity color
"e_sprite_frames" (int) // number of images in current sprite
"e_sprite_image" (int) // current entity sprite frame (do not use this)
"e_sprite_anim" (float) // animation speed
"e_mask" (string) // collision mask for current entity
"e_mask_ox" (int) // mask X origin (if "e_mask" is external)
"e_mask_oy" (int) // mask Y origin (if "e_mask" is external)
"e_mask_remback" (bool) // makes all pixels with the mask background color (left-bottom pixel) transparent (if "e_mask" is external)
"e_assets_folder" (string) // folder in which entity will search for sound , sprite and mask resource files (you can leave it blank, if your resources inside folder that located near custommap and have the same name as the custommap)
"e_depth" (int) // Current entity depth. By default (if e_depth is UNDEFINED in Tiled - i.e. like when you pressed Delete with e_depth selected) entities set their e_depth to "-y" when they are created. Unlike the "depth" of the regular object , the e_depth of entities does not change on every tick. This allows you to easily manipulate e_depth in TIled and even at runtime. e_depth determines the drawing order - objects/entities/layers with higher e_depth are drawn "behind" objects/entities/layers with lower e_depth.
"e_solid_type" (int) // sets collision for entity ("0" // no collision, "1" // projectiles can pass, "2" // full solid)
"e_allowmonsters" (bool) // allows monsters to activate entity
"e_allownpc" (bool) // allows NPC to activate entity
"e_allowplayer" (bool) // allows player to activate entity
"e_allowtele" (bool) // allows teleportation ball to activate entity
"e_collision" (bool) // destroy projectiles on collision (if "e_shooter" is "true")
"e_collied_only_ranged" (bool) // if false then melee projectiles can simultaneously activate entity and hit nearby monster before been marked as "collieded" (if "e_collision" is "true")
"e_inspector" (string) // entity name that will be displayed on the inspector
"e_shadow" (bool) // allow entity to cast a shadow
"e_shadow_bot" (bool) // sets shadow to cast from bottom side
"e_shadow_yoffset" (int) // y offset of the shadow
"e_falloff_ref" (int) // the falloff reference relative to the listener (clamp)
"e_falloff_dist" (int) // the maximum falloff distance relative to the listener
"e_falloff_factor" (int) // the falloff factor (default "1")
"e_sort_method" (int) // "0" (used by default) - all entities specified in "e_target", below sort parametrs are ignored, "1" - one nearest entity on "e_sort_position" that match all not empty sorts, "2" - one furthest entity on "e_sort_position" that match all not empty sorts, "3" - "e_sort_position" nearest entities that match all not empty sorts, "4" - "e_sort_position" furthest entities that match all not empty sorts, "5" - "e_sort_position" some (random) entities that match all not empty sorts.
"e_sort_tag" (string) // you can add unique tag for entity and find it by this tag ("!Any" allowed)
"e_sort_type" (string) // you can find entity by it's type , like "ent_button", "ent_spawner", etc ("!Entity" allowed) . Also note that this is the only sort parameter that truly decrease CPU load caused by sort algorithm.
"e_sort_position" (int) // number of entity in order (if "e_sort_method" is "1" or "2") OR count of entities (if "e_sort_method" is "3" or "4" or "5")
"e_sort_radius" (int) // you can find entity in specified radius (or outside it if "e_sort_radius" less than or equel "0")
"e_sort_ox" (int) // x offset of "e_sort_radius"
"e_sort_oy" (int) // y offset of "e_sort_radius"
}
//-------------------- Entity Button (ent_button) --------------------//
{
//@brief - Used when you need to detect that player pressed enter/space key in specific radious. This entity can activate other entities, it is have <USE> interaction, one sprite and one sound.
//@shape - always point
"e_name" (string) // current entity name
"e_tag" (string) // Second name of entity. Helpful if you need to chose certain entity from many that have the same name and types.
"e_target" (string) // name of entity that current entity will activate (if e_sort_method isn't 0 then "!Any" allowed)
"e_delay" (int) // delay before activating "e_target" ("30" means 1 second)
"e_refresh" (int) // entity refresh (never if "-1", "30" means 1 second)
"e_sprite" (string) // current entity sprite
"e_sprite_alpha" (string) // sprite alpha ("0" to "1")
"e_sprite_remback" (bool) // makes all pixels with the sprite background color (left-bottom pixel) transparent (if "e_sprite" is external)
"e_sprite_smooth" (bool) // smooth the sprite edges (if "e_sprite_remback" is "true")
"e_sprite_ox" (int) // sprite X origin (if "e_sprite" is external)
"e_sprite_oy" (int) // sprite Y origin (if "e_sprite" is external)
"e_sprite_xscale" (float) // sprite X scale ("1" is default)
"e_sprite_yscale" (float) // sprite Y scale ("1" is default)
"e_sprite_angle" (int) // sprite angle (anti-clockwise, "0" is default)
"e_sprite_color" (color || int) // current entity color
"e_sprite_image" (int) // current entity sprite frame (do not use this)
"e_mask" (string) // collision mask for current entity
"e_mask_ox" (int) // mask X origin (if "e_mask" is external)
"e_mask_oy" (int) // mask Y origin (if "e_mask" is external)
"e_mask_remback" (bool) // makes all pixels with the mask background color (left-bottom pixel) transparent (if "e_mask" is external)
"e_sound" (string) // activation sound (quiet if "sound_NULL")
"e_assets_folder" (string) // folder in which entity will search for sound , sprite and mask resource files (you can leave it blank, if your resources inside folder that located near custommap and have the same name as the custommap)
"e_activated" (bool) // current entity activation ("true" if must activate on start)
"e_depth" (int) // Current entity depth. By default (if e_depth is UNDEFINED in Tiled - i.e. like when you pressed Delete with e_depth selected) entities set their e_depth to "-y" when they are created. Unlike the "depth" of the regular object , the e_depth of entities does not change on every tick. This allows you to easily manipulate e_depth in TIled and even at runtime. e_depth determines the drawing order - objects/entities/layers with higher e_depth are drawn "behind" objects/entities/layers with lower e_depth.
"e_usedistance" (int) // current entity use distance
"e_usetype" (int) // interaction icon ("0" - common, "1" - inspect, "2" - talk, "3" - pick up, "4" - save, "5" - sorcery, "6" - gift, "7" - door, "8" - button press, "9" - search, "10" - use, "11" - nothing)
"e_shooter" (bool) // can be activated by shooting
"e_toggle" (bool) // entity can be activated only by other entity
"e_allowmonsters" (bool) // allows monsters to activate entity
"e_allownpc" (bool) // allows NPC to activate entity
"e_allowplayer" (bool) // allows player to activate entity
"e_allowtele" (bool) // allows teleportation ball to activate entity
"e_collision" (bool) // destroy projectiles on collision (if "e_shooter" is "true")
"e_collied_only_ranged" (bool) // if false then melee projectiles can simultaneously activate entity and hit nearby monster before been marked as "collieded" (if "e_collision" is "true" and "e_shooter" is "true")
"e_inspector" (string) // entity name that will be displayed on the inspector
"e_falloff_ref" (int) // the falloff reference relative to the listener (clamp)
"e_falloff_dist" (int) // the maximum falloff distance relative to the listener
"e_falloff_factor" (int) // the falloff factor (default "1")
"e_sort_method" (int) // "0" (used by default) - all entities specified in "e_target", below sort parametrs are ignored, "1" - one nearest entity on "e_sort_position" that match all not empty sorts, "2" - one furthest entity on "e_sort_position" that match all not empty sorts, "3" - "e_sort_position" nearest entities that match all not empty sorts, "4" - "e_sort_position" furthest entities that match all not empty sorts, "5" - "e_sort_position" some (random) entities that match all not empty sorts.
"e_sort_tag" (string) // you can add unique tag for entity and find it by this tag ("!Any" allowed)
"e_sort_type" (string) // you can find entity by it's type , like "ent_button", "ent_spawner", etc ("!Entity" allowed) . Also note that this is the only sort parameter that truly decrease CPU load caused by sort algorithm.
"e_sort_position" (int) // number of entity in order (if "e_sort_method" is "1" or "2") OR count of entities (if "e_sort_method" is "3" or "4" or "5")
"e_sort_radius" (int) // you can find entity in specified radius (or outside it if "e_sort_radius" less than or equel "0")
"e_sort_ox" (int) // x offset of "e_sort_radius"
"e_sort_oy" (int) // y offset of "e_sort_radius"
}
//-------------------- Entity Calculator (ent_calculator) --------------------//
{
//@brief - Used when you need to perform operation over two input values(stored in this entity) and write result of operation in to another entity.
//@shape - always point
"e_name" (string) // current entity name
"e_tag" (string) // Second name of entity. Helpful if you need to chose certain entity from many that have the same name and types.
"e_activated" (bool) // current entity activation ("true" if must activate on start)
"e_input_a" (float) // first input value
"e_input_b" (float) // second input value
"e_input_a_multiplied" (bool) // (by default false) if true then additionaly multiply e_input_a value by delta time (same value as in "delta_speed" global variable) before passing it in to calculator action
"e_input_b_multiplied" (bool) // (by default false) if true then additionaly multiply e_input_b value by delta time (same value as in "delta_speed" global variable) before passing it in to calculator action
"e_calc_type" (int) // calculator operation type
"e_output_target" (string) // name of entity to set output value in ("!Player" and "!Global" allowed, aslo allowed !Any if e_sort_method != 0)
"e_output_parm" (string) // name of targeted entity parameter to set output value (if "e_output_target" have value, !Activate allowed)
"e_disable" (bool) // deactivate entity after performing activation
"e_sort_method" (int) // "0" (used by default) - all entities specified in "e_target", below sort parametrs are ignored, "1" - one nearest entity on "e_sort_position" that match all not empty sorts, "2" - one furthest entity on "e_sort_position" that match all not empty sorts, "3" - "e_sort_position" nearest entities that match all not empty sorts, "4" - "e_sort_position" furthest entities that match all not empty sorts, "5" - "e_sort_position" some (random) entities that match all not empty sorts.
"e_sort_tag" (string) // you can add unique tag for entity and find it by this tag ("!Any" allowed)
"e_sort_type" (string) // you can find entity by it's type , like "ent_button", "ent_spawner", etc ("!Entity" allowed) . Also note that this is the only sort parameter that truly decrease CPU load caused by sort algorithm.
"e_sort_position" (int) // number of entity in order (if "e_sort_method" is "1" or "2") OR count of entities (if "e_sort_method" is "3" or "4" or "5")
"e_sort_radius" (int) // you can find entity in specified radius (or outside it if "e_sort_radius" less than or equel "0")
"e_sort_ox" (int) // x offset of "e_sort_radius"
"e_sort_oy" (int) // y offset of "e_sort_radius"
"e_calc_type" (ACTIONS) {
#region REGULAR MATH
// Notes - brackets ( / ) show what type of data e_input_a and e_input_b should be. Again, order always is (a/b).
// By default e_input_a and e_input_b properties in Tiled have float type (that's if you have imported "D'LIRIUM Object Types" manually or by "Set up the map editor" script).
// Float and integer and boolean types implicitly converts to each others, but strings don't converts by themselves.
// And remember that conversion int --> float is not a problem, but float --> int will cause a fractional part loss.
"0" (f/f) "A + B" // Add "e_input_a" to "e_input_b"
"1" (f/f) "A - B" // Subtract "e_input_b" from "e_input_a"
"2" (f/f) "A * B" // Multiply "e_input_a" by "e_input_b"
"3" (f/f) "A / B" // Divide "e_input_a" by "e_input_b"
"4" (f/f) "A div B" // Integer division "e_input_a" by "e_input_b" i.e. get whole part of devision and remove reminder of devision
"5" (f/f) "A mod B" // Modular division "e_input_a" by "e_input_b" i.e. get the reminder of devision
"6" (f) "sqr{A}" // Square of "e_input_a"
"7" (f) "sqrt{A}" // Square root of "e_input_a"
"8" (f/f) "power{A} B times" // Multiply "e_input_a" by itself "e_input_b" number of times
"9" (f/f) "logn{A} n = B" // Get how many "e_input_b" we need to multiply to get "e_input_a"
"10" (f) "power{e} A times" // Multiply 2.718281828 (also known as Euler's Number) by itself "e_input_a" number of times
"11" (f) "ln{A}" // Get natural logarithm of "e_input_a"
"12" (f) "log2{A}" // Get how many 2's we need to multiply to get "e_input_a"
"13" (f) "log10{A}" // Get how many 10's we need to multiply to get "e_input_a"
"14" (f) "frac{A}" // Get fractional part of "e_input_a", that is, the part behind the decimal dot
"15" (f) "round{A}" // Get the round of "e_input_a" to the nearest integer (1.2 --> 1, 1.666 --> 2, -7.91 --> -8, -0.1 --> 0, 5 --> 5, etc)
"16" (f) "floor{A}" // Get the floor of "e_input_a", i.e like round but always down (4.1 --> 4, 4.9 --> 4, -4.1 --> -5, -4.9 --> -5, 6 --> 6, etc)
"17" (f) "ceil{A}" // Get the ceil of "e_input_a", i.e like round but always up (0.1 --> 1, 0.9 --> 1, -1.9 --> -1, -1.1 --> -1, 7 --> 7, etc)
"18" (f) "abs{A}" // Get the absolute value of a "e_input_a"
"19" (i/i) "int rng from A to B" // Generates random integer number (whole number like 0, 13, -5, etc) from "e_input_a" to "e_input_b"
"20" (f/f) "float rng from A to B"// Generates random float number (decimal number like 0.2, 4.42, -6.66, etc) from "e_input_a" to "e_input_b"
"21" (f) "is A are + or - or 0" // Get whether a "e_input_a" is positive, negative or neither(zero) and returns 1, -1, 0 respectively.
"22" (f/f) "get max A or B" // Get value from the maximum of "e_input_a" or "e_input_b"
"23" (f/f) "get min A or B" // Get value from the minimum of "e_input_a" or "e_input_b"
"24" (f/f) "get mean A and B" // Get the mean of "e_input_a" and "e_input_b" i.e. (a+b)/2
"25" () "get timer" // Get time that game has been running in microseconds, use it for hight precision calculation where time involved.
// (e.g. for you own delta time) Note that returned time changes even between different entitis instances in one frame!
// So best usage is to get it only with one calculator and frrom it write time to all entities where needed.
#endregion
#region TRIGONOMETRY
//Notes - Degrees and radians are just regular float numbers in game engine. You can feed float and integer numbers into trigonometry operation.
//If operation need degrees it will treat any number data like degrees . And if operation need radian it will treat any number data like radian.
//So use 26 and 27 operations before feed degrees in to operation that expect radians and vise versa.
//For brevity's sake in this paragraph (not in game), "pi" is equal 3.14159265 (NOT 180 degrees).
"26" (d) "degrees A to radians" // Convert "e_input_a" degrees to radians i.e. a*(pi/180), (180 --> pi, 57.29578 --> 1, etc)
"27" (r) "radians A to degrees" // Convert "e_input_a" radians to degrees i.e. a*(180/pi), (1 --> 57.29578, pi --> 180, etc)
"28" (r) "sin{A rad} return rad" // Get the sine of "e_input_a" radians (returned result are in range from -1 to 1)
"29" (r) "cos{A rad} return rad" // Get the cosine of "e_input_a" radians (returned result are in range from -1 to 1)
"30" (r) "tan{A rad} return rad" // Get the tangens of "e_input_a" radians, note that pi/2 or -pi/2 (and similar) in theory need to return infinity but in reality they will just return huge numbers
"31" (r) "arcsin{A rad} return rad" // Get the arcsin of "e_input_a" radians, note that this operation will only accept a value between -1 and 1, anything else will be clamped to -1 or 1 (result are in range from -pi/2 to pi/2)
"32" (r) "arccos{A rad} return rad" // Get the arccos of "e_input_a" radians, note that this operation will only accept a value between -1 and 1, anything else will be clamped to -1 or 1 (result are in range from 0 to pi/2)
"33" (r) "arctan{A rad} return rad" // Get the arctan of "e_input_a" radians (returned result are in range from -pi/2 to pi/2)
"34" (f/f) "arctan of 2 sides return rad" // Get the arctan where "e_input_a" is opposite side of triangle and "e_input_b" is adjacent side of triangle
"35" (d) "dsin{A deg} return rad" // Get the sine of "e_input_a" degrees (returned result are in range from -1 to 1)
"36" (d) "dcos{A deg} return rad" // Get the cosine of "e_input_a" degrees (returned result are in range from -1 to 1)
"37" (d) "dtan{A deg} return rad" // Get the tangens of "e_input_a" degrees, note that 90 or -90 (and similar) in theory need to return infinity but in reality they will just return huge numbers
"38" (r) "darcsin{A rad} return deg" // Get the arcsin of "e_input_a" radians, note that this operation will only accept a value between -1 and 1, anything else will be clamped to -1 or 1 (result are in range from -90 to 90)
"39" (r) "darccos{A rad} return deg" // Get the arccos of "e_input_a" radians, note that this operation will only accept a value between -1 and 1, anything else will be clamped to -1 or 1 (result are in range from 0 to 180)
"40" (r) "darctan{A rad} return deg" // Get the arctan of "e_input_a" radians (returned result are in range from -pi/2 to pi/2)
"41" (f/f) "arctan of 2 sides return deg" // Get the arctan where "e_input_a" is opposite side of triangle and "e_input_b" is adjacent side of triangle
"42" (f/f) "distance from here to x=A,y=B" // Distance from this calculator x;y to point with "e_input_a";"e_input_b"
"43" (f/f) "angle between here and x=A,y=B"// Angle between this calculator x;y and point with "e_input_a";"e_input_b"
"44" (d/d) "angle difference" // Smallest difference between "e_input_a" degrees and and "e_input_b" degrees (returned value will be between -180 and 180 degrees)
"45" (f/d) "component_x" // Get the x component from vector with lenght "e_input_a" and angle "e_input_b" degrees
"46" (f/d) "component_y" // Get the y component from vector with lenght "e_input_a" and angle "e_input_b" degrees
#endregion
#region STRINGS
// Notes - Pay attention to types when working with strings (for example - subtract string from string or cosine of "Hello World" will cause game to crash)
// If you work with string and receive DoConv error that can mean that you feed string in to operation that need number or vise versa.
// Also keep in mind that strings are indexed from 1. So 1 is the first position in the string, not 0 as you may expect.
"47" (s) "num from str A" // Get all numbers from "e_input_a" string and convert them to integer (only 0..9), return -1 if there is no number symbols in string
"48" (s) "rough num from A str" // Attempt to convert "e_input_a" string to float number (0..9 and - and .) , but be awere that any other symbols will crash the game
"49" (f/i) "num A to str with B amoun frac part" // Convert "e_input_a" float/integer number to string, "e_input_b" determine how many numbers from fractional part will be convertd
"50" (s/s) "concatenate str A + str B" // Add "e_input_a" as string to "e_input_b" string (aka concatenation operation)
"51" (s/s) "count appears of str B in str A" // Count amount of times "e_input_b" substring appears within a "e_input_a" string (b = die, a = i_die_from_diet --> 2)
"52" (s/i) "get symbol at B in str A" // Get symbol at "e_input_b" position within a "e_input_a" string (b = 3, a = qwertyASDFG --> e)
"53" (s/i) "remove symbol at B from str A" // Remove symbol at "e_input_b" position within a "e_input_a" string (b = 3, a = qwertyASDFG --> qwrtyASDFG)
"54" (s/i) "get B symbols from begin of str A" // Get "e_input_b" amount of symbols from the begin of "e_input_a" string (b = 3, a = qwertyASDFG --> qwe)
"55" (s/i) "get B symbols from end of str A" // Get "e_input_b" amount of symbols from the end of "e_input_a" string (b = 3, a = qwertyASDFG --> DFG)
"56" (s/i) "remove B symbols from begin of str A"// Remove "e_input_b" amount of symbols from the begin of "e_input_a" string (b = 3, a = qwertyASDFG --> rtyASDFG)
"57" (s/i) "remove B symbols from end of str A" // Remove "e_input_b" amount of symbols from the end of "e_input_a" string (b = 3, a = qwertyASDFG --> qwertyAS)
"58" (s/s) "find pos of first str B in str A" // Find postion of first "e_input_b" substring in the "e_input_a" string, return 0 if there is no such substring (b = die, a = i_die_from_diet --> 3)
"59" (s/s) "find pos of last str B in str A" // Find postion of last "e_input_b" substring in the "e_input_a" string, return 0 if there is no such substring (b = die, a = i_die_from_diet --> 12)
"60" (s) "remove all non let from str A" // Remove from "e_input_a" string all symbols that are not classed as letters (keep all A..Z and a..z)
"61" (s) "remove all non let+dig from str A" // Remove from "e_input_a" string all symbols that are not classed as letters and numbers (keep all A..Z and a..z and 1..9)
"62" (s) "number of symbols in str A" // Get number of symbols in "e_input_a" string.
"63" (s/s) "remove first str B from str A" // Remove from "e_input_a" string first founded "e_input_b" substring.
"64" (s/s) "remove last str B from str A" // Remove from "e_input_a" string last founded "e_input_b" substring.
"65" (s/s) "remove all str B from str A" // Remove from "e_input_a" string all founded "e_input_b" substring.
"66" (s) "str A to upercase" // Get modified "e_input_a" string in which all upercase symbols replaced with the lowercase (works only with English alphabet A..Z)
"67" (s) "str A to lowercase" // Get modified "e_input_a" string in which all lowercase symbols replaced with the upercase (works only with English alphabet a..z)
"68" (s/i) "power_string{A} B times" // Add "e_input_a" string to itself "e_input_b" times
"69" (?) "(Debug) typeof A" // Debug operation! Get data type of "e_input_a" variable as string. Helpfull to understanding how game "see" Tiled types
"70" (s) "BIN to INT" // Convert "e_input_a" string that represent binary number (0 and 1) to integer number (0..9) (support only positive numbers)
"71" (i) "INT to BIN" // Convert "e_input_a" integer number (0..9) to string that represent binary number (0 and 1), use "e_input_b" to set min length of output (positive numbers will be filled with additional 0's, negative with 1's)
"72" (s) "HEX to INT" // Convert "e_input_a" string that represent hexadecimal number (0..F)or(0..f) to integer number (0..9)
"73" (i) "INT to HEX" // Convert "e_input_a" integer number (0..9) to string that represent hexadecimal number (0..F), use "e_input_b" to set min length of output (positive numbers will be filled with additional 0's, negative with F's)
"74" (s) "HEX to BIN" // Convert "e_input_a" string that represent hexadecimal number (0..F)or(0..f) to string that represent binary number (0 and 1)
"75" (s) "BIN to HEX" // Convert "e_input_a" string that represent binary number(0 and 1) to string that represent hexadecimal number (0..F)
"76" (i) "GAME int color to RGB str color" // Convert "e_input_a" integer that Game use as BGR color in to RGB string (255 --> ff0000, 65280 --> 00ff00, 16711680 --> 0000ff, 9293562 --> face8d) (note alpha is separated entity property)
"77" (s) "RGB str color to GAME int color" // Convert "e_input_a" RGB string in to integer that Game use as BGR color (ff0000 --> 255, 00ff00 --> 65280, 0000ff --> 16711680, face8d --> 9293562) (note alpha is separated entity property)
#endregion
#region BITWISE
"78" (i/i) "bits A AND bits B"// Compares each bit of the "e_input_a" integer to the corresponding bit of the "e_input_b" integer, if both bits are 1, corresponding result bit is set to 1
"79" (i/i) "bits A OR bits B" // Compares each bit of the "e_input_a" integer to the corresponding bit of the "e_input_b" integer, if at lest one bit are 1, corresponding result bit is set to 1
"80" (i/i) "bits A XOR bits B"// Compares each bit of the "e_input_a" integer to the corresponding bit of the "e_input_b" integer, if one bit are 1 and other is 0, corresponding result bit is set to 1
"81" (i/i) "bits shift A << B"// Shift bits of the "e_input_a" integer to the left "e_input_b" times
"82" (i/i) "bits shift A >> B"// Shift bits of the "e_input_a" integer to the right "e_input_b" times
"83" (i/i) "bits NOT A"// Reverse "e_input_a" bits
#endregion
}
}
//-------------------- Entity Changelevel (ent_changelevel) --------------------//
{
//@brief - Used when you need to change current custommap, but keep inventory, stats and healthbars of the player.
//@shape - always point
//@entry_assets - by default this entity will search in entry custommap resource folder no matter which custommap is currently runned.
"e_name" (string) // current entity name
"e_tag" (string) // Second name of entity. Helpful if you need to chose certain entity from many that have the same name and types.
"e_activated" (bool) // current entity activation ("true" if must activate on start)
"e_level_next" (string) // Name of tmj custommap file without extension
"e_assets_folder" (string) // folder in which entity will search for custommap resource file (you can leave it blank, if your resources inside folder that located near custommap and have the same name as the custommap)
"e_assets_folder_entry" (bool) // (by default true) can be set to false in case you want to store your custommaps in nested structure, i.e. same as all other custommap resources (but nested structure is not advisable!)
//Note - This entity work exactly as in story mode , except it does not have a "end" statistics screen for each custommap
//Game have only "final stats" screen when final custommap in chain finished via "Level End" object or with "arcade_finish" global variable.
//If you need statistics screen for specific custommap in chain you need to make your own by using entities display, grabber and calculator (and others if you wish).
//In the "////global variables////" section of this file you can find all statistics related global variabless.
//As rule of thumb, store your 2nd-Nth custommaps in resource folder of entry custommap.
//(Entry custommap is a custommap that player selected to start in arcade menu OR custommap that you start from Tiled)
//Examples of usage -
//Suppose for all bellow situations you follow above rule of thumb and you didn't change "e_assets_folder_entry".
//You have an entry custommap that named "my_map.tmj" and it path is "%LocalAppdata%/delirium/maps/my_map.tmj" .
//Note - steam paths equivalents behave similar (like "<Steam Path>/steamapps/workshop/content/670160/<your workshop item id>/my_map.tmj" for subscribed workshop item and "<Game Folder>/UGC/my_map.tmj" for moment when you upload your custommap in to workshop). Since entities work with relative paths you don't need to bother about paths bellow your entry map (unless you override "e_assets_folder" like in situation 4).
//Situation 1. From entry custommap to next custommap located in the same workshop item.
//If your next custommap have path "%LocalAppdata%/delirium/maps/my_map/chapter_one.tmj", then "e_level_next" property should have "chapter_one" value in it.
//Situation 2. From 2nd-Nth custommap to next custommap located in the same workshop item.
//If your next custommap have path "%LocalAppdata%/delirium/maps/my_map/chapter_two.tmj", then "e_level_next" property should have "chapter_two" value in it.
//As you can see, it is similar to situation 1.
//Situation 3. From 2nd-Nth custommap to entry custommap located in the same workshop item.
//"e_level_next" property should have "../my_map" value in it.
//".." (double dot) signifies moving up one directory level from the current one. In this situation "%LocalAppdata%/delirium/maps/my_map/../my_map.tmj" evaluates in to "%LocalAppdata%/delirium/maps/my_map.tmj".
//Situation 4. From any custommap to workshop item custommap (of your own or even of other mapmakers).
//If next custommap have path "<Steam Path>/steamapps/workshop/content/670160/2189377165/GRF_D'OOM_(E1M1)_V3.tmj", then "e_assets_folder" property should have ">/2189377165" value in it and "e_level_next" property should have "GRF_D'OOM_(E1M1)_V3" value in it.
//Don't forget to set required custommaps via steam "Add/Remove Required Items" on your workshop items page (so player downloads them automatically by downloading your workshop item).
}
//-------------------- Entity Cinematic (ent_cinematic) --------------------//
{
//@shape - always point
"e_activated" (bool) // current entity activation ("true" if must activate on start)
"e_name" (string) // current entity name
"e_tag" (string) // Second name of entity. Helpful if you need to chose certain entity from many that have the same name and types.
"e_target" (string) // name of entity that current entity will activate (if e_sort_method isn't 0 then "!Any" allowed)
"e_delay" (int) // delay before activating "e_target" ("30" means 1 second)
"e_refresh" (int) // entity refresh (never if "-1", "30" means 1 second)
"e_sprite" (string) // current entity sprite
"e_sprite_alpha" (string) // sprite alpha ("0" to "1")
"e_sprite_remback" (bool) // makes all pixels with the sprite background color (left-bottom pixel) transparent (if "e_sprite" is external)
"e_sprite_smooth" (bool) // smooth the sprite edges (if "e_sprite_remback" is "true")
"e_sprite_ox" (int) // sprite X origin (if "e_sprite" is external)
"e_sprite_oy" (int) // sprite Y origin (if "e_sprite" is external)
"e_sprite_frames" (int) // number of images in current sprite
"e_sprite_image" (int) // current entity sprite frame (do not use this)
"e_sprite_anim" (float) // animation speed
"e_sound" (string) // activation sound (quiet if "sound_NULL")
"e_assets_folder" (string) // folder in which entity will search for sound and sprite resource files (you can leave it blank, if your resources inside folder that located near custommap and have the same name as the custommap)
"e_cgi_above" (bool) // sets cinematic to draw above GUI (if "true")
"e_cgi_frame" (bool) // draws game frame while cinematic is activated
"e_draw_priority" (int) // sets the draw order if draws above screen or GUI
"e_sort_method" (int) // "0" (used by default) - all entities specified in "e_target", below sort parametrs are ignored, "1" - one nearest entity on "e_sort_position" that match all not empty sorts, "2" - one furthest entity on "e_sort_position" that match all not empty sorts, "3" - "e_sort_position" nearest entities that match all not empty sorts, "4" - "e_sort_position" furthest entities that match all not empty sorts, "5" - "e_sort_position" some (random) entities that match all not empty sorts.
"e_sort_tag" (string) // you can add unique tag for entity and find it by this tag ("!Any" allowed)
"e_sort_type" (string) // you can find entity by it's type , like "ent_button", "ent_spawner", etc ("!Entity" allowed) . Also note that this is the only sort parameter that truly decrease CPU load caused by sort algorithm.
"e_sort_position" (int) // number of entity in order (if "e_sort_method" is "1" or "2") OR count of entities (if "e_sort_method" is "3" or "4" or "5")
"e_sort_radius" (int) // you can find entity in specified radius (or outside it if "e_sort_radius" less than or equel "0")
"e_sort_ox" (int) // x offset of "e_sort_radius"
"e_sort_oy" (int) // y offset of "e_sort_radius"
"e_progress" (bool) // Cinematic progress state. Do not change it manually! You need to activate cinematic to properly pause/play it.
}
//-------------------- Entity Comparator (ent_comparator) --------------------//
{
//@brief - Used when you need to perform operation over two input values(stored in this entity) and write result of operation in to another entity. Similar to "Entity Calculator" but separated in to independant entity for convenience reasons.
//@shape - always point
"e_name" (string) // current entity name
"e_tag" (string) // Second name of entity. Helpful if you need to chose certain entity from many that have the same name and types.
"e_input_a" (float) // first input value
"e_input_b" (float) // second input value
"e_activated" (bool) // current entity activation ("true" if must activate on start)
"e_compare_type" (int) // comparator operation type
"e_output_target" (string) // name of entity to set output value in ("!Player" and "!Global" allowed, aslo allowed !Any if e_sort_method != 0)
"e_output_parm" (string) // name of targeted entity parameter to set output value (if "e_output_target" have value, !Activate allowed)
"e_disable" (bool) // deactivate entity after performing activation
"e_sort_method" (int) // "0" (used by default) - all entities specified in "e_target", below sort parametrs are ignored, "1" - one nearest entity on "e_sort_position" that match all not empty sorts, "2" - one furthest entity on "e_sort_position" that match all not empty sorts, "3" - "e_sort_position" nearest entities that match all not empty sorts, "4" - "e_sort_position" furthest entities that match all not empty sorts, "5" - "e_sort_position" some (random) entities that match all not empty sorts.
"e_sort_tag" (string) // you can add unique tag for entity and find it by this tag ("!Any" allowed)
"e_sort_type" (string) // you can find entity by it's type , like "ent_button", "ent_spawner", etc ("!Entity" allowed) . Also note that this is the only sort parameter that truly decrease CPU load caused by sort algorithm.
"e_sort_position" (int) // number of entity in order (if "e_sort_method" is "1" or "2") OR count of entities (if "e_sort_method" is "3" or "4" or "5")
"e_sort_radius" (int) // you can find entity in specified radius (or outside it if "e_sort_radius" less than or equel "0")
"e_sort_ox" (int) // x offset of "e_sort_radius"
"e_sort_oy" (int) // y offset of "e_sort_radius"
"e_compare_type" (ACTIONS) {
"0" // "A == B" // is e_input_a equal to e_input_b
"1" // "A < B" // is e_input_a less than e_input_b
"2" // "A > B" // is e_input_a greater than e_input_b
"3" // "A <= B" // is e_input_a less or equal to e_input_b
"4" // "A >= B" // is e_input_a greater or equal to e_input_b
"5" // "A != B" // is e_input_a not equal e_input_b
"6" // "A && B" // logical e_input_a AND e_input_b
"7" // "A || B" // logical e_input_a OR e_input_b
"8" // "A ^^ B" // logical e_input_a XOR e_input_b
"9" // "!A" // logical NOT e_input_a
}
}
//-------------------- Entity Console (ent_console) --------------------//
{
//@brief - Used when you need to execute console command on your custommap.
//@shape - always point
//@unoptimized - try to not spam activation of this entity
"e_name" (string) // current entity name
"e_tag" (string) // Second name of entity. Helpful if you need to chose certain entity from many that have the same name and types.
"e_activated" (bool) // current entity activation ("true" if must activate on start)
"e_command" (string) // command to execute when entity activated. Executed before e_script.
"e_script (string) // name (without extension) of the .dscript file to execute commands from it.
"e_assets_folder" (string) // folder in which entity will search for script resource file (you can leave it blank, if your resources inside folder that located near custommap and have the same name as the custommap)
"e_cheater_flag" (bool) // if false then player will not be marked as cheater. Set it to true if you are implementing your own cheat/debug system (i.e. if this entity will not indended to be activated in a normal playthrough of your custommap).
"e_respond_sound" (bool) // if false then entity will not produce any sound that you regularly hear when executing commands manually. Set it to true if you need to debug your mechanism.
//Note - if you need to use complex commands, then you need to execute command "level enable complex commands" first (NOT just "enable complex commands"). You need to do this only once, right after the custommap start. This command will initialise all needed resources for complex commands to work, but will forbid player to use complex commands via manual console (unless player will enable them by himself explicitly via manual console). "level enable complex commands" is bound to level thus will not affect other custommaps or story mode.
//You can't use this command manually!
}
//-------------------- Entity Constant (ent_constant) --------------------//
{
//@brief - Used when you need to program(write) value(that you get from game vide constant) in to another entity. Like vanilla colors (that you can write in to level_lightmap/e_sprite_color/e_light_color/etc), monsters maxHP/speed/viewdistance, items heal/damage and many more others. This also ensures that your custommap will use the right values on whichever version of the game it is running on.
//@shape - always point
"e_name" (string) // current entity name
"e_tag" (string) // Second name of entity. Helpful if you need to chose certain entity from many that have the same name and types.
"e_activated" (bool) // current entity activation ("true" if must activate on start)
"e_input" (float || string) // This entity property will be used to programm "e_output_parm" of the "e_output_target" entity (work if "e_constant" == ""). Basically this property work identical as "e_prog_value" of the Entity Programmer.
"e_constant" (string) // Enity will searсh for game constant with "e_constant" name (you can find all names from "////constants names////" section) and set output value to value of such constant instead of using "e_input". If name of the constant spelled incorrectly then nothing will be programmed and will be generated custommap error (you need to use "ignorecustom" command to switch visibility of thous errors).
"e_output_target" (string) // name of entity to set output value in ("!Player" and "!Global" allowed, aslo allowed !Any if e_sort_method != 0)
"e_output_parm" (string) // name of targeted entity parameter to set output value (if "e_output_target" have value, !Activate allowed)
"e_disable" (bool) // deactivate entity after performing activation
"e_sort_method" (int) // "0" (used by default) - all entities specified in "e_target", below sort parametrs are ignored, "1" - one nearest entity on "e_sort_position" that match all not empty sorts, "2" - one furthest entity on "e_sort_position" that match all not empty sorts, "3" - "e_sort_position" nearest entities that match all not empty sorts, "4" - "e_sort_position" furthest entities that match all not empty sorts, "5" - "e_sort_position" some (random) entities that match all not empty sorts.
"e_sort_tag" (string) // you can add unique tag for entity and find it by this tag ("!Any" allowed)
"e_sort_type" (string) // you can find entity by it's type , like "ent_button", "ent_spawner", etc ("!Entity" allowed) . Also note that this is the only sort parameter that truly decrease CPU load caused by sort algorithm.
"e_sort_position" (int) // number of entity in order (if "e_sort_method" is "1" or "2") OR count of entities (if "e_sort_method" is "3" or "4" or "5")
"e_sort_radius" (int) // you can find entity in specified radius (or outside it if "e_sort_radius" less than or equel "0")
"e_sort_ox" (int) // x offset of "e_sort_radius"
"e_sort_oy" (int) // y offset of "e_sort_radius"
}
//-------------------- Entity Counter (ent_counter) --------------------//
{
//@brief - Used when you need to activate other entity after specific amount of this entity activations.
//@shape - always point
"e_name" (string) // current entity name
"e_tag" (string) // Second name of entity. Helpful if you need to chose certain entity from many that have the same name and types.
"e_target" (string) // name of entity that current entity will activate (if e_sort_method isn't 0 then "!Any" allowed)
"e_delay" (int) // delay before activating "e_target" ("30" means 1 second)
"e_refresh" (int) // entity refresh (never if "-1", "30" means 1 second)
"e_activated" (bool) // current entity activation ("true" if must activate on start)
"e_sound" (string) // activation sound (quiet if "sound_NULL")
"e_assets_folder" (string) // folder in which entity will search for sound resource file (you can leave it blank, if your resources inside folder that located near custommap and have the same name as the custommap)
"e_counter" (int) // number of current entity activations until target activation
"e_counter_reset" (bool) // defines it counter will reset number of activations after reaching the goal
"e_sort_method" (int) // "0" (used by default) - all entities specified in "e_target", below sort parametrs are ignored, "1" - one nearest entity on "e_sort_position" that match all not empty sorts, "2" - one furthest entity on "e_sort_position" that match all not empty sorts, "3" - "e_sort_position" nearest entities that match all not empty sorts, "4" - "e_sort_position" furthest entities that match all not empty sorts, "5" - "e_sort_position" some (random) entities that match all not empty sorts.
"e_sort_tag" (string) // you can add unique tag for entity and find it by this tag ("!Any" allowed)
"e_sort_type" (string) // you can find entity by it's type , like "ent_button", "ent_spawner", etc ("!Entity" allowed) . Also note that this is the only sort parameter that truly decrease CPU load caused by sort algorithm.
"e_sort_position" (int) // number of entity in order (if "e_sort_method" is "1" or "2") OR count of entities (if "e_sort_method" is "3" or "4" or "5")
"e_sort_radius" (int) // you can find entity in specified radius (or outside it if "e_sort_radius" less than or equel "0")
"e_sort_ox" (int) // x offset of "e_sort_radius"
"e_sort_oy" (int) // y offset of "e_sort_radius"
}
//-------------------- Entity Decor (ent_decor) --------------------//
{
//@brief - Used when you need simple(no <USE> interaction) decorative object with sprite, hitbox, and shadow.
//@shape - always point
"e_name" (string) // current entity name
"e_tag" (string) // Second name of entity. Helpful if you need to chose certain entity from many that have the same name and types.
"e_activated" (bool) // current entity activation ("true" if must activate on start)
"e_sprite" (string) // current entity sprite
"e_sprite_alpha" (string) // sprite alpha ("0" to "1")
"e_sprite_remback" (bool) // makes all pixels with the sprite background color (left-bottom pixel) transparent (if "e_sprite" is external)
"e_sprite_smooth" (bool) // smooth the sprite edges (if "e_sprite_remback" is "true")
"e_sprite_ox" (int) // sprite X origin (if "e_sprite" is external)
"e_sprite_oy" (int) // sprite Y origin (if "e_sprite" is external)
"e_sprite_xscale" (float) // sprite X scale ("1" is default)
"e_sprite_yscale" (float) // sprite Y scale ("1" is default)
"e_sprite_angle" (int) // sprite angle (anti-clockwise, "0" is default)
"e_sprite_color" (color || int) // current entity color
"e_sprite_frames" (int) // number of images in current sprite
"e_sprite_image" (int) // current entity sprite frame (do not use this)
"e_sprite_anim" (float) // animation speed
"e_mask" (string) // collision mask for current entity
"e_mask_ox" (int) // mask X origin (if "e_mask" is external)
"e_mask_oy" (int) // mask Y origin (if "e_mask" is external)
"e_mask_remback" (bool) // makes all pixels with the mask background color (left-bottom pixel) transparent (if "e_mask" is external)
"e_assets_folder" (string) // folder in which entity will search for sprite and mask resource files (you can leave it blank, if your resources inside folder that located near custommap and have the same name as the custommap)
"e_depth" (int) // Current entity depth. By default (if e_depth is UNDEFINED in Tiled - i.e. like when you pressed Delete with e_depth selected) entities set their e_depth to "-y" when they are created. Unlike the "depth" of the regular object , the e_depth of entities does not change on every tick. This allows you to easily manipulate e_depth in TIled and even at runtime. e_depth determines the drawing order - objects/entities/layers with higher e_depth are drawn "behind" objects/entities/layers with lower e_depth.
"e_solid_type" (int) // sets collision for entity ("0" - no collision, "1" - projectiles can pass, "2" - full solid)
"e_inspector" (string) // entity name that will be displayed on the inspector
"e_shadow" (bool) // allow entity to cast a shadow
"e_shadow_bot" (bool) // sets shadow to cast from bottom side
"e_shadow_yoffset" (int) // y offset of the shadow
}
//-------------------- Entity Destroyer (ent_destroyer) --------------------//
{
//@brief - Used when you need to delete other entity from the level field on runtime.
//@shape - always point
"e_name" (string) // current entity name
"e_tag" (string) // Second name of entity. Helpful if you need to chose certain entity from many that have the same name and types.
"e_target" (string) // name of entity that current entity will activate (if e_sort_method isn't 0 then "!Any" allowed)
"e_delay" (int) // delay before activating "e_target" ("30" means 1 second)
"e_sound" (string) // activation sound (quiet if "sound_NULL")
"e_assets_folder" (string) // folder in which entity will search for sound resource file (you can leave it blank, if your resources inside folder that located near custommap and have the same name as the custommap)
"e_activated" (bool) // current entity activation ("true" if must activate on start)
"e_destroy_target" (string) // name of entity that will be destroyed
"e_destroy_self" (bool) // self-destroy after all work done
"e_disable" (bool) // deactivate entity after performing activation
"e_sort_method" (int) // "0" (used by default) - all entities specified in "e_target", below sort parametrs are ignored, "1" - one nearest entity on "e_sort_position" that match all not empty sorts, "2" - one furthest entity on "e_sort_position" that match all not empty sorts, "3" - "e_sort_position" nearest entities that match all not empty sorts, "4" - "e_sort_position" furthest entities that match all not empty sorts, "5" - "e_sort_position" some (random) entities that match all not empty sorts.
"e_sort_tag" (string) // you can add unique tag for entity and find it by this tag ("!Any" allowed)
"e_sort_type" (string) // you can find entity by it's type , like "ent_button", "ent_spawner", etc ("!Entity" allowed) . Also note that this is the only sort parameter that truly decrease CPU load caused by sort algorithm.
"e_sort_position" (int) // number of entity in order (if "e_sort_method" is "1" or "2") OR count of entities (if "e_sort_method" is "3" or "4" or "5")
"e_sort_radius" (int) // you can find entity in specified radius (or outside it if "e_sort_radius" less than or equel "0")
"e_sort_ox" (int) // x offset of "e_sort_radius"
"e_sort_oy" (int) // y offset of "e_sort_radius"
}
//-------------------- Entity Dialogue (ent_dialogue) --------------------//
{
//@brief - Used when you need dialogues pop-ups. Hightly customizable! You can even have "options"("choices") that activate their own targeted entities (i.e. you can make branched dialogues).
//@shape - always point
//Basis
"e_name" (string) // current entity name
"e_tag" (string) // Second name of entity. Helpful if you need to chose certain entity from many that have the same name and types.
"e_target" (string) // target name to activate it after dialogue ends (if e_sort_method isn't 0 then "!Any" allowed)
"e_delay" (int) // delay before activating "e_target" AND "e_option_0_target"-"e_option_8_target" ("30" means 1 second)
"e_refresh" (int) // entity refresh (never if "-1", "30" means 1 second)
"e_activated" (bool) // current entity activation ("true" if must activate on start)
"e_assets_folder" (string) // folder in which entity will search for sound , sprite and text resource files (you can leave it blank, if your resources inside folder that located near custommap and have the same name as the custommap)
//Sound
"e_sound" (string) // text typing sound (quiet if "sound_NULL" or "")
"e_sound_poly" (bool) // allow to play "e_sound" again if it's not finished playing yet
"e_sound_begin" (string) // page typing start sound
"e_sound_end" (string) // page typing end sound
"e_sound_pause" (float) // pause between sound playbacks
//Dialogue
"e_diag_player" (bool) // Shut player's mouth i.e. stop sound of player voice (used in story mode when Ada react while killing someone)
"e_diag_skip" (bool) // allow player to skip text typing
"e_diag_dur" (int) // delay before automatical page flipping
"e_diag_X" (int) // X position of textbox (regarding the GUI)
"e_diag_Y" (int) // Y position of textbox (regarding the GUI)
"e_draw_priority" (int) // sets the draw order if draws above screen or GUI
//Preventing player from moving character and mouse (aka 'sequence mode')
"e_enable_sequence" (bool) // enable 'sequence mode' if "true", do nothing if "false" i.e. when first dialogue page starts and this property is "true" it does `global.sequence_enabled = true;`
"e_disable_sequence" (bool) // disable 'sequence mode' if "true", do nothing if "false" i.e. when last dialogue page finishes and this property is "true" it does `global.sequence_enabled = false;`
//Textbox background sprite
"e_background" (string) // textbox background sprite
"e_background_remback" (bool) // makes all pixels with the sprite background color (left-bottom pixel) transparent (if "e_background" is external)
"e_background_smooth" (bool) // smooth the sprite edges (if "e_background_remback" is "true")
"e_background_ox" (int) // sprite X origin (if "e_background" is external)
"e_background_oy" (int) // sprite Y origin (if "e_background" is external)
"e_background_xscale" (float) // sprite X scale ("1" is default)
"e_background_yscale" (float) // sprite Y scale ("1" is default)
"e_background_angle" (int) // sprite angle (anti-clockwise, "0" is default)
"e_background_alpha" (float) // sprite alpha ("0" to "1")
"e_background_frames" (int) // number of images in sprite
"e_background_image" (int) // current sprite frame
"e_background_anim" (float) // sprite animation speed
"e_background_col" (color || int) // sprite color
"e_background_ninesl" (bool) // create a Nine Slice struct which can be modified and then applied to a sprite (if "e_background" is external)
"e_background_ninesl_L" (int) // Nine Slice struct left border (if "e_background_ninesl" is "true")
"e_background_ninesl_R" (int) // Nine Slice struct right border (if "e_background_ninesl" is "true")
"e_background_ninesl_T" (int) // Nine Slice struct top border (if "e_background_ninesl" is "true")
"e_background_ninesl_B" (int) // Nine Slice struct bottom border (if "e_background_ninesl" is "true")
"e_background_border_L" (int) // sprite left border (X position, regarding the "e_diag_X")
"e_background_border_T" (int) // sprite top border (Y position, regarding the "e_diag_Y")
//Textbox portrait sprite
"e_portrait" (string) // textbox portrait (speaker) sprite
"e_portrait_remback" (bool) // makes all pixels with the sprite background color (left-bottom pixel) transparent (if "e_portrait" is external)
"e_portrait_smooth" (bool) // smooth the sprite edges (if "e_portrait_remback" is "true")
"e_portrait_ox" (int) // sprite X origin (if "e_portrait" is external)
"e_portrait_oy" (int) // sprite Y origin (if "e_portrait" is external)
"e_portrait_xscale" (float) // sprite X scale ("1" is default)
"e_portrait_yscale" (float) // sprite Y scale ("1" is default)
"e_portrait_angle" (int) // sprite angle (anti-clockwise, "0" is default)
"e_portrait_alpha" (float) // sprite alpha ("0" to "1")
"e_portrait_frames" (int) // number of images in sprite
"e_portrait_image" (int) // current sprite frame
"e_portrait_anim" (float) // sprite animation speed
"e_portrait_col" (color || int) // sprite color
"e_portrait_ninesl" (bool) // create a Nine Slice struct which can be modified and then applied to a sprite (if "e_portrait" is external)
"e_portrait_ninesl_L" (int) // Nine Slice struct left border (if "e_portrait_ninesl" is "true")
"e_portrait_ninesl_R" (int) // Nine Slice struct right border (if "e_portrait_ninesl" is "true")
"e_portrait_ninesl_T" (int) // Nine Slice struct top border (if "e_portrait_ninesl" is "true")
"e_portrait_ninesl_B" (int) // Nine Slice struct bottom border (if "e_portrait_ninesl" is "true")
"e_portrait_border_L" (int) // sprite left border (X position, regarding the "e_diag_X")
"e_portrait_border_T" (int) // sprite top border (Y position, regarding the "e_diag_Y")
//Textbox options background sprite
"e_option_spr" (string) // textbox option sprite (if dialogue has any options)
"e_option_spr_remback" (bool) // makes all pixels with the sprite background color (left-bottom pixel) transparent (if "e_option_spr" is external)
"e_option_spr_smooth" (bool) // smooth the sprite edges (if "e_option_spr_remback" is "true")
"e_option_spr_ox" (int) // sprite X origin (if "e_option_spr" is external)
"e_option_spr_oy" (int) // sprite Y origin (if "e_option_spr" is external)
"e_option_spr_xscale" (float) // sprite X scale ("1" is default)
"e_option_spr_yscale" (float) // sprite Y scale ("1" is default)
"e_option_spr_angle" (int) // sprite angle (anti-clockwise, "0" is default)
"e_option_spr_alpha" (float) // sprite alpha ("0" to "1")
"e_option_spr_frames" (int) // number of images in sprite
"e_option_spr_image" (int) // current sprite frame
"e_option_spr_anim" (float) // sprite animation speed
"e_option_spr_col" (color || int) // sprite color
"e_option_spr_ninesl" (bool) // create a Nine Slice struct which can be modified and then applied to a sprite (if "e_option_spr" is external)
"e_option_spr_ninesl_L" (int) // Nine Slice struct left border (if "e_option_spr_ninesl" is "true")
"e_option_spr_ninesl_R" (int) // Nine Slice struct right border (if "e_option_spr_ninesl" is "true")
"e_option_spr_ninesl_T" (int) // Nine Slice struct top border (if "e_option_spr_ninesl" is "true")
"e_option_spr_ninesl_B" (int) // Nine Slice struct bottom border (if "e_option_spr_ninesl" is "true")
"e_option_spr_border_L" (int) // sprite left border (X position, regarding the "e_diag_X")
"e_option_spr_border_T" (int) // sprite top border (Y position, regarding the "e_diag_Y")
//Textbox selected option sprite
"e_answer_spr" (string) // textbox option selection sprite (if dialogue has any options)
"e_answer_spr_remback" (bool) // makes all pixels with the sprite background color (left-bottom pixel) transparent (if "e_answer_spr" is external)
"e_answer_spr_smooth" (bool) // smooth the sprite edges (if "e_answer_spr_remback" is "true")
"e_answer_spr_ox" (int) // sprite X origin (if "e_answer_spr" is external)
"e_answer_spr_oy" (int) // sprite Y origin (if "e_answer_spr" is external)
"e_answer_spr_xscale" (float) // sprite X scale ("1" is default)
"e_answer_spr_yscale" (float) // sprite Y scale ("1" is default)
"e_answer_spr_angle" (int) // sprite angle (anti-clockwise, "0" is default)
"e_answer_spr_alpha" (float) // sprite alpha ("0" to "1")
"e_answer_spr_frames" (int) // number of images in sprite
"e_answer_spr_image" (int) // current sprite frame
"e_answer_spr_anim" (float) // sprite animation speed
"e_answer_spr_col" (color || int) // sprite color
"e_answer_spr_ninesl" (bool) // create a Nine Slice struct which can be modified and then applied to a sprite (if "e_answer_spr" is external)
"e_answer_spr_ninesl_L" (int) // Nine Slice struct left border (if "e_answer_spr_ninesl" is "true")
"e_answer_spr_ninesl_R" (int) // Nine Slice struct right border (if "e_answer_spr_ninesl" is "true")
"e_answer_spr_ninesl_T" (int) // Nine Slice struct top border (if "e_answer_spr_ninesl" is "true")
"e_answer_spr_ninesl_B" (int) // Nine Slice struct bottom border (if "e_answer_spr_ninesl" is "true")
"e_answer_spr_border_L" (int) // sprite left border (X position, regarding the "e_diag_X")
"e_answer_spr_border_T" (int) // sprite top border (Y position, regarding the "e_diag_Y")
//Built in text pages
"e_text_page0" (string) // 0st text page ("" to skip the page)
"e_text_page1" (string) // 1st text page ("" to skip the page)
//...
"e_text_page15" (string) // 15th text page ("" to skip the page)
"e_text_page16" (string) // 16th text page ("" to skip the page)
//Text pages from file
"e_text_file" (string) // Name of text (.txt) file to get pages from, instead built in pages. You only need to supply a name of file WITHOUT file extension.
"e_text_line0" (int) // 0st text page from file ("-1" to skip the line)
"e_text_line1" (int) // 1st text page from file ("-1" to skip the line)
//...
"e_text_line15" (int) // 15th text page from file ("-1" to skip the line)
"e_text_line16" (int) // 16th text page from file ("-1" to skip the line)
//Other text parameters
"e_text_spd" (float) // text typing speed
"e_text_pause_period" (int) // typing pause after period in text
"e_text_pause_comma" (int) // typing pause after comma in text
"e_text_pause_question" (int) // typing pause after question mark in text
"e_text_pause_excl" (int) // typing pause after exclamation mark in text
"e_text_border_L" (int) // text left border (X position, regarding the "e_diag_X")
"e_text_border_T" (int) // text top border (Y position, regarding the "e_diag_Y")
"e_text_width" (int) // text width
//Text effects
"e_text_wave" (bool) // wavy text effect
"e_text_wave_spd" (int) // wavy text speed (if "e_text_wave" is "true")
"e_text_wave_power" (int) // wavy text power (wave height, if "e_text_wave" is "true")
"e_text_shake" (bool) // shaking text effect
"e_text_shake_spdMin" (int) // shaking text minimum speed (if "e_text_shake" is "true")
"e_text_shake_spdMax" (int) // shaking text maximum speed (if "e_text_shake" is "true")
"e_text_shake_power" (int) // shaking text intensivity (if "e_text_shake" is "true")
"e_text_shake_delay" (int) // delay before next shake (if "e_text_shake" is "true")
//Text color
"e_text_col" (color || int) // text color
//Built in options
"e_option_0" (string) // 0st option ("" to skip the option)
"e_option_1" (string) // 1st option ("" to skip the option)
//...
"e_option_7" (string) // 7th option ("" to skip the option)
"e_option_8" (string) // 8th option ("" to skip the option)
//Options from file
"e_option_file" (string) // Name of text (.txt) file to get options from, instead built in options. You only need to supply a name of file WITHOUT file extension.
"e_option_line0" (int) // 0st option from file ("-1" to skip the line)
"e_option_line1" (int) // 1st option from file ("-1" to skip the line)
//...
"e_option_line7" (int) // 7th option from file ("-1" to skip the line)
"e_option_line8" (int) // 8th option from file ("-1" to skip the line)
//Option targets
"e_option_0_target" (string) // target to activate by selecting 0st option
"e_option_1_target" (string) // target to activate by selecting 1st option
//...
"e_option_7_target" (string) // target to activate by selecting 7th option
"e_option_8_target" (string) // target to activate by selecting 8th option
//Other option parameters
"e_option_border_L" (int) // option left border (X position, regarding the "e_diag_X")
"e_option_border_T" (int) // option top border (Y position, regarding the "e_diag_Y")
"e_option_space" (int) // vertical space between options
//Option color
"e_option_col" (color || int) // option color
//Special sorting parameters
"e_sort_method" (int) // "0" (used by default) - all entities specified in "e_target", below sort parametrs are ignored, "1" - one nearest entity on "e_sort_position" that match all not empty sorts, "2" - one furthest entity on "e_sort_position" that match all not empty sorts, "3" - "e_sort_position" nearest entities that match all not empty sorts, "4" - "e_sort_position" furthest entities that match all not empty sorts, "5" - "e_sort_position" some (random) entities that match all not empty sorts.
"e_sort_tag" (string) // you can add unique tag for entity and find it by this tag ("!Any" allowed)
"e_sort_type" (string) // you can find entity by it's type , like "ent_button", "ent_spawner", etc ("!Entity" allowed) . Also note that this is the only sort parameter that truly decrease CPU load caused by sort algorithm.
"e_sort_position" (int) // number of entity in order (if "e_sort_method" is "1" or "2") OR count of entities (if "e_sort_method" is "3" or "4" or "5")
"e_sort_radius" (int) // you can find entity in specified radius (or outside it if "e_sort_radius" less than or equel "0")
"e_sort_ox" (int) // x offset of "e_sort_radius"
"e_sort_oy" (int) // y offset of "e_sort_radius"
//Other
"e_progress" (bool) // Dialogue progress state. Do not change it manually! You need to activate dialogue to properly start/stop it.
//Note - in this entity "e_text_file" and "e_option_file" also have localization support.
//This means that you can have separate files for different languages. All you need to do is add a special suffix to the end of the filename.
//Possible suffixes are :
// "_en.txt" (English)
// "_ru.txt" (Russian)
// "_zhs.txt" (Simplified Chinese)
// "_zht.txt" (Traditional Chinese)
// "_fr.txt" (French)
// "_by.txt" (Belarusian)
// "_pl.txt" (Polish)
// "_ua.txt" (Ukrainian)
// "_de.txt" (German)
// "_hu.txt" (Hungarian)
// "_cz.txt" (Czech)
// "_es.txt" (Spanish)
// "_no.txt" (Norwegian)
// The algorithm works as follows -
// 1. It tries to open the file with the suffix of the currently selected player language.
// 2. If 1. does not exist, then it tries to open the file with "_en.txt" suffix.
// 3. If 2. does not exist, then it will open the file without any suffixes as you supplied.
// As example here is setup for English and Russian localizations :
// If your custommap named "my_map.tmj" and it path is "%LocalAppdata%/delirium/maps/my_map.tmj" then text files "my_test.txt" and "my_test_en.txt" and "my_test_ru.txt" should have path "%LocalAppdata%/delirium/maps/my_map/my_test.txt" and "%LocalAppdata%/delirium/maps/my_map/my_test_en.txt" and "%LocalAppdata%/delirium/maps/my_map/my_test_ru.txt" respectively, and "e_text_file"/"e_option_file" properties should have "my_test" value in it.
// Players who have selected the English language in their settings will see lines from "my_test_en.txt".
// Players who have selected the Russian language in their settings will see lines from "my_test_ru.txt".
// Players who have selected any other language in their settings will see lines from "my_test.txt".
}
//-------------------- Entity Dice (ent_dice) --------------------//
{
//@brief - Used when you need to activate other entity with a some chance (i.e. roll the chance and depending on it activate other entity or do nothing).
//@shape - always point
"e_name" (string) // current entity name
"e_tag" (string) // Second name of entity. Helpful if you need to chose certain entity from many that have the same name and types.
"e_target" (string) // name of entity that current entity will activate (if e_sort_method isn't 0 then "!Any" allowed)
"e_delay" (int) // delay before activating "e_target" ("30" means 1 second)
"e_refresh" (int) // entity refresh (never if "-1", "30" means 1 second)
"e_activated" (bool) // current entity activation ("true" if must activate on start)
"e_sound" (string) // activation sound (quiet if "sound_NULL")
"e_assets_folder" (string) // folder in which entity will search for sound resource file (you can leave it blank, if your resources inside folder that located near custommap and have the same name as the custommap)
"e_dice_sides" (int) // defines "e_target" activation chance according to the formula: 1 / (e_dice_sides + 1) (if "e_dice_percent" is less than 0)
"e_dice_percent" (float) // defines "e_target" activation chance in percentage. Value should be from 0 to 100 (used instead of "e_dice_sides" if equal or greater than 0)
"e_sort_method" (int) // "0" (used by default) - all entities specified in "e_target", below sort parametrs are ignored, "1" - one nearest entity on "e_sort_position" that match all not empty sorts, "2" - one furthest entity on "e_sort_position" that match all not empty sorts, "3" - "e_sort_position" nearest entities that match all not empty sorts, "4" - "e_sort_position" furthest entities that match all not empty sorts, "5" - "e_sort_position" some (random) entities that match all not empty sorts.
"e_sort_tag" (string) // you can add unique tag for entity and find it by this tag ("!Any" allowed)
"e_sort_type" (string) // you can find entity by it's type , like "ent_button", "ent_spawner", etc ("!Entity" allowed) . Also note that this is the only sort parameter that truly decrease CPU load caused by sort algorithm.
"e_sort_position" (int) // number of entity in order (if "e_sort_method" is "1" or "2") OR count of entities (if "e_sort_method" is "3" or "4" or "5")
"e_sort_radius" (int) // you can find entity in specified radius (or outside it if "e_sort_radius" less than or equel "0")
"e_sort_ox" (int) // x offset of "e_sort_radius"
"e_sort_oy" (int) // y offset of "e_sort_radius"
}
//-------------------- Entity Display (ent_display) --------------------//
{
//@brief - Used when you need to render sprite or/and text on level field or on player GUI. You can make your custom gui with this entity, but for dialogues please use "Entity Dialogue".
//@shape - always point
"e_name" (string) // current entity name
"e_tag" (string) // Second name of entity. Helpful if you need to chose certain entity from many that have the same name and types.
"e_activated" (bool) // current entity activation ("true" if must activate on start)
"e_sprite" (string) // current entity sprite
"e_sprite_alpha" (string) // sprite alpha ("0" to "1")
"e_sprite_remback" (bool) // makes all pixels with the sprite background color (left-bottom pixel) transparent (if "e_sprite" is external)
"e_sprite_smooth" (bool) // smooth the sprite edges (if "e_sprite_remback" is "true")
"e_sprite_ox" (int) // sprite X origin (if "e_sprite" is external)
"e_sprite_oy" (int) // sprite Y origin (if "e_sprite" is external)
"e_sprite_xscale" (float) // sprite X scale ("1" is default)
"e_sprite_yscale" (float) // sprite Y scale ("1" is default)
"e_sprite_angle" (int) // sprite angle (anti-clockwise, "0" is default)
"e_sprite_color" (color || int) // current entity color
"e_sprite_frames" (int) // number of images in current sprite
"e_sprite_image" (int) // current entity sprite frame (do not use this)
"e_sprite_anim" (float) // animation speed
"e_assets_folder" (string) // folder in which entity will search for sprite resource file (you can leave it blank, if your resources inside folder that located near custommap and have the same name as the custommap)
"e_depth" (int) // Current entity depth. By default (if e_depth is UNDEFINED in Tiled - i.e. like when you pressed Delete with e_depth selected) entities set their e_depth to "-y" when they are created. Unlike the "depth" of the regular object , the e_depth of entities does not change on every tick. This allows you to easily manipulate e_depth in TIled and even at runtime. e_depth determines the drawing order - objects/entities/layers with higher e_depth are drawn "behind" objects/entities/layers with lower e_depth.
"e_draw_priority" (int) // sets the draw order if draws above screen or GUI
"e_display_gui" (bool) // display placement (on GUI if "true", on the level if "false")
"e_display_x" (int) // display X position (if "e_display_gui" is "true")
"e_display_y" (int) // display Y position (if "e_display_gui" is "true")
"e_display_width" (int) // display width (if "e_sprite" is not set)
"e_display_height" (int) // display height (if "e_sprite" is not set)
"e_display_alpha" (float) // display background alpha ("0" to "1")
"e_display_outline" (bool) // display outline (if "e_sprite" is not set)
"e_text" (string) // text to draw
"e_text_file" (string) // text file name to use it instead "e_text"
"e_text_line" (int) // text line inside the file to draw (if "e_text_file" has value)
"e_text_col" (color || int) // text color
"e_text_style" (int) // text font ("0" - default game font, defined in game options, "1" - small font, "2" - classic font, "3" - simplified font, "4" - font disabled)
//Note - in this entity "e_text_file" also have localization support.
//You can read more about how it works in the notes for the Entity Dialogue.
}
//-------------------- Entity Door (ent_door) --------------------//
{
//@brief - Used when you need hightly customisable door. Can have sprite, hitbox and one sound. It can be opened/closed "only by player" or "only by entities" or "by player and entities".
//@shape - always point
"e_name" (string) // current entity name
"e_tag" (string) // Second name of entity. Helpful if you need to chose certain entity from many that have the same name and types.
"e_target" (string) // name of entity that current entity will activate (if e_sort_method isn't 0 then "!Any" allowed)
"e_delay" (int) // delay before activating "e_target" ("30" means 1 second)
"e_refresh" (int) // entity refresh (never if "-1", "30" means 1 second)
"e_sprite" (string) // current entity sprite
"e_sprite_alpha" (string) // sprite alpha ("0" to "1")
"e_sprite_remback" (bool) // makes all pixels with the sprite background color (left-bottom pixel) transparent (if "e_sprite" is external)
"e_sprite_smooth" (bool) // smooth the sprite edges (if "e_sprite_remback" is "true")
"e_sprite_ox" (int) // sprite X origin (if "e_sprite" is external)
"e_sprite_oy" (int) // sprite Y origin (if "e_sprite" is external)
"e_sprite_xscale" (float) // sprite X scale ("1" is default)
"e_sprite_yscale" (float) // sprite Y scale ("1" is default)
"e_sprite_angle" (int) // sprite angle (anti-clockwise, "0" is default)
"e_sprite_color" (color || int) // current entity color
"e_sprite_frames" (int) // number of images in current sprite
"e_sprite_image" (int) // current entity sprite frame (do not use this)
"e_sprite_anim" (float) // animation speed
"e_mask" (string) // collision mask for current entity
"e_mask_ox" (int) // mask X origin (if "e_mask" is external)
"e_mask_oy" (int) // mask Y origin (if "e_mask" is external)
"e_mask_remback" (bool) // makes all pixels with the mask background color (left-bottom pixel) transparent (if "e_mask" is external)
"e_door_open" (bool) // door starts in its 'open' position (set "e_sprite_image" parameter to last the frame index ("e_sprite_frame - 1") if "true")
"e_door_openFrame" (int) // sets frame that allows player to pass through door
"e_door_openAct" (bool) // activates targeted entity on open
"e_door_closeAct" (bool) // activates targeted entity on close
"e_door_key" (int) // sets the key required to open ("0" if key is not required, "1" - steel, "2" - brass, "3" - copper, "4" - custom key color set in "e_door_key_color")
"e_door_key_color" (color || int) // sets the custom key color required to open (if "e_door_key" is "4"). Player can unlock "Entity Door" if "e_door_key_color" equal to "key_color" of the picked up "Key" object ("obj_key") (this means that all their corresponding R/G/B values of the "e_door_key_color"-"key_color" pair should be identical).
"e_door_lockDist" (int) // key unlocking distance (if "e_door_keyLock" is "true")
"e_sound" (string) // activation sound (quiet if "sound_NULL")
"e_assets_folder" (string) // folder in which entity will search for sound , sprite and mask resource files (you can leave it blank, if your resources inside folder that located near custommap and have the same name as the custommap)
"e_activated" (bool) // current entity activation ("true" if must activate on start)
"e_usedistance" (int) // current entity use distance
"e_usetype" (int) // interaction icon ("0" - common, "1" - inspect, "2" - talk, "3" - pick up, "4" - save, "5" - sorcery, "6" - gift, "7" - door, "8" - button press, "9" - search, "10" - use, "11" - nothing)
"e_toggle" (bool) // entity can be activated only by other entity
"e_useonly" (bool) // entity can be activated by pressing <USE> button
"e_block" (bool) // blocks current entity until refresh
"e_shooter" (bool) // can be activated by shooting
"e_allowmonsters" (bool) // allows monsters to activate entity
"e_allownpc" (bool) // allows NPC to activate entity
"e_allowplayer" (bool) // allows player to activate entity
"e_allowtele" (bool) // allows teleportation ball to activate entity
"e_collision" (bool) // destroy projectiles on collision (if "e_shooter" is "true")
"e_collied_only_ranged" (bool) // if false then melee projectiles can simultaneously activate entity and hit nearby monster before been marked as "collieded" (if "e_collision" is "true" and "e_shooter" is "true")
"e_inspector" (string) // entity name that will be displayed on the inspector
"e_falloff_ref" (int) // the falloff reference relative to the listener (clamp)
"e_falloff_dist" (int) // the maximum falloff distance relative to the listener
"e_falloff_factor" (int) // the falloff factor (default "1")
"e_sort_method" (int) // "0" (used by default) - all entities specified in "e_target", below sort parametrs are ignored, "1" - one nearest entity on "e_sort_position" that match all not empty sorts, "2" - one furthest entity on "e_sort_position" that match all not empty sorts, "3" - "e_sort_position" nearest entities that match all not empty sorts, "4" - "e_sort_position" furthest entities that match all not empty sorts, "5" - "e_sort_position" some (random) entities that match all not empty sorts.
"e_sort_tag" (string) // you can add unique tag for entity and find it by this tag ("!Any" allowed)
"e_sort_type" (string) // you can find entity by it's type , like "ent_button", "ent_spawner", etc ("!Entity" allowed) . Also note that this is the only sort parameter that truly decrease CPU load caused by sort algorithm.
"e_sort_position" (int) // number of entity in order (if "e_sort_method" is "1" or "2") OR count of entities (if "e_sort_method" is "3" or "4" or "5")
"e_sort_radius" (int) // you can find entity in specified radius (or outside it if "e_sort_radius" less than or equel "0")
"e_sort_ox" (int) // x offset of "e_sort_radius"
"e_sort_oy" (int) // y offset of "e_sort_radius"
}
//-------------------- Entity Fade (ent_fade) --------------------//
{
//@brief - Used when you need to smoothly turn screen in to black(or some other color) and vise versa.
//@shape - always point
"e_name" (string) // current entity name
"e_tag" (string) // Second name of entity. Helpful if you need to chose certain entity from many that have the same name and types.
"e_activated" (bool) // current entity activation ("true" if must activate on start)
"e_refresh" (int) // entity refresh (never if "-1", "30" means 1 second)
"e_blending" (int) // sets blending mode ("0" - normal, "1" - additive, "2" - subtract, "3" - multiply, "4" - max blending)
"e_fadein_spd" (float) // fade in speed
"e_fadeout_spd" (float) // fade out speed
"e_fade_color" (color || int) // current entity color
"e_fade_alpha" (float) // maximum fade transparency
"e_fade_type" (int) // sets screen to fade: "0" - using "e_depth", "1" - above level, "2" - above screen, "3" - above GUI