Commit graph

327 commits

Author SHA1 Message Date
Christoph Oelckers
213bdbadad - allocate VMFunction's PrintableName from the ClassDataAllocator arena.
This avoids execution order issues on shutdown. VMFunction should not use FString.
2023-05-27 22:40:47 +02:00
Christoph Oelckers
b993f05c8f - fixed missing handling for BADGUYSTAYPUT flag. 2023-05-19 23:00:27 +02:00
Christoph Oelckers
513de38723 - pass the spawner to Initialize as an explicit parameter.
Using ownerActor is not robust, for some actors this will have unwanted side effects.
2023-05-19 22:57:26 +02:00
Christoph Oelckers
94a80dda11 - initialize the angle of script spawned actors. 2023-05-19 22:52:00 +02:00
Christoph Oelckers
29322777dd - adapt the animation init code for CON replaced actors and consolidated the two cases. 2023-04-30 08:46:51 +02:00
Christoph Oelckers
8a331e226f - handle cases where CON tries to spawn unknown actors.
It must fall back to spawning an inert sprite in these cases, not just fail.
2023-04-29 07:06:53 +02:00
Christoph Oelckers
1bace1d508 - use texture IDs in the spawn records. 2023-04-23 17:33:50 +02:00
Christoph Oelckers
4692cc55f7 - cleaned up checkhitdefault
Only required 4 new flags plus one property...
2023-04-23 17:33:36 +02:00
Christoph Oelckers
91ee3cb7b8 - got rid of the picnum CreateActor variant. 2023-04-23 10:45:43 +02:00
Christoph Oelckers
a6600c200f - a lot of simple picnum or TILE_* replacements. 2023-04-23 10:45:43 +02:00
Christoph Oelckers
35a088ba04 - added map flags to enable RR's special sector types in Duke as well. 2023-04-23 09:42:29 +02:00
Christoph Oelckers
65e66a573d - Duke: look up all internally used actor classes at game startup.
This allows early validation of the names but is also more efficient.
2023-04-22 12:08:46 +02:00
Christoph Oelckers
e15517cf57 - fixed some issues with projectile ownership.
Some init code was run here that should not be run. Added a new flag to handle this case without major code explosion.
2023-04-16 07:54:26 +02:00
Christoph Oelckers
17cde1e3ca - Duke: fixed bad init of hitag in initspriteforspawn 2023-04-15 19:53:04 +02:00
Christoph Oelckers
60af1b4c62 - renamed temp_data[0] to 'counter' and map temp_data[5] to the now free temp_data[0].
This not only matches its use in CON but seems to be used as a counter in most other places as well.
The main reason is to improve readability of CON to ZScript conversions.
2023-04-12 21:54:33 +02:00
Christoph Oelckers
8bd88b8678 - migrate all script related info to the data stored in the actor classes.
This also needs cactor to really change the class descriptor now so that the correct script code is found.
2023-04-12 21:54:20 +02:00
Christoph Oelckers
ebf7b4a121 - copy the CON defined info into the actual actors.
Only using the strength value right now.
2023-04-12 20:29:37 +02:00
Christoph Oelckers
f0637cfc83 - moved actioncounter and curframe to a dedicated variable.
The third generic counter is not as easy to fix as its use is far more widespread
2023-04-12 20:07:12 +02:00
Christoph Oelckers
4b096f4f3e - nulling contents of a freshly spawned actor is not necessary.
All objects are zero inited.
2023-04-12 20:07:11 +02:00
Christoph Oelckers
b9702fbb66 - moved 'move' data out of the ScriptCode array as well. 2023-04-12 20:07:11 +02:00
Christoph Oelckers
30ccbe2710 - moved actions out of the ScriptCode array and gave them a dedicated struct with meaningful member names. 2023-04-12 20:07:11 +02:00
Christoph Oelckers
0c17a369db - Duke: changed skill filter to be solely controlled by the spawnclasses definitions.
All classes with no skill filter now need an explicit noskill declaration.
The only exception is inert sprites using DukeActor directly, these will never get filtered by skill.
2023-04-12 20:06:25 +02:00
Christoph Oelckers
660227e175 - Duke: restrict skill filter to those actors which originally handled it.
For flexibility there now is a flag that can be set on any actor class, but due to precedent it needs to be off by default.
2023-04-11 20:14:02 +02:00
Christoph Oelckers
ee61daed97 - reinstate code from e2db4a8 that got removed by a badly resolved merge conflict in ae4ef64 . 2023-04-10 16:48:08 +02:00
Christoph Oelckers
2f61a44329 - Duke: do not clear the KILLCOUNT flag.
This seems to have gotten back by accident.
2023-04-10 16:41:58 +02:00
Christoph Oelckers
7b1ef9e020 - Duke: Do not set SFLAG_BADGUY for internal bad guys.
This will pass an incorrect value for clipdist to clipmove.
2023-04-10 08:56:37 +02:00
Christoph Oelckers
918c75cb6e - validate statnum before spawning an actor. 2023-04-09 09:46:09 +02:00
Christoph Oelckers
da0b429751 - migrated attackertype to class objects. 2023-04-09 09:46:09 +02:00
Christoph Oelckers
ae4ef6401c - use the actual actor flags.
Not fully working yet...
2023-04-09 09:45:42 +02:00
Christoph Oelckers
50d406be4e - Duke: Do not call Initialize() for player actors.
The base function is doing things not meant for players, and we do not have a proper class yet that can deal with it.
2023-04-09 08:15:23 +02:00
Christoph Oelckers
e2db4a834e - Duke: apply default scale only to enemies defined in CON.
This code does not apply to the Recon!
2023-04-08 09:37:51 +02:00
Christoph Oelckers
2ba204444c - merged the spawn init code now that all differences are externalized 2023-04-07 13:15:06 +02:00
Christoph Oelckers
7a699e032f - cleaned up Duke's very broken kill count system.
This now uses a static flag to denote an actor as countable and an internal flag to track its killed state, because CON can toggle that at will.
2023-04-07 09:49:20 +02:00
Christoph Oelckers
0706a8a5bb - exported LizTrooper and Lizman. 2023-04-02 17:37:30 +02:00
Christoph Oelckers
bc50f596e8 - exported two more classes used by PicForName. 2023-04-02 13:10:34 +02:00
Christoph Oelckers
e0bd038391 - scriptified the native parts of TRANSPORTERSTAR and TRANSPORTERBEAM 2023-04-02 13:00:13 +02:00
Christoph Oelckers
4328016963 - move the remaining parts of spawninitdefault to DukeActor::Initialize.
This ensures proper execution of all code - spawninitdefault was designed to be the fallback for actors without a special case in spawninit.
2023-01-28 16:33:35 +01:00
Christoph Oelckers
38b278b12d - fixed enemy setup.
All enemies now run a native init function to reduce script-induced problems.

this required adding a NOGRAVITY flag so that the recon can use the same code as well which was the only enemy relying on custom code.
2023-01-28 16:33:15 +01:00
Christoph Oelckers
2386ea9930 - implemented the 3 special switches
That's the developer commentary icon in World Tour, the deactivation switch for the chicken processing plant in RR and one shootable alarm bell in RRRA.
2022-12-29 13:32:30 +01:00
Christoph Oelckers
0d9fe83cba - implemented the switch parser and set up the external definitions. 2022-12-29 13:32:29 +01:00
Christoph Oelckers
8dfbbc8220 - migrated floorpicnum and ceilingpicnum to FTextures.
The sky code still needs some work.
2022-12-18 14:32:52 +01:00
Christoph Oelckers
5b8dd84361 - use setceilingtexture where textures are simply copied around 2022-12-18 13:52:10 +01:00
Christoph Oelckers
4f388c3589 - fixed bad direction setup for vertically moving SE 0.
This also adds missing interpolation for this case.
2022-12-13 13:46:55 +01:00
Christoph Oelckers
a63ee8079a - implemented customizable breakable walls and ported all hard coded variants to use this. 2022-12-11 19:43:57 +01:00
Christoph Oelckers
9e3318a2fb - moved spawnclasses and breakwall definitions from .def to RMAPINFO.
.def is not the right place for this - it needs to run very early in the process, before scripted actors are loaded, so doing this stuff there means that half the initialization has to be postponed and error reporting is sub-par.
These are now part of RMAPINFO which gets parsed as one of the very last things - it is also where GZDoom is doing some of these things.

The better error reporting also allowed fixing some errors in these definitions.
2022-12-11 19:43:57 +01:00
Christoph Oelckers
23640988db - define several of RR's fullbright decorative sprites via spawnclasses remapping. 2022-12-11 19:43:53 +01:00
Christoph Oelckers
bdc474d04f - scriptified all remaining Duke actors with specific init code and no CON part. 2022-12-11 19:43:53 +01:00
Christoph Oelckers
9ad8f67ce9 - added isEffector inline and exported NATURALLIGHTNING which got a bit in the way. 2022-12-11 19:43:52 +01:00
Christoph Oelckers
be6ead173a - scriptified several smaller actors 2022-12-11 19:43:51 +01:00
Christoph Oelckers
0bc9023e17 - scriptified the pipe bomb and RR's dynamite, which is mostly the same thing.
The mortars were split off because they made the code too convoluted.
2022-12-11 19:43:51 +01:00