From d09f8553a097a1de05a0d5e4a5b4b36b0fd24714 Mon Sep 17 00:00:00 2001 From: ElsaTheHobo Date: Mon, 6 Feb 2023 13:34:31 -0500 Subject: [PATCH] Delete makeown.lua --- library/lua/makeown.lua | 302 ---------------------------------------- 1 file changed, 302 deletions(-) delete mode 100644 library/lua/makeown.lua diff --git a/library/lua/makeown.lua b/library/lua/makeown.lua deleted file mode 100644 index 3d646b5fc..000000000 --- a/library/lua/makeown.lua +++ /dev/null @@ -1,302 +0,0 @@ -local _ENV = mkmodule('makeown') ---[[ - 'tweak makeown' as a lua include - make_own(unit) -- removes foreign flags, sets civ_id to fort civ_id, and sets clothes ownership - make_citizen(unit) -- called by make_own if unit.race == fort race - - eventually ought to migrate to hack/lua/plugins/tweak.lua - and local _ENV = mkmodule('plugin.tweak') - in order to link to functions in the compiled plugin (when/if they become available to lua) ---]] -local utils = require 'utils' - - -local function fix_clothing_ownership(unit) - -- extracted/translated from tweak makeown plugin - -- to be called by tweak-fixmigrant/makeown - -- units forced into the fort by removing the flags do not own their clothes - -- which has the result that they drop all their clothes and become unhappy because they are naked - -- so we need to make them own their clothes and add them to their uniform - local fixcount = 0 --int fixcount = 0; - for j=0,#unit.inventory-1 do --for(size_t j=0; jinventory.size(); j++) - local inv_item = unit.inventory[j] --unidf::unit_inventory_item* inv_item = unit->inventory[j]; - local item = inv_item.item --df::item* item = inv_item->item; - -- unforbid items (for the case of kidnapping caravan escorts who have their stuff forbidden by default) - -- moved forbid false to inside if so that armor/weapons stay equiped - if inv_item.mode == df.unit_inventory_item.T_mode.Worn then --if(inv_item->mode == df::unit_inventory_item::T_mode::Worn) - -- ignore armor? - -- it could be leather boots, for example, in which case it would not be nice to forbid ownership - --if(item->getEffectiveArmorLevel() != 0) - -- continue; - - if not dfhack.items.getOwner(item) then --if(!Items::getOwner(item)) - if dfhack.items.setOwner(item,unit) then --if(Items::setOwner(item, unit)) - item.flags.forbid = false --inv_item->item->flags.bits.forbid = 0; - -- add to uniform, so they know they should wear their clothes - unit.military.uniforms[0]:insert('#',item.id) --insert_into_vector(unit->military.uniforms[0], item->id); - fixcount = fixcount + 1 --fixcount++; - else - ----out << "could not change ownership for item!" << endl; - print("Makeown: could not change ownership for an item!") - end - end - end - end - -- clear uniform_drop (without this they would drop their clothes and pick them up some time later) - -- dirty? - unit.military.uniform_drop:resize(0) --unit->military.uniform_drop.clear(); - ----out << "ownership for " << fixcount << " clothes fixed" << endl; - print("Makeown: claimed ownership for "..tostring(fixcount).." worn items") - --return true --return CR_OK; -end - -local function entity_link(hf, eid, do_event, add, replace_idx) - do_event = (do_event == nil) and true or do_event - add = (add == nil) and true or add - replace_idx = replace_idx or -1 - - local link = add and df.histfig_entity_link_memberst:new() or df.histfig_entity_link_former_memberst:new() - link.entity_id = eid - if replace_idx > -1 then - local e = hf.entity_links[replace_idx] - link.link_strength = (e.link_strength > 3) and (e.link_strength - 2) or e.link_strength - hf.entity_links[replace_idx] = link -- replace member link with former member link - e:delete() - else - link.link_strength = 100 - hf.entity_links:insert('#', link) - end - if do_event then - event = add and df.history_event_add_hf_entity_linkst:new() or df.history_event_remove_hf_entity_linkst:new() - event.year = df.global.cur_year - event.seconds = df.global.cur_year_tick - event.civ = eid - event.histfig = hf.id - event.link_type = 0 - event.position_id = -1 - event.id = df.global.hist_event_next_id - df.global.world.history.events:insert('#',event) - df.global.hist_event_next_id = df.global.hist_event_next_id + 1 - end -end - -local function change_state(hf, site_id, pos) - hf.info.unk_14.unk_0 = 3 -- state? arrived? - hf.info.unk_14.region:assign(pos) - hf.info.unk_14.site = site_id - event = df.history_event_change_hf_statest:new() - event.year = df.global.cur_year - event.seconds = df.global.cur_year_tick - event.hfid = hf.id - event.state = 3 - event.site = site_id - event.region_pos:assign(pos) - event.substate = -1; event.region = -1; event.layer = -1; - event.id = df.global.hist_event_next_id - df.global.world.history.events:insert('#',event) - df.global.hist_event_next_id = df.global.hist_event_next_id + 1 -end - - -function make_citizen(unit) - local dfg = df.global - local civ_id = dfg.ui.civ_id - local group_id = dfg.ui.group_id - local events = dfg.world.history.events - local fortent = dfg.ui.main.fortress_entity - local civent = fortent and df.historical_entity.find(fortent.entity_links[0].target) - -- utils.binsearch(dfg.world.entities.all, fortent.entity_links[0].target, 'id') - local event - local region_pos = df.world_site.find(dfg.ui.site_id).pos -- used with state events and hf state - - local hf - -- assume that hf id 1 and hf id 2 are equal. I am unaware of instances of when they are not. - -- occationally a unit does not have both flags set (missing flags1.important_historical_figure) - -- and I don't know what that means yet. - if unit.flags1.important_historical_figure and unit.flags2.important_historical_figure then - -- aready hf, find it (unlikely to happen) - hf = utils.binsearch(dfg.world.history.figures, unit.hist_figure_id, 'id') - --elseif unit.flags1.important_historical_figure or unit.flags2.important_historical_figure then - -- something wrong, try to fix it? - --[[ - if unit.hist_figure_id == -1 then - unit.hist_figure_id = unit.hist_figure_id2 - end - if unit.hist_figure_id > -1 then - unit.hist_figure_id2 = unit.hist_figure_id - unit.flags1.important_historical_figure = true - unit.flags2.important_historical_figure = true - hf = utils.binsearch(dfg.world.history.figures, unit.hist_figure_id, 'id') - else - unit.flags1.important_historical_figure = false - unit.flags2.important_historical_figure = false - end - --]] - --else - -- make one - end - --local new_hf = false - if not hf then - --new_hf = true - hf = df.historical_figure:new() - hf.profession = unit.profession - hf.race = unit.race - hf.caste = unit.caste - hf.sex = unit.sex - hf.appeared_year = dfg.cur_year - hf.born_year = unit.birth_year - hf.born_seconds = unit.birth_time - hf.curse_year = unit.curse_year - hf.curse_seconds = unit.curse_time - hf.birth_year_bias=unit.bias_birth_bias - hf.birth_time_bias=unit.birth_time_bias - hf.old_year = unit.old_year - hf.old_seconds = unit.old_time - hf.died_year = -1 - hf.died_seconds = -1 - hf.name:assign(unit.name) - hf.civ_id = unit.civ_id - hf.population_id = unit.population_id - hf.breed_id = -1 - hf.unit_id = unit.id - hf.id = dfg.hist_figure_next_id -- id must be set before adding links (for the events) - - --history_event_add_hf_entity_linkst not reported for civ on starting 7 - entity_link(hf, civ_id, false) -- so lets skip event here - entity_link(hf, group_id) - - hf.info = df.historical_figure_info:new() - hf.info.unk_14 = df.historical_figure_info.T_unk_14:new() -- hf state? - --unk_14.region_id = -1; unk_14.beast_id = -1; unk_14.unk_14 = 0 - hf.info.unk_14.unk_18 = -1; hf.info.unk_14.unk_1c = -1 - -- set values that seem related to state and do event - change_state(hf, dfg.ui.site_id, region_pos) - - - --lets skip skills for now - --local skills = df.historical_figure_info.T_skills:new() -- skills snap shot - -- ... - --info.skills = skills - - dfg.world.history.figures:insert('#', hf) - dfg.hist_figure_next_id = dfg.hist_figure_next_id + 1 - - --new_hf_loc = df.global.world.history.figures[#df.global.world.history.figures - 1] - fortent.histfig_ids:insert('#', hf.id) - fortent.hist_figures:insert('#', hf) - civent.histfig_ids:insert('#', hf.id) - civent.hist_figures:insert('#', hf) - - unit.flags1.important_historical_figure = true - unit.flags2.important_historical_figure = true - unit.hist_figure_id = hf.id - unit.hist_figure_id2 = hf.id - print("Makeown-citizen: created historical figure") - else - -- only insert into civ/fort if not already there - -- Migrants change previous histfig_entity_link_memberst to histfig_entity_link_former_memberst - -- for group entities, add link_member for new group, and reports events for remove from group, - -- remove from civ, change state, add civ, and add group - - hf.civ_id = civ_id -- ensure current civ_id - - local found_civlink = false - local found_fortlink = false - local v = hf.entity_links - for k=#v-1,0,-1 do - if df.histfig_entity_link_memberst:is_instance(v[k]) then - entity_link(hf, v[k].entity_id, true, false, k) - end - end - - if hf.info and hf.info.unk_14 then - change_state(hf, dfg.ui.site_id, region_pos) - -- leave info nil if not found for now - end - - if not found_civlink then entity_link(hf,civ_id) end - if not found_fortlink then entity_link(hf,group_id) end - - --change entity_links - local found = false - for _,v in ipairs(civent.histfig_ids) do - if v == hf.id then found = true; break end - end - if not found then - civent.histfig_ids:insert('#', hf.id) - civent.hist_figures:insert('#', hf) - end - found = false - for _,v in ipairs(fortent.histfig_ids) do - if v == hf.id then found = true; break end - end - if not found then - fortent.histfig_ids:insert('#', hf.id) - fortent.hist_figures:insert('#', hf) - end - print("Makeown-citizen: migrated historical figure") - end -- hf - - local nemesis = dfhack.units.getNemesis(unit) - if not nemesis then - nemesis = df.nemesis_record:new() - nemesis.figure = hf - nemesis.unit = unit - nemesis.unit_id = unit.id - nemesis.save_file_id = civent.save_file_id - nemesis.unk10, nemesis.unk11, nemesis.unk12 = -1, -1, -1 - --group_leader_id = -1 - nemesis.id = dfg.nemesis_next_id - nemesis.member_idx = civent.next_member_idx - civent.next_member_idx = civent.next_member_idx + 1 - - dfg.world.nemesis.all:insert('#', nemesis) - dfg.nemesis_next_id = dfg.nemesis_next_id + 1 - - nemesis_link = df.general_ref_is_nemesisst:new() - nemesis_link.nemesis_id = nemesis.id - unit.general_refs:insert('#', nemesis_link) - - --new_nemesis_loc = df.global.world.nemesis.all[#df.global.world.nemesis.all - 1] - fortent.nemesis_ids:insert('#', nemesis.id) - fortent.nemesis:insert('#', nemesis) - civent.nemesis_ids:insert('#', nemesis.id) - civent.nemesis:insert('#', nemesis) - print("Makeown-citizen: created nemesis entry") - else-- only insert into civ/fort if not already there - local found = false - for _,v in ipairs(civent.nemesis_ids) do - if v == nemesis.id then found = true; break end - end - if not found then - civent.nemesis_ids:insert('#', nemesis.id) - civent.nemesis:insert('#', nemesis) - end - found = false - for _,v in ipairs(fortent.nemesis_ids) do - if v == nemesis.id then found = true; break end - end - if not found then - fortent.nemesis_ids:insert('#', nemesis.id) - fortent.nemesis:insert('#', nemesis) - end - print("Makeown-citizen: migrated nemesis entry") - end -- nemesis -end - - -function make_own(unit) - --tweak makeown - unit.flags2.resident = false; unit.flags1.merchant = false; unit.flags1.forest = false; - unit.civ_id = df.global.plotinfo.civ_id - if unit.profession == df.profession.MERCHANT then unit.profession = df.profession.TRADER end - if unit.profession2 == df.profession.MERCHANT then unit.profession2 = df.profession.TRADER end - fix_clothing_ownership(unit) - if unit.race == df.global.plotinfo.race_id then - make_citizen(unit) - end -end - - - -return _ENV