65 lines
2.6 KiB
Java
65 lines
2.6 KiB
Java
package electroblob.wizardry;
|
|
|
|
import java.util.Random;
|
|
|
|
import electroblob.wizardry.item.ItemScroll;
|
|
import electroblob.wizardry.item.ItemSpellBook;
|
|
import electroblob.wizardry.item.ItemWand;
|
|
import electroblob.wizardry.item.ItemWizardArmour;
|
|
import electroblob.wizardry.spell.Spell;
|
|
import net.minecraft.inventory.IInventory;
|
|
import net.minecraft.item.ItemStack;
|
|
import net.minecraft.util.WeightedRandomChestContent;
|
|
import net.minecraftforge.common.ChestGenHooks;
|
|
|
|
public class WeightedRandomSpellBook extends WeightedRandomChestContent{
|
|
|
|
public WeightedRandomSpellBook(ItemStack par1ItemStack, int par2, int par3,
|
|
int par4) {
|
|
super(par1ItemStack, par2, par3, par4);
|
|
}
|
|
|
|
/* A brief comment about dungeon loot:
|
|
* Tiers are weighted as per usual. Elements all have equal chance, INCLUDING simple stuff. The main reason for
|
|
* this is that dungeon loot is not that common anyway, so making elemental gear even rarer would be too much.
|
|
*/
|
|
|
|
protected ItemStack[] generateChestContent(Random random, IInventory newInventory){
|
|
|
|
if(theItemId.getItem() instanceof ItemSpellBook){
|
|
|
|
theItemId = new ItemStack(theItemId.getItem(), 1, WizardryUtilities.getStandardWeightedRandomSpellId(random));
|
|
|
|
}else if(theItemId.getItem() instanceof ItemWand){
|
|
|
|
theItemId = new ItemStack(WizardryUtilities.getWand(EnumTier.BASIC, EnumElement.values()[random.nextInt(EnumElement.values().length)]));
|
|
|
|
}else if(theItemId.getItem() instanceof ItemWizardArmour){
|
|
|
|
theItemId = new ItemStack(WizardryUtilities.getArmour(EnumElement.values()[random.nextInt(EnumElement.values().length)], random.nextInt(3)));
|
|
|
|
}else if(theItemId.getItem() instanceof ItemScroll){
|
|
|
|
int spellId = WizardryUtilities.getStandardWeightedRandomSpellId(random, true);
|
|
theItemId = new ItemStack(theItemId.getItem(), 1, spellId);
|
|
|
|
}else if(theItemId.getItem() == Wizardry.condenserUpgrade){
|
|
|
|
switch(random.nextInt(8)){
|
|
case 0: theItemId = new ItemStack(Wizardry.condenserUpgrade); break;
|
|
case 1: theItemId = new ItemStack(Wizardry.siphonUpgrade); break;
|
|
case 2: theItemId = new ItemStack(Wizardry.rangeUpgrade); break;
|
|
case 3: theItemId = new ItemStack(Wizardry.cooldownUpgrade); break;
|
|
case 4: theItemId = new ItemStack(Wizardry.durationUpgrade); break;
|
|
case 5: theItemId = new ItemStack(Wizardry.storageUpgrade); break;
|
|
case 6: theItemId = new ItemStack(Wizardry.blastUpgrade); break;
|
|
case 7: theItemId = new ItemStack(Wizardry.attunementUpgrade); break;
|
|
}
|
|
|
|
}
|
|
|
|
return ChestGenHooks.generateStacks(random, theItemId, theMinimumChanceToGenerateItem, theMaximumChanceToGenerateItem);
|
|
}
|
|
|
|
}
|