-
Notifications
You must be signed in to change notification settings - Fork 33
/
r_sky.v
3099 lines (3016 loc) · 64.6 KB
/
r_sky.v
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
@[translated]
module main
//
// Copyright(C) 1993-1996 Id Software, Inc.
// Copyright(C) 2005-2014 Simon Howard
//
// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License
// as published by the Free Software Foundation; either version 2
// of the License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// DESCRIPTION:
// Fixed point arithemtics, implementation.
//
//
// Fixed point, 32bit as 16.16.
//
type Fixed_t = int
//
// Copyright(C) 1993-1996 Id Software, Inc.
// Copyright(C) 2005-2014 Simon Howard
//
// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License
// as published by the Free Software Foundation; either version 2
// of the License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// DESCRIPTION:
// Simple basic typedefs, isolated here to make it easier
// separating modules.
//
// #define macros to provide functions missing in Windows.
// Outside Windows, we use strings.h for str[n]casecmp.
//
// The packed attribute forces structures to be packed into the minimum
// space necessary. If this is not done, the compiler may align structure
// fields differently to optimize memory access, inflating the overall
// structure size. It is important to use the packed attribute on certain
// structures where alignment is important, particularly data read/written
// to disk.
//
// C99 integer types; with gcc we just use this. Other compilers
// should add conditional statements that define the C99 types.
// What is really wanted here is stdint.h; however, some old versions
// of Solaris don't have stdint.h and only have inttypes.h (the
// pre-standardisation version). inttypes.h is also in the C99
// standard and defined to include stdint.h, so include this.
// Use builtin bool type with C++.
type Byte = u8
type Pixel_t = u8
type Dpixel_t = i16
//
// Copyright(C) 1993-1996 Id Software, Inc.
// Copyright(C) 2005-2014 Simon Howard
//
// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License
// as published by the Free Software Foundation; either version 2
// of the License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// DESCRIPTION:
// System-specific timer interface
//
// Called by D_DoomLoop,
// returns current time in tics.
// returns current time in ms
// Pause for a specified number of ms
// Initialize timer
// Wait for vertical retrace or pause a bit.
//
// Copyright(C) 1993-1996 Id Software, Inc.
// Copyright(C) 2005-2014 Simon Howard
//
// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License
// as published by the Free Software Foundation; either version 2
// of the License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// DESCRIPTION:
// Functions and definitions relating to the game type and operational
// mode.
//
// The "mission" controls what game we are playing.
enum GameMission_t {
doom
// Doom 1
doom2
// Doom 2
pack_tnt
// Final Doom: TNT: Evilution
pack_plut
// Final Doom: The Plutonia Experiment
pack_chex
// Chex Quest (modded doom)
pack_hacx
// Hacx (modded doom2)
heretic
// Heretic
hexen
// Hexen
strife
// Strife
none_
}
// The "mode" allows more accurate specification of the game mode we are
// in: eg. shareware vs. registered. So doom1.wad and doom.wad are the
// same mission, but a different mode.
enum GameMode_t {
shareware
// Doom/Heretic shareware
registered
// Doom/Heretic registered
commercial
// Doom II/Hexen
retail
// Ultimate Doom
indetermined
// Unknown.
}
// What version are we emulating?
enum GameVersion_t {
exe_doom_1_2
// Doom 1.2: shareware and registered
exe_doom_1_666
// Doom 1.666: for shareware, registered and commercial
exe_doom_1_7
// Doom 1.7/1.7a: "
exe_doom_1_8
// Doom 1.8: "
exe_doom_1_9
// Doom 1.9: "
exe_hacx
// Hacx
exe_ultimate
// Ultimate Doom (retail)
exe_final
// Final Doom
exe_final2
// Final Doom (alternate exe)
exe_chex
// Chex Quest executable (based on Final Doom)
exe_heretic_1_3
// Heretic 1.3
exe_hexen_1_1
// Hexen 1.1
exe_strife_1_2
// Strife v1.2
exe_strife_1_31
// Strife v1.31
}
// What IWAD variant are we using?
enum GameVariant_t {
vanilla
// Vanilla Doom
freedoom
// FreeDoom: Phase 1 + 2
freedm
// FreeDM
bfgedition
// Doom Classic (Doom 3: BFG Edition)
}
// Skill level.
enum Skill_t {
sk_noitems = -1
// the "-skill 0" hack
sk_baby = 0
sk_easy
sk_medium
sk_hard
sk_nightmare
}
// #ifndef __D_MODE__
//
// Copyright(C) 1993-1996 Id Software, Inc.
// Copyright(C) 2005-2014 Simon Howard
//
// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License
// as published by the Free Software Foundation; either version 2
// of the License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// DESCRIPTION:
// Internally used data structures for virtually everything,
// lots of other stuff.
//
//
// Global parameters/defines.
//
// DOOM version
// Version code for cph's longtics hack ("v1.91")
// If rangecheck is undefined,
// most parameter validation debugging code will not be compiled
// The maximum number of players, multiplayer/networking.
// The current state of the game: whether we are
// playing, gazing at the intermission screen,
// the game final animation, or a demo.
enum Gamestate_t {
gs_level
gs_intermission
gs_finale
gs_demoscreen
}
enum Gameaction_t {
ga_nothing
ga_loadlevel
ga_newgame
ga_loadgame
ga_savegame
ga_playdemo
ga_completed
ga_victory
ga_worlddone
ga_screenshot
}
//
// Difficulty/skill settings/filters.
//
// Skill flags.
// Deaf monsters/do not react to sound.
//
// Key cards.
//
enum Card_t {
it_bluecard
it_yellowcard
it_redcard
it_blueskull
it_yellowskull
it_redskull
numcards
}
// The defined weapons,
// including a marker indicating
// user has not changed weapon.
enum Weapontype_t {
wp_fist
wp_pistol
wp_shotgun
wp_chaingun
wp_missile
wp_plasma
wp_bfg
wp_chainsaw
wp_supershotgun
numweapons
// No pending weapon change.
wp_nochange
}
// Ammunition types defined.
enum Ammotype_t {
am_clip
// Pistol / chaingun ammo.
am_shell
// Shotgun / double barreled shotgun.
am_cell
// Plasma rifle, BFG.
am_misl
// Missile launcher.
numammo
am_noammo
// Unlimited for chainsaw / fist.
}
// Power up artifacts.
enum Powertype_t {
pw_invulnerability
pw_strength
pw_invisibility
pw_ironfeet
pw_allmap
pw_infrared
numpowers
}
//
// Power up durations,
// how many seconds till expiration,
// assuming TICRATE is 35 ticks/second.
//
enum Powerduration_t {
invulntics = 30 * 35
invistics = 60 * 35
infratics = 120 * 35
irontics = 60 * 35
}
// __DOOMDEF__
//
// Copyright(C) 1993-1996 Id Software, Inc.
// Copyright(C) 2005-2014 Simon Howard
//
// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License
// as published by the Free Software Foundation; either version 2
// of the License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// DESCRIPTION:
// MapObj data. Map Objects or mobjs are actors, entities,
// thinker, take-your-pick... anything that moves, acts, or
// suffers state changes of more or less violent nature.
//
//
// Experimental stuff.
// To compile this as "ANSI C with classes"
// we will need to handle the various
// action functions cleanly.
//
type Actionf_v = fn ()
type Actionf_p1 = fn (voidptr)
type Actionf_p2 = fn (voidptr, voidptr)
union Actionf_t {
acv Actionf_v
acp1 Actionf_p1
acp2 Actionf_p2
}
// Historically, "think_t" is yet another
// function pointer to a routine to handle
// an actor.
type Think_t = Actionf_t
// Doubly linked list of actors.
struct Thinker_t {
prev &Thinker_t
next &Thinker_t
function Think_t
}
//
// Copyright(C) 1993-1996 Id Software, Inc.
// Copyright(C) 1993-2008 Raven Software
// Copyright(C) 2005-2014 Simon Howard
//
// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License
// as published by the Free Software Foundation; either version 2
// of the License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// DESCRIPTION:
// Lookup tables.
// Do not try to look them up :-).
// In the order of appearance:
//
// int finetangent[4096] - Tangens LUT.
// Should work with BAM fairly well (12 of 16bit,
// effectively, by shifting).
//
// int finesine[10240] - Sine lookup.
// Guess what, serves as cosine, too.
// Remarkable thing is, how to use BAMs with this?
//
// int tantoangle[2049] - ArcTan LUT,
// maps tan(angle) to angle fast. Gotta search.
//
// 0x100000000 to 0x2000
// Effective size is 10240.
// Re-use data, is just PI/2 pahse shift.
// Effective size is 4096.
// Gamma correction tables.
// Binary Angle Measument, BAM.
// Heretic code uses this definition as though it represents one
// degree, but it is not! This is actually ~1.40 degrees.
type Angle_t = u32
// Effective size is 2049;
// The +1 size is to handle the case when x==y
// without additional checking.
// Utility function,
// called by R_PointToAngle.
//
// Copyright(C) 1993-1996 Id Software, Inc.
// Copyright(C) 2005-2014 Simon Howard
//
// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License
// as published by the Free Software Foundation; either version 2
// of the License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// DESCRIPTION:
// all external data is defined here
// most of the data is loaded into different structures at run time
// some internal structures shared by many modules are here
//
// The most basic types we use, portability.
// Some global defines, that configure the game.
//
// Map level types.
// The following data structures define the persistent format
// used in the lumps of the WAD files.
//
// Lump order in a map WAD: each map needs a couple of lumps
// to provide a complete scene geometry description.
// empty enum
const ml_label = 0
const ml_things = 1
const ml_linedefs = 2
const ml_sidedefs = 3
const ml_vertexes = 4
const ml_segs = 5
const ml_ssectors = 6
const ml_nodes = 7
const ml_sectors = 8
const ml_reject = 9
const ml_blockmap = 10
// A single Vertex.
struct Mapvertex_t {
x i16
y i16
}
// A separator, name, ExMx or MAPxx
// Monsters, items..
// LineDefs, from editing // A single Vertex.
// SideDefs, from editing typedef PACKED_STRUCT (
// Vertices, edited and BSP splits generated{
// LineSegs, from LineDefs split by BSP short x;
// SubSectors, list of LineSegs short y;
// BSP nodes }) mapvertex_t;
// Sectors, from editing
// LUT, sector-sector visibility
// LUT, motion clipping, walls/grid element // A SideDef, defining the visual appearance of a wall,
// by setting textures and offsets.
struct Mapsidedef_t {
textureoffset i16
rowoffset i16
toptexture [8]i8
bottomtexture [8]i8
midtexture [8]i8
sector i16
}
// A LineDef, as used for editing, and as input
// to the BSP builder.
struct Maplinedef_t {
v1 i16
v2 i16
flags i16
special i16
tag i16
sidenum [2]i16
}
//
// LineDef attributes.
//
// Solid, is an obstacle.
// Blocks monsters only.
// Backside will not be present at all
// if not two sided.
// If a texture is pegged, the texture will have
// the end exposed to air held constant at the
// top or bottom of the texture (stairs or pulled
// down things) and will move with a height change
// of one of the neighbor sectors.
// Unpegged textures allways have the first row of
// the texture at the top pixel of the line for both
// top and bottom textures (use next to windows).
// upper texture unpegged
// lower texture unpegged
// In AutoMap: don't map as two sided: IT'S A SECRET!
// Sound rendering: don't let sound cross two of these.
// Don't draw on the automap at all.
// Set if already seen, thus drawn in automap.
// Sector definition, from editing.
struct Mapsector_t {
floorheight i16
ceilingheight i16
floorpic [8]i8
ceilingpic [8]i8
lightlevel i16
special i16
tag i16
}
// SubSector, as generated by BSP.
struct Mapsubsector_t {
numsegs i16
firstseg i16
}
// LineSeg, generated by splitting LineDefs
// using partition lines selected by BSP builder.
struct Mapseg_t {
v1 i16
v2 i16
angle i16
linedef i16
side i16
offset i16
}
// BSP node structure.
// Indicate a leaf.
struct Mapnode_t {
x i16
y i16
dx i16
dy i16
bbox [2][4]i16
children [2]u16
}
// Thing definition, position, orientation and type,
// plus skill/visibility flags and attributes.
struct Mapthing_t {
x i16
y i16
angle i16
type_ i16
options i16
}
// __DOOMDATA__
//
// Copyright(C) 1993-1996 Id Software, Inc.
// Copyright(C) 2005-2014 Simon Howard
//
// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License
// as published by the Free Software Foundation; either version 2
// of the License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// DESCRIPTION:
// Thing frame/state LUT,
// generated by multigen utilitiy.
// This one is the original DOOM version, preserved.
//
// Needed for action function pointer handling.
enum Spritenum_t {
spr_troo
spr_shtg
spr_pung
spr_pisg
spr_pisf
spr_shtf
spr_sht_2
spr_chgg
spr_chgf
spr_misg
spr_misf
spr_sawg
spr_plsg
spr_plsf
spr_bfgg
spr_bfgf
spr_blud
spr_puff
spr_bal_1
spr_bal_2
spr_plss
spr_plse
spr_misl
spr_bfs_1
spr_bfe_1
spr_bfe_2
spr_tfog
spr_ifog
spr_play
spr_poss
spr_spos
spr_vile
spr_fire
spr_fatb
spr_fbxp
spr_skel
spr_manf
spr_fatt
spr_cpos
spr_sarg
spr_head
spr_bal_7
spr_boss
spr_bos_2
spr_skul
spr_spid
spr_bspi
spr_apls
spr_apbx
spr_cybr
spr_pain
spr_sswv
spr_keen
spr_bbrn
spr_bosf
spr_arm_1
spr_arm_2
spr_bar_1
spr_bexp
spr_fcan
spr_bon_1
spr_bon_2
spr_bkey
spr_rkey
spr_ykey
spr_bsku
spr_rsku
spr_ysku
spr_stim
spr_medi
spr_soul
spr_pinv
spr_pstr
spr_pins
spr_mega
spr_suit
spr_pmap
spr_pvis
spr_clip
spr_ammo
spr_rock
spr_brok
spr_cell
spr_celp
spr_shel
spr_sbox
spr_bpak
spr_bfug
spr_mgun
spr_csaw
spr_laun
spr_plas
spr_shot
spr_sgn_2
spr_colu
spr_smt_2
spr_gor_1
spr_pol_2
spr_pol_5
spr_pol_4
spr_pol_3
spr_pol_1
spr_pol_6
spr_gor_2
spr_gor_3
spr_gor_4
spr_gor_5
spr_smit
spr_col_1
spr_col_2
spr_col_3
spr_col_4
spr_cand
spr_cbra
spr_col_6
spr_tre_1
spr_tre_2
spr_elec
spr_ceye
spr_fsku
spr_col_5
spr_tblu
spr_tgrn
spr_tred
spr_smbt
spr_smgt
spr_smrt
spr_hdb_1
spr_hdb_2
spr_hdb_3
spr_hdb_4
spr_hdb_5
spr_hdb_6
spr_pob_1
spr_pob_2
spr_brs_1
spr_tlmp
spr_tlp_2
numsprites
}
enum Statenum_t {
s_null
s_lightdone
s_punch
s_punchdown
s_punchup
s_punch_1
s_punch_2
s_punch_3
s_punch_4
s_punch_5
s_pistol
s_pistoldown
s_pistolup
s_pistol_1
s_pistol_2
s_pistol_3
s_pistol_4
s_pistolflash
s_sgun
s_sgundown
s_sgunup
s_sgun_1
s_sgun_2
s_sgun_3
s_sgun_4
s_sgun_5
s_sgun_6
s_sgun_7
s_sgun_8
s_sgun_9
s_sgunflash_1
s_sgunflash_2
s_dsgun
s_dsgundown
s_dsgunup
s_dsgun_1
s_dsgun_2
s_dsgun_3
s_dsgun_4
s_dsgun_5
s_dsgun_6
s_dsgun_7
s_dsgun_8
s_dsgun_9
s_dsgun_10
s_dsnr_1
s_dsnr_2
s_dsgunflash_1
s_dsgunflash_2
s_chain
s_chaindown
s_chainup
s_chain_1
s_chain_2
s_chain_3
s_chainflash_1
s_chainflash_2
s_missile
s_missiledown
s_missileup
s_missile_1
s_missile_2
s_missile_3
s_missileflash_1
s_missileflash_2
s_missileflash_3
s_missileflash_4
s_saw
s_sawb
s_sawdown
s_sawup
s_saw_1
s_saw_2
s_saw_3
s_plasma
s_plasmadown
s_plasmaup
s_plasma_1
s_plasma_2
s_plasmaflash_1
s_plasmaflash_2
s_bfg
s_bfgdown
s_bfgup
s_bfg_1
s_bfg_2
s_bfg_3
s_bfg_4
s_bfgflash_1
s_bfgflash_2
s_blood_1
s_blood_2
s_blood_3
s_puff_1
s_puff_2
s_puff_3
s_puff_4
s_tball_1
s_tball_2
s_tballx_1
s_tballx_2
s_tballx_3
s_rball_1
s_rball_2
s_rballx_1
s_rballx_2
s_rballx_3
s_plasball
s_plasball_2
s_plasexp
s_plasexp_2
s_plasexp_3
s_plasexp_4
s_plasexp_5
s_rocket
s_bfgshot
s_bfgshot_2
s_bfgland
s_bfgland_2
s_bfgland_3
s_bfgland_4
s_bfgland_5
s_bfgland_6
s_bfgexp
s_bfgexp_2
s_bfgexp_3
s_bfgexp_4
s_explode_1
s_explode_2
s_explode_3
s_tfog
s_tfog_01
s_tfog_02
s_tfog_2
s_tfog_3
s_tfog_4
s_tfog_5
s_tfog_6
s_tfog_7
s_tfog_8
s_tfog_9
s_tfog_10
s_ifog
s_ifog_01
s_ifog_02
s_ifog_2
s_ifog_3
s_ifog_4
s_ifog_5
s_play
s_play_run_1
s_play_run_2
s_play_run_3
s_play_run_4
s_play_atk_1
s_play_atk_2
s_play_pain
s_play_pain_2
s_play_die_1
s_play_die_2
s_play_die_3
s_play_die_4
s_play_die_5
s_play_die_6
s_play_die_7
s_play_xdie_1
s_play_xdie_2
s_play_xdie_3
s_play_xdie_4
s_play_xdie_5
s_play_xdie_6
s_play_xdie_7
s_play_xdie_8
s_play_xdie_9
s_poss_stnd
s_poss_stnd_2
s_poss_run_1
s_poss_run_2
s_poss_run_3
s_poss_run_4
s_poss_run_5
s_poss_run_6
s_poss_run_7
s_poss_run_8
s_poss_atk_1
s_poss_atk_2
s_poss_atk_3
s_poss_pain
s_poss_pain_2
s_poss_die_1
s_poss_die_2
s_poss_die_3
s_poss_die_4
s_poss_die_5
s_poss_xdie_1
s_poss_xdie_2
s_poss_xdie_3
s_poss_xdie_4
s_poss_xdie_5
s_poss_xdie_6
s_poss_xdie_7
s_poss_xdie_8
s_poss_xdie_9
s_poss_raise_1
s_poss_raise_2
s_poss_raise_3
s_poss_raise_4
s_spos_stnd
s_spos_stnd_2
s_spos_run_1
s_spos_run_2
s_spos_run_3
s_spos_run_4
s_spos_run_5
s_spos_run_6
s_spos_run_7
s_spos_run_8
s_spos_atk_1
s_spos_atk_2
s_spos_atk_3
s_spos_pain
s_spos_pain_2
s_spos_die_1
s_spos_die_2
s_spos_die_3
s_spos_die_4
s_spos_die_5
s_spos_xdie_1
s_spos_xdie_2
s_spos_xdie_3
s_spos_xdie_4
s_spos_xdie_5
s_spos_xdie_6
s_spos_xdie_7
s_spos_xdie_8
s_spos_xdie_9
s_spos_raise_1
s_spos_raise_2
s_spos_raise_3
s_spos_raise_4
s_spos_raise_5
s_vile_stnd
s_vile_stnd_2
s_vile_run_1
s_vile_run_2
s_vile_run_3
s_vile_run_4
s_vile_run_5
s_vile_run_6
s_vile_run_7
s_vile_run_8
s_vile_run_9
s_vile_run_10
s_vile_run_11
s_vile_run_12
s_vile_atk_1
s_vile_atk_2
s_vile_atk_3
s_vile_atk_4
s_vile_atk_5
s_vile_atk_6
s_vile_atk_7
s_vile_atk_8
s_vile_atk_9
s_vile_atk_10
s_vile_atk_11
s_vile_heal_1