Commit graph

3327 commits

Author SHA1 Message Date
Christoph Oelckers
0c36ab0651 - added CharUpper and CharLower functions to ZScript.
These, like MakeUpper and MakeLower, use the internal Unicode case conversion tables.

# Conflicts:
#	src/scripting/vmthunks.cpp
2019-05-14 19:37:49 +02:00
Christoph Oelckers
1e0228c13a - added Unicode aware MakeUpper/MakeLower functions to FString and ZScript's String and deprecated ToUpper/ToLower because their semantics did not allow fixing them. 2019-05-14 19:37:47 +02:00
Christoph Oelckers
6caf1f60c6 - added some UTF-8 utilities to FString.
This deprecated CharAt and CharCodeAt for being unsuitable for text processing and in the case of CharCodeAt also for being buggy.
A new replacement, ByteAt has been added that reads a string byte by byte, as well as CodePointCount, which counts the amount of Unicode code points in a string and GetNextCodePoint which reads the string code point by code point.
Note that while this woll work as intended with the currently supported languages as a means to read single characters, there is no guarantee that this will remain so if Unicode support gets extended to things which break the "one code point == one character" assumption.
2019-05-14 19:35:21 +02:00
Alexander
73a0275cf6 option search improvements
1. Top-level menu names are now properly handled.
2. Changing "Any or All terms" option now immediately updates the results.
3. Reformatted menu.zs to have tabs instead of spaces.
2019-05-14 19:01:25 +02:00
drfrag
e290cb77e4 - Added missing language definitions for option search.
# Conflicts:
#	wadsrc/static/language.rus
2019-05-14 18:59:34 +02:00
Alexander
dc666203b7 added option search menu
# Conflicts:
#	src/g_cvars.cpp
#	wadsrc/static/menudef.txt

# Conflicts:
#	src/menu/menu.cpp
2019-05-14 18:59:10 +02:00
Christoph Oelckers
cf818fbe10 - changed zstrformat to allow %c to emit non-ASCII characters as UTF-8. 2019-05-14 17:38:45 +02:00
Christoph Oelckers
0153a42240 - fixed issues with text entering
* entering a savegame description did not work anymore
* the length check was too restrictive and always underestimated the available space
* use the console font for entering a savegame description. This has more characters and better contrast for this content.
* the interface to the text enterer used bad measurements.

# Conflicts:
#	wadsrc/static/zscript/ui/menu/optionmenuitems.zs
2019-05-14 17:38:21 +02:00
Christoph Oelckers
1e9a65e673 - fixed the player name display.
This was broken by several small unicode-incompatible code fragments.
This commit also removes the input limit for the player name and the savegame description. With multibyte encoding, limiting them to a fixed length did not work right.
Currently these will just overflow the fields if the text becomes too long, this needs some additional work.
2019-05-14 17:19:34 +02:00
Christoph Oelckers
f790d48041 - made the menu's text input handler Unicode capable.
Also make sure that the savegame description remains readable. Unlike in-game text this can be done without double-encoding existing UTF-8.
2019-05-14 17:19:19 +02:00
drfrag
41023881cd - Do not use the internal graphic for the new Doom skill level even when the generated title looks worse, this way it can use custom fonts. 2019-05-10 23:43:41 +02:00
player701
cb57c712cb - Fixed random generation of friendly obituaries 2019-05-05 23:44:01 +02:00
Christoph Oelckers
aafb781d76 - removed the leftovers of the removed savedamount variable. 2019-05-02 19:56:24 +02:00
Christoph Oelckers
d599e2738d - removed the MaxAmount fudging from MaxHealth. 2019-05-02 19:55:35 +02:00
Christoph Oelckers
c258e60340 - use Obituary for both Demon and Spectre. 2019-05-02 19:54:19 +02:00
Alexander
c147990452 added MakeScreenShot and MakeAutoSave functions to FLevelLocals
# Conflicts:
#	src/g_game.h
#	wadsrc/static/zscript/base.zs
2019-05-02 19:53:42 +02:00
Christoph Oelckers
8bb4457a62 - re-added the menu option for wipetype which got lost in a recent menu reorganization. 2019-05-02 19:51:16 +02:00
Player701
d30c749d02 - Fixed conditions tested for when checking whether "Force respawn" or "Respawn protection" dmflags are enabled 2019-05-02 17:10:16 +02:00
Christoph Oelckers
9d70b8436a - changed the filter name for Doom IWADs
It's "doom.id.doom1/2" instead of "doom.doom1/2" now.
The config file's content will be renamed and for lump filtering a fallback has been added - note that you cannot combine both naming schemes! The old one has to be considered deprecated now.

This also removes the duplicated content necessitated by the old naming scheme.

# Conflicts:
#	src/version.h
2019-05-01 01:01:35 +02:00
Christopher Bruns
a1eb22bb02 Fix typo: add missing dollar sign in new stereo 3D submenu. 2019-05-01 00:59:23 +02:00
Christoph Oelckers
6ec2ddb702 - use a more reliable menu check for the player menu items.
This needs to ensure that it only allows modification from within a menu's event handlers and nowhere else.
2019-05-01 00:42:31 +02:00
Christoph Oelckers
85efd1fa0f - use the proper virtual methods for setting and retrieving the string in OptionMenuItemTextField.
Without this the class cannot be properly subclassed.

# Conflicts:
#	wadsrc/static/zscript/ui/menu/optionmenuitems.zs

# Conflicts:
#	wadsrc/static/zscript/ui/menu/optionmenuitems.zs
2019-05-01 00:29:19 +02:00
Christoph Oelckers
9ea041897c - fixed: OptionMenuItemSafeCommand did not allow unsafe commands. 2019-04-29 20:05:08 +02:00
Christoph Oelckers
dd916932e1 - removed unused (now always active) gl_trimsprites option from the menu.
# Conflicts:
#	src/gl/system/gl_menu.cpp
2019-04-29 19:56:19 +02:00
player701
95f4d626c7 - Fixed misplaced vertex on Community Chest MAP16 2019-04-29 19:51:53 +02:00
alexey.lysiuk
4711ced89b - fixed level progression of titan-426 map on easy skill
https://www.doomworld.com/idgames/levels/doom2/Ports/s-u/titan426
2019-04-29 19:51:51 +02:00
Rachael Alexanderson
08e5ca62b7 - fix a missing texture in strife map21 2019-04-29 19:51:48 +02:00
Christoph Oelckers
becd294661 - this option was in the wrong menu 2019-04-29 19:51:46 +02:00
Christoph Oelckers
82fac693d8 - made the gross railing hack for Strife a compatibility option and restricted it to MAP04
The side effects here broke other maps and this is really too glitchy to be turned on unless really necesasary.

# Conflicts:
#	src/gamedata/g_mapinfo.h
#	src/gamedata/stringtable.cpp
#	src/maploader/maploader.cpp
#	src/p_map.cpp
#	src/p_udmf.cpp
2019-04-29 19:51:43 +02:00
Rachael Alexanderson
55e43293c5 - fix missing texture in Strife MAP15 2019-04-29 19:51:39 +02:00
drfrag
4aece219a7 - Added missing language strings.
# Conflicts:
#	wadsrc/static/language.enu
#	wadsrc/static/language.rus
2019-04-29 19:34:41 +02:00
Christoph Oelckers
bafa312b91 - did a bit of cleanup on the option menus by regrouping some settings, especially splitting out of the Hardware Rendering Options menu into submenus.
# Conflicts:
#	wadsrc/static/language.csv
#	wadsrc/static/menudef.txt
#	wadsrc_extra/static/language.csv
2019-04-29 19:30:46 +02:00
Christoph Oelckers
a488791add - added A_Explode compatibility options.
There are two options here - one only disables the vertical thrust and the other goes back fully to the original non-z-aware code.
Both options are settable through MAPINFO.
For the compatibility presets, the normal ones only disable the vertical thrust, the strict ones force use of the old code entirely.

# Conflicts:
#	wadsrc/static/language.csv
2019-04-29 19:30:06 +02:00
Christoph Oelckers
bcb595002d - fixed the label for "Master Volume".
The text already existed, just with a different name.
2019-04-29 19:27:03 +02:00
Player701
5b0869f5b9 - Added Unholy Realms MAP27 to the node rebuild compatibility list 2019-04-29 19:26:45 +02:00
Christoph Oelckers
aeef28f544 - fix some holes the player can fall in for darken2 MAP12.
This map went a bit too far with lighting hacks depending on holes in the floor.
2019-04-29 19:26:43 +02:00
Christoph Oelckers
8a155b7452 - added a compatibility handler for a badly constructed crossbeam bridge in Unholy Realms MAP17. 2019-04-29 19:26:41 +02:00
Christoph Oelckers
b5fb443258 - fixed spacing of Strife's merchant's texts. 2019-04-29 19:06:21 +02:00
Christoph Oelckers
d96473c74a - give Hexen's PoisonCloud the OLDRADIUSDMG flag.
This actor has such oddball semantics that it's better not subjected to the revised radius damage code.
2019-04-29 19:04:07 +02:00
Christoph Oelckers
963d1b682c - fixed layout issues with Strife's dialogues.
They were using some settings from the option menu which they never should have used to begin with.
2019-04-29 19:03:23 +02:00
drfrag
2fb5c9a32b - Added missing strings.
# Conflicts:
#	wadsrc/static/language.enu
2019-04-29 19:02:50 +02:00
Christoph Oelckers
f57ebacae6 - localized some user-facing texts that were still string literals. 2019-04-29 18:53:22 +02:00
Christoph Oelckers
7a9b881299 - properly construct the reply texts for Strife's merchants. 2019-04-28 23:12:02 +02:00
Sterling Parker
c2bdeb7da1 Add LookScale property
As requested by @coelckers.
2019-04-28 23:02:01 +02:00
Sterling Parker
8ce7da0a5e Add LookScale variable on weapon
This variable allows a weapon to set a custom look sensitivity multiplier without fiddling with FOVScale / DesiredFOV hacks.
2019-04-28 23:01:57 +02:00
Major Cooke
fc510a7d89 Added CanTouchItem virtual.
- Allows an actor with +PICKUP flag to determine if it can pick up specific items or not.
2019-04-28 22:57:40 +02:00
Christoph Oelckers
a5b7250f3b - did a bit more tweaking to the menu dims.
Red on red in Doom was still not good, so the colors were darkened more and made more opaque.
2019-04-28 22:52:35 +02:00
Christoph Oelckers
c5a1c8be4a - split up the compatibility menu by making each subsection its own submenu.
This one, even more than the gameplay options has devolved into an overwhelming wall of text.
2019-04-28 22:52:33 +02:00
Christoph Oelckers
a97aacca1f - split up the automap colors menu.
The cheat and overlay settings are now in submenus. Like the gameplay menu, this was simply too long.
2019-04-28 22:52:31 +02:00
Christoph Oelckers
3c984f8c58 - split out the deathmatch and coop gameplay settings into their own submenus. 2019-04-28 22:52:28 +02:00
Christoph Oelckers
4e0934369c - made the menu dim darker and a bit more opaque.
The recent localization work has made it apparent that on many images the menu was extremely hard to read because its colors often clash with the background.
The choice of a bright overlay color with extremely low opacity is simply not enough to make the menus comfortable to navigate. Chex Quest was particularly bad but the problem existed in many Doom mods as well.
This also changes the CQ dim color to something a bit more green to better fit with the theme.
2019-04-28 22:52:09 +02:00
Christoph Oelckers
44aeb8effc - moved the weapon bobbing options from the Display Options to the HUD Options menu. 2019-04-28 22:51:06 +02:00
Rachael Alexanderson
d1ec7c8cfd - removed spacing gaps in the customize controls menu 2019-04-28 22:50:19 +02:00
Christoph Oelckers
536c0b7647 - fixed: Unmorphing a monster did not clear its UNMORPHED flag. 2019-04-28 22:47:02 +02:00
Major Cooke
d34108f0e9 Renamed to musplaying.
# Conflicts:
#	wadsrc/static/zscript/base.zs
2019-04-28 22:38:25 +02:00
Major Cooke
43eaa03654 Exported MusPlayingInfo to ZScript.
- Allows grabbing the currently playing song, base order, and loop properties.

# Conflicts:
#	wadsrc/static/zscript/base.zs

# Conflicts:
#	wadsrc/static/zscript/base.zs
2019-04-28 22:37:08 +02:00
Rachael Alexanderson
99b5dd0c66 - separate/group out the volume sliders, make them look slightly hierarchal in order to denote their importance 2019-04-28 22:27:03 +02:00
nashmuhandes
ddaae8e614 Added a master volume setting.
# Conflicts:
#	wadsrc/static/language.enu
2019-04-28 22:25:50 +02:00
Christoph Oelckers
60e1bb604e - removed unused gl_spritebrightfog CVAR.
# Conflicts:
#	src/gl/system/gl_cvars.h
#	src/gl/system/gl_menu.cpp
2019-04-28 22:25:12 +02:00
Christoph Oelckers
961a6fe211 - reorganized the ZScript content in gzdoom.pk3 and changed the files' extensions to something unique for easier syntax highlighting.
# Conflicts:
#	wadsrc/static/zscript.txt
2019-04-28 22:14:34 +02:00
Christoph Oelckers
ff0774c2f2 - changed all places which used a localized string as a format template for printf, String.Format et.al.
Passing something non-constant at compile time here is extremely dangerous, especially when users can replace those strings if they like.
It now uses FString::Substitute in all cases where something needs to be inserted into a template string.
2019-04-28 21:25:28 +02:00
Christoph Oelckers
9835ef5cfa - a bit of text cleanup. Removed some unused strings and moved a few not-to-be-translated ones to language.def.
# Conflicts:
#	wadsrc/static/language.rus
2019-04-28 21:22:21 +02:00
Christoph Oelckers
ed1be38e56 - moved the lump/resource names in the string table to their own file and removed them from other language files.
These are neither supposed to be translated nor overridden by other language tables.
Doing so may break later Dehacked refactorings.

# Conflicts:
#	wadsrc/static/language.rus
2019-04-28 21:21:41 +02:00
Alexander
f2de88073d moved controls to submenus in "Customize Controls" menu
What is done:
D1. Controls are separated by existing sections, each section is now a submenu;
D2. The original sections are preserved;
D3. The original controls order is preserved;
D4. "Controls" section is renamed to "Game", because "Controls" submenu of "Customize Controls" would be too confusing;
D5. Map (automap) controls are added as a section, map controls submenu is unchanged;
D6. Missing controls are added to "Other" section;
D7. Sections are given a title following the scheme "Customize <section> Controls", except N4 (see below).
D8. Inside the sections, spaces are added to group the related controls.

Things that I'm not sure about:
N1. "Game" controls section name is too generic - I'll gladly change it to something more suitable;
N2. "Other" controls section name is too generic - I'll gladly change it to something more suitable;
N3. Map controls submenu could use some spacing, and internal title ("Map Controls") is redundant;
N4. "Strife Popup Screens" section name is too long to fit in scheme described in D7, therefore the title is "Strife Popup Screens Controls";
N5. "Game" section could be divided further, but this will break the original menu structure.
2019-04-28 20:34:24 +02:00
drfrag
171517f430 - Exported missing ZScript functions and added workaround for different syntax without the level refactor. 2019-04-28 20:04:35 +02:00
Christoph Oelckers
074ee3238b - sanitized the 'frozen level' code.
This had two different flags that were checked totally inconsistently, and one was not even saved.
Moved everything into a few subfunctions so that these checks do not have to be scattered all over the code.

# Conflicts:
#	src/actorinlines.h
#	src/decallib.cpp
#	src/g_levellocals.h
#	src/hwrenderer/scene/hw_sprites.cpp
#	src/p_mobj.cpp
#	src/p_saveg.cpp
#	src/p_user.cpp
#	src/polyrenderer/scene/poly_particle.cpp
#	src/scripting/vmthunks.cpp
#	src/swrenderer/things/r_particle.cpp
#	wadsrc/static/zscript/actors/player/player.zs
#	wadsrc/static/zscript/base.zs

# Conflicts:
#	src/g_levellocals.h
#	src/hwrenderer/scene/hw_sprites.cpp
#	wadsrc/static/zscript/base.txt
2019-04-28 19:10:52 +02:00
alexey.lysiuk
f5f1564f69 - added ability to customize font of automap marks
Set am_markfont CVAR to a desired font name
Use am_markcolor to select a text color, has no effect with the default font, AMMNUMx

# Conflicts:
#	src/am_map.cpp
2019-04-28 15:11:43 +02:00
Christoph Oelckers
5b78d7faaa - fixed run health clamping.
This didn't scale the move factors properly.
2019-04-28 15:09:25 +02:00
Christoph Oelckers
30512f8fe3 - made gameaction read only
The script side cannot do anything useful with this, because most actions require parameters in global variables, so this is a first grade candidate for rogue mods to make the engine misbehave.
2019-04-28 15:09:22 +02:00
alexey.lysiuk
ec4f306463 - added compatibility entries for maps affected by buggy CheckSwitchRange behavior 2019-04-28 12:03:55 +02:00
alexey.lysiuk
9f0eb35b28 - added compatibility flag for buggy CheckSwitchRange behavior
https://forum.zdoom.org/viewtopic.php?t=63008
https://forum.zdoom.org/viewtopic.php?t=63650
2019-04-28 12:03:52 +02:00
Christoph Oelckers
83dbabfa22 - moved the displayed text in strfhelp.o to the string table. 2019-04-28 11:53:39 +02:00
Christoph Oelckers
b8ee8f3e94 - moved Strife's map names to the string table. 2019-04-28 11:53:36 +02:00
Christoph Oelckers
2cad60d9e9 - removed extraneous parameter in SpawnPlayerMissile call in A_FireProjectile.
The native variant has a MissileActor out parameter in this place, but in ZScript that's a secondary return value.
2019-04-28 11:46:51 +02:00
Christoph Oelckers
736bac7a93 - exported LevelLocals's compatibility flags to scripting and fixed all places where access to combined compatibility flags is needed.
# Conflicts:
#	src/scripting/vmthunks.cpp
#	src/scripting/vmthunks_actors.cpp
#	wadsrc/static/zscript/doom/fatso.txt
#	wadsrc/static/zscript/doom/painelemental.txt
2019-04-28 11:46:26 +02:00
Major Cooke
47dbc95e2b Added inflictor, source and flag parameters to GetModifiedDamage on actors and ModifyDamage on inventory.
- The flags are used by DamageMobj so modders can determine radius damage, for example, by checking for DMG_EXPLOSION.
2019-04-27 23:45:49 +02:00
Christoph Oelckers
0a7027489e - added a compatibility fix for KDiZD Z1M3 and fixed some tagging issues in the compatibility handler.
One sector in an underwater area of KDIZD Z1M3 got tagged with an incorrect Transfer_Heights effect which caused render glitches in that area.
There were also a few AddSectorTag calls without first clearing the sector's tags leading to potentially undefined behavior.
2019-04-27 23:45:47 +02:00
Christoph Oelckers
1c410d4050 - rewrote the language table so that it doesn't have to reload everything on a language change.
It now reads everything into a two-dimensional TMap and creates a list of mappings that apply to the current setting.
The constant need for reloading was the main blocker in redesigning how Dehacked strings get inserted. Currently they override everything, but IWAD-based Dehacked text shouldn't block PWAD overrides from PWADs' LANGUAGE lumps and instead be treated as coming from an [en default] block.

This also renames the main block from [enu default] to [en default], because it should be treated as the English default for all English locales and not just make it fall through to the base default as it did before.

# Conflicts:
#	src/doomstat.cpp

# Conflicts:
#	src/stringtable.cpp
2019-04-27 16:13:21 +02:00
Christoph Oelckers
1382d79ab1 - exported all texts from Strife's dialogues to the string table.
Now all this content can be localized. However, since this is actual game content it was placed in a secondary file in zd_extra.pk3, so that it won't affect the GPL-compatible status of the main one.

# Conflicts:
#	src/p_conversation.cpp
2019-04-27 13:47:44 +02:00
Christoph Oelckers
23a4094080 - allow localization of Hexen's original ACS strings.
This way of looking up strings is intentionally limited to content from Hexen.wad and Hexdd.wad.

# Conflicts:
#	src/maploader/maploader.cpp
#	src/p_acs.cpp
#	src/p_acs.h
2019-04-27 13:47:40 +02:00
Christoph Oelckers
3b631ca766 - removed bad character from A_CustomPunch definition. 2019-04-27 13:47:37 +02:00
Christoph Oelckers
3291428c25 - fixed: The CheckEnvironmant call in PlayerThink can already invalidate the PlayerPawn so even the calls to CheckUndoMorph and CheckUse need to get the pawn through the PlayerInfo. 2019-04-27 13:45:12 +02:00
Nemrtvi
ebf5319962 Fixed “Finished:” and “Now entering” in Heretic
The text file
gzdoom/wadsrc/static/zscript/statscreen/statscreen.txt
is set to use strings called “$ENTERING” and “$FINISHED”, located in the language files, in intermission screens between levels in Heretic. However, these strings are named incorrectly in the language files, instead being written as “$WI_ENTERING” and “$WI_FINISHED” for some reason I’m unaware of. After renaming the original script, the ingame text shows up through what is written in the language files, as intended.

On a miscellaneous note: in GZDoom, the text between levels in Heretic says “Entering:”. In the DOS version, it says “Now entering:”. This is accurately reflected in the English language file, though, and thus faithful to the original when displayed ingame.
2019-04-27 13:37:47 +02:00
Christoph Oelckers
40ad9a2584 - allow localization of Strife's log text. 2019-04-27 13:37:44 +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
Major Cooke
a3d2b159c9 Added Inventory UNCLEARABLE flag.
- Allows prevention of ClearInventory without stopping it from being dropped.
2019-04-27 13:34:30 +02:00
Major Cooke
0adf6a52f5 Added CheckReplacee.
- Allows defining of what actor is replacing another for information.
- If multiple arachnotrons, a modder can attribute them as being a replacer of Arachnotron itself, allowing A_BossDeath and GetReplacee to work with it.
2019-04-27 13:34:25 +02:00
Erick Tenorio
3c913954ec - DOOM.WAD fixes 2019-04-27 13:34:23 +02:00
Christoph Oelckers
17cdc3145f - make the file name of savegame nodes read only. 2019-04-27 13:30:35 +02:00
Christoph Oelckers
4daa256e2f - fixed: RecreateAllAttachedLights must activate the lights it creates.
This also removes the gl_attachedlights CVAR because with the new management this doesn't really work anymore.

# Conflicts:
#	src/gl/system/gl_cvars.h
#	wadsrc/static/menudef.txt
2019-04-27 13:20:44 +02:00
Christoph Oelckers
309407ed61 - use map time, not hub time for map actions. 2019-04-27 13:18:08 +02:00
Christoph Oelckers
ac68316527 - call level compatibility handlers for all levels and pass the map name as a second parameter.
This is for user-made handlers for which the checksum is rather useless both for deciding whether to call the handler and for identifying the map.

# Conflicts:
#	src/compatibility.cpp
#	wadsrc/static/zscript/level_compatibility.txt
2019-04-27 13:02:58 +02:00
Christoph Oelckers
9402929209 - swapped order of checks for picking up an item.
Failure must take precedence over the morph check because this does not return a proper toucher.
2019-04-27 12:43:18 +02:00
Christoph Oelckers
5f6b6d8b8a - fixed armor bonus giving in A_CustomPunch 2019-04-27 12:37:53 +02:00
nashmuhandes
fc3769bd7e Move the "time" string in saved game comment into the LANGUAGE lump.
# Conflicts:
#	src/g_game.cpp
2019-04-27 12:37:50 +02:00
Christoph Oelckers
7407a1dca6 - fixed: ScriptUtil.PlayerAmmo must be declared static. 2019-04-27 12:27:59 +02:00
alexey.lysiuk
8639c1412f - fixed 'missing interpolation point' warning 2019-04-27 12:27:26 +02:00
alexey.lysiuk
9596564d15 - workaround code generation issue in PlayerPawn.FindMostRecentWeapon()
Multiple values in returned from a subfunction cannot be used directly as a function result

https://forum.zdoom.org/viewtopic.php?t=63284
2019-04-27 12:10:39 +02:00
Christoph Oelckers
e2c2837aa5 - allow assignment of line IDs through LevelCompatibility. 2019-04-27 11:38:41 +02:00
drfrag
a6d5e58886 - Partial port of "made some changes to how the compatibility code works" to allow exporting to ZScript. 2019-04-27 11:38:37 +02:00
alexey.lysiuk
23a84994f5 - fixed disappearing inventory after morphing pickup
When player is picked up item that does morph, the corresponding toucher actor is changed in process
Previously, morhing item was removed from original actor leaving player's inventory in inconsistent state

https://forum.zdoom.org/viewtopic.php?t=63124
2019-04-26 18:15:00 +02:00
alexey.lysiuk
9e6f97930b - fixed condition to produce blood splatter during line attack
https://forum.zdoom.org/viewtopic.php?t=63186
2019-04-26 18:14:54 +02:00
Christoph Oelckers
a259cd700d - fixed: Strife was missing the move factors. 2019-04-26 18:11:24 +02:00
Christoph Oelckers
21e4f0b817 - made OP_NEW a builtin function instead of an opcode.
The code was present 3 times due to the JIt, and this is not something that benefits from being a real opcode, even in the interpreted case.
2019-04-26 17:23:33 +02:00
Marrub
af27d579ac Make LevelLocals::ExecuteSpecial return int
# Conflicts:
#	wadsrc/static/zscript/base.txt
2019-04-26 17:20:44 +02:00
Christoph Oelckers
d92ac0d802 - fixed last PR.
The result of GetPointer must be null checked as well!
2019-04-26 17:10:53 +02:00
Cacodemon345
745ee03bba Move receiver NULL check above the orresult check (#695)
This is to prevent a VM abort from happening here if orresult is false.
2019-04-26 17:10:50 +02:00
Christoph Oelckers
b00a039af8 - let RunHealth clamping respect the newly added global properties. 2019-04-26 01:31:12 +02:00
Christoph Oelckers
9a99d55896 - made forwardmove and sidemove defaults configurable through the gameinfo section. 2019-04-26 01:31:07 +02:00
Christoph Oelckers
7f7c87a537 - fixed: Trying to remove the first item in an actor's inventory would lose all owned items. 2019-04-26 01:29:06 +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
f261ec7d53 - rewrote dynamic lights to not use actors for the internal representation and made DynamicLight a purely scripted class.
This should be less of a drag on the playsim than having each light a separate actor. A quick check with ZDCMP2 showed that the light processing time was reduced to 1/3rd from 0.5 ms to 0.17 ms per tic.
It's also one native actor class less.

# Conflicts:
#	src/g_shared/a_dynlight.cpp
#	src/g_shared/a_dynlight.h
#	src/hwrenderer/dynlights/hw_dynlightdata.cpp
#	src/hwrenderer/dynlights/hw_dynlightdata.h
#	src/hwrenderer/scene/hw_renderhacks.cpp
#	src/namedef.h
#	src/scripting/thingdef_data.cpp
#	src/swrenderer/line/r_walldraw.cpp

# Conflicts:
#	src/d_main.cpp
#	src/g_levellocals.h
#	src/g_shared/a_dynlight.cpp
#	src/g_shared/a_dynlight.h
#	src/gl/dynlights/gl_dynlight.h
#	src/gl/dynlights/gl_dynlight1.cpp
#	src/gl/scene/gl_spritelight.cpp
#	src/gl/scene/gl_walls.cpp
#	src/hwrenderer/dynlights/hw_shadowmap.cpp
#	src/hwrenderer/dynlights/hw_shadowmap.h
#	src/hwrenderer/scene/hw_flats.cpp
#	src/p_setup.cpp
2019-04-26 00:19:03 +02:00
Christoph Oelckers
bc8af1cab8 Fixed initialization issues with dynamic lights.
Actors get initialized from their defaults so anything done in the constructor or some explicit member initialization will be overwritten.
They must use their properties for setting up configurable fields and do the rest in BeginPlay.
2019-04-25 20:59:06 +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
94eb0ecdda - scriptified the remaining PlayerPawn methods. 2019-04-25 17:35:44 +02:00
Christoph Oelckers
b28faa6793 - took several methods out of the native PlayerPawn implementation, either by scriptification or moving them to other places. 2019-04-25 17:34:56 +02:00
Christoph Oelckers
6f2a32ecbe - scriptified PlayerPawn.ResetAirSupply. 2019-04-25 17:34:53 +02:00
Christoph Oelckers
1c577e4c97 - scriptified APlayerPawn's DamageFade handling. 2019-04-25 17:34:51 +02:00
Christoph Oelckers
cf890a24c3 - scriptified P_CalcHeight.
This was the only code using the ViewBob member variable.
This also moves the range check for this variable to its application, because a badly behaved mod can just as easily change it at run time instead of just setting an absurdly large value in the class definition.
2019-04-25 17:34:49 +02:00
Christoph Oelckers
8e376754fc - did some more lightening on the PlayerPawn class. 4 more properties and one native member function have been handled. 2019-04-25 17:34:47 +02:00
Christoph Oelckers
cb2e46a4fe - scriptified A_SkullPop and ObtainInventory.
These were the last relevant items to access PlayerPawn.InvFirst.
2019-04-25 17:34:43 +02:00
Christoph Oelckers
08e2a86f64 - made ColorRangeStart and ColorRangeEnd meta properties of APlayerPawn.
These are only used during initialization and they should have been readonly from the start.
2019-04-25 17:34:41 +02:00
Christoph Oelckers
51499e167d - scriptified useflechette CCMD's item finding code. 2019-04-25 17:34:39 +02:00
Christoph Oelckers
4be9217215 - scriptified the declaration of AmbientSound
Most of the code is still native, but this means that PlayerPawn is the last remaining child of AActor.

# Conflicts:
#	src/g_shared/a_dynlight.cpp
2019-04-25 17:34:37 +02:00
Christoph Oelckers
0c1fc45df8 - fixed A_Chase default detection. 2019-04-25 16:31:58 +02:00
Marrub
d623ede89d Fix A_CustomBulletAttack's spawnofs_xy parameter
The current behaviour offsets to the front of the actor rather than the side, due to an oversight in the code, which oddly is not present in the A_FireBullets equivalent.
2019-04-25 13:10:44 +02:00
Player701
3d1e810e72 - Since GetParentAmmo is now virtual, BackpackItem and the "give ammo" cheat should call GetParentAmmo to determine base ammo classes. 2019-04-25 13:10:41 +02:00
alexey.lysiuk
b706e8fead - fixed everlasting fast projectile after hitting ceiling
Without the test for ceiling hit fast projectile could enter its Death state every tick infinitely

https://forum.zdoom.org/viewtopic.php?t=63023
2019-04-25 13:04:25 +02:00
Christoph Oelckers
f1b345dc73 - fixed crash in AutoUseStrifeHealth
The loop never checked if the item was still valid and would continue to try to use it, even after it was removed from the inventory and destroyed.
As native code this just failed silently, but with the VM it needs to be explicitly checked.
2019-04-25 13:04:21 +02:00
Major Cooke
5209d43bf3 - Fixed: SXF_CLEARCALLERSPECIAL cleared the spawned actor's special instead of the caller. 2019-04-25 13:03:50 +02:00
Christoph Oelckers
5bb0428fa8 - made PlayerPawn.TweakSpeeds virtual. 2019-04-25 12:55:16 +02:00
alexey.lysiuk
32f0bbfe03 - fixed ammo check for weapon with 'uses both' flags
https://forum.zdoom.org/viewtopic.php?t=63047
2019-04-25 12:52:20 +02:00
alexey.lysiuk
8e230eebaf - fixed missing attack sound in A_CustomPunch
See 7bb3855439/src/p_actionfunctions.cpp (L1729)

https://forum.zdoom.org/viewtopic.php?t=63049
2019-04-25 12:51:49 +02:00
Erick Tenorio
3262af7514 - TNT.WAD fixes 2019-04-25 12:45:25 +02:00
Erick Tenorio
63313d0214 - Have Plutonia MAP16 pit kill player 2019-04-25 12:45:23 +02:00
Major Cooke
662b2ed759 Split off pain chance triggering from ReactToDamage into its own function and gave ZScript access to it.
- TriggerPainChance(Name mod, bool forcedPain)
- One exception: PainThrehold is only checked in ReactToDamage, since this function does not require checking damage amount.
2019-04-18 19:56:38 +02:00
alexey.lysiuk
4044a6e724 - declared Actor's Morph() and UnMorph() functions virtual
They are expected to be virtual on C++ side
2019-04-18 19:55:26 +02:00
Magnus Norddahl
3a76840f87 - remove shadow acne when dynlights perfectly align with planes 2019-04-18 17:49:57 +02:00
Christoph Oelckers
18cec62458 - fixed random number generation in SpawnFizzle.
This should now produce the same value range as Hexen's original code.
2019-04-18 17:46:21 +02:00
Christoph Oelckers
ff12eab7e5 - fixed bad attempt at restoring position in A_CustomBulletAttack. 2019-04-18 17:46:19 +02:00
Christoph Oelckers
cc34946e80 - missed this. 2019-04-18 17:46:17 +02:00
Christoph Oelckers
18dd23c79d - gave the strifehumanoid's burn states dynamic lights.
Unlike everything else from the IWADs this had to use the 'light' keyword in ZScript because this is merely a base class for many others and the light definitions here need to be inheritable.
2019-04-18 17:46:15 +02:00
Christoph Oelckers
0dcbc02cd7 - renamed back arguments of A_FireProjectile. 2019-04-18 17:46:14 +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
Christoph Oelckers
999894af25 - cleaned up use of the random function in script files.
Many uses of random() & value have been turned into random(0, value).
This is not only more efficient, it also ensures better random distribution because the parameter-less variant only returns values between 0 and 255.
2019-04-18 17:01:14 +02:00
Christoph Oelckers
bda2a75466 - fixed PlayerInfo.FindMostRecentWeapon
returning multiple values from a subfunction is currently not working so this has to add an indirection.
2019-04-18 17:01:07 +02:00
Christoph Oelckers
3291cecad9 - fixed: For an initial weapon pickup, sv_unlimited_pickup wasn't checked for the included ammo. 2019-04-18 16:23:04 +02:00
Cacodemon345
fdd6e3cec9 Export P_GetOffsetPosition and ADynamicLight::SetOffset to ZScript 2019-04-18 16:23:01 +02:00
Player701
5c248053f3 - Fixed the position of the soul sphere within one of the secret areas (sector 324) of Alien Vendetta MAP28. 2019-04-18 15:01:11 +02:00
Christoph Oelckers
f7fe19ee51 - made Ammo.GetParentAmmo virtual 2019-04-18 14:34:28 +02:00
Magnus Norddahl
3d69fc327b - vWorldNormal is not normalized but R_DoomColormap requires this 2019-04-18 14:34:27 +02:00
Chronos Ouroboros
218b7e95ca Added a function for triggering use/push specials for usage in custom monster AI. 2019-04-18 14:22:07 +02:00
Chronos Ouroboros
803cb16d99 Exported P_CheckFor3DFloorHit and P_CheckFor3DCeilingHit to ZScript. 2019-04-18 14:22:05 +02:00
Christoph Oelckers
4d7e945dc1 - fixed: A powered up weapon which shares its ready state with the parent but is currently in a firing sequence may not force-switch the weapon, because that will cause the sequence to run in the wrong weapon's context. 2019-04-18 14:22:02 +02:00
Magnus Norddahl
b3cd6f4460 - fix vanilla light mode angle calculation 2019-04-18 12:50:25 +02:00
Magnus Norddahl
bafc5e6a3c - add vanilla lightmode that behaves exactly as Doom's original light did
# Conflicts:
#	src/hwrenderer/scene/hw_drawinfo.cpp
#	src/hwrenderer/scene/hw_renderstate.cpp
#	src/hwrenderer/scene/hw_renderstate.h
#	src/hwrenderer/scene/hw_skyportal.cpp
#	src/hwrenderer/scene/hw_weapon.cpp

# Conflicts:
#	src/g_level.cpp
#	src/gl/compatibility/gl_20.cpp
#	src/gl/renderer/gl_lightdata.cpp
#	src/gl/renderer/gl_renderstate.h
#	src/gl/scene/gl_skydome.cpp
#	src/gl/scene/gl_weapon.cpp
#	src/hwrenderer/scene/hw_weapon.cpp
#	src/hwrenderer/utility/hw_lighting.cpp
2019-04-18 12:50:03 +02:00
Rachael Alexanderson
f442d4bd54 - split gl_texture_hqresize into two variables - one for mode, one for multiplier.
# Conflicts:
#	src/textures/hires/hqresize.cpp

# Conflicts:
#	src/gl/textures/gl_hqresize.cpp
#	src/r_videoscale.cpp
2019-04-17 21:04:41 +02:00
drfrag666
7e45b40d4b Revert "- Removed 5x and 6x xBRZ modes from the menu since they require a lot of video memory. They crash on my 1 GB amd card at least with MinGW-w64."
This reverts commit 097c2268df24133dc4a48452dabb4c00567545dd.

# Conflicts:
#	wadsrc/static/menudef.txt
2019-04-17 21:00:22 +02:00
alexey.lysiuk
77e47087b7 - fixed stuck memory usage warning in options menu
https://forum.zdoom.org/viewtopic.php?t=62186
2019-04-17 20:59:49 +02:00
Rachael Alexanderson
301246236c - added normal5x and normal6x 2019-04-17 20:59:20 +02:00
Rachael Alexanderson
cd126b08ba - use correct multipliers for the memory warnings for normalNx scalers 2019-04-17 20:58:47 +02:00
drfrag
96f996d8aa Revert "Revert "- update xBRZ upscaler to version 1.6""
This reverts commit 285791622d.

# Conflicts:
#	src/gl/textures/gl_hqresize.cpp
#	wadsrc/static/menudef.txt

Goodbye to TDM-GCC.
2019-04-17 20:33:41 +02:00
Player701
c6ab780555 - Force node rebuild for Plutonia 2 MAP29 to fix BSP glitches 2019-04-17 19:59:14 +02:00
Rachael Alexanderson
c8d545b293 - added a number of darken2.wad maps to rebuild nodes in compatibility.txt 2019-04-17 19:59:13 +02:00
Player701
764e9b552e - Force node rebuild for Plutonia 2 MAP25 to fix BSP glitches 2019-04-17 19:57:24 +02:00
Christoph Oelckers
f40e5c7edc - re-added PlayerInfo.BringUpWeapon. 2019-04-17 19:44:12 +02:00
Player701
8277de8626 - Added Plutonia 2 MAP10 and MAP11 to the "rebuildnodes" compatibility list. 2019-04-17 18:44:10 +02:00
Rachael Alexanderson
dacad6c4eb - add plutonia map32 to node regen compatibility - https://forum.zdoom.org/viewtopic.php?f=2&t=62777 2019-04-17 18:39:54 +02:00
Christoph Oelckers
cf4f573a25 - more direct native entry points.
- disallow bool as a return value for direct native calls because it only sets the lowest 8 bits of the return register.
- changed return type for several functions from bool to int where the return type was the only thing blocking use as direct native call.
2019-04-17 17:27:39 +02:00
Christoph Oelckers
082cb5b656 - scriptified P_CheckMeleeRange2. 2019-04-17 16:24:10 +02:00
Christoph Oelckers
15ab1fb09b - deprecated a few functions that depend on AAPTR_* to be useful.
- fixed wrong name for the LineAttack action function.
2019-04-17 16:24:05 +02:00
Christoph Oelckers
792aaa5b88 Added direct native entry points to a larger number of functions.
# Conflicts:
#	src/scripting/vmthunks_actors.cpp
2019-04-17 15:11:22 +02:00
Christoph Oelckers
77e60865a0 - fixed: SlotPriority must be a float.
It was a fixed before but I missed that when refactoring it into an automatic property.
2019-04-17 15:11:12 +02:00
Christoph Oelckers
a5e16e3261 - moved a large part of the VM thunks out of p_mobj.cpp. 2019-04-17 14:55:58 +02:00
Christoph Oelckers
f22aaca74d - scriptified ASpecialSpot.
This only had two simple native methods so the class is not fully scripted.
2019-04-17 14:32:10 +02:00
Christoph Oelckers
c87724ef0a Removed all native components from AInventory. 2019-04-16 23:57:22 +02:00
Christoph Oelckers
d40de21bae - scriptified A_SpawnSingleItem, which was the last piece of native code still referencing AInventory 2019-04-16 23:57:19 +02:00
Christoph Oelckers
d2225040ea - scriptified A_SelectWeapon 2019-04-16 23:57:15 +02:00
Christoph Oelckers
b8e1218645 Removed all remaining references to AInventory
What remains is the class definition and one single reference that will be scriptified.
2019-04-16 23:57:12 +02:00
Christoph Oelckers
36af613dfa - The 'A' prefix has no meaning in class names on the script side - even in comments. 2019-04-16 22:01:06 +02:00
Christoph Oelckers
318a9d7893 - fixed max. ammo display on AltHud. 2019-04-16 22:00:59 +02:00
Christoph Oelckers
e176410ab6 - fixed crash with weapons which remove themselves from the inventory but continue calling action functions.
This is still an error, so now this throws a meaningful exception.
2019-04-16 21:53:00 +02:00
Christoph Oelckers
c0686309fc - removed all direct references of AInventory::Owner and AInventory::Amount from the C++ code. 2019-04-16 21:52:53 +02:00
Marisa Kirisame
739999b5ed Fix RemoveInventory not calling DetachFromOwner when an item is the first in the owner's inventory.
Fix CheckAddToSlots not working because it uses GetReplacement incorrectly.
2019-04-16 21:52:50 +02:00
Christoph Oelckers
7e75aa1d36 - fixed accidentally misnamed parameter in A_Explode. 2019-04-16 21:34:47 +02:00
Christoph Oelckers
9f2b62c99c - scriptified AInventory::Tick.
This was the last bit of code standing in the way of making AInventory a fully scripted class.
All that's left to sort out is some variable accesses - the vast majority of them in SBARINFO.
2019-04-16 21:28:37 +02:00
Christoph Oelckers
bdd6d31a63 - scriptified the AutoUseHealth feature.
This again is a piece of code that reads and even writes to inventory items' properties, so better have it on the script side.
2019-04-16 21:28:34 +02:00
Christoph Oelckers
80e3ce735b - scriptified the decision making of the invuseall CCMD.
Custom items had no way to adjust to this - and it also was the last native access to ItemFlags.
2019-04-16 21:28:32 +02:00
Christoph Oelckers
9ff5257ce9 - scriptified P_DropItem. 2019-04-16 21:28:30 +02:00
Christoph Oelckers
17862639a1 - scriptified the no-spawn flag check for armor and health items. 2019-04-16 21:28:29 +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
8dfcdc1219 - fixed incomplete null checks in A_RadiusThrust. 2019-04-16 21:28:23 +02:00
Christoph Oelckers
9315a217b3 - scriptified AActor::ClearInventory 2019-04-16 21:28:21 +02:00
Christoph Oelckers
0d8975ed31 - scriptified the last components of the alternative HUD.
- moved the ALTHUDCF parser PClass::StaticInit, so that it gets done right after creating the actor definitions.

All left to do is not to reallocate the AltHud object for each frame but store it in a better suited place.

# Conflicts:
#	src/d_main.cpp

# Conflicts:
#	src/info.cpp
2019-04-16 19:03:43 +02:00
Christoph Oelckers
376266b6a0 - scriptified the main drawer for the in-game HUD and removed all intermediate VM calls from the native source. 2019-04-16 19:02:01 +02:00
Christoph Oelckers
9d8dd5c529 - scriptified the AltHUD'S powerup drawer. 2019-04-16 19:01:55 +02:00
Christoph Oelckers
f509fdfdaa - scriptified and cleaned up the AltHUD's DrawCoordinates, DrawTime and DrawLatency functions.
Some backing functionality was moved elsewhere because scripting should not have access to low level system information.
2019-04-16 19:01:53 +02:00
Christoph Oelckers
eb07b8e543 - scriptified the AltHUD's inventory drawer and fixed the InvPrev CCMD. 2019-04-16 19:01:51 +02:00
Christoph Oelckers
e0915877b4 - scriptified the AltHUD's weapon drawer. 2019-04-16 19:01:50 +02:00
Christoph Oelckers
045d6d4355 - added the missing TNT1A0 check for icon-less keys.
Since it tries to get the icon from the spawn state it also has to check if that actually has a valid sprite.
2019-04-16 19:01:48 +02:00
Christoph Oelckers
437c72a089 - AltHUD ammo drawer scriptified. 2019-04-16 19:01:46 +02:00
Christoph Oelckers
1033dc3b10 - Alt HUD scriptification, part 1. 2019-04-16 19:01:43 +02:00
Major Cooke
7ff76366ef Fixed A_JumpIfNoAmmo not working. 2019-04-16 18:46:06 +02:00
Christoph Oelckers
1b55e708bc - fixed the AngleToVector calls in stateprovider.txt.
This looks like a search & replace gone wrong.
2019-04-16 18:46:04 +02:00
Major Cooke
4ae14c402b - Restored A_SpawnItemEx's "chance" to "failchance" to prevent mod breakage from named parameters. 2019-04-16 18:46:00 +02:00
Christoph Oelckers
d18ed18d2e - scriptified invnext and invprev CCMDs. 2019-04-16 18:45:54 +02:00
Christoph Oelckers
081d0bbcca - moved ValidateInvFirst to the script side because this was one of the major functions that directly reference AInventory. 2019-04-16 18:45:52 +02:00
Christoph Oelckers
d021d63d33 - moved AInventory::DoRespawn fully to the script side. 2019-04-16 18:45:49 +02:00
Christoph Oelckers
9981674a27 - re-fixed the massacre fix for Dehacked-modified inventory items.
Instead of overriding the Massacre method it is preferable to clear the flags causing the bad behavior, most notably ISMONSTER.

# Conflicts:
#	src/g_inventory/a_pickups.cpp
#	src/g_inventory/a_pickups.h
2019-04-16 18:45:43 +02:00
Christoph Oelckers
be8d1c950d - scriptified GiveAmmo and the one remaining piece of native code still using it. 2019-04-16 18:45:41 +02:00
Christoph Oelckers
f1bf1cc44e - scriptified DropInventory. 2019-04-16 18:45:38 +02:00
Christoph Oelckers
a614f2a81e - scriptified UseInventory and several functions using the already scriptified ones,
# Conflicts:
#	src/g_statusbar/sbar.h
2019-04-16 18:45:36 +02:00
Christoph Oelckers
e7c798f58f - scriptified TakeInventory, including the ACS/FS interfaces. 2019-04-16 18:45:03 +02:00
Christoph Oelckers
d2741813ab - scriptified RemoveInventory and Inventory.OnDestroy. 2019-04-16 18:44:59 +02:00
Christoph Oelckers
8609e2ba68 - scriptified GiveInventory and made the interface a bit more configurable by mods.
Now a child type can decide for itself how to treat 'amount'.
The scripting interfaces to this function in ACS and FraggleScript have been consolidated and also scriptified.
2019-04-16 18:44:56 +02:00
Christoph Oelckers
2a192cde92 - scriptified AddInventory. 2019-04-16 18:44:53 +02:00
drfrag
e3ce680ec9 - Removed duplicate definition of DTA_Internal3. 2019-04-16 18:40:25 +02:00
Christoph Oelckers
4049b56d50 - a bit of code reordering for adding direct native entry points.
- offloaded key list generation for alternative HUD to non-UI parts.

This change also revealed a problem with handling empty sprites in the key list so this got fixed, too.

# Conflicts:
#	src/g_shared/shared_hud.cpp
2019-04-16 18:17:05 +02:00
Christoph Oelckers
4080bfd3cf - seems there are two versions of Hacx's MAP05.
# Conflicts:
#	wadsrc/static/zscript/base.txt
#	wadsrc/static/zscript/level_compatibility.txt
2019-04-16 17:47:42 +02:00
Christoph Oelckers
1a8b18d539 - fixed declaration of ChangeStatNum. 2019-04-16 17:10:37 +02:00
Christoph Oelckers
886df37d1a ChangeStatNum must not be virtual
Overriding this would make the engine vulnerable to  badly behaving mods. Intercepting this and altering the behavior can render the entire game inoperable, especially if more internal code gets scriptified later. So even at the risk of breaking some carelsss mods this must be blocked.
2019-04-16 15:26:16 +02:00
Christoph Oelckers
09f4c7e4a9 Made all virtual base functions for the event handler scripted
This was by far the largest block of native virtuals, and they were only native to be able to allow checking if the event was implemented for the current handler. This can easily be done by looking at the byte code, just like VMCall also does but in turn it removes more than half of the existing native virtuals from the interface.
2019-04-16 15:26:14 +02:00
Christoph Oelckers
4ac866aedc - added a few more direct native entry points. 2019-04-16 15:12:41 +02:00
Christoph Oelckers
00fed23e5f - explicitly declare the constructor and destructor methods of FCheckPosition so that they get a working prototype. 2019-04-16 15:12:33 +02:00
Christoph Oelckers
29eee14549 - declare builtins as static. 2019-04-16 14:58:18 +02:00
Christoph Oelckers
c01981d08a - define the built-in functions defined in codegen.cpp through the regular interface instead uf just hacking them into the symbol table with incompletely set up data.
- added direct native variants to these builtins and fixed problems with builtin processing.
2019-04-15 22:30:01 +02:00
Christoph Oelckers
20ec6ddce4 - removed AStateProvider from native code.
The only place still referencing it was CallStateChain, so this has been made a static function now instead of a class method.
2019-04-15 22:29:58 +02:00
Christoph Oelckers
376c47bef6 - fixed handling of dummy flags. 2019-04-15 22:29:55 +02:00
Christoph Oelckers
96e9dbd967 - removed all remaining native components of the weapon class. 2019-04-15 22:29:52 +02:00
Christoph Oelckers
d871072f28 - allow defining flags in the script declaration of a class and do that for Weapon. 2019-04-15 22:29:47 +02:00
Christoph Oelckers
309cc57504 - removed all direct access to AWeapon's members to prepare moving this class fully to the script side.
Disregarding UI-side and setup-related calls there's unfortunately still 6 places in the native game code which require direct access.
2019-04-15 22:29:43 +02:00
Christoph Oelckers
ce5792242c - moved the 'Finalize' methods back into a single function in the parser code.
It has been like this initially but was changed when ZDoom gained an overly complicated polymorphic class descriptor object that required a lot of support code. All these complications have long been removed but these methods remained. Since they prevent a class from being moved to the script side entirely they had to be removed.

This was the last major blocker to make Weapon a purely scripted class, the only remaining native method is Serialize which is of no concern for the coming work.
2019-04-15 22:29:39 +02:00
Christoph Oelckers
7caa6a922d - moved MarkPrecacheSounds completely to the script side and added native support to make this a usable feature.
# Conflicts:
#	src/g_inventory/a_pickups.cpp
2019-04-15 22:29:35 +02:00
Christoph Oelckers
ac754b5e96 - some cleanup on the weapon slot interface.
This really shouldn't make any decisions from directly reading weapon class defaults.
2019-04-15 22:29:32 +02:00
Christoph Oelckers
f9dfdace16 - scriptified cht_Takeweaps. 2019-04-15 22:29:30 +02:00
Christoph Oelckers
94b0338c31 - scriptified ApplyKickback. 2019-04-15 22:29:26 +02:00
Christoph Oelckers
59bffe2f55 - scriptified A_WeaponReady and its subfunctions. 2019-04-15 22:29:22 +02:00
Christoph Oelckers
951ed466b3 - scriptified P_BobWeapon as a virtual function on PlayerPawn. 2019-04-15 22:29:19 +02:00
Christoph Oelckers
0515af2bd3 - removed the bot related properties from AWeapon.
This stuff is now kept locally in the bot code so that it doesn't infest the rest of the engine.
And please don't read the new botsupp.txt file as some new means to configure bots! This was merely done to get this data out of the way.
The bots are still broken beyond repair and virtually unusable, even if proper data is provided for all weapons.
2019-04-15 22:29:15 +02:00
Christoph Oelckers
681009e1ea - exported the blood spawning part of P_LineAttack as a virtual ZScript function. 2019-04-15 21:59:08 +02:00
Christoph Oelckers
82ffdd5e6b - moved the weapon selection logic to PlayerPawn as overridable virtual functions. 2019-04-15 21:59:07 +02:00
Christoph Oelckers
27c67716df - change teleport freeze handling to a player property plus virtual override on PlayerPawn for increased configurability.
# Conflicts:
#	src/g_inventory/a_pickups.cpp
2019-04-15 21:59:03 +02:00
Christoph Oelckers
7c1416cb6f - scriptified BecomeItem and BecomePickup
# Conflicts:
#	src/g_inventory/a_pickups.cpp
2019-04-15 21:59:01 +02:00
Christoph Oelckers
08059f718b - scriptified FilterCoopRespawnInventory. 2019-04-15 21:59:00 +02:00
Christoph Oelckers
1ecada388c - scriptified some simple sound functions. 2019-04-15 21:58:58 +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
0eec8b293a - scriptified ModifyDropAmount as a virtual function hierarchy for Inventory and children. 2019-04-15 21:58:54 +02:00
Christoph Oelckers
f1c7815b16 - scriptified A_Explode and relatives. 2019-04-15 21:58:52 +02:00
Christoph Oelckers
e234d450aa - scriptified GetDefaultInventory. 2019-04-15 21:58:50 +02:00
Christoph Oelckers
864796a6a2 - removed MeleeWeapon flag from the tomed PhoenixRod and the fighterhammer.
In both cases, having this flag on will render the monster-backing-off-check for melee attacks ineffective because it would misinterpret these weapons as close range only - which they aren't. Even for the PhoenixRod the range is longer than what gets checked here.
As a consequence, the bot's check for missile shooting melee weapons has also become pointless because no such weapon is defined anymore.
2019-04-15 21:58:48 +02:00