Commit Graph
176 Commits
Author SHA1 Message Date
Goober5000 554bbb884d remove angles from the submodel instance 2021-01-13 14:01:34 -05:00
Goober5000 020f14fb51 allow rotating submodels to rotate around an arbitrary axis 2021-01-13 14:01:28 -05:00
JohnAFernandez 04f668651b Make sure that scripting changes the starting ammo as well as the weapon 2021-01-01 22:22:56 -05:00
Goober5000 3a5e49b0c3 Merge pull request #3021 from Goober5000/turret_refactor
some refactor and cleanup
2020-12-27 09:33:49 -05:00
Goober5000 21f6591be2 some refactor and cleanup
1) modify and prune some turret function definitions
2) clean up KeldorKatarn's submodel orientation parsing
2020-12-24 22:50:49 -05:00
asarium 4af292af5a Add scripting API to access briefing color tags 2020-12-24 12:54:09 +01:00
SelfGamer a47cfb7e7c Expose disposing FBO's to scripting (#3003)
* Expose disposing FBO's (with the option to keep the Bitmap Alive) to scripting

* Modernize nullptr

* Moved RenderTarget clearing to own public API

* Fixed Obsolete Comment

* Fix bad deletion of FBOs

* Resolve Memory Leak

* Change FBO cleanup to not reuse old ID's

* FIx oversight

* FIx oversight 2
2020-12-23 21:54:03 +01:00
Goober5000 0c5b04c427 additional null checks
Found a null pointer CTD in modelanim that slipped through initial testing.  Also added some defense-in-depth null checks to scripting.
2020-12-22 04:22:10 -05:00
Goober5000 88c1d8a02a consolidate model instance code 2020-12-18 01:32:43 -05:00
Goober5000 7c92dd9f7c hoist model_get and model_get_instance out of a bunch of functions 2020-12-16 11:55:31 -05:00
Goober5000 41851bbd1e fix a bit of improper referencing in rotateTurret
The object `instance` field is the index into Ships, not Objects.  In any case, position and orientation can be referenced directly.
2020-12-16 02:23:18 -05:00
Birk Magnussen 1e5652ea07 Adapt change requests by Goober for Fireballclass 2020-12-07 07:04:09 +09:00
Birk Magnussen 67ebbddb09 Added Fireball lua API + added createWarpeffect 2020-12-05 07:23:14 +09:00
Fabian Woltermann 6f8763346c Expose the power output in the ship class to sexps and scripting 2020-11-26 16:36:19 +01:00
Baezon 4024ff197d separate rotational and lateral maneuvers 2020-11-23 00:30:19 -05:00
Baezon c90171d8a3 add no_override flag to maneuvers 2020-11-22 11:58:15 -05:00
asarium bb0631ab6e Support vararg specifiers in Lua documentation
This was the last thing that was missing for complete support of all
function parameter declarations.

To ensure parameter lists stay valid a unit test was added that will
validate the argument lists and cause the test to fail if they cannot be
parsed.
2020-10-12 17:59:57 +02:00
Goober5000 53ad0ea163 fix CTD when running ship:kill() with no parameters 2020-10-03 00:02:46 -04:00
Goober5000 df53e49abf make the scripted turret firing code a bit more robust
The scripted code previously didn't check to see if a weapon bank was valid before firing it, which could have led to memory problems and starting March 15 would actually crash the game.  This adds a few safety checks.
2020-09-23 21:24:41 -04:00
Goober5000 8a3556b648 Merge pull request #2738 from Goober5000/file_fixes
fix getPath() and add getName()
2020-09-15 11:55:07 -04:00
Goober5000 d1af5ed467 shut up clang, this wasn't even part of the PR 2020-09-15 04:12:29 -04:00
m!m 2a90d1f823 Merge pull request #2717 from asarium/lua/serializer
Add Lua API for serializing values
2020-09-14 22:25:26 +02:00
Goober5000 12fad41962 fix getPath() and add getName()
The getPath() function would crash if the id was -1.  Also, there was no function for getting the file name.
2020-09-13 17:02:56 -04:00
Goober5000 8b3b15b4b2 add tb.ShipTypes
Add ShipTypes as a collection to complement ShipClasses.

Also check the correct init variable.
2020-09-13 00:46:28 -04:00
asarium cf4fe8accc Add Lua API for serializing values
This can be used by script code for reliably storing Lua values without
having to build a custom serialization format.

The C++ code can also be used by other code modules that want to
serialize data. The new classes simply return a byte array with an
unspecified format.

At the moment this uses a plain JSON encoding but could be extended in
the future to include either compression or BSON encoding if necessary.
The format is future compatible by using a simple header to identify
different kinds of formats.
2020-09-12 14:28:16 +02:00
Goober5000 f6ca9cddfa support zero-length display names
Previously the code assumed that an empty display name was the same as no display name.  This adds a flag so that empty names are allowed.
2020-09-07 14:38:16 -04:00
Goober5000 67ea05fefd add some vector scripting functions
createRandomVector
perturb (for vectors)
perturb (for matrixes)
randomInCircle
randomInSphere
2020-08-30 09:36:24 -04:00
Goober5000 2fee91cd4c Merge pull request #2674 from Goober5000/display_name
refactor display_name for ships, ship classes, and weapon classes
2020-08-30 09:21:32 -04:00
Goober5000 6f774ccab1 various collision group fixes
Collision groups as previously coded were unusable due to Lua 5.1's lack of support for bitwise operators.  This fixes that deficiency in two ways:
1) Objects now have the functions `addToCollisionGroup` and `removeFromCollisionGroup`
2) An `evaluateNumericSEXP` function has been added for returning SEXP results as numbers (so that the bitwise SEXP operators can be used)
2020-08-29 13:49:36 -04:00
Goober5000 3d734948da Merge branch 'master' into display_name 2020-08-29 13:47:21 -04:00
Goober5000andm!m 05044290df Update code/scripting/api/objs/ship.cpp
Co-authored-by: m!m <[email protected]>
2020-08-29 13:45:30 -04:00
Goober5000 d8012d4ff0 miscellaneous scripting and ship-destruction enhancements 2020-08-23 20:44:25 -04:00
Goober5000 3b2af702f7 refactor display_name for ships, ship classes, and weapon classes
Several things going on here:
1) refactor `get_display_string()` to `get_display_name()` to be more precise
2) likewise, refactor `alt_name` to `display_name`
3) automatically generate display names when parsing the ship, ship class, and weapon class for the first time
4) remove the on-the-fly truncation of names with hash symbols

Basically this subsumes the `end_string_at_first_hash_symbol` logic into the display name.  Rather than truncate the name every time it's displayed, truncate it once when it's parsed.  This takes advantage of the previous display name infrastructure, since display names are a superset of the case of truncating the hash symbol.

This also has the benefit of now allowing hash symbols within display names.  When updating Destiny of Peace, I noticed that "Lockheed Shuttle #4" would no longer display properly; and it was not previously possible to fix this even with display names.

I could pull out the `get_display_string()` and `alt_name` renaming into a separate PR if desired.
2020-08-21 00:15:38 -04:00
Goober5000 b6998a3e21 make Intel stuff dynamic
1) Make Intel_info a vector instead of a fixed-size array
2) Make intel descriptions SCP_string so they can be any length
2020-08-18 14:53:01 -04:00
Goober5000 e01c799cc1 Merge pull request #2649 from Goober5000/debris_enhancements
Debris enhancements
2020-08-13 14:21:16 -04:00
Goober5000 2dec0af410 add code to tell if debris is one of those tiny models
make Debris dynamic, and use a soft limit at 64 pieces (the old MAX)
add per-class specification of death roll sounds
2020-08-12 23:51:39 -04:00
asarium 8d8f304514 Add more scripting APIs for the command briefing
This covers the various APIs needed for getting the last parts of the
new command briefing UI to work.
2020-08-12 09:43:09 +02:00
asarium 8fcb05bfd0 Add scripting API for custom execution context
This allows a script to create its own execution context so that it can
control when a coroutine is valid to play based on custom data.

Also adds a function which causes a coroutine to end in an error.
2020-08-11 09:38:39 +02:00
Goober5000 83d9d352ff Merge pull request #2604 from Baezon/consistent-apply-whack-args
Supply world coordinates in whack function calls
2020-08-09 15:32:41 -04:00
asarium 1001bfb760 Add generic audio stream API
The previous API only allowed very limited access to the audio stream
system. These changes add full support for playing all types of audio
streams via a dedicated API.
2020-08-08 19:36:39 +02:00
Goober5000 d841d2a91b Merge pull request #2603 from Goober5000/on_debris_created
more complete scripting support for debris
2020-07-30 21:42:05 -04:00
Baezon 20acea31f2 review changes 2020-07-30 15:06:36 -04:00
Goober5000 2dddbaa6ae add some more useful functions 2020-07-29 21:26:16 -04:00
Goober5000 9b7549213d might as well add these too 2020-07-27 13:38:44 -04:00
Baezon f95f48448e world coords for all whacks 2020-07-27 01:11:00 -04:00
Goober5000 83d2ac8818 more complete scripting support for debris
Adds a hook for debris creation, and adds DoNotExpire and LifeLeft virtual variables for controlling debris removal.
2020-07-26 22:02:51 -04:00
Goober5000 8bc57c3cd2 add several more scripting functions
Add ba.rand32() and ba.rand32f(), and gr.clear(); enhance streaminganim:process(); fix streaminganim:timeLeft().
2020-07-25 23:21:40 -04:00
Goober5000 6e40248490 add vector interpolation, sexp variable name, and joystick axis inversion
add several more vecmat functions to scripting
2020-07-23 14:43:02 -04:00
Goober5000 cd2a0437e0 Merge pull request #2573 from Goober5000/tech_db_scripting_vars
cleanup of tech room, and scripting stuff
2020-07-21 22:38:58 -04:00
Goober5000 31fa2ac444 cleanup of tech room, and scripting stuff
1) Upgrade the pilot file code to correctly save flags whether entries are added *or* removed
2) Make the tech-db/tech-db-multi ship flag handling consistent
3) Add scripting support for intel entries
4) Add scripting support for adding and removing entries from the tech room
5) Minor cleanup
2020-07-15 13:27:27 -04:00