PDA

View Full Version : No duplicate loot


Ueguvil
05-13-2020, 10:16 AM
Lets say I want a raid mob to drop 3 unique pieces of loot from a single lootdrop, the current lootdrop functionality doesn't seem to have a way for me to do that. So instead I'm looking at adding loot through a Perl script instead. Here's what I've got so far:


sub EVENT_SPAWN{
my @item_PHARA = (1628, 1845, 1848, 2377, 10845, 10851, 10912, 10913, 24648); #loot list
my $itemlist = @item_PHARA;
my $item1 = $item_PHARA[plugin::RandomRange(0,$itemlist)];
quest::addloot($item1, 0, 0);

@item_PHARA2 = grep {$_ != $item1 } @item_PHARA; #remove first loot from loot array, then draw another item
my $itemlist2 = @item_PHARA2;
my $item2 = $item_PHARA2[plugin::RandomRange(0,$itemlist2)];
quest::addloot($item2, 0, 0);

@item_PHARA3 = grep {$_ != $item2 } @item_PHARA2; #remove second loot from loot array, then draw another item
my $itemlist3 = @item_PHARA3;
my $item3 = $item_PHARA3[plugin::RandomRange(0,$itemlist3)];
quest::addloot($item3, 0, 0);
}


It seems to mostly work, only problem is about 40% of the time only 2 loots are added instead of 3. No clue if I'm using the grep function correctly, I tried googling how to remove a value from an array and that seemed to be a potential solution.

Thanks for looking :)

Ueguvil
05-13-2020, 12:42 PM
Fixed it and cut some code out that I'm sure was unnecessary (just finding snippets from around the forums)


sub EVENT_SPAWN{
my @item_PHARA = (1628, 1845, 1848, 2377, 10845, 10851, 10912, 10913, 24648);
my $item1 = quest::ChooseRandom( @item_PHARA ) ;
quest::addloot($item1, 0, 0);

@item_PHARA2 = grep {$_ != $item1 } @item_PHARA;
my $item2 = quest::ChooseRandom( @item_PHARA2 );
quest::addloot($item2, 0, 0);

@item_PHARA3 = grep {$_ != $item2 } @item_PHARA2;
my $item3 = quest::ChooseRandom( @item_PHARA3 ) ;
quest::addloot($item3, 0, 0);
}

demonstar55
05-13-2020, 01:27 PM
I wouldn't be against adding this to our loot tables code. Could be useful for custom servers, don't think live has this behavior :P

Ueguvil
05-13-2020, 02:22 PM
I wouldn't be against adding this to our loot tables code. Could be useful for custom servers, don't think live has this behavior :P

Honestly I thought that's what mindrop would do. Makes sense to me that having a lootdrop with:

Minimum Drop: 3 Drop Limit: 3 Probability: 100% Multiplier: 1

would give you 3 different items from within that particular loot drop, dependent on their individual drop chance. Whereas:

Minimum Drop: 1 Drop Limit: 1 Probability: 100% Multiplier: 3

would be three separate rolls for the entire lootdrop, which could result in duplicate items being picked. Right now I don't believe there's any difference between the two. Probably because as you say, Live likely doesn't have this behavior anyway.

demonstar55
05-13-2020, 04:31 PM
Nope. Not what it is :P

chrsschb
05-14-2020, 01:30 PM
I'd be cool with having this functionality, although I get around it by just splitting the loot tables into multiple lootdrops. Only real issue I have with loottables is how streaky they are (preferring the first and last drop in the table).