Commit graph

66 commits

Author SHA1 Message Date
James R
baf7f82af3 HU_DoTitlecardCEcho: add splitscreen support and interrupt feature
- Takes player argument and only appears on the screen if
  they're a display player.
- Uses 4P font when in splitscreen.
- Uses 1P font if not in splitscreen, or player argument
  is NULL -- message to everyone.
- Interrupt argument controls whether the message should
  overwrite another message that's already playing.
  - Global and player specific messages are considered
    separately.
2023-08-26 21:39:18 +01:00
Sally Coolatta
3c14931764 Merge master 2023-08-25 18:39:01 -04:00
Sally Coolatta
3c8eb505cc Merge branch 'master' into thing-script-args 2023-08-25 18:32:55 -04:00
Sally Coolatta
e30ff926d8 Default voice to sfx_ktalk
Someone just needs to put an actual sound for it in sounds.pk3
2023-08-25 13:15:50 -04:00
Sally Coolatta
764010b3ab Implement talk sounds
We're in Undertale
2023-08-25 07:53:09 -04:00
Sally Coolatta
3009f1c106 Small dialogue polish
- Slide in from top
- Fix chaining multiple dialogues with the same speaker not working
- Unset when changing level
- Sped up punctuation pause a bit
2023-08-25 06:50:12 -04:00
Sally Coolatta
16e6aa423e Dialogue 2 2023-08-24 17:28:53 -04:00
James R
f234c47d8a ACS: add Music_Play, Music_StopAll and Music_Remap 2023-08-21 01:04:19 -07:00
Sally Coolatta
9d940ed654 Separate script args from mapthing args
SRB2 uses a LOT of mapthing args compared to Hexen (which has none) and ZDoom (which only has them on objects that will never ever activate scripts). So we really badly needed to separate the two if we want attaching scripts to things to be useful.
2023-08-21 03:33:04 -04:00
James R
0b9d691ad6 acs/call-funcs.cpp: add ExitLevel function 2023-08-20 00:56:05 -07:00
James R
1a3ef843a5 acs/call-funcs.cpp: add StopLevelExit function 2023-08-20 00:36:00 -07:00
James R
9b4367773c Add GAMEOVER ACS script type
Triggered when the level ends with a losing condition and
there are no extra lives.
2023-08-20 00:36:00 -07:00
James R
8a72f42818 Split G_ExitLevel into G_BeginLevelExit and G_FinishExitLevel
- Save retry condition in G_BeginLevelExit
- Apply condition in G_FinishExitLevel

Preparation for ACS level end scripts, since the exit
condition will need be known when the countdown starts,
not when it ends (that'd be too late to do anything in the
level).
2023-08-20 00:36:00 -07:00
James R
eff895178b ACS_SectorThingCounter: fix infinite loop in touching iterator 2023-08-14 18:11:33 -07:00
Sally Coolatta
ae7325cbc3 Add PlayerNumber and ActivatorTID from ZDoom 2023-08-14 04:41:19 -04:00
--get
0bb4e0b0fa ACS: Better thing counting
- ThingCount has an extra argument for sector tag.
- CountEnemies and CountPushables have an extra argument for thing tag.
- Sector tag 0 for CountEnemies and CountPushables now redirects to activator sector.
2023-08-14 03:50:45 -04:00
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