OpenXcom Forum
OpenXcom Forks => OpenXcom Extended (OXCE) => OXCE Suggestions DONE => Topic started by: Meridian on January 15, 2024, 11:02:44 am
-
Thanks for the response, Meridian. I have cleaned the list, here is the revised version:
3. RESEARCH: FALSE FOR UFOPAEDIA ARTICLES
Priority: low
Justification: Lack of this option causes confusion with some Piratez players and there's no other way of clearing it up easily (without sacrificing some gameplay).
Clarifications: It's an inversion of "requires". With this, the article only displays when you do not have a given research. It would have to be compatible with requires. For example:
* You find a Plasma Pistol. You can immediately research it regardless of any research prerequisites. It will display an article saying "we think it's an alien weapon, blah blah"
* Later you collect enough knowledge to examine the item in full, which gives you full info, and the old article disappears.
So essentially there are two different articles, which never appear at the same time.
One problem I'm not sure how to approach is writing such rulesets for items. Continuing the plasma pistol example, the "early" research/article could not be STR_PLASMA_PISTOL, because it would conflict with the later article, which would also need to be STR_PLASMA_PISTOL, else the article wouldn't work properly. But it can't be some other string, because then the needItem command wouldn't work. I don't have a good solution at the moment.
The inversion of "requires" is doable, but I don't think it's the best approach.
Also, it might have performance implications in huge mods (for reasons).
I'd rather do something similar to "disables:" in research ruleset (https://openxcom.org/forum/index.php/topic,5482.msg86298.html#msg86298), but you'll specify the names of ufopedia articles to disable (permanently).
Would that cover the requirement?
About the problem with "needitem"... it is now possible to specify a different "neededItem", so it should not be a problem anymore: https://openxcom.org/forum/index.php/topic,8653.msg160505.html#msg160505
However, the problem I see is the middle-clicking on a pistol for example... I can't see a way how the game would determine whether it should open an article called STR_PLASMA_PISTOL or some other article with unpredictable name, e.g. STR_PLASMA_PISTOL_EARLY.
Any ideas here? If not, is the "disables" feature still useful with this (big) caveat?
-
I can't see a way how the game would determine whether it should open an article called STR_PLASMA_PISTOL or some other article with unpredictable name, e.g. STR_PLASMA_PISTOL_EARLY.
Any ideas here?
Not Solarius, but - For the given example, that wouldn't be a big deal if middle-clicking wouldn't display the "We think it's an alien pistol, yup" article while still displaying the useful article with stats and stuff.
- From an implementation POV, what would be the issue with looking at 'neededitem' entries and displaying the latest article with a 'neededItem' that matches the item?
-
From an implementation POV, what would be the issue with looking at 'neededitem' entries and displaying the latest article with a 'neededItem' that matches the item?
`neededItem`is a property of a research topic, not of a ufopedia article
(or in other words, this information is not available at all for ufopedia purposes... ufopedia articles and research topics are two separate and unrelated things)
-
I wouldn't say they are unrelated... there's a rather strong connection between the two. :)
But since the correspondence can be quite complex, yeah...
I guess using first 'lookup' and then single/double-entry 'requires' fields (with allowance for ammo) is too messy and not guaranteed to work, either.
Well, one could again offload this on the modder and introduce a 'pediaPriority' field that replaces the article corresponding to the item-name research topic with a list of topics to show, picking the highest researched one. But IDK if that'd be particularly convenient to use for actual modding work, and the payoff (at least for the Plasma Pistol example) is kinda meager.
-
If everything here works as I assume it does, then we're good. I am fine with the current state of things.
If not, I'll rethink the topic.
Thank you!
-
The inversion of "requires" is doable, but I don't think it's the best approach.
Also, it might have performance implications in huge mods (for reasons).
At the end, I decided to still go for "inversion of requires" (attribute `disabledBy`) as the performance won't be much worse (than it already is).
It also has a significant advantage, that nothing is saved in the save file, so old saves can be used without any problems or migration or fiddling.
> 2. I assume the article STR_PLASMA_PISTOL_PRE can't be type 4, as type 4 is for articles with the same ID as an item (I don't care much about this either)
regarding point 2.
it's not possible now, but it is a very easy change
we can even reuse one of the existing attributes for type 3 (HWP) called `weapon` to override the item used for display
Added `weapon` attribute for ufopedia type 4 and 14.
Sample ruleset for researching plasma pistol twice:
research:
- name: STR_PLASMA_PISTOL_PRE
cost: 20
points: 10
needItem: true
neededItem: STR_PLASMA_PISTOL # needs the same item
- name: STR_PLASMA_PISTOL
cost: 30
points: 20
needItem: true
dependencies: [STR_SECTOID_SOLDIER, STR_PLASMA_PISTOL_PRE] # more dependencies
ufopaedia:
- id: STR_PLASMA_PISTOL_PRE
weapon: STR_PLASMA_PISTOL # display accuracy, TUs, image, etc. of the plasma pistol
type_id: 4
section: STR_ALIEN_ARTIFACTS
requires:
- STR_PLASMA_PISTOL_PRE # show on initial research
disabledBy:
- STR_PLASMA_PISTOL # hide on further research
text: STR_PLASMA_PISTOL_UFOPEDIA_PRE # different fluff text
extraStrings:
- type: en-US
strings:
STR_PLASMA_PISTOL_PRE: "Green Death Gun"
STR_PLASMA_PISTOL_UFOPEDIA_PRE: "We don't know much about this stuff yet. It shoots green stuff."
-
Demonstration video attached.
-
Thank you for the demo and the scripts, it's really useful