Commit graph

516 commits

Author SHA1 Message Date
Chronos Ouroboros
9bc7b6b215 Fixed wrong ChangeLevel export to ZScript. 2020-12-14 20:34:50 +01:00
drfrag
a54cb3178d - Fixed bad export of ChangeLevel to ZScript, but still doesn't work. 2020-12-14 12:29:21 +01:00
alexey.lysiuk
698886e5db - converted level global variable into real pointer
# Conflicts:
#	src/g_levellocals.h
2020-10-10 15:04:56 +02:00
alexey.lysiuk
039bc65615 - fixed: next secret map was ignored in ending sequence
https://forum.zdoom.org/viewtopic.php?t=70132

# Conflicts:
#	src/g_level.cpp
2020-10-10 13:53:04 +02:00
drfrag
d6775e9322 - Different fix for the previous bug, better safe than sorry. 2020-10-06 01:53:57 +02:00
drfrag
e3ed066b82 - Fixed: NetServerInfo was not being saved after the exit cleanup. 2020-10-05 17:57:11 +02:00
Nikolay Ambartsumov
3a8ccda80f Add optional filtering to listmaps CCMD output 2020-10-03 11:51:24 +02:00
drfrag
d94cd20f2a - fixed sounds not being serialized for hub travel.
Sound stopping was done in the wrong place - this killed the sound before they could be serialized for hub travel.
2020-09-28 00:40:41 +02:00
Player701
ee3ef788a5 Exported FLevelLocals::ChangeLevel to ZScript
# Conflicts:
#	wadsrc/static/zscript/base.zs
2020-09-21 00:38:11 +02:00
alexey.lysiuk
1334db68a4 - fixed setting of skill level via action special
https://forum.zdoom.org/viewtopic.php?t=69858
2020-09-14 15:28:57 +02:00
Marisa Kirisame
0bc5bccb3b Add Travelled virtual for PlayerPawn, akin to the same function for Inventory. (#1169) 2020-09-02 13:56:24 +02:00
alexey.lysiuk
36210acc28 - update floor/ceiling for inventory items after traveling
Inventory items had dangling floor and ceiling sector pointers after transition to a new level
This could cause random issues with serialization

https://forum.zdoom.org/viewtopic.php?t=67494
2020-08-28 13:44:41 +02:00
drfrag
a228edf64f - Disable the original Doom PRNG flag for a bunch of named generators. 2020-08-24 17:22:53 +02:00
drfrag
f9bd158211 - Ported the COMPATF2_OLD_RANDOM_GENERATOR compatibility flag from Zandronum and added it to the Doom (Strict) compatibility mode.
Added new compatflag "old random generator", controlled by the new CVAR compat_oldrandom. If this is enabled, the original Doom random table is used to generate random integers in [0,255], which should make for instance the SSG cause a little more damage.
2020-08-24 16:11:07 +02:00
Rachael Alexanderson
b9e98889ef - add 'sv_alwaystally' defaults to 0 with the following states:
* 0: previous behavior (completely MAPINFO controlled)
* 1: always show level tally at the end of an episode
* 2: always show level tally even when changing levels within a hub

# Conflicts:
#	src/g_level.cpp
#	src/g_levellocals.h

# Conflicts:
#	src/g_level.cpp
2020-07-21 21:38:00 +02:00
Christoph Oelckers
555dea3c8a - do not allow playing sounds during PlayerFinishLevel.
This gets called right before the level ends, any sound in here would play during the intermission or at the start of the next level.

# Conflicts:
#	src/sound/s_soundinternal.h
2020-06-09 23:29:26 +02:00
alexey.lysiuk
1e9f0700f0 - added validation of game skill when changing a level 2020-04-20 12:47:24 +02:00
alexey.lysiuk
b99da999a5 - stop all sounds after exiting level regardless of intermission screen
https://forum.zdoom.org/viewtopic.php?t=67521

# Conflicts:
#	src/g_level.cpp
#	src/wi_stuff.cpp
2020-02-23 18:46:36 +01:00
drfrag
0907972c2f Revert "- allow the language table to supersede the title patches, if appropriate"
This reverts commit 2b51e8d5dd.

# Conflicts:
#	src/g_hub.cpp
#	src/g_level.cpp
#	src/p_setup.cpp
#	src/wi_stuff.cpp
#	src/wi_stuff.h
#	wadsrc/static/zscript/ui/statscreen/types.zs

Revert "- fixed: The wbstartstruct that gets passed to the level summary screen needs to be static"

This reverts commit 4a563f449d.

# Conflicts:
#	src/g_level.cpp

Revert "- Fixed compilation."

This reverts commit 149a294a49.

# Conflicts:
#	src/g_level.cpp

Revert "- Fixed game finales not being shown after the intermission."

This reverts commit 55af0b11c6.

All this didn't make sense without localization and caused problems with intermissions and endings, it was incompatible with the old code without the level refactor.
2019-10-25 16:23:42 +02:00
Christoph Oelckers
e2387d0741 - fixed: The dynamic lights must be initialized before the first frame is ticked.
Otherwise they only show up after the first frame.

# Conflicts:
#	src/p_setup.cpp
2019-10-17 11:10:19 +02:00
Christoph Oelckers
bd3e8c0a99 - split off all music code from s_sound.cpp
# Conflicts:
#	src/CMakeLists.txt
#	src/fragglescript/t_func.cpp
#	src/fragglescript/t_load.cpp
#	src/g_level.cpp
#	src/g_levellocals.h
#	src/g_shared/a_dynlight.cpp
#	src/intermission/intermission.cpp
#	src/p_saveg.cpp
#	src/posix/cocoa/i_main.mm
#	src/s_sound.cpp
#	src/win32/st_start.cpp

# Conflicts:
#	src/win32/st_start.cpp
2019-09-28 14:20:21 +02:00
drfrag
55af0b11c6 - Fixed game finales not being shown after the intermission. 2019-09-21 14:27:13 +02:00
Christoph Oelckers
d6e7e68bfa - fixed: The frozen state was not reset when the global level variable was reset.
# Conflicts:
#	src/g_level.cpp
2019-08-09 13:16:27 +02:00
Christoph Oelckers
f6234d08fa - optionally disallow showing the autor's name
# Conflicts:
#	src/g_level.cpp
#	src/gamedata/g_mapinfo.h
#	wadsrc/static/zscript/ui/statscreen/statscreen.zs
2019-08-07 13:42:05 +02:00
Christoph Oelckers
78fa0a6f95 - added option to print a map author's name on the summary screen
For now only with font-printed map names. Allowing this with titlepatches will require more work and an option to disable.

# Conflicts:
#	src/g_level.cpp
#	src/gamedata/g_mapinfo.h
#	src/gi.cpp
#	wadsrc/static/zscript/ui/statscreen/statscreen.zs
2019-08-06 18:46:23 +02:00
drfrag
149a294a49 - Fixed compilation. 2019-08-06 17:27:12 +02:00
Christoph Oelckers
4a563f449d - fixed: The wbstartstruct that gets passed to the level summary screen needs to be static
This variable is needed long after the function which sets it up will be exited. So this either needs to be dynamically allocated or static, and in this case using a static variable is simpler.  However, unlike before, it is only being accessed in the one function that needs to initialize it and pass to the summary screen and nowhere else.

# Conflicts:
#	src/g_level.cpp
2019-08-06 17:13:30 +02:00
Christoph Oelckers
2b51e8d5dd - allow the language table to supersede the title patches, if appropriate
For the Doom IWADs the provided font looks almost identical to the characters used on the title patches. So, for any level name that got replaced in some language, it will now check if the retrieved name comes from the default table, and if not, ignore the title patch and print the name with the specified font.

This also required removing the 'en' label from the default table,  because with this present, the text would always be picked from 'en' instead of 'default'. Since 'en' and 'default' had the same contents, in any English locale the 'default' table was never hit, so this won't make any difference for the texts being chosen.

Last but not least, wminfo has been made a local variable in G_DoCompleted. There were two places where this was accessed from outside the summary screen or its setup code, and both were incorrect.

# Conflicts:
#	src/g_hub.cpp
#	src/g_level.cpp
#	src/gamedata/g_mapinfo.h
#	src/gi.h
#	src/p_setup.cpp
#	src/stringtable.cpp
#	src/stringtable.h
#	wadsrc/static/zscript/ui/statscreen/statscreen.zs
#	wadsrc_extra/static/iwadinfo.txt

# Conflicts:
#	src/gi.h
#	wadsrc_extra/static/iwadinfo.txt
2019-08-06 17:13:21 +02:00
Christoph Oelckers
bf767dd560 - give UMAPINFO the ability to disable cluster-based exit texts.
# Conflicts:
#	src/g_level.cpp
#	src/gamedata/g_mapinfo.h
2019-06-19 21:59:46 +02:00
alexey.lysiuk
8735dd18ad - exported unconditional level exit to ZScript
Exit_Normal and Exit_Secret specials imply addition conditions to make a decision about proceeding to the next map
A few scriptified actors require a bypass of these conditions in order to work properly
2019-06-17 22:03:28 +02:00
alexey.lysiuk
2fb48f30ff - made setting actor TID more explicit
Now it's no longer possible to manipulate TID hash from arbitrary location
For example, this prevents linking of destroyed object into the hash
TID member is still public but writing to it is limited to a few very specific cases like serialization and player traveling between levels

https://forum.zdoom.org/viewtopic.php?t=64476

# Conflicts:
#	src/actor.h
#	src/maploader/maploader.cpp
2019-05-10 12:41:29 +02:00
Christoph Oelckers
3dcbee6747 - fixed: IsPointInLevel must explicitly check for minisegs, which can be one-sided on maps with unclosed sectors.
Obviously, in such a case it is impossible to decide whether a point is really inside the map, so if this happens, behavior is undefined.
2019-04-28 23:14:38 +02:00
Christoph Oelckers
ff6881cd7c - fixed display of "Find help" text in Strife. Also moved this piece of code to a place where a real player exists. This was set at a point where the map wasn't loaded yet which caused a few problems.
# Conflicts:
#	src/g_level.cpp
#	src/p_user.cpp
2019-04-27 13:47:42 +02:00
Nemrtvi
e97d5281b4 Localized “FIND HELP” in Strife
The very first quest log that appears in Strife, “FIND HELP”, is located in a source file. This moves it to the language files.
2019-04-27 13:37:40 +02:00
Christoph Oelckers
90b57ed808 - fixed: TVector3::Pitch() got the sign inverted.
This caused bad calculations with CMF_OFFSETPITCH. Note that to compensate for the fix, the SphericalCoords function had to have its own inversion of the value removed so that it calculates the same result as before.
2019-04-27 12:10:41 +02:00
alexey.lysiuk
d8d290cd51 - fixed many compilation errors with GCC and Clang
# Conflicts:
#	src/dobjgc.h
2019-04-26 17:14:12 +02:00
Christoph Oelckers
094aa245e6 - fixed: G_StartTravel must remove all dynamic lights from the actors it is about to carry over to the next level. 2019-04-26 01:20:05 +02:00
Christoph Oelckers
251b096b48 - removed all remaining native parts of APlayerPawn.
Unlike the other classes, the places where variables from this class were accessed were quite scattered so there isn't much scriptified code. Instead, most of these places are now using the script variable access methods.
This was the last remaining subclass of AActor, meaning that class Actor can now be opened for user-side extensions.
2019-04-26 01:20:02 +02:00
Christoph Oelckers
8fecfb8f85 - properly handle passing of the light flags.
Since these can be changed on the placed light actor they have to be read from there, so this is now a pointer in FDynamicLight, just like the other properties that can be user-changed.
Also did some cleanup on the interface so that external code doesn't need to dereference the lightflags pointer but can use utility functions for all flags.

# Conflicts:
#	src/hwrenderer/dynlights/hw_dynlightdata.cpp
#	src/swrenderer/line/r_walldraw.cpp

# Conflicts:
#	src/g_level.cpp
#	src/gl/compatibility/gl_20.cpp
2019-04-26 00:42:05 +02:00
Christoph Oelckers
99dd234d10 - exported all native components of APlayerPawn.
Only the class definition itself remains and needs to be taken care of.

# Conflicts:
#	src/g_statusbar/sbarinfo_commands.cpp
#	src/hu_scores.cpp
#	src/scripting/thingdef_data.cpp

# Conflicts:
#	src/actorinlines.h
#	src/hu_scores.cpp
2019-04-25 17:42:11 +02:00
Christoph Oelckers
cd8791d68c - fixed sprite sorting in the hardware renderer.
This did no longer sort sprites in the same position reliably since the feature to render sprites which only partially are inside a sector was added.
With this, sprites in the same position are no longer guaranteed to be added to the render list in sequence.
Fixed by adding an 'order' field to AActor which gets incremented with each spawned actor and reset when a new level is started.

The software renderer will also need a variation of this fix but its data no longer has access to the defining actor when being sorted, so a bit more work is needed here.

# Conflicts:
#	src/hwrenderer/scene/hw_drawlist.cpp
#	src/hwrenderer/scene/hw_sprites.cpp
2019-04-18 18:53:10 +02:00
Christoph Oelckers
e6af596af0 - removed the redundant GetOffsetPosition export and added direct native support to its existing variants 2019-04-18 17:01:17 +02:00
alexey.lysiuk
82d05dce13 - fixed lost settings controller state upon new game
https://forum.zdoom.org/viewtopic.php?t=62959
2019-04-18 16:31:20 +02:00
alexey.lysiuk
25a6ba0e51 - cleaned up player reinitialization upon new game 2019-04-18 16:31:18 +02:00
Christoph Oelckers
a6ff1637df - more direct native stuff, this is a week old but was almost forgotten.
# Conflicts:
#	src/hwrenderer/postprocessing/hw_postprocessshader.cpp
2019-04-17 17:42:24 +02:00
Christoph Oelckers
b762c0f49c Removed more literal references to AInventory.
# Conflicts:
#	src/hwrenderer/scene/hw_drawinfo.cpp
#	src/v_draw.cpp
2019-04-16 23:57:07 +02:00
Christoph Oelckers
e8a6f82682 - scriptified G_PlayerFinishLevel.
Outside of SBARINFO this was the biggest remaining piece of code that referenced AInventory internals.
2019-04-16 21:28:24 +02:00
Christoph Oelckers
d123230fb1 - scriptified APlayerPawn::Die and fixed a few things I encountered while doing it. 2019-04-15 21:58:56 +02:00
Christoph Oelckers
95767fb63a - fixed some issues with the bodyque and moved this variable into FLevelLocals
* it was never saved in savegames, leaving the state of dead bodies undefined
* it shouldn't be subjected to pointer substitution because all it contains is old dead bodies, not live ones.

# Conflicts:
#	src/r_data/r_translate.cpp
2019-04-15 16:08:18 +02:00
Christoph Oelckers
9d126954d1 - removed the default parameter handling from all native script functions because it is no longer needed.
# Conflicts:
#	src/p_actionfunctions.cpp

# Conflicts:
#	src/hwrenderer/postprocessing/hw_postprocessshader.cpp
#	src/v_2ddrawer.cpp
2019-04-15 14:59:00 +02:00