Commit graph

50 commits

Author SHA1 Message Date
Sally Coolatta
80d0231e8a ACS AddBot: Push -1 on fail instead of MAXPLAYERS 2023-06-14 09:30:34 -04:00
Sally Coolatta
e6e7056aae Add bot styles & bot spawn ACS function 2023-06-14 09:16:38 -04:00
Sal
7b98752b67 Merge branch 'refactor-mapthing' into 'master'
Read-only mapthing_t

See merge request KartKrew/Kart!1252
2023-06-14 00:07:42 +00:00
toaster
f91f075a0d ACS: void MapWarp(str mapname, bool showintermission)
An immediate level change on command, to the specified level (via string).
Utilises the existing nextmapoverride and skipstats system, but with skipstats assumed to be the default.
2023-06-02 20:56:27 +01:00
toaster
8d9b42e49b Skin name search-assistive hashing
More opportunities for early rejection in table-wide searches, in anticipation of future work.
- Many circumstances independently implemented string name comparisons. Most of these have been converted to use R_SkinAvailable, with one exception.
    - M_CharacterSelectInit already needs to iterate over the characters, so produce the skin hash independently.
2023-05-30 12:21:40 +01:00
toaster
0f266198ca ACS_GetColorFromString; Fix copypaste error indexing into skin array rather than color array
Discovered while writing the following commit.
2023-05-30 12:21:40 +01:00
Sally Coolatta
9d80323a3a Read-only mapthing_t
Map things are writeable in Lua, which I am pretty certain is a mistake because mapthings are not sent over the network at all. I considered making them net-synced (it would be relatively easy), but it also aligns with another, more "philosophical" issue: Doom generally copies over properties from mapthing_t into mobj_t, and then only refers to it again when needing to respawn an object -- mapthing_t is not really intended to be referred to very often at runtime. At best it's slightly annoying since some objects rely on a spawnpoint for behavior changes, at worst it may make ACS more confusing in the future since Thing and Mobj tags are mixed together or less useful since they wouldn't be able to modify behaviors of objects that are based on args.

So I decided to solve these two issues at the same time; just treat mapthing_t as something to copy values from, like OG Doom does it. This basically just means that special and args are also part of the mobj now instead of the mapthing, which should fill any desire to edit this stuff from Lua, and reduces the number of instances where objects need to check for their spawnpoint to function properly.
2023-05-25 14:40:55 -04:00
Sally Coolatta
31f0df6103 ACS: Fix tag iterations not working 2023-05-02 19:30:09 -04:00
Sally Coolatta
8588881f4d ACS: Add SIDE_BOTH support for SetSideProperty 2023-05-02 18:44:30 -04:00
Sally Coolatta
4f2c47fde0 ACS: Try to fix sprnames garbage 2023-05-02 18:44:30 -04:00
Sally Coolatta
427ffceac9 ACS: Get/SetThingProperty 2023-05-02 18:44:29 -04:00
Sally Coolatta
f8744560df ACS: Add SIDE_PROP_REPEATCOUNT
Missed this one.
2023-05-02 18:44:28 -04:00
Sally Coolatta
d9382f2100 ACS: UDMF user properties
Lines, sides, sectors, and things now all support the "Custom" tab properly. Label a property as `user_[whatever you want]` in this tab, and it will be added to the structure. ACS will then be able to retrieve it using the `Get[x]UserProperty()` function.
2023-05-02 18:44:27 -04:00
Sally Coolatta
a366948c62 ACS: Remove SECTOR_PROP_SPECIAL
This is only used in binary, and ACS shouldn't be implementing any binary stuff anymore.
2023-05-02 18:44:26 -04:00
Sally Coolatta
5521284fa0 ACS: Implement Line and Side get/set functions
Additionally, these all now support tag 0 as getting/setting properties from the activator.
2023-05-02 18:44:26 -04:00
Sally Coolatta
e27e6c1353 ACS: Get/Set property prototyping
Mostly proof-of-concept so that Charyb can play around with it and tell me if it works for her.
2023-05-02 18:44:25 -04:00
Eidolon
01cc68a9b5 Fix ACS extern barriers 2023-04-10 19:57:56 -05:00
James R
530c2c5348 acs/CMakeLists.txt: remove ACSVM_NOFLAGS, fix Apple Clang 14 compile
This should be more correct everywhere but it specifically
broke Apple Clang 14 compiling.
2023-03-31 05:27:59 -07:00
Sally Coolatta
e7128baef0 Add UFO script type 2023-03-28 18:07:22 -04:00
Oni
b9bbb6cb8a Merge branch 'conditions-cascading' into 'master'
Conditions Cascading

Closes #366

See merge request KartKrew/Kart!1053
2023-03-23 23:51:30 +00:00
Sally Coolatta
825f78457c Fix default args being undefined instead of 0 2023-03-22 16:37:47 -04:00
toaster
7d8fe85767 battleprisons rename compilation repair 2023-03-19 13:06:55 +00:00
toaster
4c0077e07c Merge branch 'master' of https://git.do.srb2.org/KartKrew/Kart into conditions-cascading 2023-03-19 13:01:06 +00:00
Sally Coolatta
181501860f Make stringarg application consistent
stringarg[0] and stringarg[1] are now are used as doubles of arg[0] and arg[1]. Specials that use both string args and regular args need to shift their args up to accomedate. This makes the behavior align more closely with the other Doom ports and removes a dumb manual string arg amount thing in callSpecImpl.

I only adjusted the specials that can be called from ACS. I did not mess with level load specials or thing types, since it's not as important. It would be nice to clean them up before release for consistency, though.
2023-03-14 08:03:20 -04:00
Sally Coolatta
62dd76dbcd Use a modified ACSVM to support 10 arg linedefs 2023-03-14 08:03:19 -04:00
Sally Coolatta
00063307bc Add TimeAttack ACS function 2023-03-14 08:03:18 -04:00
Sally Coolatta
e4a6124805 Add BreakTheCapsules ACS function
Returns true or false if the map is being played in Break the Capsules or not.
2023-03-14 08:02:58 -04:00
Sally Coolatta
28354ec70e SetLineRenderStyle ACS function
SetLineRenderStyle(int tag, int blend, int alpha)

Changes the blend mode and transparency of a linedef. Requires new compiler config for the blend mode constants.
2023-03-14 08:02:58 -04:00
Sally Coolatta
c8ccb13614 Add additional script types
- POSITION: Runs when POSITION period ends. Has no activator.
- OVERTIME: Runs when the time limit runs out. Has no activator.
- EMERALD: Runs when the Special Stage UFO's Chaos Emerald is grabbed. The activator object is set to the player that grabbed it.
2023-03-14 08:02:57 -04:00
Sally Coolatta
0b622639e0 Fully implement existing script type
Missed in the original merge.
2023-03-14 08:02:56 -04:00
toaster
d2c36c952a Merge branch 'master' of https://git.do.srb2.org/KartKrew/Kart into conditions-cascading
# Conflicts:
#	src/k_grandprix.c
#	src/k_grandprix.h
2023-03-07 19:37:46 +00:00
toaster
4802f96249 UCRP_TRIGGER: Convert to roundconditions_t
- Previously was extern scope UINT32 for all players, but this permits one player in a netgame taking a secret path while others don't.
- Attempted to make user-specifiable string, but while I can undo the effects of strtok for the condition, I cannot undo the effects of strupr - so it's disabled for now until we come up with a more robust and hopefully direct system.
- Also removed some old SRB2-originated assumptions that you couldn't unlock anything in multiplayer from the unlocktrigger system.
2023-03-07 00:03:41 +00:00
Sally Coolatta
c4525a61a2 Add results screen 2023-03-03 17:30:35 -05:00
Sally Coolatta
0f9f10d90f Add PodiumPosition ACS function
Returns the best position of all non-CPU players.
2023-03-03 16:10:04 -05:00
Sally Coolatta
9073d5bd17 Add CameraWait ACS function
Pauses a script until the tagged camera has no more waypoints to follow.
2023-03-03 16:10:03 -05:00
James R
eab22f645c Merge branch 'titlecard-cecho' into 'master'
Titlecard CEcho

See merge request KartKrew/Kart!952
2023-03-01 17:21:13 +00:00
James R
70cd31e04d ACS: include required C++ headers 2023-02-22 03:20:47 -08:00
James R
3e9b2e45e5 ACS: include libraries headers before any game headers 2023-02-22 03:20:47 -08:00
Lat
9f1e5d08c2 Allow multiple lines in titlecard cecho, overwrite cecho in ACS instead of making a new action 2023-02-21 20:56:45 +01:00
Lat
d755d6edb9 Titlecard CEcho 2023-02-21 16:16:34 +01:00
Sally Coolatta
8932ab4e91 Fix off-by-one in CallFunc_SetLineTexture 2023-02-12 17:04:51 -05:00
toaster
f378dfe3f6 ACS Environment::loadModule: Free vres after generation
Discovered (temporary) memory leak while writing the following commit
2023-02-03 13:53:26 +00:00
toaster
8555c66d61 activator_t: Before Z_Freeing, consistently decrement refcount for activator->mo per review 2023-01-15 15:12:30 +00:00
Sally Coolatta
bc3d9d9cf7 Add string comparison funcs for ACS 2023-01-07 03:09:41 -05:00
Sally Coolatta
345e7f83b0 Copy first mapthing tag to their mobjs
Allows the ThingCount and ThingSound ACS functions to fully work now, and adds significantly more possibilities for scripting later.
2023-01-01 17:07:46 -05:00
Sally Coolatta
a602530811 Add ACS functions that can replicate line triggers
PlayerTeam, PlayerRings, PlayerScore, CountEnemies, CountPushables, HaveUnlockableTrigger, HaveUnlockable, PlayerSkin, GetObjectDye, PlayerEmeralds, PlayerLap, LowestLap, and EncoreMode
2022-12-31 16:02:55 -05:00
Sally Coolatta
4ffa63a9c8 Improve compiling, add ACS_Execute
Arbritrary ACS scripts can now be run from linedef executors. I will be implementing more, non-linedef-executor-related methods in the future.
2022-12-27 17:04:06 -05:00
Sally Coolatta
38d3267cca Save+load SRB2 vars on ACS threads 2022-12-27 00:19:53 -05:00
Sally Coolatta
8034fd326f Add save/load stream for ACS
Saves the majority of the VM state, but not the SRB2-specific vars ... that can come after food
2022-12-26 22:17:36 -05:00
Sally Coolatta
8eef5efa95 Fully port the ACS integration to C++ 2022-12-23 04:38:05 -05:00