@ -66,27 +66,25 @@ public enum LootManager {
}
}
public static void GenerateMobLoot ( Mob mob , boolean fromDeath ) {
public static void GenerateMobLoot ( Mob mob ) {
//determine if mob is in hotzone
//determine if mob is in hotzone
boolean inHotzone = ZoneManager . inHotZone ( mob . getLoc ( ) ) ;
boolean inHotzone = ZoneManager . inHotZone ( mob . getLoc ( ) ) ;
//iterate the booty sets
//iterate the booty sets
if ( mob . getMobBase ( ) . bootySet ! = 0 & & _bootySetMap . containsKey ( mob . getMobBase ( ) . bootySet ) = = true )
if ( mob . getMobBase ( ) . bootySet ! = 0 & & _bootySetMap . containsKey ( mob . getMobBase ( ) . bootySet ) = = true )
RunBootySet ( _bootySetMap . get ( mob . getMobBase ( ) . bootySet ) , mob , inHotzone , fromDeath ) ;
RunBootySet ( _bootySetMap . get ( mob . getMobBase ( ) . bootySet ) , mob , inHotzone ) ;
if ( mob . bootySet ! = 0 & & _bootySetMap . containsKey ( mob . bootySet ) = = true )
if ( mob . bootySet ! = 0 & & _bootySetMap . containsKey ( mob . bootySet ) = = true )
RunBootySet ( _bootySetMap . get ( mob . bootySet ) , mob , inHotzone , fromDeath ) ;
RunBootySet ( _bootySetMap . get ( mob . bootySet ) , mob , inHotzone ) ;
//lastly, check mobs inventory for godly or disc runes to send a server announcement
//lastly, check mobs inventory for godly or disc runes to send a server announcement
if ( ! fromDeath )
for ( Item it : mob . getInventory ( ) ) {
for ( Item it : mob . getInventory ( ) ) {
ItemBase ib = it . getItemBase ( ) ;
ItemBase ib = it . getItemBase ( ) ;
if ( ib = = null )
break ;
if ( ib . isDiscRune ( ) | | ib . getName ( ) . toLowerCase ( ) . contains ( "of the gods" ) ) {
if ( ib . isDiscRune ( ) | | ib . getName ( ) . toLowerCase ( ) . contains ( "of the gods" ) ) {
ChatSystemMsg chatMsg = new ChatSystemMsg ( null , mob . getName ( ) + " in " + mob . getParentZone ( ) . getName ( ) + " has found the " + ib . getName ( ) + ". Are you tough enough to take it?" ) ;
ChatSystemMsg chatMsg = new ChatSystemMsg ( null , mob . getName ( ) + " in " + mob . getParentZone ( ) . getName ( ) + " has found the " + ib . getName ( ) + ". Are you tough enough to take it?" ) ;
chatMsg . setMessageType ( 10 ) ;
chatMsg . setMessageType ( 10 ) ;
@ -97,16 +95,11 @@ public enum LootManager {
}
}
private static void RunBootySet ( ArrayList < BootySetEntry > entries , Mob mob , boolean inHotzone , boolean fromDeath ) {
private static void RunBootySet ( ArrayList < BootySetEntry > entries , Mob mob , boolean inHotzone ) {
boolean hotzoneWasRan = false ;
boolean hotzoneWasRan = false ;
float dropRate = 1 . 0f ;
float dropRate = 1 . 0f ;
if ( fromDeath ) {
GenerateEquipmentDrop ( mob ) ;
return ;
}
// Iterate all entries in this bootySet and process accordingly
// Iterate all entries in this bootySet and process accordingly
for ( BootySetEntry bse : entries ) {
for ( BootySetEntry bse : entries ) {
@ -338,7 +331,7 @@ public enum LootManager {
public static void GenerateEquipmentDrop ( Mob mob ) {
public static void GenerateEquipmentDrop ( Mob mob ) {
//do equipment here
//do equipment here
int dropCount = 0 ;
if ( mob . getEquip ( ) ! = null )
if ( mob . getEquip ( ) ! = null )
for ( MobEquipment me : mob . getEquip ( ) . values ( ) ) {
for ( MobEquipment me : mob . getEquip ( ) . values ( ) ) {
@ -353,11 +346,12 @@ public enum LootManager {
MobLoot ml = new MobLoot ( mob , me . getItemBase ( ) , false ) ;
MobLoot ml = new MobLoot ( mob , me . getItemBase ( ) , false ) ;
if ( ml ! = null ) {
if ( ml ! = null & & dropCount < 1 ) {
ml . setIsID ( true ) ;
ml . setIsID ( true ) ;
ml . setDurabilityCurrent ( ( short ) ( ml . getDurabilityCurrent ( ) - ThreadLocalRandom . current ( ) . nextInt ( 5 ) + 1 ) ) ;
ml . setDurabilityCurrent ( ( short ) ( ml . getDurabilityCurrent ( ) - ThreadLocalRandom . current ( ) . nextInt ( 5 ) + 1 ) ) ;
mob . getCharItemManager ( ) . addItemToInventory ( ml ) ;
mob . getCharItemManager ( ) . addItemToInventory ( ml ) ;
break ; // Exit on first successful roll.
dropCount = 1 ;
//break; // Exit on first successful roll.
}
}
}
}
}
}