Commit graph

98 commits

Author SHA1 Message Date
jekyllgrim
d0288264a2
Add Actor.CanReceive (#2295)
Adds CanReceive() to Actor, called by items from CallTryPickup(). This will let actors themselves determine if they can receive the item before any other checks.

Co-authored-by: Rachael Alexanderson <18584402+madame-rachelle@users.noreply.github.com>
2024-01-04 07:24:32 -05:00
Boondorl
fc6191deb9 Added CollidedWith
Guarantees a collision happened unlike CanCollideWith. Called in TryMove so it only calls when an actual movement was attempted and not just a potential positional check.
2024-01-04 07:17:13 -05:00
jekyllgrim
df5dc5ebd8 Moved the enum to doombase.zs 2023-12-17 13:20:08 +01:00
jekyllgrim
fc809cfab6 Virtualized returns for SpecialMissileHit/SpecialBounceHit 2023-12-17 13:20:08 +01:00
Ricardo Luís Vaz Silva
5d5e7ca042 Decoupled IQM Model Animations 2023-11-20 22:08:33 -05:00
Christoph Oelckers
f0c9b1765e gave translations a dedicated scripted type.
This is needed for implementing reliable serialization of custom translations. As long as they are merely ints they cannot be restored on loading a savegame because the serialization code does not know that these variables are special.
2023-11-09 23:04:10 +01:00
Rachael Alexanderson
29368f0f4e - make zs Actor.GetReplacement and Actor.GetReplacee clearscope 2023-10-05 12:29:20 -04:00
Christoph Oelckers
0980b53881 - fixed: MBF21's BOSS flag implies NORADIUSDMG. 2023-09-13 20:48:57 +02:00
Boondorl
5a74e79b92 Added bounce virtual 2023-08-02 00:42:06 -04:00
Boondorl
fe1acc7f40 Localized fix to its own field 2023-08-02 00:41:39 -04:00
Boondorl
239a288a9a Exported reflection functionality
Localized reflection code to a single function. Fixed an error where NOSHIELDREFLECT was being checked on the wrong Actor. Fixed an oversight where MIRRORREFLECT was checking for valid target despite not needing one.
2023-08-02 00:40:01 -04:00
inkoalawetrust
150e893c67 Added ShadowAimFactor and ShadowPenaltyFactor.
These properties allow to specify how much an actors' aim is degraded when shooting at a shadow actor. And how much the shadow actor itself affects the shooters' aim, respectively.
2023-08-02 00:39:35 -04:00
inkoalawetrust
a7f76fe8b9 Added damage property to earthquakes.
When this property is set to any value above 0. The earthquake does the exact amount of damage specified, instead of a random amount.
2023-08-02 00:38:24 -04:00
inkoalawetrust
a38b151940 Added damage and thrust multipliers to quakes.
These properties allow for scaling the amount of damage an earthquake does and how much it pushes actors around.
2023-08-02 00:38:24 -04:00
inkoalawetrust
194f73a94b Added (XF/RADF)_CIRCULAR.
This flag makes explosions use a spherical radius, instead of a cubic one. Only took almost 30 years.
2023-08-02 00:37:58 -04:00
Major Cooke
aed72f58f3 Converted A_Quake(Ex) intensity parameters from ints to doubles. 2023-01-14 11:30:00 -05:00
Boondorl
3dce874621 Exported bounce functions 2023-01-12 17:44:28 +01:00
Boondorl
0d4d5587b5 Added FOV Interpolation 2022-12-18 08:23:19 +01:00
Boondorl
b1cb044a15 Fixed IsActorPlayingSound's default argument
Now properly passes the invalid sound id.
2022-12-06 12:16:29 +01:00
Boondorl
ef456a4901 Added PitchTo Function 2022-11-18 07:41:04 +01:00
UnizoneDev
a21d0c70e4 Mark the PushSound property as meta 2022-11-13 07:38:07 +01:00
UnizoneDev
9af664d117 Add PushSound property and Slide state
First Commit, hip hip hooray!
2022-11-13 07:38:07 +01:00
Christoph Oelckers
72aa6fe3b8 - did some cleanup on p_mobj.cpp
* deleting some unused code
* turned several class methods into static local functions in cases where they never were used outside this file.
* inlined the dangerous assignment operator in the only place where it was used.
2022-11-05 12:00:43 +01:00
Christoph Oelckers
435e7dddcd - fixed: P_SpawnMapThing may not call playsim code.
There was one special case allowing to let an actor die on spawn, but this could call script code on an incompletely set up map which resulted in crashes.
2022-11-05 09:43:06 +01:00
Ricardo Luís Vaz Silva
7d81417829 Particle Rolling 2022-11-01 22:30:16 +01:00
Ricardo Luís Vaz Silva
b6202ffc4c Add Textured Particles 2022-11-01 21:25:31 +01:00
Shiny Metagross
f7c3615d3b IQM Refactor Milestone
- Removed bone manipulation code
- Implemented an index in calculateBones to optimize multi-armature actors
- Moved the bone storage object's creation to RenderModels so that the armature array can be sized there
2022-10-31 11:34:55 +01:00
Shiny Metagross
28444d4cfd Bone manipulation start
- Bone manipulation is largely finished, but I need to figure out how to multiply quaternions
2022-10-31 11:34:55 +01:00
Shiny Metagross
5670e6f54c Some of the to-dos
- Implemented Animation parameters for A_ChangeModel
- Made a modeldef flag to treat additional model indices as just attachments, meaning they will use armature data from index 0
- Fixed an issue with A_ChangeModel where generated indices lower than smf frame amounts could not actually generate anything
2022-10-19 22:48:57 +02:00
Rachael Alexanderson
ca6a2152b9 - add freezetics actor property 2022-09-03 17:58:16 -04:00
Shiny Metagross
9ab6557822 A_ChangeModel now has generatorIndex
- To really take advantage of this function, I thought it would be useful to be able to add additional models if the user wants to. Let's say you got a player model at index 0. Your gun model has the same frames, but you don't want to duplicate the modeldef data. With generator index, you don't need to duplicate the data, just tell generator index to clone frame data from index 0.
- Implemented a little something to check if a negative skin or model index were passed, and prevent modders from pulling that off.
2022-07-22 17:11:59 +02:00
Shiny Metagross
69ee1eb0a2 Surfaceskin modification
- Made it so when rendering a model, it clones an smf to use so that data isn't overwritten
- Reimplemented the skin index property. This changes the behavior of this index if CMDL_USESURFACESKIN is activated
2022-07-22 17:11:59 +02:00
Shiny Metagross
e827e9b086 TArrays to TObjPtr
- Made the 2 TArrays into a class called DActorModelData.
- Removed the skinindex and now just uses one index
- Replaced a bunch of nullptr for modelDef checking with NAME_None
- Added some garbage cleanup to A_ChangeModel itself, as well as removing memory of modelData that is no longer needed
- Attempted serialize code, putting up for review
2022-07-22 17:11:59 +02:00
Shiny Metagross
5abadd3aab A_ChangeModeldef
-Added A_ChangeModelDef
A_ChangeModel(modeldef, modelpath, model, modelindex, skinpath, skin, skinid, flags)

This can change the modeldef, model and skins of an actor.

Currently, modelindex and skinindex accept indices from 0-15.

An actor MUST have a modeldef in order to use this function, either defined from modeldef, or given one through the modeldef parameter. You can pass "" to use the same modeldef. Likewise, passing "" for model or skin will just revert to the default model.

Available flags:
CMDL_WEAPONTOPLAYER - If used on a weapon, this instead change's the model on the player instead.

One issue I am aware of right now is that clearing a model by "" sort of works but is buggy. For now you can just manually set the model back using the names explicitly. However, I am stumped and I think getting more eyes on it would help.
2022-07-22 17:11:59 +02:00
Christoph Oelckers
a847dacaaa - fix scale members in actor.zs 2022-07-12 16:56:56 +02:00
RaveYard
f9bf6f9311 Implement FVector ZScript for Actor Scale 2022-06-12 17:57:44 +02:00
Major Cooke
d5e448671d Added LightLevel.
- Setting it to any value > -1 will override the sector's light level.
2022-05-31 21:00:31 +02:00
nashmuhandes
f235dcc38e Squashed commit of the following:
commit 553c4c12abd15e5f8fa02496ccfde81bdfdb53b0
Merge: cb03de5d2 add4ff12a
Author: nashmuhandes <nashbackslash@gmail.com>
Date:   Mon Feb 14 18:55:52 2022 +0800

    Merge branch 'master' of https://github.com/coelckers/gzdoom into ActorFallAndSink

commit cb03de5d2fdcba8a32b83be32579be935c8b6600
Author: nashmuhandes <nashbackslash@gmail.com>
Date:   Tue Jan 25 12:54:33 2022 +0800

    Re-add WaterDepth to the custom namedef file

commit 8d1ff3c16018dd7c73c8950aa4c51f2bc0207837
Merge: f201e6307 a9eaae074
Author: nashmuhandes <nashbackslash@gmail.com>
Date:   Tue Jan 25 12:52:57 2022 +0800

    Merge branch 'master' of https://github.com/coelckers/gzdoom into ActorFallAndSink

    # Conflicts:
    #	src/common/engine/namedef.h

commit f201e630706fc0ea7628b8a32bd5d88afb712208
Author: nashmuhandes <nashbackslash@gmail.com>
Date:   Sun Jan 16 20:45:27 2022 +0800

    Fix compile error (MAX() -> max())

commit fe292ebd4312afe34b1e35e4c1eafba0dc168920
Merge: 3f9150c4e 12ed24d06
Author: nashmuhandes <nashbackslash@gmail.com>
Date:   Sun Jan 16 20:37:58 2022 +0800

    Merge branch 'master' of https://github.com/coelckers/gzdoom into ActorFallAndSink

    # Conflicts:
    #	src/playsim/p_mobj.cpp

commit 3f9150c4eae1c5c5510e8f9b1c4bfaab46a96b8f
Author: nashmuhandes <nashbackslash@gmail.com>
Date:   Sat May 29 05:32:54 2021 +0800

    - Implement virtual Actor.FallAndSink for scriptable falling and water physics
    - Added Actor.WaterDepth to retrieve how submerged and actor is, in map units

    Original work credited to "gzdoomthrowaway"
2022-05-31 18:57:38 +02:00
Major Cooke
748156c846 Optimized CanCrossLine.
- Remove P_PointOnLineSide check
- Made CanCrossLine opt-in by requiring the CROSSLINECHECK flag.
2022-05-31 10:46:06 +02:00
Major Cooke
5afd14fd4d Added a vector to CanCrossLine to indicate the next position the actor will be in if the move succeeds. 2022-05-31 10:46:06 +02:00
Major Cooke
b5b2dd0903 Added CanCrossLine virtual for actors.
- Called last after all other line checks occur. Returning false means the actor cannot cross that line.
2022-05-31 10:46:06 +02:00
Sally Coolatta
a98c1efc26 Add WorldOffset field
Adjusts the thing's 3D position on render side. This allows for adjusting a thing's visual position without impacting their hitbox.

# Conflicts:
#	src/playsim/p_mobj.cpp
2022-05-31 10:14:32 +02:00
Christoph Oelckers
c855ed90ea - made friendlyseeblocks writable.
There’s really no need for this to be read-only.
2022-04-29 00:33:42 +02:00
Rachael Alexanderson
36629d2f80 - revert the previous two commits for now - needs further optimization and testing 2022-02-23 06:00:14 -05:00
Major Cooke
992141d8e3 Added a vector to CanCrossLine to indicate the next position the actor will be in if the move succeeds. 2022-02-23 05:20:09 -05:00
Major Cooke
bb862098ea Added CanCrossLine virtual for actors.
- Called last after all other line checks occur. Returning false means the actor cannot cross that line.
2022-02-23 05:20:09 -05:00
Rachael Alexanderson
c926b7533f - play both land and grunt sound if not the same, even if grunted (emulates pre-virtual behavior) 2022-02-17 01:36:38 -05:00
Rachael Alexanderson
64ee08d80b - fix: player landing sound was not properly playing, error in morph logic check 2022-02-14 10:17:52 -05:00
Rachael Alexanderson
add4ff12ac - virtualize player landing on thing sound 2022-02-14 08:07:10 +01:00
Major Cooke
4e8d59951b Added A_SetViewPos(Vector3 Offset, int Flags = -1)
- Offset: The offset from the actor's view to move the camera about.
 - Flags: (Default is -1, which means don't change flags)
  - VPSF_ABSOLUTEOFFSET: Don't include actor angles in calculation.
  - VPSF_ABSOLUTEPOS: Position is absolute, and disables all transformations. Modders are responsible for being portal aware!

Notes:
- `ViewPos` in Actor will be `null` until A_SetViewPos is called for the first time.

**Issues:**
- Hiding sprite while in portal incomplete.
2022-01-24 12:00:33 -05:00