Commit Graph

61 Commits

Author SHA1 Message Date
mazmazz 075f28b7c8 WIP 20190101 merge
d_netcmd.c
filesrch.c
m_menu.c
p_setup.c
p_spec.c
r_data.c
r_main.c
r_things.c
w_wad.c
w_wad.h
2019-01-02 01:09:15 -05:00
mazmazz ea7162a76a Update source copyrights to 2018 2018-11-25 07:35:38 -05:00
mazmazz 81ad8f0681 Merge branch 'master' into le-fadefof 2018-09-18 17:11:33 -04:00
mazmazz c45d523e8f 420: Don't interrupt existing light fade on duration timing except EFFECT5
(cherry picked from commit 3b957c32517a8f5148940c0067af7e88a51d1fee)
2018-09-18 11:08:33 -04:00
Digiku a036c42973 Merge branch 'colormap-overhaul-fade' into 'master'
Linedef Exec 455 Fade Colormap, 456 Stop Fading Colormap

See merge request STJr/SRB2Internal!191
2018-09-18 11:06:09 -04:00
mazmazz 3cdd904fbc Merge branch 'colormap-overhaul-fade' into le-fadefof 2018-09-18 11:05:30 -04:00
mazmazz 7c8fa151c4 Merge branch 'lightfade-ticbased' into le-fadefof 2018-09-16 08:20:57 -04:00
Nev3r 350cd1435b The thinker is entirely unified now, and there is no difference in the light levels between the "old" behavior and this one now. 2018-09-15 12:21:25 +02:00
mazmazz ab4a825385 420: Combine speed and duration logic for fade lighting 2018-09-15 19:01:21 -04:00
mazmazz 5aa66f8872 455: Add speed increment timing (~EFFECT4) to FadeColormap 2018-09-13 10:43:32 -04:00
mazmazz 9fb9b44383 Fade FOF colormap support 2018-09-12 16:59:35 -04:00
mazmazz 14b71bdbc5 Fade colormap special 455! And stop fade colormap 456
* Added T_FadeColormap thinker and netsync
* Added sector_t fadecolormapdata property
2018-09-12 09:06:38 -04:00
mazmazz 9a52816cb4 Use percentage calc instead of interval decrement for tic-based fading 2018-09-11 10:28:24 -04:00
mazmazz c468451a63 Merge branch 'lightfade-ticbased' into le-fadefof 2018-09-11 10:08:13 -04:00
mazmazz 36923ae7b0 Use percentage calc instead of interval decrement for tic-based timing 2018-09-11 10:05:25 -04:00
mazmazz 5136293f62 Store sectornum/ffloornum as UINT32, not INT32 2018-09-09 23:52:36 -04:00
mazmazz 0202bbcfd3 Replace firsttic with timer increment 2018-09-09 20:45:12 -04:00
mazmazz 703764d769 Merge branch 'lightfade-ticbased' into le-fadefof 2018-09-09 20:18:57 -04:00
mazmazz 3d5f225702 Replace firsttic with decrement timer 2018-09-09 20:18:43 -04:00
mazmazz c3c4a251f1 Added tic-based logic to FOF fade (ML_EFFECT5) 2018-09-09 19:31:32 -04:00
mazmazz 80a4a03f8e Finalize light level on fade finish (not forced stop)
* Added destlightlevel property to fade_t
* Fixed dotranslucent, dolighting, docollision order weirdness in function calls
2018-09-09 17:20:35 -04:00
mazmazz ca58fba24a Merge branch 'lightfade-ticbased' into le-fadefof 2018-09-09 13:44:30 -04:00
mazmazz aeb45132c5 Revert "Snap light level to software values (32 levels)"
This reverts commit cc26d03c93.
2018-09-09 13:43:00 -04:00
mazmazz 0049f904c0 Add light fading to FadeFakeFloor
* Declare P_RemoveLighting in header for p_spec.c use
2018-09-08 23:44:29 -04:00
mazmazz 4ca38dc8a1 Merge branch 'lightfade-ticbased' into le-fadefof 2018-09-08 23:03:18 -04:00
mazmazz cc26d03c93 Snap light level to software values (32 levels)
* New properties `exactlightlevel` and `lightlevel` in `lightlevel_t`
2018-09-08 23:01:35 -04:00
mazmazz 68e67917f1 Split P_FadeLight into P_FadeLightBySector 2018-09-08 22:14:49 -04:00
mazmazz 1e1b01c157 Implemented tic-based light fading
* ML_BLOCKMONSTERS specifies destvalue and speed by texture offsets
* ML_NOCLIMB toggles tic-based logic
* Added props `duration`, `interval`, and `firsttic` to `lightlevel_t`
2018-09-08 22:10:51 -04:00
mazmazz 069cc480c1 Add dolighting flag to FadeFakeFloor thinker 2018-09-08 20:41:45 -04:00
mazmazz 4147773d0c Merge branch 'master' into le-fadefof 2018-09-06 18:12:24 -04:00
mazmazz d94608fa10 Add alpha clamping so OpenGL conforms to Software's translucent levels 2018-08-17 17:07:07 -04:00
mazmazz 45ae6efbad Refactor function and variable names; change defaults for fake floor fader line flags 2018-08-17 15:25:25 -04:00
mazmazz 677f19ede6 Move fading thinker to ffloor_t.fadingdata 2018-08-17 02:28:52 -04:00
mazmazz 931297e2d7 Rename dofadeinonly to doghostfade
* Ghost fading: when transitioning to/from alpha=0, don't set solid/tangibility until fade is finished
2018-08-16 22:27:26 -04:00
mazmazz 3f312ce114 Make Bonus Time Start executor into a general Egg Capsule Touch executor
* Entrance/exit flags
* Enough/not-enough-rings flags (with "doesn't matter" line option)
2018-08-14 12:00:37 -04:00
mazmazz 62a6fe845d Add ML_BOUNCY flag to Bonus Time executor to execute BEFORE the capsule is destroyed and player has enough spheres 2018-08-14 10:48:50 -04:00
mazmazz bd6276a39e Allow immediate alpha setting when speed = 0; refactoring
* Separate fade logic into P_FindFakeFloorsDoAlpha, P_DoFakeFloorAlpha
* Change INT32 destvalue and speed to INT16
2018-04-07 07:09:04 -04:00
mazmazz afa0aae131 Refactor flag handling toggles 2018-04-06 23:14:48 -04:00
mazmazz 9dc90f2df8 Implement logic branching for NiGHTS LE triggers and add Bonus Time trigger 2018-04-01 08:23:59 -04:00
mazmazz 3d72c105df Initial checkpoint for NiGHTS LE triggers 2018-03-31 10:11:27 -04:00
mazmazz c13f561b50 Fix fade_t handleflags to UINT32 2018-03-31 00:02:37 -04:00
mazmazz d449aae76d Add predefined behaviors for fading FOF flags
* ML_BLOCKMONSTERS: Handle FF_EXISTS
* ML_NOCLIMB: Handle FF_SOLID
* ML_EFFECT1: Don't handle FF_TRANSLUCENT
2018-03-30 22:43:13 -04:00
Marco Z 44b25be69a fade_t fields 2018-03-30 16:19:19 -04:00
Marco Z 0fedd2e566 Define fader thinker names 2018-03-30 15:33:03 -04:00
Monster Iestyn 9238b2d50f Merge branch 'level-specials-setup-stuff' into 'master'
Level specials setup stuff

Some changes to level setup, largely inconsequential for gameplay but maybe helpful for Lua scripting:

* gravity, weather, and some other internal variables are set to their defaults before loading things, so their values from a previous level don't affect mobj spawning potentially
* Tag lists are also initialised before loading things, so that tag-based search functions (such as P_FindSpecialLineFromTag) can be used internally for the maces and particle generator. This should probably extend to Lua as well
* the level header "forcecharacter" no longer recognises "255" as "None" anymore. This is because it no longer takes skin numbers (as of whenever that change was added... version 2.0?), and level headers are auto-cleared when edited anyway.

See merge request !88
2017-05-08 15:15:50 -04:00
Monster Iestyn bdb3c2ea0e extrainfo now determines "skybox ID", a number between 0 and 16 to identify the viewpoint or centerpoint
also I made that change skybox linedef exec special I guess (linedef type 448)
2017-04-26 18:16:01 +01:00
Monster Iestyn 4e96f624e7 Split off part of P_SpawnSpecials into a new function called P_InitSpecials
This allows tag lists, gravity, weather, and the "CheckFor" vars to be initialised before running P_LoadThings or P_ResetDynamicSlopes, in case they could affect mobj spawning or cause a netgame desync somehow by carrying over the previous level's values
2017-04-24 20:33:39 +01:00
Monster Iestyn 80637b336b Starting work, noclimb inverts direction (haven't tested if it actually works or not yet) 2017-04-11 22:33:04 +01:00
Monster Iestyn fb8140312b Merge branch 'flat_alignment_revamp' into 'master'
Revamps of several dated linedef type effects

Felt like being productive so made some things I hate suck less.

Linedef type 7 (flat alignment) now works as follows.
* Linedef angle (from v1 to v2) is flat angle.
* Origin of flat is manipulated to match v1's coordinates - unless ML_NOKNUX is flagged, in which case uses frontside x and y offsets as flat offsets instead.
* ML_NOSONIC prevents changing floor.
* ML_NOTAILS prevents changing ceiling.
* Both of the above flags at once prints a warning.
* (THZ and probably a few other maps need updating.)

Linedef type 540 (friction) now works as follows.
* Controlled by x offset instead of length - offset of -100 is maximum iciness, offset of +483(!!!) is the maximum sludginess BUT things are scaled such that +100 is about the maximum sludginess any reasonable human being would want in a level, 0 is ORIG_FRICTION)
* Not reliant on a sector special to function (can be applied solely by tag to in-map sectors or solid FOF control sectors)
* Uses less memory, perform less calculations, and not bug out objects which just happen to use movefactor for something
* PHYSICS CHANGE: Low friction surfaces actively impede your acceleration (and make your animation speeds faster to give off that Looney Tunes out-of-control effect)
* (ACZ and Frozen Hillside needs updating.)

Sector types 1 and 3 in section 3 no longer do anything.

Linedef type 3 (zoom tube) now works as follows.
* Abs of frontside x offset is speed in units of FRACUNIT/8.
* Abs of frontside y offset is waypoint sequence number.
* Effect 4 flag rotates the player to match the waypoint direction (same as before).
* (ERZ needs updating.)

Linedef type 11 (rope hang) now works as follows.
* Abs of frontside x offset is speed in units of FRACUNIT/8.
* Abs of frontside y offset is waypoint sequence number.
* Effect 1 flag makes rope transfer one-way. (same as before)
* No climb flag makes rope static. (same as before)
* (ACZ and maybe ERZ need updating.)

Linedef type 258 (laser) is almost the same as before, but has altered functionality.
* Its flashing is less obnoxious. (56.25% to 68.75% instead of 100% to 0%, at half the speed)

Linedef type 14 (Bustable block parameters) is new, and works as follows.
* Tagged to the control sector of a block that is likely to be busted (via executor or collision, doesn't matter)
* Concatenation of frontside textures is MT_ object type to spawn, defaults to MT_ROCKCRUMBLE1 if not present
* Sound played when being busted is object type's activesound
* Frontside x offset is spacing (in fracunits) of spawned particles, defaults to 32<<FRACBITS
* Frontside y offset is the fuse of spawned particles in tics, defaults to 3*TICRATE, if set to -1 fuse is not set
* Effect 1 flag makes particles "fly out" horizontally and vertically from the center of the FOF

Sector types 7 through 15 in section 3 no longer do anything.

Linedef type 250 (Mario Block) is almost the same as before, but has new functionality and is slightly different in another way.
* No Climb flag turns it into a brick block (set on Custom FOF via presence of FF_SHATTERBOTTOM - busts when hit from the bottom, player hits their head/fist/whatever, no more upwards momentum)
* Effect 1 flag makes it an invisible block (set on Custom FOF via absence of (FF_SOLID|FF_RENDERALL|FF_CUTLEVEL) - intangible from every side except the bottom. Becomes visible and tangible when it's hit once)
* Only updates side textures when moving down or stationary, not whilst moving up - more fidelity to the source material, less processing on the CPU, everyone wins.
* If FOF master linedef has a backside, then: [If there's items in it the FOF's flats are set to that of the backside sector's ceiling, otherwise the floor.] Otherwise, no flat change.

Linedef type 4 (Speed Pad parameters) now works as follows.
* Frontside x offset is speed in fracunits.
* Effect 4 flag doesn't center the player. (same as before)
* Effect 5 flag sends them off in rolling frames.
* Frontside upper texture is sound to play on launch, defaults to sfx_spdpad when not given

Sector type 6 in section 3 no longer does anything.

Object type 757 is changed as follows, and no longer works on its own - see Linedef type 15 for more details.
* Tag via its angle field
* Number of objects to spawn per tic around it via its z field, if zero then just spawn at center
* Is flipped if given MTF_OBJECTFLIP.
* (ERZ and Seraphic Skylands - if we use that map - needs updating)

Linedef type 15 (Fan particle spawner parameters) is new, and works as follows.
* Tag is tag of object(s!)
* Object type set via concatenation of frontside textures, MT_PARTICLE is default
* The length of the linedef is the radius the particle is spawned out (zeroed if z field is 0)
* Frontside x offset is speed upwards
* Frontside y offset is number of degrees to turn each tic (zeroed if z field is 0)
* Frontside floor and ceiling heights are the heights in which the particle is bound through some fun mathematics

A_ParticleSpawn is changed, too.
* Object type is now changed through actor->threshold instead of var1 to support Linedef type 15.

Test executable uploaded at /toaster/srb2win_branch_flatalignment.exe on the ftp.

Test file uploaded at /toaster/flatalignment.wad on the ftp.

Breaks compatibility with 2.1 so put in internal.

See merge request !29
2017-01-24 16:49:43 -05:00
Monster Iestyn 4b97333ed7 Merge branch 'plane-displacement' into 'master'
Plane displacement

Basic support for plane displacement, no netplay support as of writing but this is what Nev3r wanted moreorless at least.

Linedef types 66-68 are the plane displacement specials; 66 = move floor only, 67 = move ceiling only, 68 = both

Front sector = control sector
Tag = tag of target sectors to be moved whenever the control sector floor moves
Linedef length = movement factor relative to control sector movement, 256 = 1:1 with control sector. 128 is half as much, 512 is twice as much, etc.

Whenever the control sector floor moves (not ceiling, never ceiling), the selected planes of the tagged sectors all move (mind, they have a tic delay due to how it all works, it's not perfect really). No support for reverse speeds yet sorry.

EDIT: oh, btw, test exe and test map are included in my folder on the FTP (srb2win-plane-displacement.exe and plane-disp-test.wad, respectively)

See merge request !61
2017-01-24 14:29:38 -05:00