Prepare new maemo release
[maemo-rb.git] / apps / plugins / doom / p_spec.h
blob7ab787c7d88fabd48e59913214d20a7d6ff75a62
1 /* Emacs style mode select -*- C++ -*-
2 *-----------------------------------------------------------------------------
5 * PrBoom a Doom port merged with LxDoom and LSDLDoom
6 * based on BOOM, a modified and improved DOOM engine
7 * Copyright (C) 1999 by
8 * id Software, Chi Hoang, Lee Killough, Jim Flynn, Rand Phares, Ty Halderman
9 * Copyright (C) 1999-2000 by
10 * Jess Haas, Nicolas Kalkhof, Colin Phipps, Florian Schulze
12 * This program is free software; you can redistribute it and/or
13 * modify it under the terms of the GNU General Public License
14 * as published by the Free Software Foundation; either version 2
15 * of the License, or (at your option) any later version.
17 * This program is distributed in the hope that it will be useful,
18 * but WITHOUT ANY WARRANTY; without even the implied warranty of
19 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
20 * GNU General Public License for more details.
22 * You should have received a copy of the GNU General Public License
23 * along with this program; if not, write to the Free Software
24 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
25 * 02111-1307, USA.
27 * DESCRIPTION: definitions, declarations and prototypes for specials
29 *-----------------------------------------------------------------------------*/
31 #ifndef __P_SPEC__
32 #define __P_SPEC__
34 #include "r_defs.h"
35 #include "d_player.h"
37 // Define values for map objects
38 #define MO_TELEPORTMAN 14
40 // p_floor
42 #define ELEVATORSPEED (FRACUNIT*4)
43 #define FLOORSPEED FRACUNIT
45 // p_ceilng
47 #define CEILSPEED FRACUNIT
48 #define CEILWAIT 150
50 // p_doors
52 #define VDOORSPEED (FRACUNIT*2)
53 #define VDOORWAIT 150
55 // p_plats
57 #define PLATWAIT 3
58 #define PLATSPEED FRACUNIT
60 // p_switch
62 // 4 players, 4 buttons each at once, max.
63 // killough 2/14/98: redefine in terms of MAXPLAYERS
64 #define MAXBUTTONS (MAXPLAYERS*4)
66 // 1 second, in ticks.
67 #define BUTTONTIME TICRATE
69 // p_lights
71 #define GLOWSPEED 8
72 #define STROBEBRIGHT 5
73 #define FASTDARK 15
74 #define SLOWDARK 35
76 //jff 3/14/98 add bits and shifts for generalized sector types
78 #define DAMAGE_MASK 0x60
79 #define DAMAGE_SHIFT 5
80 #define SECRET_MASK 0x80
81 #define SECRET_SHIFT 7
82 #define FRICTION_MASK 0x100
83 #define FRICTION_SHIFT 8
84 #define PUSH_MASK 0x200
85 #define PUSH_SHIFT 9
87 //jff 02/04/98 Define masks, shifts, for fields in
88 // generalized linedef types
90 #define GenEnd 0x8000
91 #define GenFloorBase 0x6000
92 #define GenCeilingBase 0x4000
93 #define GenDoorBase 0x3c00
94 #define GenLockedBase 0x3800
95 #define GenLiftBase 0x3400
96 #define GenStairsBase 0x3000
97 #define GenCrusherBase 0x2F80
99 #define TriggerType 0x0007
100 #define TriggerTypeShift 0
102 // define masks and shifts for the floor type fields
104 #define FloorCrush 0x1000
105 #define FloorChange 0x0c00
106 #define FloorTarget 0x0380
107 #define FloorDirection 0x0040
108 #define FloorModel 0x0020
109 #define FloorSpeed 0x0018
111 #define FloorCrushShift 12
112 #define FloorChangeShift 10
113 #define FloorTargetShift 7
114 #define FloorDirectionShift 6
115 #define FloorModelShift 5
116 #define FloorSpeedShift 3
118 // define masks and shifts for the ceiling type fields
120 #define CeilingCrush 0x1000
121 #define CeilingChange 0x0c00
122 #define CeilingTarget 0x0380
123 #define CeilingDirection 0x0040
124 #define CeilingModel 0x0020
125 #define CeilingSpeed 0x0018
127 #define CeilingCrushShift 12
128 #define CeilingChangeShift 10
129 #define CeilingTargetShift 7
130 #define CeilingDirectionShift 6
131 #define CeilingModelShift 5
132 #define CeilingSpeedShift 3
134 // define masks and shifts for the lift type fields
136 #define LiftTarget 0x0300
137 #define LiftDelay 0x00c0
138 #define LiftMonster 0x0020
139 #define LiftSpeed 0x0018
141 #define LiftTargetShift 8
142 #define LiftDelayShift 6
143 #define LiftMonsterShift 5
144 #define LiftSpeedShift 3
146 // define masks and shifts for the stairs type fields
148 #define StairIgnore 0x0200
149 #define StairDirection 0x0100
150 #define StairStep 0x00c0
151 #define StairMonster 0x0020
152 #define StairSpeed 0x0018
154 #define StairIgnoreShift 9
155 #define StairDirectionShift 8
156 #define StairStepShift 6
157 #define StairMonsterShift 5
158 #define StairSpeedShift 3
160 // define masks and shifts for the crusher type fields
162 #define CrusherSilent 0x0040
163 #define CrusherMonster 0x0020
164 #define CrusherSpeed 0x0018
166 #define CrusherSilentShift 6
167 #define CrusherMonsterShift 5
168 #define CrusherSpeedShift 3
170 // define masks and shifts for the door type fields
172 #define DoorDelay 0x0300
173 #define DoorMonster 0x0080
174 #define DoorKind 0x0060
175 #define DoorSpeed 0x0018
177 #define DoorDelayShift 8
178 #define DoorMonsterShift 7
179 #define DoorKindShift 5
180 #define DoorSpeedShift 3
182 // define masks and shifts for the locked door type fields
184 #define LockedNKeys 0x0200
185 #define LockedKey 0x01c0
186 #define LockedKind 0x0020
187 #define LockedSpeed 0x0018
189 #define LockedNKeysShift 9
190 #define LockedKeyShift 6
191 #define LockedKindShift 5
192 #define LockedSpeedShift 3
194 // define names for the TriggerType field of the general linedefs
196 enum
198 WalkOnce,
199 WalkMany,
200 SwitchOnce,
201 SwitchMany,
202 GunOnce,
203 GunMany,
204 PushOnce,
205 PushMany,
207 typedef unsigned triggertype_e;
209 // define names for the Speed field of the general linedefs
211 enum
213 SpeedSlow,
214 SpeedNormal,
215 SpeedFast,
216 SpeedTurbo,
218 typedef unsigned motionspeed_e;
220 // define names for the Target field of the general floor
222 enum
224 FtoHnF,
225 FtoLnF,
226 FtoNnF,
227 FtoLnC,
228 FtoC,
229 FbyST,
230 Fby24,
231 Fby32,
233 typedef unsigned floortarget_e;
235 // define names for the Changer Type field of the general floor
237 enum
239 FNoChg,
240 FChgZero,
241 FChgTxt,
242 FChgTyp,
244 typedef unsigned floorchange_e;
246 // define names for the Change Model field of the general floor
248 enum
250 FTriggerModel,
251 FNumericModel,
253 typedef unsigned floormodel_t;
255 // define names for the Target field of the general ceiling
257 enum
259 CtoHnC,
260 CtoLnC,
261 CtoNnC,
262 CtoHnF,
263 CtoF,
264 CbyST,
265 Cby24,
266 Cby32,
268 typedef unsigned ceilingtarget_e;
270 // define names for the Changer Type field of the general ceiling
272 enum
274 CNoChg,
275 CChgZero,
276 CChgTxt,
277 CChgTyp,
279 typedef unsigned ceilingchange_e;
281 // define names for the Change Model field of the general ceiling
283 enum
285 CTriggerModel,
286 CNumericModel,
288 typedef unsigned ceilingmodel_t;
290 // define names for the Target field of the general lift
292 enum
294 F2LnF,
295 F2NnF,
296 F2LnC,
297 LnF2HnF,
299 typedef unsigned lifttarget_e;
301 // define names for the door Kind field of the general ceiling
303 enum
305 OdCDoor,
306 ODoor,
307 CdODoor,
308 CDoor,
310 typedef unsigned intdoorkind_e;
312 // define names for the locked door Kind field of the general ceiling
314 enum
316 AnyKey,
317 RCard,
318 BCard,
319 YCard,
320 RSkull,
321 BSkull,
322 YSkull,
323 AllKeys,
325 typedef unsigned keykind_e;
327 //////////////////////////////////////////////////////////////////
329 // enums for classes of linedef triggers
331 //////////////////////////////////////////////////////////////////
333 //jff 2/23/98 identify the special classes that can share sectors
335 enum
337 floor_special,
338 ceiling_special,
339 lighting_special,
341 typedef unsigned special_e;
343 //jff 3/15/98 pure texture/type change for better generalized support
344 enum
346 trigChangeOnly,
347 numChangeOnly,
349 typedef unsigned change_e;
351 // p_plats
353 enum
356 down,
357 waiting,
358 in_stasis
360 typedef unsigned plat_e;
362 enum
364 perpetualRaise,
365 downWaitUpStay,
366 raiseAndChange,
367 raiseToNearestAndChange,
368 blazeDWUS,
369 genLift, //jff added to support generalized Plat types
370 genPerpetual,
371 toggleUpDn, //jff 3/14/98 added to support instant toggle type
374 typedef unsigned plattype_e;
376 // p_doors
378 enum
380 normal,
381 close30ThenOpen,
382 p_close,
383 p_open,
384 raiseIn5Mins,
385 blazeRaise,
386 blazeOpen,
387 blazeClose,
389 //jff 02/05/98 add generalize door types
390 genRaise,
391 genBlazeRaise,
392 genOpen,
393 genBlazeOpen,
394 genClose,
395 genBlazeClose,
396 genCdO,
397 genBlazeCdO,
399 typedef unsigned vldoor_e;
401 // p_ceilng
403 enum
405 lowerToFloor,
406 raiseToHighest,
407 lowerToLowest,
408 lowerToMaxFloor,
409 lowerAndCrush,
410 crushAndRaise,
411 fastCrushAndRaise,
412 silentCrushAndRaise,
414 //jff 02/04/98 add types for generalized ceiling mover
415 genCeiling,
416 genCeilingChg,
417 genCeilingChg0,
418 genCeilingChgT,
420 //jff 02/05/98 add types for generalized ceiling mover
421 genCrusher,
422 genSilentCrusher,
425 typedef unsigned ceiling_e;
427 // p_floor
429 enum
431 // lower floor to highest surrounding floor
432 lowerFloor,
434 // lower floor to lowest surrounding floor
435 lowerFloorToLowest,
437 // lower floor to highest surrounding floor VERY FAST
438 turboLower,
440 // raise floor to lowest surrounding CEILING
441 raiseFloor,
443 // raise floor to next highest surrounding floor
444 raiseFloorToNearest,
446 //jff 02/03/98 lower floor to next lowest neighbor
447 lowerFloorToNearest,
449 //jff 02/03/98 lower floor 24 absolute
450 lowerFloor24,
452 //jff 02/03/98 lower floor 32 absolute
453 lowerFloor32Turbo,
455 // raise floor to shortest height texture around it
456 raiseToTexture,
458 // lower floor to lowest surrounding floor
459 // and change floorpic
460 lowerAndChange,
462 raiseFloor24,
464 //jff 02/03/98 raise floor 32 absolute
465 raiseFloor32Turbo,
467 raiseFloor24AndChange,
468 raiseFloorCrush,
470 // raise to next highest floor, turbo-speed
471 raiseFloorTurbo,
472 donutRaise,
473 raiseFloor512,
475 //jff 02/04/98 add types for generalized floor mover
476 genFloor,
477 genFloorChg,
478 genFloorChg0,
479 genFloorChgT,
481 //new types for stair builders
482 buildStair,
483 genBuildStair,
485 typedef unsigned floor_e;
487 enum
489 build8, // slowly build by 8
490 turbo16 // quickly build by 16
493 typedef unsigned stair_e;
495 enum
497 elevateUp,
498 elevateDown,
499 elevateCurrent,
501 typedef unsigned elevator_e;
503 //////////////////////////////////////////////////////////////////
505 // general enums
507 //////////////////////////////////////////////////////////////////
509 // texture type enum
510 enum
512 top,
513 middle,
514 bottom
517 typedef unsigned bwhere_e;
519 // crush check returns
520 enum
523 crushed,
524 pastdest
526 typedef unsigned result_e;
528 //////////////////////////////////////////////////////////////////
530 // linedef and sector special data types
532 //////////////////////////////////////////////////////////////////
534 // p_switch
536 // switch animation structure type
538 #if defined(__MWERKS__)
539 #pragma options align=packed
540 #endif
542 typedef struct
544 char name1[9];
545 char name2[9];
546 short episode;
547 } PACKEDATTR switchlist_t; //jff 3/23/98 pack to read from memory
549 #if defined(__MWERKS__)
550 #pragma options align=reset
551 #endif
553 typedef struct
555 line_t* line;
556 bwhere_e where;
557 int btexture;
558 int btimer;
559 mobj_t* soundorg;
561 } button_t;
563 // p_lights
565 typedef struct
567 thinker_t thinker;
568 sector_t* sector;
569 int count;
570 int maxlight;
571 int minlight;
573 } fireflicker_t;
575 typedef struct
577 thinker_t thinker;
578 sector_t* sector;
579 int count;
580 int maxlight;
581 int minlight;
582 int maxtime;
583 int mintime;
585 } lightflash_t;
587 typedef struct
589 thinker_t thinker;
590 sector_t* sector;
591 int count;
592 int minlight;
593 int maxlight;
594 int darktime;
595 int brighttime;
597 } strobe_t;
599 typedef struct
601 thinker_t thinker;
602 sector_t* sector;
603 int minlight;
604 int maxlight;
605 int direction;
607 } glow_t;
609 // p_plats
611 typedef struct
613 thinker_t thinker;
614 sector_t* sector;
615 fixed_t speed;
616 fixed_t low;
617 fixed_t high;
618 int wait;
619 int count;
620 plat_e status;
621 plat_e oldstatus;
622 boolean crush;
623 int tag;
624 plattype_e type;
626 struct platlist *list; // killough
627 } plat_t;
629 // New limit-free plat structure -- killough
631 typedef struct platlist {
632 plat_t *plat;
633 struct platlist *next,**prev;
634 } platlist_t;
636 // p_ceilng
638 typedef struct
640 thinker_t thinker;
641 vldoor_e type;
642 sector_t* sector;
643 fixed_t topheight;
644 fixed_t speed;
646 // 1 = up, 0 = waiting at top, -1 = down
647 int direction;
649 // tics to wait at the top
650 int topwait;
651 // (keep in case a door going down is reset)
652 // when it reaches 0, start going down
653 int topcountdown;
655 //jff 1/31/98 keep track of line door is triggered by
656 line_t *line;
658 /* killough 10/98: sector tag for gradual lighting effects */
659 int lighttag;
660 } vldoor_t;
662 // p_doors
664 typedef struct
666 thinker_t thinker;
667 ceiling_e type;
668 sector_t* sector;
669 fixed_t bottomheight;
670 fixed_t topheight;
671 fixed_t speed;
672 fixed_t oldspeed;
673 boolean crush;
675 //jff 02/04/98 add these to support ceiling changers
676 int newspecial;
677 int oldspecial; //jff 3/14/98 add to fix bug in change transfers
678 short texture;
680 // 1 = up, 0 = waiting, -1 = down
681 int direction;
683 // ID
684 int tag;
685 int olddirection;
686 struct ceilinglist *list; // jff 2/22/98 copied from killough's plats
687 } ceiling_t;
689 typedef struct ceilinglist {
690 ceiling_t *ceiling;
691 struct ceilinglist *next,**prev;
692 } ceilinglist_t;
694 // p_floor
696 typedef struct
698 thinker_t thinker;
699 floor_e type;
700 boolean crush;
701 sector_t* sector;
702 int direction;
703 int newspecial;
704 int oldspecial; //jff 3/14/98 add to fix bug in change transfers
705 short texture;
706 fixed_t floordestheight;
707 fixed_t speed;
709 } floormove_t;
711 typedef struct
713 thinker_t thinker;
714 elevator_e type;
715 sector_t* sector;
716 int direction;
717 fixed_t floordestheight;
718 fixed_t ceilingdestheight;
719 fixed_t speed;
720 } elevator_t;
722 // p_spec
724 // killough 3/7/98: Add generalized scroll effects
725 enum
727 sc_side,
728 sc_floor,
729 sc_ceiling,
730 sc_carry,
731 sc_carry_ceiling, // killough 4/11/98: carry objects hanging on ceilings
732 }; /* type */
734 typedef struct {
735 thinker_t thinker; // Thinker structure for scrolling
736 fixed_t dx, dy; // (dx,dy) scroll speeds
737 int affectee; // Number of affected sidedef, sector, tag, or whatever
738 int control; // Control sector (-1 if none) used to control scrolling
739 fixed_t last_height; // Last known height of control sector
740 fixed_t vdx, vdy; // Accumulated velocity if accelerative
741 int accel; // Whether it's accelerative
742 unsigned type; // Type of scroll effect
743 } scroll_t;
745 // phares 3/12/98: added new model of friction for ice/sludge effects
747 typedef struct {
748 thinker_t thinker; // Thinker structure for friction
749 int friction; // friction value (E800 = normal)
750 int movefactor; // inertia factor when adding to momentum
751 int affectee; // Number of affected sector
752 } friction_t;
754 // phares 3/20/98: added new model of Pushers for push/pull effects
756 enum
758 p_push,
759 p_pull,
760 p_wind,
761 p_current,
762 }; /* type */
764 typedef struct {
765 thinker_t thinker; // Thinker structure for Pusher
766 unsigned type;
767 mobj_t* source; // Point source if point pusher
768 int x_mag; // X Strength
769 int y_mag; // Y Strength
770 int magnitude; // Vector strength for point pusher
771 int radius; // Effective radius for point pusher
772 int x; // X of point source if point pusher
773 int y; // Y of point source if point pusher
774 int affectee; // Number of affected sector
775 } pusher_t;
777 //////////////////////////////////////////////////////////////////
779 // external data declarations
781 //////////////////////////////////////////////////////////////////
784 // End-level timer (-TIMER option)
786 extern boolean levelTimer;
787 extern int levelTimeCount;
789 // list of retriggerable buttons active
790 extern button_t buttonlist[MAXBUTTONS];
792 extern platlist_t *activeplats; // killough 2/14/98
794 extern ceilinglist_t *activeceilings; // jff 2/22/98
796 ////////////////////////////////////////////////////////////////
798 // Linedef and sector special utility function prototypes
800 ////////////////////////////////////////////////////////////////
802 int twoSided
803 ( int sector,
804 int line );
806 sector_t* getSector
807 ( int currentSector,
808 int line,
809 int side );
811 side_t* getSide
812 ( int currentSector,
813 int line,
814 int side );
816 fixed_t P_FindLowestFloorSurrounding
817 ( sector_t* sec );
819 fixed_t P_FindHighestFloorSurrounding
820 ( sector_t* sec );
822 fixed_t P_FindNextHighestFloor
823 ( sector_t* sec,
824 int currentheight );
826 fixed_t P_FindNextLowestFloor
827 ( sector_t* sec,
828 int currentheight );
830 fixed_t P_FindLowestCeilingSurrounding
831 ( sector_t* sec ); // jff 2/04/98
833 fixed_t P_FindHighestCeilingSurrounding
834 ( sector_t* sec ); // jff 2/04/98
836 fixed_t P_FindNextLowestCeiling
837 ( sector_t *sec,
838 int currentheight ); // jff 2/04/98
840 fixed_t P_FindNextHighestCeiling
841 ( sector_t *sec,
842 int currentheight ); // jff 2/04/98
844 fixed_t P_FindShortestTextureAround
845 ( int secnum ); // jff 2/04/98
847 fixed_t P_FindShortestUpperAround
848 ( int secnum ); // jff 2/04/98
850 sector_t* P_FindModelFloorSector
851 ( fixed_t floordestheight,
852 int secnum ); //jff 02/04/98
854 sector_t* P_FindModelCeilingSector
855 ( fixed_t ceildestheight,
856 int secnum ); //jff 02/04/98
858 int P_FindSectorFromLineTag
859 ( const line_t *line,
860 int start ); // killough 4/17/98
862 int P_FindLineFromLineTag
863 ( const line_t *line,
864 int start ); // killough 4/17/98
866 int P_FindMinSurroundingLight
867 ( sector_t* sector,
868 int max );
870 sector_t* getNextSector
871 ( line_t* line,
872 sector_t* sec );
874 int P_CheckTag
875 (line_t *line); // jff 2/27/98
877 boolean P_CanUnlockGenDoor
878 ( line_t* line,
879 player_t* player);
881 boolean P_SectorActive
882 ( special_e t,
883 sector_t* s );
885 boolean P_IsSecret
886 ( sector_t *sec );
888 boolean P_WasSecret
889 ( sector_t *sec );
891 void P_ChangeSwitchTexture
892 ( line_t* line,
893 int useAgain );
895 ////////////////////////////////////////////////////////////////
897 // Linedef and sector special action function prototypes
899 ////////////////////////////////////////////////////////////////
901 // p_lights
903 void T_LightFlash
904 ( lightflash_t* flash );
906 void T_StrobeFlash
907 ( strobe_t* flash );
909 // jff 8/8/98 add missing thinker for flicker
910 void T_FireFlicker
911 ( fireflicker_t* flick );
913 void T_Glow
914 ( glow_t* g );
916 // p_plats
918 void T_PlatRaise
919 ( plat_t* plat );
921 // p_doors
923 void T_VerticalDoor
924 ( vldoor_t* door );
926 // p_ceilng
928 void T_MoveCeiling
929 ( ceiling_t* ceiling );
931 // p_floor
933 result_e T_MovePlane
934 ( sector_t* sector,
935 fixed_t speed,
936 fixed_t dest,
937 boolean crush,
938 int floorOrCeiling,
939 int direction );
941 void T_MoveFloor
942 ( floormove_t* floor );
944 void T_MoveElevator
945 ( elevator_t* elevator );
947 // p_spec
949 void T_Scroll
950 ( scroll_t * ); // killough 3/7/98: scroll effect thinker
952 void T_Friction
953 ( friction_t * ); // phares 3/12/98: friction thinker
955 void T_Pusher
956 ( pusher_t * ); // phares 3/20/98: Push thinker
958 ////////////////////////////////////////////////////////////////
960 // Linedef and sector special handler prototypes
962 ////////////////////////////////////////////////////////////////
964 // p_telept
966 int EV_Teleport
967 ( line_t* line,
968 int side,
969 mobj_t* thing );
971 // killough 2/14/98: Add silent teleporter
972 int EV_SilentTeleport
973 ( line_t* line,
974 int side,
975 mobj_t* thing );
977 // killough 1/31/98: Add silent line teleporter
978 int EV_SilentLineTeleport
979 ( line_t* line,
980 int side,
981 mobj_t* thing,
982 boolean reverse);
984 // p_floor
987 EV_DoElevator
988 ( line_t* line,
989 elevator_e type );
991 int EV_BuildStairs
992 ( line_t* line,
993 stair_e type );
995 int EV_DoFloor
996 ( line_t* line,
997 floor_e floortype );
999 // p_ceilng
1001 int EV_DoCeiling
1002 ( line_t* line,
1003 ceiling_e type );
1005 int EV_CeilingCrushStop
1006 ( line_t* line );
1008 // p_doors
1010 int EV_VerticalDoor
1011 ( line_t* line,
1012 mobj_t* thing );
1014 int EV_DoDoor
1015 ( line_t* line,
1016 vldoor_e type );
1018 int EV_DoLockedDoor
1019 ( line_t* line,
1020 vldoor_e type,
1021 mobj_t* thing );
1023 // p_lights
1025 int EV_StartLightStrobing
1026 ( line_t* line );
1028 int EV_TurnTagLightsOff
1029 ( line_t* line );
1031 int EV_LightTurnOn
1032 ( line_t* line,
1033 int bright );
1035 int EV_LightTurnOnPartway(line_t* line, fixed_t level); // killough 10/10/98
1037 // p_floor
1039 int EV_DoChange
1040 ( line_t* line,
1041 change_e changetype );
1043 int EV_DoDonut
1044 ( line_t* line );
1046 // p_plats
1048 int EV_DoPlat
1049 ( line_t* line,
1050 plattype_e type,
1051 int amount );
1053 int EV_StopPlat
1054 ( line_t* line );
1056 // p_genlin
1058 int EV_DoGenFloor
1059 ( line_t* line );
1061 int EV_DoGenCeiling
1062 ( line_t* line );
1064 int EV_DoGenLift
1065 ( line_t* line );
1067 int EV_DoGenStairs
1068 ( line_t* line );
1070 int EV_DoGenCrusher
1071 ( line_t* line );
1073 int EV_DoGenDoor
1074 ( line_t* line );
1076 int EV_DoGenLockedDoor
1077 ( line_t* line );
1079 ////////////////////////////////////////////////////////////////
1081 // Linedef and sector special thinker spawning
1083 ////////////////////////////////////////////////////////////////
1085 // at game start
1086 void P_InitPicAnims
1087 ( void );
1089 void P_InitSwitchList
1090 ( void );
1092 // at map load
1093 void P_SpawnSpecials
1094 ( void );
1096 // every tic
1097 void P_UpdateSpecials
1098 ( void );
1100 // when needed
1101 boolean P_UseSpecialLine
1102 ( mobj_t* thing,
1103 line_t* line,
1104 int side );
1106 void P_ShootSpecialLine
1107 ( mobj_t* thing,
1108 line_t* line );
1110 void P_CrossSpecialLine(line_t *line, int side, mobj_t *thing);
1112 void P_PlayerInSpecialSector
1113 ( player_t* player );
1115 // p_lights
1117 void P_SpawnFireFlicker
1118 ( sector_t* sector );
1120 void P_SpawnLightFlash
1121 ( sector_t* sector );
1123 void P_SpawnStrobeFlash
1124 ( sector_t* sector,
1125 int fastOrSlow,
1126 int inSync );
1128 void P_SpawnGlowingLight
1129 ( sector_t* sector );
1131 // p_plats
1133 void P_AddActivePlat
1134 ( plat_t* plat );
1136 void P_RemoveActivePlat
1137 ( plat_t* plat );
1139 void P_RemoveAllActivePlats
1140 ( void ); // killough
1142 void P_ActivateInStasis
1143 ( int tag );
1145 // p_doors
1147 void P_SpawnDoorCloseIn30
1148 ( sector_t* sec );
1150 void P_SpawnDoorRaiseIn5Mins
1151 ( sector_t* sec,
1152 int secnum );
1154 // p_ceilng
1156 void P_RemoveActiveCeiling
1157 ( ceiling_t* ceiling ); //jff 2/22/98
1159 void P_RemoveAllActiveCeilings
1160 ( void ); //jff 2/22/98
1162 void P_AddActiveCeiling
1163 ( ceiling_t* c );
1165 void P_RemoveActiveCeiling
1166 ( ceiling_t* c );
1168 int P_ActivateInStasisCeiling
1169 ( line_t* line );
1171 mobj_t* P_GetPushThing(int); // phares 3/23/98
1173 #endif