]>
git.rm.cloudns.org Git - xonotic/xonotic-data.pk3dir.git/log
terencehill [Sat, 31 Aug 2024 08:47:47 +0000 (08:47 +0000)]
Merge branch 'Mario/resource_item_cleanup' into 'master'
Clean up ammo displaying to not require direct item references
See merge request xonotic/xonotic-data.pk3dir!1326
Mario [Sat, 31 Aug 2024 08:47:47 +0000 (08:47 +0000)]
Clean up ammo displaying to not require direct item references
terencehill [Fri, 30 Aug 2024 14:21:32 +0000 (16:21 +0200)]
Refactor write_recordmarker to reduce engine function calls and while at it indent code with TABs
terencehill [Thu, 29 Aug 2024 09:16:44 +0000 (09:16 +0000)]
Merge branch 'des/cmd_cleancps' into 'master'
Race/CTS: Add clear_bestcptimes command to clear all your best checkpoint times
See merge request xonotic/xonotic-data.pk3dir!1332
Des - [Thu, 29 Aug 2024 09:16:44 +0000 (09:16 +0000)]
Race/CTS: Add clear_bestcptimes command to clear all your best checkpoint times
Rudolf Polzer [Thu, 29 Aug 2024 05:23:17 +0000 (07:23 +0200)]
Transifex autosync
terencehill [Wed, 28 Aug 2024 23:50:51 +0000 (23:50 +0000)]
Merge branch 'des/race_dont_save_pb_on_demoplay' into 'master'
Don't save local record if we are just watching a demo
See merge request xonotic/xonotic-data.pk3dir!1340
terencehill [Wed, 28 Aug 2024 12:53:43 +0000 (12:53 +0000)]
Merge branch 'Spike29/campaign_french' into 'master'
Add a French translation to the Xonotic campaign
See merge request xonotic/xonotic-data.pk3dir!1338
Rudolf Polzer [Wed, 28 Aug 2024 05:23:17 +0000 (07:23 +0200)]
Transifex autosync
Rudolf Polzer [Tue, 27 Aug 2024 05:23:21 +0000 (07:23 +0200)]
Transifex autosync
Dr. Jaska [Tue, 27 Aug 2024 00:43:21 +0000 (00:43 +0000)]
Merge branch 'Mario/jetpack_powerup_settings' into 'master'
Make Jetpacks respect g_powerups and add settings to disable them individually
See merge request xonotic/xonotic-data.pk3dir!1321
Des [Mon, 26 Aug 2024 23:17:07 +0000 (20:17 -0300)]
Don't save local record if we are just watching a demo.
terencehill [Mon, 26 Aug 2024 13:33:01 +0000 (13:33 +0000)]
Merge branch 'terencehill/translatable_strings_cleanup' into 'master'
Clean up some translatable strings
See merge request xonotic/xonotic-data.pk3dir!1333
terencehill [Mon, 26 Aug 2024 12:51:21 +0000 (12:51 +0000)]
Merge branch 'drjaska/race_CheckName' into 'master'
Fix race_CheckName by actually using the given argument
Closes #2554 and #2123
See merge request xonotic/xonotic-data.pk3dir!1339
Rudolf Polzer [Mon, 26 Aug 2024 05:23:17 +0000 (07:23 +0200)]
Transifex autosync
drjaska [Mon, 26 Aug 2024 03:23:30 +0000 (06:23 +0300)]
Fix race_CheckName by actually using the given arg
// Check if the given name already exists in race rankings?
// In that case, where? (otherwise return 0)
int race_CheckName(string net_name)
terencehill [Sun, 25 Aug 2024 15:13:54 +0000 (15:13 +0000)]
Merge branch 'terencehill/blaster_attack_shared' into 'master'
Make weapons using blaster as secondary attack load settings from blaster
See merge request xonotic/xonotic-data.pk3dir!1282
Spike29 [Sun, 25 Aug 2024 15:11:44 +0000 (17:11 +0200)]
Add a French translation to the Xonotic campaign
terencehill [Sat, 24 Aug 2024 09:28:25 +0000 (09:28 +0000)]
Merge branch 'terencehill/antispam_stuff' into 'master'
Make cmd and chat anti spam systems work during timeouts
See merge request xonotic/xonotic-data.pk3dir!1334
Rudolf Polzer [Sat, 24 Aug 2024 05:23:16 +0000 (07:23 +0200)]
Transifex autosync
terencehill [Fri, 23 Aug 2024 22:11:24 +0000 (00:11 +0200)]
Shownames: restore an early alpha check that was made exclusive to CTS by mistake in
0aa7cb88f
Rudolf Polzer [Thu, 22 Aug 2024 05:23:15 +0000 (07:23 +0200)]
Transifex autosync
terencehill [Wed, 21 Aug 2024 14:16:07 +0000 (16:16 +0200)]
Hud editor: "Title at %s" --> "Title"
Rudolf Polzer [Wed, 21 Aug 2024 05:23:16 +0000 (07:23 +0200)]
Transifex autosync
terencehill [Sun, 18 Aug 2024 22:50:03 +0000 (00:50 +0200)]
HUD editor: fix Chat, Vote and StrafeHud panels being visible while the settings menu of another panel is open
Rudolf Polzer [Sun, 18 Aug 2024 05:23:14 +0000 (07:23 +0200)]
Transifex autosync
terencehill [Thu, 15 Aug 2024 14:38:37 +0000 (14:38 +0000)]
Merge branch 'des/race_honor_tracking' into 'master'
Don't save race times if player doesn't want tracking, even if we have uid2name stored
Closes #2806
See merge request xonotic/xonotic-data.pk3dir!1336
Des [Wed, 14 Aug 2024 12:58:18 +0000 (09:58 -0300)]
Don't save race times if player doesn't want tracking, even if we have uuid2name stored.
Rudolf Polzer [Wed, 14 Aug 2024 05:23:20 +0000 (07:23 +0200)]
Transifex autosync
terencehill [Tue, 13 Aug 2024 08:51:08 +0000 (08:51 +0000)]
Merge branch 'terencehill/ctf_fixes' into 'master'
Misc CTF fixes
See merge request xonotic/xonotic-data.pk3dir!1331
Rudolf Polzer [Tue, 13 Aug 2024 05:23:18 +0000 (07:23 +0200)]
Transifex autosync
terencehill [Tue, 13 Aug 2024 00:34:23 +0000 (02:34 +0200)]
Fix electro not leaving decals on all walls
terencehill [Mon, 12 Aug 2024 23:22:25 +0000 (01:22 +0200)]
Remove dead code after changes of the previous commit
terencehill [Mon, 12 Aug 2024 23:20:20 +0000 (01:20 +0200)]
Remove optional blaster secondary attack (copy of primary attack with slightly different settings)
Weapons using blaster as secondary attack now load settings from blaster primary
terencehill [Mon, 12 Aug 2024 23:19:01 +0000 (01:19 +0200)]
Make so that weapons using blaster as secondary attack load settings directly from blaster instead of loading their own blaster settings
It implements Balance Council vote 18 "Keep secondary/offhand blaster default settings (including vaporizer, ok*) the same as vanilla blaster defaults"
terencehill [Mon, 12 Aug 2024 22:59:46 +0000 (00:59 +0200)]
Simplify REGISTER_WEAPON, now possible thanks to the new WEP_CVAR* macros
terencehill [Sun, 11 Aug 2024 14:05:35 +0000 (16:05 +0200)]
Switch to using the WEP_CVAR* macros I added in the previous commit as they are more versatile
Rudolf Polzer [Mon, 12 Aug 2024 14:10:43 +0000 (16:10 +0200)]
Transifex autosync
Rudolf Polzer [Mon, 12 Aug 2024 14:07:51 +0000 (16:07 +0200)]
Transifex autosync
terencehill [Sun, 11 Aug 2024 13:04:17 +0000 (15:04 +0200)]
Fix weapons with blaster secondary attack improperly using damage and force settings of the blaster itself
terencehill [Sat, 10 Aug 2024 10:18:22 +0000 (12:18 +0200)]
Reduce code duplication in chat anti spam system
terencehill [Sat, 10 Aug 2024 09:05:51 +0000 (11:05 +0200)]
Make cmd and chat anti spam systems work during timeouts and make them work properly at different game speed
Chat anti spam code now works with flood time (.(flood_field)) initialized to 0, matching cmd anti spam code
terencehill [Fri, 9 Aug 2024 21:27:28 +0000 (23:27 +0200)]
Remove cruft of an outdated system against cmd name spam (not functional because .nickspamtime is never set).
cmd name is already protected by spam by the sv_clientcommand_antispam system anyway
Also remove unused floodcontrol_voice* fields
terencehill [Thu, 8 Aug 2024 21:33:42 +0000 (23:33 +0200)]
Make Domination capture message easier to translate (only the second part of the message is translatable). Also update notification argument descriptions
terencehill [Thu, 8 Aug 2024 21:01:31 +0000 (23:01 +0200)]
Replace notification color codes only in custom string arguments.
No message uses them in basic string arguments, except for player names where they shouldn't be replaced.
Also remove a pointless CCR (color code replace) call for the race_diff argument
terencehill [Thu, 8 Aug 2024 15:52:18 +0000 (17:52 +0200)]
Remove trailing space and " %s^BG" used for connecting different sentences from translatable messages
terencehill [Thu, 8 Aug 2024 09:54:55 +0000 (11:54 +0200)]
Rename a variable in notif_arg_item_wepammo
terencehill [Wed, 7 Aug 2024 23:07:56 +0000 (01:07 +0200)]
CTF: fix fire effect not stopped when flag returns to base
This bug was due to flags being improperly set as damageable by contents while standing at their own bases
terencehill [Wed, 7 Aug 2024 22:29:32 +0000 (00:29 +0200)]
CTF: Fix flag returning to base on first hit if g_ctf_flag_return_time is 0 and g_ctf_flag_return_damage is enabled
Also default g_ctf_flag_return_time to 0 if negative
terencehill [Wed, 7 Aug 2024 22:18:15 +0000 (00:18 +0200)]
CTF: fix waypoint healthbar not shown if g_ctf_flag_return_damage is enabled and g_ctf_flag_health is 0
terencehill [Wed, 7 Aug 2024 22:03:13 +0000 (00:03 +0200)]
CTF: g_ctf_flag_health: default to 0 if negative, allow reading it during a match and improve cvar description
Dr. Jaska [Tue, 6 Aug 2024 13:05:58 +0000 (13:05 +0000)]
Merge branch 'drjaska/serverlist-modified' into 'master'
Made servers modified via cvar changes appear in normal servers
See merge request xonotic/xonotic-data.pk3dir!1233
Dr. Jaska [Tue, 6 Aug 2024 13:05:57 +0000 (13:05 +0000)]
Made servers modified via cvar changes appear in normal servers
terencehill [Tue, 6 Aug 2024 09:39:33 +0000 (09:39 +0000)]
Merge branch 'terencehill/floodcontrol_refactoring' into 'master'
Refactor flood control code to work with .cmd_floodtime initialized to 0
See merge request xonotic/xonotic-data.pk3dir!1325
bones_was_here [Tue, 6 Aug 2024 05:14:09 +0000 (15:14 +1000)]
HUD: don't draw panels needing player data before it's received
Fixes
"client VM warning: VM_CL_getstati: index(-1) is >=MAX_CL_STATS(256) or <0"
often appearing when connecting, with my hud_panel_ammo config.
It could also have been fixed by checking for (ammoType == 0) as well as
(ammoType == RES_NONE) but a many-cases fix is better than a
special-case fix.
terencehill [Mon, 5 Aug 2024 22:27:09 +0000 (22:27 +0000)]
Merge branch 'Mario/show_all_button' into 'master'
Add a menu option to show hidden gametypes
See merge request xonotic/xonotic-data.pk3dir!1322
Mario [Mon, 5 Aug 2024 22:27:09 +0000 (22:27 +0000)]
Add a show all checkbox to the Create menu to list previously hidden gametypes
Also remove now unused mutator and weapon arena list label
terencehill [Mon, 5 Aug 2024 21:59:17 +0000 (23:59 +0200)]
Make some recently added messages easier to translate
bones_was_here [Mon, 5 Aug 2024 16:33:11 +0000 (16:33 +0000)]
Merge branch 'bones_was_here/teamplay5' into 'master'
selectteam, join, spec cmds: notifications, server admin features, fixes
Closes #2905 and #2702
See merge request xonotic/xonotic-data.pk3dir!1301
bones_was_here [Sat, 13 Jul 2024 15:04:57 +0000 (01:04 +1000)]
Improve sv_spectate 0 notifications and description, refactor nospectators command
The blockSpectators global is redundant.
See https://gitlab.com/xonotic/xonotic-data.pk3dir/-/merge_requests/1289
Players are now given the grace period and SPECTATE_WARNING when
sv_spectate is disabled during a game, as well as when `nospectators` is
voted.
Centreprints are added and displayed when they don't conflict with join
restriction centreprints.
bones_was_here [Fri, 28 Jun 2024 10:06:40 +0000 (20:06 +1000)]
join: display translated notifications for relevant failures
bones_was_here [Fri, 14 Jun 2024 10:42:55 +0000 (20:42 +1000)]
teamplay: display translated notifications for typical failures or state changes
Fixes some uses of NOTIF_ONE where it should have been NOTIF_ONE_ONLY.
bones_was_here [Fri, 14 Jun 2024 08:36:49 +0000 (18:36 +1000)]
join queue: UI improvements and refactoring
Fixes duplicate and redundant chatcon notifications.
Displays relevant centreprint each time the team selection GUI or +jump
are used to try to join (even if the player is already queued) for
better noob friendliness.
Always notifies the player when their team selection conflicts with that
of a queued player.
Notifies queued players to get their attention when they join as it may
take some time before another player triggers the join.
Includes the team the player actually got assigned to in the relevant
centreprint (for the cases where they had no preference, or someone else
chose their preferred team first).
Prevents SetPlayerTeam() and queuePlayer() when the player definitely
can't play (version mismatch, locked teams), fixing misleading
notifications.
Allows players to join the queue even when g_maxplayers blocks them from
joining the match, so they can tag in if someone leaves.
Fixes bug with > 2 teams where if a player with a lower entity number
queues for any available team, a player with a higher entity number
and a specific team preference could be assigned to the same team (by
adding a second pass in Join() ).
Fixes lack of "now playing" notification when a bot joins a gametype
without teams.
This required some refactoring:
Calls joinAllowed() from ClientCommand_selectteam(), passing the
team_index through to queuePlayer(). This means calling queuePlayer
from SetPlayerTeam() is no longer needed.
Uses a different logic order in joinAllowed() when the queue is enabled.
Moves the ForbidSpawn MUTATOR hook from joinAllowed() to
PutPlayerInServer(). It seemed to be in the wrong place anyway: the
player is only blocked from spawning, not from joining the match.
No longer sets the .team field when adding a player to the queue
(they're not actually on the team yet), instead calls SetPlayerTeam()
from Join() when actually spawning the queued player.
Uses the .team_selected field to pass selection conflicts to Join(), it
can't be done with a parameter because `join` and `selectteam` are
separate commands.
Moves the queue conflict detection from Player_SetTeamIndexChecked() to
queuePlayer().
Reduces TeamBalance_JoinBestTeam() callsites.
Fixes some uses of NOTIF_ONE where it should have been NOTIF_ONE_ONLY.
bones_was_here [Sat, 13 Jul 2024 11:18:42 +0000 (21:18 +1000)]
join queue: fix 2 bugs that could result in too many players on a team
Join(): when a client queued for red, then a blue player left the team,
then a client (re)joined blue, the client queued for red was joined too
(stacking red team). Fixed by only joining queued players in Join() when
teams are currently balanced (the unbalanced cases are handled by
TeamBalance_QueuedPlayersTagIn()).
ClientKill_Now_TeamChange(): when all queued client(s) chose specific
team(s) and the last client (which skips the queue and triggers the
joins) chose autoselect from the team selection UI, it was possible they
were assigned the same team as one of the queued clients. Fixed by
deferring the autoselect to Join() when needed/possible.
bones_was_here [Fri, 14 Jun 2024 07:54:46 +0000 (17:54 +1000)]
join queue: fix HUD infomessage, improve consistency and clarity of notifications
The state of having no team preference (deferred autoselect) was
implemented in
624a242e556387367d088dc2cde847989c0fd321 but it wasn't
correctly declared and networked and displayed in the HUD info panel (it
said you're queued to join the Neutral team).
bones_was_here [Sun, 9 Jun 2024 18:09:31 +0000 (04:09 +1000)]
join queue: disable in singleplayer, improve description
Fixes https://gitlab.com/xonotic/xonotic-data.pk3dir/-/issues/2905
bones_was_here [Sun, 9 Jun 2024 16:07:19 +0000 (02:07 +1000)]
Enable sv_teamnagger in CA, remove HideTeamNagger mutator hook
sv_teamnagger seems to work fine in CA and is already disabled in
gametypes without teams.
bones_was_here [Sat, 8 Jun 2024 11:32:54 +0000 (21:32 +1000)]
Increase size of sv_teamnagger message, also use bold
Implements https://gitlab.com/xonotic/xonotic-data.pk3dir/-/issues/2702
bones_was_here [Fri, 7 Jun 2024 09:08:38 +0000 (19:08 +1000)]
join queue: fix removal of AFK players
Was broken in
433e811eb85f24adf86b8a81679a5c9a6c273337
Improves documentation.
Signed-off-by: bones_was_here <bones_was_here@xonotic.au>
bones_was_here [Tue, 4 Jun 2024 17:53:18 +0000 (03:53 +1000)]
Don't end warmup when teams are unbalanced (WRT sv_teamnagger)
Allows spectators to see the unbalanced teams warning, because they
could fix it by joining the smaller team.
Aborts countdown if teams become unbalanced, for the case of someone
joining this can be avoided by enabling g_balance_teams_queue.
Updates the chatcon notification for countdown abort when the player
count drops below the minimum.
bones_was_here [Thu, 6 Jun 2024 10:43:13 +0000 (20:43 +1000)]
Fix and extend networking of sv_teamnagger
It wasn't enabled reliably because the message could be received before
CSQC was ready for it.
Adds support for specifying a team size difference, mainly for use with
g_balance_teams_queue.
Signed-off-by: bones_was_here <bones_was_here@xonotic.au>
bones_was_here [Tue, 4 Jun 2024 12:15:37 +0000 (22:15 +1000)]
Allow g_balance_teams_prevent_imbalance without g_balance_teams
I disagree with the comment because g_balance_teams is a misnomer: all
it does is change whether the team selection UI appears when pressing
+jump. Selecting a team manually can improve balance when players know
each other's skills, and the fact that's in use doesn't automatically
mean that people should be allowed to stack mid-match.
Added a condition to only enforce during the match or countdown, because
it's easier to reorganise teams during warmup when players can directly
switch to their team, instead of one of them needing to spec before the
other can swap.
bones_was_here [Mon, 5 Aug 2024 16:24:54 +0000 (16:24 +0000)]
Merge branch 'bones_was_here/ticrate' into 'master'
Support only perfect ticrates: 32hz 64hz 128hz, raise default to 64hz
Closes #2860
See merge request xonotic/xonotic-data.pk3dir!1248
bones_was_here [Fri, 3 Nov 2023 16:44:29 +0000 (02:44 +1000)]
Turrets: always run at server ticrate
bones_was_here [Fri, 3 Nov 2023 16:43:17 +0000 (02:43 +1000)]
Monsters: always run at server ticrate
bones_was_here [Fri, 3 Nov 2023 16:14:01 +0000 (02:14 +1000)]
Support only perfect ticrates: 32hz 64hz 128hz, raise default to 64hz
At these ticrates there's no floating point error accumulation.
Signed-off-by: bones_was_here <bones_was_here@xonotic.au>
terencehill [Sun, 4 Aug 2024 09:39:00 +0000 (09:39 +0000)]
Merge branch 'Mario/client_command_registry' into 'master'
Migrate client commands to a registry
See merge request xonotic/xonotic-data.pk3dir!1320
Mario [Sun, 4 Aug 2024 09:39:00 +0000 (09:39 +0000)]
Migrates client->server commands (such as `say` and `clientversion`) to a registry, matching the other command handlers.
Also reword some client commands to be less clunky and more consistent
terencehill [Sat, 3 Aug 2024 14:05:00 +0000 (14:05 +0000)]
Merge branch 'LegendaryGuard/optimize_ok_player_models' into 'master'
Optimize Overkill player models
See merge request xonotic/xonotic-data.pk3dir!1110
LegendaryGuard [Sat, 3 Aug 2024 14:05:00 +0000 (14:05 +0000)]
Optimize Overkill player models
Rudolf Polzer [Sat, 3 Aug 2024 05:23:17 +0000 (07:23 +0200)]
Transifex autosync
terencehill [Fri, 2 Aug 2024 21:05:13 +0000 (23:05 +0200)]
Refactor flood control code to work with .cmd_floodtime initialized to 0
Mario [Thu, 1 Aug 2024 05:09:59 +0000 (15:09 +1000)]
Make jetpacks respect g_powerups and add settings to disable them individually
Dr. Jaska [Thu, 1 Aug 2024 04:32:31 +0000 (04:32 +0000)]
Merge branch 'Mario/instagib_explicit_powerups' into 'master'
Fix Jetpacks and other undefined powerup items spawning in InstaGib
Closes #2916
See merge request xonotic/xonotic-data.pk3dir!1315
Mario [Thu, 1 Aug 2024 04:32:30 +0000 (04:32 +0000)]
Fix Jetpacks and other undefined powerup items spawning in InstaGib
terencehill [Wed, 31 Jul 2024 14:57:25 +0000 (16:57 +0200)]
Fix cmd flood control blocking cmds after only a few cmds at startup
Dr. Jaska [Wed, 31 Jul 2024 12:53:11 +0000 (12:53 +0000)]
Merge branch 'Mario/join_floodcontrol_fix' into 'master'
Add a mutator hook to handle flood control on client commands
See merge request xonotic/xonotic-data.pk3dir!1316
Mario [Wed, 31 Jul 2024 12:53:10 +0000 (12:53 +0000)]
Add a mutator hook to handle flood control on client commands
Dr. Jaska [Wed, 31 Jul 2024 05:12:15 +0000 (05:12 +0000)]
Merge branch 'Mario/warpzone_div0_fix' into 'master'
Prevent division by zero when warpzones teleport a stationary player
Closes #2924
See merge request xonotic/xonotic-data.pk3dir!1317
Dr. Jaska [Wed, 31 Jul 2024 05:01:59 +0000 (05:01 +0000)]
Merge branch 'Mario/maplist_improvements' into 'master'
Refactor map list code to use buffers
Closes #2648
See merge request xonotic/xonotic-data.pk3dir!1312
Mario [Wed, 31 Jul 2024 05:01:59 +0000 (05:01 +0000)]
Refactor map list code to use buffers
Dr. Jaska [Wed, 31 Jul 2024 05:01:49 +0000 (05:01 +0000)]
Merge branch 'Mario/player_death_size_fix' into 'master'
Scale player hitbox size on death to fix potential crashes
Closes #2920
See merge request xonotic/xonotic-data.pk3dir!1311
Mario [Wed, 31 Jul 2024 05:01:49 +0000 (05:01 +0000)]
Scale player hitbox size on death to fix potential crashes
Mario [Wed, 31 Jul 2024 01:49:32 +0000 (11:49 +1000)]
Prevent division by zero when warpzones teleport a stationary player
terencehill [Mon, 29 Jul 2024 15:18:53 +0000 (15:18 +0000)]
Merge branch 'terencehill/cfg_fixes' into 'master'
Cfg fixes
See merge request xonotic/xonotic-data.pk3dir!1306
terencehill [Sun, 28 Jul 2024 10:50:02 +0000 (10:50 +0000)]
Merge branch 'Mario/illusionary_bgmscript_fix' into 'master'
Fix bgmscript not being able to set visibility of client-side walls
Closes #1892
See merge request xonotic/xonotic-data.pk3dir!1313
Dr. Jaska [Sun, 28 Jul 2024 07:52:39 +0000 (07:52 +0000)]
Merge branch 'LegendaryGuard/chat_showplayerid' into 'master'
Add cvar to display player number alongside their name in the chat
See merge request xonotic/xonotic-data.pk3dir!1208
Mario [Sun, 28 Jul 2024 04:25:17 +0000 (14:25 +1000)]
Don't override alpha values set by bgmscript when drawing client walls
Dr. Jaska [Sun, 28 Jul 2024 03:16:25 +0000 (03:16 +0000)]
Merge branch 'drjaska/spread-pattern' into 'master'
Implement a fixed spread pattern, for (OK) Shotgun (Crylink and Hagar share the function call also)
See merge request xonotic/xonotic-data.pk3dir!1169
Dr. Jaska [Sun, 28 Jul 2024 03:16:25 +0000 (03:16 +0000)]
Implement a fixed spread pattern, for (OK) Shotgun (Crylink and Hagar share the function call also)