Commit Graph

62 Commits

Author SHA1 Message Date
Mervill
5b07f2954f Objects that only have a basic description won't have extra line in examine text (#30472)
objects that only have a basic description won't have extra line in examine text

(cherry picked from commit 83a56cc74afb57970cea480efc43ac1a9621a5a8)
2025-07-19 15:16:20 +10:00
metalgearsloth
04f0689913 Fix examine threading issues (#30160)
(cherry picked from commit 404743f073eb1c3dbe585bec76b76a6b8c6cda2a)
2025-07-19 15:15:29 +10:00
Pieter-Jan Briers
1e0d104ebb Ghosts can now always see examine details (#29404)
* Ghosts can now always see examine details

This means they bypass range and occlusion checks for getting extra detail, like the charge on an SMES.

* EntityQuery

(cherry picked from commit e7bcb270e4c7278ce7c5b72c52ff1b720dc97823)
2025-07-19 15:08:01 +10:00
vanx
cce56e56ce [Tweak] The Gunnening (#285)
* wrapped examine (pretty)

* so mentally done

* remove ammo counters

* fix

* the soundening

* less visual recoil

* rifle fixes

* the soundening 2

* i loved # WWDP too much

* review fixes

* fix mag visuals

* top round examine

---------

Co-authored-by: vanx <discord@vanxxxx>
Co-authored-by: Spatison <137375981+Spatison@users.noreply.github.com>
2025-03-08 10:35:03 +02:00
sleepyyapril
3330acd9f2 Revert ""Proper" "Softcrit" "Support" (#1545)" (#1741)
traits need to be updated with new "params"

@RedFoxIV

(cherry picked from commit d62392b2fe2c3e651ad1f8492bbceef6dad5138e)
2025-02-15 00:15:22 +03:00
RedFoxIV
daf4f66414 "Proper" "Softcrit" "Support" (#1545)
# Description

Implements the softcrit functionality.
Similiar to critical state but spessmen will be able to communicate and
crawl around, but not pick up items.
Also supports configuring what is and isn't allowed in different
MobStates (per mob prototype): you can enable picking up items while in
softcrit so people can pick up their lasgun and continue shooting after
taking a 40x46mm to their ass cheeks from the guest nukies while being
dragged to safety.

![escape-from-tarkov-raid](https://github.com/user-attachments/assets/7f31702d-5677-4daf-a13d-8a9525fd3f9f)

<details> <summary><h1>Technical details</h1></summary>
New prototype type: "mobStateParams" (`MobStateParametersPrototype`)
Used to specify what can and can't be done when in a certain mobstate.
Of note that they are not actually bound to any `MobState` by
themselves. To assign a params prototype to a mobstate, use
`InitMobStateParams` in `MobStateComponent`.
It has to be a prototype because if I just did something akin to
`Dictionary<MobState, Dictionary<string, bool>>`, you'd have to check
the parent and copy every flag besides the one you wish to modify. That
is, if I understand how the prototype system works correctly, which I
frankly doubt. <!-- Working on softcrit made me hate prototypes. -->

MobStateComponent now has:
- `Dictionary<string, string> InitMobStateParams`, for storing "mobstate
- parameter prototype" pairs. `<string, string>` because it has to be
editable via mob prototypes. Named "mobStateParams" for mob prototypes.
- `public Dictionary<MobState, MobStateParametersPrototype>
MobStateParams` for actually storing the params for each state
- `public Dictionary<MobState, MobStateParametersOverride>
MobStateParamsOverrides` for storing overrides.
`MobStateParametersOverride` is a struct which mirrors all
`MobStateParametersPrototype`'s fields, except they're all nullable.
This is meant for code which wants to temporarily override some setting,
like a spell which allows dead people to talk. This is not the best
solution, but it should do at first. A better option would be tracking
each change separately, instead of hoping different systems overriding
the same flag will play nicely with eachother.
- a shitton of getter methods

TraitModifyMobState now has:
- `public Dictionary<string, string> Params` to specify a new prototype
to use.
- Important note: All values of `MobStateParametersPrototype` are
nullable, which is a hack to support `TraitModifyMobState`. This trait
takes one `MobStateParametersPrototype` per mobstate and applies all of
its non-null values. This way, a params prototype can be created which
will only have `pointing: true` and the trait can apply it (e.g. to
critstate, so we can spam pointing while dying like it's a game of turbo
dota)
- The above is why that wall of getters exists: They check the relevant
override struct, then the relevant prototype. If both are null, they
default to false (0f for floats.) The only exception is
OxyDamageOverlay, because it's used both for oxy damage overlay (if
null) and as a vision-limiting black void in crit..

MobStateSystem now has:
- a bunch of new "IsSomething"/"CanDoSomething" methods to check the
various flags, alongside rewritten old ones.
-
![image](https://github.com/user-attachments/assets/33a6b296-c12c-4311-9abe-90ca4288e871)
lookin ahh predicate factory

</details>
---

# TODO

done:
- [x] Make proper use of `MobStateSystem.IsIncapacitated()`.
done: some checks were changed, some left as they did what was (more or
less) intended.
<details>Previous `IsIncapacitated()` implementation simply checked if
person was in crit or dead. Now there is a `IsIncapacitated` flag in the
parameters, but it's heavily underutilized. I may need some help on this
one, since I don't know where would be a good place to check for it and
I absolutely will not just scour the entire build in search for them.
</details>

- [x] Separate force-dropping items from being downed
done: dropItemsOnEntering bool field. If true, will drop items upon
entering linked mobstate.
- [x] Don't drop items if `ForceDown` is true but `PickingUp` is also
true.
done: dropItemsOnEntering bool field. If true, will drop items upon
entering linked mobstate.
- [x] Actually check what are "conscious attempts" are used for
done: whether or not mob is conscious. Renamed the bool field
accordingly.
- [x] Look into adding a way to make people choke "slowly" in softcrit
as opposed to choking at "regular speed" in crit. Make that into a param
option? Make that into a float so the speed can be finetuned?
done: `BreathingMultiplier` float field added.
<details>
1f is regular breathing, 0.25 is "quarter-breathing". Air taken is
multiplied by `BreathingMultiplier` and suffocation damage taken (that
is dealt by RespiratorSystem, not all oxy damage) is multiplied by
`1-BreathingMultiplier`.
</details>

- [x] make sure the serializer actually does its job
done: it doesn't. Removed.
- [x] Make an option to prohibit using radio headsets while in softcrit
done: Requires Incapacitated parameter to be false to be able to use
headset radio.
- [x] Make sure it at least compiles

not done:
- [ ] probably move some other stuff to Params if it makes sense. Same
thing as with `IsIncapacitated` though: I kinda don't want to, at least
for now.

---

<details><summary><h1>No media</h1></summary>
<p>

:p

</p>
</details>

---

# Changelog

🆑
- add: Soft critical state. Crawl to safety, or to your doom - whatever
is closer.

---------

Signed-off-by: RedFoxIV <38788538+RedFoxIV@users.noreply.github.com>
Co-authored-by: VMSolidus <evilexecutive@gmail.com>

(cherry picked from commit 9a357c1774f1a783844a07b5414f504ca574d84c)
2025-02-15 00:12:50 +03:00
metalgearsloth
b502bdf35c Station AI (#30944)
* Station AI overlay

* implement

* Bunch of ports

* Fix a heap of bugs and basic scouting

* helldivers

* Shuffle interactions a bit

* navmap stuff

* Revert "navmap stuff"

This reverts commit d1f89dd4be83233e22cf5dd062b2581f3c6da062.

* AI wires implemented

* Fix examines

* Optimise the overlay significantly

* Back to old static

* BUI radial working

* lots of work

* Saving work

* thanks fork

* alright

* pc

* AI upload console

* AI upload

* stuff

* Fix copy-paste shitcode

* AI actions

* navmap work

* Fixes

* first impressions

* a

* reh

* Revert "navmap work"

This reverts commit 6f63fea6e9245e189f368f97be3e32e9b210580e.

* OD

* radar

* weh

* Fix examines

* scoop mine eyes

* fixes

* reh

* Optimise

* Final round of optimisations

* Fixes

* fixes

(cherry picked from commit d8ae58efa903749314e334278c1a47c0fddd2b16)
2025-01-14 02:01:43 +03:00
Spatison
a2557f75a6 Upstream (#129) 2024-11-21 17:49:04 +07:00
SimpleStation14
a22601c7b5 Mirror: Obsolete Logger cleanup for EntitySystems part 2 (#237)
## Mirror of PR #26159: [Obsolete `Logger` cleanup for `EntitySystem`s
part 2](https://github.com/space-wizards/space-station-14/pull/26159)
from <img src="https://avatars.githubusercontent.com/u/10567778?v=4"
alt="space-wizards" width="22"/>
[space-wizards](https://github.com/space-wizards)/[space-station-14](https://github.com/space-wizards/space-station-14)

###### `7d275a4b5e4188db424cc417c609dced3f9aca89`

PR opened by <img
src="https://avatars.githubusercontent.com/u/27449516?v=4"
width="16"/><a href="https://github.com/LordCarve"> LordCarve</a> at
2024-03-15 20:15:41 UTC

---

PR changed 14 files with 36 additions and 25 deletions.

The PR had the following labels:
- Status: Needs Review


---

<details open="true"><summary><h1>Original Body</h1></summary>

> <!-- Please read these guidelines before opening your PR:
https://docs.spacestation14.io/en/getting-started/pr-guideline -->
> <!-- The text between the arrows are comments - they will not be
visible on your PR. -->
> 
> ## About the PR
> <!-- What did you change in this PR? -->
> Part 2 of 2, continuation of #25941 
> Gets rid of the remaining obsolete `Logger` method calls from all
`EntitySystem`s and uses the expected `Log` to get at the proper
sawmill.
> 
> In particular:
> 1. Make the `ExamineSystemShared`'s `InRangeUnObstructed` non-`static`
(so finally able to use instance-based `Log` rather than `Logger`) and
inject dependency to all systems that were using it as `static`.
> 2. Adjust 4 more `EntitySystem`s to use `Log` rather than `Logger`
that were missed in the previous PR.
> 
> Tested that the game runs and the affected systems direct logs to the
correct sawmill.
> 
> ## Why / Balance
> <!-- Why was it changed? Link any discussions or issues here. Please
discuss how this would affect game balance. -->
> Using Logger directly for logging is marked obsolete. Brings some
order to logs (i.e. all `EntitySystem` logs start with a preceding
`system.`).
> 
> ## Technical details
> <!-- If this is a code change, summarize at high level how your new
code works. This makes it easier to review. -->
> I'm pretty sure `ExamineSystemShared`'s `InRangeUnObstructed` not
being `static` is the intended way since it being `static` dodges the
IoC entirely. It even has dirty hacks such as getting the occluder
system inside to make it happen. I didn't fix any of that as it's beyond
the scope of this PR, but it's another thing that needs improving.
> 
> These are the changes to the log sawmills:
> `ExamineSystemShared.cs`: BEFORE: `root` -> NEW: `system.examine`
> `AtmosphereSystem.Monstermos.cs`: BEFORE: `root` -> NEW:
`system.atmosphere`
> `TypingIndicatorSystem.cs`: BEFORE: `root` -> NEW:
`system.typing_indicator`
> `PiratesRuleSystem.cs` BEFORE: `pirates` -> NEW: `system.pirates_rule`
> `TabletopSystem.Session.cs` BEFORE: `root` -> NEW: `system.tabletop`
> 
> ## Media
> <!-- 
> PRs which make ingame changes (adding clothing, items, new features,
etc) are required to have media attached that showcase the changes.
> Small fixes/refactors are exempt.
> Any media may be used in SS14 progress reports, with clear credit
given.
> 
> If you're unsure whether your PR will require media, ask a maintainer.
> 
> Check the box below to confirm that you have in fact seen this (put an
X in the brackets, like [X]):
> -->
> 
> - [X] I have added screenshots/videos to this PR showcasing its
changes ingame, **or** this PR does not require an ingame showcase
> 
> ## Breaking changes
> <!--
> List any breaking changes, including namespace, public
class/method/field changes, prototype renames; and provide instructions
for fixing them. This will be pasted in #codebase-changes.
> -->
> Some logs now fall under a different sawmill (more precise). Any
software that analyzes logs and makes assumptions on which sawmill do
these logs fall to will need to be adjusted.


</details>

---------

Signed-off-by: VMSolidus <evilexecutive@gmail.com>
Co-authored-by: SimpleStation14 <Unknown>
Co-authored-by: VMSolidus <evilexecutive@gmail.com>
2024-05-28 21:18:15 -04:00
Pieter-Jan Briers
ccea85136b Random spontaneous cleanup PR (#25131)
* Use new Subs.CVar helper

Removes manual config OnValueChanged calls, removes need to remember to manually unsubscribe.

This both reduces boilerplate and fixes many issues where subscriptions weren't removed on entity system shutdown.

* Fix a bunch of warnings

* More warning fixes

* Use new DateTime serializer to get rid of ISerializationHooks in changelog code.

* Get rid of some more ISerializationHooks for enums

* And a little more

* Apply suggestions from code review

Co-authored-by: 0x6273 <0x40@keemail.me>

---------

Co-authored-by: 0x6273 <0x40@keemail.me>
(cherry picked from commit 68ce53ae17985876d6d112b764b2144964a9f42e)
2024-02-18 23:02:29 +01:00
Vasilis
21f849e96a Allow inspecting ID's and Health of people behind glass (#25163)
Hops will love me

(cherry picked from commit c50aee2f9fbb1e4a75a34298650a3190c44898c6)
2024-02-18 23:00:53 +01:00
Kara
03b3e36d43 Examine prediction (#23565)
* Initial prediction

* new group handling

* groups for all examines that use multiple rn

* compile

* why was it doing this??

* handle newlines with sorting properly

(cherry picked from commit 0ae3858b69b695697ea9300609460f8ddb70ebbf)
2024-01-26 21:48:02 +01:00
deathride58
6af522df55 Blindness rework - damaged eyes are now a stylized simulation of legal blindness (#23212)
* blindness rework - damaged eyes now simulate legal blindness

* hEY THATS FOR DEMONSTRATION PURPOSES ONLY AAA

* attributions

* makes eyeclosecomponent adminbus compatible

* useshader(null)

(cherry picked from commit aa6645c8e956be6abfffb58b43e67f479c45f962)
2024-01-26 21:27:55 +01:00
DrSmugleaf
9cc8a7fc81 Remove 700 usages of Component.Owner (#21100) 2023-10-20 15:31:13 +02:00
Kara
c6310c3322 Kill SharedUnoccludedExtensions (#20914) 2023-10-14 22:07:16 +02:00
metalgearsloth
98cf505f9f Remove SharedEye (but content) (#19481) 2023-09-27 21:59:12 +02:00
metalgearsloth
c9648da984 Content update for NetEntities (#18935) 2023-09-27 21:59:12 +02:00
metalgearsloth
68480af109 Update content vectors to numerics (#17759) 2023-07-08 14:08:32 +10:00
Leon Friedrich
84299cae63 Blindness refactor (#15705)
Co-authored-by: metalgearsloth <comedian_vs_clown@hotmail.com>
2023-04-29 15:32:14 +10:00
Julian Giebel
5e8e848d52 Content PR for RichText refactor (#13772)
* Fix examine system after formatted text refactor
Implement key bind markup tag

* Add font prototype definitions

* Update submodule.

---------

Co-authored-by: moonheart08 <moonheart08@users.noreply.github.com>
2023-02-15 17:10:05 -06:00
metalgearsloth
112e8e33db Bandaid InRangeUnoccluded length checks (#13568) 2023-01-20 06:19:01 -08:00
Nemanja
fd9e1f3738 machine upgrade guidebook (#13511)
* machine upgrade guidebook

* oops

* guidehelpcomponent

* build, damn you
2023-01-16 10:53:23 -06:00
Jezithyr
eeb5b17b34 Mobstate Refactor (#13389)
Refactors mobstate and moves mob health thresholds to their own component

Co-authored-by: DrSmugleaf <drsmugleaf@gmail.com>
2023-01-13 16:57:10 -08:00
Leon Friedrich
7c7c7d3206 Changes required for component tree engine PR (#13109) 2022-12-27 13:34:22 +11:00
rolfero
7259acfb18 Examine Groups (#12400)
* new version

* testy2

* working version

* new GroupExamineSystem

* restructure

* restructure again

* update icon

* adding group examine to prototypes

* change examine group title to a localized string

Co-authored-by: CommieFlowers <rasmus.cedergren@hotmail.com>
2022-12-19 20:53:36 -06:00
Leon Friedrich
efac113469 Improve stripping UI (#9768) 2022-10-16 04:00:04 +11:00
Leon Friedrich
6f4bb040e4 Misc stealth and box changes (#11809)
* git mv

* Disable shader while box is open

* Hide entity menu / prevent examine

* fix recursion fix recursion fix recursion fix recursion

* Better visibility checks

* min and max visibility fields

* fix reference point
2022-10-14 23:15:25 -05:00
Rane
572a4f7fb3 Eye damage (#10262) 2022-08-13 22:59:14 -07:00
Rane
83c03b60a1 [2 lines] fix blinding (#9690)
* Adds blinding + blindfolds (#8688)

* Adds blinding + blindfolds

* Don't break examining lol

* moment

* fix toggle lights behavior

* move checks around

* Sloth review

* Added a salvage funny

* review

* woops

* Switch circle shader

Co-authored-by: wrexbe <wrexbe@protonmail.com>

* resolve merge conflict

Co-authored-by: wrexbe <wrexbe@protonmail.com>
2022-07-14 06:58:24 -05:00
Kara
fab331742a Remove IAfterInteract (#9715)
* remove gas analyzer iafterinteract

* solution transfer + obsolete

* cuffable

* remove
2022-07-14 21:45:31 +10:00
Moony
a655891a8d Revert "Adds blinding + blindfolds (#8688)" (#9689)
This reverts commit 7a7ab5e8c1.
2022-07-13 16:50:35 -05:00
Rane
7a7ab5e8c1 Adds blinding + blindfolds (#8688)
* Adds blinding + blindfolds

* Don't break examining lol

* moment

* fix toggle lights behavior

* move checks around

* Sloth review

* Added a salvage funny

* review

* woops

* Switch circle shader

Co-authored-by: wrexbe <wrexbe@protonmail.com>
2022-07-11 22:55:04 -07:00
metalgearsloth
4a393d4665 Fix a bunch of warnings (#9528) 2022-07-09 09:07:47 +10:00
metalgearsloth
8905996cfc Make raiselocalevent not broadcast by default (#8998) 2022-06-22 09:53:41 +10:00
Leon Friedrich
ca7960382b Missing nullables (#8634) 2022-06-04 17:17:48 +10:00
metalgearsloth
6903209a31 Show ghosts popups etc through walls (#8077)
* Show ghosts popups etc through walls

* Stage moment

* crashes
2022-05-12 21:18:38 +10:00
Rane
7900abb888 Literally Murder IExamine (#7352) 2022-04-08 14:17:25 -07:00
Vera Aguilera Puerto
5447edbabf Adds overload to InRangeUnoccluded that takes in a state for the predicate. (#7325) 2022-03-31 00:28:35 +11:00
Leon Friedrich
4a00d01ced Remove ignore-inside-blocker (#6692)
Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com>
2022-02-16 19:40:03 -07:00
mirrorcult
ec4d4688c7 Seal/abstract/virtual everything (#6739) 2022-02-16 18:23:23 +11:00
mirrorcult
cd0b9a4480 Examine verbs + tooltip buttons (#6489) 2022-02-13 20:20:58 -07:00
Leon Friedrich
bd930de044 Allow a range <= 0 in InRangeUnoccluded (#6440) 2022-02-08 11:08:07 -07:00
Leon Friedrich
4614bb9877 Move static container helper functions to container system (#6382)
Co-authored-by: metalgearsloth <comedian_vs_clown@hotmail.com>
2022-01-31 18:08:53 +11:00
metalgearsloth
3e216b6e2b Fix examine deletions 2021-12-22 16:08:58 +11:00
Paul Ritter
cc57d1380c Revert Rich text (#5848) 2021-12-20 12:42:42 +01:00
E F R
b2da936848 Everything: Rich text redux (#5625)
* lord save me

* UI/ChatBox: Use the new `defStyle` param for `RenderMarkup`

The previous iteration didn't work because `AddMessage` can't inherit
its color from the PushColor (since we're not doing actual tag stacks
anymore).

* rebase touchup
2021-12-12 18:25:42 -08:00
Vera Aguilera Puerto
0a71b62305 Fix build.
I HATE STATIC I HATE STATIC I HATE STATIC
2021-12-08 13:07:24 +01:00
Vera Aguilera Puerto
c8b65be747 Replace IEntityManager resolves in systems for cached EntityManager 2021-12-08 13:00:43 +01:00
Vera Aguilera Puerto
2bfec7ec62 Some more fixes 2021-12-04 14:14:22 +01:00
Vera Aguilera Puerto
151778a1b9 More error fixes. 2021-12-04 12:47:09 +01:00