better balanced, fixed items not saving damage (not backwards

compatible!)
v5stable
Ondřej Hruška 10 years ago
parent 70283ae34d
commit 36cda65699
  1. 4
      src/mightypork/rogue/world/entity/impl/EntityBrownRat.java
  2. 7
      src/mightypork/rogue/world/gen/rooms/StorageRoom.java
  3. 14
      src/mightypork/rogue/world/item/Item.java
  4. 11
      src/mightypork/rogue/world/item/ItemModel.java
  5. 9
      src/mightypork/rogue/world/item/Items.java

@ -65,12 +65,12 @@ public class EntityBrownRat extends Entity {
{
// drop rat stuff
if (Calc.rand.nextInt(2) == 0) {
if (Calc.rand.nextInt(2) != 0) {
getLevel().dropNear(getCoord(), Items.MEAT.createItem());
return;
}
if (Calc.rand.nextInt(4) == 0) {
if (Calc.rand.nextInt(3) == 0) {
getLevel().dropNear(getCoord(), Items.CHEESE.createItem());
return;
}

@ -17,12 +17,15 @@ public class StorageRoom extends SecretRoom {
{
int maxStuff = Calc.randInt(rand, 3, 5);
for (int i = 0; i < Calc.randInt(rand, 0, 2); i++) {
// at least one meat or cheese.
boolean oneMeat = rand.nextBoolean();
for (int i = 0; i < Calc.randInt(rand, oneMeat ? 1 : 0, 3); i++) {
map.addItemInArea(Items.MEAT.createItem(), min, max, 50);
if (--maxStuff == 0) return;
}
for (int i = 0; i < Calc.randInt(rand, 0, 2); i++) {
for (int i = 0; i < Calc.randInt(rand, oneMeat ? 0 : 1, 2); i++) {
map.addItemInArea(Items.CHEESE.createItem(), min, max, 50);
if (--maxStuff == 0) return;
}

@ -5,15 +5,17 @@ import java.io.IOException;
import mightypork.gamecore.logging.Log;
import mightypork.gamecore.util.annot.DefaultImpl;
import mightypork.gamecore.util.ion.IonBundle;
import mightypork.gamecore.util.ion.IonInput;
import mightypork.gamecore.util.ion.IonObjBlob;
import mightypork.gamecore.util.ion.IonObjBundled;
import mightypork.gamecore.util.ion.IonOutput;
import mightypork.gamecore.util.math.Calc;
import mightypork.gamecore.util.math.constraints.rect.Rect;
import mightypork.rogue.world.PlayerFacade;
public abstract class Item implements IonObjBlob {
public abstract class Item implements IonObjBundled {
private final ItemModel model;
private ItemRenderer renderer;
@ -42,17 +44,19 @@ public abstract class Item implements IonObjBlob {
@Override
@DefaultImpl
public void save(IonOutput out) throws IOException
public void save(IonBundle out) throws IOException
{
out.writeIntShort(amount);
out.put("c", amount);
out.put("u", uses);
}
@Override
@DefaultImpl
public void load(IonInput in) throws IOException
public void load(IonBundle in) throws IOException
{
amount = in.readIntShort();
amount = in.get("c", amount);
uses = in.get("u", uses);
}

@ -3,6 +3,8 @@ package mightypork.rogue.world.item;
import java.io.IOException;
import mightypork.gamecore.util.ion.Ion;
import mightypork.gamecore.util.ion.IonBundle;
import mightypork.gamecore.util.ion.IonInput;
import mightypork.gamecore.util.ion.IonOutput;
import mightypork.gamecore.util.math.Calc;
@ -46,7 +48,7 @@ public final class ItemModel {
}
public Item loadItem(IonInput in) throws IOException
public Item loadItem(IonBundle in) throws IOException
{
final Item t = createItem();
t.load(in);
@ -54,11 +56,10 @@ public final class ItemModel {
}
public void saveItem(IonOutput out, Item tile) throws IOException
public void saveItem(IonBundle out, Item item) throws IOException
{
if (itemClass != tile.getClass()) throw new RuntimeException("Item class mismatch.");
tile.save(out);
if (itemClass != item.getClass()) throw new RuntimeException("Item class mismatch.");
item.save(out);
}

@ -4,6 +4,7 @@ package mightypork.rogue.world.item;
import java.io.IOException;
import java.util.Collection;
import mightypork.gamecore.util.ion.IonBundle;
import mightypork.gamecore.util.ion.IonInput;
import mightypork.gamecore.util.ion.IonOutput;
import mightypork.rogue.world.item.impl.active.ItemHeartPiece;
@ -64,9 +65,8 @@ public final class Items {
public static Item loadItem(IonInput in) throws IOException
{
final int id = in.readIntByte();
final ItemModel model = get(id);
return model.loadItem(in);
return model.loadItem(in.readBundle());
}
@ -75,7 +75,10 @@ public final class Items {
final ItemModel model = item.getModel();
out.writeIntByte(model.id);
model.saveItem(out, item);
IonBundle ib = new IonBundle();
model.saveItem(ib, item);
out.writeBundle(ib);
}

Loading…
Cancel
Save