Bay 12 Games Forum

Please login or register.

Login with username, password and session length
Advanced search  

Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Messages - Clément

Pages: 1 ... 5 6 [7] 8 9 ... 50
91
Right now, you may help with df-structures. When df-structures has stabilized, I'll need to check and fix the last remaining reading error. There will also need to find a new way to get the unit list for the embark screen (world.units.all seems to work but it was broken in the past, I don't trust it too much). The first goal will be to have a release without labor support but all the stats working.

Then adding work details support will require more work. The biggest change is that assigning dwarves to work details will require resizing vectors which DT is currently unable to do. I'm thinking about either extending the function call injection technique currently used for writing strings on Linux to call new/delete for resizing vectors or relying on a DFHack plugin for doing all the modifications. Using DFHack would be simpler to program, but it would make Dwarf Therapist more complex to distribute because of the strong dependency on a DFHack plugin, so I'm unsure what is the best. DFHack may be the only way for me to support macOS.

92
Here is the memory layout for 0.50.04.

93
If you cannot wait, you may try this memory layout (save in data/memory_layouts/windows) and this game_data.ini (save in data directory). Some data may be correct (skills, attributes, personality facets, ...) but don't trust too much in it. Also existing gridviews may be incorrect (e.g. skill not matching the column title).

94
You won't find where the names are stored like that because they are not stored as a single string. It is split between first name, nickname and references to words from the dictionary for the surname. It's described there: https://github.com/DFHack/df-structures/blob/master/df.language.xml#L222-L236.

95
A large part of the internal structures is already known. You don't need to start from scratch. You should check df-structures and its documentation.

If you want to write scripts for manipulating DF memory, DFHack (forum thread) is the perfect tool. Although I'm not sure how easy it is to build it right now for 0.50 (but certainly easier than starting from scratch on your own).

96
I don't know how you made it, but your memory layout is obviously wrong, most of the vectors have the same address. Here is one that partially works.

97
It is easier to not support work details than to support them. There will likely be at some point a version without work details support and labor changes disabled.

And figuring out how to write thing is difficult in DT, while finding where the stuff is is mostly done by other people (easier for me, but not for them).

98
  • Turning my beginning fisherdwarf into a second miner at embark.
  • Making sure that I only had one active woodcutter (I’m trying to remember why; I think it might’ve been to mitigate some kind of bug…).
Those are easy to do with the in-game interface. The first has always been easy because you have few dwarves at embark. The second has been improved with the new interface: "labors" → "woodcutters", the current woodcutters if any are at the top of the list.

  • Determining who should become nobles.
  • Determining who should be in the military.
Looking at dwarves details is still annoying. Maybe even more than before, the unit keep closing when I open a unit information window.

  • Marking animals to be butchered (would probably use it to mark them for gelding too, but I’ve never actually tried gelding yet).
I did not look at animal management yet. I don't think it has changed much.

For some reason there is only a limited amount of work details in DF. I think I read that there are only eight of them.
You can add custom ones, but their icons are roman numeral that don't help you remember what you put in them.

You said " I expect the game to update the labors based on work details at some point and overwriting all your decisions made in DT." Do you think that may happen even if one avoids the work details screen like the plague?
I'll try that when I'll try updating DT. Right now, I can only say that labors are updated whenever you toggle something in the labor screen, no need to close it.



I've looked in more details on how labors and work details are related. Here is what I know.

Most built-in work details have exactly one labor, except for Haulers (all labors from the Hauling category) and Orderlies (Suturing, Dressing Wounds, Feed Patients, Recovering Wounded).

Tool-requiring labors (Mining, Woodcutting, Hunting) are not available for custom work details. Built-in Miners, Woodcutters, Hunters work details are not exclusive (the labors used to, is this a bug?). A dwarf with several of them enabled will only pick up one of the tool and won't be able to perform the other tasks.

Enabled labors for a given dwarf are:
  • All labors from assigned work details that are not disabled ("Nobody does this")
  • If not a specialist, all labors from work details set to "Everybody does this"
  • If not a specialist, all labors that are not part of any work details
That last point means that creating new work details will disable labors from non-specialist.

99
The labor array is still there in the game internal structures. But it may not be a good idea to edit it directly, as I expect the game to update the labors based on work details at some point and overwriting all your decisions made in DT. So I think DT will have to manage work details instead of labors.

From what I understand, you should be able to reimplement the old system with work details. Create one work detail for each labor and either set all dwarves as specialist or every work detail as "Only selected do this". Then use the work details as you would have the labors before.

Also, Toady may say he doesn't like spreadsheet but he wasn't far from creating one.

100
1. The new skills system is just a thin layer over the old one. So the old skills system still exists underneath.

Skills and labors are different things. I don't expect skills to have changed much. But labors may have, or at least the way they are managed by the game or by the players.

So whoever is doing dwarf therapist, please get it done it is more needed than ever. That new $30 game that hundreds of thousands of people are buying right now is downright unplayable at advanced level without it. If I do not get dwarf therapist soon, I will be looking to get my money back.
That would be me, except if someone else comes out of nowhere and beats me to it (it's free software anyone can work on it). And I don't think you will get a working Dwarf Therapist any time soon, at least definitely not in the kind of delay that would allow a refund.

101
You tell me. As I said above, I did not get the new version yet. So I don't know.

From what I read in a few previews and discussions, there is a new system grouping labors together similar to DT's current super labors/custom professions. Although there may be some technical difficulties interacting with it, I don't think it makes it impossible for Dwarf Therapist to work with this new system.

102
I did not even buy the game yet. But Quietust has already updated df-structures. Here is a memory layout for 0.50.01. I have no idea if it works at all. Expect crashes and data corruption.

Code: [Select]
[info]
checksum=0x638d2f18
version_name=v0.50.01 SDL win64
complete=true

[addresses]
cur_year_tick=0x141b588a0
current_year=0x141b588a8
dwarf_civ_index=0x141d9b418
dwarf_race_index=0x141d9b424
fortress_entity=0x141da1be0
historical_entities_vector=0x141de2ea8
creature_vector=0x141df6760
active_creature_vector=0x141df6778
weapons_vector=0x141df6b40
shields_vector=0x141df6bd0
quivers_vector=0x141df6c18
crutches_vector=0x141df6c60
backpacks_vector=0x141df6c78
ammo_vector=0x141df6c90
flasks_vector=0x141df6f48
pants_vector=0x141df7668
armor_vector=0x141df76c8
shoes_vector=0x141df76e0
helms_vector=0x141df76f8
gloves_vector=0x141df7710
artifacts_vector=0x141df77b8
squad_vector=0x141ef4df8
activities_vector=0x141ef4e58
fake_identities_vector=0x141ef92a8
poetic_forms_vector=0x141ef9470
musical_forms_vector=0x141ef94a0
dance_forms_vector=0x141ef94d0
occupations_vector=0x141ef9560
world_data=0x141efd100
material_templates_vector=0x141efde30
inorganics_vector=0x141efde48
plants_vector=0x141efde78
races_vector=0x141efdfe8
itemdef_weapons_vector=0x141efe068
itemdef_trap_vector=0x141efe080
itemdef_toy_vector=0x141efe098
itemdef_tool_vector=0x141efe0b0
itemdef_instrument_vector=0x141efe338
itemdef_armor_vector=0x141efe350
itemdef_ammo_vector=0x141efe368
itemdef_siegeammo_vector=0x141efe380
itemdef_glove_vector=0x141efe398
itemdef_shoe_vector=0x141efe3b0
itemdef_shield_vector=0x141efe3c8
itemdef_helm_vector=0x141efe3e0
itemdef_pant_vector=0x141efe3f8
itemdef_food_vector=0x141efe410
language_vector=0x141efec30
translation_vector=0x141efec60
colors_vector=0x141f08578
shapes_vector=0x141f08590
reactions_vector=0x141f086f8
base_materials=0x141f09598
all_syndromes_vector=0x141f0ab38
events_vector=0x141f0b1d8
historical_figures_vector=0x141f0b238
world_site_type=0x0080
active_sites_vector=0x00048390
gview=0x1412a3910
viewscreen_setupdwarfgame_vtable=0x1411b1d60

[offsets]
word_table=0x0050

[word_offsets]
base=0x0000
noun_singular=0x0020
noun_plural=0x0040
adjective=0x0060
verb=0x00a0
present_simple_verb=0x00c0
past_simple_verb=0x00e0
past_participle_verb=0x0100
present_participle_verb=0x0120
first_name=0x0000
nickname=0x0020
words=0x0040
word_type=0x005c
language_id=0x006c

[general_ref_offsets]
ref_type=0x0010
artifact_id=0x0008
item_id=0x0008

[race_offsets]
name_singular=0x0020
name_plural=0x0040
adjective=0x0060
baby_name_singular=0x0080
baby_name_plural=0x00a0
child_name_singular=0x00c0
child_name_plural=0x00e0
pref_string_vector=0x0148
castes_vector=0x0178
pop_ratio_vector=0x0190
materials_vector=0x24b0
flags=0x01a8
tissues_vector=0x24c8

[caste_offsets]
caste_name=0x0020
caste_descr=0x0220
caste_trait_ranges=0x057c
caste_phys_att_ranges=0x11f0
baby_age=0x04c0
child_age=0x04c4
adult_size=0x04d8
flags=0x06a8
body_info=0x06c0
skill_rates=0x08c0
caste_att_rates=0x1404
caste_att_caps=0x1534
shearable_tissues_vector=0x16c0
extracts=0x39c0

[hist_entity_offsets]
histfigs=0x00e0
beliefs=0x0d10
squads=0x11b8
positions=0x10b0
assignments=0x1100
assign_hist_id=0x0004
assign_position_id=0x000c
position_id=0x0020
position_name=0x0098
position_female_name=0x00d8
position_male_name=0x0118

[hist_figure_offsets]
hist_race=0x0002
hist_name=0x0038
id=0x00e0
hist_fig_info=0x0130
reputation=0x0058
current_ident=0x0030
fake_name=0x0008
fake_birth_year=0x0094
fake_birth_time=0x0098
kills=0x0030
killed_race_vector=0x0018
killed_undead_vector=0x0090
killed_counts_vector=0x00a8

[hist_event_offsets]
event_year=0x0008
id=0x0020
killed_hist_id=0x0028

[item_offsets]
item_def=0x00e0
id=0x001c
general_refs=0x0038
stack_size=0x0078
wear=0x009c
mat_type=0x00b0
mat_index=0x00b4
maker_race=0x00b8
quality=0x00ba
artifact_id=0x0000
artifact_name=0x0008

[item_subtype_offsets]
sub_type=0x0028
base_flags=0x0030
name=0x0060
name_plural=0x0080
adjective=0x00a0
tool_flags=0x00a0
tool_adjective=0x00d0

[item_filter_offsets]
item_subtype=0x0002
mat_class=0x0004
mat_type=0x0006
mat_index=0x0008

[weapon_subtype_offsets]
single_size=0x00f0
multi_size=0x00f4
ammo=0x00d0
melee_skill=0x00c8
ranged_skill=0x00ca

[armor_subtype_offsets]
layer=0x0010
mat_name=0x00c0
other_armor_level=0x00c4
armor_adjective=0x00e0
armor_level=0x0104
chest_armor_properties=0x0110
pants_armor_properties=0x0120
other_armor_properties=0x00e0

[material_offsets]
solid_name=0x00b8
liquid_name=0x00d8
gas_name=0x00f8
powder_name=0x0118
paste_name=0x0138
pressed_name=0x0158
flags=0x0290
reaction_class=0x04a8
prefix=0x0548
inorganic_materials_vector=0x01a8
inorganic_flags=0x0038

[plant_offsets]
name=0x0050
name_plural=0x0070
name_leaf_plural=0x0110
name_seed_plural=0x00d0
materials_vector=0x0298
flags=0x0040

[descriptor_offsets]
color_name=0x0050
shape_name_plural=0x0070

[health_offsets]
parent_id=0x0040
body_part_flags=0x0048
layers_vector=0x0058
number=0x0084
names_vector=0x0090
names_plural_vector=0x00a8
layer_tissue=0x0020
layer_global_id=0x0068
tissue_name=0x0030
tissue_flags=0x0020

[dwarf_offsets]
name=0x0008
custom_profession=0x0080
profession=0x00a0
race=0x00a4
flags1=0x0110
flags2=0x0114
flags3=0x0118
meeting=0x0120
caste=0x012c
sex=0x012e
id=0x0130
animal_type=0x0138
civ=0x0140
specific_refs=0x01a8
squad_id=0x01d8
squad_position=0x01dc
recheck_equipment=0x0268
mood=0x0348
birth_year=0x0374
birth_time=0x0378
pet_owner_id=0x03a4
current_job=0x04b8
physical_attrs=0x05e4
body_size=0x06c8
size_info=0x068c
size_base=0x0690
curse=0x0820
curse_add_flags1=0x080c
turn_count=0x0920
souls=0x0a60
states=0x0988
labors=0x0a98
hist_id=0x0c10
artifact_name=0x09e8
active_syndrome_vector=0x0c80
syn_sick_flag=0x004c
unit_health_info=0x0d28
temp_mood=0x07f8
counters1=0x07e0
counters2=0x07fc
counters3=0x0958
limb_counters=0x0c18
blood=0x06a4
body_component_info=0x04d0
layer_status_vector=0x0048
wounds_vector=0x0590
mood_skill=0x04c0
used_items_vector=0x0d30
affection_level=0x000c
inventory=0x03f8
inventory_item_mode=0x0008
inventory_item_bodypart=0x000a

[syndrome_offsets]
cie_effects=0x0020
cie_end=0x0018
cie_first_perc=0x0098
cie_phys=0x00b0
cie_ment=0x00cc
syn_classes_vector=0x00c8
trans_race_vec=0x00e0

[unit_wound_offsets]
parts=0x0008
id=0x0004
layer=0x0006
general_flags=0x002c
flags1=0x0064
flags2=0x0068
effects_vector=0x0048
bleeding=0x006c
pain=0x0070
cur_pen=0x0098
max_pen=0x009a

[soul_details]
name=0x0008
orientation=0x0088
mental_attrs=0x00ac
skills=0x0218
preferences=0x0230
personality=0x0248
beliefs=0x0000
emotions=0x0030
goals=0x0048
goal_realized=0x0028
traits=0x0080
stress_level=0x0120
needs=0x0138
current_focus=0x0180
undistracted_focus=0x0184
combat_hardened=0x0130
likes_outdoors=0x012c

[need_offsets]
id=0x0000
deity_id=0x0004
focus_level=0x0008
need_level=0x000c

[emotion_offsets]
emotion_type=0x0000
strength=0x0008
thought_id=0x000c
sub_id=0x0010
level=0x0014
year=0x0020
year_tick=0x0024

[job_details]
id=0x0014
mat_type=0x0030
mat_index=0x0034
mat_category=0x0048
sub_job_id=0x0050
reaction=0x0020
reaction_skill=0x0080

[squad_offsets]
id=0x0000
name=0x0008
alias=0x0080
members=0x00a0
orders=0x00b8
schedules=0x00d0
sched_size=0x0058
sched_orders=0x0028
sched_assign=0x0040
alert=0x00e8
carry_food=0x01b8
carry_water=0x01ba
ammunition=0x0140
ammunition_qty=0x000c
quiver=0x0168
backpack=0x016c
flask=0x0170
armor_vector=0x0080
helm_vector=0x0098
pants_vector=0x00b0
gloves_vector=0x00c8
shoes_vector=0x00e0
shield_vector=0x00f8
weapon_vector=0x0110
uniform_item_filter=0x0004
uniform_indiv_choice=0x0030

[activity_offsets]
activity_type=0x0004
events=0x0008
participants=0x0048
sq_lead=0x00b4
sq_skill=0x00bc
sq_train_rounds=0x00c8
pray_deity=0x00b0
pray_sphere=0x00b4
knowledge_category=0x00c0
knowledge_flag=0x00c4
perf_type=0x00b0
perf_participants=0x00e0
perf_histfig=0x000c

[art_offsets]
name=0x0008

[viewscreen_offsets]
view=0x0008
child=0x0008
setupdwarfgame_units=0x0e90

[valid_flags_2]
size=0

[invalid_flags_1]
size=9
1\name="a skeleton"
1\value=0x00002000
2\name="a merchant"
2\value=0x00000040
3\name="outpost liaison, diplomat, or artifact requesting visitor"
3\value=0x00000800
4\name="an invader or hostile"
4\value=0x00020000
5\name="an invader or hostile"
5\value=0x00080000
6\name="resident, invader or ambusher"
6\value=0x00600000
7\name="part of a merchant caravan"
7\value=0x00000080
8\name="inactive, currently not in play"
8\value=0x00000002
9\name="marauder"
9\value=0x00000010

[invalid_flags_2]
size=5
1\name="killed, Jim."
1\value=0x00000080
2\name="from the Underworld. SPOOKY!"
2\value=0x00040000
3\name="resident"
3\value=0x00080000
4\name="uninvited visitor"
4\value=0x00400000
5\name="visitor"
5\value=0x00800000

[invalid_flags_3]
size=1
1\name="a ghost"
1\value=0x00001000

103
Does the tool-tip over the labor cell tell you the reason?

m_can_set_labors is set in this function.

m_is_animal is set here (TRAINABLE is fake caste flag implied by PET_EXOTIC and others). On this line I'm not sure if CAN_LEARN is the right flag, maybe it should be CAN_SPEAK. Would that make a difference in your case?

Citizenship is set for non-animal if they are part of the fortress entity historical figure list ("historical_entity.histfig_ids" in dfhack).

104
New version released: 41.2.4

Not much happening. Just one bug fix. Also updated Qt to 5.15.2 for Windows and Linux AppImage, it may fix other qt related issues.

Changelog:
  • fixed fake identities for new migrants

105
New version released: 41.2.3

Changelog:
  • fixed attribute values when changed by a syndrome
  • fixed professions that should not be assignable to squad (e.g. merchants)
  • fixed downloading memory layout when the destination directory did not exist
  • fixed updater reporting a supported version after failing to create the memory layout

@amade, this version should fix your issue.

Edit: sorry, my new github actions failed and there is no package being uploaded to the release page.
Edit2: I triggered a manual workflow and it is generating packages now. I hope they're working.

Pages: 1 ... 5 6 [7] 8 9 ... 50