2022-04-30 09:41:17 -04:00
// • ▌ ▄ ·. ▄▄▄· ▄▄ • ▪ ▄▄· ▄▄▄▄· ▄▄▄· ▐▄▄▄ ▄▄▄ .
// ·██ ▐███▪▐█ ▀█ ▐█ ▀ ▪██ ▐█ ▌▪▐█ ▀█▪▐█ ▀█ •█▌ ▐█▐▌·
// ▐█ ▌▐▌▐█·▄█▀▀█ ▄█ ▀█▄▐█·██ ▄▄▐█▀▀█▄▄█▀▀█ ▐█▐ ▐▌▐▀▀▀
// ██ ██▌▐█▌▐█ ▪▐▌▐█▄▪▐█▐█▌▐███▌██▄▪▐█▐█ ▪▐▌██▐ █▌▐█▄▄▌
// ▀▀ █▪▀▀▀ ▀ ▀ ·▀▀▀▀ ▀▀▀·▀▀▀ ·▀▀▀▀ ▀ ▀ ▀▀ █▪ ▀▀▀
// Magicbane Emulator Project © 2013 - 2022
// www.magicbane.com
package engine.devcmd.cmds ;
import engine.devcmd.AbstractDevCmd ;
import engine.objects.AbstractGameObject ;
import engine.objects.ItemBase ;
import engine.objects.LootTable ;
import engine.objects.PlayerCharacter ;
/**
* @author Eighty
*/
public class MBDropCmd extends AbstractDevCmd {
2023-07-15 09:23:48 -04:00
public MBDropCmd ( ) {
2022-04-30 09:41:17 -04:00
super ( " mbdrop " ) ;
}
2023-07-15 09:23:48 -04:00
@Override
protected void _doCmd ( PlayerCharacter pcSender , String [ ] args ,
AbstractGameObject target ) {
String newline = " \ r \ n " ;
if ( args . length ! = 1 ) {
this . sendUsage ( pcSender ) ;
this . sendHelp ( pcSender ) ;
return ;
}
2022-04-30 09:41:17 -04:00
2023-07-15 09:23:48 -04:00
String output = " " ;
switch ( args [ 0 ] . toLowerCase ( ) ) {
case " clear " :
2022-04-30 09:41:17 -04:00
2023-07-15 09:23:48 -04:00
LootTable . contractCount = 0 ;
LootTable . dropCount = 0 ;
LootTable . glassCount = 0 ;
LootTable . runeCount = 0 ;
LootTable . rollCount = 0 ;
LootTable . resourceCount = 0 ;
2022-04-30 09:41:17 -04:00
2023-07-15 09:23:48 -04:00
LootTable . contractDroppedMap . clear ( ) ;
LootTable . glassDroppedMap . clear ( ) ;
LootTable . itemsDroppedMap . clear ( ) ;
LootTable . resourceDroppedMap . clear ( ) ;
LootTable . runeDroppedMap . clear ( ) ;
break ;
case " all " :
output = LootTable . dropCount + " items - ITEM NAME : DROP COUNT " + newline ;
for ( ItemBase ib : LootTable . itemsDroppedMap . keySet ( ) ) {
2022-04-30 09:41:17 -04:00
2023-07-15 09:23:48 -04:00
int dropCount = LootTable . itemsDroppedMap . get ( ib ) ;
output + = ib . getName ( ) + " : " + dropCount + newline ;
2022-04-30 09:41:17 -04:00
2023-07-15 09:23:48 -04:00
}
break ;
case " resource " :
output = LootTable . resourceCount + " Resources - ITEM NAME : DROP COUNT " + newline ;
for ( ItemBase ib : LootTable . resourceDroppedMap . keySet ( ) ) {
2022-04-30 09:41:17 -04:00
2023-07-15 09:23:48 -04:00
int dropCount = LootTable . resourceDroppedMap . get ( ib ) ;
output + = ib . getName ( ) + " : " + dropCount + newline ;
2022-04-30 09:41:17 -04:00
2023-07-15 09:23:48 -04:00
}
2022-04-30 09:41:17 -04:00
2023-07-15 09:23:48 -04:00
break ;
case " rune " :
2022-04-30 09:41:17 -04:00
2023-07-15 09:23:48 -04:00
output = LootTable . runeCount + " Runes - ITEM NAME : DROP COUNT " + newline ;
for ( ItemBase ib : LootTable . runeDroppedMap . keySet ( ) ) {
2022-04-30 09:41:17 -04:00
2023-07-15 09:23:48 -04:00
int dropCount = LootTable . runeDroppedMap . get ( ib ) ;
output + = ib . getName ( ) + " : " + dropCount + newline ;
2022-04-30 09:41:17 -04:00
2023-07-15 09:23:48 -04:00
}
break ;
case " contract " :
2022-04-30 09:41:17 -04:00
2023-07-15 09:23:48 -04:00
output = LootTable . contractCount + " Contracts - ITEM NAME : DROP COUNT " + newline ;
for ( ItemBase ib : LootTable . contractDroppedMap . keySet ( ) ) {
2022-04-30 09:41:17 -04:00
2023-07-15 09:23:48 -04:00
int dropCount = LootTable . contractDroppedMap . get ( ib ) ;
output + = ib . getName ( ) + " : " + dropCount + newline ;
2022-04-30 09:41:17 -04:00
2023-07-15 09:23:48 -04:00
}
break ;
2022-04-30 09:41:17 -04:00
2023-07-15 09:23:48 -04:00
case " glass " :
2022-04-30 09:41:17 -04:00
2023-07-15 09:23:48 -04:00
output = LootTable . glassCount + " Glass - ITEM NAME : DROP COUNT " + newline ;
for ( ItemBase ib : LootTable . glassDroppedMap . keySet ( ) ) {
2022-04-30 09:41:17 -04:00
2023-07-15 09:23:48 -04:00
int dropCount = LootTable . glassDroppedMap . get ( ib ) ;
output + = ib . getName ( ) + " : " + dropCount + newline ;
}
break ;
2022-04-30 09:41:17 -04:00
2023-07-15 09:23:48 -04:00
case " chance " :
float chance = ( float ) LootTable . dropCount / ( float ) LootTable . rollCount * 100 ;
output = LootTable . dropCount + " out of " + LootTable . rollCount + " items Dropped. chance = " + chance + '%' ;
2022-04-30 09:41:17 -04:00
2023-07-15 09:23:48 -04:00
break ;
2022-04-30 09:41:17 -04:00
2023-07-15 09:23:48 -04:00
default :
this . sendUsage ( pcSender ) ;
this . sendHelp ( pcSender ) ;
return ;
}
2022-04-30 09:41:17 -04:00
2023-07-15 09:23:48 -04:00
this . throwbackInfo ( pcSender , output ) ;
2022-04-30 09:41:17 -04:00
2023-07-15 09:23:48 -04:00
}
2022-04-30 09:41:17 -04:00
2023-07-15 09:23:48 -04:00
@Override
protected String _getUsageString ( ) {
2022-04-30 09:41:17 -04:00
return " ' /mbdrop all/resource/rune/contract/glass/chance/clear " ;
2023-07-15 09:23:48 -04:00
}
2022-04-30 09:41:17 -04:00
2023-07-15 09:23:48 -04:00
@Override
protected String _getHelpString ( ) {
2022-04-30 09:41:17 -04:00
return " Lists drops for server since a reboot. All lists all items and drops. chance is the overall chance items drop from mobs on server. (not including Equipment) " ;
2023-07-15 09:23:48 -04:00
}
2022-04-30 09:41:17 -04:00
}