package ru.alastar.game.systems; import java.util.Hashtable; import ru.alastar.game.CraftInfo; import ru.alastar.game.Entity; import ru.alastar.game.Inventory; import ru.alastar.game.Item; import ru.alastar.main.net.Server; public class CraftSystem { public static Hashtable<String, CraftInfo> crafts = new Hashtable<String, CraftInfo>(); public static void registerCraft(String s, CraftInfo c) { crafts.put(s, c); } public static void tryCraft(String string, int i, Entity e) { // Main.Log("[DEBUG]", "try craft, i: " + i + " name: " + string); try { for (int c = 0; c < i; ++c) { CraftInfo ci = crafts.get(string.toLowerCase()); if (ci != null) { if (ci.skillVal <= e.skills.get(ci.skill).value) { if (Server.haveItemSet(e, ci.neededItems)) { if (SkillsSystem.getCraftSkillChance(ci.skillVal, e.skills.get(ci.skill)) > Server.random .nextFloat()) { Item item = new Item(Server.getFreeItemId(), e.id, ci.caption, i, e.body.getPosition().x, e.body.getPosition().y, e.z, ci.eqType, ci.type, ci.attributes, e.world.id); Inventory inv = Server.getInventory(e); if (inv != null) inv.AddItem(item); SkillsSystem.tryRaiseSkill(e, e.skills.get(ci.skill)); for (String s : ci.neededItems) { Server.consumeItem(e, s); } Server.warnEntity(e, "You succesfully created " + ci.caption); } else { Server.warnEntity(e, "You failed to create " + ci.caption); SkillsSystem.tryRaiseSkill(e, e.skills.get(ci.skill)); } } else { Server.warnEntity(e, "You dont have needed items for crafting " + ci.caption + "\n Needed items is:\n"); for (String str : ci.neededItems) { Server.warnEntity(e, " - " + str + "\n"); } } } else Server.warnEntity(e, "You have too little skill to create " + ci.caption); } else Server.warnEntity(e, "There's no item with given caption"); } } catch (Exception e1) { Server.handleError(e1); } } }