Commit Graph
296 Commits
Author SHA1 Message Date
Goober5000 41d2cdc82c Merge pull request #4569 from Goober5000/asteroid_debris_timestamps
convert some timestamps to the new system
2022-08-28 17:44:41 -04:00
MjnMixael be00e257b8 Scripting functions required for SCPUI conversion of Red Alert (#4587)
* Scripting functions required for SCPUI conversion of Red Alert

* Correct documenation

* Address feedback

* Missed return

* Briefings
2022-08-28 13:18:12 -04:00
wookieejedi 650ae9a074 Some extra safety checks for fiction viewer scripts (#4598)
Protects `Fiction_viewer_active_stage` if it reads a stage of -1 (it would have thrown a vector access error because the index is out of range). Also, given a lot of other scripting functions have additional built in error checks, I just added those to the fiction viewer functions.
2022-08-28 09:11:57 -04:00
MjnMixael 60509b2c3c Scripting functions required for SCPUI conversion of Loop Brief. (#4586)
* Scripting functions required for SCPUI conversion of Loop Brief.

* nullptr

* Fix documentation and make setting choice optional, defaulting to false.

* Documetation fix
2022-08-28 08:52:41 -04:00
MjnMixael a884633723 Fix documentation (#4594) 2022-08-26 23:03:54 -04:00
Goober5000 19e407df62 convert some timestamps to the new system
Mostly debris and asteroid timestamps, but also arc timestamps for ships.
2022-08-25 21:40:18 -04:00
MjnMixael 6d26547928 Scripting functions necessary for SCPUI Fiction Viewer (#4584)
Scripting functions necessary for SCPUI Fiction Viewer
2022-08-25 18:16:42 -04:00
wookieejedi 261dc508f8 Script function for turnTowardsOrientation (#4578)
A simple copy of the same function on `ai_helper`, now usable on plain ships too.
2022-08-23 22:23:30 -04:00
BMagnu 2557478d55 Allow changing Animation Instance speed (#4572)
* Allow changing animation speed

* Return nil from function

* address feedback
2022-08-22 03:14:34 +09:00
BMagnu 55eab4c7e7 Add turnTowardsOrientation (#4563) 2022-08-21 08:24:39 -04:00
Goober5000 38fbe6311e Merge pull request #4555 from MjnMixael/LuaPersonaAccess
Implement ability to get and set a ship's persona index
2022-08-21 00:54:50 -04:00
BMagnu 61197d4c12 Add SEXP to stop an animation after loop (#4566)
* Add Animation Instance Flags

* Add SEXP barebones

* Unify and simplify animation parsing

* Clean up animation calling and use new animationlist api

* Add missing break
2022-08-20 18:44:17 +09:00
MjnMixael 9b36fd1f6f Lua scan time (#4551)
* Add Lua access to a ship's Scan Time

* Disallow writing to the shipclass value

* Remove ship access in favor of shipclass access. Resolve read only issue.

* Cleanup and error if script attempts to set Scan Time

* Whoops. Still need to get the shipclass.
2022-08-19 07:57:56 -04:00
mjn-mixael 1d5c457c83 Fix issue 2022-08-19 00:28:59 -05:00
Mike N c0c7854c86 Address feedback 2022-08-18 16:01:32 -05:00
Mike N 103522b72a Implement ability to get and set a ship's persona index 2022-08-18 12:55:16 -05:00
Kiloku 843eda19dd Prevent subsystem fireWeapon scripting function from triggering an assert (#4537)
* Prevent an assert from being triggered down the line by giving a LuaError for invalid weapons

* Reword error message to match function documentation
2022-08-18 21:26:10 +09:00
Asteroth bfb77b2a00 add isPositionInFOV script function (#4540) 2022-08-18 21:25:40 +09:00
Asteroth 6e7fcdaac7 copy script function from ai helpers to plain ships (#4539) 2022-08-17 14:33:06 -04:00
Asteroth 96d6b8bc3f error if they try to change this (#4549) 2022-08-17 14:31:51 -04:00
Asteroth 8dc9081244 add script function for turret num fire points (#4538) 2022-08-16 12:09:30 -04:00
Goober5000 ed1bce988f only attenuate a persistent sound by engine strength if it's an engine sound (#4506)
Previously the persistent object sound management code would attenuate all script-assigned sounds by engine strength, and would not play them at all if the engine was off.  This fixes the code to only apply that logic if the sound is in fact and engine sound.
2022-08-09 10:32:58 -04:00
Goober5000 ab7a1d8fd7 some fixes for playing movies via script
The movie player code was missing some important functionality, in particular:
1) There was only one timing method to get real-time elapsed time, which was not suitable for pausing or time compression
2) There was an improper cast for the FPS property, causing a script error
3) The `getSeconds` method lost precision during casting

This patches those deficiencies.
2022-07-12 23:35:27 -04:00
Asteroth 0121e439aa tweak to getTurretHeading() docs (#4456) 2022-06-30 15:07:14 -04:00
Goober5000 53bc7861bf sync Orientation virtvars
The two `VIRTVAR`s for Orientation in subsystems and submodel instances do the same thing, but did not have the same code - in particular, the subsystem version did not update the subsystem angle and turret angle.  This syncs them up.
2022-06-23 10:08:34 -04:00
BMagnu a44adde0e5 Followup improvement for the LuaAI AI Control Helper (#4422)
* Followup improvement for the LuaAI AI Control Helper

* Update docs
2022-06-18 18:31:50 +09:00
Goober5000 1b563360ed Merge pull request #4401 from Goober5000/add_isActive_checks
add isActive checks for new-style script hooks
2022-06-16 19:42:36 -04:00
BMagnu 6b91a6210c Properly set rotation data from LuaAI (#4406)
* Properly set rotation data from LuaAI

* Update Variable Name
2022-06-14 23:46:03 +00:00
Goober5000 7013981de5 add isActive checks for new-style script hooks
What it says on the tin.  Follow-up to #3538.  Fixes #4398.
2022-06-13 02:13:14 -04:00
d38cc1f3db Controls6: Keyboard Localization and Scripted Contols (#4133)
Locale Sensitive Controls and Textfield Input
+ Add Keyboard Layout sensitive InputBoxes
+ Remove obsolete helper function

* Fig [] usage and remove old keybinding names
+ Fix Compile Warnings
+ Fix Compile Warnings 2
+ Fix Clang Warnings
+ Fix faulty style + remove lambda
+ Change reverse-lookup map to iterating function
+ Added controlconfigdefault.tbl generator
+ Fixed gcc warning
+ Fixed msvc warning
+ make debug console keyboard layout independent
+ Expand DCF Functionality for saving control presets
+ Address Issues

* Controls/update tbl (#5)

Updates controlconfigdefaults.tbl to write Primary and Secondary bindings.

* Added Scripting Hooks for controlsconfigdefault.tbl (#6)

* Handle Asserted Switch cases

* Controls is a library and should be in the libs folder

* Add Lock & EnableScripting Functionality and expose it to scripting API

* Added scripting isLocked

* Move Key Hooks to register-able callback

* Add option to remove hook

* Repurpose CCI.used for Axes

* Morph bitfield into a singleton class

* Add encoding conversion helpers
+ Add keyname conversion if needed
+ Merge refactored encoding functions
+ Change keycode encoding call
+ remove bad type modifier
+ Move Conversion functions to util/unicode
+ Change Encoding Enum to Enum Class
+ Adapt KeyName call for encoding enum class
+ Fix Warning due to enum class
+ Change validation to own function

* Make mActionToVal Assertion more helpful
* Fix typo
* Fix style
* Use constant, not magic number
* Document Ignored_keys[]
* Doxy class controls_lua_override_cache a bit better
* Put NameToVal safeties back in
* Reorder the +Disable and $Disable: options, and be exclusive
* Reorder the +Locked and $Loacked options, and be exclusive
* Revert changes in ValToJoy
* Revert errant duplicates
* Refactor printJoyJSON() to use getJsonArray for consistency
* Remove unused FS2toSDL map
* Remove ADE_FUNC(AxisActionInverted)

* Address gcc-5 issues
* Remove unused param for textify_scancode
* Declare textify_scancode_universal() in controlsconfig.h for use
* Clean up textify_scancode() and *_universal() a smidge for clarity

* Address most clang-9 issues

* Modernize NULL to nullptr

* Expand logic and document in controlsconfig::check_control() for clarity.
* Fix typo

* Remove unecassary static_cast
*  Use Assertion instead of Assert within control_config_common_read_section()
* mprintf()'s need new lines!

Co-authored-by: Birk Magnussen <[email protected]>
Co-authored-by: Birk Magnussen <[email protected]>
2022-06-05 10:19:46 -05:00
Goober5000 e3ad6664e0 Cached subsystem indexing (#4316)
* add subsystem indexer and ensure that ship_get_indexed_subsys and ship_get_first_subsys are independent

* also add reverse lookup from subsys to index

* update indexer to accommodate subsystem pointers being changed

* use clearer function names, and fix the type of subsys_list_indexer

* add assertions

* address latest feedbcak
2022-06-05 08:44:54 -05:00
Goober5000 c1003f76b8 add new virtvar for getting and setting resize mode, and use it in drawString and drawStringResized 2022-05-31 00:21:10 -04:00
BMagnu f193c5233d Add LuaAI validity callbacks (#4304)
* Add callback for user specified availability status

* Add target restrict hook

* Fix Restrict hook and add not self restrict type

* Fix documentation

* Fix typo

* scope the ai achievability enum

* fix scoped achievabiliy
2022-05-28 21:18:28 +09:00
BMagnu 5c4be3d392 LuaAI (#4198)
* Basic LuaAI

* LuaAI Player Order Support

* Add Player Order Target Restricts

* Fix init order

* Add AI helper API

* Fix subcategory stuff

* Fix Compiler Warnings

* Remove AI Mode switch Int3's

* Fix Lua docs

* Compiler warnings 2

* Clang Tidy

* Incorporate Feedback

* Incorporate Feedback 2

* Incorporate Feedback 3

* Incorporate Feedback 4

* Clang Tidy
2022-05-16 18:36:34 +09:00
Goober5000 7606df6082 miscellaneous fixes related to old Coverity fixes
1) Remove the extra branch in `check_ok_to_fire` that was added in SVN revision 10392, or commit 0d54630e83.  If there was an actual Coverity error, this does not fix it at the proper location.  More importantly, this breaks certain turret firing behavior.
2) Fix a couple of bounds checks.
3) Remove an incorrect stale comment.

This fixes the broken turret swarm weapons that were uncovered by the fixes in #2959.
2022-05-12 01:03:50 -04:00
Goober5000 b404b137a0 guard against off-by-one errors in replace_one and replace_all
Also add some test cases for checking correct behavior.
2022-05-07 15:08:21 -04:00
Goober5000 5e436dd276 fix two bugs associated with custom tech databases
1) In commit 770fce8de5, a flag was incorrectly ported from a bit to a flagset, which caused ships not in the tech db to not be removed.
2) Perhaps due to the pilot file upgrade, campaigns which had their tech databases reset would immediately load stale techroom data from the savefile.  This change writes the savefile after the reset so that subsequent reloads will load the correct data.
2022-05-05 22:42:20 -04:00
Goober5000 76bb1b6232 Merge pull request #4213 from Goober5000/hud_targetbox_flashes
add a script function to flash parts of the target box
2022-04-27 14:02:32 -04:00
Joshua Glatt fe236b337f SEXP containers, Part 4: Text replacement (#3490) 2022-04-26 10:24:55 -07:00
wookieejedi 1de7ffc782 Fix RTT Cockpits Gauges with Change Ship Class (#4216)
* Fix RTT Cockpits Gauges with Change Ship Class

Previously, using the `change-ship-class` sexp or scripting function did not update RTT cockpit gauges. This PR adds the cockpit code update functions to fix the issue. Tested and works as expected.

* comment consistency
2022-04-25 22:18:02 -04:00
Goober5000 435a525e4f add a script function to flash parts of the target box
Add the `hu.flashTargetBox()` function.  Also move the `STR` macro to scp_defines.h and rename it `SCP_TOKEN_TO_STR`.
2022-04-24 23:14:49 -04:00
Goober5000 83bd293a3a add some script functions for HUD gauge data
These are useful for adapting scripts based on whether HUD gauges are scaled and whether they use different coordinates or fonts.
2022-04-24 16:39:10 -04:00
EatThePath e577e8db81 lua ship.checkVisibility mimicing sexp ship-is-visible (#4132)
* Implemented ship.checkVisibility for luaAPI, sharing logic with sexp isVisible. Made new function for the shared functionality

* Fixed a viewer-viewed mixup
2022-04-04 10:38:56 +09:00
Goober5000 636b4e81df Merge pull request #3960 from Goober5000/scripted_decals
add scripting support for decals
2022-04-02 13:57:40 -04:00
Goober5000 3863c8fd14 Merge pull request #4085 from Goober5000/campaign_start_hook
add campaign start hook
2022-04-01 23:59:08 -04:00
Goober5000 63445dec5a remove Object.parent_type
It's theoretically possible for `parent_type` to get out of sync with the parent's type, particularly if the parent is destroyed.  Since the field is almost never used, it can be removed.

Should fix #4105.
2022-03-27 12:38:48 -04:00
Goober5000 375ae25ac9 add campaign start hook
This hook will be called when a campaign is started for the first time (whether in Player Select or in the campaign room), or is reset.
2022-03-20 14:48:32 -04:00
Goober5000 18a8e280dc add scripting support for decals
This extends the existing decal system so that decals can be created through scripting.
2022-03-01 19:07:39 -05:00
Goober5000 237787c256 add some new scan features
1. Add custom scan times per subsystem
2. Add scanning time and range multipliers for player ships

Resolves #4027
2022-02-18 22:39:04 -05:00
Goober5000 54ff2f00ed more updates 2022-02-17 01:57:34 -05:00