diff --git a/root/data/config/pbs_craft.ini b/root/data/config/pbs_craft.ini index ab05a91..ccadd5a 100644 --- a/root/data/config/pbs_craft.ini +++ b/root/data/config/pbs_craft.ini @@ -18,13 +18,11 @@ exp_round_to=5 ; EXAMPLE & description: ; -; [Recipe GRENADES] ; name of recipe, can be anything but must be unique -; output=613:4 ; item PID to be produced and quantity -; pic_w=69 -; pic_h=60 -; gvar=CRFT_FOD ; global var required to be non-zero to enable recipe (empty means no restriction) -; time=30 ; time to craft, in in-game minutes -; undo=0 ; 1 to allow undo (disassemble) of the item(s) +; [Recipe GRENADES] ; name of recipe, can be anything but must be unique +; output=613:4 ; item PID and quantity to be produced per batch +; gvar=CRFT_FOD ; global var required to be non-zero to enable recipe (empty means no restriction) +; time=30 ; time to craft, in in-game minutes +; undo=0 ; 1 to allow undo (disassemble) of the item(s) ; category=1 ; category index - no need to list categories anywhere, just add their names to pbs_craft.msg ; tools=4|236,12 ; comma-separated list tools required (can be empty). '|' means several options for a tool (OR) ; skills=6+17:90,13:60 ; list of skill requirements in format Skills:MinAmount, where Skills can consist of a sum of several skills @@ -35,474 +33,429 @@ exp_round_to=5 [Recipe FISH_SOUP] output=627 -pic_w=69 -pic_h=60 gvar=CRFT_FOD -time=30 ; 0 h 30 m -undo=0 -category=1 ; food -tools=4|236 ; PID_KNIFE|PID_COMBAT_KNIFE -skills=6+17:90 ; FIRST_AID+OUTDOORSMAN:90 -input=535:1|536:1,106:1,71:1 ; Fish or Scaly Fish, PID_NUKA_COLA, Fruit +time=30 ; 0 h 30 m +category=1 ; food +tool1=4|236 ; KNIFE|COMBAT_KNIFE +skill1=6+17:90 ; FIRST_AID+OUTDOORSMAN +input1=535:1|536:1 ; Fish or Scaly Fish +input2=106:1 ; NUKA_COLA +input3=71:1 ; Fruit [Recipe MEAT_STEW] output=628 -pic_w=69 -pic_h=60 gvar=CRFT_FOD -time=30 ; 0 h 30 m -undo=0 -category=1 ; food -tools=4|236 ; PID_KNIFE|PID_COMBAT_KNIFE -skills=6+17:80 ; FIRST_AID+OUTDOORSMAN:80 -input=284:2|103:2|81:2,124:1|310:1,71:1 ; 2x Meat Jerky or 2x Meat-on-a-stick or 2x Iguana-on-a-stick, PID_BEER or PID_GAMMA_GULP_BEER, Fruit +time=30 ; 0 h 30 m +category=1 ; food +tool1=4|236 ; KNIFE|COMBAT_KNIFE +skill1=6+17:80 ; FIRST_AID+OUTDOORSMAN +input1=284:2|103:2|81:2 ; 2x Meat Jerky or 2x Meat-on-a-stick or 2x Iguana-on-a-stick +input2=124:1|310:1 ; BEER or GAMMA_GULP_BEER +input3=71:1 ; Fruit ; FIRST AID ITEMS [Recipe HEALING_POWDER] output=273 -pic_w=47 -pic_h=63 -gvar=8 ; GVAR_KNOWLEDGE_HEALING_POWDER -time=30 ; 30 m -undo=0 -category=3 ; Drugs -tools= -skills=7+17:60 ; DOCTOR+OUTDOORSMAN:60 -input=271:1,272:1 ; PID_BROC_FLOWER, PID_XANDER_ROOT +gvar=8 ; GVAR_KNOWLEDGE_HEALING_POWDER +time=30 ; 30 m +category=3 ; Drugs +skill1=7+17:60 ; DOCTOR+OUTDOORSMAN +input1=271:1 ; BROC_FLOWER +input2=272:1 ; XANDER_ROOT [Recipe ANTIDOTE] output=49 -pic_w=90 -pic_h=60 -gvar= ; ALWAYS -time=50 ; 50 m -undo=0 -category=3 ; Drugs -tools= -skills=7+17:50,12:25 ; DOCTOR+OUTDOORSMAN:50, SCIENCE:25 -input=92:1|591:2,125:1|469:1 ; PID_SCORPION_TAIL or two Small Scorpion Tails, PID_BOOZE or PID_ROT_GUT +time=50 ; 50 m +category=3 ; Drugs +skill1=7+17:50 ; DOCTOR+OUTDOORSMAN +skill2=12:25 ; SCIENCE +input1=92:1|591:2 ; SCORPION_TAIL or two Small Scorpion Tails +input2=125:1|469:1 ; BOOZE or ROT_GUT [Recipe STIMPAK] output=40 -pic_w=89 -pic_h=60 -gvar=CRFT_AID ; first aid schematics -time=85 ; 1 h 25 m -undo=0 -category=3 ; Drugs -tools=91 ; PID_DOCTORS_BAG -skills=7:60,12:70 ; DOCTOR:60, SCIENCE:70 -input=271:1,272:1,318:1 ; PID_BROC_FLOWER, PID_XANDER_ROOT, PID_HYPODERMIC_NEEDLE +gvar=CRFT_AID ; first aid schematics +time=85 ; 1 h 25 m +category=3 ; Drugs +tool1=91 ; DOCTORS_BAG +skill1=7:60 ; DOCTOR +skill2=12:70 ; SCIENCE +input1=271:1 ; BROC_FLOWER +input2=272:1 ; XANDER_ROOT +input3=318:1 ; HYPODERMIC_NEEDLE [Recipe SUPER_STIMPAK] output=144 -pic_w=88 -pic_h=59 -gvar=CRFT_AID ; first aid schematics -time=155 ; 2 h 35 m -undo=0 -category=3 ; Drugs -tools=91 ; PID_DOCTORS_BAG -skills=7:80,12:100 ; DOCTOR:80, SCIENCE:100 -input=71:1,106:1,40:2 ; PID_MUTATED_FRUIT, PID_NUKA_COLA, PID_STIMPAK +gvar=CRFT_AID ; first aid schematics +time=155 ; 2 h 35 m +category=3 ; Drugs +tool1=91 ; DOCTORS_BAG +skill1=7:80 ; DOCTOR +skill2=12:100 ; SCIENCE +input1=71:1 ; MUTATED_FRUIT +input2=106:1 ; NUKA_COLA +input3=40:2 ; STIMPAK ; ADVANCED DRUGS [Recipe PSYCHO] output=110 -pic_w=77 -pic_h=60 -gvar=CRFT_DRG ; drugs schematics -time=240 ; 4 h -undo=0 -category=3 ; adv drug -tools=91 ; PID_DOCTORS_BAG -skills=7:80,12:90 ; DOCTOR:80, SCIENCE:90 -input=87:1,71:3,311:1,40:1 ; PID_BUFFOUT, PID_MUTATED_FRUIT, PID_ROENTGEN_RUM, PID_STIMPAK +gvar=CRFT_DRG ; drugs schematics +time=240 ; 4 h +category=3 ; adv drug +tool1=91 ; DOCTORS_BAG +skill1=7:80 ; DOCTOR +skill2=12:90 ; SCIENCE +input1=87:1 ; BUFFOUT +input2=71:3 ; MUTATED_FRUIT +input3=311:1 ; ROENTGEN_RUM +input4=40:1 ; STIMPAK [Recipe POISON] output=334 -pic_w=90 -pic_h=65 -gvar=CRFT_DRG ; drugs schematics -time=135 ; 2 h 15 m -undo=0 -category=3 ; adv drug -tools=91 ; PID_DOCTORS_BAG -skills=7:30,12:50 ; DOCTOR:30, SCIENCE:50 -input=318:1,106:1,92:1|591:1 ; PID_HYPODERMIC_NEEDLE, PID_NUKA_COLA, PID_SCORPION_TAIL or Small Scorpion Tail +gvar=CRFT_DRG ; drugs schematics +time=135 ; 2 h 15 m +category=3 ; adv drug +tool1=91 ; DOCTORS_BAG +skill1=7:30 ; DOCTOR +skill2=12:50 ; SCIENCE +input1=318:1 ; HYPODERMIC_NEEDLE +input2=106:1 ; NUKA_COLA +input3=92:1|591:1 ; SCORPION_TAIL or Small Scorpion Tail [Recipe FIRE_RESISTANCE_GRUG] output=612 -pic_w=90 -pic_h=70 -gvar=CRFT_DRG ; drugs schematics -time=180 ; 3 h -undo=0 -category=3 ; adv drug -tools=91 ; PID_DOCTORS_BAG -skills=7:70,12:80 ; DOCTOR:70, SCIENCE:80 -input=144:1,334:1 ; PID_SUPER_STIMPAK, PID_POISON +gvar=CRFT_DRG ; drugs schematics +time=180 ; 3 h +category=3 ; adv drug +tool1=91 ; DOCTORS_BAG +skill1=7:70 ; DOCTOR +skill2=12:80 ; SCIENCE +input1=144:1 ; SUPER_STIMPAK +input2=334:1 ; POISON [Recipe CARRY_WEIGHT_DRUG] output=620 -pic_w=47 -pic_h=74 -gvar=CRFT_DRG ; drugs schematics -time=180 ; 3 h -undo=0 -category=3 ; adv drug -tools=91 ; PID_DOCTORS_BAG -skills=7:70,12:60 ; DOCTOR:70, SCIENCE:60 -input=49:1,71:2,124:2|310:2 ; PID_ANTIDOTE, PID_MUTATED_FRUIT, PID_BEER or PID_GAMMA_GULP_BEER +gvar=CRFT_DRG ; drugs schematics +time=180 ; 3 h +category=3 ; adv drug +tool1=91 ; DOCTORS_BAG +skill1=7:70 ; DOCTOR +skill2=12:60 ; SCIENCE +input1=49:1 ; ANTIDOTE +input2=71:2 ; MUTATED_FRUIT +input3=124:2|310:2 ; BEER or GAMMA_GULP_BEER ; EXPLOSIVES [Recipe MOLOTOV_COCKTAIL] output=159 -pic_w=23 -pic_h=60 -gvar=CRFT_EXP ; explosives schematics -time=30 ; 0 h 30 m -undo=0 -category=4 ; Explosive -tools=75|308 ; PID_MULTI_TOOL | PID_SUPER_TOOL_KIT -skills=5:40,13:30 ; THROWING:40, REPAIR:30 -input=79:1,125:1|469:1 ; PID_FLARE, PID_BOOZE or PID_ROT_GUT +gvar=CRFT_EXP ; explosives schematics +time=30 ; 0 h 30 m +category=4 ; Explosive +tool1=75|308 ; MULTI_TOOL | SUPER_TOOL_KIT +skill1=5:40 ; THROWING +skill2=13:30 ; REPAIR +input1=79:1 ; FLARE +input2=125:1|469:1 ; BOOZE or ROT_GUT [Recipe GRENADES] output=613:4 -pic_w=60 -pic_h=50 -gvar=CRFT_EXP ; explosives schematics -time=180 ; 3 h 00 m -undo=0 -category=4 ; Explosive -tools=75|308 ; PID_MULTI_TOOL | PID_SUPER_TOOL_KIT -skills=11+5:100,13:60 ; TRAPS+THROWING:100, REPAIR:60 -input=98:1,51:1|85:1,95:2 ; Junk, Dynamite OR Plastic explosive, Shotgun shells +gvar=CRFT_EXP ; explosives schematics +time=180 ; 3 h 00 m +category=4 ; Explosive +tool1=75|308 ; MULTI_TOOL | SUPER_TOOL_KIT +skill1=11+5:100 ; TRAPS+THROWING +skill2=13:60 ; REPAIR +input1=98:1 ; Junk +input2=51:1|85:1 ; Dynamite OR Plastic explosive +input3=95:2 ; Shotgun shells [Recipe PLASTIC_EXPLOSIVES] output=85 -pic_w=93 -pic_h=63 -gvar=CRFT_EXP ; explosives schematics -time=120 ; 2 h 00 m -undo=0 -category=4 ; Explosive -tools=75|308 ; PID_MULTI_TOOL | PID_SUPER_TOOL_KIT -skills=11+12:120,13:60 ; TRAPS+SCIENCE:120, REPAIR:60 -input=51:1,106:4 ; PID_DYNAMITE, PID_NUKA_COLA +gvar=CRFT_EXP ; explosives schematics +time=120 ; 2 h 00 m +category=4 ; Explosive +tool1=75|308 ; MULTI_TOOL | SUPER_TOOL_KIT +skill1=11+12:120 ; TRAPS+SCIENCE +skill2=13:60 ; REPAIR +input1=51:1 ; DYNAMITE +input2=106:4 ; NUKA_COLA ; AMMO [Recipe 12GA_SLUG_AMMO] output=614 -pic_w=74 -pic_h=60 -gvar=CRFT_AMM ; ammo craft schematics -time=60 ; 1 h -undo=0 -category=5 ; Ammo -tools=75|308 ; PID_MULTI_TOOL | PID_SUPER_TOOL_KIT -skills=0:60,13:50 ; SMALL_GUNS:60, REPAIR:50 -input=95:1,19:1 ; Shotgun shells, PID_ROCK +gvar=CRFT_AMM ; ammo craft schematics +time=60 ; 1 h +category=5 ; Ammo +tool1=75|308 ; MULTI_TOOL | SUPER_TOOL_KIT +skill1=0:60 ; SMALL_GUNS +skill2=13:50 ; REPAIR +input1=95:1 ; Shotgun shells +input2=19:1 ; ROCK [Recipe 12GA_INCENDIARY] output=641:2 -pic_w=79 -pic_h=60 -gvar=CRFT_AMM ; ammo craft schematics -time=120 ; 2 h -undo=0 -category=5 ; Ammo -tools=75|308 ; PID_MULTI_TOOL | PID_SUPER_TOOL_KIT -skills=0:100,13:80 ; SMALL_GUNS:100, REPAIR:80 -input=95:2,32:1|382:1 ; Shotgun shells, Flamethrower fuel +gvar=CRFT_AMM ; ammo craft schematics +time=120 ; 2 h +category=5 ; Ammo +tool1=75|308 ; MULTI_TOOL | SUPER_TOOL_KIT +skill1=0:100 ; SMALL_GUNS +skill2=13:80 ; REPAIR +input1=95:2 ; Shotgun shells +input2=32:1|382:1 ; Flamethrower fuel [Recipe 223_AP] output=615 -pic_w=81 -pic_h=59 -gvar=CRFT_AMM ; ammo craft schematics -time=270 ; 4 h 30 m -undo=0 -category=5 ; Ammo -tools=308 ; PID_SUPER_TOOL_KIT -skills=0:80,13:70 ; SMALL_GUNS:80, REPAIR:70 -input=34:1,36:1 ; 223 FMJ, 5mm AP +gvar=CRFT_AMM ; ammo craft schematics +time=270 ; 4 h 30 m +category=5 ; Ammo +tool1=308 ; SUPER_TOOL_KIT +skill1=0:80 ; SMALL_GUNS +skill2=13:70 ; REPAIR +input1=34:1 ; 223 FMJ +input2=36:1 ; 5mm AP [Recipe 762_AP] output=642 -pic_w=57 -pic_h=54 -gvar=CRFT_AMM ; ammo craft schematics -time=270 ; 4 h 30 m -undo=0 -category=5 ; Ammo -tools=308 ; PID_SUPER_TOOL_KIT -skills=0:100,13:80 ; SMALL_GUNS:100, REPAIR:80 -input=363:1,33:1 ; 7.62 FMJ, 14mm AP +gvar=CRFT_AMM ; ammo craft schematics +time=270 ; 4 h 30 m +category=5 ; Ammo +tool1=308 ; SUPER_TOOL_KIT +skill1=0:100 ; SMALL_GUNS +skill2=13:80 ; REPAIR +input1=363:1 ; 7.62 FMJ +input2=33:1 ; 14mm AP [Recipe 14MM_JHP] output=633 -pic_w=45 -pic_h=68 -gvar=CRFT_AMM ; Ammo schematics -time=120 ; 2h -undo=0 -category=5 ; Ammo -tools=75|308 ; PID_MULTI_TOOL | PID_SUPER_TOOL_KIT -skills=0:80,13:80 ; SMALL_GUNS:80, REPAIR:80 -input=33:1 ; 14mm AP +gvar=CRFT_AMM ; Ammo schematics +time=120 ; 2h +category=5 ; Ammo +tool1=75|308 ; MULTI_TOOL | SUPER_TOOL_KIT +skill1=0:80 ; SMALL_GUNS +skill2=13:80 ; REPAIR +input1=33:1 ; 14mm AP [Recipe 40MM_IC] output=632 -pic_w=74 -pic_h=60 -gvar=CRFT_AMM ; Ammo schematics -time=60 ; 2h -undo=0 -category=5 ; Ammo -tools=308 ; Super tool kit -skills=1:70,13:60 ; BIG_GUNS:70, REPAIR:60 -input=631:1,159:2 ; 40mm HE grenades, Molotov +gvar=CRFT_AMM ; Ammo schematics +time=60 ; 2h +category=5 ; Ammo +tool1=308 ; Super tool kit +skill1=1:70 ; BIG_GUNS +skill2=13:60 ; REPAIR +input1=631:1 ; 40mm HE grenades +input2=159:2 ; Molotov ; TRAPS [Recipe TRAP_KIT_SPIKE] output=618:4 -pic_w=85 -pic_h=55 -gvar= ; ALWAYS -time=180 ; 3 h 00 m -undo=0 -category=6 ; Traps -tools=4|236 ; PID_KNIFE|PID_COMBAT_KNIFE -skills=13+11:50 ; REPAIR+TRAPS:50 -input=127:1,365:8|583:8|320:4|7:2|280:2 ; Rope, Plant Spikes OR Sharp Poles OR Spears OR Sharp Spears +time=180 ; 3 h 00 m +category=6 ; Traps +tool1=4|236 ; KNIFE|COMBAT_KNIFE +skill1=13+11:50 ; REPAIR+TRAPS +input1=127:1 ; Rope +input2=365:8|583:8|320:4|7:2|280:2 ; Plant Spikes OR Sharp Poles OR Spears OR Sharp Spears [Recipe BEAR_TRAP] output=645 -pic_w=69 -pic_h=55 -gvar=CRFT_BLD ; blades schematics -time=180 ; 3 h 00 m -undo=0 -category=6 ; Traps -tools=308 ; PID_SUPER_TOOL_KIT -skills=13+11:140 ; REPAIR+TRAPS:140 -input=98:1,4:3|45:3|7:2|280:2 ; Junk, Knives OR throwing knives OR Spears OR Sharp Spears +gvar=CRFT_BLD ; blades schematics +time=180 ; 3 h 00 m +category=6 ; Traps +tool1=308 ; SUPER_TOOL_KIT +skill1=13+11:140 ; REPAIR+TRAPS +input1=98:1 ; Junk +input2=4:3|45:3|7:2|280:2 ; Knives OR throwing knives OR Spears OR Sharp Spears [Recipe TRAP_KIT_MINE] output=616:4 -pic_w=68 -pic_h=61 -gvar=CRFT_EXP ; explosive schematics 644 -time=180 ; 3 h 00 m +gvar=CRFT_EXP ; explosive schematics 644 +time=180 ; 3 h 00 m undo=1 -category=6 ; Traps -tools=75|308 ; PID_MULTI_TOOL | PID_SUPER_TOOL_KIT -skills=13+11:80 ; REPAIR+TRAPS:80 -input=127:1,98:1 ; Rope, Junk +category=6 ; Traps +tool1=75|308 ; MULTI_TOOL | SUPER_TOOL_KIT +skill1=13+11:80 ; REPAIR+TRAPS +input1=127:1 ; Rope +input2=98:1 ; Junk [Recipe TRAP_KIT_PROXIMITY] output=619:3 -pic_w=55 -pic_h=54 -gvar=CRFT_ELE ; Electronics -time=180 ; 3 h 00 m -undo=0 -category=6 ; Traps -tools=308 ; PID_SUPER_TOOL_KIT -skills=13+11:120,12:60 ; REPAIR+TRAPS:120, SCIENCE:60 -input=38:1,98:1 ; SEC, Junk +gvar=CRFT_ELE ; Electronics +time=180 ; 3 h 00 m +category=6 ; Traps +tool1=308 ; SUPER_TOOL_KIT +skill1=13+11:120 ; REPAIR+TRAPS +skill2=12:60 ; SCIENCE +input1=38:1 ; SEC +input2=98:1 ; Junk ; LEATHER ARMOR [Recipe LEATHER_JACKET] output=74 -pic_w=62 -pic_h=60 -gvar=CRFT_LTJ ; Leather Jacket schematics -time=300 ; 5 h 00 m -undo=0 -category=7 ; Armor -tools=4|236 ; PID_KNIFE|PID_COMBAT_KNIFE -skills=13:35 ; REPAIR:35 -input=127:1,276:2|623:2 ; PID_ROPE, PID_GECKO_PELT or Molerat Hide +gvar=CRFT_LTJ ; Leather Jacket schematics +time=300 ; 5 h 00 m +category=7 ; Armor +tool1=4|236 ; KNIFE|COMBAT_KNIFE +skill1=13:35 ; REPAIR +input1=127:1 ; ROPE +input2=276:2|623:2 ; GECKO_PELT or Molerat Hide [Recipe LEATHER_ARMOR] output=1 -pic_w=88 -pic_h=55 -gvar=CRFT_LTH ; Leather armor schematics -time=300 ; 5 h 00 m -undo=0 -category=7 ; Armor -tools=4|236 ; PID_KNIFE|PID_COMBAT_KNIFE -skills=13:50 ; REPAIR:50 -input=127:1,276:6|623:4 ; PID_ROPE, PID_GECKO_PELT or Molerat Hide +gvar=CRFT_LTH ; Leather armor schematics +time=300 ; 5 h 00 m +category=7 ; Armor +tool1=4|236 ; KNIFE|COMBAT_KNIFE +skill1=13:50 ; REPAIR +input1=127:1 ; ROPE +input2=276:6|623:4 ; GECKO_PELT or Molerat Hide [Recipe LEATHER_ARMOR_MK_II] output=379 -pic_w=88 -pic_h=55 -gvar=CRFT_LTH ; Leather armor schematics -time=300 ; 5 h 00 m -undo=0 -category=7 ; Armor -tools=4|236 ; PID_KNIFE|PID_COMBAT_KNIFE -skills=13:75 ; REPAIR:75 -input=1:1,277:2 ; PID_LEATHER_ARMOR, PID_GOLDEN_GECKO_PELT +gvar=CRFT_LTH ; Leather armor schematics +time=300 ; 5 h 00 m +category=7 ; Armor +tool1=4|236 ; KNIFE|COMBAT_KNIFE +skill1=13:75 ; REPAIR +input1=1:1 ; LEATHER_ARMOR +input2=277:2 ; GOLDEN_GECKO_PELT [Recipe METAL_ARMOR] output=2 -pic_w=81 -pic_h=65 -gvar=CRFT_LTH ; Leather (yeah, I know...) -time=300 ; 5 h 00 m -undo=0 -category=7 ; Armor -tools=308 ; PID_SUPER_TOOL_KIT -skills=13:75 ; REPAIR:75 -input=74:1,98:3|269:1 ; PID_LEATHER_JACKET, Junk or Robot Parts +gvar=CRFT_LTH ; Leather (yeah, I know...) +time=300 ; 5 h 00 m +category=7 ; Armor +tool1=308 ; SUPER_TOOL_KIT +skill1=13:75 ; REPAIR +input1=74:1 ; LEATHER_JACKET +input2=98:3|269:1 ; Junk or Robot Parts [Recipe METAL_ARMOR_MK2] output=380 -pic_w=79 -pic_h=63 -gvar=CRFT_LTH ; Leather (yeah, I know...) -time=300 ; 5 h 00 m -undo=0 -category=7 ; Armor -tools=308 ; PID_SUPER_TOOL_KIT -skills=13:100 ; REPAIR:100 -input=2:1,32:2|382:2 ; PID_METAL_ARMOR, Flamethrower fuel +gvar=CRFT_LTH ; Leather (yeah, I know...) +time=300 ; 5 h 00 m +category=7 ; Armor +tool1=308 ; SUPER_TOOL_KIT +skill1=13:100 ; REPAIR +input1=2:1 ; METAL_ARMOR +input2=32:2|382:2 ; Flamethrower fuel ; ELECTRONICS [Recipe ELECTRONIC_LOCKPICKS] output=77 -pic_w=91 -pic_h=60 -gvar=CRFT_EL2 ; advanced electronics schematic -time=480 ; 8 h 00 m -undo=0 -category=8 ; Electronics -tools=228,75|308 ; PID_TECHNICAL_MANUAL, PID_MULTI_TOOL | PID_SUPER_TOOL_KIT -skills=13+9:100,12:60 ; REPAIR+LOCKPICK:100, SCIENCE:60 -input=59:1,52:1 ; PID_MOTION_SENSOR, PID_GEIGER_COUNTER +gvar=CRFT_EL2 ; advanced electronics schematic +time=480 ; 8 h 00 m +category=8 ; Electronics +tool1=228 ; TECHNICAL_MANUAL +tool2=75|308 ; MULTI_TOOL | SUPER_TOOL_KIT +skill1=13+9:100 ; REPAIR+LOCKPICK +skill2=12:60 ; SCIENCE +input1=59:1 ; MOTION_SENSOR +input2=52:1 ; GEIGER_COUNTER [Recipe ELEC_LOCKPICK_MKII] output=411 -pic_w=86 -pic_h=56 -gvar=CRFT_EL2 ; advanced electronics schematic -time=360 ; 6 h -undo=0 -category=8 ; Electronics -tools=228,308 ; PID_TECHNICAL_MANUAL, PID_SUPER_TOOL_KIT -skills=13+9:120,12:80 ; REPAIR+LOCKPICK:120, SCIENCE:80 -input=77:1 ; PID_ELECTRONIC_LOCKPICKS +gvar=CRFT_EL2 ; advanced electronics schematic +time=360 ; 6 h +category=8 ; Electronics +tool1=228 ; TECHNICAL_MANUAL +tool2=308 ; SUPER_TOOL_KIT +skill1=13+9:120 ; REPAIR+LOCKPICK +skill2=12:80 ; SCIENCE +input1=77:1 ; ELECTRONIC_LOCKPICKS ; SHARPENING [Recipe SPEAR] output=7 -pic_w=159 -pic_h=39 -gvar=CRFT_BLD ; blades schematics -time=45 ; 45 m -undo=0 -category=10 ; Weapons -tools=278 ; PID_FLINT -skills=13+4:60 ; REPAIR+MELEE_WEAPONS:60 -input=4:1,320:1 ; PID_KNIFE, PID_SHARPENED_POLE +gvar=CRFT_BLD ; blades schematics +time=45 ; 45 m +category=10 ; Weapons +tool1=278 ; FLINT +skill1=13+4:60 ; REPAIR+MELEE_WEAPONS +input1=4:1 ; KNIFE +input2=320:1 ; SHARPENED_POLE [Recipe SHARP_SPEAR] output=280 -pic_w=159 -pic_h=39 -gvar=CRFT_BLD ; blades schematics -time=45 ; 45 m -undo=0 -category=10 ; Weapons -tools=278 ; PID_FLINT -skills=4+5:60 ; MELEE_WEAPONS+THROWING:60 -input=7:1 ; PID_SPEAR +gvar=CRFT_BLD ; blades schematics +time=45 ; 45 m +category=10 ; Weapons +tool1=278 ; FLINT +skill1=4+5:60 ; MELEE_WEAPONS+THROWING +input1=7:1 ; SPEAR ; WEAPONS [Recipe ZIP_GUN] output=300 -pic_w=90 -pic_h=60 -gvar= ; ALWAYS -time=180 ; 3 h 00 m -undo=0 -category=10 ; Weapons -tools=4 ; PID_KNIFE -skills=13+0:60 ; REPAIR+SMALL_GUNS:60 -input=7:1|280:1 ; Spear OR Sharp Spear +time=180 ; 3 h 00 m +category=10 ; Weapons +tool1=4 ; KNIFE +skill1=13+0:60 ; REPAIR+SMALL_GUNS +input1=7:1|280:1 ; Spear OR Sharp Spear [Recipe DEATHCLAW_GAUNTLET] output=640 -pic_w=82 -pic_h=53 -gvar=CRFT_GNT ; special recipe -time=180 ; 3 h 00 m -undo=0 -category=10 ; Weapons -tools=308 ; PID_SUPER_TOOL_KIT -skills=4:70,13:80 ; MELEE_WEAPONS:70, REPAIR:80 -input=622:3,235:1 ; 3 death claws, 1 power fist +gvar=CRFT_GNT ; special recipe +time=180 ; 3 h 00 m +category=10 ; Weapons +tool1=308 ; SUPER_TOOL_KIT +skill1=4:70 ; MELEE_WEAPONS +skill2=13:80 ; REPAIR +input1=622:3 ; 3 death claws +input2=235:1 ; 1 power fist ; MISC [Recipe SUPER_TOOL_KIT] output=308 -pic_w=57 -pic_h=55 -gvar=CRFT_TOL ; tool schematics -time=120 ; 2 h 00 m +gvar=CRFT_TOL ; tool schematics +time=120 ; 2 h 00 m undo=1 -category=11 ; Misc -tools= -skills=13:70,12:30 ; REPAIR:70, SCIENCE:30 -input=75:1,384:1,98:1 ; PID_MULTI_TOOL, PID_WRENCH, Junk +category=11 ; Misc +skill1=13:70 ; REPAIR +skill2=12:30 ; SCIENCE +input1=75:1 ; MULTI_TOOL +input2=384:1 ; WRENCH +input3=98:1 ; Junk diff --git a/root/data/text/russian/game/pro_item.msg b/root/data/text/russian/game/pro_item.msg index 83849a6..d2373b4 100644 --- a/root/data/text/russian/game/pro_item.msg +++ b/root/data/text/russian/game/pro_item.msg @@ -186,7 +186,7 @@ {9301}{}{Сумка средних размеров. Соткана из волоса браминов.} {9400}{}{Дробовик} {9401}{}{Винчестер Видоумейкер - двуствольный дробовик 12 калибра. Короткоствольный, с прикладом из красного дерева. Мин. сила: 4.} -{9500}{}{Патроны 12 калибра (картечь)} +{9500}{}{12 кал. картечь} {9501}{}{Вид боеприпасов для дробовика, картечь #00. На данных патронах стоит отметка: "12 калибр. Не давать детям до 3 лет".} {9600}{}{Красный пропуск} {9601}{}{Электронная карта доступа, цветовой код - красный.} @@ -1165,7 +1165,7 @@ {61201}{}{Эта странная вещь делает хозяина невосприимчивым к огню. Есть побочные эффекты.} {61300}{}{Самодельная граната} {61301}{}{Не смотря на то, что граната собрана из подручного мусора, она выполняет свою задачу просто прекрасно. Мин. сила: 3.} -{61400}{}{Патроны 12 калибра (жекан)} +{61400}{}{12 кал. жекан} {61401}{}{Патроны для дробовика. Снаряжены тяжелой свинцовой пулей для охоты на крупного зверя.} {61500}{}{.223 ББ.} {61501}{}{Ящик с боеприпасами калибра .223, бронебойные (AP).} @@ -1221,7 +1221,7 @@ {63901}{}{Копье со встроенным пневматическим поршнем. Разработано для повышения энергии удара и пробивной способности. Мин. сила: 5.} {64000}{}{Перчатка Смерти} {64001}{}{Прочная кожаная перчатка, к которой прикреплены три длинных и чрезвычайно острых когтя. Мин. сила: 3.} -{64100}{}{Патроны 12 калибра (зажигательные)} +{64100}{}{12 кал. Дыхание Дракона} {64101}{}{Эти патроны способны не только убить, но и зажарить вашу добычу.} {64200}{}{7,62 мм ББ} {64201}{}{Вид боеприпасов. Калибр: 7,62 мм. Бронебойные.} diff --git a/scripts_src/_pbs_craft/craft_config.h b/scripts_src/_pbs_craft/craft_config.h index 2e5d307..c82f070 100644 --- a/scripts_src/_pbs_craft/craft_config.h +++ b/scripts_src/_pbs_craft/craft_config.h @@ -48,11 +48,6 @@ procedure parse_skill_sum_list(variable value) begin return array_fixed(skills); end -procedure parse_comma_list(variable value, variable transformFunc) begin - if (value == "") then return 0; - return array_fixed(array_transform(string_split(value, ","), transformFunc)); -end - #define cfg_item_pid(itemData) (itemData bwand 0xFFFF) #define cfg_item_qty(itemData) (itemData / 0x10000) @@ -77,7 +72,7 @@ procedure load_crafting_config begin //cfg.categories := create_array_map; cfg.recipeNames := create_array_map; - variable sectName, section; + variable sectName, section, key, val; variable recipePrefix := "Recipe "; foreach (sectName: section in ini) begin if (string_starts_with(sectName, recipePrefix)) then begin @@ -91,19 +86,25 @@ procedure load_crafting_config begin recipeCfg := array_fixed({ "pid": cfg_item_pid(output), "qty": cfg_item_qty(output), - "pic_w": atoi(section.pic_w), - "pic_h": atoi(section.pic_h), "gvar": section.gvar, "time": atoi(section.time), - "undo": atoi(section.undo), - "category": atoi(section.category) + "undo": atoi(section.undo) if section.undo else 0, + "category": atoi(section.category) if section.category else 0 }); - craft_debug("crafting recipe " + recipeKey + ": " + debug_array_str(recipeCfg)); + //craft_debug("crafting recipe " + recipeKey + ": " + debug_array_str(recipeCfg)); - recipeCfg.tools := parse_comma_list(section.tools, @parse_pid_or_list); - recipeCfg.skills := parse_comma_list(section.skills, @parse_skill_sum_list); - recipeCfg.input := parse_comma_list(section.input, @parse_component_or_list); + recipeCfg.tools := create_array_list(0); // parse_comma_list(section.tools, @parse_pid_or_list); + recipeCfg.skills := create_array_list(0); //parse_comma_list(section.skills, @parse_skill_sum_list); + recipeCfg.input := create_array_list(0); //parse_comma_list(section.input, @parse_component_or_list); + foreach (key: val in section) begin + if (string_starts_with(key, "tool")) then + call array_push(recipeCfg.tools, parse_pid_or_list(val)); + else if (string_starts_with(key, "skill")) then + call array_push(recipeCfg.skills, parse_skill_sum_list(val)); + else if (string_starts_with(key, "input")) then + call array_push(recipeCfg.input, parse_component_or_list(val)); + end //craft_debug("crafting recipe " + recipeKey + " tools: " + debug_array_str_deep(recipeCfg.tools, 2)); //craft_debug("crafting recipe " + recipeKey + " skills: " + debug_array_str_deep(recipeCfg.skills, 2)); @@ -115,6 +116,7 @@ procedure load_crafting_config begin end sort_map_value(cfg.recipeNames); //craft_debug("crafting recipes sorted: " + debug_array_str(cfg.recipeNames)); + craft_debug("Loaded crafting recipes: " + len_array(cfg.recipes)); return cfg; end diff --git a/scripts_src/_pbs_craft/craft_utils.h b/scripts_src/_pbs_craft/craft_utils.h index 78497bd..596a5ad 100644 --- a/scripts_src/_pbs_craft/craft_utils.h +++ b/scripts_src/_pbs_craft/craft_utils.h @@ -145,7 +145,7 @@ procedure party_is_carrying_obj_pid(variable pid, variable returnAmmoCount := fa end end end - craft_debug(string_format("party_is_carrying_obj_pid(%s): sum = %d", proto_data(pid, it_name), sum)); + //craft_debug(string_format("party_is_carrying_obj_pid(%s): sum = %d", proto_data(pid, it_name), sum)); // For ammo, we calculate sum in individual bullets but return a number of *full* packs (as if ammo is combined in one inventory) if (sum > 0 and isAmmo and (not returnAmmoCount)) then sum := sum / ammo_pid_pack_size(pid); diff --git a/scripts_src/_pbs_craft/crafting.h b/scripts_src/_pbs_craft/crafting.h index 1673c39..216ddfc 100644 --- a/scripts_src/_pbs_craft/crafting.h +++ b/scripts_src/_pbs_craft/crafting.h @@ -128,7 +128,7 @@ procedure recipe_is_available(variable recipe) begin gvar := recipe.gvar; if (gvar == "NEVER") then return false; - else if (gvar != "") then begin + else if (gvar and gvar != "") then begin gvarVal := get_sfall_global_int(gvar) if atoi(gvar) == 0 else global_var(atoi(gvar)); if (gvarVal == 0) then return false; @@ -771,10 +771,8 @@ end procedure draw_item_pcx begin variable w, h, data, fid := proto_data(cur_recipe.pid, it_inv_fid); data := art_frame_data(fid, 0, 0); // this requires sfall update - //w := cur_recipe.pic_w; - //h := cur_recipe.pic_h; - w := data[0]; - h := data[1]; + w := data[0] if data else 50; + h := data[1] if data else 50; craft_debug("draw_item_pcx "+cur_recipe.pid+", size: "+w+"x"+h); call redraw_win_dscr; SelectWin("win_dscr"); diff --git a/scripts_src/_pbs_craft/fixit_toini.py b/scripts_src/_pbs_craft/fixit_toini.py index ac7f7e4..abc1566 100644 --- a/scripts_src/_pbs_craft/fixit_toini.py +++ b/scripts_src/_pbs_craft/fixit_toini.py @@ -27,10 +27,11 @@ #curItem = None itemNum = 0 -commentPos = 36 +commentPos = 24 section = 0 -andData = None -andComments = None +#andData = None +#andComments = None +andListIdx = 0 #def writeCurItem(): # fOut.write("\n\n[" + curItem["name"] + "]") @@ -83,16 +84,23 @@ def writeAndList(key): writePair(key, ",".join(andData), ", ".join(andComments)) def initAndList(): + global andListIdx + andListIdx = 1 #print("Init and lists") - global andData - global andComments - andData = [] - andComments = [] + #global andData + #global andComments + #andData = [] + #andComments = [] -def appendAndList(data, comment): - #print("And lists {} {}".format(andData, andComments)) - andData.append(data) - andComments.append(comment or data) +def writeAndListPair(key, data, comment): + global andListIdx + writePair("{}{}".format(key, andListIdx), data, comment) + andListIdx += 1 + +#def appendAndList(data, comment): +# #print("And lists {} {}".format(andData, andComments)) +# andData.append(data) +# andComments.append(comment or data) for line in fIn: m = re.search(r"^([^#\s]*) *(#[^\n]+)?", line) @@ -105,7 +113,7 @@ def appendAndList(data, comment): itemNum += 1 #curItem = {} - elif (section == 1): + elif (section == 1): # [ITEM] if (data == "[TOOLS]"): initAndList() section = 2 @@ -117,48 +125,47 @@ def appendAndList(data, comment): fOut.write("[Recipe {}]\n".format(name)) writePair("output", data) - elif (fieldNum == 3): - num = int(data) - writePair("pic_w", num // 1000) - writePair("pic_h", num % 1000, comment) + #elif (fieldNum == 3): + # num = int(data) + # writePair("pic_w", num // 1000) + # writePair("pic_h", num % 1000, comment) elif (fieldNum == 4): - writePair("gvar", data, comment) + if (data != ""): + writePair("gvar", data, comment) elif (fieldNum == 5): writePair("time", int(data) // 600, comment) elif (fieldNum == 6): - writePair("undo", int(data == "YES"), comment) + if (data == "YES"): + writePair("undo", "1", comment) elif (fieldNum == 7): writePair("category", data, comment) fieldNum += 1 - elif (section == 2): + elif (section == 2): # [TOOLS] if (data == "[SKILLS]"): - writeAndList("tools") initAndList() section = 3 elif (data != ""): - appendAndList(data, comment) + writeAndListPair("tool", data, comment.replace("PID_", "")) - elif (section == 3): + elif (section == 3): # [SKILLS] if (data == "[COMPONENTS]"): - writeAndList("skills") initAndList() section = 4 elif (data != ""): - appendAndList(replaceSkills(data), comment or data) + writeAndListPair("skill", replaceSkills(data), comment or data[:(data.find(":"))]) - elif (section == 4): + elif (section == 4): # [COMPONENTS] if (data != ""): - appendAndList(data, comment) + writeAndListPair("input", data, comment.replace("PID_", "")) else: - writeAndList("input") fOut.write("\n") section = 0 diff --git a/scripts_src/_pbs_craft/gl_pbs_craft.ssl b/scripts_src/_pbs_craft/gl_pbs_craft.ssl index 647f06b..d2a26bf 100644 --- a/scripts_src/_pbs_craft/gl_pbs_craft.ssl +++ b/scripts_src/_pbs_craft/gl_pbs_craft.ssl @@ -169,7 +169,6 @@ procedure start begin register_hook_proc(HOOK_KEYPRESS, keypress_handler); register_hook_proc(HOOK_GAMEMODECHANGE, gamemodechange_handler); - //display_msg(string_format("iface x: %d, w: %d", get_interface_x(WINTYPE_IFACEBAR), get_interface_width(WINTYPE_IFACEBAR))); call create_button; set_global_script_type(1);