mickabouille Posted December 29, 2023 Author Share Posted December 29, 2023 I feel there's maybe something here. I'm not really able to follow the code (there's some pre-processing that breaks my mind and my ability to analyze it) but I see That on one side always.tph defines OUTER_SET SFO_unusable_string_tra_ref=100400 OUTER_SET SFO_usable_string_tra_ref=100401 Those are as you assume compatible with obg2 (no non-breaking spaces) and defined in shared.tra. @100400 = ~Non utilisable par :~ @100401 = ~Utilisable par :~ Those strings are only used in lib_itm.tpa ina patch function named "item_useability_string" themselves only used in "ITM_say_description" and "ITM_say_unidentified_description", both only called in "ITM_say_both_descriptions". But then I couldn't see "ITM_say_both_descriptions" used anywhere (but I see an similarly named "ITM_set_both_descriptions"... I could not find uses either). On the other side 3020 "seems to" call "fine_weapons" in fine_weapons.tpa, which maybe calls make_fine_weapons This calls "handle_unusable" from lib_ietools.tpa. Then this one does OUTER_SET strref=is_iwd?34753:is_bg2?74251:31522 ACTION_GET_STRREF strref unusable_string which (I may be wrong) I understand gets strref from the dialog.tlk file, not from a .tra file. In the bg2ee case, it selects 74251 which does contain the non-breaking space character (in iwdee case, 34753 is exatcly the samestring, with the nbsp). So maybe that's just a bug? That may not be apparent in english because shared.tra/@100400 and dialog.tlk/74251 are identical? Quote Link to comment
DavidW Posted December 29, 2023 Share Posted December 29, 2023 Aha! Yes, that looks right. Thank you, will address. (It's a mismatch between two versions of my function library.) Quote Link to comment
DavidW Posted December 29, 2023 Share Posted December 29, 2023 OK, the function 'handle_unusable' in stratagems/sfo2e/lib_ietool.tph is now DEFINE_DIMORPHIC_FUNCTION handle_unusable STR_VAR arguments="" RET value BEGIN ACTION_IF enhanced_edition BEGIN WITH_TRA "%sfo_tra_loc%/english/shared.tra" "%sfo_tra_loc%/%LANGUAGE%/shared.tra" BEGIN OUTER_SPRINT unusable_string @100400 OUTER_SPRINT usable_string @100401 END OUTER_PATCH_SAVE value "%arguments%" BEGIN index=INDEX_BUFFER ("%unusable_string%") PATCH_IF index>=0 BEGIN DELETE_BYTES index (BUFFER_LENGTH - index) END index=INDEX_BUFFER ("%usable_string%") PATCH_IF index>=0 BEGIN DELETE_BYTES index (BUFFER_LENGTH - index) END END END ELSE BEGIN OUTER_SPRINT value "%arguments%" END END That should now properly reference the shared.tra entries (as well as failing a bit more gracefully if there isn't a match). Try it and see if it solves the problem. (Incidentally, ITM_say_description is being used, in other components, but you won't see it with a simple file search because it's hidden by preprocessing.) Quote Link to comment
mickabouille Posted December 29, 2023 Author Share Posted December 29, 2023 1 hour ago, DavidW said: (Incidentally, ITM_say_description is being used, in other components, but you won't see it with a simple file search because it's hidden by preprocessing.) I expected as much, but not knowing how it is preprocessed limits my investigations. And is the reason of my excessive use of conditional forms and prudent phrasing. Yes I think this will probably work better, I'll try it. Quote Link to comment
mickabouille Posted December 29, 2023 Author Share Posted December 29, 2023 Yes that fixes it Quote Link to comment
Jazira Posted December 31, 2023 Share Posted December 31, 2023 (edited) On 12/29/2023 at 12:19 PM, DavidW said: Addressing the specifics (I'll comment on the more philosophical issues separately when I have a chance). I'm still a bit unsure what the problem is with descriptions, but let me describe it more explicitly (I should probably put this in a 'note to translators' too). An SCS item description consists of some text One of two unique strings, which in English are 'Usable by:' or 'Unusable by:' some more text On an EE install, SCS strips out (2) and (3). To handle this in a translation, you need to make sure that the unique strings, which occur in shared.tra at @100400 and @100401, occur exactly in the item descriptions. They can have whatever spaces, special characters, or the like they need; all that matters is that they occur in the item description exactly as they occur in shared.tra. Everything is internal to SCS's tra files; what the dialog.tlk file says is irrelevant. If there's some language-specific way this could break, I can't see what it is. Alright, that's good to know. I can tell you that 99% of translators won't know this before trying to translate it. We're too lazy to check out all the scripts, and even if we do so, we're too dumb to figure it out. Still, there is something that bothers me. Vanilla and EE formats of anything below "STATISTICS:" greatly vary. Here is an example to compare: Vanilla Quote @2140 = ~Blackrazor, Long Sword +3 This sword radiates evil like a sour odor, and the owner never knows if he wields the weapon, or if it wields him. In addition to its combat abilities, Blackrazor slowly regenerates its owner with the drained strength of opponents. STATISTICS: Equipped Ability : Regeneration: 1 hp every 5 seconds Immunity to Charm and Fear With every hit it has a 15% chance of draining 4 levels, healing the wielder by 20 hit points, and hasting him for 20 seconds as well as increasing his strength by 3 points for 20 seconds. THAC0: +3 bonus Damage: 1D8 +3 Damage type: slashing Weight: 4 Speed Factor: 2 Proficiency Type: Long Sword Type: 1-handed Requires: 6 Strength Not Usable By: Druid Cleric Mage~ EE Quote @2140 = ~This sword radiates evil like a sour odor, and the owner never knows if <PRO_HESHE> wields the weapon or if it wields <PRO_HIMHER>. In addition to its combat abilities, Blackrazor slowly regenerates its owner with the drained strength of opponents. STATISTICS: Equipped abilities: – Regenerate 1 HP every 5 seconds – Immunity to charm and fear Combat abilities: – With every hit, it has a 15% chance of draining 4 levels from the target and healing the wielder by 20 Hit Points as well as hasting <PRO_HIMHER> for 20 seconds and increasing <PRO_HISHER> Strength by 3 points for 20 seconds THAC0: +3 Damage: 1d8+3 (slashing) Speed Factor: 2 Proficiency Type: Long Sword Type: One-handed Requires: 6 Strength Weight: 4~ Usually, we translators try to uniformize the formats to be seemingly the same as what the official content is. Here, even the descriptions vary. I still think that having two entries/files for each item, EE and vanilla is the best. For all languages. But that's your choice, we will adapt nonetheless. On a side note, I'll add that I feel a bit annoyed to be held back by the "deprecated" format of vanilla items for unique entries, most players are on the EE nowadays. Real question, what makes you choose this way (strips out (2) and (3)) instead of having 2 entries/files? Edited December 31, 2023 by Jazira Quote Link to comment
Jazira Posted December 31, 2023 Share Posted December 31, 2023 (edited) On 12/29/2023 at 12:32 PM, DavidW said: On the general issue Jazira raises: I certainly appreciate that swapping out descriptions can cause language problems (especially in languages that have multiple dialog.tlk files). There may be places where this can be avoided, and I'll try to keep a lookout for them. In general, though, SCS (and, even more so, ToF) does this sort of thing because it's needed for compatibility. The example Jazira gives above (where a string is matched to the bard kit description) is an example of this: it needs to patch *all* bard descriptions, including potentially descriptions added by third-party mods, to add 'cannot use additional bard songs' to the disadvantages list of the kit. Thanks, that's greatly appreciated. Try to avoid it as much as you can, because remember, we're dumb and lazy. But when there is no choice but to do it, fine, it's understandable. We'll call the lesser dumb and lazy to help us out. Edited December 31, 2023 by Jazira Quote Link to comment
DavidW Posted December 31, 2023 Share Posted December 31, 2023 41 minutes ago, Jazira said: I still think that having two entries/files for each item, EE and vanilla is the best. For all languages. But that's your choice, we will adapt nonetheless. On a side note, I'll add that I feel a bit annoyed to be held back by the "deprecated" format of vanilla items for unique entries, most players are on the EE nowadays. Real question, what makes you choose this way (strips out (2) and (3)) instead of having 2 entries/files? If I'm honest, it's largely laziness, with a small admixture of 'less chance of description/file mismatches'. However, the point about the EE and vanilla description formats being different is persuasive (to be honest I hadn't noticed it). I'll give some thought to moving to separate descriptions given that. Quote Link to comment
Jazira Posted December 31, 2023 Share Posted December 31, 2023 (edited) If you want, I can help you out with some inactives pre-digested entries for every item, I'm doing some English proofreading alongside the French translation at the moment anyway. You could cherry-pick anything you want from it. Edited December 31, 2023 by Jazira Quote Link to comment
Jazira Posted January 2 Share Posted January 2 (edited) Alright, so... Before: Quote @3016 = ~Yellow Dragon Scale Armor~ @3017 = ~Yellow Dragon Scale Armor This suit of armor is formed from interlocking Yellow Dragon scales. Yellow Dragons are known for their fiery sand attacks and resistance to piercing weapons. This particular suit was forged from the scales of the yellow dragon Anadramatis. STATISTICS: Bonuses: +50% Resistance to Piercing and Missile Attacks Armor Class: -1 Weight: 30 Requires: 6 Strength Not Usable By: Mage~ After: Quote @3016 = ~Yellow Dragon Scale Armor~ //@3016 vanilla format @3017 = ~Yellow Dragon Scale Armor This suit of armor is formed from interlocking Yellow Dragon scales. Yellow Dragons are known for their fiery sand attacks and resistance to piercing weapons. This particular suit was forged from the scales of the yellow dragon Anadramatis. STATISTICS: Bonuses: +50% Resistance to piercing and missile attacks Armor Class: -1 Weight: 10 Requires: 6 Strength Not Usable By: Mage Monk Shapeshifter Kensai~ /* //@3016 EE format @? = ~This suit of armor is formed from interlocking Yellow Dragon scales. Yellow Dragons are known for their fiery sand attacks and resistance to piercing weapons. This particular suit was forged from the scales of the yellow dragon Anadramatis. STATISTICS: Equipped abilities: – Resistance to Missile Damage: +50% – Resistance to Piercing Damage: +50% Armor Class: -1 (2 vs. slashing, 1 vs. piercing and missile) Requires: 6 Strength Weight: 10~ */ Is it ok for you? Edited January 2 by Jazira Quote Link to comment
Jazira Posted January 5 Share Posted January 5 (edited) Hello again, David. Things are advancing at a good pace, but I have a few uncertainties that I'd like to clear up. The Rod of Resurrection, item.tra, everything is ok? Are the added details correct? The range parts, for example. I've been unable to test ingame. Quote //Rod of Resurrection EE format (39620 bg2ee) @? = ~This rod enables anyone to resurrect the dead and heal the injured as if they were of high enough level to cast the Raise Dead and Heal spells and as if they were a priest. No rest is required, as the rod bestows the life giving effects. Each use of the rod expends one charge. STATISTICS: Charge abilities: – Raise Dead once per day Special: Target is raised with 1 HP Range: Visual range of the caster Area of Effect: 1 creature – Heal once per day Special: Fully restores the target's HP, cures all diseases, deafness, blindness, feeblemind and neutralizes poisons and intoxication Range: Touch Area of Effect: 1 creature Weight: 3~ Next are the dagger "Nome Stikka" and the arrow "Deth Stik", kobold.tra. Are the details correct, especially the poison and save parts? I've been unable to test ingame. (https://www.gibberlings3.net/forums/topic/37575-kobold-items-dont-seem-to-apply-any-poison-effect/) Quote //@21305 vanilla format @21307 = ~Dagger "Nome Stikka" Though kobolds do not normally wield poison daggers, it is evident that they have been given the means to make these. The crudeness of the construction of this weapon, however, does not lessen its deadliness - in fact, it can be just as deadly to the wielder as it is to the victim! STATISTICS: Combat Abilities: Hit target suffers 6 poison damage (5% chance that user will poison himself, save vs. poison to avoid) Damage: 1D4 Damage Type: piercing Weight: 1 Speed Factor: 2 Proficiency Type: Dagger Type: 1-handed Requires: 3 Strength Not Usable By: Cleric Beast Master~ Quote //@21308 vanilla format @21309 = ~Arrow "Deth Stik" This arrow is not of exceptional quality and is, in fact, rather crudely made. However, it has been soaked in a deadly toxin which makes it especially dangerous to wielder and target alike. STATISTICS: Combat Abilities: Hit target suffers 12 poison damage over 6 seconds (5% chance that user will poison himself, save vs. poison to avoid) Damage: 1D6 Damage Type: missile (piercing) Weight: 0 Launcher: Bow Not usable by: Cleric Druid Mage Sorcerer Monk Kensai Cavalier~ Lastly, I haven't edited yet "Stone Fist" or "Pebble" inside extra_arcane_spells.tra. Could you provide me some details about the fix and the actual statistics of the items, please? (https://www.gibberlings3.net/forums/topic/37498-stonefist-description-looks-wrong/) I still have a few items to edit, but they will be done soon. Do you wish me to provide the English proofread (with the item format revision) as soon as possible? So, if you want, you can implement them rapidly or is this not an urgent matter? I imagine this is a stressful period for you, I hope I'm not overstepping. Edited January 5 by Jazira wording Quote Link to comment
Recommended Posts
Join the conversation
You are posting as a guest. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.