@ -9,6 +9,7 @@ import engine.gameManager.ZoneManager;
@@ -9,6 +9,7 @@ import engine.gameManager.ZoneManager;
import engine.objects.* ;
import java.util.ArrayList ;
import java.util.concurrent.ThreadLocalRandom ;
public class simulateBootyCmd extends AbstractDevCmd {
public simulateBootyCmd ( ) {
@ -50,32 +51,14 @@ public class simulateBootyCmd extends AbstractDevCmd {
@@ -50,32 +51,14 @@ public class simulateBootyCmd extends AbstractDevCmd {
Enum . GameObjectType objType = target . getObjectType ( ) ;
int objectUUID = target . getObjectUUID ( ) ;
String output ;
output = "Booty Simulation:" + newline ;
switch ( objType ) {
case Building :
break ;
case PlayerCharacter :
break ;
case NPC :
break ;
case Mob :
Mob mob = ( Mob ) target ;
output + = "Name: " + mob . getName ( ) + newline ;
int max = ( int ) ( 4 . 882 * mob . level + 127 . 0 ) ;
if ( max > 320 ) {
max = 320 ;
}
int min = ( int ) ( 4 . 469 * mob . level - 3 . 469 ) ;
output + = "Roll Range: " + min + " - " + max + newline ;
output + = "Special Loot:" + newline ;
if ( mob . bootySet ! = 0 ) {
for ( BootySetEntry entry : NPCManager . _bootySetMap . get ( mob . bootySet ) ) {
@ -91,6 +74,7 @@ public class simulateBootyCmd extends AbstractDevCmd {
@@ -91,6 +74,7 @@ public class simulateBootyCmd extends AbstractDevCmd {
ArrayList < Item > Contracts = new ArrayList < Item > ( ) ;
ArrayList < Item > Offerings = new ArrayList < Item > ( ) ;
ArrayList < Item > OtherDrops = new ArrayList < Item > ( ) ;
ArrayList < Item > EquipmentDrops = new ArrayList < Item > ( ) ;
int failures = 0 ;
int goldAmount = 0 ;
for ( int i = 0 ; i < 100 ; + + i ) {
@ -128,10 +112,22 @@ public class simulateBootyCmd extends AbstractDevCmd {
@@ -128,10 +112,22 @@ public class simulateBootyCmd extends AbstractDevCmd {
} catch ( Exception ex ) {
failures + + ;
}
if ( mob . getEquip ( ) ! = null ) {
for ( MobEquipment me : mob . getEquip ( ) . values ( ) ) {
if ( me . getDropChance ( ) = = 0 )
continue ;
float equipmentRoll = ThreadLocalRandom . current ( ) . nextInt ( 99 ) + 1 ;
float dropChance = me . getDropChance ( ) * 100 ;
if ( equipmentRoll > ( dropChance ) )
continue ;
MobLoot ml = new MobLoot ( mob , me . getItemBase ( ) , false ) ;
if ( ml ! = null )
EquipmentDrops . add ( ml ) ;
}
}
int respawnTime = mob . getMobBase ( ) . getSpawnTime ( ) ;
if ( mob . spawnTime > 0 ) {
respawnTime = mob . spawnTime ;
}
output + = "MobBase BootySet: " + mob . getMobBase ( ) . bootySet + newline ;
output + = "Mob BootySet: " + mob . bootySet + newline ;
@ -145,18 +141,18 @@ public class simulateBootyCmd extends AbstractDevCmd {
@@ -145,18 +141,18 @@ public class simulateBootyCmd extends AbstractDevCmd {
output + = "HOTZONE TABLE [" + entry . bootyType + "] " + entry . lootTable + 1 + newline ;
}
}
output + = "Time Required To Gain Simulated Booty: " + respawnTime * 100 + " Seconds" + newline ;
output + = "GLASS DROPS: " + GlassItems . size ( ) + newline ;
output + = "RUNE DROPS: " + Runes . size ( ) + newline ;
output + = "CONTRACTS DROPS: " + Contracts . size ( ) + newline ;
for ( Item contract : Contracts ) {
output + = contract . getName ( ) + newline ;
}
output + = "RESOURCE DROPS: " + Resources . size ( ) + newline ;
output + = "OFFERINGS DROPPED: " + Offerings . size ( ) + newline ;
output + = "OTHER ITEMS DROPPED: " + OtherDrops . size ( ) + newline ;
output + = "ENCHANTED ITEMS DROPPED: " + OtherDrops . size ( ) + newline ;
output + = "TOTAL GOLD DROPPED: " + goldAmount + newline ;
output + = "EQUIPMENT DROPPED: " + EquipmentDrops . size ( ) + newline ;
output + = "FAILED ROLLS: " + failures + newline ;
break ;
default :
break ;
}
throwbackInfo ( pc , output ) ;
}