-
Notifications
You must be signed in to change notification settings - Fork 198
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Update create-item.lua #1277
Update create-item.lua #1277
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -17,6 +17,10 @@ Template for new versions: | |
## New Features | ||
|
||
## Fixes | ||
- `gui/create-item`: fix items of type "VERMIN", "PET", "REMANS", "FISH", "RAW FISH", and "EGG" no longer spawn creature item "nothing." | ||
Items will now spawn correctly, and will be of the creature type and creature caste that selected by the user. Items of these types will also stack correctly when needed. | ||
- `modtools/create-item`: fix items of type "VERMIN", "PET", "REMANS", "FISH", "RAW FISH", and "EGG" no longer spawn creature item "nothing"s. | ||
Items will now spawn correctly, and will be of the creature type and creature caste that selected by the user. Items of these types will also stack correctly when needed. | ||
Comment on lines
+20
to
+23
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. this is the "Template for new versions" section -- the actual changelog lines should go in the "Future" version section below |
||
|
||
## Misc Improvements | ||
|
||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -37,6 +37,15 @@ local no_quality_item_types = utils.invert{ | |
'BRANCH', | ||
} | ||
|
||
local typesThatUseCreaturesExceptCorpses = utils.invert { | ||
'REMAINS', | ||
'FISH', | ||
'FISH_RAW', | ||
'VERMIN', | ||
'PET', | ||
'EGG', | ||
} | ||
|
||
local CORPSE_PIECES = utils.invert{'BONE', 'SKIN', 'CARTILAGE', 'TOOTH', 'NERVE', 'NAIL', 'HORN', 'HOOF', 'CHITIN', | ||
'SHELL', 'IVORY', 'SCALE'} | ||
local HAIR_PIECES = utils.invert{'HAIR', 'EYEBROW', 'EYELASH', 'MOUSTACHE', 'CHIN_WHISKERS', 'SIDEBURNS'} | ||
|
@@ -326,16 +335,27 @@ function hackWish(accessors, opts) | |
until count | ||
end | ||
if not mattype or not itemtype then return end | ||
if df.item_type.attrs[itemtype].is_stackable then | ||
if not typesThatUseCreaturesExceptCorpses[df.item_type[itemtype]] and df.item_type.attrs[itemtype].is_stackable then | ||
return createItem({mattype, matindex}, {itemtype, itemsubtype}, quality, unit, description, count) | ||
end | ||
if typesThatUseCreaturesExceptCorpses[df.item_type[itemtype]] and df.item_type.attrs[itemtype].is_stackable then | ||
return createItem({matindex, casteId}, {itemtype, itemsubtype}, quality, unit, description, count) | ||
end | ||
Comment on lines
+338
to
+343
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. There is too much duplication here. How about this? if df.item_type.attrs[itemtype].is_stackable then
local mat = typesThatUseCreaturesExceptCorpses[df.item_type[itemtype]] and {matindex, casteId} or {mattype, matindex}
return createItem(mat, {itemtype, itemsubtype}, quality, unit, description, count)
end There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Wait, did you test this? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. not tested, just written as a suggestion for code improvement. If you have two chunks of code that are semantically and structurally identical except for a small difference, it is usually better to factor that difference out and keep the structure simpler. |
||
local items = {} | ||
for _ = 1,count do | ||
if itemtype == df.item_type.CORPSEPIECE or itemtype == df.item_type.CORPSE then | ||
table.insert(items, createCorpsePiece(unit, bodypart, partlayerID, matindex, casteId, corpsepieceGeneric)) | ||
else | ||
for _,item in ipairs(createItem({mattype, matindex}, {itemtype, itemsubtype}, quality, unit, description, 1)) do | ||
table.insert(items, item) | ||
if typesThatUseCreaturesExceptCorpses[df.item_type[itemtype]] then | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. you can do the same condensing here. Factor out the value of |
||
for | ||
_,item in ipairs(createItem({matindex, casteId}, {itemtype, itemsubtype}, quality, unit, description, 1)) do | ||
table.insert(items, item) | ||
end | ||
else | ||
for | ||
_,item in ipairs(createItem({mattype, matindex}, {itemtype, itemsubtype}, quality, unit, description, 1)) do | ||
table.insert(items, item) | ||
end | ||
end | ||
end | ||
end | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
REMANS -> REMAINS
"no longer spawn creature item "nothing."" -> "being created without a valid creature type"