//Update role specific features of a monster public static void updateRole(Monster monster, Quinoa quinoa) { int stockSize = 0; int hour = quinoa.getHour(); switch(monster.role) { case MonsterRole.NULL: break; case MonsterRole.BROTHER: //don't let them starve if(monster.stats.getCurrentHunger() > MonsterStats.MAX_HUNGER / 2) { monster.stats.setCurrentHunger(0); } break; case MonsterRole.BANKER: if(monster.inventory.wealth < (monster.inventory.maxWealth / 2)) { monster.inventory.wealth = (monster.inventory.maxWealth / 2); } //don't let them starve if(monster.stats.getCurrentHunger() > MonsterStats.MAX_HUNGER / 2) { monster.stats.setCurrentHunger(0); } break; case MonsterRole.CHEF: //Have food for sale at certain times of day if(hour == 5 || hour == 11 || hour == 17) { monster.inventory.getItems().Clear(); stockSize = 15 + RandomNumber.RandomInteger(5); for(int i=0; i < stockSize; i++) { Item newItem = ItemManager.getRandomItem(ItemCategory.FOOD, true); newItem.itemState = ItemState.INVENTORY; if(!monster.inventory.Full) { if(!monster.inventory.stackItem(newItem)) { monster.inventory.addItem(newItem); } } } } else if(hour >= 19) { monster.inventory.getItems().Clear(); } //don't let them starve if(monster.stats.getCurrentHunger() > MonsterStats.MAX_HUNGER / 2) { monster.stats.setCurrentHunger(0); } //give spending money if(monster.inventory.wealth < 1000) { monster.inventory.wealth = 1200; } break; case MonsterRole.HANDYMAN: if(monster.inventory.getItems().Count == 0 || hour == 11) { monster.inventory.getItems().Clear(); stockSize = 6 + RandomNumber.RandomInteger(5); for(int i=0; i < stockSize; i++) { Item newItem = ItemManager.getRandomItem(ItemCategory.TOOL, true); newItem.stackSize = 1 + RandomNumber.RandomInteger(newItem.maxStackSize - 1); newItem.itemState = ItemState.INVENTORY; if(!monster.inventory.Full) { monster.inventory.addItem(newItem); } } stockSize = 1 + RandomNumber.RandomInteger(3); for(int i=0; i < stockSize; i++) { Item newItem = ItemManager.getRandomItem(ItemCategory.LIGHT, true); newItem.stackSize = 1 + RandomNumber.RandomInteger(newItem.maxStackSize - 1); newItem.itemState = ItemState.INVENTORY; if(!monster.inventory.Full) { monster.inventory.addItem(newItem); } } stockSize = 3 + RandomNumber.RandomInteger(2); for(int i=0; i < stockSize; i++) { Item newItem = ItemManager.getRandomItem(ItemCategory.MATERIAL, true); newItem.stackSize = 1 + RandomNumber.RandomInteger(newItem.maxStackSize - 1); newItem.itemState = ItemState.INVENTORY; if(!monster.inventory.Full) { monster.inventory.addItem(newItem); } } } //don't let them starve if(monster.stats.getCurrentHunger() > MonsterStats.MAX_HUNGER / 2) { monster.stats.setCurrentHunger(0); } //give spending money if(monster.inventory.wealth < 1000) { monster.inventory.wealth = 1200; } break; } }