-
Posts
4139 -
Joined
-
Last visited
-
Days Won
11
Content Type
Profiles
Forums
Events
Everything posted by Speed
-
See page 34 of the guide draft: slmod.num_dead_gt(units, numdead, flag, stopflag) which stands for "number of units dead greater than". Provide a table of unit names for the units variable, a number for numdead, and flag will be set true when the number of units in the units variable that are dead exceeds or the value of numdead. Example: slmod.num_dead_gt({'[g]armor1', '[g]armor2', '[g]armor3', '[g]armor4', '[g]armor5', '[g]armor6'}, 20, 100) Flag 100 is set true when the total number of dead (or non-existing) units in the groups named "armor1", "armor2", "armor3", "armor4", "armor5", and "armor6" exceeds 20 units. Another example (using alternate variable specification method): slmod.num_dead_gt{units = {'[blue]', '[-u]Chevy 11', '[-u]Chevy 21'}, numdead = 50, flag = 1001} Sets flag 1001 to true when the total number of dead units on the blue coalition, excepting the units named "Chevy 11" and "Chevy 21", exceeds 50.
-
Run this script: slmod.units_in_moving_zones({'[g]m1_1', '[g]m1_2', '[g]m2_1'}, {'[g]m1_3', '[g]m1_4', '[g]m2_2'}, 1500, 100) Once this script is run with a trigger action, if any unit in the groups named "m1_1", "m1_2", or "m2_1" gets within 1500 meters of any unit in the groups named "m1_3", "m1_4", or "m2_2", then flag 100 will be set to true. Flag 100 will be set true continuously, until no unit in either set of groups is within 1500 meters of each other. Optionally, using the "new variable specification method", this same function call is: slmod.units_in_moving_zones{ units = {'[g]m1_1', '[g]m1_2', '[g]m2_1'}, zone_units = {'[g]m1_3', '[g]m1_4', '[g]m2_2'}, radius = 1500, flag = 100} I'll eventually have an example mission for this. Anyway, don't forget the unit table shortcuts, which I utilize in the above example. The unit table shortcuts are repeated below: Character sequence + name commands: "[-u]<unit name>" - subtract this unit from the table "[g]<group name>" - add this group’s units to the table "[-g]<group name>" - subtract this group’s units from the table "[c]<country name>" - add this country's units to the table "[-c]<country name>" - subtract this country's units from the table Stand-alone identifiers "[blue]" - add all blue coalition units to the table "[red]" - add all red coalition units to the table "[all]" – add all units to the table These unit table shortcuts will work any time you need to specify a table of unit names. A single unit is specified without any special character sequence in front of it; so the unit named "player1" is simply "player1".
-
Ok, here are two little example "missions" I used for testing the functions. Don't forget that you have to have Slmodv6.0 installed, and run these missions in multiplayer, to get them to work. weapons inside moving zones example mission Just a silly little demo. Fire gun rounds so that they pass through a spherical 100 meter radius zone surrounding a KC-135 in front of you, and you will get an audio message. Also, I use units_killed_by and units_crashed to output an audio message when the tanker dies (but ONLY if YOU killed it!) Basically, while this is just another friendly-fire detection script, it shows how slmod.weapons_inside_moving_zones could be used to detect the "taking a shot off the bow"/a show of force. weapons impacting in zones example mission This mission demonstrates some more exciting new capabilities that the weapons-tracking functions allow. Before you is Kutaisi airbase. The runway has been covered over with mission editor trigger zones, and divided into six "segments". Kill all six segments by dropping a Mk-84 on each (only a Mk-84 will suffice, in this example). Also, slmod.mapobj_dead_in_zone is used to determine when you kill the control tower. However, before I forget, I would like to note an issue with the weapons tracking functions: the weapons-tracking functions cannot detect cluster bomblets, as they do not generate a weapons firing event. However, for now, since bomblets more or less fall straight down, you could use weapons_in_zones and weapons_in_moving_zones to get a rough idea of where cluster bomblets would be impacting. Anyway, here's a quick link for the old post where I uploaded four other example missions. These example missions will still work, since Slmod is supposed to be fully backwards compatible with missions made for previous Slmod versions. Post with old example missions weapons inside moving zones.miz weapons impacting in zones.miz
-
Yes, slmod.units_in_moving_zones is the answer to that problem. I created this function for the same reason you note: the number of trigger conditions required to check for units inside moving zones scales by the square of the number of units, since we can only check for a single unit inside a single moving zone with the mission editor.
-
Whoops, that link I gave earlier was the wrong page, look here instead: http://forums.eagle.ru/showpost.php?p=1514039&postcount=239
-
Slmod is a multiplayer server mod that will allow this: http://forums.eagle.ru/showpost.php?p=1514039&postcount=239 Only the server needs to have the mod installed. The functions to use would be slmod.mapobj_dead_in_zone or slmod.mapobj_destroyed slmod.mapobj_dead_in_zone is easier to use, and it's a newer function. Just place a trigger zone around the bridge, and call the slmod.mapobj_dead_in_zone function. I will be adding a few more example missions in just a short while to the Slmod thread there, one of which will use slmod.mapobj_dead_in_zone (as well as others). People also use to do things like hide an infantry unit under the bridge, but I think that's an ugly solution. Also, it's possible to kill the infantryman but not the bridge, especially since ED increased the hit points on most buildings a patch or two ago.
-
The example missions appear to work just fine, I used several to test Slmodv6. Slmodv6 is supposed to be backwards compatible with everything I released before, even chatIOlib. Let me know if you find any compatibility issues with older missions. I will also be working on a few new example missions, and maybe updating the old to use the DO SCRIPT trigger action.
-
OK, here's the function listing from the quick reference guide: Blue = required variable; Green = optional variable Basic chat input/output functions: slmod.chat_cmd ( string cmd_text, number flag, number stopflag, string coa ) slmod.msg_out ( string text, number display_time, string display_mode, string coa ) slmod.msg_out_w_unit (string text, string unit_name, number display_time, string display_mode, string coa) slmod.msg_MGRS ( string text, table units, number numdigits, number display_time, string display_mode, string coa ) slmod.msg_LL ( string text, table units, number precision, number display_time, string display_mode, string coa ) slmod.msg_leading ( string coordtype, string text, table units, string direction, number radius, number precision, number display_time, string display_mode, string coa ) Parallel Tasking System functions: slmod.add_task ( number id, string task_type, string description, string text, table units, number precision, string direction, number radius ) slmod.add_red_task ( number id, string task_type, string description, string text, table units, number precision, string direction, number radius ) slmod.add_blue_task ( number id, string task_type, string description, string text, table units, number precision, string direction, number radius ) slmod.remove_task ( number id ) slmod.remove_red_task ( number id ) slmod.remove_blue_task ( number id ) slmod.show_task ( number id, number display_time, string display_mode ) slmod.show_red_task ( number id, number display_time, string display_mode ) slmod.show_blue_task ( number id, number display_time, string display_mode ) slmod.show_task_list ( ) slmod.show_red_task_list ( ) slmod.show_blue_task_list ( ) slmod.set_PTS_list_output ( number display_time, string display_mode, string coa ) slmod.set_PTS_task_output ( number display_time, string display_mode, string coa ) Parallel Options System Functions: slmod.add_option ( number id, string description, number flag) slmod.add_red_option ( number id, string description, number flag) slmod.add_blue_option ( number id, string description, number flag) slmod.remove_option ( number id ) slmod.remove_red_option ( number id ) slmod.remove_blue_option ( number id ) slmod.show_option_list ( ) slmod.show_red_option_list ( ) slmod.show_blue_option_list ( ) slmod.set_POS_output ( number display_time, string display_mode, string coa ) Event Detection Functions: slmod.mapobj_destroyed ( number or table id, number flag, number percent ) slmod.mapobj_dead_in_zone ( string zone, number flag, number stopflag, number numdead ) slmod.units_firing ( table init_units, number flag, number stopflag, table weapons, string text, string display_units, number display_time, string display_mode, string coa ) slmod.units_hitting ( table init_units, table tgt_units, number flag, number stopflag, string text, string display_units, number display_time, string display_mode, string coa ) slmod.units_killed_by ( table dead_units, table killer_units, number flag, number stopflag, number last_to_hit, number time_limit ) slmod.units_crashed ( table units, number flag, number stopflag ) slmod.pilots_dead ( table units, number flag, number stopflag ) slmod.units_ejected ( table units, number flag, number stopflag ) Weapons-tracking functions: slmod.weapons_impacting_in_zones ( table init_units, table zones, table weapons, number flag, number stopflag ) slmod.weapons_impacting_in_moving_zones ( table init_units, table zone_units, number radius, table weapons, number flag, number stopflag ) slmod.weapons_in_zones ( table init_units, table zones, table weapons, number flag, number stopflag, string zone_type ) slmod.weapons_in_moving_zones (table init_units, table zone_units, number radius, table weapons, number flag, number stopflag, string zone_type ) Unit Property and Position functions: slmod.num_dead_gt ( table units, number numdead, number flag, number stopflag ) slmod.units_LOS ( table unitset1, number altoffset1, table unitset2, number altoffset2, number flag, number stopflag, number interval, number checks, number radius ) slmod.units_in_moving_zones ( table units, table zone_units, number radius, number flag, number stopflag, string zone_type, number req_num, number interval ) Flag Manipulation: slmod.rand_flags_on ( number startflag, number endflag, number prob ) slmod.rand_flag_choice ( number startflag, number endflag ) I'll finish this up later...
-
EDIT: PLEASE INSTALL Slmodv6_1 now, not Slmodv6_0! For Slmodv6_1, go here. OK, finally. Slmodv6.0 for DCS: World 1.2.0 Disclaimer: Slmod is NOT supported by Eagle Dynamics. In order to obtain many of its capabilities, Slmod must utilize some Lua functionalities not officially supported by Eagle Dynamics, or even necessarily intended for user modding in the first place. Because of this, and because Eagle Dynamics is constantly upgrading and improving the game world, Eagle Dynamics cannot be held responsible for a patch causing Slmod to no longer function correctly. That said, I will do my best to keep Slmod and missions designed for it functioning, as I have with Slmodv6, which makes Slmod functional in DCS: World v1.2.0. I'll probably make a more official post of all this tomorrow... like, for example, I need to modify the first post in this thread still. Or maybe, I should make a new thread. I donno. The full manual is still incomplete. I still need to standardize the formatting and terminology a bit, add programming examples for the new functions I have added, and write a section or two. However, it is pretty far along, probably only needs a further 3-5 hours of editing and formatting, and posting the incomplete draft of it will serve till I get it done. Slmod version 6.0 guide INCOMPLETE DRAF... I now finally made good on my promise to provide a quick reference guide. I have already found the quick reference guide tremendously helpful to me (you think I can remember what all the function names and input variables are? Hell no!). Print it off if you can, preferably on a colored printer so you can tell what variables are required and what are optional. Slmod version 6.0 Quick Reference Guide Change list (all that I can remember): Installation Instructions (Manual installation only- Modman is not available for DCS: World yet, as far as I know): NON Servman 0) Download and unzip the files this .zip: http://forums.eagle.ru/attachment.php?attachmentid=68737&d=1343610126 1) In C:\Program Files\Eagle Dynamics\DCS World\Scripts, rename "MissionScripting.lua" to "MissionScripting_original.lua". Now, paste the "MissionScripting.lua" file included with this mod into this directory. 2) In C:\Program Files\Eagle Dynamics\DCS World\Scripts\net, rename "server.lua" to "server_original.lua". Now, paste the "server.lua" file included with this mod into this directory. NOTE: DO NOT CONFUSE THE "server.lua" file LOCATED IN C:\Program Files\Eagle Dynamics\DCS World\Scripts WITH THE ONE LOCATED IN C:\Program Files\Eagle Dynamics\DCS World\Scripts\net!! 3) Paste the "Slmodv6_0" folder into C:\Program Files\Eagle Dynamics\DCS World\Scripts\net. Servman 301 Note: Servman 301 is very out of date at this point... DCS: W 1.2.0 made some significant changes to server.lua and main.lua, and Servman of course does not have these changes. I do not yet know what the effect of these changes might be, if any. 0) Download and unzip the files this .zip: http://forums.eagle.ru/attachment.php?attachmentid=68736&d=1343610126 1) In C:\Program Files\Eagle Dynamics\DCS World\Scripts, rename "MissionScripting.lua" to "MissionScripting_original.lua". Now, paste the "MissionScripting.lua" file included with this mod into this directory. 2) In C:\Program Files\Eagle Dynamics\DCS World\Scripts\Addons\ServMan3, rename "servman_server.lua" to "servman_server_original.lua". Now, paste the "servman_server.lua" file included with this mod into this directory. 3) Paste the "Slmodv6_0" folder into C:\Program Files\Eagle Dynamics\DCS World\Scripts\net. EDIT: links to files removed. Please install Slmodv6_1, get it here.
-
Radio Patch for DCS v1.1.1.1 v1
Speed replied to Speed's topic in Utility/Program Mods for DCS World
Well.. how many of the bugs were fixed? I haven't gotten a chance to test myself yet. -
So what's the deal? Does anyone know how well Servman works with 1.2.0? Trying to decide if I need to I make a Servman version of Slmodv6. Actually, I would think that Servman ought to not to work, or at the least, it ought to screw something up, because there have been significant changes in server.lua and main.lua, and Servman is using old versions of those files...
-
Great idea! No, this is for like a cold, dark ramp start, like how this video begins: C6rg74vBtuQ
-
Yea, do not attempt to use Slmod with DCS: World 1.2.0. It will not work, and Slmodv5.3 uses files from DCS 1.1.1.1 that are no longer appropriate for DCSW 1.2.0. Slmodv6, with full DCS: World 1.2.0 compatibility, will be released this weekend, maybe as soon as tonight. Right now, in my current testing version, there are only two things that I know of that are still broken. Everything else works fine AFAIK :)
-
I have not had a problem getting Lua runtime errors to report, at least after the script has been initially loaded. Runtime errors in the initial loading of the script do not report though. However, the way that the server module is being loaded has changed somehow. ED has been upgrading the net gui, and somehow in the process, things have gotten a little borked with error reporting. So yea, if you have a compilation error, it won't be reported. It is easy to debug though... just make yourself a test function, or use this one I made: -- insert this script at the beginning of Scripts/net/main.lua function testfile(fileloc) local f = io.open(fileloc, 'r') if f then local fs = f:read('*all') if fs then local func, err = loadstring(fs) if func then local success, err = pcall(func) if not success then print('LUA RUNTIME ERROR!!! File "' .. fileloc .. '" contains a runtime error: ' .. err) else print('SUCCESS! File "' .. fileloc .. '" contains no syntax or runtime errors') end else print('LUA SYNTAX ERROR!!! Syntax error in file "' .. fileloc .. '", error: ' .. err) -- if the loadstring failed, err is the error message. end else print('WTF ERROR!!! Unable to read file "' .. fileloc .. '"!') -- I donno if this would ever happen... end else print('ERROR! INVALID FILE! Unable to open file "' .. fileloc .. '" for reading!') end end So, for example, I created a Lua error in Scripts/net/server.lua. Then I pasted the above function into the top of Scripts/net/main.lua, and below that, I put: testfile('./Scripts/net/server.lua') I put a "print('testing 123')" statement into server.lua, and also created a Lua runtime error by trying to index a nil value. This is what I see in dcs.lua now: 00000.174 UNKNOWN ?: testing 123 00000.174 UNKNOWN ?: LUA RUNTIME ERROR!!! File "./Scripts/net/server.lua" contains a runtime error: [string "-- Server hooks..."]:181: attempt to index global 'a' (a nil value) It is important that you run this code at the beginning of Scripts/net/main.lua, BEFORE require('server') is requested. Kind of annoying to work around, but not world-shattering.
-
Ok, I just got back from a long vacation, so I am a little behind. Could you be a little more specific as to what the problem is? Is it only Lua syntax errors that are unreported? Is it only Scripts/net mods that are effected? Anyway, I do think I remember an error reporting problem with dofile I noticed back in May. IIRC, you can solve it by changing the way dofile works: -- insert this script before you use dofile function dofile(fname) -- replaces the old dofile local f = io.open(fname, 'r') if f then local fs = f:read('*all') if fs then local func, err = loadstring(fs) if func then func() -- maybe could use pcall for any runtime errors, if that is an issue too? else print('dofile syntax error in file "' .. fname .. '", error: ' .. err) -- if the loadstring failed, err is the error message. end else print('dofile error: unable to read file "' .. fname .. '"!') -- I donno if this would ever happen... end else print('dofile error: unable to open file "' .. fname .. '" for reading!') end end Anyway, I hope to get back to Lua and testing this weekend, and I will probably notice whatever problem you are having pretty quickly as I adapt Slmod to DCS: World. I'll keep you updated.
-
Keep in mind that everything in there is a work in progress and subject to change. ED has not officially released this documentation yet. If it were possible to make that page access-protected, it would be.
-
No, the new run script does not replace Slmod, but one thing it does is makes a "scriptman" unit no longer necessary. Sorry, but I can't really tell you any more at this time.
-
Actually, in game, the AGM-65D will lock targets out to 9 nm, sometimes even further. I think it may be altitude related, and possibly also related to temperature of target background. I don't know for sure, though I do certainly seem to get the longer ranges at higher altitudes. And since I'm always at high altitude, I always get like 8-9 mile shots with my Mavericks :) There is no difficulty in killing SA-15s or SA-8s with them. The AGM-65H, on the other hand, doesn't seem to lock targets most of the times until just six miles, and of course, they don't work at all in low light level conditions. I never use them if I can help it.
-
DESTROYING THIS BODY GAINS YOU NOTHING. YOU HAVE ONLY DELAYED THE INEVITABLE. RELEASING CONTROL. Sorry, I can't help myself :D
-
ASSUMING DIRECT CONTROL ;)
-
They got boring, yes, but not when you only had like 30 mins - 1 hr to play. It was fun doing them for shorter time intervals. I certainly hope so, but I must judge the game as it currently exists, not as Blizzard aspires it to be. Remember all the broken promises made in regards to WoW? Well, why not? It certainly makes sense for Blizzard to skew the markets in ways that favor them. Unless what I have heard is wrong, Blizzard is intending to generate and sell items/gold themselves as well. Is this not true? Nope. You don't remember too well: Caster would divide extra stat points between energy and vitality. Caster also had to decide how much str and dex to get. IIRC, I actually had a few sorcs I put enough dex into to use a couple daggers with fairly high dex requirements. No, the old system was definitely broken too. I'd advocate a system closer to how many MMOs do it: talent points, with respec costs that increase with ever respec (and possibly, also with level), but reset on a monthly basis: to keep you from respecing completely for every boss fight. IMO, I feel that respeccing yourself for boss fights is just lame. I'm not saying using exactly talent points and respeccing and all that, I'm just saying that I feel such a system is much better than what we've got right now. I won't disagree there, the new system allows tons of experimentation. That's great. But let me point out that the old system, since it didn't require constant internet connection for single player also allowed this, if you simply took two minutes to do a google search and download a character/item generator. I don't necessarily have a problem with weapon DPS determining caster damage- but it should have limits. It should only apply for certain weapon types- for example, wands, staves, and daggers. Maybe axes and swords would work too, but at 50% reduction or something like that. Again, you have much more faith in Blizzard's promises than I do.
-
I bought Diablo 3, blindly trusting in the company (Blizzard) that has never released a bad game. After playing up to Act 3 Nightmare, here's my evaluation for Diablo 3: Pros: Fun combat system; much improved over Diablo 2. Game is stable (when available), well presented. Certainly more deserving of your $60 than Call of Battlefield: Modern Duty 3 etc. etc. clones. Cons: A LOT. 1) Let’s look at the item system first. In Diablo 2 (much more so after the expansion), there was an actual possibility to find good loot by yourself. There were bosses/dungeons you could farm for good loot. Every run where you would kill Mephisto or Pindleskin on Hell mode, your pulse would quicken a bit right before they died, and you'd get a little rush when you saw the gold text of a unique come flying out on the ground. Maybe you’d get a unique ring… would it be a worthless, ubiquitous Manald heal, or would it be a Stone of Jordan? (SOJ became pretty valuable and very rare in some of the latter ladders). That kind of rush/gambling/winning the jackpot feeling is one of the big things that kept you playing over and over again. Now, in Diablo 3, I think the chances of actually finding a good item have been reduced to nil. I have yet to find a legendary or set item. In normal mode, all the major bosses I killed dropped at least one rare, but now in nightmare mode, they have dropped nothing but blues. Furthermore, every single rare I have found has been utter garbage. Who in the heck is finding all these decent items I see on the auction house? Anyway, bosses have gone from pulse-quickening loot piñatas to boring tasks you must complete before moving onto the next act. Instead of actually finding any loot myself, it turns out all I need to do to get “good” loot is visit the vendors for random blues, and the action house if I give up with the vendors. So, now, good loot costs nothing but gold. How is it fun to farm gold again? Farming gold is the most annoying, boring, brainless task. I guess in retrospect, I should have expected this. Blizzard implemented the auction house, making it a lot easier to find all the items you need there. Furthermore, Blizzard wants to make the good items rare, probably so they can cheat and spawn them themselves, selling them for real cash. The problem is for them, in a few months, there will be no one around to buy their items, because the loot system, arguably the most addictive part of Diablo 2, has been totally destroyed in Diablo 3. 2) OK, so let’s move beyond the loot system. What about characters? Well, guess what- there is ZERO character customization now, basically. Apart from items, every character of a certain class is exactly the same. Granted- gameplay styles will differ, because you can only choose six of a myriad of skills to place on your action bar. And there are skill “runes” that allow you to modify the skills so they act slightly different. Blizzard might brag that there are millions of different “builds” for each class. But, any build can be completely changed with just a minute of time- just change which six skills you use, modify a few skill runes, and there- you’re done. I was trying my wizard out in a more “battle mage” configuration the other day, for example. After five minutes, I decided it sucked, and switched back. Now, I will grant some people could view this as a positive. But I don’t. Gone are the hard choices about which skills to use, what build to use. There are no more hard choices. Want to be a AOE wizard but pack a powerful punch on bosses? Just take 15 seconds to “respec” to use “Hydra” and “Diamond Skin” before the boss encounter, and you’ll roflpwn him. Also gone: any kind of stats/skill points/etc. You no longer need to look up the maximum strength/dex requirements of some end game armor/weapon you might want to use and ponder if it will be worth the sacrifice you will make to your energy/vitality. Nope. In Diablo 2, for example, I saw sorceresses running around with powerful protective items that were normally the domain of melee classes- these players had decided that the sacrifice of all those stat points into stats that were useless to the class was worth the benefits of wearing these powerful items. No such decisions exist in Diablo 3, because…. 3) There are no requirements for gear other than level, and sometimes, class. Want to be a wizard in full plate armor using a giant two-handed sword? You came to the right place! There are NO requirements/restrictions on what kind of gear you can use. Ok, a few items are class-specific, but that is it. So anyone can wear anything. Umm… I guess you could say Blizzard kept an open mind in game/class design, but they left their minds so open their brains just completely fell out of their heads… speaking of which… 4) So why would you want to be a wizard using a giant, two-handed sword? It’s not like it will increase your spell damage to have a big freaking blade… oh wait a second. IT DOES. In fact, with the removal of any kind of character customization and skill points, weapon DPS is the primary determining factor in how much spell damage caster classes do. So for a while, I had my wizard running around with a big, two-handed axe. How does this make any sense? The loot system has not only been destroyed through the inability to find any good items, but also through over-simplification. 5)No PvP. Ok, I admit to not being much of a PvP fan, but this is crazy- there is no PvP whatsoever in Diablo 3. I guess arenas were promised, but never delivered. I donno if Blizzard plans to bring them at all. 6) Contrived Story. Well, story is not a very important factor here, but I just felt that Diablo 3’s story line is just too contrived. It’s not interesting, really. I’ll not reveal any spoilers. 7) Last but certainly not least: Always on DRM. There is no way to play this game offline. You can play by yourself, but you must be connected to battle net. On launch day, many folks found themselves unable to connect at all. Instead, they got the infamous “Error 37”: Just yesterday, after a new patch, I thought I might play a little bit, and had my first meeting with this problem. Anyway, the ubiquity of this problem has spawned numerous rather funny internet memes: So overall…while combat is extremely fun and satisfying, the game's flaws prevent there being any point to the combat in the first place. Sadly, many of these flaws could be fixed, but Blizzard is stubborn: I suspect they are scared the kind of changes necessary would endanger their real money auction house they are looking forward to milking all their money out of. The problem is, after a few months, I don’t think there will be any folks around to milk. Anyway, I will be sure to be much more weary before I purchase any new Blizzard product in the future. Final score: 75/100. Comments: If the problems I described above sound like serious issues to you, wait for this game to come down in price, or don't buy at all. If what I described sounds like non-issues to you, then maybe you should buy Diablo 3: I will certainly grant that the combat is very fun and satisfying... until the combat is over, and you leave a big pile of useless white and grey items, and collect up all the yellow and blue items to take to the armorer for disenchantment.