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
}