@@ -431,7 +431,7 @@ ConfirmSpec{
431
431
end ,
432
432
}
433
433
434
- local function make_order_desc (order , noun )
434
+ local function make_order_material_desc (order , noun )
435
435
local desc = ' '
436
436
if order .mat_type >= 0 then
437
437
local matinfo = dfhack .matinfo .decode (order .mat_type , order .mat_index )
452
452
local orders = df .global .world .manager_orders .all
453
453
local itemdefs = df .global .world .raws .itemdefs
454
454
local reactions = df .global .world .raws .reactions .reactions
455
+
456
+ local function make_order_desc (order )
457
+ if order .job_type == df .job_type .CustomReaction then
458
+ for _ , reaction in ipairs (reactions ) do
459
+ if reaction .code == order .reaction_name then
460
+ return reaction .name
461
+ end
462
+ end
463
+ return ' '
464
+ end
465
+ local noun
466
+ if order .job_type == df .job_type .MakeArmor then
467
+ noun = itemdefs .armor [order .item_subtype ].name
468
+ elseif order .job_type == df .job_type .MakeWeapon then
469
+ noun = itemdefs .weapons [order .item_subtype ].name
470
+ elseif order .job_type == df .job_type .MakePants then
471
+ noun = itemdefs .pants [order .item_subtype ].name
472
+ elseif order .job_type == df .job_type .MakeTool then
473
+ noun = itemdefs .tools [order .item_subtype ].name
474
+ elseif order .job_type == df .job_type .SmeltOre then
475
+ noun = ' ore'
476
+ else
477
+ -- caption is usually "verb noun(-phrase)"
478
+ noun = df .job_type .attrs [order .job_type ].caption
479
+ end
480
+ return make_order_material_desc (order , noun )
481
+ end
482
+
455
483
ConfirmSpec {
456
484
id = ' order-remove' ,
457
485
title = ' Remove manger order' ,
@@ -471,25 +499,9 @@ ConfirmSpec{
471
499
local _ , y = dfhack .screen .getMousePos ()
472
500
if y then
473
501
local order_idx = scroll_pos + (y - y_offset ) // 3
474
- local order = orders [order_idx ]
475
- if order .job_type == df .job_type .CustomReaction then
476
- for _ , reaction in ipairs (reactions ) do
477
- if reaction .code == order .reaction_name then
478
- order_desc = reaction .name
479
- end
480
- end
481
- elseif order .job_type == df .job_type .MakeArmor then
482
- order_desc = make_order_desc (order , itemdefs .armor [order .item_subtype ].name )
483
- elseif order .job_type == df .job_type .MakeWeapon then
484
- order_desc = make_order_desc (order , itemdefs .weapons [order .item_subtype ].name )
485
- elseif order .job_type == df .job_type .MakePants then
486
- order_desc = make_order_desc (order , itemdefs .pants [order .item_subtype ].name )
487
- elseif order .job_type == df .job_type .SmeltOre then
488
- order_desc = make_order_desc (order , ' ore' )
489
- elseif order .job_type == df .job_type .MakeTool then
490
- order_desc = make_order_desc (order , itemdefs .tools [order .item_subtype ].name )
491
- else
492
- order_desc = make_order_desc (order , df .job_type .attrs [order .job_type ].caption )
502
+ local order = safe_index (orders , order_idx )
503
+ if order then
504
+ order_desc = make_order_desc (order )
493
505
end
494
506
end
495
507
return (' Are you sure you want to remove this manager order?\n\n %s' ):format (dfhack .capitalizeStringWords (order_desc ))
0 commit comments