Commit graph

46 commits

Author SHA1 Message Date
toasterbabe
ddf8db12af Big commit, sorry. I broke several things trying to get other things to work and it's only now that all the code that worked yesterday works today!
*P_LookForEnemies is now side-effect-less and only provides a pointer to the found mobj
*player-jumping is dead, long live PF_STARTJUMP
*per Mystic's request, CA2_GUNSLINGER has a targeting icon. It also has a more restricted vertical aiming range.
*mobj for this is in the game as requested
*fast teetering animation flag
*general code cleanup
2017-03-22 18:51:30 +00: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
toasterbabe
020234cc5f Fixed crash bug. It's weird that linedefs' backsides aren't NULL but are instead 0xFFFF when invalid, so instead I used something which DOES take null pointers as a parameter. 2017-01-16 17:33:07 +00:00
toasterbabe
da42165169 Merge branch 'master' of http://git.magicalgirl.moe/STJr/SRB2Internal.git into flat_alignment_revamp 2017-01-16 17:14:58 +00:00
Monster Iestyn
edba7834ae Merge branch 'master' into plane-displacement 2017-01-10 14:52:57 +00:00
Monster Iestyn
5358359ddb Added the thinker creation function and the thinker itself, we now have functional plane displacement thinkers! 2017-01-05 20:29:48 +00:00
toasterbabe
a9c68a78e9 Slope correction. 2016-11-24 15:23:13 +00:00
toasterbabe
05f58df709 Some changes and corrections.
* Cleaner A_ParticleSpawn code.
* Removed several hacks with Mario blocks, and corrected a mistaken assumption with when the FOF's thinker is being applied.
* Made the flashing of T_LaserFlash even less obnoxious.
2016-11-22 16:21:30 +00:00
toasterbabe
5ff507213b * Some shield constants renamed.
* Some shield sounds swapped (can be reverted later).
* Partial implementation of S3K shield abilities.
* The ability to elemental-groundpound onto gold monitors without going straight through them.
* Force shield ability removed because nobody could agree on it, we'll keep it blank until another idea can get through the disagreement juggernaut.
2016-10-16 22:28:50 +01:00
toasterbabe
3aa9d2a1b1 Sonic 3 shields implemented at a basic visual/functional level - no abilities yet. 2016-10-15 23:39:54 +01:00
toasterbabe
dff9209bd2 A fix for the thing where you can get stuck inside a Mario block that has a monitor in it. 2016-10-12 22:06:40 +01:00
toasterbabe
041347bb6a eslopeless compiling fix 2016-09-30 01:26:23 +01:00
toasterbabe
bf01e9e5c3 Bustable material updated to:
* Take advantage of FF_MIDDLESTARTCHANCE.
* Be bound to the space of a slope.
2016-09-29 14:23:58 +01:00
toasterbabe
4ccb3b88d0 Merge branch 'master' of http://git.magicalgirl.moe/STJr/SRB2Internal.git into flat_alignment_revamp
# Conflicts:
#	src/p_mobj.c
2016-08-10 00:10:18 +01:00
Alam Ed Arias
59fd7bbe46 Merge branch 'public_next' (early part) into private 2016-07-11 15:50:06 -04:00
toasterbabe
26f34d1038 Compiling fixes. 2016-07-09 17:36:24 +01:00
toasterbabe
17e0adcbac Renamed some struct variables so the problem this branch sets out to fix is more obvious at a glance.
* m_snext ==> m_thinglist_next
* m_sprev ==> m_thinglist_prev
* m_tnext ==> m_sectorlist_next
* m_tprev ==> m_sectorlist_prev
2016-06-09 14:16:02 +01:00
toasterbabe
8e2212bb48 One more Mario block change. If FOF linedef has backside:
* If there's items in it set the FOF's floor and ceiling flats to that of the backside sector's ceiling
* Otherwise, set them to that of the backside sector's floor.

Otherwise, the flats do not change.

This allows for SMW style blocks which are much darker when empty then full on all sides.
2016-06-06 19:02:08 +01:00
toasterbabe
356dd03234 Mario block improvements. (I JUST CAN'T STOP)
* Only change texture when stationary or moving down, for additional fidelity to source material. This has zero overhead, and actually might REDUCE lag in some circumstances... my nitpickiness wins again.
* Apply ML_EFFECT1 to it to make it invisible and intangible (removing (FF_SOLID|FF_RENDERALL|FF_CUTLEVEL) from it) from every side except the bottom. Becomes visible and tangible when it's hit once. Might fuck over players in mp, but really our Mario blocks are so high in the air (and we'd need to update Pipe Towers to take advantage anyways) that they're super unlikely to get a kill this way
* Checks for the Brick Block have been switched over to the presence of FF_SHATTERBOTTOM instead of checking for the source linedef's flags every time.
2016-06-06 18:30:58 +01:00
toasterbabe
94e4d3ddbf Good eye, MI. 2016-06-05 01:26:02 +01:00
toasterbabe
bdbfa178e6 Compilation fixes. (Silly .o files sticking around...) 2016-06-04 23:06:26 +01:00
toasterbabe
36da2e198d At least this one wasn't my fault ( :P ) 2016-06-04 22:08:51 +01:00
toasterbabe
7a3a293c96 Woops, forgot the 0. Now it takes advantage of the full range. 2016-06-04 21:23:15 +01:00
toasterbabe
b688f5763b Particle randomisation added to bustable blocks. 2016-06-04 21:19:52 +01:00
toasterbabe
7c7a8413c9 Instead of hacking the existing Question Block thinker to ignore the object, let's just... not give the Brick Block a thinker in the first place. 2016-06-04 20:02:11 +01:00
toasterbabe
58d0d2d5e9 Completely forgot P_FindSpecialLineFromTag was a thing. Now Linedef type 14 doesn't need to be in the same sector, but requires a tag... 2016-06-04 19:39:15 +01:00
toasterbabe
6f291d667e Bustable blocks revamped. I'm on a roll!
Linedef type 14 (Bustable block parameter)
* Applied to one of the linedefs of any FOF's control sector
* 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 assume infinite lifetime
* Effect 1/Slope Skew flag makes particles fly out

Linedef type 250 (Mario Block):
* No Climb flag turns it into a brick block (busts when hit from the bottom, player hits their head/fist/whatever, no more upwards momentum)
2016-06-04 18:59:24 +01:00
Alam Ed Arias
032313260a Merge branch 'public_next' into master 2016-05-20 17:58:57 -04:00
Inuyasha
f07585191b copyright dates/statements updated and such
(no actual SLOC changes)
2016-05-17 17:42:11 -07:00
Inuyasha
7ae87cc2c6 Revert "No more stupidity for No More Enemies special plz"
This reverts commit 474ad01b46.
2016-03-08 22:22:30 -08:00
Alam Ed Arias
6ad1086128 Merge branch 'public_next' into master 2015-09-03 15:58:16 -04:00
RedEnchilada
a9d49cd9fa Make all specials reliant on floor touch work right with sloeps
(I might've missed some, though)
2015-05-24 12:53:30 -05:00
RedEnchilada
3f8e7b1739 Revert/remove unused/broken junk from original slopes port
m_vector removal to come later. The little thing commented out in it
is so I could revert the weird tables.c change.
2015-05-22 20:57:58 -05:00
RedEnchilada
6694480f68 Overhaul slope collision (NOT PHYSICS) to work almost perfectly 2015-04-27 13:20:50 -05:00
RedEnchilada
923fae476e Merge branch 'fury-gh/slopes' into angles
Conflicts:
	src/p_maputl.c
2015-04-19 15:56:55 -05:00
MonsterIestyn
474ad01b46 No more stupidity for No More Enemies special plz NME special now acts similarly to Each Time, checking all sectors sharing the same tag as itself for any enemies/bosses hiding within. This also supports cases where the tagged sectors are FOF control sectors. When the situation is asitsaysonthetin, NME acts like a normal trigger linedef should and executes all linedef execs around the sector it's located in.
git-svn-id: https://code.orospakr.ca/svn/srb2/trunk@9005 6de4a73c-47e2-0310-b8c1-93d6ecd3f8cd
2015-03-31 18:00:12 -04:00
Ronald Kinard
967c2a324a Merge branch 'next' into internal-master 2015-03-01 02:21:07 -06:00
Ronald Kinard
15f0670c43 Merge branch 'fix_each_time' into next
Conflicts:
	src/p_floor.c
2015-03-01 02:13:46 -06:00
MonsterIestyn
e83fa3dc43 Partial damage system overhaul: P_DamageMobj, P_KillMobj, P_HitDeathMessages and P_RingDamage now all take a "damagetype" variable that determines what type of damage was dealt. Does not replace the "damage" variable, we'll have to see if that is worth keeping another time?
Currently the main benefit of these changes is that a number of non-Object-related hazards/deaths no long rely on dummy MT_NULL objects or other hacks to tell the game how you were hurt/killed, yay

git-svn-id: https://code.orospakr.ca/svn/srb2/trunk@9039 6de4a73c-47e2-0310-b8c1-93d6ecd3f8cd
2015-02-24 02:09:18 -06:00
MonsterIestyn
06039bbd9b No more stupidity for No More Enemies special plz NME special now acts similarly to Each Time, checking all sectors sharing the same tag as itself for any enemies/bosses hiding within. This also supports cases where the tagged sectors are FOF control sectors. When the situation is asitsaysonthetin, NME acts like a normal trigger linedef should and executes all linedef execs around the sector it's located in.
git-svn-id: https://code.orospakr.ca/svn/srb2/trunk@9005 6de4a73c-47e2-0310-b8c1-93d6ecd3f8cd
2015-02-24 02:03:02 -06:00
Ronald Kinard
54f0d0c110 IN PROGRESS: porting eternity slopes from srb2cb 2014-11-18 18:45:57 -06:00
Alam Ed Arias
404b5f666c SRB2 2.1.12 release 2014-11-11 19:55:07 -05:00
ilag11111
97b61eb66d Each Time Fix Fix: Don't infinite loop when each time is set to trigger on exit. 2014-10-02 10:26:12 -07:00
ilag11111
2191e5b9de Each Time Fix: Multiple players simultaneously entering a sector, e.g. Tails carries one in. 2014-10-01 13:49:44 -07:00
Alam Ed Arias
c028c83235 SRB2 2.1.9 release 2014-08-03 23:49:33 -04:00
Alam Ed Arias
b93cb1b65a SRB2 2.1 release 2014-03-15 13:11:35 -04:00