Initial Commit
This commit is contained in:
134
src/main/java/mod/sin/actions/ArenaEscapeAction.java
Normal file
134
src/main/java/mod/sin/actions/ArenaEscapeAction.java
Normal file
@@ -0,0 +1,134 @@
|
||||
package mod.sin.actions;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.logging.Level;
|
||||
import java.util.logging.Logger;
|
||||
import org.gotti.wurmunlimited.modsupport.actions.ActionPerformer;
|
||||
import org.gotti.wurmunlimited.modsupport.actions.BehaviourProvider;
|
||||
import org.gotti.wurmunlimited.modsupport.actions.ModAction;
|
||||
import org.gotti.wurmunlimited.modsupport.actions.ModActions;
|
||||
|
||||
import com.wurmonline.server.Server;
|
||||
import com.wurmonline.server.ServerEntry;
|
||||
import com.wurmonline.server.Servers;
|
||||
import com.wurmonline.server.behaviours.Action;
|
||||
import com.wurmonline.server.behaviours.ActionEntry;
|
||||
import com.wurmonline.server.creatures.Creature;
|
||||
import com.wurmonline.server.items.Item;
|
||||
import com.wurmonline.server.items.ItemList;
|
||||
import com.wurmonline.server.players.Player;
|
||||
|
||||
public class ArenaEscapeAction implements ModAction {
|
||||
private static Logger logger = Logger.getLogger(ArenaEscapeAction.class.getName());
|
||||
|
||||
private final short actionId;
|
||||
private final ActionEntry actionEntry;
|
||||
|
||||
public ArenaEscapeAction() {
|
||||
logger.log(Level.WARNING, "ArenaEscapeAction()");
|
||||
|
||||
actionId = (short) ModActions.getNextActionId();
|
||||
actionEntry = ActionEntry.createEntry(
|
||||
actionId,
|
||||
"Escape the Arena",
|
||||
"escaping",
|
||||
new int[] { 6 /* ACTION_TYPE_NOMOVE */ } // 6 /* ACTION_TYPE_NOMOVE */, 48 /* ACTION_TYPE_ENEMY_ALWAYS */, 36 /* ACTION_TYPE_ALWAYS_USE_ACTIVE_ITEM */
|
||||
);
|
||||
ModActions.registerAction(actionEntry);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public BehaviourProvider getBehaviourProvider()
|
||||
{
|
||||
return new BehaviourProvider() {
|
||||
// Menu with activated object
|
||||
@Override
|
||||
public List<ActionEntry> getBehavioursFor(Creature performer, Item source, Item object)
|
||||
{
|
||||
return this.getBehavioursFor(performer, object);
|
||||
}
|
||||
|
||||
// Menu without activated object
|
||||
@Override
|
||||
public List<ActionEntry> getBehavioursFor(Creature performer, Item object)
|
||||
{
|
||||
if(performer instanceof Player && object != null && (object.getTemplateId() == ItemList.bodyBody || object.getTemplateId() == ItemList.bodyHand) && Servers.localServer.PVPSERVER) {
|
||||
return Arrays.asList(actionEntry);
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
@Override
|
||||
public ActionPerformer getActionPerformer()
|
||||
{
|
||||
return new ActionPerformer() {
|
||||
|
||||
@Override
|
||||
public short getActionId() {
|
||||
return actionId;
|
||||
}
|
||||
|
||||
// Without activated object
|
||||
@Override
|
||||
public boolean action(Action act, Creature performer, Item target, short action, float counter)
|
||||
{
|
||||
try{
|
||||
if(performer instanceof Player){
|
||||
if(!Servers.localServer.PVPSERVER){
|
||||
performer.getCommunicator().sendNormalServerMessage("You must be in the Arena in order to escape it!");
|
||||
return true;
|
||||
}
|
||||
if(performer.isStealth()){
|
||||
performer.getCommunicator().sendNormalServerMessage("You cannot escape while stealthed.");
|
||||
return true;
|
||||
}
|
||||
if(performer.getEnemyPresense() > 0 || performer.isFighting()){
|
||||
performer.getCommunicator().sendNormalServerMessage("Nearby enemies prevent your escape. Clear the area and try again.");
|
||||
return true;
|
||||
}
|
||||
if(counter == 1.0f){
|
||||
performer.getCommunicator().sendNormalServerMessage("You prepare your body and mind to transfer to another realm.");
|
||||
act.setTimeLeft(1200);
|
||||
performer.sendActionControl("Preparing", true, act.getTimeLeft());
|
||||
}else if(counter * 10f > performer.getCurrentAction().getTimeLeft()){
|
||||
ServerEntry targetserver = Servers.localServer.serverWest;
|
||||
if(targetserver == null){
|
||||
performer.getCommunicator().sendNormalServerMessage("Error: Something went wrong [TARGETSERVER=NULL].");
|
||||
return true;
|
||||
}
|
||||
if (!targetserver.isAvailable(performer.getPower(), true)) {
|
||||
performer.getCommunicator().sendNormalServerMessage(targetserver.name + " is not currently available.");
|
||||
return true;
|
||||
}
|
||||
performer.getCommunicator().sendNormalServerMessage("You successfully escape the arena.");
|
||||
performer.getCommunicator().sendNormalServerMessage("You transfer to " + targetserver.name + ".");
|
||||
Server.getInstance().broadCastAction(performer.getName() + " transfers to " + targetserver.name + ".", performer, 5);
|
||||
int tilex = targetserver.SPAWNPOINTJENNX;
|
||||
int tiley = targetserver.SPAWNPOINTJENNY;
|
||||
((Player)performer).sendTransfer(Server.getInstance(), targetserver.INTRASERVERADDRESS, Integer.parseInt(targetserver.INTRASERVERPORT), targetserver.INTRASERVERPASSWORD, targetserver.id, tilex, tiley, true, false, performer.getKingdomId());
|
||||
((Player)performer).transferCounter = 30;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}catch(Exception e){
|
||||
e.printStackTrace();
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean action(Action act, Creature performer, Item source, Item target, short action, float counter)
|
||||
{
|
||||
return this.action(act, performer, target, action, counter);
|
||||
}
|
||||
|
||||
|
||||
}; // ActionPerformer
|
||||
}
|
||||
}
|
||||
135
src/main/java/mod/sin/actions/ArenaTeleportAction.java
Normal file
135
src/main/java/mod/sin/actions/ArenaTeleportAction.java
Normal file
@@ -0,0 +1,135 @@
|
||||
package mod.sin.actions;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.logging.Level;
|
||||
import java.util.logging.Logger;
|
||||
import org.gotti.wurmunlimited.modsupport.actions.ActionPerformer;
|
||||
import org.gotti.wurmunlimited.modsupport.actions.BehaviourProvider;
|
||||
import org.gotti.wurmunlimited.modsupport.actions.ModAction;
|
||||
import org.gotti.wurmunlimited.modsupport.actions.ModActions;
|
||||
|
||||
import com.wurmonline.server.Server;
|
||||
import com.wurmonline.server.ServerEntry;
|
||||
import com.wurmonline.server.Servers;
|
||||
import com.wurmonline.server.behaviours.Action;
|
||||
import com.wurmonline.server.behaviours.ActionEntry;
|
||||
import com.wurmonline.server.creatures.Creature;
|
||||
import com.wurmonline.server.items.Item;
|
||||
import com.wurmonline.server.items.ItemList;
|
||||
import com.wurmonline.server.players.Player;
|
||||
|
||||
public class ArenaTeleportAction implements ModAction {
|
||||
private static Logger logger = Logger.getLogger(ArenaTeleportAction.class.getName());
|
||||
|
||||
private final short actionId;
|
||||
private final ActionEntry actionEntry;
|
||||
|
||||
public ArenaTeleportAction() {
|
||||
logger.log(Level.WARNING, "ArenaTeleport()");
|
||||
|
||||
actionId = (short) ModActions.getNextActionId();
|
||||
actionEntry = ActionEntry.createEntry(
|
||||
actionId,
|
||||
"Teleport to Arena",
|
||||
"preparing for combat",
|
||||
new int[] { 6 /* ACTION_TYPE_NOMOVE */ } // 6 /* ACTION_TYPE_NOMOVE */, 48 /* ACTION_TYPE_ENEMY_ALWAYS */, 36 /* ACTION_TYPE_ALWAYS_USE_ACTIVE_ITEM */
|
||||
);
|
||||
ModActions.registerAction(actionEntry);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public BehaviourProvider getBehaviourProvider()
|
||||
{
|
||||
return new BehaviourProvider() {
|
||||
// Menu with activated object
|
||||
@Override
|
||||
public List<ActionEntry> getBehavioursFor(Creature performer, Item source, Item object)
|
||||
{
|
||||
return this.getBehavioursFor(performer, object);
|
||||
}
|
||||
|
||||
// Menu without activated object
|
||||
@Override
|
||||
public List<ActionEntry> getBehavioursFor(Creature performer, Item object)
|
||||
{
|
||||
if(performer instanceof Player && object != null && (object.getTemplateId() == ItemList.bodyBody || object.getTemplateId() == ItemList.bodyHand) && Servers.localServer.id == 567) {
|
||||
return Arrays.asList(actionEntry);
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
@Override
|
||||
public ActionPerformer getActionPerformer()
|
||||
{
|
||||
return new ActionPerformer() {
|
||||
|
||||
@Override
|
||||
public short getActionId() {
|
||||
return actionId;
|
||||
}
|
||||
|
||||
// Without activated object
|
||||
@Override
|
||||
public boolean action(Action act, Creature performer, Item target, short action, float counter)
|
||||
{
|
||||
try{
|
||||
if(performer instanceof Player){
|
||||
if(Servers.localServer.id != 567){
|
||||
performer.getCommunicator().sendNormalServerMessage("You cannot enter the arena from here.");
|
||||
return true;
|
||||
}
|
||||
if(counter == 1.0f){
|
||||
performer.getCommunicator().sendNormalServerMessage("You sit and begin to transfer your mind.");
|
||||
act.setTimeLeft(600);
|
||||
performer.sendActionControl("Transferring", true, act.getTimeLeft());
|
||||
}else if(act.currentSecond() == 10){
|
||||
performer.getCommunicator().sendAlertServerMessage("You are about to enter a PvP environment.", (byte) 3);
|
||||
}else if(act.currentSecond() == 20){
|
||||
performer.getCommunicator().sendNormalServerMessage("Death will leave your corpse and return you here. Anyone may loot your corpse in the arena.", (byte) 3);
|
||||
}else if(act.currentSecond() == 30){
|
||||
performer.getCommunicator().sendNormalServerMessage("Upon transfer, you will be placed in a random location. This could be safely outside of danger, or directly on a group of enemies.", (byte) 3);
|
||||
}else if(act.currentSecond() == 40){
|
||||
performer.getCommunicator().sendNormalServerMessage("You can equip creatures such as horses by simply leading them. Taming is not required in the Arena.", (byte) 3);
|
||||
}else if(act.currentSecond() == 55){
|
||||
performer.getCommunicator().sendNormalServerMessage("It appears you have accepted these conditions. Transferring to the arena. Good luck.", (byte) 3);
|
||||
}else if(counter * 10f > performer.getCurrentAction().getTimeLeft()){
|
||||
ServerEntry targetserver = Servers.localServer.serverEast;
|
||||
if(targetserver == null){
|
||||
performer.getCommunicator().sendNormalServerMessage("Error: Something went wrong [TARGETSERVER=NULL].");
|
||||
return true;
|
||||
}
|
||||
if (!targetserver.isAvailable(performer.getPower(), true)) {
|
||||
performer.getCommunicator().sendNormalServerMessage(targetserver.name + " is not currently available.");
|
||||
return true;
|
||||
}
|
||||
performer.getCommunicator().sendNormalServerMessage("You transfer to " + targetserver.name + ".");
|
||||
Server.getInstance().broadCastAction(performer.getName() + " transfers to " + targetserver.name + ".", performer, 5);
|
||||
int tilex = 128+Server.rand.nextInt(768);
|
||||
int tiley = 128+Server.rand.nextInt(768);
|
||||
((Player)performer).sendTransfer(Server.getInstance(), targetserver.INTRASERVERADDRESS, Integer.parseInt(targetserver.INTRASERVERPORT), targetserver.INTRASERVERPASSWORD, targetserver.id, tilex, tiley, true, false, performer.getKingdomId());
|
||||
((Player)performer).transferCounter = 30;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}catch(Exception e){
|
||||
e.printStackTrace();
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean action(Action act, Creature performer, Item source, Item target, short action, float counter)
|
||||
{
|
||||
return this.action(act, performer, target, action, counter);
|
||||
}
|
||||
|
||||
|
||||
}; // ActionPerformer
|
||||
}
|
||||
}
|
||||
150
src/main/java/mod/sin/actions/ReceiveMailAction.java
Normal file
150
src/main/java/mod/sin/actions/ReceiveMailAction.java
Normal file
@@ -0,0 +1,150 @@
|
||||
package mod.sin.actions;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.HashSet;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import java.util.logging.Level;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
import org.gotti.wurmunlimited.modsupport.actions.ActionPerformer;
|
||||
import org.gotti.wurmunlimited.modsupport.actions.BehaviourProvider;
|
||||
import org.gotti.wurmunlimited.modsupport.actions.ModAction;
|
||||
import org.gotti.wurmunlimited.modsupport.actions.ModActions;
|
||||
|
||||
import com.wurmonline.server.Items;
|
||||
import com.wurmonline.server.NoSuchItemException;
|
||||
import com.wurmonline.server.behaviours.Action;
|
||||
import com.wurmonline.server.behaviours.ActionEntry;
|
||||
import com.wurmonline.server.creatures.Creature;
|
||||
import com.wurmonline.server.items.Item;
|
||||
import com.wurmonline.server.items.WurmMail;
|
||||
import com.wurmonline.server.players.Player;
|
||||
|
||||
public class ReceiveMailAction implements ModAction {
|
||||
private static Logger logger = Logger.getLogger(ReceiveMailAction.class.getName());
|
||||
|
||||
private final short actionId;
|
||||
private final ActionEntry actionEntry;
|
||||
|
||||
public ReceiveMailAction() {
|
||||
logger.log(Level.WARNING, "ReceiveMailAction()");
|
||||
|
||||
actionId = (short) ModActions.getNextActionId();
|
||||
actionEntry = ActionEntry.createEntry(
|
||||
actionId,
|
||||
"Receive all mail",
|
||||
"receiving",
|
||||
new int[] { 6 /* ACTION_TYPE_NOMOVE */ } // 6 /* ACTION_TYPE_NOMOVE */, 48 /* ACTION_TYPE_ENEMY_ALWAYS */, 36 /* ACTION_TYPE_ALWAYS_USE_ACTIVE_ITEM */
|
||||
);
|
||||
ModActions.registerAction(actionEntry);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public BehaviourProvider getBehaviourProvider()
|
||||
{
|
||||
return new BehaviourProvider() {
|
||||
// Menu with activated object
|
||||
@Override
|
||||
public List<ActionEntry> getBehavioursFor(Creature performer, Item source, Item object)
|
||||
{
|
||||
return this.getBehavioursFor(performer, object);
|
||||
}
|
||||
|
||||
// Menu without activated object
|
||||
@Override
|
||||
public List<ActionEntry> getBehavioursFor(Creature performer, Item object)
|
||||
{
|
||||
if(performer instanceof Player && object != null && object.isMailBox() && object.getSpellCourierBonus() > 0f) {
|
||||
return Arrays.asList(actionEntry);
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
@Override
|
||||
public ActionPerformer getActionPerformer()
|
||||
{
|
||||
return new ActionPerformer() {
|
||||
|
||||
@Override
|
||||
public short getActionId() {
|
||||
return actionId;
|
||||
}
|
||||
|
||||
// Without activated object
|
||||
@Override
|
||||
public boolean action(Action act, Creature performer, Item target, short action, float counter)
|
||||
{
|
||||
if(performer instanceof Player){
|
||||
Player player = (Player) performer;
|
||||
if (!target.isMailBox()){
|
||||
player.getCommunicator().sendSafeServerMessage("You can only receive mail at a mailbox.");
|
||||
return true;
|
||||
}
|
||||
if(target.getSpellCourierBonus() <= 0f){
|
||||
player.getCommunicator().sendSafeServerMessage("The mailbox must be enchanted before receiving mail.");
|
||||
return true;
|
||||
}
|
||||
if(!performer.isWithinDistanceTo(target.getPosX(), target.getPosY(), target.getPosZ(), 4.0f)){
|
||||
player.getCommunicator().sendSafeServerMessage("You must be closer to collect mail.");
|
||||
return true;
|
||||
}
|
||||
if(!target.isEmpty(false)){
|
||||
player.getCommunicator().sendSafeServerMessage("Empty the mailbox first.");
|
||||
return true;
|
||||
}
|
||||
Set<WurmMail> mailset = WurmMail.getSentMailsFor(performer.getWurmId(), 100);
|
||||
if(mailset.isEmpty()){
|
||||
player.getCommunicator().sendSafeServerMessage("You have no mail to collect.");
|
||||
return true;
|
||||
}
|
||||
Iterator<WurmMail> it = mailset.iterator();
|
||||
WurmMail m;
|
||||
HashSet<Item> itemset = new HashSet<Item>();
|
||||
while(it.hasNext()){
|
||||
m = it.next();
|
||||
if(m.rejected || m.price > 0){
|
||||
continue;
|
||||
}
|
||||
try {
|
||||
itemset.add(Items.getItem(m.itemId));
|
||||
} catch (NoSuchItemException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
if(!itemset.isEmpty()){
|
||||
player.getCommunicator().sendSafeServerMessage("The "+itemset.size()+" items that were sent via mail are now available.");
|
||||
for (Item item : itemset) {
|
||||
Item[] contained4 = item.getAllItems(true);
|
||||
for (int c4 = 0; c4 < contained4.length; ++c4) {
|
||||
contained4[c4].setMailed(false);
|
||||
contained4[c4].setLastOwnerId(performer.getWurmId());
|
||||
}
|
||||
WurmMail.removeMail(item.getWurmId());
|
||||
target.insertItem(item, true);
|
||||
item.setLastOwnerId(performer.getWurmId());
|
||||
item.setMailed(false);
|
||||
logger.log(Level.INFO, performer.getName() + " received " + item.getName() + " " + item.getWurmId());
|
||||
}
|
||||
}
|
||||
}else{
|
||||
logger.info("Somehow a non-player activated an Affinity Orb...");
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean action(Action act, Creature performer, Item source, Item target, short action, float counter)
|
||||
{
|
||||
return this.action(act, performer, target, action, counter);
|
||||
}
|
||||
|
||||
|
||||
}; // ActionPerformer
|
||||
}
|
||||
}
|
||||
118
src/main/java/mod/sin/actions/UnequipAllAction.java
Normal file
118
src/main/java/mod/sin/actions/UnequipAllAction.java
Normal file
@@ -0,0 +1,118 @@
|
||||
package mod.sin.actions;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.logging.Level;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
import org.gotti.wurmunlimited.modsupport.actions.ActionPerformer;
|
||||
import org.gotti.wurmunlimited.modsupport.actions.BehaviourProvider;
|
||||
import org.gotti.wurmunlimited.modsupport.actions.ModAction;
|
||||
import org.gotti.wurmunlimited.modsupport.actions.ModActions;
|
||||
|
||||
import com.wurmonline.server.NoSuchItemException;
|
||||
import com.wurmonline.server.behaviours.Action;
|
||||
import com.wurmonline.server.behaviours.ActionEntry;
|
||||
import com.wurmonline.server.behaviours.AutoEquipMethods;
|
||||
import com.wurmonline.server.creatures.Creature;
|
||||
import com.wurmonline.server.items.Item;
|
||||
import com.wurmonline.server.players.Player;
|
||||
|
||||
public class UnequipAllAction implements ModAction {
|
||||
private static Logger logger = Logger.getLogger(UnequipAllAction.class.getName());
|
||||
|
||||
private final short actionId;
|
||||
private final ActionEntry actionEntry;
|
||||
|
||||
public UnequipAllAction() {
|
||||
logger.log(Level.WARNING, "UnequipAllAction()");
|
||||
|
||||
actionId = (short) ModActions.getNextActionId();
|
||||
actionEntry = ActionEntry.createEntry(
|
||||
actionId,
|
||||
"Unequip all armour",
|
||||
"unequipping",
|
||||
new int[0]
|
||||
//new int[] { 6 /* ACTION_TYPE_NOMOVE */ } // 6 /* ACTION_TYPE_NOMOVE */, 48 /* ACTION_TYPE_ENEMY_ALWAYS */, 36 /* ACTION_TYPE_ALWAYS_USE_ACTIVE_ITEM */
|
||||
);
|
||||
ModActions.registerAction(actionEntry);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public BehaviourProvider getBehaviourProvider()
|
||||
{
|
||||
return new BehaviourProvider() {
|
||||
// Menu with activated object
|
||||
@Override
|
||||
public List<ActionEntry> getBehavioursFor(Creature performer, Item source, Item object)
|
||||
{
|
||||
return this.getBehavioursFor(performer, object);
|
||||
}
|
||||
|
||||
// Menu without activated object
|
||||
@Override
|
||||
public List<ActionEntry> getBehavioursFor(Creature performer, Item object)
|
||||
{
|
||||
try {
|
||||
if(performer instanceof Player && object != null && object.getParentOrNull() != null && object.getParent().isBodyPart() && object.getParent().getOwnerId() == performer.getWurmId()) {
|
||||
return Arrays.asList(actionEntry);
|
||||
}
|
||||
} catch (NoSuchItemException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
@Override
|
||||
public ActionPerformer getActionPerformer()
|
||||
{
|
||||
return new ActionPerformer() {
|
||||
|
||||
@Override
|
||||
public short getActionId() {
|
||||
return actionId;
|
||||
}
|
||||
|
||||
// Without activated object
|
||||
@Override
|
||||
public boolean action(Action act, Creature performer, Item target, short action, float counter)
|
||||
{
|
||||
if(performer instanceof Player){
|
||||
try {
|
||||
Player player = (Player) performer;
|
||||
if (target.getParent() == null){
|
||||
player.getCommunicator().sendSafeServerMessage("You cannot unequip an item that isn't equipped.");
|
||||
return true;
|
||||
}
|
||||
if (target.getParent().getOwnerId() != player.getWurmId()){
|
||||
player.getCommunicator().sendSafeServerMessage("You cannot unequip an item that you do not own.");
|
||||
return true;
|
||||
}
|
||||
for(Item equip : player.getBody().getAllItems()){
|
||||
if(equip.isArmour()){
|
||||
AutoEquipMethods.unequip(equip, player);
|
||||
}
|
||||
}
|
||||
} catch (NoSuchItemException e1) {
|
||||
e1.printStackTrace();
|
||||
}
|
||||
}else{
|
||||
logger.info("Somehow a non-player activated an Affinity Orb...");
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean action(Action act, Creature performer, Item source, Item target, short action, float counter)
|
||||
{
|
||||
return this.action(act, performer, target, action, counter);
|
||||
}
|
||||
|
||||
|
||||
}; // ActionPerformer
|
||||
}
|
||||
}
|
||||
122
src/main/java/mod/sin/actions/VillageTeleportAction.java
Normal file
122
src/main/java/mod/sin/actions/VillageTeleportAction.java
Normal file
@@ -0,0 +1,122 @@
|
||||
package mod.sin.actions;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.logging.Level;
|
||||
import java.util.logging.Logger;
|
||||
import org.gotti.wurmunlimited.modsupport.actions.ActionPerformer;
|
||||
import org.gotti.wurmunlimited.modsupport.actions.BehaviourProvider;
|
||||
import org.gotti.wurmunlimited.modsupport.actions.ModAction;
|
||||
import org.gotti.wurmunlimited.modsupport.actions.ModActions;
|
||||
|
||||
import com.wurmonline.server.Servers;
|
||||
import com.wurmonline.server.behaviours.Action;
|
||||
import com.wurmonline.server.behaviours.ActionEntry;
|
||||
import com.wurmonline.server.creatures.Creature;
|
||||
import com.wurmonline.server.items.Item;
|
||||
import com.wurmonline.server.items.ItemList;
|
||||
import com.wurmonline.server.players.Player;
|
||||
|
||||
public class VillageTeleportAction implements ModAction {
|
||||
private static Logger logger = Logger.getLogger(VillageTeleportAction.class.getName());
|
||||
|
||||
private final short actionId;
|
||||
private final ActionEntry actionEntry;
|
||||
|
||||
public VillageTeleportAction() {
|
||||
logger.log(Level.WARNING, "VillageTeleportAction()");
|
||||
|
||||
actionId = (short) ModActions.getNextActionId();
|
||||
actionEntry = ActionEntry.createEntry(
|
||||
actionId,
|
||||
"Village Teleport",
|
||||
"teleporting",
|
||||
new int[] { 6 /* ACTION_TYPE_NOMOVE */ } // 6 /* ACTION_TYPE_NOMOVE */, 48 /* ACTION_TYPE_ENEMY_ALWAYS */, 36 /* ACTION_TYPE_ALWAYS_USE_ACTIVE_ITEM */
|
||||
);
|
||||
ModActions.registerAction(actionEntry);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public BehaviourProvider getBehaviourProvider()
|
||||
{
|
||||
return new BehaviourProvider() {
|
||||
// Menu with activated object
|
||||
@Override
|
||||
public List<ActionEntry> getBehavioursFor(Creature performer, Item source, Item object)
|
||||
{
|
||||
return this.getBehavioursFor(performer, object);
|
||||
}
|
||||
|
||||
// Menu without activated object
|
||||
@Override
|
||||
public List<ActionEntry> getBehavioursFor(Creature performer, Item object)
|
||||
{
|
||||
if(performer instanceof Player && object != null && (object.getTemplateId() == ItemList.bodyBody || object.getTemplateId() == ItemList.bodyHand) && !Servers.localServer.PVPSERVER && performer.getCitizenVillage() != null) {
|
||||
return Arrays.asList(actionEntry);
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
@Override
|
||||
public ActionPerformer getActionPerformer()
|
||||
{
|
||||
return new ActionPerformer() {
|
||||
|
||||
@Override
|
||||
public short getActionId() {
|
||||
return actionId;
|
||||
}
|
||||
|
||||
// Without activated object
|
||||
@Override
|
||||
public boolean action(Action act, Creature performer, Item target, short action, float counter)
|
||||
{
|
||||
try{
|
||||
if(performer instanceof Player){
|
||||
if(Servers.localServer.PVPSERVER){
|
||||
performer.getCommunicator().sendNormalServerMessage("You cannot use Village Teleport on a PvP server.");
|
||||
return true;
|
||||
}
|
||||
if(counter == 1.0f){
|
||||
performer.getCommunicator().sendNormalServerMessage("You prepare to transport yourself to another location.");
|
||||
act.setTimeLeft(600);
|
||||
performer.sendActionControl("Teleporting", true, act.getTimeLeft());
|
||||
}else if(performer.isFighting()){
|
||||
performer.getCommunicator().sendAlertServerMessage("Your teleport was interrupted by entering combat.");
|
||||
return true;
|
||||
}else if(counter * 10f > performer.getCurrentAction().getTimeLeft()){
|
||||
Player player = (Player) performer;
|
||||
if(player.getCitizenVillage() != null){
|
||||
act.stop(false);
|
||||
int tilex = player.getCitizenVillage().getTokenX()*4;
|
||||
int tiley = player.getCitizenVillage().getTokenY()*4;
|
||||
player.setTeleportPoints(tilex+2.0f, tiley+2.0f, 0, 0);
|
||||
if(player.startTeleporting()){
|
||||
player.getCommunicator().sendNormalServerMessage("You feel a slight tingle in your spine.");
|
||||
player.getCommunicator().sendTeleport(false);
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}catch(Exception e){
|
||||
e.printStackTrace();
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean action(Action act, Creature performer, Item source, Item target, short action, float counter)
|
||||
{
|
||||
return this.action(act, performer, target, action, counter);
|
||||
}
|
||||
|
||||
|
||||
}; // ActionPerformer
|
||||
}
|
||||
}
|
||||
129
src/main/java/mod/sin/actions/items/AffinityOrbAction.java
Normal file
129
src/main/java/mod/sin/actions/items/AffinityOrbAction.java
Normal file
@@ -0,0 +1,129 @@
|
||||
package mod.sin.actions.items;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.logging.Level;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
import org.gotti.wurmunlimited.modsupport.actions.ActionPerformer;
|
||||
import org.gotti.wurmunlimited.modsupport.actions.BehaviourProvider;
|
||||
import org.gotti.wurmunlimited.modsupport.actions.ModAction;
|
||||
import org.gotti.wurmunlimited.modsupport.actions.ModActions;
|
||||
|
||||
import com.wurmonline.server.Items;
|
||||
import com.wurmonline.server.behaviours.Action;
|
||||
import com.wurmonline.server.behaviours.ActionEntry;
|
||||
import com.wurmonline.server.creatures.Creature;
|
||||
import com.wurmonline.server.items.Item;
|
||||
import com.wurmonline.server.players.Player;
|
||||
import com.wurmonline.server.skills.Affinities;
|
||||
import com.wurmonline.server.skills.Affinity;
|
||||
import com.wurmonline.server.skills.SkillSystem;
|
||||
|
||||
import mod.sin.items.AffinityOrb;
|
||||
|
||||
public class AffinityOrbAction implements ModAction {
|
||||
private static Logger logger = Logger.getLogger(AffinityOrbAction.class.getName());
|
||||
|
||||
private final short actionId;
|
||||
private final ActionEntry actionEntry;
|
||||
|
||||
public AffinityOrbAction() {
|
||||
logger.log(Level.WARNING, "AffinityOrbAction()");
|
||||
|
||||
actionId = (short) ModActions.getNextActionId();
|
||||
actionEntry = ActionEntry.createEntry(
|
||||
actionId,
|
||||
"Gain affinity",
|
||||
"infusing",
|
||||
new int[] { 6 /* ACTION_TYPE_NOMOVE */ } // 6 /* ACTION_TYPE_NOMOVE */, 48 /* ACTION_TYPE_ENEMY_ALWAYS */, 36 /* ACTION_TYPE_ALWAYS_USE_ACTIVE_ITEM */
|
||||
);
|
||||
ModActions.registerAction(actionEntry);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public BehaviourProvider getBehaviourProvider()
|
||||
{
|
||||
return new BehaviourProvider() {
|
||||
// Menu with activated object
|
||||
@Override
|
||||
public List<ActionEntry> getBehavioursFor(Creature performer, Item source, Item object)
|
||||
{
|
||||
return this.getBehavioursFor(performer, object);
|
||||
}
|
||||
|
||||
// Menu without activated object
|
||||
@Override
|
||||
public List<ActionEntry> getBehavioursFor(Creature performer, Item object)
|
||||
{
|
||||
if(performer instanceof Player && object != null && object.getTemplateId() == AffinityOrb.templateId) {
|
||||
return Arrays.asList(actionEntry);
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
@Override
|
||||
public ActionPerformer getActionPerformer()
|
||||
{
|
||||
return new ActionPerformer() {
|
||||
|
||||
@Override
|
||||
public short getActionId() {
|
||||
return actionId;
|
||||
}
|
||||
|
||||
// Without activated object
|
||||
@Override
|
||||
public boolean action(Action act, Creature performer, Item target, short action, float counter)
|
||||
{
|
||||
if(performer instanceof Player){
|
||||
Player player = (Player) performer;
|
||||
if (target.getTemplate().getTemplateId() != AffinityOrb.templateId){
|
||||
player.getCommunicator().sendSafeServerMessage("You must use an Affinity Orb to be infused.");
|
||||
return true;
|
||||
}
|
||||
int skillNum = SkillSystem.getRandomSkillNum();
|
||||
Affinity[] affs = Affinities.getAffinities(player.getWurmId());
|
||||
boolean found = false;
|
||||
while (!found) {
|
||||
boolean hasAffinity = false;
|
||||
for (Affinity affinity : affs) {
|
||||
if (affinity.getSkillNumber() != skillNum) continue;
|
||||
hasAffinity = true;
|
||||
if (affinity.getNumber() >= 5) break;
|
||||
Affinities.setAffinity(player.getWurmId(), skillNum, affinity.getNumber() + 1, false);
|
||||
String skillString = SkillSystem.getNameFor(skillNum);
|
||||
found = true;
|
||||
Items.destroyItem(target.getWurmId());
|
||||
player.getCommunicator().sendSafeServerMessage("Vynora infuses you with an affinity for " + skillString + "!");
|
||||
break;
|
||||
}
|
||||
if (!found && !hasAffinity) {
|
||||
String skillString = SkillSystem.getNameFor(skillNum);
|
||||
Affinities.setAffinity(player.getWurmId(), skillNum, 1, false);
|
||||
Items.destroyItem(target.getWurmId());
|
||||
player.getCommunicator().sendSafeServerMessage("Vynora infuses you with an affinity for " + skillString + "!");
|
||||
found = true;
|
||||
}
|
||||
skillNum = SkillSystem.getRandomSkillNum();
|
||||
}
|
||||
}else{
|
||||
logger.info("Somehow a non-player activated an Affinity Orb...");
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean action(Action act, Creature performer, Item source, Item target, short action, float counter)
|
||||
{
|
||||
return this.action(act, performer, target, action, counter);
|
||||
}
|
||||
|
||||
|
||||
}; // ActionPerformer
|
||||
}
|
||||
}
|
||||
124
src/main/java/mod/sin/actions/items/ArenaCacheOpenAction.java
Normal file
124
src/main/java/mod/sin/actions/items/ArenaCacheOpenAction.java
Normal file
@@ -0,0 +1,124 @@
|
||||
package mod.sin.actions.items;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.logging.Level;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
import org.gotti.wurmunlimited.modsupport.actions.ActionPerformer;
|
||||
import org.gotti.wurmunlimited.modsupport.actions.BehaviourProvider;
|
||||
import org.gotti.wurmunlimited.modsupport.actions.ModAction;
|
||||
import org.gotti.wurmunlimited.modsupport.actions.ModActions;
|
||||
|
||||
import com.wurmonline.server.Items;
|
||||
import com.wurmonline.server.Server;
|
||||
import com.wurmonline.server.behaviours.Action;
|
||||
import com.wurmonline.server.behaviours.ActionEntry;
|
||||
import com.wurmonline.server.creatures.Creature;
|
||||
import com.wurmonline.server.items.Item;
|
||||
import com.wurmonline.server.players.Player;
|
||||
|
||||
import mod.sin.items.ArenaCache;
|
||||
import mod.sin.wyvern.arena.SupplyDepots;
|
||||
|
||||
public class ArenaCacheOpenAction implements ModAction {
|
||||
private static Logger logger = Logger.getLogger(ArenaCacheOpenAction.class.getName());
|
||||
|
||||
private final short actionId;
|
||||
private final ActionEntry actionEntry;
|
||||
|
||||
public ArenaCacheOpenAction() {
|
||||
logger.log(Level.WARNING, "ArenaCacheOpenAction()");
|
||||
|
||||
actionId = (short) ModActions.getNextActionId();
|
||||
actionEntry = ActionEntry.createEntry(
|
||||
actionId,
|
||||
"Open cache",
|
||||
"opening",
|
||||
new int[] { 6 /* ACTION_TYPE_NOMOVE */ } // 6 /* ACTION_TYPE_NOMOVE */, 48 /* ACTION_TYPE_ENEMY_ALWAYS */, 36 /* ACTION_TYPE_ALWAYS_USE_ACTIVE_ITEM */
|
||||
);
|
||||
ModActions.registerAction(actionEntry);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public BehaviourProvider getBehaviourProvider()
|
||||
{
|
||||
return new BehaviourProvider() {
|
||||
// Menu with activated object
|
||||
@Override
|
||||
public List<ActionEntry> getBehavioursFor(Creature performer, Item source, Item object)
|
||||
{
|
||||
return this.getBehavioursFor(performer, object);
|
||||
}
|
||||
|
||||
// Menu without activated object
|
||||
@Override
|
||||
public List<ActionEntry> getBehavioursFor(Creature performer, Item object)
|
||||
{
|
||||
if(performer instanceof Player && object != null && object.getTemplateId() == ArenaCache.templateId) {
|
||||
return Arrays.asList(actionEntry);
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
@Override
|
||||
public ActionPerformer getActionPerformer()
|
||||
{
|
||||
return new ActionPerformer() {
|
||||
|
||||
@Override
|
||||
public short getActionId() {
|
||||
return actionId;
|
||||
}
|
||||
|
||||
// Without activated object
|
||||
@Override
|
||||
public boolean action(Action act, Creature performer, Item target, short action, float counter)
|
||||
{
|
||||
try{
|
||||
if(performer instanceof Player){
|
||||
if(target.getTemplate().getTemplateId() != ArenaCache.templateId){
|
||||
performer.getCommunicator().sendNormalServerMessage("That is not a cache.");
|
||||
return true;
|
||||
}
|
||||
if(target.getLastOwnerId() != performer.getWurmId() && target.getOwnerId() != performer.getWurmId()){
|
||||
performer.getCommunicator().sendNormalServerMessage("You must own the "+target.getName()+" to open it.");
|
||||
return true;
|
||||
}
|
||||
if(counter == 1.0f){
|
||||
performer.getCommunicator().sendNormalServerMessage("You begin to open a "+target.getName()+".");
|
||||
Server.getInstance().broadCastAction(performer.getName() + " begins opening "+performer.getHisHerItsString()+" "+target.getName()+".", performer, 5);
|
||||
act.setTimeLeft(50);
|
||||
performer.sendActionControl("Opening", true, act.getTimeLeft());
|
||||
}else if(counter * 10f > performer.getCurrentAction().getTimeLeft()){
|
||||
performer.getCommunicator().sendNormalServerMessage("You open your "+target.getName()+".");
|
||||
Server.getInstance().broadCastAction(performer.getName() + " opens "+performer.getHisHerItsString()+" "+target.getName()+".", performer, 5);
|
||||
logger.info("Player "+performer.getName()+" opened arena cache.");
|
||||
SupplyDepots.giveCacheReward(performer);
|
||||
Items.destroyItem(target.getWurmId());
|
||||
return true;
|
||||
}
|
||||
}else{
|
||||
logger.info("Somehow a non-player activated a Treasure Box...");
|
||||
}
|
||||
return false;
|
||||
}catch(Exception e){
|
||||
e.printStackTrace();
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean action(Action act, Creature performer, Item source, Item target, short action, float counter)
|
||||
{
|
||||
return this.action(act, performer, target, action, counter);
|
||||
}
|
||||
|
||||
|
||||
}; // ActionPerformer
|
||||
}
|
||||
}
|
||||
164
src/main/java/mod/sin/actions/items/ArrowPackUnpackAction.java
Normal file
164
src/main/java/mod/sin/actions/items/ArrowPackUnpackAction.java
Normal file
@@ -0,0 +1,164 @@
|
||||
package mod.sin.actions.items;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.logging.Level;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
import org.gotti.wurmunlimited.modsupport.actions.ActionPerformer;
|
||||
import org.gotti.wurmunlimited.modsupport.actions.BehaviourProvider;
|
||||
import org.gotti.wurmunlimited.modsupport.actions.ModAction;
|
||||
import org.gotti.wurmunlimited.modsupport.actions.ModActions;
|
||||
|
||||
import com.wurmonline.server.Items;
|
||||
import com.wurmonline.server.Server;
|
||||
import com.wurmonline.server.behaviours.Action;
|
||||
import com.wurmonline.server.behaviours.ActionEntry;
|
||||
import com.wurmonline.server.creatures.Creature;
|
||||
import com.wurmonline.server.items.Item;
|
||||
import com.wurmonline.server.items.ItemFactory;
|
||||
import com.wurmonline.server.items.ItemList;
|
||||
import com.wurmonline.server.items.ItemSpellEffects;
|
||||
import com.wurmonline.server.players.Player;
|
||||
import com.wurmonline.server.spells.SpellEffect;
|
||||
|
||||
import mod.sin.items.ArrowPackHunting;
|
||||
import mod.sin.items.ArrowPackWar;
|
||||
|
||||
public class ArrowPackUnpackAction implements ModAction {
|
||||
private static Logger logger = Logger.getLogger(ArrowPackUnpackAction.class.getName());
|
||||
|
||||
private final short actionId;
|
||||
private final ActionEntry actionEntry;
|
||||
|
||||
public ArrowPackUnpackAction() {
|
||||
logger.log(Level.WARNING, "ArrowPackUnpackAction()");
|
||||
|
||||
actionId = (short) ModActions.getNextActionId();
|
||||
actionEntry = ActionEntry.createEntry(
|
||||
actionId,
|
||||
"Unpack arrows",
|
||||
"unpacking",
|
||||
new int[] { 6 /* ACTION_TYPE_NOMOVE */ } // 6 /* ACTION_TYPE_NOMOVE */, 48 /* ACTION_TYPE_ENEMY_ALWAYS */, 36 /* ACTION_TYPE_ALWAYS_USE_ACTIVE_ITEM */
|
||||
);
|
||||
ModActions.registerAction(actionEntry);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public BehaviourProvider getBehaviourProvider()
|
||||
{
|
||||
return new BehaviourProvider() {
|
||||
// Menu with activated object
|
||||
@Override
|
||||
public List<ActionEntry> getBehavioursFor(Creature performer, Item source, Item object)
|
||||
{
|
||||
return this.getBehavioursFor(performer, object);
|
||||
}
|
||||
|
||||
// Menu without activated object
|
||||
@Override
|
||||
public List<ActionEntry> getBehavioursFor(Creature performer, Item object)
|
||||
{
|
||||
if(performer instanceof Player && object != null && (object.getTemplateId() == ArrowPackHunting.templateId || object.getTemplateId() == ArrowPackWar.templateId)) {
|
||||
return Arrays.asList(actionEntry);
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
@Override
|
||||
public ActionPerformer getActionPerformer()
|
||||
{
|
||||
return new ActionPerformer() {
|
||||
|
||||
@Override
|
||||
public short getActionId() {
|
||||
return actionId;
|
||||
}
|
||||
|
||||
// Without activated object
|
||||
@Override
|
||||
public boolean action(Action act, Creature performer, Item target, short action, float counter)
|
||||
{
|
||||
try{
|
||||
if(performer instanceof Player){
|
||||
if(target.getTemplate().getTemplateId() != ArrowPackHunting.templateId && target.getTemplate().getTemplateId() != ArrowPackWar.templateId){
|
||||
performer.getCommunicator().sendNormalServerMessage("That is not an arrow pack.");
|
||||
return true;
|
||||
}
|
||||
if(target.getLastOwnerId() != performer.getWurmId() && target.getOwnerId() != performer.getWurmId()){
|
||||
performer.getCommunicator().sendNormalServerMessage("You must own the arrow pack to unpack it.");
|
||||
return true;
|
||||
}
|
||||
if(counter == 1.0f){
|
||||
performer.getCommunicator().sendNormalServerMessage("You begin to unpack your arrows.");
|
||||
Server.getInstance().broadCastAction(performer.getName() + " begins unpacking "+performer.getHisHerItsString()+" arrows.", performer, 5);
|
||||
act.setTimeLeft(50);
|
||||
performer.sendActionControl("Unpacking", true, act.getTimeLeft());
|
||||
}else if(counter * 10f > performer.getCurrentAction().getTimeLeft()){
|
||||
int arrowTemplate = ItemList.arrowHunting;
|
||||
if(target.getTemplate().getTemplateId() == ArrowPackWar.templateId){
|
||||
arrowTemplate = ItemList.arrowWar;
|
||||
}
|
||||
float quality = target.getCurrentQualityLevel();
|
||||
if(target.getRarity() > 0){
|
||||
quality = Math.min(100f, target.getCurrentQualityLevel()+target.getRarity());
|
||||
}
|
||||
HashMap<Byte, Float> spellEffects = new HashMap<Byte, Float>();
|
||||
ItemSpellEffects effs = target.getSpellEffects();
|
||||
if(effs != null){
|
||||
for(SpellEffect eff : effs.getEffects()){
|
||||
if(eff.getPower() > 0){
|
||||
spellEffects.put(eff.type, eff.getPower());
|
||||
}
|
||||
}
|
||||
}
|
||||
Item quiver = ItemFactory.createItem(ItemList.quiver, quality, performer.getName());
|
||||
performer.getInventory().insertItem(quiver, true);
|
||||
Item arrow;
|
||||
int i = 0;
|
||||
while(i < 40){
|
||||
arrow = ItemFactory.createItem(arrowTemplate, quality, performer.getName());
|
||||
arrow.setRarity(target.getRarity());
|
||||
if(!spellEffects.isEmpty()){
|
||||
for(byte b : spellEffects.keySet()){
|
||||
ItemSpellEffects arrowEffs = arrow.getSpellEffects();
|
||||
if (arrowEffs == null) {
|
||||
arrowEffs = new ItemSpellEffects(arrow.getWurmId());
|
||||
}
|
||||
SpellEffect arrowEff = new SpellEffect(arrow.getWurmId(), b, spellEffects.get(b), 20000000);
|
||||
arrowEffs.addSpellEffect(arrowEff);
|
||||
}
|
||||
}
|
||||
quiver.insertItem(arrow);
|
||||
i++;
|
||||
}
|
||||
performer.getCommunicator().sendNormalServerMessage("You unpack your arrows into a usable quiver.");
|
||||
Server.getInstance().broadCastAction(performer.getName() + " unpacks "+performer.getHisHerItsString()+" arrows into a quiver.", performer, 5);
|
||||
Items.destroyItem(target.getWurmId());
|
||||
return true;
|
||||
}
|
||||
}else{
|
||||
logger.info("Somehow a non-player activated a Arrow Pack Unpack...");
|
||||
}
|
||||
return false;
|
||||
}catch(Exception e){
|
||||
e.printStackTrace();
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean action(Action act, Creature performer, Item source, Item target, short action, float counter)
|
||||
{
|
||||
return this.action(act, performer, target, action, counter);
|
||||
}
|
||||
|
||||
|
||||
}; // ActionPerformer
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,167 @@
|
||||
package mod.sin.actions.items;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.logging.Level;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
import org.gotti.wurmunlimited.modsupport.actions.ActionPerformer;
|
||||
import org.gotti.wurmunlimited.modsupport.actions.BehaviourProvider;
|
||||
import org.gotti.wurmunlimited.modsupport.actions.ModAction;
|
||||
import org.gotti.wurmunlimited.modsupport.actions.ModActions;
|
||||
|
||||
import com.wurmonline.server.Items;
|
||||
import com.wurmonline.server.Server;
|
||||
import com.wurmonline.server.behaviours.Action;
|
||||
import com.wurmonline.server.behaviours.ActionEntry;
|
||||
import com.wurmonline.server.behaviours.Actions;
|
||||
import com.wurmonline.server.creatures.Creature;
|
||||
import com.wurmonline.server.items.Item;
|
||||
import com.wurmonline.server.items.Materials;
|
||||
import com.wurmonline.server.items.WurmColor;
|
||||
import com.wurmonline.server.players.Player;
|
||||
import com.wurmonline.server.skills.SkillList;
|
||||
|
||||
import mod.sin.items.ChaosCrystal;
|
||||
import mod.sin.wyvern.Crystals;
|
||||
|
||||
public class ChaosCrystalInfuseAction implements ModAction {
|
||||
private static Logger logger = Logger.getLogger(ChaosCrystalInfuseAction.class.getName());
|
||||
|
||||
private final short actionId;
|
||||
private final ActionEntry actionEntry;
|
||||
|
||||
public ChaosCrystalInfuseAction() {
|
||||
logger.log(Level.WARNING, "ChaosCrystalInfuseAction()");
|
||||
|
||||
actionId = (short) ModActions.getNextActionId();
|
||||
actionEntry = ActionEntry.createEntry(
|
||||
actionId,
|
||||
"Infuse",
|
||||
"infusing",
|
||||
new int[]{ Actions.ACTION_TYPE_NOMOVE }
|
||||
//new int[] { 6 /* ACTION_TYPE_NOMOVE */ } // 6 /* ACTION_TYPE_NOMOVE */, 48 /* ACTION_TYPE_ENEMY_ALWAYS */, 36 /* ACTION_TYPE_ALWAYS_USE_ACTIVE_ITEM */
|
||||
);
|
||||
ModActions.registerAction(actionEntry);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public BehaviourProvider getBehaviourProvider()
|
||||
{
|
||||
return new BehaviourProvider() {
|
||||
// Menu with activated object
|
||||
@Override
|
||||
public List<ActionEntry> getBehavioursFor(Creature performer, Item source, Item object)
|
||||
{
|
||||
if(performer instanceof Player && source != null && object != null && source.getTemplateId() == ChaosCrystal.templateId && object.isRepairable()){
|
||||
return Arrays.asList(actionEntry);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
@Override
|
||||
public ActionPerformer getActionPerformer()
|
||||
{
|
||||
return new ActionPerformer() {
|
||||
|
||||
@Override
|
||||
public short getActionId() {
|
||||
return actionId;
|
||||
}
|
||||
|
||||
// With activated object
|
||||
@Override
|
||||
public boolean action(Action act, Creature performer, Item source, Item target, short action, float counter)
|
||||
{
|
||||
try{
|
||||
if(performer instanceof Player){
|
||||
if(source.getTemplate().getTemplateId() != ChaosCrystal.templateId){
|
||||
performer.getCommunicator().sendNormalServerMessage("You must use a chaos crystal to infuse an item.");
|
||||
return true;
|
||||
}
|
||||
if(!target.isRepairable()){
|
||||
performer.getCommunicator().sendNormalServerMessage("You cannot infuse that item.");
|
||||
return true;
|
||||
}
|
||||
if(Crystals.shouldCancelInfusion(performer, source, target)){
|
||||
return true;
|
||||
}
|
||||
if(counter == 1.0f){
|
||||
performer.getCommunicator().sendNormalServerMessage("You begin to infuse the "+target.getName()+ " with the "+source.getName()+".");
|
||||
Server.getInstance().broadCastAction(performer.getName() + " begins infusing with a "+source.getName()+".", performer, 5);
|
||||
act.setTimeLeft(300);
|
||||
performer.sendActionControl("Infusing", true, act.getTimeLeft());
|
||||
}else if(counter * 10f > performer.getCurrentAction().getTimeLeft()){
|
||||
double diff = Crystals.getInfusionDifficulty(performer, source, target);
|
||||
double power = performer.getSkills().getSkill(SkillList.ARCHAEOLOGY).skillCheck(diff, source, 0d, false, 1);
|
||||
if(power > 90){
|
||||
performer.getCommunicator().sendNormalServerMessage("You handle the crystals expertly and infuse the "+target.getName()+ ", increasing its rarity!");
|
||||
target.setRarity(source.getRarity());
|
||||
Items.destroyItem(source.getWurmId());
|
||||
}else if(power > 60){
|
||||
if(target.isMetal() && Server.rand.nextBoolean()){
|
||||
performer.getCommunicator().sendNormalServerMessage("You carefully infuse the metal "+target.getName()+ ", changing its material!");
|
||||
byte[] mats = {Materials.MATERIAL_ADAMANTINE, Materials.MATERIAL_BRASS, Materials.MATERIAL_BRONZE, Materials.MATERIAL_COPPER,
|
||||
Materials.MATERIAL_GLIMMERSTEEL, Materials.MATERIAL_GOLD, Materials.MATERIAL_IRON, Materials.MATERIAL_IRON, Materials.MATERIAL_LEAD,
|
||||
Materials.MATERIAL_SERYLL, Materials.MATERIAL_SILVER, Materials.MATERIAL_STEEL, Materials.MATERIAL_TIN, Materials.MATERIAL_ZINC};
|
||||
target.setMaterial(mats[Server.rand.nextInt(mats.length)]);
|
||||
}else if(target.isWood() && Server.rand.nextBoolean()){
|
||||
performer.getCommunicator().sendNormalServerMessage("You carefully infuse the wooden "+target.getName()+ ", changing its material!");
|
||||
byte[] mats = {Materials.MATERIAL_WOOD_APPLE, Materials.MATERIAL_WOOD_BIRCH, Materials.MATERIAL_WOOD_BLUEBERRY, Materials.MATERIAL_WOOD_CAMELLIA,
|
||||
Materials.MATERIAL_WOOD_CEDAR, Materials.MATERIAL_WOOD_CHERRY, Materials.MATERIAL_WOOD_CHESTNUT, Materials.MATERIAL_WOOD_FIR,
|
||||
Materials.MATERIAL_WOOD_GRAPE, Materials.MATERIAL_WOOD_HAZELNUT, Materials.MATERIAL_WOOD_IVY, Materials.MATERIAL_WOOD_LAVENDER,
|
||||
Materials.MATERIAL_WOOD_LEMON, Materials.MATERIAL_WOOD_LINDEN, Materials.MATERIAL_WOOD_LINGONBERRY, Materials.MATERIAL_WOOD_MAPLE,
|
||||
Materials.MATERIAL_WOOD_OAK, Materials.MATERIAL_WOOD_OLEANDER, Materials.MATERIAL_WOOD_OLIVE, Materials.MATERIAL_WOOD_ORANGE,
|
||||
Materials.MATERIAL_WOOD_PINE, Materials.MATERIAL_WOOD_RASPBERRY, Materials.MATERIAL_WOOD_ROSE, Materials.MATERIAL_WOOD_THORN,
|
||||
Materials.MATERIAL_WOOD_WALNUT, Materials.MATERIAL_WOOD_WILLOW};
|
||||
target.setMaterial(mats[Server.rand.nextInt(mats.length)]);
|
||||
}else{
|
||||
performer.getCommunicator().sendNormalServerMessage("You carefully infuse the "+target.getName()+ ", changing its color.");
|
||||
target.setColor(WurmColor.createColor(Server.rand.nextInt(255), Server.rand.nextInt(255), Server.rand.nextInt(255)));
|
||||
}
|
||||
Items.destroyItem(source.getWurmId());
|
||||
}else if(power > 30){
|
||||
performer.getCommunicator().sendNormalServerMessage("You safely infuse the "+target.getName()+ ", chaotically changing it its weight.");
|
||||
target.setWeight((int) (target.getWeightGrams()*Server.rand.nextFloat()*2f), false);
|
||||
Items.destroyItem(source.getWurmId());
|
||||
}else if(power > 0){
|
||||
performer.getCommunicator().sendNormalServerMessage("You barely manage to infuse the "+target.getName()+ ", chaotically changing its quality.");
|
||||
target.setQualityLevel(Server.rand.nextFloat()*100f);
|
||||
Items.destroyItem(source.getWurmId());
|
||||
}else if(power > -20){
|
||||
performer.getCommunicator().sendNormalServerMessage("You fail to infuse the "+target.getName()+ ", damaging to the "+source.getName()+" in the process.");
|
||||
source.setDamage((float) (source.getDamage()-(power)));
|
||||
}else if(power > -40){
|
||||
performer.getCommunicator().sendNormalServerMessage("You horribly fail to infuse the "+target.getName()+ ", destroying the "+source.getName()+" and heavily damaging the "+target.getName()+".");
|
||||
target.setDamage((float) (target.getDamage()-(power)));
|
||||
Items.destroyItem(source.getWurmId());
|
||||
}else{
|
||||
if(target.getMaterial() == Materials.MATERIAL_SERYLL){
|
||||
performer.getCommunicator().sendNormalServerMessage("The infusion fails catastrophically, destroying the "+source.getName()+"! However, the "+target.getName()+"'s material prevents its utter destruction.");
|
||||
target.setDamage((float) (target.getDamage()-power));
|
||||
Items.destroyItem(source.getWurmId());
|
||||
}else{
|
||||
performer.getCommunicator().sendNormalServerMessage("The infusion fails catastrophically, destroying the "+source.getName()+" and "+target.getName()+"!");
|
||||
Items.destroyItem(source.getWurmId());
|
||||
Items.destroyItem(target.getWurmId());
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}else{
|
||||
logger.info("Somehow a non-player activated a custom item ("+source.getTemplateId()+")...");
|
||||
}
|
||||
return false;
|
||||
}catch(Exception e){
|
||||
e.printStackTrace();
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}; // ActionPerformer
|
||||
}
|
||||
}
|
||||
137
src/main/java/mod/sin/actions/items/CrystalCombineAction.java
Normal file
137
src/main/java/mod/sin/actions/items/CrystalCombineAction.java
Normal file
@@ -0,0 +1,137 @@
|
||||
package mod.sin.actions.items;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.logging.Level;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
import org.gotti.wurmunlimited.modsupport.actions.ActionPerformer;
|
||||
import org.gotti.wurmunlimited.modsupport.actions.BehaviourProvider;
|
||||
import org.gotti.wurmunlimited.modsupport.actions.ModAction;
|
||||
import org.gotti.wurmunlimited.modsupport.actions.ModActions;
|
||||
|
||||
import com.wurmonline.server.Items;
|
||||
import com.wurmonline.server.Server;
|
||||
import com.wurmonline.server.Servers;
|
||||
import com.wurmonline.server.behaviours.Action;
|
||||
import com.wurmonline.server.behaviours.ActionEntry;
|
||||
import com.wurmonline.server.behaviours.Actions;
|
||||
import com.wurmonline.server.creatures.Creature;
|
||||
import com.wurmonline.server.items.Item;
|
||||
import com.wurmonline.server.players.Player;
|
||||
import com.wurmonline.server.skills.Skill;
|
||||
import com.wurmonline.server.skills.SkillList;
|
||||
|
||||
import mod.sin.wyvern.Crystals;
|
||||
|
||||
public class CrystalCombineAction implements ModAction {
|
||||
private static Logger logger = Logger.getLogger(CrystalCombineAction.class.getName());
|
||||
|
||||
private final short actionId;
|
||||
private final ActionEntry actionEntry;
|
||||
|
||||
public CrystalCombineAction() {
|
||||
logger.log(Level.WARNING, "CrystalCombineAction()");
|
||||
|
||||
actionId = (short) ModActions.getNextActionId();
|
||||
actionEntry = ActionEntry.createEntry(
|
||||
actionId,
|
||||
"Combine",
|
||||
"combining",
|
||||
new int[]{ Actions.ACTION_TYPE_NOMOVE }
|
||||
//new int[] { 6 /* ACTION_TYPE_NOMOVE */ } // 6 /* ACTION_TYPE_NOMOVE */, 48 /* ACTION_TYPE_ENEMY_ALWAYS */, 36 /* ACTION_TYPE_ALWAYS_USE_ACTIVE_ITEM */
|
||||
);
|
||||
ModActions.registerAction(actionEntry);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public BehaviourProvider getBehaviourProvider()
|
||||
{
|
||||
return new BehaviourProvider() {
|
||||
// Menu with activated object
|
||||
@Override
|
||||
public List<ActionEntry> getBehavioursFor(Creature performer, Item source, Item object)
|
||||
{
|
||||
if(performer instanceof Player && source != null && object != null && Crystals.isCrystal(source) && Crystals.isCrystal(object) && source != object && source.getTemplateId() == object.getTemplateId()){
|
||||
return Arrays.asList(actionEntry);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
@Override
|
||||
public ActionPerformer getActionPerformer()
|
||||
{
|
||||
return new ActionPerformer() {
|
||||
|
||||
@Override
|
||||
public short getActionId() {
|
||||
return actionId;
|
||||
}
|
||||
|
||||
// With activated object
|
||||
@Override
|
||||
public boolean action(Action act, Creature performer, Item source, Item target, short action, float counter)
|
||||
{
|
||||
try{
|
||||
if(performer instanceof Player){
|
||||
if(Crystals.shouldCancelCombine(performer, source, target)){
|
||||
return true;
|
||||
}
|
||||
if(counter == 1.0f){
|
||||
performer.getCommunicator().sendNormalServerMessage("You begin to combine the crystals together.");
|
||||
Server.getInstance().broadCastAction(performer.getName() + " begins combining crystals.", performer, 5);
|
||||
Skill artifacts = performer.getSkills().getSkill(SkillList.ARCHAEOLOGY);
|
||||
int time = Actions.getSlowActionTime(performer, artifacts, source, 0d);
|
||||
act.setTimeLeft(time);
|
||||
performer.sendActionControl("Combining", true, act.getTimeLeft());
|
||||
}else if(counter * 10f > performer.getCurrentAction().getTimeLeft()){
|
||||
double diff = (source.getCurrentQualityLevel()+target.getCurrentQualityLevel())*0.5d;
|
||||
diff += source.getRarity()*(Servers.localServer.PVPSERVER ? 25 : 15);
|
||||
diff -= performer.getSoulDepth().getKnowledge();
|
||||
if(Servers.localServer.PVPSERVER){ // Added difficulty to account for PvP epic curve:
|
||||
diff *= 1.4f;
|
||||
}
|
||||
double power = performer.getSkills().getSkill(SkillList.ARCHAEOLOGY).skillCheck(diff, source, 0d, false, 1);
|
||||
if(power > 0){
|
||||
performer.getCommunicator().sendNormalServerMessage("You successfully combine the crystals!");
|
||||
Server.getInstance().broadCastAction(performer.getName() + " successfully combines the crystals!", performer, 5);
|
||||
if(source.getCurrentQualityLevel() + target.getCurrentQualityLevel() > 100f){
|
||||
float newQuality = (source.getCurrentQualityLevel() + target.getCurrentQualityLevel()) - 100f;
|
||||
performer.getCommunicator().sendNormalServerMessage("The crystals combine and change, creating a more powerful component.");
|
||||
Items.destroyItem(source.getWurmId());
|
||||
target.setQualityLevel(newQuality);
|
||||
target.setDamage(0);
|
||||
target.setRarity((byte) (target.getRarity()+1));
|
||||
}else{
|
||||
performer.getCommunicator().sendNormalServerMessage("The crystals combine together and reinforce.");
|
||||
target.setQualityLevel(source.getCurrentQualityLevel() + target.getCurrentQualityLevel());
|
||||
target.setDamage(0);
|
||||
Items.destroyItem(source.getWurmId());
|
||||
}
|
||||
return true;
|
||||
}else{
|
||||
performer.getCommunicator().sendNormalServerMessage("You fail to combine the crystals, damaging them both.");
|
||||
float dam1 = (float) (Server.rand.nextFloat()*power*0.2f);
|
||||
float dam2 = (float) (Server.rand.nextFloat()*power*0.2f);
|
||||
source.setDamage((float) (source.getDamage()-dam1));
|
||||
target.setDamage((float) (target.getDamage()-dam2));
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}else{
|
||||
logger.info("Somehow a non-player activated a custom item ("+source.getTemplateId()+")...");
|
||||
}
|
||||
return false;
|
||||
}catch(Exception e){
|
||||
e.printStackTrace();
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}; // ActionPerformer
|
||||
}
|
||||
}
|
||||
179
src/main/java/mod/sin/actions/items/DepthDrillAction.java
Normal file
179
src/main/java/mod/sin/actions/items/DepthDrillAction.java
Normal file
@@ -0,0 +1,179 @@
|
||||
package mod.sin.actions.items;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.HashSet;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import java.util.logging.Level;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
import org.gotti.wurmunlimited.modsupport.actions.ActionPerformer;
|
||||
import org.gotti.wurmunlimited.modsupport.actions.BehaviourProvider;
|
||||
import org.gotti.wurmunlimited.modsupport.actions.ModAction;
|
||||
import org.gotti.wurmunlimited.modsupport.actions.ModActions;
|
||||
|
||||
import com.wurmonline.mesh.Tiles;
|
||||
import com.wurmonline.server.Server;
|
||||
import com.wurmonline.server.behaviours.Action;
|
||||
import com.wurmonline.server.behaviours.ActionEntry;
|
||||
import com.wurmonline.server.behaviours.Actions;
|
||||
import com.wurmonline.server.creatures.Creature;
|
||||
import com.wurmonline.server.items.Item;
|
||||
import com.wurmonline.server.players.Player;
|
||||
import com.wurmonline.server.skills.NoSuchSkillException;
|
||||
import com.wurmonline.server.skills.SkillList;
|
||||
|
||||
import mod.sin.items.DepthDrill;
|
||||
|
||||
public class DepthDrillAction implements ModAction {
|
||||
private static Logger logger = Logger.getLogger(DepthDrillAction.class.getName());
|
||||
|
||||
private final short actionId;
|
||||
private final ActionEntry actionEntry;
|
||||
|
||||
public DepthDrillAction() {
|
||||
logger.log(Level.WARNING, "DepthDrillAction()");
|
||||
|
||||
actionId = (short) ModActions.getNextActionId();
|
||||
actionEntry = ActionEntry.createEntry(
|
||||
actionId,
|
||||
"Drill",
|
||||
"drilling",
|
||||
new int[] { Actions.ACTION_TYPE_NOMOVE }
|
||||
);
|
||||
ModActions.registerAction(actionEntry);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public BehaviourProvider getBehaviourProvider()
|
||||
{
|
||||
return new BehaviourProvider() {
|
||||
// Menu with activated object
|
||||
@Override
|
||||
public List<ActionEntry> getBehavioursFor(Creature performer, Item object, int tilex, int tiley, boolean onSurface, boolean corner, int tile)
|
||||
{
|
||||
if(performer instanceof Player && object != null && object.getTemplateId() == DepthDrill.templateId){
|
||||
return Arrays.asList(actionEntry);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
@Override
|
||||
public ActionPerformer getActionPerformer()
|
||||
{
|
||||
return new ActionPerformer() {
|
||||
|
||||
@Override
|
||||
public short getActionId() {
|
||||
return actionId;
|
||||
}
|
||||
|
||||
// With activated object
|
||||
@Override
|
||||
public boolean action(Action action, Creature performer, Item source, int tilex, int tiley, boolean onSurface, boolean corner, int tile, short num, float counter)
|
||||
{
|
||||
try{
|
||||
if(performer instanceof Player){
|
||||
if (source.getTemplate().getTemplateId() != DepthDrill.templateId){
|
||||
performer.getCommunicator().sendNormalServerMessage("You must use a depth drill to drill.");
|
||||
return true;
|
||||
}
|
||||
if (!performer.isWithinDistanceTo(tilex * 4, tiley * 4, performer.getPositionZ(), 4)) {
|
||||
performer.getCommunicator().sendNormalServerMessage("You are too far away to drill.");
|
||||
action.stop(true);
|
||||
return true;
|
||||
}
|
||||
|
||||
int surfaceHeight = Tiles.decodeHeight(Server.surfaceMesh.getTile(tilex, tiley));
|
||||
int rockHeight = Tiles.decodeHeight(Server.rockMesh.getTile(tilex, tiley));
|
||||
int delta = surfaceHeight - rockHeight;
|
||||
if (counter == 1.0f) {
|
||||
if (delta == 0) {
|
||||
performer.getCommunicator().sendNormalServerMessage("The ground here is too hard and the drill makes no progress.");
|
||||
action.stop(false);
|
||||
return true;
|
||||
}
|
||||
performer.getCommunicator().sendNormalServerMessage("You start to drill into the ground.");
|
||||
Server.getInstance().broadCastAction(performer.getName() + " starts to drill into the ground.", performer, 5);
|
||||
action.setTimeLeft(Actions.getSlowActionTime(performer, performer.getSkills().getSkill(SkillList.DIGGING), source, 1));
|
||||
performer.sendActionControl("Drilling", true, action.getTimeLeft());
|
||||
} else if (counter * 10.0f > performer.getCurrentAction().getTimeLeft()) {
|
||||
performer.getCommunicator().sendNormalServerMessage("The rock here is " + delta + " deep.");
|
||||
performer.getSkills().getSkill(SkillList.DIGGING).skillCheck(10d, 0d, false, 1);
|
||||
performer.getSkills().getSkill(SkillList.PROSPECT).skillCheck(10d, 0d, false, 1);
|
||||
sendOres(performer, tilex, tiley);
|
||||
return true;
|
||||
}
|
||||
}else{
|
||||
logger.info("Somehow a non-player activated a "+source.getTemplate().getName()+".");
|
||||
}
|
||||
return false;
|
||||
}catch(Exception e){
|
||||
e.printStackTrace();
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
private void sendOres(Creature performer, int x, int y) throws NoSuchSkillException {
|
||||
double prospecting = performer.getSkills().getSkill(SkillList.PROSPECT).getRealKnowledge();
|
||||
if (prospecting < 30) return;
|
||||
double mining = performer.getSkills().getSkill(SkillList.MINING).getRealKnowledge();
|
||||
|
||||
Set<String> ores = new HashSet<>();
|
||||
int distance = (int) Math.floor(Math.pow(prospecting+mining, 0.38D));
|
||||
|
||||
for (int dx = distance*-1; dx < distance; dx++) {
|
||||
for (int dy = distance*-1; dy < distance; dy++) {
|
||||
int type = Tiles.decodeType(Server.caveMesh.getTile(x + dx, y + dy)) & 0xFF;
|
||||
|
||||
if (type == Tiles.TILE_TYPE_CAVE_WALL_SLATE && prospecting > 40) {
|
||||
ores.add("slate");
|
||||
} else if (type == Tiles.TILE_TYPE_CAVE_WALL_MARBLE && prospecting > 40) {
|
||||
ores.add("marble");
|
||||
} else if (type == Tiles.TILE_TYPE_CAVE_WALL_ORE_GOLD && prospecting > 60) {
|
||||
ores.add("gold");
|
||||
} else if (type == Tiles.TILE_TYPE_CAVE_WALL_ORE_SILVER && prospecting > 50) {
|
||||
ores.add("silver");
|
||||
} else if (type == Tiles.TILE_TYPE_CAVE_WALL_ORE_ADAMANTINE && prospecting > 70) {
|
||||
ores.add("adamantine");
|
||||
} else if (type == Tiles.TILE_TYPE_CAVE_WALL_ORE_GLIMMERSTEEL && prospecting > 80) {
|
||||
ores.add("glimmersteel");
|
||||
} else if (type == Tiles.TILE_TYPE_CAVE_WALL_ORE_IRON) {
|
||||
ores.add("iron");
|
||||
} else if (type == Tiles.TILE_TYPE_CAVE_WALL_ORE_COPPER) {
|
||||
ores.add("copper");
|
||||
} else if (type == Tiles.TILE_TYPE_CAVE_WALL_ORE_LEAD) {
|
||||
ores.add("lead");
|
||||
} else if (type == Tiles.TILE_TYPE_CAVE_WALL_ORE_ZINC) {
|
||||
ores.add("zinc");
|
||||
} else if (type == Tiles.TILE_TYPE_CAVE_WALL_ORE_TIN) {
|
||||
ores.add("tin");
|
||||
}
|
||||
}
|
||||
}
|
||||
logger.info("Player "+performer.getName()+" uses depth drill at "+x+", "+y+" and prospects "+ores.toString()+" in the ground.");
|
||||
|
||||
Iterator<String> it = ores.iterator();
|
||||
if (ores.size() == 1) {
|
||||
performer.getCommunicator().sendNormalServerMessage("You find traces of " + it.next() + " in the dirt.");
|
||||
} else if (ores.size() > 1) {
|
||||
String s = "You find traces of ";
|
||||
for (int i = 0; i < ores.size() - 1; i++) {
|
||||
if (i == ores.size() - 2) {
|
||||
s += it.next();
|
||||
} else {
|
||||
s += it.next() + ", ";
|
||||
}
|
||||
}
|
||||
s += " and " + it.next() + " in the dirt.";
|
||||
|
||||
performer.getCommunicator().sendNormalServerMessage(s);
|
||||
}
|
||||
}
|
||||
}; // ActionPerformer
|
||||
}
|
||||
}
|
||||
129
src/main/java/mod/sin/actions/items/DisintegrationRodAction.java
Normal file
129
src/main/java/mod/sin/actions/items/DisintegrationRodAction.java
Normal file
@@ -0,0 +1,129 @@
|
||||
package mod.sin.actions.items;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.logging.Level;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
import org.gotti.wurmunlimited.modsupport.actions.ActionPerformer;
|
||||
import org.gotti.wurmunlimited.modsupport.actions.BehaviourProvider;
|
||||
import org.gotti.wurmunlimited.modsupport.actions.ModAction;
|
||||
import org.gotti.wurmunlimited.modsupport.actions.ModActions;
|
||||
|
||||
import com.wurmonline.mesh.Tiles;
|
||||
import com.wurmonline.server.Items;
|
||||
import com.wurmonline.server.Players;
|
||||
import com.wurmonline.server.Server;
|
||||
import com.wurmonline.server.behaviours.Action;
|
||||
import com.wurmonline.server.behaviours.ActionEntry;
|
||||
import com.wurmonline.server.behaviours.Actions;
|
||||
import com.wurmonline.server.behaviours.TileRockBehaviour;
|
||||
import com.wurmonline.server.creatures.Creature;
|
||||
import com.wurmonline.server.items.Item;
|
||||
import com.wurmonline.server.players.Player;
|
||||
|
||||
import mod.sin.items.DisintegrationRod;
|
||||
|
||||
public class DisintegrationRodAction implements ModAction {
|
||||
private static Logger logger = Logger.getLogger(DisintegrationRodAction.class.getName());
|
||||
|
||||
private final short actionId;
|
||||
private final ActionEntry actionEntry;
|
||||
|
||||
public DisintegrationRodAction() {
|
||||
logger.log(Level.WARNING, "DisintegrationRodAction()");
|
||||
|
||||
actionId = (short) ModActions.getNextActionId();
|
||||
actionEntry = ActionEntry.createEntry(
|
||||
actionId,
|
||||
"Use",
|
||||
"disintegrating",
|
||||
new int[] { // {1, 4, 25, 9, 18, 21, 41, 43, 5, 49, 50} - Mining
|
||||
Actions.ACTION_TYPE_SHOW_ON_SELECT_BAR,
|
||||
Actions.ACTION_TYPE_IGNORERANGE
|
||||
}
|
||||
);
|
||||
ModActions.registerAction(actionEntry);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public BehaviourProvider getBehaviourProvider()
|
||||
{
|
||||
return new BehaviourProvider() {
|
||||
// Menu with activated object
|
||||
@Override
|
||||
public List<ActionEntry> getBehavioursFor(Creature performer, Item subject, int tilex, int tiley, boolean onSurface, int tile, int dir)
|
||||
{
|
||||
if(performer instanceof Player && subject != null && subject.getTemplateId() == DisintegrationRod.templateId && Tiles.isSolidCave(Tiles.decodeType(tile))){
|
||||
return Arrays.asList(actionEntry);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
@Override
|
||||
public ActionPerformer getActionPerformer()
|
||||
{
|
||||
return new ActionPerformer() {
|
||||
|
||||
@Override
|
||||
public short getActionId() {
|
||||
return actionId;
|
||||
}
|
||||
|
||||
// With activated object
|
||||
@Override
|
||||
public boolean action(Action act, Creature performer, Item source, int tilex, int tiley, boolean onSurface, int heightOffset, int tile, short action, float counter)
|
||||
{
|
||||
try{
|
||||
if(performer instanceof Player){
|
||||
int newTile = Server.caveMesh.getTile(tilex, tiley);
|
||||
if(source.getTemplate().getTemplateId() != DisintegrationRod.templateId){
|
||||
performer.getCommunicator().sendSafeServerMessage("You must use a Disintegration Rod to do this.");
|
||||
return true;
|
||||
}
|
||||
byte type = Tiles.decodeType(newTile);
|
||||
if (Tiles.isSolidCave(type)) {
|
||||
int resource = Server.getCaveResource(tilex, tiley);
|
||||
int dir = (int)(act.getTarget() >> 48) & 255;
|
||||
boolean destroyRod = true;
|
||||
|
||||
// Don't allow disintegration of reinforced caves
|
||||
if ((type & 0xFF) == Tiles.TILE_TYPE_CAVE_WALL_REINFORCED) {
|
||||
destroyRod = false;
|
||||
performer.getCommunicator().sendSafeServerMessage("The reinforced wall is too strong and doesn't get affected by the rod.");
|
||||
} else if (resource <= 1000 && TileRockBehaviour.createInsideTunnel(tilex, tiley, newTile, performer, 145, dir, true, act)) {
|
||||
//Server.caveMesh.setTile(tilex, tiley, Tiles.encode(Tiles.decodeHeight(tile), Tiles.Tile.TILE_CAVE.id, Tiles.decodeData(tile)));
|
||||
Players.getInstance().sendChangedTile(tilex, tiley, false, false);
|
||||
performer.getCommunicator().sendSafeServerMessage("You use the " + source.getTemplate().getName()+" on the "+Tiles.getTile(Tiles.decodeType(newTile)).tiledesc.toLowerCase()+" and it breaks!");
|
||||
} else if ((type & 0xFF) != Tiles.TILE_TYPE_CAVE_WALL && resource > 1000){
|
||||
Server.setCaveResource(tilex, tiley, resource-1000);
|
||||
Players.getInstance().sendChangedTile(tilex, tiley, false, false);
|
||||
performer.getCommunicator().sendSafeServerMessage("You use the " + source.getTemplate().getName()+" on the "+Tiles.getTile(Tiles.decodeType(newTile)).tiledesc.toLowerCase()+", but it is only weakened!");
|
||||
} else if ((type & 0xFF) == Tiles.TILE_TYPE_CAVE_WALL && TileRockBehaviour.createInsideTunnel(tilex, tiley, newTile, performer, 145, dir, true, act)) {
|
||||
Players.getInstance().sendChangedTile(tilex, tiley, false, false);
|
||||
performer.getCommunicator().sendSafeServerMessage("The rock is powerless against the "+source.getTemplate().getName()+"!");
|
||||
} else if (!TileRockBehaviour.createInsideTunnel(tilex, tiley, newTile, performer, 145, dir, true, act)) {
|
||||
performer.getCommunicator().sendSafeServerMessage("The wall is not stable enough.");
|
||||
destroyRod = false;
|
||||
} // else if
|
||||
if (destroyRod) {
|
||||
Items.destroyItem(source.getWurmId());
|
||||
}
|
||||
}else{
|
||||
logger.info("Disintegration rod attempted to be used on non-solid cave at "+tilex+", "+tiley);
|
||||
}
|
||||
} else {
|
||||
logger.info("Somehow a non-player activated a "+source.getTemplate().getName()+".");
|
||||
}
|
||||
return true;
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
return true;
|
||||
} // catch
|
||||
}
|
||||
}; // ActionPerformer
|
||||
}
|
||||
}
|
||||
135
src/main/java/mod/sin/actions/items/EnchantOrbAction.java
Normal file
135
src/main/java/mod/sin/actions/items/EnchantOrbAction.java
Normal file
@@ -0,0 +1,135 @@
|
||||
package mod.sin.actions.items;
|
||||
|
||||
import java.lang.reflect.InvocationTargetException;
|
||||
import java.lang.reflect.Method;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.logging.Level;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
import org.gotti.wurmunlimited.modloader.ReflectionUtil;
|
||||
import org.gotti.wurmunlimited.modsupport.actions.ActionPerformer;
|
||||
import org.gotti.wurmunlimited.modsupport.actions.BehaviourProvider;
|
||||
import org.gotti.wurmunlimited.modsupport.actions.ModAction;
|
||||
import org.gotti.wurmunlimited.modsupport.actions.ModActions;
|
||||
|
||||
import com.wurmonline.server.Items;
|
||||
import com.wurmonline.server.behaviours.Action;
|
||||
import com.wurmonline.server.behaviours.ActionEntry;
|
||||
import com.wurmonline.server.creatures.Creature;
|
||||
import com.wurmonline.server.items.Item;
|
||||
import com.wurmonline.server.items.ItemSpellEffects;
|
||||
import com.wurmonline.server.players.Player;
|
||||
import com.wurmonline.server.skills.Skill;
|
||||
import com.wurmonline.server.spells.Spell;
|
||||
import com.wurmonline.server.spells.SpellEffect;
|
||||
import com.wurmonline.server.spells.Spells;
|
||||
|
||||
import mod.sin.items.EnchantOrb;
|
||||
|
||||
public class EnchantOrbAction implements ModAction {
|
||||
private static Logger logger = Logger.getLogger(EnchantOrbAction.class.getName());
|
||||
|
||||
private final short actionId;
|
||||
private final ActionEntry actionEntry;
|
||||
|
||||
public EnchantOrbAction() {
|
||||
logger.log(Level.WARNING, "EnchantOrbAction()");
|
||||
|
||||
actionId = (short) ModActions.getNextActionId();
|
||||
actionEntry = ActionEntry.createEntry(
|
||||
actionId,
|
||||
"Transfer enchant",
|
||||
"transferring",
|
||||
new int[0]
|
||||
//new int[] { 6 /* ACTION_TYPE_NOMOVE */ } // 6 /* ACTION_TYPE_NOMOVE */, 48 /* ACTION_TYPE_ENEMY_ALWAYS */, 36 /* ACTION_TYPE_ALWAYS_USE_ACTIVE_ITEM */
|
||||
);
|
||||
ModActions.registerAction(actionEntry);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public BehaviourProvider getBehaviourProvider()
|
||||
{
|
||||
return new BehaviourProvider() {
|
||||
// Menu with activated object
|
||||
@Override
|
||||
public List<ActionEntry> getBehavioursFor(Creature performer, Item source, Item object)
|
||||
{
|
||||
if(performer instanceof Player && source != null && object != null && source.getTemplateId() == EnchantOrb.templateId && source != object){
|
||||
return Arrays.asList(actionEntry);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
@Override
|
||||
public ActionPerformer getActionPerformer()
|
||||
{
|
||||
return new ActionPerformer() {
|
||||
|
||||
@Override
|
||||
public short getActionId() {
|
||||
return actionId;
|
||||
}
|
||||
|
||||
// With activated object
|
||||
@Override
|
||||
public boolean action(Action act, Creature performer, Item source, Item target, short action, float counter)
|
||||
{
|
||||
if(performer instanceof Player){
|
||||
Player player = (Player) performer;
|
||||
if(source.getTemplate().getTemplateId() != EnchantOrb.templateId){
|
||||
player.getCommunicator().sendNormalServerMessage("You must use an Enchant Orb to transfer enchants.");
|
||||
return true;
|
||||
}
|
||||
if(source.getWurmId() == target.getWurmId()){
|
||||
player.getCommunicator().sendNormalServerMessage("You cannot enchant the orb with itself!");
|
||||
return true;
|
||||
}
|
||||
ItemSpellEffects effs = source.getSpellEffects();
|
||||
if(effs == null || effs.getEffects().length == 0){
|
||||
player.getCommunicator().sendNormalServerMessage("The "+source.getTemplate().getName()+" has no enchants.");
|
||||
return true;
|
||||
}
|
||||
if(!Spell.mayBeEnchanted(target)){
|
||||
player.getCommunicator().sendNormalServerMessage("The "+target.getTemplate().getName()+" may not be enchanted.");
|
||||
}
|
||||
ItemSpellEffects teffs = target.getSpellEffects();
|
||||
if(teffs == null){
|
||||
teffs = new ItemSpellEffects(target.getWurmId());
|
||||
}
|
||||
for(SpellEffect eff : effs.getEffects()){
|
||||
Spell spell = Spells.getEnchantment(eff.type);
|
||||
boolean canEnchant = Spell.mayBeEnchanted(target);
|
||||
byte type = eff.type;
|
||||
if(spell == null){
|
||||
logger.info("Error: Enchant for "+eff.type+" doesn't exist.");
|
||||
continue;
|
||||
}
|
||||
if(canEnchant){
|
||||
try {
|
||||
Method m = spell.getClass().getDeclaredMethod("precondition", Skill.class, Creature.class, Item.class);
|
||||
canEnchant = ReflectionUtil.callPrivateMethod(spell, m, player.getChannelingSkill(), performer, target);
|
||||
} catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException | NoSuchMethodException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
if(canEnchant){
|
||||
SpellEffect newEff = new SpellEffect(target.getWurmId(), type, eff.getPower(), 20000000);
|
||||
teffs.addSpellEffect(newEff);
|
||||
Items.destroyItem(source.getWurmId());
|
||||
player.getCommunicator().sendSafeServerMessage("The "+eff.getName()+" transfers to the "+target.getTemplate().getName()+".");
|
||||
}
|
||||
}
|
||||
}else{
|
||||
logger.info("Somehow a non-player activated an Enchant Orb...");
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
}; // ActionPerformer
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,187 @@
|
||||
package mod.sin.actions.items;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.logging.Level;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
import org.gotti.wurmunlimited.modsupport.actions.ActionPerformer;
|
||||
import org.gotti.wurmunlimited.modsupport.actions.BehaviourProvider;
|
||||
import org.gotti.wurmunlimited.modsupport.actions.ModAction;
|
||||
import org.gotti.wurmunlimited.modsupport.actions.ModActions;
|
||||
|
||||
import com.wurmonline.server.Items;
|
||||
import com.wurmonline.server.Server;
|
||||
import com.wurmonline.server.behaviours.Action;
|
||||
import com.wurmonline.server.behaviours.ActionEntry;
|
||||
import com.wurmonline.server.behaviours.Actions;
|
||||
import com.wurmonline.server.creatures.Creature;
|
||||
import com.wurmonline.server.items.Item;
|
||||
import com.wurmonline.server.items.ItemSpellEffects;
|
||||
import com.wurmonline.server.players.Player;
|
||||
import com.wurmonline.server.skills.SkillList;
|
||||
import com.wurmonline.server.spells.SpellEffect;
|
||||
import com.wurmonline.shared.constants.Enchants;
|
||||
|
||||
import mod.sin.items.EnchantersCrystal;
|
||||
import mod.sin.wyvern.Crystals;
|
||||
|
||||
public class EnchantersCrystalInfuseAction implements ModAction {
|
||||
private static Logger logger = Logger.getLogger(EnchantersCrystalInfuseAction.class.getName());
|
||||
|
||||
private final short actionId;
|
||||
private final ActionEntry actionEntry;
|
||||
|
||||
public EnchantersCrystalInfuseAction() {
|
||||
logger.log(Level.WARNING, "EnchantersCrystalInfuseAction()");
|
||||
|
||||
actionId = (short) ModActions.getNextActionId();
|
||||
actionEntry = ActionEntry.createEntry(
|
||||
actionId,
|
||||
"Infuse",
|
||||
"infusing",
|
||||
new int[]{ Actions.ACTION_TYPE_NOMOVE }
|
||||
//new int[] { 6 /* ACTION_TYPE_NOMOVE */ } // 6 /* ACTION_TYPE_NOMOVE */, 48 /* ACTION_TYPE_ENEMY_ALWAYS */, 36 /* ACTION_TYPE_ALWAYS_USE_ACTIVE_ITEM */
|
||||
);
|
||||
ModActions.registerAction(actionEntry);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public BehaviourProvider getBehaviourProvider()
|
||||
{
|
||||
return new BehaviourProvider() {
|
||||
// Menu with activated object
|
||||
@Override
|
||||
public List<ActionEntry> getBehavioursFor(Creature performer, Item source, Item object)
|
||||
{
|
||||
if(performer instanceof Player && source != null && object != null && source.getTemplateId() == EnchantersCrystal.templateId && object.getTemplateId() != EnchantersCrystal.templateId){
|
||||
return Arrays.asList(actionEntry);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
@Override
|
||||
public ActionPerformer getActionPerformer()
|
||||
{
|
||||
return new ActionPerformer() {
|
||||
|
||||
@Override
|
||||
public short getActionId() {
|
||||
return actionId;
|
||||
}
|
||||
|
||||
// With activated object
|
||||
@Override
|
||||
public boolean action(Action act, Creature performer, Item source, Item target, short action, float counter)
|
||||
{
|
||||
try{
|
||||
if(performer instanceof Player){
|
||||
if(source.getTemplate().getTemplateId() != EnchantersCrystal.templateId){
|
||||
performer.getCommunicator().sendNormalServerMessage("You must use an enchanters crystal to infuse an item.");
|
||||
return true;
|
||||
}
|
||||
if(Crystals.shouldCancelEnchantersInfusion(performer, target)){
|
||||
return true;
|
||||
}
|
||||
if(counter == 1.0f){
|
||||
performer.getCommunicator().sendNormalServerMessage("You begin to infuse the "+target.getName()+ " with the "+source.getName()+".");
|
||||
Server.getInstance().broadCastAction(performer.getName() + " begins infusing with a "+source.getName()+".", performer, 5);
|
||||
act.setTimeLeft(300);
|
||||
performer.sendActionControl("Infusing", true, act.getTimeLeft());
|
||||
}else if(counter * 10f > performer.getCurrentAction().getTimeLeft()){
|
||||
double diff = Crystals.getEnchantersInfusionDifficulty(performer, source, target);
|
||||
double power = -100;
|
||||
int i = source.getRarity();
|
||||
while(i >= 0){
|
||||
power = Math.max(power, performer.getSkills().getSkill(SkillList.ARCHAEOLOGY).skillCheck(diff, source, 0d, false, 1));
|
||||
i--;
|
||||
}
|
||||
ItemSpellEffects effs = target.getSpellEffects();
|
||||
if(power > 90){
|
||||
byte ench = Crystals.getNewRandomEnchant(target);
|
||||
if(ench != -10){
|
||||
performer.getCommunicator().sendNormalServerMessage("You handle the crystals expertly and infuse the "+target.getName()+ ", adding a new enchant!");
|
||||
SpellEffect eff = new SpellEffect(target.getWurmId(), ench, (float)power*Server.rand.nextFloat(), 20000000);
|
||||
effs.addSpellEffect(eff);
|
||||
Items.destroyItem(source.getWurmId());
|
||||
}else{
|
||||
logger.info("Failed to find a valid enchant to add to item "+target.getName()+" for player "+performer.getName()+"!");
|
||||
performer.getCommunicator().sendNormalServerMessage("Nothing happens!");
|
||||
}
|
||||
}else if(power > 75){
|
||||
performer.getCommunicator().sendNormalServerMessage("You very carefully infuse the metal "+target.getName()+ ", increasing its magical properties!");
|
||||
for(SpellEffect eff : effs.getEffects()){
|
||||
eff.setPower(eff.getPower()+(eff.getPower()*Server.rand.nextFloat()*0.2f));
|
||||
}
|
||||
Items.destroyItem(source.getWurmId());
|
||||
}else if(power > 60){
|
||||
performer.getCommunicator().sendNormalServerMessage("You carefully infuse the "+target.getName()+ ", changing one of its magical properties!");
|
||||
SpellEffect oldEff = effs.getEffects()[Server.rand.nextInt(effs.getEffects().length)];
|
||||
float oldPower = oldEff.getPower();
|
||||
if(oldEff.type == Enchants.BUFF_BLOODTHIRST){
|
||||
oldPower *= 0.01f;
|
||||
}
|
||||
effs.removeSpellEffect(oldEff.type);
|
||||
byte ench = Crystals.getNewRandomEnchant(target);
|
||||
if(ench != -10){
|
||||
SpellEffect eff = new SpellEffect(target.getWurmId(), ench, oldPower, 20000000);
|
||||
effs.addSpellEffect(eff);
|
||||
}else{
|
||||
performer.getCommunicator().sendNormalServerMessage("However, something goes wrong and the "+target.getName()+ " instead loses the property!");
|
||||
}
|
||||
Items.destroyItem(source.getWurmId());
|
||||
}else if(power > 40){
|
||||
performer.getCommunicator().sendNormalServerMessage("You manage to infuse the "+target.getName()+ ", destroying a magical property but increasing the rest.");
|
||||
SpellEffect oldEff = effs.getEffects()[Server.rand.nextInt(effs.getEffects().length)];
|
||||
effs.removeSpellEffect(oldEff.type);
|
||||
if(effs.getEffects().length >= 1){
|
||||
for(SpellEffect eff : effs.getEffects()){
|
||||
eff.setPower(eff.getPower()+(eff.getPower()*Server.rand.nextFloat()*0.2f));
|
||||
}
|
||||
}else{
|
||||
performer.getCommunicator().sendNormalServerMessage("However, the "+target.getName()+ " does not have any other properties, and the effect is wasted!");
|
||||
}
|
||||
Items.destroyItem(source.getWurmId());
|
||||
}else if(power > 0){
|
||||
performer.getCommunicator().sendNormalServerMessage("You barely manage to infuse the "+target.getName()+ ", shifting its magical properties.");
|
||||
for(SpellEffect eff : effs.getEffects()){
|
||||
eff.setPower(eff.getPower()+((eff.getPower()*Server.rand.nextFloat()*0.4f) * (Server.rand.nextBoolean() ? 1 : -1)));
|
||||
}
|
||||
Items.destroyItem(source.getWurmId());
|
||||
}else if(power > -30){
|
||||
performer.getCommunicator().sendNormalServerMessage("You barely fail to infuse the "+target.getName()+ ", reducing the power of its magical properties.");
|
||||
for(SpellEffect eff : effs.getEffects()){
|
||||
eff.setPower(eff.getPower()-(eff.getPower()*Server.rand.nextFloat()*0.2f));
|
||||
}
|
||||
Items.destroyItem(source.getWurmId());
|
||||
}else if(power > -60){
|
||||
performer.getCommunicator().sendNormalServerMessage("You horribly fail to infuse the "+target.getName()+ ", removing one of its magical properties.");
|
||||
SpellEffect oldEff = effs.getEffects()[Server.rand.nextInt(effs.getEffects().length)];
|
||||
effs.removeSpellEffect(oldEff.type);
|
||||
Items.destroyItem(source.getWurmId());
|
||||
}else{
|
||||
performer.getCommunicator().sendNormalServerMessage("The infusion fails catastrophically, destroying all the magic on the "+target.getName()+"!");
|
||||
for(SpellEffect eff : effs.getEffects()){
|
||||
effs.removeSpellEffect(eff.type);
|
||||
}
|
||||
Items.destroyItem(source.getWurmId());
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}else{
|
||||
logger.info("Somehow a non-player activated a custom item ("+source.getTemplateId()+")...");
|
||||
}
|
||||
return false;
|
||||
}catch(Exception e){
|
||||
e.printStackTrace();
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}; // ActionPerformer
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,123 @@
|
||||
package mod.sin.actions.items;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.logging.Level;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
import org.gotti.wurmunlimited.modsupport.actions.ActionPerformer;
|
||||
import org.gotti.wurmunlimited.modsupport.actions.BehaviourProvider;
|
||||
import org.gotti.wurmunlimited.modsupport.actions.ModAction;
|
||||
import org.gotti.wurmunlimited.modsupport.actions.ModActions;
|
||||
|
||||
import com.wurmonline.server.behaviours.Action;
|
||||
import com.wurmonline.server.behaviours.ActionEntry;
|
||||
import com.wurmonline.server.creatures.Creature;
|
||||
import com.wurmonline.server.items.Item;
|
||||
import com.wurmonline.server.players.Player;
|
||||
|
||||
import mod.sin.items.EternalReservoir;
|
||||
|
||||
public class EternalReservoirCheckFuelAction implements ModAction {
|
||||
private static Logger logger = Logger.getLogger(EternalReservoirCheckFuelAction.class.getName());
|
||||
|
||||
private final short actionId;
|
||||
private final ActionEntry actionEntry;
|
||||
|
||||
public EternalReservoirCheckFuelAction() {
|
||||
logger.log(Level.WARNING, "EternalReservoirFuelCheckAction()");
|
||||
|
||||
actionId = (short) ModActions.getNextActionId();
|
||||
actionEntry = ActionEntry.createEntry(
|
||||
actionId,
|
||||
"Check fuel",
|
||||
"checking",
|
||||
new int[0]
|
||||
);
|
||||
ModActions.registerAction(actionEntry);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public BehaviourProvider getBehaviourProvider()
|
||||
{
|
||||
return new BehaviourProvider() {
|
||||
// Menu with activated object
|
||||
@Override
|
||||
public List<ActionEntry> getBehavioursFor(Creature performer, Item source, Item object)
|
||||
{
|
||||
return this.getBehavioursFor(performer, object);
|
||||
}
|
||||
|
||||
// Menu without activated object
|
||||
@Override
|
||||
public List<ActionEntry> getBehavioursFor(Creature performer, Item object)
|
||||
{
|
||||
if(performer instanceof Player && object != null && object.getTemplateId() == EternalReservoir.templateId) {
|
||||
return Arrays.asList(actionEntry);
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
@Override
|
||||
public ActionPerformer getActionPerformer()
|
||||
{
|
||||
return new ActionPerformer() {
|
||||
|
||||
@Override
|
||||
public short getActionId() {
|
||||
return actionId;
|
||||
}
|
||||
|
||||
// Without activated object
|
||||
@Override
|
||||
public boolean action(Action act, Creature performer, Item target, short action, float counter)
|
||||
{
|
||||
try{
|
||||
if(performer instanceof Player){
|
||||
if(target.getTemplateId() != EternalReservoir.templateId){
|
||||
performer.getCommunicator().sendNormalServerMessage("That is not an eternal reservoir.");
|
||||
return true;
|
||||
}
|
||||
if(!performer.isWithinDistanceTo(target, 9)){
|
||||
performer.getCommunicator().sendNormalServerMessage("You are too far away to check the fuel.");
|
||||
return true;
|
||||
}
|
||||
int fuel = target.getData1();
|
||||
if(fuel < 30){
|
||||
performer.getCommunicator().sendNormalServerMessage("The "+target.getName()+" has no souls, and is inactive.");
|
||||
}else if(fuel < 1000){
|
||||
performer.getCommunicator().sendNormalServerMessage("The "+target.getName()+" is very low on souls.");
|
||||
}else if(fuel < 5000){
|
||||
performer.getCommunicator().sendNormalServerMessage("The "+target.getName()+" has some souls, but yearns for more.");
|
||||
}else if(fuel < 10000){
|
||||
performer.getCommunicator().sendNormalServerMessage("The "+target.getName()+" has a good amount of souls.");
|
||||
}else if(fuel < 50000){
|
||||
performer.getCommunicator().sendNormalServerMessage("The "+target.getName()+" has plenty of souls.");
|
||||
}else{
|
||||
performer.getCommunicator().sendNormalServerMessage("The "+target.getName()+" is absolutely flooded with souls, and will last a long time.");
|
||||
}
|
||||
return true;
|
||||
}else{
|
||||
logger.info("Somehow a non-player activated a Eternal Reservoir...");
|
||||
}
|
||||
return false;
|
||||
}catch(Exception e){
|
||||
e.printStackTrace();
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean action(Action act, Creature performer, Item source, Item target, short action, float counter)
|
||||
{
|
||||
return this.action(act, performer, target, action, counter);
|
||||
}
|
||||
|
||||
|
||||
}; // ActionPerformer
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,130 @@
|
||||
package mod.sin.actions.items;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.logging.Level;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
import org.gotti.wurmunlimited.modsupport.actions.ActionPerformer;
|
||||
import org.gotti.wurmunlimited.modsupport.actions.BehaviourProvider;
|
||||
import org.gotti.wurmunlimited.modsupport.actions.ModAction;
|
||||
import org.gotti.wurmunlimited.modsupport.actions.ModActions;
|
||||
|
||||
import com.wurmonline.server.Items;
|
||||
import com.wurmonline.server.Server;
|
||||
import com.wurmonline.server.behaviours.Action;
|
||||
import com.wurmonline.server.behaviours.ActionEntry;
|
||||
import com.wurmonline.server.behaviours.Actions;
|
||||
import com.wurmonline.server.creatures.Creature;
|
||||
import com.wurmonline.server.items.Item;
|
||||
import com.wurmonline.server.players.Player;
|
||||
import com.wurmonline.server.skills.Skill;
|
||||
import mod.sin.items.Soul;
|
||||
import mod.sin.items.EternalReservoir;
|
||||
|
||||
public class EternalReservoirRefuelAction implements ModAction {
|
||||
private static Logger logger = Logger.getLogger(EternalReservoirRefuelAction.class.getName());
|
||||
|
||||
private final short actionId;
|
||||
private final ActionEntry actionEntry;
|
||||
|
||||
public EternalReservoirRefuelAction() {
|
||||
logger.log(Level.WARNING, "SoulForgeRefuelAction()");
|
||||
|
||||
actionId = (short) ModActions.getNextActionId();
|
||||
actionEntry = ActionEntry.createEntry(
|
||||
actionId,
|
||||
"Feed soul",
|
||||
"feeding",
|
||||
new int[]{
|
||||
Actions.ACTION_TYPE_IGNORERANGE
|
||||
}
|
||||
|
||||
);
|
||||
ModActions.registerAction(actionEntry);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public BehaviourProvider getBehaviourProvider()
|
||||
{
|
||||
return new BehaviourProvider() {
|
||||
// Menu with activated object
|
||||
@Override
|
||||
public List<ActionEntry> getBehavioursFor(Creature performer, Item source, Item object)
|
||||
{
|
||||
if(performer instanceof Player && source != null && object != null && source.getTemplateId() == Soul.templateId && object.getTemplateId() == EternalReservoir.templateId){
|
||||
return Arrays.asList(actionEntry);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
@Override
|
||||
public ActionPerformer getActionPerformer()
|
||||
{
|
||||
return new ActionPerformer() {
|
||||
|
||||
@Override
|
||||
public short getActionId() {
|
||||
return actionId;
|
||||
}
|
||||
|
||||
// With activated object
|
||||
@Override
|
||||
public boolean action(Action act, Creature performer, Item source, Item target, short action, float counter)
|
||||
{
|
||||
try{
|
||||
if(performer instanceof Player){
|
||||
Player player = (Player) performer;
|
||||
if(target.getTemplate().getTemplateId() != EternalReservoir.templateId){
|
||||
player.getCommunicator().sendNormalServerMessage("That is not an eternal reservoir.");
|
||||
return true;
|
||||
}
|
||||
if(source.getTemplate().getTemplateId() != Soul.templateId){
|
||||
player.getCommunicator().sendNormalServerMessage("You can only use souls to refuel the eternal reservoir.");
|
||||
return true;
|
||||
}
|
||||
if(!performer.isWithinDistanceTo(target, 5)){
|
||||
player.getCommunicator().sendNormalServerMessage("You are too far away to fuel the reservoir.");
|
||||
return true;
|
||||
}
|
||||
Skill stealing = null;
|
||||
Skill soulStrength = null;
|
||||
int time = 100;
|
||||
if(counter == 1.0f){
|
||||
performer.getCommunicator().sendNormalServerMessage("You begin to feed the "+source.getName()+" to the "+target.getName()+".");
|
||||
Server.getInstance().broadCastAction(performer.getName() + " begins to feed a "+source.getName()+" to the "+target.getName()+".", performer, 5);
|
||||
stealing = performer.getStealSkill();
|
||||
time = Actions.getSlowActionTime(performer, stealing, source, 0d);
|
||||
act.setTimeLeft(time);
|
||||
performer.sendActionControl("Feeding", true, act.getTimeLeft());
|
||||
}else if(counter * 10f > performer.getCurrentAction().getTimeLeft()){
|
||||
soulStrength = performer.getSoulStrength();
|
||||
double power = soulStrength.skillCheck(25f-(source.getCurrentQualityLevel()*0.2f), source, 0f, false, 1);
|
||||
if(power > 0){
|
||||
target.setData1((int) (target.getData1()+power));
|
||||
performer.getCommunicator().sendNormalServerMessage("You feed the "+source.getName()+" to the "+target.getName()+".");
|
||||
Server.getInstance().broadCastAction(performer.getName() + " feeds a "+source.getName()+" to the "+target.getName()+".", performer, 5);
|
||||
}else{
|
||||
performer.getCommunicator().sendNormalServerMessage("You fail to feed the "+source.getName()+" to the "+target.getName()+".");
|
||||
Server.getInstance().broadCastAction(performer.getName() + " fails to feed a "+source.getName()+" to the "+target.getName()+".", performer, 5);
|
||||
}
|
||||
Items.destroyItem(source.getWurmId());
|
||||
return true;
|
||||
}
|
||||
}else{
|
||||
logger.info("Somehow a non-player activated an Enchant Orb...");
|
||||
}
|
||||
return false;
|
||||
}catch(Exception e){
|
||||
e.printStackTrace();
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}; // ActionPerformer
|
||||
}
|
||||
}
|
||||
127
src/main/java/mod/sin/actions/items/FriyanTabletAction.java
Normal file
127
src/main/java/mod/sin/actions/items/FriyanTabletAction.java
Normal file
@@ -0,0 +1,127 @@
|
||||
package mod.sin.actions.items;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.logging.Level;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
import org.gotti.wurmunlimited.modsupport.actions.ActionPerformer;
|
||||
import org.gotti.wurmunlimited.modsupport.actions.BehaviourProvider;
|
||||
import org.gotti.wurmunlimited.modsupport.actions.ModAction;
|
||||
import org.gotti.wurmunlimited.modsupport.actions.ModActions;
|
||||
|
||||
import com.wurmonline.server.Items;
|
||||
import com.wurmonline.server.Server;
|
||||
import com.wurmonline.server.behaviours.Action;
|
||||
import com.wurmonline.server.behaviours.ActionEntry;
|
||||
import com.wurmonline.server.behaviours.Actions;
|
||||
import com.wurmonline.server.creatures.Creature;
|
||||
import com.wurmonline.server.items.Item;
|
||||
import com.wurmonline.server.players.Player;
|
||||
|
||||
import mod.sin.items.FriyanTablet;
|
||||
|
||||
public class FriyanTabletAction implements ModAction {
|
||||
private static Logger logger = Logger.getLogger(FriyanTabletAction.class.getName());
|
||||
|
||||
private final short actionId;
|
||||
private final ActionEntry actionEntry;
|
||||
|
||||
public FriyanTabletAction() {
|
||||
logger.log(Level.WARNING, "FriyanTabletAction()");
|
||||
|
||||
actionId = (short) ModActions.getNextActionId();
|
||||
actionEntry = ActionEntry.createEntry(
|
||||
actionId,
|
||||
"Read",
|
||||
"reading",
|
||||
new int[] { Actions.ACTION_TYPE_NOMOVE } // 6 /* ACTION_TYPE_NOMOVE */, 48 /* ACTION_TYPE_ENEMY_ALWAYS */, 36 /* ACTION_TYPE_ALWAYS_USE_ACTIVE_ITEM */
|
||||
);
|
||||
ModActions.registerAction(actionEntry);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public BehaviourProvider getBehaviourProvider()
|
||||
{
|
||||
return new BehaviourProvider() {
|
||||
// Menu with activated object
|
||||
@Override
|
||||
public List<ActionEntry> getBehavioursFor(Creature performer, Item source, Item object)
|
||||
{
|
||||
return this.getBehavioursFor(performer, object);
|
||||
}
|
||||
|
||||
// Menu without activated object
|
||||
@Override
|
||||
public List<ActionEntry> getBehavioursFor(Creature performer, Item object)
|
||||
{
|
||||
if(performer instanceof Player && object != null && object.getTemplateId() == FriyanTablet.templateId) {
|
||||
return Arrays.asList(actionEntry);
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
@Override
|
||||
public ActionPerformer getActionPerformer()
|
||||
{
|
||||
return new ActionPerformer() {
|
||||
|
||||
@Override
|
||||
public short getActionId() {
|
||||
return actionId;
|
||||
}
|
||||
|
||||
// Without activated object
|
||||
@Override
|
||||
public boolean action(Action act, Creature performer, Item target, short action, float counter)
|
||||
{
|
||||
try{
|
||||
if(performer instanceof Player){
|
||||
if (target.getTemplate().getTemplateId() != FriyanTablet.templateId){
|
||||
performer.getCommunicator().sendNormalServerMessage("You cannot read that.");
|
||||
return true;
|
||||
}
|
||||
if (!performer.isWithinDistanceTo(target.getPosX(), target.getPosY(), performer.getPositionZ(), 4)) {
|
||||
performer.getCommunicator().sendNormalServerMessage("You are too far away to read.");
|
||||
act.stop(true);
|
||||
return true;
|
||||
}
|
||||
if (counter == 1.0f) {
|
||||
performer.getCommunicator().sendNormalServerMessage("You start to read the "+target.getName()+".");
|
||||
Server.getInstance().broadCastAction(performer.getName() + " begins reading the "+target.getName()+".", performer, 5);
|
||||
act.setTimeLeft(200);
|
||||
performer.sendActionControl("Reading", true, act.getTimeLeft());
|
||||
} else if (counter * 10.0f > performer.getCurrentAction().getTimeLeft()) {
|
||||
if(performer.getDeity() != null && performer.getFaith() > 0){
|
||||
performer.modifyFaith(Math.max(0.1f, Server.rand.nextFloat()/2f));
|
||||
performer.getCommunicator().sendNormalServerMessage("You are enthralled by the knowledge of the Kaen scholar. You feel closer to god than ever!");
|
||||
Items.destroyItem(target.getWurmId());
|
||||
}else{
|
||||
performer.getCommunicator().sendNormalServerMessage("You don't seem to learn anything. You don't believe in the gods.");
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}else{
|
||||
logger.info("Somehow a non-player activated a "+target.getTemplate().getName()+".");
|
||||
}
|
||||
return false;
|
||||
}catch(Exception e){
|
||||
e.printStackTrace();
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean action(Action act, Creature performer, Item source, Item target, short action, float counter)
|
||||
{
|
||||
return this.action(act, performer, target, action, counter);
|
||||
}
|
||||
|
||||
|
||||
}; // ActionPerformer
|
||||
}
|
||||
}
|
||||
126
src/main/java/mod/sin/actions/items/SealedMapAction.java
Normal file
126
src/main/java/mod/sin/actions/items/SealedMapAction.java
Normal file
@@ -0,0 +1,126 @@
|
||||
package mod.sin.actions.items;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.logging.Level;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
import org.gotti.wurmunlimited.modsupport.actions.ActionPerformer;
|
||||
import org.gotti.wurmunlimited.modsupport.actions.BehaviourProvider;
|
||||
import org.gotti.wurmunlimited.modsupport.actions.ModAction;
|
||||
import org.gotti.wurmunlimited.modsupport.actions.ModActions;
|
||||
|
||||
import com.pveplands.treasurehunting.Treasuremap;
|
||||
import com.wurmonline.server.Items;
|
||||
import com.wurmonline.server.Server;
|
||||
import com.wurmonline.server.behaviours.Action;
|
||||
import com.wurmonline.server.behaviours.ActionEntry;
|
||||
import com.wurmonline.server.creatures.Creature;
|
||||
import com.wurmonline.server.items.Item;
|
||||
import com.wurmonline.server.players.Player;
|
||||
|
||||
import mod.sin.items.SealedMap;
|
||||
|
||||
public class SealedMapAction implements ModAction {
|
||||
private static Logger logger = Logger.getLogger(SealedMapAction.class.getName());
|
||||
|
||||
private final short actionId;
|
||||
private final ActionEntry actionEntry;
|
||||
|
||||
public SealedMapAction() {
|
||||
logger.log(Level.WARNING, "TreasureCacheOpenAction()");
|
||||
|
||||
actionId = (short) ModActions.getNextActionId();
|
||||
actionEntry = ActionEntry.createEntry(
|
||||
actionId,
|
||||
"Unseal",
|
||||
"unsealing",
|
||||
new int[] { 6 /* ACTION_TYPE_NOMOVE */ } // 6 /* ACTION_TYPE_NOMOVE */, 48 /* ACTION_TYPE_ENEMY_ALWAYS */, 36 /* ACTION_TYPE_ALWAYS_USE_ACTIVE_ITEM */
|
||||
);
|
||||
ModActions.registerAction(actionEntry);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public BehaviourProvider getBehaviourProvider()
|
||||
{
|
||||
return new BehaviourProvider() {
|
||||
// Menu with activated object
|
||||
@Override
|
||||
public List<ActionEntry> getBehavioursFor(Creature performer, Item source, Item object)
|
||||
{
|
||||
return this.getBehavioursFor(performer, object);
|
||||
}
|
||||
|
||||
// Menu without activated object
|
||||
@Override
|
||||
public List<ActionEntry> getBehavioursFor(Creature performer, Item object)
|
||||
{
|
||||
if(performer instanceof Player && object != null && object.getTemplateId() == SealedMap.templateId) {
|
||||
return Arrays.asList(actionEntry);
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
@Override
|
||||
public ActionPerformer getActionPerformer()
|
||||
{
|
||||
return new ActionPerformer() {
|
||||
|
||||
@Override
|
||||
public short getActionId() {
|
||||
return actionId;
|
||||
}
|
||||
|
||||
// Without activated object
|
||||
@Override
|
||||
public boolean action(Action act, Creature performer, Item target, short action, float counter)
|
||||
{
|
||||
try{
|
||||
if(performer instanceof Player){
|
||||
if(target.getTemplateId() != SealedMap.templateId){
|
||||
performer.getCommunicator().sendNormalServerMessage("That is not a sealed map.");
|
||||
return true;
|
||||
}
|
||||
if(target.getLastOwnerId() != performer.getWurmId() && target.getOwnerId() != performer.getWurmId()){
|
||||
performer.getCommunicator().sendNormalServerMessage("You must own the "+target.getName()+" to open it.");
|
||||
return true;
|
||||
}
|
||||
if(counter == 1.0f){
|
||||
performer.getCommunicator().sendNormalServerMessage("You begin to unseal the "+target.getName()+".");
|
||||
Server.getInstance().broadCastAction(performer.getName() + " begins unseal "+performer.getHisHerItsString()+" "+target.getName()+".", performer, 5);
|
||||
act.setTimeLeft(50);
|
||||
performer.sendActionControl("Unsealing", true, act.getTimeLeft());
|
||||
}else if(counter * 10f > performer.getCurrentAction().getTimeLeft()){
|
||||
performer.getCommunicator().sendNormalServerMessage("You unseal your "+target.getName()+".");
|
||||
Server.getInstance().broadCastAction(performer.getName() + " unseals "+performer.getHisHerItsString()+" "+target.getName()+".", performer, 5);
|
||||
logger.info("Player "+performer.getName()+" unsealed "+target.getName()+" at quality "+target.getCurrentQualityLevel()+" and rarity "+target.getRarity());
|
||||
target.setData1(100);
|
||||
Item map = Treasuremap.CreateTreasuremap(performer, target, null, null, true);
|
||||
performer.getInventory().insertItem(map, true);
|
||||
Items.destroyItem(target.getWurmId());
|
||||
return true;
|
||||
}
|
||||
}else{
|
||||
logger.info("Somehow a non-player activated a Treasure Box...");
|
||||
}
|
||||
return false;
|
||||
}catch(Exception e){
|
||||
e.printStackTrace();
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean action(Action act, Creature performer, Item source, Item target, short action, float counter)
|
||||
{
|
||||
return this.action(act, performer, target, action, counter);
|
||||
}
|
||||
|
||||
|
||||
}; // ActionPerformer
|
||||
}
|
||||
}
|
||||
152
src/main/java/mod/sin/actions/items/SoulstealAction.java
Normal file
152
src/main/java/mod/sin/actions/items/SoulstealAction.java
Normal file
@@ -0,0 +1,152 @@
|
||||
package mod.sin.actions.items;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.logging.Level;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
import org.gotti.wurmunlimited.modsupport.actions.ActionPerformer;
|
||||
import org.gotti.wurmunlimited.modsupport.actions.BehaviourProvider;
|
||||
import org.gotti.wurmunlimited.modsupport.actions.ModAction;
|
||||
import org.gotti.wurmunlimited.modsupport.actions.ModActions;
|
||||
|
||||
import com.wurmonline.server.Items;
|
||||
import com.wurmonline.server.Server;
|
||||
import com.wurmonline.server.Servers;
|
||||
import com.wurmonline.server.behaviours.Action;
|
||||
import com.wurmonline.server.behaviours.ActionEntry;
|
||||
import com.wurmonline.server.behaviours.Actions;
|
||||
import com.wurmonline.server.behaviours.Methods;
|
||||
import com.wurmonline.server.creatures.Creature;
|
||||
import com.wurmonline.server.creatures.CreatureTemplate;
|
||||
import com.wurmonline.server.creatures.CreatureTemplateFactory;
|
||||
import com.wurmonline.server.items.Item;
|
||||
import com.wurmonline.server.items.ItemFactory;
|
||||
import com.wurmonline.server.items.ItemList;
|
||||
import com.wurmonline.server.players.Player;
|
||||
import com.wurmonline.server.skills.Skill;
|
||||
import mod.sin.items.Soul;
|
||||
|
||||
public class SoulstealAction implements ModAction {
|
||||
private static Logger logger = Logger.getLogger(SoulstealAction.class.getName());
|
||||
|
||||
private final short actionId;
|
||||
private final ActionEntry actionEntry;
|
||||
|
||||
public SoulstealAction() {
|
||||
logger.log(Level.WARNING, "SoulstealAction()");
|
||||
|
||||
actionId = (short) ModActions.getNextActionId();
|
||||
actionEntry = ActionEntry.createEntry(
|
||||
actionId,
|
||||
"Soulsteal",
|
||||
"soulstealing",
|
||||
new int[]{
|
||||
Actions.ACTION_TYPE_IGNORERANGE
|
||||
}
|
||||
|
||||
);
|
||||
ModActions.registerAction(actionEntry);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public BehaviourProvider getBehaviourProvider()
|
||||
{
|
||||
return new BehaviourProvider() {
|
||||
// Menu with activated object
|
||||
@Override
|
||||
public List<ActionEntry> getBehavioursFor(Creature performer, Item source, Item object)
|
||||
{
|
||||
if(performer instanceof Player && source != null && object != null && source.getTemplateId() == ItemList.sacrificialKnife && object.getTemplateId() == ItemList.corpse){
|
||||
return Arrays.asList(actionEntry);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
@Override
|
||||
public ActionPerformer getActionPerformer()
|
||||
{
|
||||
return new ActionPerformer() {
|
||||
|
||||
@Override
|
||||
public short getActionId() {
|
||||
return actionId;
|
||||
}
|
||||
|
||||
// With activated object
|
||||
@Override
|
||||
public boolean action(Action act, Creature performer, Item source, Item target, short action, float counter)
|
||||
{
|
||||
try{
|
||||
if(performer instanceof Player){
|
||||
Player player = (Player) performer;
|
||||
if(source.getTemplate().getTemplateId() != ItemList.sacrificialKnife){
|
||||
player.getCommunicator().sendNormalServerMessage("You must use a sacrifical knife to steal souls.");
|
||||
return true;
|
||||
}
|
||||
if(target.getTemplate().getTemplateId() != ItemList.corpse){
|
||||
player.getCommunicator().sendNormalServerMessage("You can only steal the soul from a corpse.");
|
||||
return true;
|
||||
}
|
||||
if(target.getData1() == 1 && (target.getLastOwnerId() != performer.getWurmId()) && !Servers.isThisAPvpServer()) {
|
||||
player.getCommunicator().sendNormalServerMessage(Action.NOT_ALLOWED_ACTION_ON_FREEDOM_MESSAGE);
|
||||
return true;
|
||||
}
|
||||
if(target.isButchered()){
|
||||
player.getCommunicator().sendNormalServerMessage("The corpse has been butchered and there is no soul left.");
|
||||
return true;
|
||||
}
|
||||
if (target.getTopParentOrNull() != performer.getInventory() && !Methods.isActionAllowed(performer, (short) 120, target)) {
|
||||
player.getCommunicator().sendNormalServerMessage("You are not allowed to soulsteal that.");
|
||||
return true;
|
||||
}
|
||||
if(!performer.isWithinDistanceTo(target, 5)){
|
||||
player.getCommunicator().sendNormalServerMessage("You are too far away to steal that soul.");
|
||||
return true;
|
||||
}
|
||||
Skill stealing = null;
|
||||
int time = 100;
|
||||
CreatureTemplate template = null;
|
||||
if(counter == 1.0f){
|
||||
template = CreatureTemplateFactory.getInstance().getTemplate(target.getData1());
|
||||
performer.getCommunicator().sendNormalServerMessage("You begin to steal the soul of the "+template.getName()+".");
|
||||
Server.getInstance().broadCastAction(performer.getName() + " begins to steal the "+template.getName()+" soul.", performer, 5);
|
||||
stealing = performer.getStealSkill();
|
||||
time = Actions.getStandardActionTime(performer, stealing, source, 0d);
|
||||
act.setTimeLeft(time);
|
||||
performer.sendActionControl("Soulstealing", true, act.getTimeLeft());
|
||||
}else if(counter * 10f > performer.getCurrentAction().getTimeLeft()){
|
||||
template = CreatureTemplateFactory.getInstance().getTemplate(target.getData1());
|
||||
stealing = performer.getStealSkill();
|
||||
double power = stealing.skillCheck(40f-(template.getBaseCombatRating()*0.4f), source, 0f, false, 1);
|
||||
if(power > 0){
|
||||
Item soul = ItemFactory.createItem(Soul.templateId, (float) power, performer.getName());
|
||||
soul.setName("Soul of "+template.getName());
|
||||
performer.getInventory().insertItem(soul, true);
|
||||
performer.getCommunicator().sendNormalServerMessage("You obtain the soul of the "+template.getName()+".");
|
||||
Server.getInstance().broadCastAction(performer.getName() + " obtains the soul of the "+template.getName()+".", performer, 5);
|
||||
}else{
|
||||
performer.getCommunicator().sendNormalServerMessage("You fail to steal the soul of the "+template.getName()+".");
|
||||
Server.getInstance().broadCastAction(performer.getName() + " fails to steal the soul of the "+template.getName()+".", performer, 5);
|
||||
}
|
||||
source.setDamage(source.getDamage()+(0.001f*source.getDamageModifier()));
|
||||
Items.destroyItem(target.getWurmId());
|
||||
return true;
|
||||
}
|
||||
}else{
|
||||
logger.info("Somehow a non-player activated an Enchant Orb...");
|
||||
}
|
||||
return false;
|
||||
}catch(Exception e){
|
||||
e.printStackTrace();
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}; // ActionPerformer
|
||||
}
|
||||
}
|
||||
139
src/main/java/mod/sin/actions/items/SupplyDepotAction.java
Normal file
139
src/main/java/mod/sin/actions/items/SupplyDepotAction.java
Normal file
@@ -0,0 +1,139 @@
|
||||
package mod.sin.actions.items;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.logging.Level;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
import org.gotti.wurmunlimited.modsupport.actions.ActionPerformer;
|
||||
import org.gotti.wurmunlimited.modsupport.actions.BehaviourProvider;
|
||||
import org.gotti.wurmunlimited.modsupport.actions.ModAction;
|
||||
import org.gotti.wurmunlimited.modsupport.actions.ModActions;
|
||||
|
||||
import com.wurmonline.server.Items;
|
||||
import com.wurmonline.server.Server;
|
||||
import com.wurmonline.server.behaviours.Action;
|
||||
import com.wurmonline.server.behaviours.ActionEntry;
|
||||
import com.wurmonline.server.creatures.Creature;
|
||||
import com.wurmonline.server.items.Item;
|
||||
import com.wurmonline.server.items.ItemFactory;
|
||||
import com.wurmonline.server.players.Player;
|
||||
|
||||
import mod.sin.items.ArenaCache;
|
||||
import mod.sin.items.ArenaSupplyDepot;
|
||||
import mod.sin.wyvern.MiscChanges;
|
||||
import mod.sin.wyvern.arena.SupplyDepots;
|
||||
|
||||
public class SupplyDepotAction implements ModAction {
|
||||
private static Logger logger = Logger.getLogger(SupplyDepotAction.class.getName());
|
||||
|
||||
private final short actionId;
|
||||
private final ActionEntry actionEntry;
|
||||
|
||||
public SupplyDepotAction() {
|
||||
logger.log(Level.WARNING, "SupplyDepotAction()");
|
||||
|
||||
actionId = (short) ModActions.getNextActionId();
|
||||
actionEntry = ActionEntry.createEntry(
|
||||
actionId,
|
||||
"Capture depot",
|
||||
"capturing",
|
||||
new int[] { 6 /* ACTION_TYPE_NOMOVE */ } // 6 /* ACTION_TYPE_NOMOVE */, 48 /* ACTION_TYPE_ENEMY_ALWAYS */, 36 /* ACTION_TYPE_ALWAYS_USE_ACTIVE_ITEM */
|
||||
);
|
||||
ModActions.registerAction(actionEntry);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public BehaviourProvider getBehaviourProvider()
|
||||
{
|
||||
return new BehaviourProvider() {
|
||||
// Menu with activated object
|
||||
@Override
|
||||
public List<ActionEntry> getBehavioursFor(Creature performer, Item source, Item object)
|
||||
{
|
||||
return this.getBehavioursFor(performer, object);
|
||||
}
|
||||
|
||||
// Menu without activated object
|
||||
@Override
|
||||
public List<ActionEntry> getBehavioursFor(Creature performer, Item object)
|
||||
{
|
||||
if(performer instanceof Player && object != null && object.getTemplateId() == ArenaSupplyDepot.templateId) {
|
||||
return Arrays.asList(actionEntry);
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
@Override
|
||||
public ActionPerformer getActionPerformer()
|
||||
{
|
||||
return new ActionPerformer() {
|
||||
|
||||
@Override
|
||||
public short getActionId() {
|
||||
return actionId;
|
||||
}
|
||||
|
||||
// Without activated object
|
||||
@Override
|
||||
public boolean action(Action act, Creature performer, Item target, short action, float counter)
|
||||
{
|
||||
try{
|
||||
if(performer instanceof Player){
|
||||
if(target.getTemplate().getTemplateId() != ArenaSupplyDepot.templateId){
|
||||
performer.getCommunicator().sendNormalServerMessage("That is not a supply depot.");
|
||||
return true;
|
||||
}
|
||||
if(!performer.isWithinDistanceTo(target, 5)){
|
||||
performer.getCommunicator().sendNormalServerMessage("You must be closer to capture the depot.");
|
||||
return true;
|
||||
}
|
||||
if(!Items.exists(target)){
|
||||
performer.getCommunicator().sendNormalServerMessage("The supply depot has already been captured.");
|
||||
return true;
|
||||
}
|
||||
if(performer.getFightingSkill().getKnowledge() < 25f){
|
||||
performer.getCommunicator().sendNormalServerMessage("You must have at least 25 fighting skill to capture a depot.");
|
||||
return true;
|
||||
}
|
||||
if(counter == 1.0f){
|
||||
performer.getCommunicator().sendNormalServerMessage("You begin to capture the depot.");
|
||||
Server.getInstance().broadCastAction(performer.getName() + " begins capturing the depot.", performer, 50);
|
||||
act.setTimeLeft(2400);
|
||||
performer.sendActionControl("Capturing", true, act.getTimeLeft());
|
||||
SupplyDepots.maybeBroadcastOpen(performer);
|
||||
}else if(counter * 10f > performer.getCurrentAction().getTimeLeft()){
|
||||
Item inv = performer.getInventory();
|
||||
Item cache = ItemFactory.createItem(ArenaCache.templateId, 90+(10*Server.rand.nextFloat()), "");
|
||||
inv.insertItem(cache, true);
|
||||
performer.getCommunicator().sendSafeServerMessage("You have successfully captured the depot!");
|
||||
Server.getInstance().broadCastAction(performer.getName() + " successfully captures the depot!", performer, 50);
|
||||
MiscChanges.sendImportantMessage(performer, performer.getName()+" has claimed an Arena depot!", 255, 128, 0);
|
||||
SupplyDepots.removeSupplyDepot(target);
|
||||
Items.destroyItem(target.getWurmId());
|
||||
return true;
|
||||
}
|
||||
}else{
|
||||
logger.info("Somehow a non-player activated a Arrow Pack Unpack...");
|
||||
}
|
||||
return false;
|
||||
}catch(Exception e){
|
||||
e.printStackTrace();
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean action(Action act, Creature performer, Item source, Item target, short action, float counter)
|
||||
{
|
||||
return this.action(act, performer, target, action, counter);
|
||||
}
|
||||
|
||||
|
||||
}; // ActionPerformer
|
||||
}
|
||||
}
|
||||
142
src/main/java/mod/sin/actions/items/TreasureBoxAction.java
Normal file
142
src/main/java/mod/sin/actions/items/TreasureBoxAction.java
Normal file
@@ -0,0 +1,142 @@
|
||||
package mod.sin.actions.items;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.logging.Level;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
import org.gotti.wurmunlimited.modsupport.actions.ActionPerformer;
|
||||
import org.gotti.wurmunlimited.modsupport.actions.BehaviourProvider;
|
||||
import org.gotti.wurmunlimited.modsupport.actions.ModAction;
|
||||
import org.gotti.wurmunlimited.modsupport.actions.ModActions;
|
||||
|
||||
import com.wurmonline.server.Items;
|
||||
import com.wurmonline.server.Server;
|
||||
import com.wurmonline.server.behaviours.Action;
|
||||
import com.wurmonline.server.behaviours.ActionEntry;
|
||||
import com.wurmonline.server.creatures.Creature;
|
||||
import com.wurmonline.server.items.Item;
|
||||
import com.wurmonline.server.players.Player;
|
||||
|
||||
import mod.sin.items.TreasureBox;
|
||||
import mod.sin.wyvern.TreasureChests;
|
||||
|
||||
public class TreasureBoxAction implements ModAction {
|
||||
private static Logger logger = Logger.getLogger(TreasureBoxAction.class.getName());
|
||||
|
||||
private final short actionId;
|
||||
private final ActionEntry actionEntry;
|
||||
|
||||
public TreasureBoxAction() {
|
||||
logger.log(Level.WARNING, "TreasureBoxAction()");
|
||||
|
||||
actionId = (short) ModActions.getNextActionId();
|
||||
actionEntry = ActionEntry.createEntry(
|
||||
actionId,
|
||||
"Open treasure",
|
||||
"opening",
|
||||
new int[] { 6 /* ACTION_TYPE_NOMOVE */ } // 6 /* ACTION_TYPE_NOMOVE */, 48 /* ACTION_TYPE_ENEMY_ALWAYS */, 36 /* ACTION_TYPE_ALWAYS_USE_ACTIVE_ITEM */
|
||||
);
|
||||
ModActions.registerAction(actionEntry);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public BehaviourProvider getBehaviourProvider()
|
||||
{
|
||||
return new BehaviourProvider() {
|
||||
// Menu with activated object
|
||||
@Override
|
||||
public List<ActionEntry> getBehavioursFor(Creature performer, Item source, Item object)
|
||||
{
|
||||
return this.getBehavioursFor(performer, object);
|
||||
}
|
||||
|
||||
// Menu without activated object
|
||||
@Override
|
||||
public List<ActionEntry> getBehavioursFor(Creature performer, Item object)
|
||||
{
|
||||
if(performer instanceof Player && object != null && object.getTemplateId() == TreasureBox.templateId) {
|
||||
return Arrays.asList(actionEntry);
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
@Override
|
||||
public ActionPerformer getActionPerformer()
|
||||
{
|
||||
return new ActionPerformer() {
|
||||
|
||||
@Override
|
||||
public short getActionId() {
|
||||
return actionId;
|
||||
}
|
||||
|
||||
// Without activated object
|
||||
@Override
|
||||
public boolean action(Action act, Creature performer, Item target, short action, float counter)
|
||||
{
|
||||
try{
|
||||
if(performer instanceof Player){
|
||||
if(target.getTemplate().getTemplateId() != TreasureBox.templateId){
|
||||
performer.getCommunicator().sendNormalServerMessage("That is not a treasure box.");
|
||||
return true;
|
||||
}
|
||||
if(target.getLastOwnerId() != performer.getWurmId() && target.getOwnerId() != performer.getWurmId()){
|
||||
performer.getCommunicator().sendNormalServerMessage("You must own the treasure box to open it.");
|
||||
return true;
|
||||
}
|
||||
if(counter == 1.0f){
|
||||
performer.getCommunicator().sendNormalServerMessage("You begin to open a treasure box.");
|
||||
Server.getInstance().broadCastAction(performer.getName() + " begins opening "+performer.getHisHerItsString()+" treasure.", performer, 5);
|
||||
act.setTimeLeft(50);
|
||||
performer.sendActionControl("Opening", true, act.getTimeLeft());
|
||||
}else if(counter * 10f > performer.getCurrentAction().getTimeLeft()){
|
||||
int aux;
|
||||
if(target.getRarity() >= 3){
|
||||
aux = (int) (Server.rand.nextFloat()*target.getQualityLevel()*0.1f)+90;
|
||||
}else if(target.getRarity() >= 2){
|
||||
aux = (int) (Server.rand.nextFloat()*target.getQualityLevel()*0.3f)+70;
|
||||
}else if(target.getRarity() >= 1){
|
||||
aux = (int) (Server.rand.nextFloat()*target.getQualityLevel()*0.5f)+50;
|
||||
}else{
|
||||
aux = (int) (Server.rand.nextFloat()*target.getQualityLevel());
|
||||
}
|
||||
if(aux >= 90){
|
||||
performer.getCommunicator().sendNormalServerMessage("You open your treasure box containing fantastic treasures!");
|
||||
Server.getInstance().broadCastAction(performer.getName() + " opens "+performer.getHisHerItsString()+" treasure box, containing fantastic treasures!", performer, 5);
|
||||
}else if(aux >= 60){
|
||||
performer.getCommunicator().sendNormalServerMessage("You open your treasure box containing supreme treasures!");
|
||||
Server.getInstance().broadCastAction(performer.getName() + " opens "+performer.getHisHerItsString()+" treasure box, containing supreme treasures!", performer, 5);
|
||||
}else{
|
||||
performer.getCommunicator().sendNormalServerMessage("You open your treasure box containing rare treasures.");
|
||||
Server.getInstance().broadCastAction(performer.getName() + " opens "+performer.getHisHerItsString()+" treasure box, containing rare treasures.", performer, 5);
|
||||
}
|
||||
logger.info("Player "+performer.getName()+" opened treasure box with power "+aux+".");
|
||||
TreasureChests.newFillTreasureChest(performer.getInventory(), aux);
|
||||
Items.destroyItem(target.getWurmId());
|
||||
return true;
|
||||
}
|
||||
}else{
|
||||
logger.info("Somehow a non-player activated a Treasure Box...");
|
||||
}
|
||||
return false;
|
||||
}catch(Exception e){
|
||||
e.printStackTrace();
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean action(Action act, Creature performer, Item source, Item target, short action, float counter)
|
||||
{
|
||||
return this.action(act, performer, target, action, counter);
|
||||
}
|
||||
|
||||
|
||||
}; // ActionPerformer
|
||||
}
|
||||
}
|
||||
123
src/main/java/mod/sin/actions/items/TreasureCacheOpenAction.java
Normal file
123
src/main/java/mod/sin/actions/items/TreasureCacheOpenAction.java
Normal file
@@ -0,0 +1,123 @@
|
||||
package mod.sin.actions.items;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.logging.Level;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
import org.gotti.wurmunlimited.modsupport.actions.ActionPerformer;
|
||||
import org.gotti.wurmunlimited.modsupport.actions.BehaviourProvider;
|
||||
import org.gotti.wurmunlimited.modsupport.actions.ModAction;
|
||||
import org.gotti.wurmunlimited.modsupport.actions.ModActions;
|
||||
|
||||
import com.wurmonline.server.Items;
|
||||
import com.wurmonline.server.Server;
|
||||
import com.wurmonline.server.behaviours.Action;
|
||||
import com.wurmonline.server.behaviours.ActionEntry;
|
||||
import com.wurmonline.server.creatures.Creature;
|
||||
import com.wurmonline.server.items.Item;
|
||||
import com.wurmonline.server.players.Player;
|
||||
|
||||
import mod.sin.wyvern.Caches;
|
||||
|
||||
public class TreasureCacheOpenAction implements ModAction {
|
||||
private static Logger logger = Logger.getLogger(TreasureCacheOpenAction.class.getName());
|
||||
|
||||
private final short actionId;
|
||||
private final ActionEntry actionEntry;
|
||||
|
||||
public TreasureCacheOpenAction() {
|
||||
logger.log(Level.WARNING, "TreasureCacheOpenAction()");
|
||||
|
||||
actionId = (short) ModActions.getNextActionId();
|
||||
actionEntry = ActionEntry.createEntry(
|
||||
actionId,
|
||||
"Open cache",
|
||||
"opening",
|
||||
new int[] { 6 /* ACTION_TYPE_NOMOVE */ } // 6 /* ACTION_TYPE_NOMOVE */, 48 /* ACTION_TYPE_ENEMY_ALWAYS */, 36 /* ACTION_TYPE_ALWAYS_USE_ACTIVE_ITEM */
|
||||
);
|
||||
ModActions.registerAction(actionEntry);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public BehaviourProvider getBehaviourProvider()
|
||||
{
|
||||
return new BehaviourProvider() {
|
||||
// Menu with activated object
|
||||
@Override
|
||||
public List<ActionEntry> getBehavioursFor(Creature performer, Item source, Item object)
|
||||
{
|
||||
return this.getBehavioursFor(performer, object);
|
||||
}
|
||||
|
||||
// Menu without activated object
|
||||
@Override
|
||||
public List<ActionEntry> getBehavioursFor(Creature performer, Item object)
|
||||
{
|
||||
if(performer instanceof Player && object != null && Caches.isTreasureCache(object)) {
|
||||
return Arrays.asList(actionEntry);
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
@Override
|
||||
public ActionPerformer getActionPerformer()
|
||||
{
|
||||
return new ActionPerformer() {
|
||||
|
||||
@Override
|
||||
public short getActionId() {
|
||||
return actionId;
|
||||
}
|
||||
|
||||
// Without activated object
|
||||
@Override
|
||||
public boolean action(Action act, Creature performer, Item target, short action, float counter)
|
||||
{
|
||||
try{
|
||||
if(performer instanceof Player){
|
||||
if(!Caches.isTreasureCache(target)){
|
||||
performer.getCommunicator().sendNormalServerMessage("That is not a treasure cache.");
|
||||
return true;
|
||||
}
|
||||
if(target.getLastOwnerId() != performer.getWurmId() && target.getOwnerId() != performer.getWurmId()){
|
||||
performer.getCommunicator().sendNormalServerMessage("You must own the "+target.getName()+" to open it.");
|
||||
return true;
|
||||
}
|
||||
if(counter == 1.0f){
|
||||
performer.getCommunicator().sendNormalServerMessage("You begin to open the "+target.getName()+".");
|
||||
Server.getInstance().broadCastAction(performer.getName() + " begins opening "+performer.getHisHerItsString()+" "+target.getName()+".", performer, 5);
|
||||
act.setTimeLeft(50);
|
||||
performer.sendActionControl("Opening", true, act.getTimeLeft());
|
||||
}else if(counter * 10f > performer.getCurrentAction().getTimeLeft()){
|
||||
performer.getCommunicator().sendNormalServerMessage("You open your "+target.getName()+".");
|
||||
Server.getInstance().broadCastAction(performer.getName() + " opens "+performer.getHisHerItsString()+" "+target.getName()+".", performer, 5);
|
||||
logger.info("Player "+performer.getName()+" opened "+target.getName()+" at quality "+target.getCurrentQualityLevel()+" and rarity "+target.getRarity());
|
||||
Caches.openCache(performer, target);
|
||||
Items.destroyItem(target.getWurmId());
|
||||
return true;
|
||||
}
|
||||
}else{
|
||||
logger.info("Somehow a non-player activated a Treasure Box...");
|
||||
}
|
||||
return false;
|
||||
}catch(Exception e){
|
||||
e.printStackTrace();
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean action(Action act, Creature performer, Item source, Item target, short action, float counter)
|
||||
{
|
||||
return this.action(act, performer, target, action, counter);
|
||||
}
|
||||
|
||||
|
||||
}; // ActionPerformer
|
||||
}
|
||||
}
|
||||
60
src/main/java/mod/sin/armour/Glimmerscale.java
Normal file
60
src/main/java/mod/sin/armour/Glimmerscale.java
Normal file
@@ -0,0 +1,60 @@
|
||||
package mod.sin.armour;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
import org.gotti.wurmunlimited.modsupport.ItemTemplateBuilder;
|
||||
|
||||
import com.wurmonline.server.MiscConstants;
|
||||
import com.wurmonline.server.items.CreationCategories;
|
||||
import com.wurmonline.server.items.CreationEntryCreator;
|
||||
import com.wurmonline.server.items.ItemList;
|
||||
import com.wurmonline.server.items.ItemTemplate;
|
||||
import com.wurmonline.server.items.ItemTypes;
|
||||
import com.wurmonline.server.items.Materials;
|
||||
import com.wurmonline.server.skills.SkillList;
|
||||
|
||||
public class Glimmerscale {
|
||||
private static Logger logger = Logger.getLogger(Glimmerscale.class.getName());
|
||||
public static int templateId;
|
||||
private String name = "glimmerscale";
|
||||
public void createTemplate() throws IOException{
|
||||
ItemTemplateBuilder itemBuilder = new ItemTemplateBuilder("item.mod.glimmerscale.scale");
|
||||
itemBuilder.name(name, "glimmerscales", "Legendary scales, made from the careful combination of dragon scales and glimmersteel.");
|
||||
itemBuilder.descriptions("excellent", "good", "ok", "poor");
|
||||
itemBuilder.itemTypes(new short[]{ // {22, 146, 46, 113, 157} - Addy Lump
|
||||
ItemTypes.ITEM_TYPE_METAL,
|
||||
ItemTypes.ITEM_TYPE_BULK,
|
||||
ItemTypes.ITEM_TYPE_COMBINE,
|
||||
ItemTypes.ITEM_TYPE_NOT_MISSION
|
||||
});
|
||||
itemBuilder.imageNumber((short) 554);
|
||||
itemBuilder.behaviourType((short) 1);
|
||||
itemBuilder.combatDamage(0);
|
||||
itemBuilder.decayTime(Long.MAX_VALUE);
|
||||
itemBuilder.dimensions(10, 30, 30);
|
||||
itemBuilder.primarySkill(-10);
|
||||
itemBuilder.bodySpaces(MiscConstants.EMPTY_BYTE_PRIMITIVE_ARRAY);
|
||||
itemBuilder.modelName("model.resource.scales.dragon.");
|
||||
itemBuilder.difficulty(60.0f);
|
||||
itemBuilder.weightGrams(400);
|
||||
itemBuilder.material(Materials.MATERIAL_UNDEFINED);
|
||||
itemBuilder.value(200000);
|
||||
|
||||
ItemTemplate template = itemBuilder.build();
|
||||
templateId = template.getTemplateId();
|
||||
logger.info(name+" TemplateID: "+templateId);
|
||||
}
|
||||
|
||||
public void initCreationEntry(){
|
||||
logger.info("initCreationEntry()");
|
||||
if(templateId > 0){
|
||||
logger.info("Creating "+name+" creation entry, ID = "+templateId);
|
||||
// CreationEntryCreator.createSimpleEntry(10041, 220, 47, 223, true, true, 0.0f, false, false, CreationCategories.RESOURCES);
|
||||
CreationEntryCreator.createSimpleEntry(SkillList.SMITHING_METALLURGY, ItemList.dragonScale, ItemList.glimmerSteelBar,
|
||||
templateId, true, true, 0.0f, true, false, CreationCategories.RESOURCES);
|
||||
}else{
|
||||
logger.info(name+" does not have a template ID on creation entry.");
|
||||
}
|
||||
}
|
||||
}
|
||||
71
src/main/java/mod/sin/armour/GlimmerscaleBoot.java
Normal file
71
src/main/java/mod/sin/armour/GlimmerscaleBoot.java
Normal file
@@ -0,0 +1,71 @@
|
||||
package mod.sin.armour;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
import org.gotti.wurmunlimited.modsupport.ItemTemplateBuilder;
|
||||
|
||||
import com.wurmonline.server.MiscConstants;
|
||||
import com.wurmonline.server.combat.ArmourTypes;
|
||||
import com.wurmonline.server.items.CreationCategories;
|
||||
import com.wurmonline.server.items.CreationEntryCreator;
|
||||
import com.wurmonline.server.items.ItemList;
|
||||
import com.wurmonline.server.items.ItemTemplate;
|
||||
import com.wurmonline.server.items.ItemTypes;
|
||||
import com.wurmonline.server.items.Materials;
|
||||
import com.wurmonline.server.skills.SkillList;
|
||||
|
||||
public class GlimmerscaleBoot implements ItemTypes, MiscConstants {
|
||||
public static Logger logger = Logger.getLogger(GlimmerscaleBoot.class.getName());
|
||||
public static int templateId;
|
||||
private String name = "glimmerscale boot";
|
||||
public void createTemplate() throws IOException{
|
||||
/*ItemTemplateCreator.createItemTemplate(473, 3, "drake hide jacket", "drake hide jackets", "excellent", "good", "ok", "poor",
|
||||
* "A jacket made from finest drake hide with brass husks.",
|
||||
* new short[]{108, 44, 23, 4, 99},
|
||||
* 1060, 1, 0, 29030400, 2, 40, 40, -10, new byte[]{2},
|
||||
* "model.armour.torso.dragon.", 70.0f, 600, 16, 100000, true, 9);
|
||||
*/
|
||||
ItemTemplateBuilder itemBuilder = new ItemTemplateBuilder("mod.item.glimmerscale.boot");
|
||||
itemBuilder.name(name, "glimmerscale boots", "A glimmerscale boot.");
|
||||
itemBuilder.itemTypes(new short[]{ // {108, 44, 23, 4, 99} - Drake hide jacket
|
||||
ItemTypes.ITEM_TYPE_NAMED,
|
||||
ItemTypes.ITEM_TYPE_REPAIRABLE,
|
||||
ItemTypes.ITEM_TYPE_METAL,
|
||||
ItemTypes.ITEM_TYPE_ARMOUR,
|
||||
ItemTypes.ITEM_TYPE_DRAGONARMOUR
|
||||
});
|
||||
itemBuilder.imageNumber((short) 1025);
|
||||
itemBuilder.behaviourType((short) 1);
|
||||
itemBuilder.combatDamage(0);
|
||||
itemBuilder.decayTime(Long.MAX_VALUE);
|
||||
itemBuilder.dimensions(2, 40, 40);
|
||||
itemBuilder.primarySkill(-10);
|
||||
itemBuilder.bodySpaces(new byte[]{15, 16});
|
||||
itemBuilder.modelName("model.armour.foot.dragon.scale.leather.");
|
||||
itemBuilder.difficulty(72.0f);
|
||||
itemBuilder.weightGrams(2000);
|
||||
itemBuilder.material(Materials.MATERIAL_GLIMMERSTEEL);
|
||||
itemBuilder.value(1000000);
|
||||
itemBuilder.armourType(ArmourTypes.ARMOUR_SCALE_DRAGON);
|
||||
|
||||
ItemTemplate template = itemBuilder.build();
|
||||
templateId = template.getTemplateId();
|
||||
logger.info(name+" TemplateID: "+templateId);
|
||||
}
|
||||
|
||||
public void initCreationEntry(){
|
||||
logger.info("initCreationEntry()");
|
||||
if(templateId > 0){
|
||||
logger.info("Creating "+name+" creation entry, ID = "+templateId);
|
||||
CreationEntryCreator.createSimpleEntry(SkillList.SMITHING_ARMOUR_PLATE, ItemList.anvilLarge, Glimmerscale.templateId,
|
||||
templateId, false, true, 0.0f, false, false, CreationCategories.ARMOUR);
|
||||
//final AdvancedCreationEntry entry = CreationEntryCreator.createAdvancedEntry(SkillList.SMITHING_WEAPON_HEADS,
|
||||
// ItemList.ironBand, ItemList.shaft, templateId, false, false, 0f, true, false, CreationCategories.TOOLS);
|
||||
//entry.addRequirement(new CreationRequirement(1, ItemList.woodenHandleSword, 2, true));
|
||||
//entry.addRequirement(new CreationRequirement(2, ItemList.nailsIronSmall, 1, true));
|
||||
}else{
|
||||
logger.info(name+" does not have a template ID on creation entry.");
|
||||
}
|
||||
}
|
||||
}
|
||||
71
src/main/java/mod/sin/armour/GlimmerscaleGlove.java
Normal file
71
src/main/java/mod/sin/armour/GlimmerscaleGlove.java
Normal file
@@ -0,0 +1,71 @@
|
||||
package mod.sin.armour;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
import org.gotti.wurmunlimited.modsupport.ItemTemplateBuilder;
|
||||
|
||||
import com.wurmonline.server.MiscConstants;
|
||||
import com.wurmonline.server.combat.ArmourTypes;
|
||||
import com.wurmonline.server.items.CreationCategories;
|
||||
import com.wurmonline.server.items.CreationEntryCreator;
|
||||
import com.wurmonline.server.items.ItemList;
|
||||
import com.wurmonline.server.items.ItemTemplate;
|
||||
import com.wurmonline.server.items.ItemTypes;
|
||||
import com.wurmonline.server.items.Materials;
|
||||
import com.wurmonline.server.skills.SkillList;
|
||||
|
||||
public class GlimmerscaleGlove implements ItemTypes, MiscConstants {
|
||||
public static Logger logger = Logger.getLogger(GlimmerscaleGlove.class.getName());
|
||||
public static int templateId;
|
||||
private String name = "glimmerscale glove";
|
||||
public void createTemplate() throws IOException{
|
||||
/*ItemTemplateCreator.createItemTemplate(473, 3, "drake hide jacket", "drake hide jackets", "excellent", "good", "ok", "poor",
|
||||
* "A jacket made from finest drake hide with brass husks.",
|
||||
* new short[]{108, 44, 23, 4, 99},
|
||||
* 1060, 1, 0, 29030400, 2, 40, 40, -10, new byte[]{2},
|
||||
* "model.armour.torso.dragon.", 70.0f, 600, 16, 100000, true, 9);
|
||||
*/
|
||||
ItemTemplateBuilder itemBuilder = new ItemTemplateBuilder("mod.item.glimmerscale.glove");
|
||||
itemBuilder.name(name, "glimmerscale gloves", "A glimmerscale glove.");
|
||||
itemBuilder.itemTypes(new short[]{ // {108, 44, 23, 4, 99} - Drake hide jacket
|
||||
ItemTypes.ITEM_TYPE_NAMED,
|
||||
ItemTypes.ITEM_TYPE_REPAIRABLE,
|
||||
ItemTypes.ITEM_TYPE_METAL,
|
||||
ItemTypes.ITEM_TYPE_ARMOUR,
|
||||
ItemTypes.ITEM_TYPE_DRAGONARMOUR
|
||||
});
|
||||
itemBuilder.imageNumber((short) 1024);
|
||||
itemBuilder.behaviourType((short) 1);
|
||||
itemBuilder.combatDamage(0);
|
||||
itemBuilder.decayTime(Long.MAX_VALUE);
|
||||
itemBuilder.dimensions(2, 40, 40);
|
||||
itemBuilder.primarySkill(-10);
|
||||
itemBuilder.bodySpaces(new byte[]{13, 14});
|
||||
itemBuilder.modelName("model.armour.hand.dragon.scale.leather.");
|
||||
itemBuilder.difficulty(70.0f);
|
||||
itemBuilder.weightGrams(1200);
|
||||
itemBuilder.material(Materials.MATERIAL_GLIMMERSTEEL);
|
||||
itemBuilder.value(1000000);
|
||||
itemBuilder.armourType(ArmourTypes.ARMOUR_SCALE_DRAGON);
|
||||
|
||||
ItemTemplate template = itemBuilder.build();
|
||||
templateId = template.getTemplateId();
|
||||
logger.info(name+" TemplateID: "+templateId);
|
||||
}
|
||||
|
||||
public void initCreationEntry(){
|
||||
logger.info("initCreationEntry()");
|
||||
if(templateId > 0){
|
||||
logger.info("Creating "+name+" creation entry, ID = "+templateId);
|
||||
CreationEntryCreator.createSimpleEntry(SkillList.SMITHING_ARMOUR_PLATE, ItemList.anvilLarge, Glimmerscale.templateId,
|
||||
templateId, false, true, 0.0f, false, false, CreationCategories.ARMOUR);
|
||||
//final AdvancedCreationEntry entry = CreationEntryCreator.createAdvancedEntry(SkillList.SMITHING_WEAPON_HEADS,
|
||||
// ItemList.ironBand, ItemList.shaft, templateId, false, false, 0f, true, false, CreationCategories.TOOLS);
|
||||
//entry.addRequirement(new CreationRequirement(1, ItemList.woodenHandleSword, 2, true));
|
||||
//entry.addRequirement(new CreationRequirement(2, ItemList.nailsIronSmall, 1, true));
|
||||
}else{
|
||||
logger.info(name+" does not have a template ID on creation entry.");
|
||||
}
|
||||
}
|
||||
}
|
||||
71
src/main/java/mod/sin/armour/GlimmerscaleHelmet.java
Normal file
71
src/main/java/mod/sin/armour/GlimmerscaleHelmet.java
Normal file
@@ -0,0 +1,71 @@
|
||||
package mod.sin.armour;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
import org.gotti.wurmunlimited.modsupport.ItemTemplateBuilder;
|
||||
|
||||
import com.wurmonline.server.MiscConstants;
|
||||
import com.wurmonline.server.combat.ArmourTypes;
|
||||
import com.wurmonline.server.items.CreationCategories;
|
||||
import com.wurmonline.server.items.CreationEntryCreator;
|
||||
import com.wurmonline.server.items.ItemList;
|
||||
import com.wurmonline.server.items.ItemTemplate;
|
||||
import com.wurmonline.server.items.ItemTypes;
|
||||
import com.wurmonline.server.items.Materials;
|
||||
import com.wurmonline.server.skills.SkillList;
|
||||
|
||||
public class GlimmerscaleHelmet implements ItemTypes, MiscConstants {
|
||||
public static Logger logger = Logger.getLogger(GlimmerscaleHelmet.class.getName());
|
||||
public static int templateId;
|
||||
private String name = "glimmerscale helmet";
|
||||
public void createTemplate() throws IOException{
|
||||
/*ItemTemplateCreator.createItemTemplate(473, 3, "drake hide jacket", "drake hide jackets", "excellent", "good", "ok", "poor",
|
||||
* "A jacket made from finest drake hide with brass husks.",
|
||||
* new short[]{108, 44, 23, 4, 99},
|
||||
* 1060, 1, 0, 29030400, 2, 40, 40, -10, new byte[]{2},
|
||||
* "model.armour.torso.dragon.", 70.0f, 600, 16, 100000, true, 9);
|
||||
*/
|
||||
ItemTemplateBuilder itemBuilder = new ItemTemplateBuilder("mod.item.glimmerscale.helmet");
|
||||
itemBuilder.name(name, "glimmerscale helmets", "A horned helmet made of glimmerscale.");
|
||||
itemBuilder.itemTypes(new short[]{ // {108, 44, 23, 4, 99} - Drake hide jacket
|
||||
ItemTypes.ITEM_TYPE_NAMED,
|
||||
ItemTypes.ITEM_TYPE_REPAIRABLE,
|
||||
ItemTypes.ITEM_TYPE_METAL,
|
||||
ItemTypes.ITEM_TYPE_ARMOUR,
|
||||
ItemTypes.ITEM_TYPE_DRAGONARMOUR
|
||||
});
|
||||
itemBuilder.imageNumber((short) 968);
|
||||
itemBuilder.behaviourType((short) 1);
|
||||
itemBuilder.combatDamage(0);
|
||||
itemBuilder.decayTime(Long.MAX_VALUE);
|
||||
itemBuilder.dimensions(2, 40, 40);
|
||||
itemBuilder.primarySkill(-10);
|
||||
itemBuilder.bodySpaces(new byte[]{1, 28});
|
||||
itemBuilder.modelName("model.armour.head.greathelmHornedOfGold.");
|
||||
itemBuilder.difficulty(76.0f);
|
||||
itemBuilder.weightGrams(2500);
|
||||
itemBuilder.material(Materials.MATERIAL_GLIMMERSTEEL);
|
||||
itemBuilder.value(1000000);
|
||||
itemBuilder.armourType(ArmourTypes.ARMOUR_SCALE_DRAGON);
|
||||
|
||||
ItemTemplate template = itemBuilder.build();
|
||||
templateId = template.getTemplateId();
|
||||
logger.info(name+" TemplateID: "+templateId);
|
||||
}
|
||||
|
||||
public void initCreationEntry(){
|
||||
logger.info("initCreationEntry()");
|
||||
if(templateId > 0){
|
||||
logger.info("Creating "+name+" creation entry, ID = "+templateId);
|
||||
CreationEntryCreator.createSimpleEntry(SkillList.SMITHING_ARMOUR_PLATE, ItemList.anvilLarge, Glimmerscale.templateId,
|
||||
templateId, false, true, 0.0f, false, false, CreationCategories.ARMOUR);
|
||||
//final AdvancedCreationEntry entry = CreationEntryCreator.createAdvancedEntry(SkillList.SMITHING_WEAPON_HEADS,
|
||||
// ItemList.ironBand, ItemList.shaft, templateId, false, false, 0f, true, false, CreationCategories.TOOLS);
|
||||
//entry.addRequirement(new CreationRequirement(1, ItemList.woodenHandleSword, 2, true));
|
||||
//entry.addRequirement(new CreationRequirement(2, ItemList.nailsIronSmall, 1, true));
|
||||
}else{
|
||||
logger.info(name+" does not have a template ID on creation entry.");
|
||||
}
|
||||
}
|
||||
}
|
||||
71
src/main/java/mod/sin/armour/GlimmerscaleHose.java
Normal file
71
src/main/java/mod/sin/armour/GlimmerscaleHose.java
Normal file
@@ -0,0 +1,71 @@
|
||||
package mod.sin.armour;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
import org.gotti.wurmunlimited.modsupport.ItemTemplateBuilder;
|
||||
|
||||
import com.wurmonline.server.MiscConstants;
|
||||
import com.wurmonline.server.combat.ArmourTypes;
|
||||
import com.wurmonline.server.items.CreationCategories;
|
||||
import com.wurmonline.server.items.CreationEntryCreator;
|
||||
import com.wurmonline.server.items.ItemList;
|
||||
import com.wurmonline.server.items.ItemTemplate;
|
||||
import com.wurmonline.server.items.ItemTypes;
|
||||
import com.wurmonline.server.items.Materials;
|
||||
import com.wurmonline.server.skills.SkillList;
|
||||
|
||||
public class GlimmerscaleHose implements ItemTypes, MiscConstants {
|
||||
public static Logger logger = Logger.getLogger(GlimmerscaleHose.class.getName());
|
||||
public static int templateId;
|
||||
private String name = "glimmerscale leggings";
|
||||
public void createTemplate() throws IOException{
|
||||
/*ItemTemplateCreator.createItemTemplate(473, 3, "drake hide jacket", "drake hide jackets", "excellent", "good", "ok", "poor",
|
||||
* "A jacket made from finest drake hide with brass husks.",
|
||||
* new short[]{108, 44, 23, 4, 99},
|
||||
* 1060, 1, 0, 29030400, 2, 40, 40, -10, new byte[]{2},
|
||||
* "model.armour.torso.dragon.", 70.0f, 600, 16, 100000, true, 9);
|
||||
*/
|
||||
ItemTemplateBuilder itemBuilder = new ItemTemplateBuilder("mod.item.glimmerscale.hose");
|
||||
itemBuilder.name(name, "glimmerscale leggings", "A set of glimmerscale leggings.");
|
||||
itemBuilder.itemTypes(new short[]{ // {108, 44, 23, 4, 99} - Drake hide jacket
|
||||
ItemTypes.ITEM_TYPE_NAMED,
|
||||
ItemTypes.ITEM_TYPE_REPAIRABLE,
|
||||
ItemTypes.ITEM_TYPE_METAL,
|
||||
ItemTypes.ITEM_TYPE_ARMOUR,
|
||||
ItemTypes.ITEM_TYPE_DRAGONARMOUR
|
||||
});
|
||||
itemBuilder.imageNumber((short) 1021);
|
||||
itemBuilder.behaviourType((short) 1);
|
||||
itemBuilder.combatDamage(0);
|
||||
itemBuilder.decayTime(Long.MAX_VALUE);
|
||||
itemBuilder.dimensions(2, 40, 40);
|
||||
itemBuilder.primarySkill(-10);
|
||||
itemBuilder.bodySpaces(new byte[]{34});
|
||||
itemBuilder.modelName("model.armour.leg.dragon.scale.leather.");
|
||||
itemBuilder.difficulty(78.0f);
|
||||
itemBuilder.weightGrams(3200);
|
||||
itemBuilder.material(Materials.MATERIAL_GLIMMERSTEEL);
|
||||
itemBuilder.value(1000000);
|
||||
itemBuilder.armourType(ArmourTypes.ARMOUR_SCALE_DRAGON);
|
||||
|
||||
ItemTemplate template = itemBuilder.build();
|
||||
templateId = template.getTemplateId();
|
||||
logger.info(name+" TemplateID: "+templateId);
|
||||
}
|
||||
|
||||
public void initCreationEntry(){
|
||||
logger.info("initCreationEntry()");
|
||||
if(templateId > 0){
|
||||
logger.info("Creating "+name+" creation entry, ID = "+templateId);
|
||||
CreationEntryCreator.createSimpleEntry(SkillList.SMITHING_ARMOUR_PLATE, ItemList.anvilLarge, Glimmerscale.templateId,
|
||||
templateId, false, true, 0.0f, false, false, CreationCategories.ARMOUR);
|
||||
//final AdvancedCreationEntry entry = CreationEntryCreator.createAdvancedEntry(SkillList.SMITHING_WEAPON_HEADS,
|
||||
// ItemList.ironBand, ItemList.shaft, templateId, false, false, 0f, true, false, CreationCategories.TOOLS);
|
||||
//entry.addRequirement(new CreationRequirement(1, ItemList.woodenHandleSword, 2, true));
|
||||
//entry.addRequirement(new CreationRequirement(2, ItemList.nailsIronSmall, 1, true));
|
||||
}else{
|
||||
logger.info(name+" does not have a template ID on creation entry.");
|
||||
}
|
||||
}
|
||||
}
|
||||
71
src/main/java/mod/sin/armour/GlimmerscaleSleeve.java
Normal file
71
src/main/java/mod/sin/armour/GlimmerscaleSleeve.java
Normal file
@@ -0,0 +1,71 @@
|
||||
package mod.sin.armour;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
import org.gotti.wurmunlimited.modsupport.ItemTemplateBuilder;
|
||||
|
||||
import com.wurmonline.server.MiscConstants;
|
||||
import com.wurmonline.server.combat.ArmourTypes;
|
||||
import com.wurmonline.server.items.CreationCategories;
|
||||
import com.wurmonline.server.items.CreationEntryCreator;
|
||||
import com.wurmonline.server.items.ItemList;
|
||||
import com.wurmonline.server.items.ItemTemplate;
|
||||
import com.wurmonline.server.items.ItemTypes;
|
||||
import com.wurmonline.server.items.Materials;
|
||||
import com.wurmonline.server.skills.SkillList;
|
||||
|
||||
public class GlimmerscaleSleeve implements ItemTypes, MiscConstants {
|
||||
public static Logger logger = Logger.getLogger(GlimmerscaleSleeve.class.getName());
|
||||
public static int templateId;
|
||||
private String name = "glimmerscale sleeve";
|
||||
public void createTemplate() throws IOException{
|
||||
/*ItemTemplateCreator.createItemTemplate(473, 3, "drake hide jacket", "drake hide jackets", "excellent", "good", "ok", "poor",
|
||||
* "A jacket made from finest drake hide with brass husks.",
|
||||
* new short[]{108, 44, 23, 4, 99},
|
||||
* 1060, 1, 0, 29030400, 2, 40, 40, -10, new byte[]{2},
|
||||
* "model.armour.torso.dragon.", 70.0f, 600, 16, 100000, true, 9);
|
||||
*/
|
||||
ItemTemplateBuilder itemBuilder = new ItemTemplateBuilder("mod.item.glimmerscale.sleeve");
|
||||
itemBuilder.name(name, "glimmerscale sleeves", "A glimmerscale sleeve.");
|
||||
itemBuilder.itemTypes(new short[]{ // {108, 44, 23, 4, 99} - Drake hide jacket
|
||||
ItemTypes.ITEM_TYPE_NAMED,
|
||||
ItemTypes.ITEM_TYPE_REPAIRABLE,
|
||||
ItemTypes.ITEM_TYPE_METAL,
|
||||
ItemTypes.ITEM_TYPE_ARMOUR,
|
||||
ItemTypes.ITEM_TYPE_DRAGONARMOUR
|
||||
});
|
||||
itemBuilder.imageNumber((short) 1022);
|
||||
itemBuilder.behaviourType((short) 1);
|
||||
itemBuilder.combatDamage(0);
|
||||
itemBuilder.decayTime(Long.MAX_VALUE);
|
||||
itemBuilder.dimensions(2, 40, 40);
|
||||
itemBuilder.primarySkill(-10);
|
||||
itemBuilder.bodySpaces(new byte[]{3, 4});
|
||||
itemBuilder.modelName("model.armour.sleeve.dragon.scale.leather.");
|
||||
itemBuilder.difficulty(74.0f);
|
||||
itemBuilder.weightGrams(1800);
|
||||
itemBuilder.material(Materials.MATERIAL_GLIMMERSTEEL);
|
||||
itemBuilder.value(1000000);
|
||||
itemBuilder.armourType(ArmourTypes.ARMOUR_SCALE_DRAGON);
|
||||
|
||||
ItemTemplate template = itemBuilder.build();
|
||||
templateId = template.getTemplateId();
|
||||
logger.info(name+" TemplateID: "+templateId);
|
||||
}
|
||||
|
||||
public void initCreationEntry(){
|
||||
logger.info("initCreationEntry()");
|
||||
if(templateId > 0){
|
||||
logger.info("Creating "+name+" creation entry, ID = "+templateId);
|
||||
CreationEntryCreator.createSimpleEntry(SkillList.SMITHING_ARMOUR_PLATE, ItemList.anvilLarge, Glimmerscale.templateId,
|
||||
templateId, false, true, 0.0f, false, false, CreationCategories.ARMOUR);
|
||||
//final AdvancedCreationEntry entry = CreationEntryCreator.createAdvancedEntry(SkillList.SMITHING_WEAPON_HEADS,
|
||||
// ItemList.ironBand, ItemList.shaft, templateId, false, false, 0f, true, false, CreationCategories.TOOLS);
|
||||
//entry.addRequirement(new CreationRequirement(1, ItemList.woodenHandleSword, 2, true));
|
||||
//entry.addRequirement(new CreationRequirement(2, ItemList.nailsIronSmall, 1, true));
|
||||
}else{
|
||||
logger.info(name+" does not have a template ID on creation entry.");
|
||||
}
|
||||
}
|
||||
}
|
||||
71
src/main/java/mod/sin/armour/GlimmerscaleVest.java
Normal file
71
src/main/java/mod/sin/armour/GlimmerscaleVest.java
Normal file
@@ -0,0 +1,71 @@
|
||||
package mod.sin.armour;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
import org.gotti.wurmunlimited.modsupport.ItemTemplateBuilder;
|
||||
|
||||
import com.wurmonline.server.MiscConstants;
|
||||
import com.wurmonline.server.combat.ArmourTypes;
|
||||
import com.wurmonline.server.items.CreationCategories;
|
||||
import com.wurmonline.server.items.CreationEntryCreator;
|
||||
import com.wurmonline.server.items.ItemList;
|
||||
import com.wurmonline.server.items.ItemTemplate;
|
||||
import com.wurmonline.server.items.ItemTypes;
|
||||
import com.wurmonline.server.items.Materials;
|
||||
import com.wurmonline.server.skills.SkillList;
|
||||
|
||||
public class GlimmerscaleVest implements ItemTypes, MiscConstants {
|
||||
public static Logger logger = Logger.getLogger(GlimmerscaleVest.class.getName());
|
||||
public static int templateId;
|
||||
private String name = "glimmerscale vest";
|
||||
public void createTemplate() throws IOException{
|
||||
/*ItemTemplateCreator.createItemTemplate(473, 3, "drake hide jacket", "drake hide jackets", "excellent", "good", "ok", "poor",
|
||||
* "A jacket made from finest drake hide with brass husks.",
|
||||
* new short[]{108, 44, 23, 4, 99},
|
||||
* 1060, 1, 0, 29030400, 2, 40, 40, -10, new byte[]{2},
|
||||
* "model.armour.torso.dragon.", 70.0f, 600, 16, 100000, true, 9);
|
||||
*/
|
||||
ItemTemplateBuilder itemBuilder = new ItemTemplateBuilder("mod.item.glimmerscale.vest");
|
||||
itemBuilder.name(name, "glimmerscale vests", "A glimmerscale vest.");
|
||||
itemBuilder.itemTypes(new short[]{ // {108, 44, 23, 4, 99} - Drake hide jacket
|
||||
ItemTypes.ITEM_TYPE_NAMED,
|
||||
ItemTypes.ITEM_TYPE_REPAIRABLE,
|
||||
ItemTypes.ITEM_TYPE_METAL,
|
||||
ItemTypes.ITEM_TYPE_ARMOUR,
|
||||
ItemTypes.ITEM_TYPE_DRAGONARMOUR
|
||||
});
|
||||
itemBuilder.imageNumber((short) 1020);
|
||||
itemBuilder.behaviourType((short) 1);
|
||||
itemBuilder.combatDamage(0);
|
||||
itemBuilder.decayTime(Long.MAX_VALUE);
|
||||
itemBuilder.dimensions(2, 40, 40);
|
||||
itemBuilder.primarySkill(-10);
|
||||
itemBuilder.bodySpaces(new byte[]{2});
|
||||
itemBuilder.modelName("model.armour.torso.dragon.scale.leather.");
|
||||
itemBuilder.difficulty(80.0f);
|
||||
itemBuilder.weightGrams(4500);
|
||||
itemBuilder.material(Materials.MATERIAL_GLIMMERSTEEL);
|
||||
itemBuilder.value(1000000);
|
||||
itemBuilder.armourType(ArmourTypes.ARMOUR_SCALE_DRAGON);
|
||||
|
||||
ItemTemplate template = itemBuilder.build();
|
||||
templateId = template.getTemplateId();
|
||||
logger.info(name+" TemplateID: "+templateId);
|
||||
}
|
||||
|
||||
public void initCreationEntry(){
|
||||
logger.info("initCreationEntry()");
|
||||
if(templateId > 0){
|
||||
logger.info("Creating "+name+" creation entry, ID = "+templateId);
|
||||
CreationEntryCreator.createSimpleEntry(SkillList.SMITHING_ARMOUR_PLATE, ItemList.anvilLarge, Glimmerscale.templateId,
|
||||
templateId, false, true, 0.0f, false, false, CreationCategories.ARMOUR);
|
||||
//final AdvancedCreationEntry entry = CreationEntryCreator.createAdvancedEntry(SkillList.SMITHING_WEAPON_HEADS,
|
||||
// ItemList.ironBand, ItemList.shaft, templateId, false, false, 0f, true, false, CreationCategories.TOOLS);
|
||||
//entry.addRequirement(new CreationRequirement(1, ItemList.woodenHandleSword, 2, true));
|
||||
//entry.addRequirement(new CreationRequirement(2, ItemList.nailsIronSmall, 1, true));
|
||||
}else{
|
||||
logger.info(name+" does not have a template ID on creation entry.");
|
||||
}
|
||||
}
|
||||
}
|
||||
63
src/main/java/mod/sin/armour/SpectralBoot.java
Normal file
63
src/main/java/mod/sin/armour/SpectralBoot.java
Normal file
@@ -0,0 +1,63 @@
|
||||
package mod.sin.armour;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
import org.gotti.wurmunlimited.modsupport.ItemTemplateBuilder;
|
||||
|
||||
import com.wurmonline.server.MiscConstants;
|
||||
import com.wurmonline.server.combat.ArmourTypes;
|
||||
import com.wurmonline.server.items.CreationCategories;
|
||||
import com.wurmonline.server.items.CreationEntryCreator;
|
||||
import com.wurmonline.server.items.ItemList;
|
||||
import com.wurmonline.server.items.ItemTemplate;
|
||||
import com.wurmonline.server.items.ItemTypes;
|
||||
import com.wurmonline.server.items.Materials;
|
||||
import com.wurmonline.server.skills.SkillList;
|
||||
|
||||
public class SpectralBoot implements ItemTypes, MiscConstants {
|
||||
public static Logger logger = Logger.getLogger(SpectralBoot.class.getName());
|
||||
public static int templateId;
|
||||
private String name = "spectral boot";
|
||||
public void createTemplate() throws IOException{
|
||||
ItemTemplateBuilder itemBuilder = new ItemTemplateBuilder("mod.item.spectral.boot");
|
||||
itemBuilder.name(name, "spectral boots", "A spectral boot.");
|
||||
itemBuilder.itemTypes(new short[]{ // {108, 44, 23, 4, 99} - Drake hide jacket
|
||||
ItemTypes.ITEM_TYPE_NAMED,
|
||||
ItemTypes.ITEM_TYPE_REPAIRABLE,
|
||||
ItemTypes.ITEM_TYPE_LEATHER,
|
||||
ItemTypes.ITEM_TYPE_ARMOUR,
|
||||
ItemTypes.ITEM_TYPE_DRAGONARMOUR
|
||||
});
|
||||
itemBuilder.imageNumber((short) 1065);
|
||||
itemBuilder.behaviourType((short) 1);
|
||||
itemBuilder.combatDamage(0);
|
||||
itemBuilder.decayTime(Long.MAX_VALUE);
|
||||
itemBuilder.dimensions(2, 40, 40);
|
||||
itemBuilder.primarySkill(-10);
|
||||
itemBuilder.bodySpaces(new byte[]{15, 16});
|
||||
itemBuilder.modelName("model.armour.foot.dragon.");
|
||||
itemBuilder.difficulty(70.0f);
|
||||
itemBuilder.weightGrams(300);
|
||||
itemBuilder.material(Materials.MATERIAL_LEATHER);
|
||||
itemBuilder.value(1000000);
|
||||
itemBuilder.armourType(ArmourTypes.ARMOUR_LEATHER_DRAGON);
|
||||
|
||||
ItemTemplate template = itemBuilder.build();
|
||||
templateId = template.getTemplateId();
|
||||
logger.info(name+" TemplateID: "+templateId);
|
||||
}
|
||||
|
||||
public void initCreationEntry(){
|
||||
logger.info("initCreationEntry()");
|
||||
if(templateId > 0){
|
||||
logger.info("Creating "+name+" creation entry, ID = "+templateId);
|
||||
CreationEntryCreator.createSimpleEntry(SkillList.LEATHERWORKING, ItemList.needleIron, SpectralHide.templateId,
|
||||
templateId, false, true, 0.0f, false, false, CreationCategories.ARMOUR);
|
||||
CreationEntryCreator.createSimpleEntry(SkillList.LEATHERWORKING, ItemList.needleCopper, SpectralHide.templateId,
|
||||
templateId, false, true, 0.0f, false, false, CreationCategories.ARMOUR);
|
||||
}else{
|
||||
logger.info(name+" does not have a template ID on creation entry.");
|
||||
}
|
||||
}
|
||||
}
|
||||
64
src/main/java/mod/sin/armour/SpectralCap.java
Normal file
64
src/main/java/mod/sin/armour/SpectralCap.java
Normal file
@@ -0,0 +1,64 @@
|
||||
package mod.sin.armour;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
import org.gotti.wurmunlimited.modsupport.ItemTemplateBuilder;
|
||||
|
||||
import com.wurmonline.server.MiscConstants;
|
||||
import com.wurmonline.server.combat.ArmourTypes;
|
||||
import com.wurmonline.server.items.CreationCategories;
|
||||
import com.wurmonline.server.items.CreationEntryCreator;
|
||||
import com.wurmonline.server.items.ItemList;
|
||||
import com.wurmonline.server.items.ItemTemplate;
|
||||
import com.wurmonline.server.items.ItemTypes;
|
||||
import com.wurmonline.server.items.Materials;
|
||||
import com.wurmonline.server.skills.SkillList;
|
||||
|
||||
public class SpectralCap implements ItemTypes, MiscConstants {
|
||||
public static Logger logger = Logger.getLogger(SpectralCap.class.getName());
|
||||
public static int templateId;
|
||||
private String name = "spectral cap";
|
||||
public void createTemplate() throws IOException{
|
||||
ItemTemplateBuilder itemBuilder = new ItemTemplateBuilder("mod.item.spectral.cap");
|
||||
itemBuilder.name(name, "spectral caps", "A spectral cap.");
|
||||
itemBuilder.itemTypes(new short[]{ // {108, 44, 23, 4, 99} - Drake hide jacket
|
||||
ItemTypes.ITEM_TYPE_NAMED,
|
||||
ItemTypes.ITEM_TYPE_REPAIRABLE,
|
||||
ItemTypes.ITEM_TYPE_LEATHER,
|
||||
ItemTypes.ITEM_TYPE_ARMOUR,
|
||||
ItemTypes.ITEM_TYPE_DRAGONARMOUR
|
||||
});
|
||||
itemBuilder.imageNumber((short) 1063);
|
||||
itemBuilder.behaviourType((short) 1);
|
||||
itemBuilder.combatDamage(0);
|
||||
itemBuilder.decayTime(Long.MAX_VALUE);
|
||||
itemBuilder.dimensions(2, 40, 40);
|
||||
itemBuilder.primarySkill(-10);
|
||||
itemBuilder.bodySpaces(new byte[]{1, 28});
|
||||
itemBuilder.modelName("model.armour.head.dragon.");
|
||||
itemBuilder.difficulty(74.0f);
|
||||
itemBuilder.weightGrams(500);
|
||||
itemBuilder.material(Materials.MATERIAL_LEATHER);
|
||||
itemBuilder.value(1000000);
|
||||
itemBuilder.armourType(ArmourTypes.ARMOUR_LEATHER_DRAGON);
|
||||
|
||||
ItemTemplate template = itemBuilder.build();
|
||||
templateId = template.getTemplateId();
|
||||
logger.info("Spectral improve = "+template.getImproveItem());
|
||||
logger.info(name+" TemplateID: "+templateId);
|
||||
}
|
||||
|
||||
public void initCreationEntry(){
|
||||
logger.info("initCreationEntry()");
|
||||
if(templateId > 0){
|
||||
logger.info("Creating "+name+" creation entry, ID = "+templateId);
|
||||
CreationEntryCreator.createSimpleEntry(SkillList.LEATHERWORKING, ItemList.needleIron, SpectralHide.templateId,
|
||||
templateId, false, true, 0.0f, false, false, CreationCategories.ARMOUR);
|
||||
CreationEntryCreator.createSimpleEntry(SkillList.LEATHERWORKING, ItemList.needleCopper, SpectralHide.templateId,
|
||||
templateId, false, true, 0.0f, false, false, CreationCategories.ARMOUR);
|
||||
}else{
|
||||
logger.info(name+" does not have a template ID on creation entry.");
|
||||
}
|
||||
}
|
||||
}
|
||||
63
src/main/java/mod/sin/armour/SpectralGlove.java
Normal file
63
src/main/java/mod/sin/armour/SpectralGlove.java
Normal file
@@ -0,0 +1,63 @@
|
||||
package mod.sin.armour;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
import org.gotti.wurmunlimited.modsupport.ItemTemplateBuilder;
|
||||
|
||||
import com.wurmonline.server.MiscConstants;
|
||||
import com.wurmonline.server.combat.ArmourTypes;
|
||||
import com.wurmonline.server.items.CreationCategories;
|
||||
import com.wurmonline.server.items.CreationEntryCreator;
|
||||
import com.wurmonline.server.items.ItemList;
|
||||
import com.wurmonline.server.items.ItemTemplate;
|
||||
import com.wurmonline.server.items.ItemTypes;
|
||||
import com.wurmonline.server.items.Materials;
|
||||
import com.wurmonline.server.skills.SkillList;
|
||||
|
||||
public class SpectralGlove implements ItemTypes, MiscConstants {
|
||||
public static Logger logger = Logger.getLogger(SpectralGlove.class.getName());
|
||||
public static int templateId;
|
||||
private String name = "spectral glove";
|
||||
public void createTemplate() throws IOException{
|
||||
ItemTemplateBuilder itemBuilder = new ItemTemplateBuilder("mod.item.spectral.glove");
|
||||
itemBuilder.name(name, "spectral gloves", "A spectral glove.");
|
||||
itemBuilder.itemTypes(new short[]{ // {108, 44, 23, 4, 99} - Drake hide jacket
|
||||
ItemTypes.ITEM_TYPE_NAMED,
|
||||
ItemTypes.ITEM_TYPE_REPAIRABLE,
|
||||
ItemTypes.ITEM_TYPE_LEATHER,
|
||||
ItemTypes.ITEM_TYPE_ARMOUR,
|
||||
ItemTypes.ITEM_TYPE_DRAGONARMOUR
|
||||
});
|
||||
itemBuilder.imageNumber((short) 1064);
|
||||
itemBuilder.behaviourType((short) 1);
|
||||
itemBuilder.combatDamage(0);
|
||||
itemBuilder.decayTime(Long.MAX_VALUE);
|
||||
itemBuilder.dimensions(2, 40, 40);
|
||||
itemBuilder.primarySkill(-10);
|
||||
itemBuilder.bodySpaces(new byte[]{13, 14});
|
||||
itemBuilder.modelName("model.armour.hand.dragon.");
|
||||
itemBuilder.difficulty(68.0f);
|
||||
itemBuilder.weightGrams(250);
|
||||
itemBuilder.material(Materials.MATERIAL_LEATHER);
|
||||
itemBuilder.value(1000000);
|
||||
itemBuilder.armourType(ArmourTypes.ARMOUR_LEATHER_DRAGON);
|
||||
|
||||
ItemTemplate template = itemBuilder.build();
|
||||
templateId = template.getTemplateId();
|
||||
logger.info(name+" TemplateID: "+templateId);
|
||||
}
|
||||
|
||||
public void initCreationEntry(){
|
||||
logger.info("initCreationEntry()");
|
||||
if(templateId > 0){
|
||||
logger.info("Creating "+name+" creation entry, ID = "+templateId);
|
||||
CreationEntryCreator.createSimpleEntry(SkillList.LEATHERWORKING, ItemList.needleIron, SpectralHide.templateId,
|
||||
templateId, false, true, 0.0f, false, false, CreationCategories.ARMOUR);
|
||||
CreationEntryCreator.createSimpleEntry(SkillList.LEATHERWORKING, ItemList.needleCopper, SpectralHide.templateId,
|
||||
templateId, false, true, 0.0f, false, false, CreationCategories.ARMOUR);
|
||||
}else{
|
||||
logger.info(name+" does not have a template ID on creation entry.");
|
||||
}
|
||||
}
|
||||
}
|
||||
43
src/main/java/mod/sin/armour/SpectralHide.java
Normal file
43
src/main/java/mod/sin/armour/SpectralHide.java
Normal file
@@ -0,0 +1,43 @@
|
||||
package mod.sin.armour;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
import org.gotti.wurmunlimited.modsupport.ItemTemplateBuilder;
|
||||
|
||||
import com.wurmonline.server.MiscConstants;
|
||||
import com.wurmonline.server.items.ItemTemplate;
|
||||
import com.wurmonline.server.items.ItemTypes;
|
||||
import com.wurmonline.server.items.Materials;
|
||||
|
||||
public class SpectralHide implements ItemTypes, MiscConstants {
|
||||
private static Logger logger = Logger.getLogger(SpectralHide.class.getName());
|
||||
public static int templateId;
|
||||
public void createTemplate() throws IOException{
|
||||
String name = "spectral hide";
|
||||
ItemTemplateBuilder itemBuilder = new ItemTemplateBuilder("wyvern.spectral.hide");
|
||||
itemBuilder.name(name, "spectral hides", "Lightweight and transparent, this ethereal leather comes from another plane of existance. It is stronger than natural drake hide.");
|
||||
itemBuilder.descriptions("excellent", "good", "ok", "poor");
|
||||
itemBuilder.itemTypes(new short[]{
|
||||
ITEM_TYPE_LEATHER,
|
||||
ITEM_TYPE_HASDATA,
|
||||
ITEM_TYPE_COMBINE
|
||||
});
|
||||
itemBuilder.imageNumber((short) 602);
|
||||
itemBuilder.behaviourType((short) 1);
|
||||
itemBuilder.combatDamage(0);
|
||||
itemBuilder.decayTime(Long.MAX_VALUE);
|
||||
itemBuilder.dimensions(10, 30, 30);
|
||||
itemBuilder.primarySkill((int) NOID);
|
||||
itemBuilder.bodySpaces(EMPTY_BYTE_PRIMITIVE_ARRAY);
|
||||
itemBuilder.modelName("model.resource.leather.dragon.");
|
||||
itemBuilder.difficulty(20.0f);
|
||||
itemBuilder.weightGrams(200);
|
||||
itemBuilder.material(Materials.MATERIAL_LEATHER);
|
||||
itemBuilder.value(200000);
|
||||
|
||||
ItemTemplate template = itemBuilder.build();
|
||||
templateId = template.getTemplateId();
|
||||
logger.info(name+" TemplateID: "+templateId);
|
||||
}
|
||||
}
|
||||
74
src/main/java/mod/sin/armour/SpectralHose.java
Normal file
74
src/main/java/mod/sin/armour/SpectralHose.java
Normal file
@@ -0,0 +1,74 @@
|
||||
package mod.sin.armour;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
import org.gotti.wurmunlimited.modsupport.ItemTemplateBuilder;
|
||||
|
||||
import com.wurmonline.server.MiscConstants;
|
||||
import com.wurmonline.server.combat.ArmourTypes;
|
||||
import com.wurmonline.server.items.CreationCategories;
|
||||
import com.wurmonline.server.items.CreationEntryCreator;
|
||||
import com.wurmonline.server.items.ItemList;
|
||||
import com.wurmonline.server.items.ItemTemplate;
|
||||
import com.wurmonline.server.items.ItemTypes;
|
||||
import com.wurmonline.server.items.Materials;
|
||||
import com.wurmonline.server.skills.SkillList;
|
||||
|
||||
public class SpectralHose implements ItemTypes, MiscConstants {
|
||||
public static Logger logger = Logger.getLogger(SpectralHose.class.getName());
|
||||
public static int templateId;
|
||||
private String name = "spectral leggings";
|
||||
public void createTemplate() throws IOException{
|
||||
/*ItemTemplateCreator.createItemTemplate(473, 3, "drake hide jacket", "drake hide jackets", "excellent", "good", "ok", "poor",
|
||||
* "A jacket made from finest drake hide with brass husks.",
|
||||
* new short[]{108, 44, 23, 4, 99},
|
||||
* 1060, 1, 0, 29030400, 2, 40, 40, -10, new byte[]{2},
|
||||
* "model.armour.torso.dragon.", 70.0f, 600, 16, 100000, true, 9);
|
||||
*/
|
||||
ItemTemplateBuilder itemBuilder = new ItemTemplateBuilder("mod.item.spectral.hose");
|
||||
itemBuilder.name(name, "spectral leggings", "Spectral leggings.");
|
||||
itemBuilder.itemTypes(new short[]{ // {108, 44, 23, 4, 99} - Drake hide jacket
|
||||
ItemTypes.ITEM_TYPE_NAMED,
|
||||
ItemTypes.ITEM_TYPE_REPAIRABLE,
|
||||
ItemTypes.ITEM_TYPE_LEATHER,
|
||||
ItemTypes.ITEM_TYPE_ARMOUR,
|
||||
ItemTypes.ITEM_TYPE_DRAGONARMOUR
|
||||
});
|
||||
itemBuilder.imageNumber((short) 1061);
|
||||
itemBuilder.behaviourType((short) 1);
|
||||
itemBuilder.combatDamage(0);
|
||||
itemBuilder.decayTime(Long.MAX_VALUE);
|
||||
itemBuilder.dimensions(2, 40, 40);
|
||||
itemBuilder.primarySkill(-10);
|
||||
itemBuilder.bodySpaces(new byte[]{34});
|
||||
itemBuilder.modelName("model.armour.leg.dragon.");
|
||||
itemBuilder.difficulty(77.0f);
|
||||
itemBuilder.weightGrams(700);
|
||||
itemBuilder.material(Materials.MATERIAL_LEATHER);
|
||||
itemBuilder.value(1000000);
|
||||
itemBuilder.armourType(ArmourTypes.ARMOUR_LEATHER_DRAGON);
|
||||
|
||||
ItemTemplate template = itemBuilder.build();
|
||||
templateId = template.getTemplateId();
|
||||
logger.info("Spectral improve = "+template.getImproveItem());
|
||||
logger.info(name+" TemplateID: "+templateId);
|
||||
}
|
||||
|
||||
public void initCreationEntry(){
|
||||
logger.info("initCreationEntry()");
|
||||
if(templateId > 0){
|
||||
logger.info("Creating "+name+" creation entry, ID = "+templateId);
|
||||
CreationEntryCreator.createSimpleEntry(SkillList.LEATHERWORKING, ItemList.needleIron, SpectralHide.templateId,
|
||||
templateId, false, true, 0.0f, false, false, CreationCategories.ARMOUR);
|
||||
CreationEntryCreator.createSimpleEntry(SkillList.LEATHERWORKING, ItemList.needleCopper, SpectralHide.templateId,
|
||||
templateId, false, true, 0.0f, false, false, CreationCategories.ARMOUR);
|
||||
//final AdvancedCreationEntry entry = CreationEntryCreator.createAdvancedEntry(SkillList.SMITHING_WEAPON_HEADS,
|
||||
// ItemList.ironBand, ItemList.shaft, templateId, false, false, 0f, true, false, CreationCategories.TOOLS);
|
||||
//entry.addRequirement(new CreationRequirement(1, ItemList.woodenHandleSword, 2, true));
|
||||
//entry.addRequirement(new CreationRequirement(2, ItemList.nailsIronSmall, 1, true));
|
||||
}else{
|
||||
logger.info(name+" does not have a template ID on creation entry.");
|
||||
}
|
||||
}
|
||||
}
|
||||
73
src/main/java/mod/sin/armour/SpectralJacket.java
Normal file
73
src/main/java/mod/sin/armour/SpectralJacket.java
Normal file
@@ -0,0 +1,73 @@
|
||||
package mod.sin.armour;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
import org.gotti.wurmunlimited.modsupport.ItemTemplateBuilder;
|
||||
|
||||
import com.wurmonline.server.MiscConstants;
|
||||
import com.wurmonline.server.combat.ArmourTypes;
|
||||
import com.wurmonline.server.items.CreationCategories;
|
||||
import com.wurmonline.server.items.CreationEntryCreator;
|
||||
import com.wurmonline.server.items.ItemList;
|
||||
import com.wurmonline.server.items.ItemTemplate;
|
||||
import com.wurmonline.server.items.ItemTypes;
|
||||
import com.wurmonline.server.items.Materials;
|
||||
import com.wurmonline.server.skills.SkillList;
|
||||
|
||||
public class SpectralJacket implements ItemTypes, MiscConstants {
|
||||
public static Logger logger = Logger.getLogger(SpectralJacket.class.getName());
|
||||
public static int templateId;
|
||||
private String name = "spectral jacket";
|
||||
public void createTemplate() throws IOException{
|
||||
/*ItemTemplateCreator.createItemTemplate(473, 3, "drake hide jacket", "drake hide jackets", "excellent", "good", "ok", "poor",
|
||||
* "A jacket made from finest drake hide with brass husks.",
|
||||
* new short[]{108, 44, 23, 4, 99},
|
||||
* 1060, 1, 0, 29030400, 2, 40, 40, -10, new byte[]{2},
|
||||
* "model.armour.torso.dragon.", 70.0f, 600, 16, 100000, true, 9);
|
||||
*/
|
||||
ItemTemplateBuilder itemBuilder = new ItemTemplateBuilder("mod.item.spectral.jacket");
|
||||
itemBuilder.name(name, "spectral jackets", "A spectral jacket.");
|
||||
itemBuilder.itemTypes(new short[]{ // {108, 44, 23, 4, 99} - Drake hide jacket
|
||||
ItemTypes.ITEM_TYPE_NAMED,
|
||||
ItemTypes.ITEM_TYPE_REPAIRABLE,
|
||||
ItemTypes.ITEM_TYPE_LEATHER,
|
||||
ItemTypes.ITEM_TYPE_ARMOUR,
|
||||
ItemTypes.ITEM_TYPE_DRAGONARMOUR
|
||||
});
|
||||
itemBuilder.imageNumber((short) 1060);
|
||||
itemBuilder.behaviourType((short) 1);
|
||||
itemBuilder.combatDamage(0);
|
||||
itemBuilder.decayTime(Long.MAX_VALUE);
|
||||
itemBuilder.dimensions(2, 40, 40);
|
||||
itemBuilder.primarySkill(-10);
|
||||
itemBuilder.bodySpaces(new byte[]{2});
|
||||
itemBuilder.modelName("model.armour.torso.dragon.");
|
||||
itemBuilder.difficulty(80.0f);
|
||||
itemBuilder.weightGrams(800);
|
||||
itemBuilder.material(Materials.MATERIAL_LEATHER);
|
||||
itemBuilder.value(1000000);
|
||||
itemBuilder.armourType(ArmourTypes.ARMOUR_LEATHER_DRAGON);
|
||||
|
||||
ItemTemplate template = itemBuilder.build();
|
||||
templateId = template.getTemplateId();
|
||||
logger.info(name+" TemplateID: "+templateId);
|
||||
}
|
||||
|
||||
public void initCreationEntry(){
|
||||
logger.info("initCreationEntry()");
|
||||
if(templateId > 0){
|
||||
logger.info("Creating "+name+" creation entry, ID = "+templateId);
|
||||
CreationEntryCreator.createSimpleEntry(SkillList.LEATHERWORKING, ItemList.needleIron, SpectralHide.templateId,
|
||||
templateId, false, true, 0.0f, false, false, CreationCategories.ARMOUR);
|
||||
CreationEntryCreator.createSimpleEntry(SkillList.LEATHERWORKING, ItemList.needleCopper, SpectralHide.templateId,
|
||||
templateId, false, true, 0.0f, false, false, CreationCategories.ARMOUR);
|
||||
//final AdvancedCreationEntry entry = CreationEntryCreator.createAdvancedEntry(SkillList.SMITHING_WEAPON_HEADS,
|
||||
// ItemList.ironBand, ItemList.shaft, templateId, false, false, 0f, true, false, CreationCategories.TOOLS);
|
||||
//entry.addRequirement(new CreationRequirement(1, ItemList.woodenHandleSword, 2, true));
|
||||
//entry.addRequirement(new CreationRequirement(2, ItemList.nailsIronSmall, 1, true));
|
||||
}else{
|
||||
logger.info(name+" does not have a template ID on creation entry.");
|
||||
}
|
||||
}
|
||||
}
|
||||
63
src/main/java/mod/sin/armour/SpectralSleeve.java
Normal file
63
src/main/java/mod/sin/armour/SpectralSleeve.java
Normal file
@@ -0,0 +1,63 @@
|
||||
package mod.sin.armour;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
import org.gotti.wurmunlimited.modsupport.ItemTemplateBuilder;
|
||||
|
||||
import com.wurmonline.server.MiscConstants;
|
||||
import com.wurmonline.server.combat.ArmourTypes;
|
||||
import com.wurmonline.server.items.CreationCategories;
|
||||
import com.wurmonline.server.items.CreationEntryCreator;
|
||||
import com.wurmonline.server.items.ItemList;
|
||||
import com.wurmonline.server.items.ItemTemplate;
|
||||
import com.wurmonline.server.items.ItemTypes;
|
||||
import com.wurmonline.server.items.Materials;
|
||||
import com.wurmonline.server.skills.SkillList;
|
||||
|
||||
public class SpectralSleeve implements ItemTypes, MiscConstants {
|
||||
public static Logger logger = Logger.getLogger(SpectralSleeve.class.getName());
|
||||
public static int templateId;
|
||||
private String name = "spectral sleeve";
|
||||
public void createTemplate() throws IOException{
|
||||
ItemTemplateBuilder itemBuilder = new ItemTemplateBuilder("mod.item.spectral.sleeve");
|
||||
itemBuilder.name(name, "spectral sleeves", "A spectral sleeve.");
|
||||
itemBuilder.itemTypes(new short[]{ // {108, 44, 23, 4, 99} - Drake hide jacket
|
||||
ItemTypes.ITEM_TYPE_NAMED,
|
||||
ItemTypes.ITEM_TYPE_REPAIRABLE,
|
||||
ItemTypes.ITEM_TYPE_LEATHER,
|
||||
ItemTypes.ITEM_TYPE_ARMOUR,
|
||||
ItemTypes.ITEM_TYPE_DRAGONARMOUR
|
||||
});
|
||||
itemBuilder.imageNumber((short) 1062);
|
||||
itemBuilder.behaviourType((short) 1);
|
||||
itemBuilder.combatDamage(0);
|
||||
itemBuilder.decayTime(Long.MAX_VALUE);
|
||||
itemBuilder.dimensions(2, 40, 40);
|
||||
itemBuilder.primarySkill(-10);
|
||||
itemBuilder.bodySpaces(new byte[]{3, 4});
|
||||
itemBuilder.modelName("model.armour.sleeve.dragon.");
|
||||
itemBuilder.difficulty(72.0f);
|
||||
itemBuilder.weightGrams(400);
|
||||
itemBuilder.material(Materials.MATERIAL_LEATHER);
|
||||
itemBuilder.value(1000000);
|
||||
itemBuilder.armourType(ArmourTypes.ARMOUR_LEATHER_DRAGON);
|
||||
|
||||
ItemTemplate template = itemBuilder.build();
|
||||
templateId = template.getTemplateId();
|
||||
logger.info(name+" TemplateID: "+templateId);
|
||||
}
|
||||
|
||||
public void initCreationEntry(){
|
||||
logger.info("initCreationEntry()");
|
||||
if(templateId > 0){
|
||||
logger.info("Creating "+name+" creation entry, ID = "+templateId);
|
||||
CreationEntryCreator.createSimpleEntry(SkillList.LEATHERWORKING, ItemList.needleIron, SpectralHide.templateId,
|
||||
templateId, false, true, 0.0f, false, false, CreationCategories.ARMOUR);
|
||||
CreationEntryCreator.createSimpleEntry(SkillList.LEATHERWORKING, ItemList.needleCopper, SpectralHide.templateId,
|
||||
templateId, false, true, 0.0f, false, false, CreationCategories.ARMOUR);
|
||||
}else{
|
||||
logger.info(name+" does not have a template ID on creation entry.");
|
||||
}
|
||||
}
|
||||
}
|
||||
75
src/main/java/mod/sin/creatures/Avenger.java
Normal file
75
src/main/java/mod/sin/creatures/Avenger.java
Normal file
@@ -0,0 +1,75 @@
|
||||
package mod.sin.creatures;
|
||||
|
||||
import org.gotti.wurmunlimited.modsupport.CreatureTemplateBuilder;
|
||||
import org.gotti.wurmunlimited.modsupport.creatures.EncounterBuilder;
|
||||
import org.gotti.wurmunlimited.modsupport.creatures.ModCreature;
|
||||
import com.wurmonline.mesh.Tiles;
|
||||
import com.wurmonline.server.bodys.BodyTemplate;
|
||||
import com.wurmonline.server.bodys.Wound;
|
||||
import com.wurmonline.server.combat.ArmourTypes;
|
||||
import com.wurmonline.server.creatures.CreatureTypes;
|
||||
import com.wurmonline.server.items.Materials;
|
||||
import com.wurmonline.server.skills.SkillList;
|
||||
|
||||
public class Avenger implements ModCreature, CreatureTypes {
|
||||
public static int templateId;
|
||||
|
||||
@Override
|
||||
public CreatureTemplateBuilder createCreateTemplateBuilder() {
|
||||
// {C_TYPE_MOVE_LOCAL, C_TYPE_VEHICLE, C_TYPE_ANIMAL, C_TYPE_LEADABLE, C_TYPE_GRAZER, C_TYPE_OMNIVORE, C_TYPE_DOMINATABLE, C_TYPE_AGG_HUMAN, C_TYPE_NON_NEWBIE, C_TYPE_BURNING}; - Hell Horse
|
||||
// int[] types = new int[]{7, 6, 13, 3, 29, 39, 60, 61}; - Spider
|
||||
int[] types = {
|
||||
CreatureTypes.C_TYPE_MOVE_LOCAL,
|
||||
CreatureTypes.C_TYPE_AGG_HUMAN,
|
||||
CreatureTypes.C_TYPE_HUNTING,
|
||||
CreatureTypes.C_TYPE_MONSTER,
|
||||
CreatureTypes.C_TYPE_CARNIVORE,
|
||||
CreatureTypes.C_TYPE_DOMINATABLE,
|
||||
CreatureTypes.C_TYPE_DETECTINVIS,
|
||||
CreatureTypes.C_TYPE_NON_NEWBIE
|
||||
};
|
||||
|
||||
//public CreatureTemplateBuilder(final String identifier, final String name, final String description,
|
||||
// final String modelName, final int[] types, final byte bodyType, final short vision, final byte sex, final short centimetersHigh, final short centimetersLong, final short centimetersWide,
|
||||
// final String deathSndMale, final String deathSndFemale, final String hitSndMale, final String hitSndFemale,
|
||||
// final float naturalArmour, final float handDam, final float kickDam, final float biteDam, final float headDam, final float breathDam, final float speed, final int moveRate,
|
||||
// final int[] itemsButchered, final int maxHuntDist, final int aggress) {
|
||||
CreatureTemplateBuilder builder = new CreatureTemplateBuilder("mod.creature.avenger", "Avenger", "Sent from the heavens to purge the unworthy.",
|
||||
"model.creature.humanoid.avenger.light", types, BodyTemplate.TYPE_HUMAN, (short) 5, (byte) 0, (short) 85, (short) 50, (short) 85,
|
||||
"sound.death.giant", "sound.death.giant", "sound.combat.hit.giant", "sound.combat.hit.giant",
|
||||
0.3f, 25f, 0f, 0f, 0.0f, 0.0f, 1.2f, 500,
|
||||
new int[]{}, 15, 70, Materials.MATERIAL_MEAT_HUMANOID);
|
||||
|
||||
builder.skill(SkillList.BODY_STRENGTH, 45.0f);
|
||||
builder.skill(SkillList.BODY_STAMINA, 55.0f);
|
||||
builder.skill(SkillList.BODY_CONTROL, 60.0f);
|
||||
builder.skill(SkillList.MIND_LOGICAL, 50.0f);
|
||||
builder.skill(SkillList.MIND_SPEED, 50.0f);
|
||||
builder.skill(SkillList.SOUL_STRENGTH, 50.0f);
|
||||
builder.skill(SkillList.SOUL_DEPTH, 50.0f);
|
||||
builder.skill(SkillList.WEAPONLESS_FIGHTING, 70.0f);
|
||||
builder.skill(SkillList.GROUP_FIGHTING, 50.0f);
|
||||
|
||||
builder.boundsValues(-0.5f, -1.0f, 0.5f, 1.42f);
|
||||
builder.handDamString("slam");
|
||||
builder.maxAge(100);
|
||||
builder.armourType(ArmourTypes.ARMOUR_LEATHER);
|
||||
builder.baseCombatRating(45.0f);
|
||||
builder.combatDamageType(Wound.TYPE_COLD);
|
||||
builder.maxPercentOfCreatures(0.005f);
|
||||
builder.maxGroupAttackSize(100);
|
||||
|
||||
templateId = builder.getTemplateId();
|
||||
return builder;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addEncounters() {
|
||||
if (templateId == 0)
|
||||
return;
|
||||
|
||||
new EncounterBuilder(Tiles.Tile.TILE_TUNDRA.id)
|
||||
.addCreatures(templateId, 1)
|
||||
.build(1);
|
||||
}
|
||||
}
|
||||
67
src/main/java/mod/sin/creatures/Bison.java
Normal file
67
src/main/java/mod/sin/creatures/Bison.java
Normal file
@@ -0,0 +1,67 @@
|
||||
package mod.sin.creatures;
|
||||
|
||||
import org.gotti.wurmunlimited.modsupport.CreatureTemplateBuilder;
|
||||
import org.gotti.wurmunlimited.modsupport.creatures.ModCreature;
|
||||
import org.gotti.wurmunlimited.modsupport.vehicles.ModVehicleBehaviour;
|
||||
import org.gotti.wurmunlimited.modsupport.vehicles.VehicleFacade;
|
||||
|
||||
import com.wurmonline.server.behaviours.Vehicle;
|
||||
import com.wurmonline.server.creatures.Creature;
|
||||
import com.wurmonline.server.creatures.CreatureTemplate;
|
||||
import com.wurmonline.server.creatures.CreatureTemplateFactory;
|
||||
import com.wurmonline.server.creatures.CreatureTemplateIds;
|
||||
import com.wurmonline.server.creatures.NoSuchCreatureTemplateException;
|
||||
import com.wurmonline.server.items.Item;
|
||||
|
||||
public class Bison implements ModCreature {
|
||||
|
||||
public static int templateId;
|
||||
|
||||
@Override
|
||||
public CreatureTemplateBuilder createCreateTemplateBuilder() {
|
||||
templateId = CreatureTemplateIds.BISON_CID;
|
||||
return new CreatureTemplateBuilder(templateId) {
|
||||
@Override
|
||||
public CreatureTemplate build() {
|
||||
try {
|
||||
return CreatureTemplateFactory.getInstance().getTemplate(templateId);
|
||||
} catch (NoSuchCreatureTemplateException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
public ModVehicleBehaviour getVehicleBehaviour() {
|
||||
|
||||
return new ModVehicleBehaviour() {
|
||||
|
||||
@Override
|
||||
public void setSettingsForVehicle(Item item, Vehicle vehicle) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setSettingsForVehicle(Creature creature, Vehicle v) {
|
||||
VehicleFacade vehicle = wrap(v);
|
||||
|
||||
vehicle.createPassengerSeats(0);
|
||||
vehicle.setSeatFightMod(0, 0.7f, 0.9f);
|
||||
vehicle.setSeatOffset(0, 0.0f, 0.0f, 0f);
|
||||
vehicle.setCreature(true);
|
||||
vehicle.setSkillNeeded(27.0f);
|
||||
vehicle.setName(creature.getName());
|
||||
vehicle.setMaxDepth(-0.7f);
|
||||
vehicle.setMaxHeightDiff(0.04f);
|
||||
vehicle.setMaxSpeed(25.0f);
|
||||
vehicle.setCommandType((byte) 3);
|
||||
vehicle.setCanHaveEquipment(true);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addEncounters() {
|
||||
if (templateId == 0)
|
||||
return;
|
||||
}
|
||||
}
|
||||
116
src/main/java/mod/sin/creatures/Charger.java
Normal file
116
src/main/java/mod/sin/creatures/Charger.java
Normal file
@@ -0,0 +1,116 @@
|
||||
package mod.sin.creatures;
|
||||
|
||||
import org.gotti.wurmunlimited.modsupport.CreatureTemplateBuilder;
|
||||
import org.gotti.wurmunlimited.modsupport.creatures.EncounterBuilder;
|
||||
import org.gotti.wurmunlimited.modsupport.creatures.ModCreature;
|
||||
import org.gotti.wurmunlimited.modsupport.vehicles.ModVehicleBehaviour;
|
||||
import org.gotti.wurmunlimited.modsupport.vehicles.VehicleFacade;
|
||||
|
||||
import com.wurmonline.mesh.Tiles;
|
||||
import com.wurmonline.server.behaviours.Vehicle;
|
||||
import com.wurmonline.server.bodys.BodyTemplate;
|
||||
import com.wurmonline.server.bodys.Wound;
|
||||
import com.wurmonline.server.combat.ArmourTypes;
|
||||
import com.wurmonline.server.creatures.Creature;
|
||||
import com.wurmonline.server.creatures.CreatureTypes;
|
||||
import com.wurmonline.server.items.Item;
|
||||
import com.wurmonline.server.items.Materials;
|
||||
import com.wurmonline.server.skills.SkillList;
|
||||
|
||||
public class Charger implements ModCreature, CreatureTypes {
|
||||
public static int templateId;
|
||||
|
||||
@Override
|
||||
public CreatureTemplateBuilder createCreateTemplateBuilder() {
|
||||
// {C_TYPE_MOVE_LOCAL, C_TYPE_VEHICLE, C_TYPE_ANIMAL, C_TYPE_LEADABLE, C_TYPE_GRAZER, C_TYPE_OMNIVORE, C_TYPE_DOMINATABLE, C_TYPE_AGG_HUMAN, C_TYPE_NON_NEWBIE, C_TYPE_BURNING}; - Hell Horse
|
||||
// int[] types = new int[]{7, 6, 13, 3, 29, 39, 60, 61}; - Spider
|
||||
int[] types = {
|
||||
CreatureTypes.C_TYPE_CARNIVORE,
|
||||
CreatureTypes.C_TYPE_MOVE_GLOBAL,
|
||||
CreatureTypes.C_TYPE_VEHICLE,
|
||||
CreatureTypes.C_TYPE_LEADABLE,
|
||||
CreatureTypes.C_TYPE_SWIMMING,
|
||||
CreatureTypes.C_TYPE_HUNTING,
|
||||
CreatureTypes.C_TYPE_DOMINATABLE,
|
||||
CreatureTypes.C_TYPE_MONSTER,
|
||||
CreatureTypes.C_TYPE_NON_NEWBIE,
|
||||
CreatureTypes.C_TYPE_HORSE,
|
||||
CreatureTypes.C_TYPE_ANIMAL
|
||||
};
|
||||
|
||||
//public CreatureTemplateBuilder(final String identifier, final String name, final String description,
|
||||
// final String modelName, final int[] types, final byte bodyType, final short vision, final byte sex, final short centimetersHigh, final short centimetersLong, final short centimetersWide,
|
||||
// final String deathSndMale, final String deathSndFemale, final String hitSndMale, final String hitSndFemale,
|
||||
// final float naturalArmour, final float handDam, final float kickDam, final float biteDam, final float headDam, final float breathDam, final float speed, final int moveRate,
|
||||
// final int[] itemsButchered, final int maxHuntDist, final int aggress) {
|
||||
CreatureTemplateBuilder builder = new CreatureTemplateBuilder("mod.creature.charger", "Charger", "A blazing-fast stallion.",
|
||||
"model.creature.quadraped.horse.hell", types, BodyTemplate.TYPE_HORSE, (short) 5, (byte) 0, (short) 85, (short) 50, (short) 85,
|
||||
"sound.death.horse", "sound.death.horse", "sound.combat.hit.horse", "sound.combat.hit.horse",
|
||||
1.1f, 12f, 10f, 10.0f, 0.0f, 0.0f, 1.6f, 1000,
|
||||
new int[]{}, 10, 74, Materials.MATERIAL_MEAT_HORSE);
|
||||
|
||||
builder.skill(SkillList.BODY_STRENGTH, 37.0f);
|
||||
builder.skill(SkillList.BODY_STAMINA, 30.0f);
|
||||
builder.skill(SkillList.BODY_CONTROL, 25.0f);
|
||||
builder.skill(SkillList.MIND_LOGICAL, 30.0f);
|
||||
builder.skill(SkillList.MIND_SPEED, 20.0f);
|
||||
builder.skill(SkillList.SOUL_STRENGTH, 30.0f);
|
||||
builder.skill(SkillList.SOUL_DEPTH, 30.0f);
|
||||
builder.skill(SkillList.WEAPONLESS_FIGHTING, 25.0f);
|
||||
builder.skill(SkillList.GROUP_FIGHTING, 20.0f);
|
||||
|
||||
builder.boundsValues(-0.5f, -1.0f, 0.5f, 1.42f);
|
||||
builder.handDamString("burn");
|
||||
builder.maxAge(100);
|
||||
builder.armourType(ArmourTypes.ARMOUR_LEATHER);
|
||||
builder.baseCombatRating(13.0f);
|
||||
builder.combatDamageType(Wound.TYPE_BURN);
|
||||
builder.denMaterial(Materials.MATERIAL_WOOD_BIRCH);
|
||||
builder.denName("charger lair");
|
||||
builder.maxGroupAttackSize(100);
|
||||
|
||||
templateId = builder.getTemplateId();
|
||||
return builder;
|
||||
}
|
||||
|
||||
public ModVehicleBehaviour getVehicleBehaviour() {
|
||||
|
||||
return new ModVehicleBehaviour() {
|
||||
|
||||
@Override
|
||||
public void setSettingsForVehicle(Item item, Vehicle vehicle) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setSettingsForVehicle(Creature creature, Vehicle v) {
|
||||
VehicleFacade vehicle = wrap(v);
|
||||
|
||||
vehicle.createPassengerSeats(0);
|
||||
vehicle.setSeatFightMod(0, 0.8f, 1.1f);
|
||||
vehicle.setSeatOffset(0, 0.0f, 0.0f, 0.3f);
|
||||
vehicle.setCreature(true);
|
||||
vehicle.setSkillNeeded(37.0f);
|
||||
vehicle.setName(creature.getName());
|
||||
vehicle.setMaxHeightDiff(0.09f);
|
||||
vehicle.setMaxDepth(-1.7f);
|
||||
vehicle.setMaxSpeed(46.0f);
|
||||
vehicle.setCommandType((byte) 3);
|
||||
vehicle.setCanHaveEquipment(true);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addEncounters() {
|
||||
if (templateId == 0)
|
||||
return;
|
||||
|
||||
new EncounterBuilder(Tiles.Tile.TILE_STEPPE.id)
|
||||
.addCreatures(templateId, 1)
|
||||
.build(3);
|
||||
|
||||
new EncounterBuilder(Tiles.Tile.TILE_STEPPE.id)
|
||||
.addCreatures(templateId, 1)
|
||||
.build(1);
|
||||
}
|
||||
}
|
||||
72
src/main/java/mod/sin/creatures/Facebreyker.java
Normal file
72
src/main/java/mod/sin/creatures/Facebreyker.java
Normal file
@@ -0,0 +1,72 @@
|
||||
package mod.sin.creatures;
|
||||
|
||||
import org.gotti.wurmunlimited.modsupport.CreatureTemplateBuilder;
|
||||
import org.gotti.wurmunlimited.modsupport.creatures.ModCreature;
|
||||
|
||||
import com.wurmonline.server.bodys.Wound;
|
||||
import com.wurmonline.server.creatures.CreatureTypes;
|
||||
import com.wurmonline.server.skills.SkillList;
|
||||
|
||||
public class Facebreyker implements ModCreature, CreatureTypes {
|
||||
public static int templateId;
|
||||
|
||||
@Override
|
||||
public CreatureTemplateBuilder createCreateTemplateBuilder() {
|
||||
int[] types = {
|
||||
CreatureTypes.C_TYPE_MOVE_LOCAL,
|
||||
CreatureTypes.C_TYPE_UNIQUE,
|
||||
CreatureTypes.C_TYPE_REGENERATING,
|
||||
CreatureTypes.C_TYPE_AGG_HUMAN,
|
||||
CreatureTypes.C_TYPE_MONSTER,
|
||||
CreatureTypes.C_TYPE_FENCEBREAKER,
|
||||
CreatureTypes.C_TYPE_HERBIVORE,
|
||||
CreatureTypes.C_TYPE_NON_NEWBIE
|
||||
};
|
||||
|
||||
//public CreatureTemplateBuilder(final String identifier, final String name, final String description,
|
||||
// final String modelName, final int[] types, final byte bodyType, final short vision, final byte sex, final short centimetersHigh, final short centimetersLong, final short centimetersWide,
|
||||
// final String deathSndMale, final String deathSndFemale, final String hitSndMale, final String hitSndFemale,
|
||||
// final float naturalArmour, final float handDam, final float kickDam, final float biteDam, final float headDam, final float breathDam, final float speed, final int moveRate,
|
||||
// final int[] itemsButchered, final int maxHuntDist, final int aggress) {
|
||||
CreatureTemplateBuilder builder = new CreatureTemplateBuilder("mod.creature.unique.facebreyker", "Facebreyker", "A bold warrior corrupted by darkness. You feel the presence of Libila.",
|
||||
"model.creature.humanoid.ogre.rift", types, (byte) 0, (short) 20, (byte) 0, (short) 350, (short) 100, (short) 60,
|
||||
"sound.death.troll", "sound.death.troll", "sound.combat.hit.troll", "sound.combat.hit.troll",
|
||||
0.05f, 50.0f, 50.0f, 0.0f, 0.0f, 0.0f, 1.6f, 1100,
|
||||
new int[]{867}, 40, 100, (byte) 0);
|
||||
|
||||
builder.skill(SkillList.BODY_STRENGTH, 90.0f);
|
||||
builder.skill(SkillList.BODY_STAMINA, 90.0f);
|
||||
builder.skill(SkillList.BODY_CONTROL, 90.0f);
|
||||
builder.skill(SkillList.MIND_LOGICAL, 30.0f);
|
||||
builder.skill(SkillList.MIND_SPEED, 30.0f);
|
||||
builder.skill(SkillList.SOUL_STRENGTH, 70.0f);
|
||||
builder.skill(SkillList.SOUL_DEPTH, 60.0f);
|
||||
builder.skill(SkillList.WEAPONLESS_FIGHTING, 80.0f);
|
||||
builder.skill(SkillList.GROUP_FIGHTING, 80.0f);
|
||||
builder.skill(SkillList.GROUP_CLUBS, 99.0f);
|
||||
builder.skill(SkillList.CLUB_HUGE, 99.0f);
|
||||
|
||||
builder.boundsValues(-0.5f, -1.0f, 0.5f, 1.42f);
|
||||
builder.handDamString("slashe");
|
||||
builder.kickDamString("eviscerate");
|
||||
builder.maxAge(200);
|
||||
builder.armourType(10);
|
||||
builder.baseCombatRating(80.0f);
|
||||
builder.combatDamageType(Wound.TYPE_CRUSH);
|
||||
builder.maxGroupAttackSize(100);
|
||||
|
||||
//builder.usesNewAttacks(true);
|
||||
// float baseDamage, float criticalChance, float baseSpeed, int attackReach, int weightGroup, byte damageType, boolean usesWeapon, int rounds, float waitUntilNextAttack
|
||||
//builder.addPrimaryAttack(new AttackAction("slashe", AttackIdentifier.STRIKE, new AttackValues(70f, 0.05f, 5f, 3, 1, Wound.TYPE_SLASH, false, 1, 1.0f)));
|
||||
//builder.addPrimaryAttack(new AttackAction("eviscerate", AttackIdentifier.STRIKE, new AttackValues(100f, 0.5f, 30f, 3, 1, Wound.TYPE_INFECTION, false, 4, 5.0f)));
|
||||
//builder.addSecondaryAttack(new AttackAction("annihilate", AttackIdentifier.KICK, new AttackValues(200f, 0.3f, 60f, 2, 1, Wound.TYPE_ACID, false, 7, 8.0f)));
|
||||
|
||||
templateId = builder.getTemplateId();
|
||||
return builder;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addEncounters() {
|
||||
return;
|
||||
}
|
||||
}
|
||||
80
src/main/java/mod/sin/creatures/ForestSpider.java
Normal file
80
src/main/java/mod/sin/creatures/ForestSpider.java
Normal file
@@ -0,0 +1,80 @@
|
||||
package mod.sin.creatures;
|
||||
|
||||
import org.gotti.wurmunlimited.modsupport.CreatureTemplateBuilder;
|
||||
import org.gotti.wurmunlimited.modsupport.creatures.EncounterBuilder;
|
||||
import org.gotti.wurmunlimited.modsupport.creatures.ModCreature;
|
||||
import com.wurmonline.mesh.Tiles;
|
||||
import com.wurmonline.server.bodys.BodyTemplate;
|
||||
import com.wurmonline.server.bodys.Wound;
|
||||
import com.wurmonline.server.combat.ArmourTypes;
|
||||
import com.wurmonline.server.creatures.CreatureTypes;
|
||||
import com.wurmonline.server.items.ItemList;
|
||||
import com.wurmonline.server.items.Materials;
|
||||
import com.wurmonline.server.skills.SkillList;
|
||||
|
||||
public class ForestSpider implements ModCreature, CreatureTypes {
|
||||
public static int templateId;
|
||||
|
||||
@Override
|
||||
public CreatureTemplateBuilder createCreateTemplateBuilder() {
|
||||
// {C_TYPE_MOVE_LOCAL, C_TYPE_VEHICLE, C_TYPE_ANIMAL, C_TYPE_LEADABLE, C_TYPE_GRAZER, C_TYPE_OMNIVORE, C_TYPE_DOMINATABLE, C_TYPE_AGG_HUMAN, C_TYPE_NON_NEWBIE, C_TYPE_BURNING}; - Hell Horse
|
||||
// int[] types = new int[]{7, 6, 13, 3, 29, 39, 60, 61}; - Spider
|
||||
int[] types = {
|
||||
CreatureTypes.C_TYPE_MOVE_LOCAL,
|
||||
CreatureTypes.C_TYPE_AGG_HUMAN,
|
||||
CreatureTypes.C_TYPE_HUNTING,
|
||||
CreatureTypes.C_TYPE_ANIMAL,
|
||||
CreatureTypes.C_TYPE_CARNIVORE,
|
||||
CreatureTypes.C_TYPE_NON_NEWBIE
|
||||
};
|
||||
|
||||
//public CreatureTemplateBuilder(final String identifier, final String name, final String description,
|
||||
// final String modelName, final int[] types, final byte bodyType, final short vision, final byte sex, final short centimetersHigh, final short centimetersLong, final short centimetersWide,
|
||||
// final String deathSndMale, final String deathSndFemale, final String hitSndMale, final String hitSndFemale,
|
||||
// final float naturalArmour, final float handDam, final float kickDam, final float biteDam, final float headDam, final float breathDam, final float speed, final int moveRate,
|
||||
// final int[] itemsButchered, final int maxHuntDist, final int aggress) {
|
||||
CreatureTemplateBuilder builder = new CreatureTemplateBuilder("mod.creature.forest.spider", "Forest spider", "Found amongst trees, these spiders are dangerous and poisonous.",
|
||||
"model.creature.multiped.spider.huge", types, BodyTemplate.TYPE_SPIDER, (short) 5, (byte) 0, (short) 85, (short) 50, (short) 85,
|
||||
"sound.death.spider", "sound.death.spider", "sound.combat.hit.spider", "sound.combat.hit.spider",
|
||||
0.6f, 10f, 0f, 13.0f, 0.0f, 0.0f, 1.2f, 500,
|
||||
new int[]{ItemList.heart}, 10, 74, Materials.MATERIAL_MEAT_INSECT);
|
||||
|
||||
builder.skill(SkillList.BODY_STRENGTH, 20.0f);
|
||||
builder.skill(SkillList.BODY_STAMINA, 30.0f);
|
||||
builder.skill(SkillList.BODY_CONTROL, 35.0f);
|
||||
builder.skill(SkillList.MIND_LOGICAL, 30.0f);
|
||||
builder.skill(SkillList.MIND_SPEED, 30.0f);
|
||||
builder.skill(SkillList.SOUL_STRENGTH, 30.0f);
|
||||
builder.skill(SkillList.SOUL_DEPTH, 30.0f);
|
||||
builder.skill(SkillList.WEAPONLESS_FIGHTING, 50.0f);
|
||||
builder.skill(SkillList.GROUP_FIGHTING, 30.0f);
|
||||
|
||||
builder.boundsValues(-0.5f, -1.0f, 0.5f, 1.42f);
|
||||
builder.handDamString("pierce");
|
||||
builder.maxAge(100);
|
||||
builder.armourType(ArmourTypes.ARMOUR_CLOTH);
|
||||
builder.baseCombatRating(13.0f);
|
||||
builder.combatDamageType(Wound.TYPE_POISON);
|
||||
builder.denMaterial(Materials.MATERIAL_STONE);
|
||||
builder.denName("forest spider lair");
|
||||
builder.maxPercentOfCreatures(0.05f);
|
||||
builder.maxGroupAttackSize(100);
|
||||
|
||||
templateId = builder.getTemplateId();
|
||||
return builder;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addEncounters() {
|
||||
if (templateId == 0)
|
||||
return;
|
||||
|
||||
new EncounterBuilder(Tiles.Tile.TILE_TREE.id)
|
||||
.addCreatures(templateId, 1)
|
||||
.build(2);
|
||||
|
||||
new EncounterBuilder(Tiles.Tile.TILE_GRASS.id)
|
||||
.addCreatures(templateId, 1)
|
||||
.build(2);
|
||||
}
|
||||
}
|
||||
84
src/main/java/mod/sin/creatures/Giant.java
Normal file
84
src/main/java/mod/sin/creatures/Giant.java
Normal file
@@ -0,0 +1,84 @@
|
||||
package mod.sin.creatures;
|
||||
|
||||
import org.gotti.wurmunlimited.modsupport.CreatureTemplateBuilder;
|
||||
import org.gotti.wurmunlimited.modsupport.creatures.EncounterBuilder;
|
||||
import org.gotti.wurmunlimited.modsupport.creatures.ModCreature;
|
||||
import com.wurmonline.mesh.Tiles;
|
||||
import com.wurmonline.server.bodys.BodyTemplate;
|
||||
import com.wurmonline.server.bodys.Wound;
|
||||
import com.wurmonline.server.combat.ArmourTypes;
|
||||
import com.wurmonline.server.creatures.CreatureTypes;
|
||||
import com.wurmonline.server.items.ItemList;
|
||||
import com.wurmonline.server.items.Materials;
|
||||
import com.wurmonline.server.skills.SkillList;
|
||||
|
||||
public class Giant implements ModCreature, CreatureTypes {
|
||||
public static int templateId;
|
||||
|
||||
@Override
|
||||
public CreatureTemplateBuilder createCreateTemplateBuilder() {
|
||||
// {C_TYPE_MOVE_LOCAL, C_TYPE_VEHICLE, C_TYPE_ANIMAL, C_TYPE_LEADABLE, C_TYPE_GRAZER, C_TYPE_OMNIVORE, C_TYPE_DOMINATABLE, C_TYPE_AGG_HUMAN, C_TYPE_NON_NEWBIE, C_TYPE_BURNING}; - Hell Horse
|
||||
// int[] types = new int[]{7, 6, 13, 3, 29, 39, 60, 61}; - Spider
|
||||
int[] types = {
|
||||
CreatureTypes.C_TYPE_MOVE_LOCAL,
|
||||
CreatureTypes.C_TYPE_AGG_HUMAN,
|
||||
CreatureTypes.C_TYPE_HUNTING,
|
||||
CreatureTypes.C_TYPE_MONSTER,
|
||||
CreatureTypes.C_TYPE_CARNIVORE,
|
||||
CreatureTypes.C_TYPE_REGENERATING,
|
||||
CreatureTypes.C_TYPE_DOMINATABLE,
|
||||
CreatureTypes.C_TYPE_DETECTINVIS,
|
||||
CreatureTypes.C_TYPE_NON_NEWBIE
|
||||
};
|
||||
|
||||
//public CreatureTemplateBuilder(final String identifier, final String name, final String description,
|
||||
// final String modelName, final int[] types, final byte bodyType, final short vision, final byte sex, final short centimetersHigh, final short centimetersLong, final short centimetersWide,
|
||||
// final String deathSndMale, final String deathSndFemale, final String hitSndMale, final String hitSndFemale,
|
||||
// final float naturalArmour, final float handDam, final float kickDam, final float biteDam, final float headDam, final float breathDam, final float speed, final int moveRate,
|
||||
// final int[] itemsButchered, final int maxHuntDist, final int aggress) {
|
||||
CreatureTemplateBuilder builder = new CreatureTemplateBuilder("mod.creature.giant", "Giant", "A lumbering hulk.",
|
||||
"model.creature.humanoid.giant.forest", types, BodyTemplate.TYPE_ETTIN, (short) 5, (byte) 0, (short) 85, (short) 50, (short) 85,
|
||||
"sound.death.giant", "sound.death.giant", "sound.combat.hit.giant", "sound.combat.hit.giant",
|
||||
0.3f, 19f, 15f, 0f, 0.0f, 0.0f, 0.7f, 300,
|
||||
new int[]{ItemList.heart, ItemList.eye, ItemList.gland, ItemList.tooth}, 15, 70, Materials.MATERIAL_MEAT_TOUGH);
|
||||
|
||||
builder.skill(SkillList.BODY_STRENGTH, 55.0f);
|
||||
builder.skill(SkillList.BODY_STAMINA, 65.0f);
|
||||
builder.skill(SkillList.BODY_CONTROL, 30.0f);
|
||||
builder.skill(SkillList.MIND_LOGICAL, 10.0f);
|
||||
builder.skill(SkillList.MIND_SPEED, 10.0f);
|
||||
builder.skill(SkillList.SOUL_STRENGTH, 10.0f);
|
||||
builder.skill(SkillList.SOUL_DEPTH, 10.0f);
|
||||
builder.skill(SkillList.WEAPONLESS_FIGHTING, 60.0f);
|
||||
builder.skill(SkillList.GROUP_FIGHTING, 40.0f);
|
||||
|
||||
builder.boundsValues(-0.5f, -1.0f, 0.5f, 1.42f);
|
||||
builder.handDamString("maul");
|
||||
builder.maxAge(100);
|
||||
builder.armourType(ArmourTypes.ARMOUR_LEATHER);
|
||||
builder.baseCombatRating(32.0f);
|
||||
builder.combatDamageType(Wound.TYPE_ACID);
|
||||
builder.denMaterial(Materials.MATERIAL_WOOD_BIRCH);
|
||||
builder.denName("giant lair");
|
||||
builder.maxPercentOfCreatures(0.001f);
|
||||
builder.maxGroupAttackSize(100);
|
||||
|
||||
templateId = builder.getTemplateId();
|
||||
return builder;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addEncounters() {
|
||||
if (templateId == 0)
|
||||
return;
|
||||
|
||||
new EncounterBuilder(Tiles.Tile.TILE_GRASS.id)
|
||||
.addCreatures(templateId, 1)
|
||||
.build(1);
|
||||
|
||||
new EncounterBuilder(Tiles.Tile.TILE_TREE.id)
|
||||
.addCreatures(templateId, 1)
|
||||
.build(1);
|
||||
|
||||
}
|
||||
}
|
||||
114
src/main/java/mod/sin/creatures/HornedPony.java
Normal file
114
src/main/java/mod/sin/creatures/HornedPony.java
Normal file
@@ -0,0 +1,114 @@
|
||||
package mod.sin.creatures;
|
||||
|
||||
import org.gotti.wurmunlimited.modsupport.CreatureTemplateBuilder;
|
||||
import org.gotti.wurmunlimited.modsupport.creatures.EncounterBuilder;
|
||||
import org.gotti.wurmunlimited.modsupport.creatures.ModCreature;
|
||||
import org.gotti.wurmunlimited.modsupport.vehicles.ModVehicleBehaviour;
|
||||
import org.gotti.wurmunlimited.modsupport.vehicles.VehicleFacade;
|
||||
|
||||
import com.wurmonline.mesh.Tiles;
|
||||
import com.wurmonline.server.Servers;
|
||||
import com.wurmonline.server.behaviours.Vehicle;
|
||||
import com.wurmonline.server.bodys.BodyTemplate;
|
||||
import com.wurmonline.server.bodys.Wound;
|
||||
import com.wurmonline.server.combat.ArmourTypes;
|
||||
import com.wurmonline.server.creatures.Creature;
|
||||
import com.wurmonline.server.creatures.CreatureTypes;
|
||||
import com.wurmonline.server.items.Item;
|
||||
import com.wurmonline.server.items.ItemList;
|
||||
import com.wurmonline.server.items.Materials;
|
||||
import com.wurmonline.server.skills.SkillList;
|
||||
|
||||
public class HornedPony implements ModCreature, CreatureTypes {
|
||||
public static int templateId;
|
||||
|
||||
@Override
|
||||
public CreatureTemplateBuilder createCreateTemplateBuilder() {
|
||||
// {C_TYPE_MOVE_LOCAL, C_TYPE_VEHICLE, C_TYPE_ANIMAL, C_TYPE_LEADABLE, C_TYPE_GRAZER, C_TYPE_OMNIVORE, C_TYPE_DOMINATABLE, C_TYPE_AGG_HUMAN, C_TYPE_NON_NEWBIE, C_TYPE_BURNING}; - Hell Horse
|
||||
// int[] types = new int[]{7, 6, 13, 3, 29, 39, 60, 61}; - Spider
|
||||
int[] types = {
|
||||
CreatureTypes.C_TYPE_CARNIVORE,
|
||||
CreatureTypes.C_TYPE_MOVE_GLOBAL,
|
||||
CreatureTypes.C_TYPE_VEHICLE,
|
||||
CreatureTypes.C_TYPE_AGG_HUMAN,
|
||||
CreatureTypes.C_TYPE_LEADABLE,
|
||||
CreatureTypes.C_TYPE_SWIMMING,
|
||||
CreatureTypes.C_TYPE_HUNTING,
|
||||
CreatureTypes.C_TYPE_DOMINATABLE,
|
||||
CreatureTypes.C_TYPE_MONSTER,
|
||||
CreatureTypes.C_TYPE_NON_NEWBIE,
|
||||
CreatureTypes.C_TYPE_HORSE,
|
||||
CreatureTypes.C_TYPE_ANIMAL
|
||||
};
|
||||
|
||||
//public CreatureTemplateBuilder(final String identifier, final String name, final String description,
|
||||
// final String modelName, final int[] types, final byte bodyType, final short vision, final byte sex, final short centimetersHigh, final short centimetersLong, final short centimetersWide,
|
||||
// final String deathSndMale, final String deathSndFemale, final String hitSndMale, final String hitSndFemale,
|
||||
// final float naturalArmour, final float handDam, final float kickDam, final float biteDam, final float headDam, final float breathDam, final float speed, final int moveRate,
|
||||
// final int[] itemsButchered, final int maxHuntDist, final int aggress) {
|
||||
CreatureTemplateBuilder builder = new CreatureTemplateBuilder("mod.creature.horned.pony", "Horned pony", "Not a unicorn. Unicorns are fictional.",
|
||||
"model.creature.quadraped.unicorn", types, BodyTemplate.TYPE_HORSE, (short) 5, (byte) 0, (short) 85, (short) 50, (short) 85,
|
||||
"sound.death.horse", "sound.death.horse", "sound.combat.hit.horse", "sound.combat.hit.horse",
|
||||
Servers.localServer.PVPSERVER ? 0.75f : 0.4f, 17f, 13f, 15.0f, 0.0f, 0.0f, 1.4f, 800,
|
||||
new int[]{ItemList.heart}, 10, 74, Materials.MATERIAL_MEAT_HORSE);
|
||||
|
||||
builder.skill(SkillList.BODY_STRENGTH, Servers.localServer.PVPSERVER ? 40.0f : 60.0f);
|
||||
builder.skill(SkillList.BODY_STAMINA, 60.0f);
|
||||
builder.skill(SkillList.BODY_CONTROL, 55.0f);
|
||||
builder.skill(SkillList.MIND_LOGICAL, 40.0f);
|
||||
builder.skill(SkillList.MIND_SPEED, 50.0f);
|
||||
builder.skill(SkillList.SOUL_STRENGTH, 30.0f);
|
||||
builder.skill(SkillList.SOUL_DEPTH, 30.0f);
|
||||
builder.skill(SkillList.WEAPONLESS_FIGHTING, 50.0f);
|
||||
builder.skill(SkillList.GROUP_FIGHTING, 40.0f);
|
||||
|
||||
builder.boundsValues(-0.5f, -1.0f, 0.5f, 1.42f);
|
||||
builder.handDamString("horn");
|
||||
builder.maxAge(100);
|
||||
builder.armourType(ArmourTypes.ARMOUR_SCALE_DRAGON);
|
||||
builder.baseCombatRating(Servers.localServer.PVPSERVER ? 15.0f : 20.0f);
|
||||
builder.combatDamageType(Wound.TYPE_INTERNAL);
|
||||
builder.maxPercentOfCreatures(0.001f);
|
||||
builder.maxGroupAttackSize(100);
|
||||
|
||||
templateId = builder.getTemplateId();
|
||||
return builder;
|
||||
}
|
||||
|
||||
public ModVehicleBehaviour getVehicleBehaviour() {
|
||||
|
||||
return new ModVehicleBehaviour() {
|
||||
|
||||
@Override
|
||||
public void setSettingsForVehicle(Item item, Vehicle vehicle) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setSettingsForVehicle(Creature creature, Vehicle v) {
|
||||
VehicleFacade vehicle = wrap(v);
|
||||
|
||||
vehicle.createPassengerSeats(0);
|
||||
vehicle.setSeatFightMod(0, 0.8f, 1.1f);
|
||||
vehicle.setSeatOffset(0, 0.0f, 0.0f, 0.0f);
|
||||
vehicle.setCreature(true);
|
||||
vehicle.setSkillNeeded(35.0f);
|
||||
vehicle.setName(creature.getName());
|
||||
vehicle.setMaxHeightDiff(0.08f);
|
||||
vehicle.setMaxDepth(-1.7f);
|
||||
vehicle.setMaxSpeed(40.0f);
|
||||
vehicle.setCommandType((byte) 3);
|
||||
vehicle.setCanHaveEquipment(Servers.localServer.PVPSERVER ? false : true);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addEncounters() {
|
||||
if (templateId == 0)
|
||||
return;
|
||||
|
||||
new EncounterBuilder(Tiles.Tile.TILE_ENCHANTED_GRASS.id)
|
||||
.addCreatures(templateId, 1)
|
||||
.build(2);
|
||||
}
|
||||
}
|
||||
80
src/main/java/mod/sin/creatures/LargeBoar.java
Normal file
80
src/main/java/mod/sin/creatures/LargeBoar.java
Normal file
@@ -0,0 +1,80 @@
|
||||
package mod.sin.creatures;
|
||||
|
||||
import org.gotti.wurmunlimited.modsupport.CreatureTemplateBuilder;
|
||||
import org.gotti.wurmunlimited.modsupport.creatures.EncounterBuilder;
|
||||
import org.gotti.wurmunlimited.modsupport.creatures.ModCreature;
|
||||
import com.wurmonline.mesh.Tiles;
|
||||
import com.wurmonline.server.bodys.BodyTemplate;
|
||||
import com.wurmonline.server.bodys.Wound;
|
||||
import com.wurmonline.server.combat.ArmourTypes;
|
||||
import com.wurmonline.server.creatures.CreatureTypes;
|
||||
import com.wurmonline.server.items.ItemList;
|
||||
import com.wurmonline.server.items.Materials;
|
||||
import com.wurmonline.server.skills.SkillList;
|
||||
|
||||
public class LargeBoar implements ModCreature, CreatureTypes {
|
||||
public static int templateId;
|
||||
|
||||
@Override
|
||||
public CreatureTemplateBuilder createCreateTemplateBuilder() {
|
||||
// {C_TYPE_MOVE_LOCAL, C_TYPE_VEHICLE, C_TYPE_ANIMAL, C_TYPE_LEADABLE, C_TYPE_GRAZER, C_TYPE_OMNIVORE, C_TYPE_DOMINATABLE, C_TYPE_AGG_HUMAN, C_TYPE_NON_NEWBIE, C_TYPE_BURNING}; - Hell Horse
|
||||
// int[] types = new int[]{7, 6, 13, 3, 29, 39, 60, 61}; - Spider
|
||||
int[] types = {
|
||||
CreatureTypes.C_TYPE_MOVE_LOCAL,
|
||||
CreatureTypes.C_TYPE_AGG_HUMAN,
|
||||
CreatureTypes.C_TYPE_HUNTING,
|
||||
CreatureTypes.C_TYPE_ANIMAL,
|
||||
CreatureTypes.C_TYPE_CARNIVORE,
|
||||
CreatureTypes.C_TYPE_NON_NEWBIE
|
||||
};
|
||||
|
||||
//public CreatureTemplateBuilder(final String identifier, final String name, final String description,
|
||||
// final String modelName, final int[] types, final byte bodyType, final short vision, final byte sex, final short centimetersHigh, final short centimetersLong, final short centimetersWide,
|
||||
// final String deathSndMale, final String deathSndFemale, final String hitSndMale, final String hitSndFemale,
|
||||
// final float naturalArmour, final float handDam, final float kickDam, final float biteDam, final float headDam, final float breathDam, final float speed, final int moveRate,
|
||||
// final int[] itemsButchered, final int maxHuntDist, final int aggress) {
|
||||
CreatureTemplateBuilder builder = new CreatureTemplateBuilder("mod.creature.boar", "Large boar", "A large and strong boar.",
|
||||
"model.creature.quadraped.boar.wild", types, (byte) BodyTemplate.TYPE_DOG, (short) 5, (byte) 0, (short) 85, (short) 50, (short) 85,
|
||||
"sound.death.pig", "sound.death.pig", "sound.combat.hit.pig", "sound.combat.hit.pig",
|
||||
0.5f, 8f, 0f, 10.0f, 14.0f, 0.0f, 1.2f, 500,
|
||||
new int[]{ItemList.fur, ItemList.heart}, 10, 74, Materials.MATERIAL_MEAT_PORK);
|
||||
|
||||
builder.skill(SkillList.BODY_STRENGTH, 30.0f);
|
||||
builder.skill(SkillList.BODY_STAMINA, 35.0f);
|
||||
builder.skill(SkillList.BODY_CONTROL, 45.0f);
|
||||
builder.skill(SkillList.MIND_LOGICAL, 5.0f);
|
||||
builder.skill(SkillList.MIND_SPEED, 10.0f);
|
||||
builder.skill(SkillList.SOUL_STRENGTH, 34.0f);
|
||||
builder.skill(SkillList.SOUL_DEPTH, 3.0f);
|
||||
builder.skill(SkillList.WEAPONLESS_FIGHTING, 40.0f);
|
||||
builder.skill(SkillList.GROUP_FIGHTING, 30.0f);
|
||||
|
||||
builder.boundsValues(-0.5f, -1.0f, 0.5f, 1.42f);
|
||||
builder.handDamString("kick");
|
||||
builder.maxAge(100);
|
||||
builder.armourType(ArmourTypes.ARMOUR_CLOTH);
|
||||
builder.baseCombatRating(18.0f);
|
||||
builder.combatDamageType(Wound.TYPE_CRUSH);
|
||||
builder.denMaterial(Materials.MATERIAL_WOOD_BIRCH);
|
||||
builder.denName("boar lair");
|
||||
builder.maxPercentOfCreatures(0.01f);
|
||||
builder.maxGroupAttackSize(100);
|
||||
|
||||
templateId = builder.getTemplateId();
|
||||
return builder;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addEncounters() {
|
||||
if (templateId == 0)
|
||||
return;
|
||||
|
||||
new EncounterBuilder(Tiles.Tile.TILE_SAND.id)
|
||||
.addCreatures(templateId, 1)
|
||||
.build(2);
|
||||
|
||||
new EncounterBuilder(Tiles.Tile.TILE_GRASS.id)
|
||||
.addCreatures(templateId, 1)
|
||||
.build(3);
|
||||
}
|
||||
}
|
||||
43
src/main/java/mod/sin/creatures/LavaFiend.java
Normal file
43
src/main/java/mod/sin/creatures/LavaFiend.java
Normal file
@@ -0,0 +1,43 @@
|
||||
package mod.sin.creatures;
|
||||
|
||||
import org.gotti.wurmunlimited.modsupport.CreatureTemplateBuilder;
|
||||
import org.gotti.wurmunlimited.modsupport.creatures.EncounterBuilder;
|
||||
import org.gotti.wurmunlimited.modsupport.creatures.ModCreature;
|
||||
|
||||
import com.wurmonline.mesh.Tiles;
|
||||
import com.wurmonline.server.creatures.CreatureTemplate;
|
||||
import com.wurmonline.server.creatures.CreatureTemplateFactory;
|
||||
import com.wurmonline.server.creatures.CreatureTemplateIds;
|
||||
import com.wurmonline.server.creatures.NoSuchCreatureTemplateException;
|
||||
|
||||
public class LavaFiend implements ModCreature {
|
||||
|
||||
private int templateId;
|
||||
|
||||
@Override
|
||||
public CreatureTemplateBuilder createCreateTemplateBuilder() {
|
||||
templateId = CreatureTemplateIds.LAVA_CREATURE_CID;
|
||||
return new CreatureTemplateBuilder(templateId) {
|
||||
@Override
|
||||
public CreatureTemplate build() {
|
||||
try {
|
||||
|
||||
return CreatureTemplateFactory.getInstance().getTemplate(templateId);
|
||||
} catch (NoSuchCreatureTemplateException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addEncounters() {
|
||||
if (templateId == 0)
|
||||
return;
|
||||
|
||||
new EncounterBuilder(Tiles.Tile.TILE_SAND.id)
|
||||
.addCreatures(templateId, 1)
|
||||
.build(1);
|
||||
|
||||
}
|
||||
}
|
||||
63
src/main/java/mod/sin/creatures/MacroSlayer.java
Normal file
63
src/main/java/mod/sin/creatures/MacroSlayer.java
Normal file
@@ -0,0 +1,63 @@
|
||||
package mod.sin.creatures;
|
||||
|
||||
import org.gotti.wurmunlimited.modsupport.CreatureTemplateBuilder;
|
||||
import org.gotti.wurmunlimited.modsupport.creatures.ModCreature;
|
||||
|
||||
import com.wurmonline.server.bodys.BodyTemplate;
|
||||
import com.wurmonline.server.bodys.Wound;
|
||||
import com.wurmonline.server.combat.ArmourTypes;
|
||||
import com.wurmonline.server.creatures.CreatureTypes;
|
||||
import com.wurmonline.server.items.Materials;
|
||||
import com.wurmonline.server.skills.SkillList;
|
||||
|
||||
public class MacroSlayer implements ModCreature, CreatureTypes {
|
||||
public static int templateId;
|
||||
@Override
|
||||
public CreatureTemplateBuilder createCreateTemplateBuilder() {
|
||||
int[] types = {
|
||||
CreatureTypes.C_TYPE_AGG_HUMAN,
|
||||
CreatureTypes.C_TYPE_MOVE_LOCAL,
|
||||
CreatureTypes.C_TYPE_SWIMMING,
|
||||
CreatureTypes.C_TYPE_HUNTING,
|
||||
CreatureTypes.C_TYPE_MONSTER,
|
||||
CreatureTypes.C_TYPE_HERBIVORE,
|
||||
CreatureTypes.C_TYPE_FENCEBREAKER,
|
||||
CreatureTypes.C_TYPE_NON_NEWBIE,
|
||||
CreatureTypes.C_TYPE_NO_REBIRTH
|
||||
};
|
||||
|
||||
CreatureTemplateBuilder builder = new CreatureTemplateBuilder("mod.creature.macro.slayer", "Blobber the Macro Slayer",
|
||||
"The incarnation of the Macro King. Here to claim the souls of those who challenge his rightful rule.", "model.blob",
|
||||
types, BodyTemplate.TYPE_DRAGON, (short) 5, (byte) 0, (short) 350, (short) 100, (short) 60,
|
||||
"sound.death.dragon", "sound.death.dragon", "sound.combat.hit.dragon", "sound.combat.hit.dragon",
|
||||
0.001f, 10.0f, 10.0f, 10.0f, 10.0f, 10.0f, 0.5f, 500,
|
||||
new int[]{}, 40, 100, Materials.MATERIAL_MEAT_HUMANOID);
|
||||
|
||||
builder.skill(SkillList.BODY_STRENGTH, 90.0f);
|
||||
builder.skill(SkillList.BODY_STAMINA, 70.0f);
|
||||
builder.skill(SkillList.BODY_CONTROL, 60.0f);
|
||||
builder.skill(SkillList.MIND_LOGICAL, 35.0f);
|
||||
builder.skill(SkillList.MIND_SPEED, 45.0f);
|
||||
builder.skill(SkillList.SOUL_STRENGTH, 80.0f);
|
||||
builder.skill(SkillList.SOUL_DEPTH, 80.0f);
|
||||
builder.skill(SkillList.WEAPONLESS_FIGHTING, 80.0f);
|
||||
builder.skill(SkillList.GROUP_FIGHTING, 80.0f);
|
||||
|
||||
builder.boundsValues(-0.5f, -1.0f, 0.5f, 1.42f);
|
||||
builder.handDamString("macro");
|
||||
builder.kickDamString("macro");
|
||||
builder.maxAge(200);
|
||||
builder.armourType(ArmourTypes.ARMOUR_SCALE_DRAGON);
|
||||
builder.baseCombatRating(99.0f);
|
||||
builder.combatDamageType(Wound.TYPE_WATER);
|
||||
builder.maxGroupAttackSize(100);
|
||||
|
||||
templateId = builder.getTemplateId();
|
||||
return builder;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addEncounters() {
|
||||
return;
|
||||
}
|
||||
}
|
||||
64
src/main/java/mod/sin/creatures/Reaper.java
Normal file
64
src/main/java/mod/sin/creatures/Reaper.java
Normal file
@@ -0,0 +1,64 @@
|
||||
package mod.sin.creatures;
|
||||
|
||||
import org.gotti.wurmunlimited.modsupport.CreatureTemplateBuilder;
|
||||
import org.gotti.wurmunlimited.modsupport.creatures.ModCreature;
|
||||
|
||||
import com.wurmonline.server.bodys.BodyTemplate;
|
||||
import com.wurmonline.server.bodys.Wound;
|
||||
import com.wurmonline.server.combat.ArmourTypes;
|
||||
import com.wurmonline.server.creatures.CreatureTypes;
|
||||
import com.wurmonline.server.items.ItemList;
|
||||
import com.wurmonline.server.items.Materials;
|
||||
import com.wurmonline.server.skills.SkillList;
|
||||
|
||||
public class Reaper implements ModCreature, CreatureTypes {
|
||||
public static int templateId;
|
||||
@Override
|
||||
public CreatureTemplateBuilder createCreateTemplateBuilder() {
|
||||
int[] types = {
|
||||
CreatureTypes.C_TYPE_AGG_HUMAN,
|
||||
CreatureTypes.C_TYPE_MOVE_LOCAL,
|
||||
CreatureTypes.C_TYPE_SWIMMING,
|
||||
CreatureTypes.C_TYPE_HUNTING,
|
||||
CreatureTypes.C_TYPE_MONSTER,
|
||||
CreatureTypes.C_TYPE_HERBIVORE,
|
||||
CreatureTypes.C_TYPE_FENCEBREAKER,
|
||||
CreatureTypes.C_TYPE_NON_NEWBIE,
|
||||
CreatureTypes.C_TYPE_NO_REBIRTH
|
||||
};
|
||||
|
||||
CreatureTemplateBuilder builder = new CreatureTemplateBuilder("mod.creature.reaper", "Reaper",
|
||||
"The reaper, here to claim the soul of a powerful creature... and anything else.", "model.creature.gmdark",
|
||||
types, BodyTemplate.TYPE_HUMAN, (short) 20, (byte) 0, (short) 350, (short) 100, (short) 60, "sound.death.dragon",
|
||||
"sound.death.dragon", "sound.combat.hit.dragon", "sound.combat.hit.dragon",
|
||||
0.03f, 35.0f, 45.0f, 22.0f, 40.0f, 0.0f, 2.5f, 500,
|
||||
new int[]{ItemList.boneCollar}, 40, 100, Materials.MATERIAL_MEAT_HUMANOID);
|
||||
|
||||
builder.skill(SkillList.BODY_STRENGTH, 60.0f);
|
||||
builder.skill(SkillList.BODY_STAMINA, 70.0f);
|
||||
builder.skill(SkillList.BODY_CONTROL, 60.0f);
|
||||
builder.skill(SkillList.MIND_LOGICAL, 35.0f);
|
||||
builder.skill(SkillList.MIND_SPEED, 45.0f);
|
||||
builder.skill(SkillList.SOUL_STRENGTH, 80.0f);
|
||||
builder.skill(SkillList.SOUL_DEPTH, 80.0f);
|
||||
builder.skill(SkillList.WEAPONLESS_FIGHTING, 80.0f);
|
||||
builder.skill(SkillList.GROUP_FIGHTING, 80.0f);
|
||||
|
||||
builder.boundsValues(-0.5f, -1.0f, 0.5f, 1.42f);
|
||||
builder.handDamString("slice");
|
||||
builder.kickDamString("reap");
|
||||
builder.maxAge(200);
|
||||
builder.armourType(ArmourTypes.ARMOUR_SCALE_DRAGON);
|
||||
builder.baseCombatRating(55.0f);
|
||||
builder.combatDamageType(Wound.TYPE_INFECTION);
|
||||
builder.maxGroupAttackSize(100);
|
||||
|
||||
templateId = builder.getTemplateId();
|
||||
return builder;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addEncounters() {
|
||||
return;
|
||||
}
|
||||
}
|
||||
51
src/main/java/mod/sin/creatures/RobZombie.java
Normal file
51
src/main/java/mod/sin/creatures/RobZombie.java
Normal file
@@ -0,0 +1,51 @@
|
||||
package mod.sin.creatures;
|
||||
|
||||
import org.gotti.wurmunlimited.modsupport.CreatureTemplateBuilder;
|
||||
import org.gotti.wurmunlimited.modsupport.creatures.ModCreature;
|
||||
|
||||
import com.wurmonline.server.creatures.CreatureTypes;
|
||||
import com.wurmonline.server.skills.SkillList;
|
||||
|
||||
public class RobZombie implements ModCreature, CreatureTypes {
|
||||
@Override
|
||||
public CreatureTemplateBuilder createCreateTemplateBuilder() {
|
||||
int[] types = {
|
||||
CreatureTypes.C_TYPE_MOVE_LOCAL,
|
||||
CreatureTypes.C_TYPE_HERBIVORE,
|
||||
CreatureTypes.C_TYPE_UNDEAD,
|
||||
CreatureTypes.C_TYPE_TRADER,
|
||||
CreatureTypes.C_TYPE_NPC_TRADER};
|
||||
|
||||
CreatureTemplateBuilder builder = new CreatureTemplateBuilder("mod.creature.zombie.rob", "Rob Zombie",
|
||||
"This is Rob Zombie. He is known to eat brains when you do not buy things from him.", "model.creature.humanoid.human.player.zombie",
|
||||
types, (byte) 0, (short) 20, (byte) 0, (short) 350, (short) 100, (short) 60,
|
||||
"sound.death.zombie", "sound.death.zombie", "sound.combat.hit.zombie", "sound.combat.hit.zombie",
|
||||
0.005f, 150.0f, 150.0f, 150.0f, 0.0f, 0.0f, 0.5f, 500, new int[]{868, 867}, 40, 100, (byte) 0);
|
||||
|
||||
builder.skill(SkillList.BODY_STRENGTH, 99.0f);
|
||||
builder.skill(SkillList.BODY_STAMINA, 99.0f);
|
||||
builder.skill(SkillList.BODY_CONTROL, 99.0f);
|
||||
builder.skill(SkillList.MIND_LOGICAL, 99.0f);
|
||||
builder.skill(SkillList.MIND_SPEED, 99.0f);
|
||||
builder.skill(SkillList.SOUL_STRENGTH, 99.0f);
|
||||
builder.skill(SkillList.SOUL_DEPTH, 99.0f);
|
||||
builder.skill(SkillList.WEAPONLESS_FIGHTING, 99.0f);
|
||||
builder.skill(SkillList.GROUP_FIGHTING, 99.0f);
|
||||
|
||||
builder.boundsValues(-0.5f, -1.0f, 0.5f, 1.42f);
|
||||
builder.handDamString("decimate");
|
||||
builder.kickDamString("decimate");
|
||||
builder.maxAge(200);
|
||||
builder.armourType(10);
|
||||
builder.baseCombatRating(99.0f);
|
||||
builder.combatDamageType((byte)2);
|
||||
builder.maxGroupAttackSize(100);
|
||||
|
||||
return builder;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addEncounters() {
|
||||
return;
|
||||
}
|
||||
}
|
||||
46
src/main/java/mod/sin/creatures/SolDemon.java
Normal file
46
src/main/java/mod/sin/creatures/SolDemon.java
Normal file
@@ -0,0 +1,46 @@
|
||||
package mod.sin.creatures;
|
||||
|
||||
import org.gotti.wurmunlimited.modsupport.CreatureTemplateBuilder;
|
||||
import org.gotti.wurmunlimited.modsupport.creatures.EncounterBuilder;
|
||||
import org.gotti.wurmunlimited.modsupport.creatures.ModCreature;
|
||||
|
||||
import com.wurmonline.mesh.Tiles;
|
||||
import com.wurmonline.server.creatures.CreatureTemplate;
|
||||
import com.wurmonline.server.creatures.CreatureTemplateFactory;
|
||||
import com.wurmonline.server.creatures.CreatureTemplateIds;
|
||||
import com.wurmonline.server.creatures.NoSuchCreatureTemplateException;
|
||||
|
||||
public class SolDemon implements ModCreature {
|
||||
|
||||
private int templateId;
|
||||
|
||||
@Override
|
||||
public CreatureTemplateBuilder createCreateTemplateBuilder() {
|
||||
templateId = CreatureTemplateIds.DEMON_SOL_CID;
|
||||
return new CreatureTemplateBuilder(templateId) {
|
||||
@Override
|
||||
public CreatureTemplate build() {
|
||||
try {
|
||||
|
||||
return CreatureTemplateFactory.getInstance().getTemplate(templateId);
|
||||
} catch (NoSuchCreatureTemplateException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addEncounters() {
|
||||
if (templateId == 0)
|
||||
return;
|
||||
|
||||
new EncounterBuilder(Tiles.Tile.TILE_SAND.id)
|
||||
.addCreatures(templateId, 2)
|
||||
.build(1);
|
||||
|
||||
new EncounterBuilder(Tiles.Tile.TILE_MYCELIUM.id)
|
||||
.addCreatures(templateId, 2)
|
||||
.build(3);
|
||||
}
|
||||
}
|
||||
64
src/main/java/mod/sin/creatures/SpectralDrake.java
Normal file
64
src/main/java/mod/sin/creatures/SpectralDrake.java
Normal file
@@ -0,0 +1,64 @@
|
||||
package mod.sin.creatures;
|
||||
|
||||
import org.gotti.wurmunlimited.modsupport.CreatureTemplateBuilder;
|
||||
import org.gotti.wurmunlimited.modsupport.creatures.ModCreature;
|
||||
|
||||
import com.wurmonline.server.bodys.BodyTemplate;
|
||||
import com.wurmonline.server.bodys.Wound;
|
||||
import com.wurmonline.server.combat.ArmourTypes;
|
||||
import com.wurmonline.server.creatures.CreatureTypes;
|
||||
import com.wurmonline.server.items.ItemList;
|
||||
import com.wurmonline.server.items.Materials;
|
||||
import com.wurmonline.server.skills.SkillList;
|
||||
|
||||
public class SpectralDrake implements ModCreature {
|
||||
public static int templateId;
|
||||
@Override
|
||||
public CreatureTemplateBuilder createCreateTemplateBuilder() {
|
||||
int[] types = {
|
||||
CreatureTypes.C_TYPE_AGG_HUMAN,
|
||||
CreatureTypes.C_TYPE_MOVE_LOCAL,
|
||||
CreatureTypes.C_TYPE_SWIMMING,
|
||||
CreatureTypes.C_TYPE_HUNTING,
|
||||
CreatureTypes.C_TYPE_MONSTER,
|
||||
CreatureTypes.C_TYPE_HERBIVORE,
|
||||
CreatureTypes.C_TYPE_FENCEBREAKER,
|
||||
CreatureTypes.C_TYPE_NON_NEWBIE,
|
||||
CreatureTypes.C_TYPE_NO_REBIRTH
|
||||
};
|
||||
|
||||
CreatureTemplateBuilder builder = new CreatureTemplateBuilder("mod.creature.spectraldrake", "Spectral drake",
|
||||
"The spectral incarnation of a defeated dragon.", "model.creature.drake.spirit", types, BodyTemplate.TYPE_DRAGON,
|
||||
(short) 20, (byte) 0, (short) 350, (short) 100, (short) 60, "sound.death.dragon", "sound.death.dragon",
|
||||
"sound.combat.hit.dragon", "sound.combat.hit.dragon",
|
||||
0.06f, 45.0f, 50.0f, 22.0f, 45.0f, 0.0f, 2.0f, 500,
|
||||
new int[]{ItemList.boneCollar}, 40, 100, Materials.MATERIAL_MEAT_DRAGON);
|
||||
|
||||
builder.skill(SkillList.BODY_STRENGTH, 60.0f);
|
||||
builder.skill(SkillList.BODY_STAMINA, 70.0f);
|
||||
builder.skill(SkillList.BODY_CONTROL, 60.0f);
|
||||
builder.skill(SkillList.MIND_LOGICAL, 35.0f);
|
||||
builder.skill(SkillList.MIND_SPEED, 45.0f);
|
||||
builder.skill(SkillList.SOUL_STRENGTH, 70.0f);
|
||||
builder.skill(SkillList.SOUL_DEPTH, 70.0f);
|
||||
builder.skill(SkillList.WEAPONLESS_FIGHTING, 85.0f);
|
||||
builder.skill(SkillList.GROUP_FIGHTING, 75.0f);
|
||||
|
||||
builder.boundsValues(-0.5f, -1.0f, 0.5f, 1.42f);
|
||||
builder.handDamString("claw");
|
||||
builder.kickDamString("wingbuff");
|
||||
builder.maxAge(200);
|
||||
builder.armourType(ArmourTypes.ARMOUR_LEATHER_DRAGON);
|
||||
builder.baseCombatRating(60.0f);
|
||||
builder.combatDamageType(Wound.TYPE_COLD);
|
||||
builder.maxGroupAttackSize(100);
|
||||
|
||||
templateId = builder.getTemplateId();
|
||||
return builder;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addEncounters() {
|
||||
return;
|
||||
}
|
||||
}
|
||||
80
src/main/java/mod/sin/creatures/SpiritTroll.java
Normal file
80
src/main/java/mod/sin/creatures/SpiritTroll.java
Normal file
@@ -0,0 +1,80 @@
|
||||
package mod.sin.creatures;
|
||||
|
||||
import org.gotti.wurmunlimited.modsupport.CreatureTemplateBuilder;
|
||||
import org.gotti.wurmunlimited.modsupport.creatures.EncounterBuilder;
|
||||
import org.gotti.wurmunlimited.modsupport.creatures.ModCreature;
|
||||
import com.wurmonline.mesh.Tiles;
|
||||
import com.wurmonline.server.bodys.BodyTemplate;
|
||||
import com.wurmonline.server.bodys.Wound;
|
||||
import com.wurmonline.server.combat.ArmourTypes;
|
||||
import com.wurmonline.server.creatures.CreatureTypes;
|
||||
import com.wurmonline.server.items.Materials;
|
||||
import com.wurmonline.server.skills.SkillList;
|
||||
|
||||
public class SpiritTroll implements ModCreature, CreatureTypes {
|
||||
public static int templateId;
|
||||
|
||||
@Override
|
||||
public CreatureTemplateBuilder createCreateTemplateBuilder() {
|
||||
// {C_TYPE_MOVE_LOCAL, C_TYPE_VEHICLE, C_TYPE_ANIMAL, C_TYPE_LEADABLE, C_TYPE_GRAZER, C_TYPE_OMNIVORE, C_TYPE_DOMINATABLE, C_TYPE_AGG_HUMAN, C_TYPE_NON_NEWBIE, C_TYPE_BURNING}; - Hell Horse
|
||||
// new int[]{7, 6, 40, 13, 16, 18, 29, 30, 32, 36, 39, 45, 60, 61}; - Troll
|
||||
int[] types = {
|
||||
CreatureTypes.C_TYPE_MOVE_LOCAL,
|
||||
CreatureTypes.C_TYPE_AGG_HUMAN,
|
||||
CreatureTypes.C_TYPE_FENCEBREAKER,
|
||||
CreatureTypes.C_TYPE_HUNTING,
|
||||
CreatureTypes.C_TYPE_MONSTER,
|
||||
CreatureTypes.C_TYPE_REGENERATING,
|
||||
CreatureTypes.C_TYPE_CARNIVORE,
|
||||
CreatureTypes.C_TYPE_CLIMBER,
|
||||
CreatureTypes.C_TYPE_UNDEAD,
|
||||
CreatureTypes.C_TYPE_DETECTINVIS,
|
||||
CreatureTypes.C_TYPE_NON_NEWBIE
|
||||
};
|
||||
|
||||
//public CreatureTemplateBuilder(final String identifier, final String name, final String description,
|
||||
// final String modelName, final int[] types, final byte bodyType, final short vision, final byte sex, final short centimetersHigh, final short centimetersLong, final short centimetersWide,
|
||||
// final String deathSndMale, final String deathSndFemale, final String hitSndMale, final String hitSndFemale,
|
||||
// final float naturalArmour, final float handDam, final float kickDam, final float biteDam, final float headDam, final float breathDam, final float speed, final int moveRate,
|
||||
// final int[] itemsButchered, final int maxHuntDist, final int aggress) {
|
||||
CreatureTemplateBuilder builder = new CreatureTemplateBuilder("mod.creature.spirit.troll", "Spirit troll", "A spirit troll.",
|
||||
"model.creature.humanoid.troll.standard", types, BodyTemplate.TYPE_HUMAN, (short) 5, (byte) 0, (short) 85, (short) 50, (short) 85,
|
||||
"sound.death.troll", "sound.death.troll", "sound.combat.hit.troll", "sound.combat.hit.troll",
|
||||
0.15f, 15f, 17f, 19.0f, 0.0f, 0.0f, 1.2f, 500,
|
||||
new int[]{}, 10, 74, (byte) 82);
|
||||
|
||||
builder.skill(SkillList.BODY_STRENGTH, 45.0f);
|
||||
builder.skill(SkillList.BODY_STAMINA, 40.0f);
|
||||
builder.skill(SkillList.BODY_CONTROL, 45.0f);
|
||||
builder.skill(SkillList.MIND_LOGICAL, 30.0f);
|
||||
builder.skill(SkillList.MIND_SPEED, 30.0f);
|
||||
builder.skill(SkillList.SOUL_STRENGTH, 30.0f);
|
||||
builder.skill(SkillList.SOUL_DEPTH, 30.0f);
|
||||
builder.skill(SkillList.WEAPONLESS_FIGHTING, 50.0f);
|
||||
builder.skill(SkillList.GROUP_FIGHTING, 30.0f);
|
||||
|
||||
builder.boundsValues(-0.5f, -1.0f, 0.5f, 1.42f);
|
||||
builder.handDamString("maul");
|
||||
builder.maxAge(100);
|
||||
builder.armourType(ArmourTypes.ARMOUR_LEATHER);
|
||||
builder.baseCombatRating(26.0f);
|
||||
builder.combatDamageType(Wound.TYPE_COLD);
|
||||
builder.denMaterial(Materials.MATERIAL_WOOD_BIRCH);
|
||||
builder.denName("spirit troll lair");
|
||||
builder.maxPercentOfCreatures(0.001f);
|
||||
builder.maxGroupAttackSize(100);
|
||||
|
||||
templateId = builder.getTemplateId();
|
||||
return builder;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addEncounters() {
|
||||
if (templateId == 0)
|
||||
return;
|
||||
|
||||
new EncounterBuilder(Tiles.Tile.TILE_SNOW.id)
|
||||
.addCreatures(templateId, 1)
|
||||
.build(1);
|
||||
}
|
||||
}
|
||||
77
src/main/java/mod/sin/creatures/Worg.java
Normal file
77
src/main/java/mod/sin/creatures/Worg.java
Normal file
@@ -0,0 +1,77 @@
|
||||
package mod.sin.creatures;
|
||||
|
||||
import org.gotti.wurmunlimited.modsupport.CreatureTemplateBuilder;
|
||||
import org.gotti.wurmunlimited.modsupport.creatures.EncounterBuilder;
|
||||
import org.gotti.wurmunlimited.modsupport.creatures.ModCreature;
|
||||
import org.gotti.wurmunlimited.modsupport.vehicles.ModVehicleBehaviour;
|
||||
import org.gotti.wurmunlimited.modsupport.vehicles.VehicleFacade;
|
||||
|
||||
import com.wurmonline.mesh.Tiles;
|
||||
import com.wurmonline.server.behaviours.Vehicle;
|
||||
import com.wurmonline.server.creatures.Creature;
|
||||
import com.wurmonline.server.creatures.CreatureTemplate;
|
||||
import com.wurmonline.server.creatures.CreatureTemplateFactory;
|
||||
import com.wurmonline.server.creatures.CreatureTemplateIds;
|
||||
import com.wurmonline.server.creatures.NoSuchCreatureTemplateException;
|
||||
import com.wurmonline.server.items.Item;
|
||||
|
||||
public class Worg implements ModCreature {
|
||||
|
||||
private int templateId;
|
||||
|
||||
@Override
|
||||
public CreatureTemplateBuilder createCreateTemplateBuilder() {
|
||||
templateId = CreatureTemplateIds.WORG_CID;
|
||||
return new CreatureTemplateBuilder(templateId) {
|
||||
@Override
|
||||
public CreatureTemplate build() {
|
||||
try {
|
||||
return CreatureTemplateFactory.getInstance().getTemplate(templateId);
|
||||
} catch (NoSuchCreatureTemplateException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
public ModVehicleBehaviour getVehicleBehaviour() {
|
||||
|
||||
return new ModVehicleBehaviour() {
|
||||
|
||||
@Override
|
||||
public void setSettingsForVehicle(Item item, Vehicle vehicle) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setSettingsForVehicle(Creature creature, Vehicle v) {
|
||||
VehicleFacade vehicle = wrap(v);
|
||||
|
||||
vehicle.createPassengerSeats(0);
|
||||
vehicle.setSeatFightMod(0, 0.8f, 1.1f);
|
||||
vehicle.setSeatOffset(0, -0.2f, 0.0f, -0.1f);
|
||||
vehicle.setCreature(true);
|
||||
vehicle.setSkillNeeded(30.0f);
|
||||
vehicle.setName(creature.getName());
|
||||
vehicle.setMaxHeightDiff(0.07f);
|
||||
vehicle.setMaxDepth(-1.7f);
|
||||
vehicle.setMaxSpeed(50.0f);
|
||||
vehicle.setCommandType((byte) 3);
|
||||
vehicle.setCanHaveEquipment(false);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addEncounters() {
|
||||
if (templateId == 0)
|
||||
return;
|
||||
|
||||
new EncounterBuilder(Tiles.Tile.TILE_GRASS.id)
|
||||
.addCreatures(templateId, 2)
|
||||
.build(1);
|
||||
|
||||
new EncounterBuilder(Tiles.Tile.TILE_STEPPE.id)
|
||||
.addCreatures(templateId, 2)
|
||||
.build(3);
|
||||
}
|
||||
}
|
||||
121
src/main/java/mod/sin/creatures/WyvernBlack.java
Normal file
121
src/main/java/mod/sin/creatures/WyvernBlack.java
Normal file
@@ -0,0 +1,121 @@
|
||||
package mod.sin.creatures;
|
||||
|
||||
import org.gotti.wurmunlimited.modsupport.CreatureTemplateBuilder;
|
||||
import org.gotti.wurmunlimited.modsupport.creatures.EncounterBuilder;
|
||||
import org.gotti.wurmunlimited.modsupport.creatures.ModCreature;
|
||||
import org.gotti.wurmunlimited.modsupport.vehicles.ModVehicleBehaviour;
|
||||
import org.gotti.wurmunlimited.modsupport.vehicles.VehicleFacade;
|
||||
|
||||
import com.wurmonline.mesh.Tiles;
|
||||
import com.wurmonline.server.Servers;
|
||||
import com.wurmonline.server.behaviours.Vehicle;
|
||||
import com.wurmonline.server.bodys.BodyTemplate;
|
||||
import com.wurmonline.server.bodys.Wound;
|
||||
import com.wurmonline.server.combat.ArmourTypes;
|
||||
import com.wurmonline.server.creatures.Creature;
|
||||
import com.wurmonline.server.creatures.CreatureTypes;
|
||||
import com.wurmonline.server.items.Item;
|
||||
import com.wurmonline.server.items.ItemList;
|
||||
import com.wurmonline.server.items.Materials;
|
||||
import com.wurmonline.server.skills.SkillList;
|
||||
|
||||
public class WyvernBlack implements ModCreature, CreatureTypes {
|
||||
public static int templateId;
|
||||
@Override
|
||||
public CreatureTemplateBuilder createCreateTemplateBuilder() {
|
||||
// {C_TYPE_MOVE_LOCAL, C_TYPE_VEHICLE, C_TYPE_ANIMAL, C_TYPE_LEADABLE, C_TYPE_GRAZER, C_TYPE_OMNIVORE, C_TYPE_DOMINATABLE, C_TYPE_AGG_HUMAN, C_TYPE_NON_NEWBIE, C_TYPE_BURNING}; - Hell Horse
|
||||
int[] types = {
|
||||
CreatureTypes.C_TYPE_CARNIVORE,
|
||||
CreatureTypes.C_TYPE_MOVE_GLOBAL,
|
||||
CreatureTypes.C_TYPE_VEHICLE,
|
||||
CreatureTypes.C_TYPE_REGENERATING,
|
||||
CreatureTypes.C_TYPE_AGG_HUMAN,
|
||||
CreatureTypes.C_TYPE_SWIMMING,
|
||||
CreatureTypes.C_TYPE_HUNTING,
|
||||
CreatureTypes.C_TYPE_DOMINATABLE,
|
||||
CreatureTypes.C_TYPE_MONSTER,
|
||||
CreatureTypes.C_TYPE_NON_NEWBIE,
|
||||
CreatureTypes.C_TYPE_ANIMAL
|
||||
};
|
||||
|
||||
//public CreatureTemplateBuilder(final String identifier, final String name, final String description,
|
||||
// final String modelName, final int[] types, final byte bodyType, final short vision, final byte sex, final short centimetersHigh, final short centimetersLong, final short centimetersWide,
|
||||
// final String deathSndMale, final String deathSndFemale, final String hitSndMale, final String hitSndFemale,
|
||||
// final float naturalArmour, final float handDam, final float kickDam, final float biteDam, final float headDam, final float breathDam, final float speed, final int moveRate,
|
||||
// final int[] itemsButchered, final int maxHuntDist, final int aggress) {
|
||||
CreatureTemplateBuilder builder = new CreatureTemplateBuilder("mod.creature.wyvern.black", "Black wyvern", "A battle-hardened wyvern with scales as black as night.",
|
||||
"model.creature.drake.black", types, BodyTemplate.TYPE_DRAGON, (short) 10, (byte) 0, (short) 350, (short) 100, (short) 60,
|
||||
"sound.death.dragon", "sound.death.dragon", "sound.combat.hit.dragon", "sound.combat.hit.dragon",
|
||||
Servers.localServer.PVPSERVER ? 0.65f : 0.35f, 20.0f, 23.0f, 0.0f, 0.0f, 0.0f, 1.3f, 800,
|
||||
new int[]{ItemList.animalHide, ItemList.tail, ItemList.eye, ItemList.gland, ItemList.tooth}, 40, 70, Materials.MATERIAL_MEAT_DRAGON);
|
||||
|
||||
builder.skill(SkillList.BODY_STRENGTH, Servers.localServer.PVPSERVER ? 39f : 54f);
|
||||
builder.skill(SkillList.BODY_STAMINA, 50.0f);
|
||||
builder.skill(SkillList.BODY_CONTROL, 50.0f);
|
||||
builder.skill(SkillList.MIND_LOGICAL, 50.0f);
|
||||
builder.skill(SkillList.MIND_SPEED, 50.0f);
|
||||
builder.skill(SkillList.SOUL_STRENGTH, 50.0f);
|
||||
builder.skill(SkillList.SOUL_DEPTH, 50.0f);
|
||||
builder.skill(SkillList.WEAPONLESS_FIGHTING, 70.0f);
|
||||
builder.skill(SkillList.GROUP_FIGHTING, 70.0f);
|
||||
|
||||
builder.boundsValues(-0.5f, -1.0f, 0.5f, 1.42f);
|
||||
builder.handDamString("bite");
|
||||
builder.kickDamString("wingbuff");
|
||||
builder.maxAge(200);
|
||||
builder.armourType(Servers.localServer.PVPSERVER ? ArmourTypes.ARMOUR_CLOTH : ArmourTypes.ARMOUR_SCALE_DRAGON);
|
||||
builder.baseCombatRating(28.0f);
|
||||
builder.combatDamageType(Wound.TYPE_PIERCE);
|
||||
builder.maxGroupAttackSize(10);
|
||||
|
||||
templateId = builder.getTemplateId();
|
||||
return builder;
|
||||
}
|
||||
|
||||
public ModVehicleBehaviour getVehicleBehaviour() {
|
||||
|
||||
return new ModVehicleBehaviour() {
|
||||
|
||||
@Override
|
||||
public void setSettingsForVehicle(Item item, Vehicle vehicle) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setSettingsForVehicle(Creature creature, Vehicle v) {
|
||||
VehicleFacade vehicle = wrap(v);
|
||||
|
||||
vehicle.createPassengerSeats(0);
|
||||
vehicle.setSeatFightMod(0, 0.8f, 1.1f);
|
||||
vehicle.setSeatOffset(0, 0.2f, 0.0f, 0.0f);
|
||||
vehicle.setCanHaveEquipment(true);
|
||||
vehicle.setCreature(true);
|
||||
vehicle.setSkillNeeded(30.0f);
|
||||
vehicle.setName(creature.getName());
|
||||
vehicle.setMaxHeightDiff(0.15f);
|
||||
vehicle.setMaxDepth(-50f);
|
||||
vehicle.setMaxSpeed(51.0f);
|
||||
vehicle.setCommandType((byte) 3);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addEncounters() {
|
||||
if (templateId == 0)
|
||||
return;
|
||||
|
||||
new EncounterBuilder(Tiles.Tile.TILE_SAND.id)
|
||||
.addCreatures(templateId, 1)
|
||||
.build(1);
|
||||
|
||||
if(Servers.localServer.PVPSERVER){
|
||||
new EncounterBuilder(Tiles.Tile.TILE_GRASS.id)
|
||||
.addCreatures(templateId, 1)
|
||||
.build(1);
|
||||
|
||||
new EncounterBuilder(Tiles.Tile.TILE_TREE.id)
|
||||
.addCreatures(templateId, 1)
|
||||
.build(1);
|
||||
}
|
||||
}
|
||||
}
|
||||
114
src/main/java/mod/sin/creatures/WyvernGreen.java
Normal file
114
src/main/java/mod/sin/creatures/WyvernGreen.java
Normal file
@@ -0,0 +1,114 @@
|
||||
package mod.sin.creatures;
|
||||
|
||||
import org.gotti.wurmunlimited.modsupport.CreatureTemplateBuilder;
|
||||
import org.gotti.wurmunlimited.modsupport.creatures.EncounterBuilder;
|
||||
import org.gotti.wurmunlimited.modsupport.creatures.ModCreature;
|
||||
import org.gotti.wurmunlimited.modsupport.vehicles.ModVehicleBehaviour;
|
||||
import org.gotti.wurmunlimited.modsupport.vehicles.VehicleFacade;
|
||||
|
||||
import com.wurmonline.mesh.Tiles;
|
||||
import com.wurmonline.server.Servers;
|
||||
import com.wurmonline.server.behaviours.Vehicle;
|
||||
import com.wurmonline.server.bodys.BodyTemplate;
|
||||
import com.wurmonline.server.bodys.Wound;
|
||||
import com.wurmonline.server.combat.ArmourTypes;
|
||||
import com.wurmonline.server.creatures.Creature;
|
||||
import com.wurmonline.server.creatures.CreatureTypes;
|
||||
import com.wurmonline.server.items.Item;
|
||||
import com.wurmonline.server.items.ItemList;
|
||||
import com.wurmonline.server.items.Materials;
|
||||
import com.wurmonline.server.skills.SkillList;
|
||||
|
||||
public class WyvernGreen implements ModCreature, CreatureTypes {
|
||||
public static int templateId;
|
||||
@Override
|
||||
public CreatureTemplateBuilder createCreateTemplateBuilder() {
|
||||
// {C_TYPE_MOVE_LOCAL, C_TYPE_VEHICLE, C_TYPE_ANIMAL, C_TYPE_LEADABLE, C_TYPE_GRAZER, C_TYPE_OMNIVORE, C_TYPE_DOMINATABLE, C_TYPE_AGG_HUMAN, C_TYPE_NON_NEWBIE, C_TYPE_BURNING}; - Hell Horse
|
||||
int[] types = {
|
||||
CreatureTypes.C_TYPE_HERBIVORE,
|
||||
CreatureTypes.C_TYPE_MOVE_LOCAL,
|
||||
CreatureTypes.C_TYPE_VEHICLE,
|
||||
CreatureTypes.C_TYPE_REGENERATING,
|
||||
CreatureTypes.C_TYPE_DOMINATABLE,
|
||||
CreatureTypes.C_TYPE_SWIMMING,
|
||||
CreatureTypes.C_TYPE_HUNTING,
|
||||
CreatureTypes.C_TYPE_NON_NEWBIE,
|
||||
CreatureTypes.C_TYPE_ANIMAL,
|
||||
CreatureTypes.C_TYPE_GRAZER
|
||||
};
|
||||
|
||||
//public CreatureTemplateBuilder(final String identifier, final String name, final String description,
|
||||
// final String modelName, final int[] types, final byte bodyType, final short vision, final byte sex, final short centimetersHigh, final short centimetersLong, final short centimetersWide,
|
||||
// final String deathSndMale, final String deathSndFemale, final String hitSndMale, final String hitSndFemale,
|
||||
// final float naturalArmour, final float handDam, final float kickDam, final float biteDam, final float headDam, final float breathDam, final float speed, final int moveRate,
|
||||
// final int[] itemsButchered, final int maxHuntDist, final int aggress) {
|
||||
CreatureTemplateBuilder builder = new CreatureTemplateBuilder("mod.creature.wyvern.green", "Green wyvern", "A battle-hardened wyvern with scales as green as the leaves.",
|
||||
"model.creature.drake.green", types, BodyTemplate.TYPE_DRAGON, (short) 10, (byte) 0, (short) 350, (short) 100, (short) 60,
|
||||
"sound.death.dragon", "sound.death.dragon", "sound.combat.hit.dragon", "sound.combat.hit.dragon",
|
||||
Servers.localServer.PVPSERVER ? 0.7f : 0.4f, 20.0f, 23.0f, 0.0f, 0.0f, 0.0f, 1.7f, 1500,
|
||||
new int[]{ItemList.animalHide, ItemList.tail, ItemList.eye, ItemList.gland, ItemList.tooth}, 40, 70, Materials.MATERIAL_MEAT_DRAGON);
|
||||
|
||||
builder.skill(SkillList.BODY_STRENGTH, Servers.localServer.PVPSERVER ? 40f : 55f);
|
||||
builder.skill(SkillList.BODY_STAMINA, 50.0f);
|
||||
builder.skill(SkillList.BODY_CONTROL, 50.0f);
|
||||
builder.skill(SkillList.MIND_LOGICAL, 50.0f);
|
||||
builder.skill(SkillList.MIND_SPEED, 50.0f);
|
||||
builder.skill(SkillList.SOUL_STRENGTH, 50.0f);
|
||||
builder.skill(SkillList.SOUL_DEPTH, 50.0f);
|
||||
builder.skill(SkillList.WEAPONLESS_FIGHTING, 70.0f);
|
||||
builder.skill(SkillList.GROUP_FIGHTING, 70.0f);
|
||||
|
||||
builder.boundsValues(-0.5f, -1.0f, 0.5f, 1.42f);
|
||||
builder.handDamString("bite");
|
||||
builder.kickDamString("wingbuff");
|
||||
builder.maxAge(200);
|
||||
builder.armourType(Servers.localServer.PVPSERVER ? ArmourTypes.ARMOUR_CLOTH : ArmourTypes.ARMOUR_SCALE_DRAGON);
|
||||
builder.baseCombatRating(27.0f);
|
||||
builder.combatDamageType(Wound.TYPE_ACID);
|
||||
builder.maxGroupAttackSize(10);
|
||||
|
||||
templateId = builder.getTemplateId();
|
||||
return builder;
|
||||
}
|
||||
|
||||
public ModVehicleBehaviour getVehicleBehaviour() {
|
||||
|
||||
return new ModVehicleBehaviour() {
|
||||
|
||||
@Override
|
||||
public void setSettingsForVehicle(Item item, Vehicle vehicle) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setSettingsForVehicle(Creature creature, Vehicle v) {
|
||||
VehicleFacade vehicle = wrap(v);
|
||||
|
||||
vehicle.createPassengerSeats(0);
|
||||
vehicle.setSeatFightMod(0, 0.9f, 1.2f);
|
||||
vehicle.setSeatOffset(0, 0.2f, 0.0f, 0.0f);
|
||||
vehicle.setCanHaveEquipment(true);
|
||||
vehicle.setCreature(true);
|
||||
vehicle.setSkillNeeded(Servers.localServer.PVPSERVER ? 31f : 33f);
|
||||
vehicle.setName(creature.getName());
|
||||
vehicle.setMaxHeightDiff(0.18f);
|
||||
vehicle.setMaxDepth(-10f);
|
||||
vehicle.setMaxSpeed(52.0f);
|
||||
vehicle.setCommandType((byte) 3);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addEncounters() {
|
||||
if (templateId == 0)
|
||||
return;
|
||||
|
||||
new EncounterBuilder(Tiles.Tile.TILE_GRASS.id)
|
||||
.addCreatures(templateId, 1)
|
||||
.build(1);
|
||||
|
||||
new EncounterBuilder(Tiles.Tile.TILE_TREE.id)
|
||||
.addCreatures(templateId, 1)
|
||||
.build(1);
|
||||
}
|
||||
}
|
||||
110
src/main/java/mod/sin/creatures/WyvernRed.java
Normal file
110
src/main/java/mod/sin/creatures/WyvernRed.java
Normal file
@@ -0,0 +1,110 @@
|
||||
package mod.sin.creatures;
|
||||
|
||||
import org.gotti.wurmunlimited.modsupport.CreatureTemplateBuilder;
|
||||
import org.gotti.wurmunlimited.modsupport.creatures.EncounterBuilder;
|
||||
import org.gotti.wurmunlimited.modsupport.creatures.ModCreature;
|
||||
import org.gotti.wurmunlimited.modsupport.vehicles.ModVehicleBehaviour;
|
||||
import org.gotti.wurmunlimited.modsupport.vehicles.VehicleFacade;
|
||||
|
||||
import com.wurmonline.mesh.Tiles;
|
||||
import com.wurmonline.server.Servers;
|
||||
import com.wurmonline.server.behaviours.Vehicle;
|
||||
import com.wurmonline.server.bodys.BodyTemplate;
|
||||
import com.wurmonline.server.bodys.Wound;
|
||||
import com.wurmonline.server.combat.ArmourTypes;
|
||||
import com.wurmonline.server.creatures.Creature;
|
||||
import com.wurmonline.server.creatures.CreatureTypes;
|
||||
import com.wurmonline.server.items.Item;
|
||||
import com.wurmonline.server.items.ItemList;
|
||||
import com.wurmonline.server.items.Materials;
|
||||
import com.wurmonline.server.skills.SkillList;
|
||||
|
||||
public class WyvernRed implements ModCreature, CreatureTypes {
|
||||
public static int templateId;
|
||||
@Override
|
||||
public CreatureTemplateBuilder createCreateTemplateBuilder() {
|
||||
// {C_TYPE_MOVE_LOCAL, C_TYPE_VEHICLE, C_TYPE_ANIMAL, C_TYPE_LEADABLE, C_TYPE_GRAZER, C_TYPE_OMNIVORE, C_TYPE_DOMINATABLE, C_TYPE_AGG_HUMAN, C_TYPE_NON_NEWBIE, C_TYPE_BURNING}; - Hell Horse
|
||||
int[] types = {
|
||||
CreatureTypes.C_TYPE_CARNIVORE,
|
||||
CreatureTypes.C_TYPE_MOVE_GLOBAL,
|
||||
CreatureTypes.C_TYPE_VEHICLE,
|
||||
CreatureTypes.C_TYPE_REGENERATING,
|
||||
CreatureTypes.C_TYPE_AGG_HUMAN,
|
||||
CreatureTypes.C_TYPE_SWIMMING,
|
||||
CreatureTypes.C_TYPE_HUNTING,
|
||||
CreatureTypes.C_TYPE_DOMINATABLE,
|
||||
CreatureTypes.C_TYPE_MONSTER,
|
||||
CreatureTypes.C_TYPE_NON_NEWBIE
|
||||
};
|
||||
|
||||
//public CreatureTemplateBuilder(final String identifier, final String name, final String description,
|
||||
// final String modelName, final int[] types, final byte bodyType, final short vision, final byte sex, final short centimetersHigh, final short centimetersLong, final short centimetersWide,
|
||||
// final String deathSndMale, final String deathSndFemale, final String hitSndMale, final String hitSndFemale,
|
||||
// final float naturalArmour, final float handDam, final float kickDam, final float biteDam, final float headDam, final float breathDam, final float speed, final int moveRate,
|
||||
// final int[] itemsButchered, final int maxHuntDist, final int aggress) {
|
||||
CreatureTemplateBuilder builder = new CreatureTemplateBuilder("mod.creature.wyvern.red", "Red wyvern", "A battle-hardened wyvern with scales as red as fire.",
|
||||
"model.creature.drake.red", types, BodyTemplate.TYPE_DRAGON, (short) 10, (byte) 0, (short) 350, (short) 100, (short) 60,
|
||||
"sound.death.dragon", "sound.death.dragon", "sound.combat.hit.dragon", "sound.combat.hit.dragon",
|
||||
Servers.localServer.PVPSERVER ? 0.6f : 0.17f, 22.0f, 25.0f, 0.0f, 0.0f, 0.0f, 1.4f, 900,
|
||||
new int[]{ItemList.animalHide, ItemList.tail, ItemList.eye, ItemList.gland, ItemList.tooth}, 40, 70, Materials.MATERIAL_MEAT_DRAGON);
|
||||
|
||||
builder.skill(SkillList.BODY_STRENGTH, Servers.localServer.PVPSERVER ? 37f : 52f);
|
||||
builder.skill(SkillList.BODY_STAMINA, 50.0f);
|
||||
builder.skill(SkillList.BODY_CONTROL, 50.0f);
|
||||
builder.skill(SkillList.MIND_LOGICAL, 50.0f);
|
||||
builder.skill(SkillList.MIND_SPEED, 50.0f);
|
||||
builder.skill(SkillList.SOUL_STRENGTH, 50.0f);
|
||||
builder.skill(SkillList.SOUL_DEPTH, 50.0f);
|
||||
builder.skill(SkillList.WEAPONLESS_FIGHTING, 75.0f);
|
||||
builder.skill(SkillList.GROUP_FIGHTING, 75.0f);
|
||||
|
||||
builder.boundsValues(-0.5f, -1.0f, 0.5f, 1.42f);
|
||||
builder.handDamString("bite");
|
||||
builder.kickDamString("wingbuff");
|
||||
builder.maxAge(200);
|
||||
builder.armourType(Servers.localServer.PVPSERVER ? ArmourTypes.ARMOUR_LEATHER : ArmourTypes.ARMOUR_SCALE_DRAGON);
|
||||
builder.baseCombatRating(30.0f);
|
||||
builder.combatDamageType(Wound.TYPE_BURN);
|
||||
builder.maxGroupAttackSize(10);
|
||||
|
||||
templateId = builder.getTemplateId();
|
||||
return builder;
|
||||
}
|
||||
|
||||
public ModVehicleBehaviour getVehicleBehaviour() {
|
||||
|
||||
return new ModVehicleBehaviour() {
|
||||
|
||||
@Override
|
||||
public void setSettingsForVehicle(Item item, Vehicle vehicle) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setSettingsForVehicle(Creature creature, Vehicle v) {
|
||||
VehicleFacade vehicle = wrap(v);
|
||||
|
||||
vehicle.createPassengerSeats(0);
|
||||
vehicle.setSeatFightMod(0, 0.8f, 1.1f);
|
||||
vehicle.setSeatOffset(0, 0.2f, 0.0f, 0.0f);
|
||||
vehicle.setCreature(true);
|
||||
vehicle.setSkillNeeded(Servers.localServer.PVPSERVER ? 35 : 43f);
|
||||
vehicle.setName(creature.getName());
|
||||
vehicle.setMaxHeightDiff(Servers.localServer.PVPSERVER ? 0.15f : 0.10f);
|
||||
vehicle.setMaxDepth(-50f);
|
||||
vehicle.setMaxSpeed(50.0f);
|
||||
vehicle.setCommandType((byte) 3);
|
||||
vehicle.setCanHaveEquipment(true);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addEncounters() {
|
||||
if (templateId == 0)
|
||||
return;
|
||||
|
||||
new EncounterBuilder(Tiles.Tile.TILE_ROCK.id)
|
||||
.addCreatures(templateId, 1)
|
||||
.build(1);
|
||||
}
|
||||
}
|
||||
117
src/main/java/mod/sin/creatures/WyvernWhite.java
Normal file
117
src/main/java/mod/sin/creatures/WyvernWhite.java
Normal file
@@ -0,0 +1,117 @@
|
||||
package mod.sin.creatures;
|
||||
|
||||
import org.gotti.wurmunlimited.modsupport.CreatureTemplateBuilder;
|
||||
import org.gotti.wurmunlimited.modsupport.creatures.EncounterBuilder;
|
||||
import org.gotti.wurmunlimited.modsupport.creatures.ModCreature;
|
||||
import org.gotti.wurmunlimited.modsupport.vehicles.ModVehicleBehaviour;
|
||||
import org.gotti.wurmunlimited.modsupport.vehicles.VehicleFacade;
|
||||
|
||||
import com.wurmonline.mesh.Tiles;
|
||||
import com.wurmonline.server.Servers;
|
||||
import com.wurmonline.server.behaviours.Vehicle;
|
||||
import com.wurmonline.server.bodys.BodyTemplate;
|
||||
import com.wurmonline.server.bodys.Wound;
|
||||
import com.wurmonline.server.combat.ArmourTypes;
|
||||
import com.wurmonline.server.creatures.Creature;
|
||||
import com.wurmonline.server.creatures.CreatureTypes;
|
||||
import com.wurmonline.server.items.Item;
|
||||
import com.wurmonline.server.items.ItemList;
|
||||
import com.wurmonline.server.items.Materials;
|
||||
import com.wurmonline.server.skills.SkillList;
|
||||
|
||||
public class WyvernWhite implements ModCreature, CreatureTypes {
|
||||
public static int templateId;
|
||||
@Override
|
||||
public CreatureTemplateBuilder createCreateTemplateBuilder() {
|
||||
// {C_TYPE_MOVE_LOCAL, C_TYPE_VEHICLE, C_TYPE_ANIMAL, C_TYPE_LEADABLE, C_TYPE_GRAZER, C_TYPE_OMNIVORE, C_TYPE_DOMINATABLE, C_TYPE_AGG_HUMAN, C_TYPE_NON_NEWBIE, C_TYPE_BURNING}; - Hell Horse
|
||||
int[] types = {
|
||||
CreatureTypes.C_TYPE_CARNIVORE,
|
||||
CreatureTypes.C_TYPE_MOVE_GLOBAL,
|
||||
CreatureTypes.C_TYPE_VEHICLE,
|
||||
CreatureTypes.C_TYPE_REGENERATING,
|
||||
CreatureTypes.C_TYPE_AGG_HUMAN,
|
||||
CreatureTypes.C_TYPE_SWIMMING,
|
||||
CreatureTypes.C_TYPE_HUNTING,
|
||||
CreatureTypes.C_TYPE_DOMINATABLE,
|
||||
CreatureTypes.C_TYPE_MONSTER,
|
||||
CreatureTypes.C_TYPE_NON_NEWBIE,
|
||||
CreatureTypes.C_TYPE_ANIMAL
|
||||
};
|
||||
|
||||
//public CreatureTemplateBuilder(final String identifier, final String name, final String description,
|
||||
// final String modelName, final int[] types, final byte bodyType, final short vision, final byte sex, final short centimetersHigh, final short centimetersLong, final short centimetersWide,
|
||||
// final String deathSndMale, final String deathSndFemale, final String hitSndMale, final String hitSndFemale,
|
||||
// final float naturalArmour, final float handDam, final float kickDam, final float biteDam, final float headDam, final float breathDam, final float speed, final int moveRate,
|
||||
// final int[] itemsButchered, final int maxHuntDist, final int aggress) {
|
||||
CreatureTemplateBuilder builder = new CreatureTemplateBuilder("mod.creature.wyvern.white", "White wyvern", "A battle-hardened wyvern with scales as white as the moon.",
|
||||
"model.creature.drake.white", types, BodyTemplate.TYPE_DRAGON, (short) 10, (byte) 0, (short) 350, (short) 100, (short) 60,
|
||||
"sound.death.dragon", "sound.death.dragon", "sound.combat.hit.dragon", "sound.combat.hit.dragon",
|
||||
Servers.localServer.PVPSERVER ? 0.7f : 0.3f, 17.0f, 20.0f, 0.0f, 0.0f, 0.0f, 1.4f, 900,
|
||||
new int[]{ItemList.animalHide, ItemList.tail, ItemList.eye, ItemList.gland, ItemList.tooth}, 40, 70, Materials.MATERIAL_MEAT_DRAGON);
|
||||
|
||||
builder.skill(SkillList.BODY_STRENGTH, Servers.localServer.PVPSERVER ? 43f : 58f);
|
||||
builder.skill(SkillList.BODY_STAMINA, 50.0f);
|
||||
builder.skill(SkillList.BODY_CONTROL, 50.0f);
|
||||
builder.skill(SkillList.MIND_LOGICAL, 50.0f);
|
||||
builder.skill(SkillList.MIND_SPEED, 50.0f);
|
||||
builder.skill(SkillList.SOUL_STRENGTH, 50.0f);
|
||||
builder.skill(SkillList.SOUL_DEPTH, 50.0f);
|
||||
builder.skill(SkillList.WEAPONLESS_FIGHTING, 70.0f);
|
||||
builder.skill(SkillList.GROUP_FIGHTING, 70.0f);
|
||||
|
||||
builder.boundsValues(-0.5f, -1.0f, 0.5f, 1.42f);
|
||||
builder.handDamString("bite");
|
||||
builder.kickDamString("wingbuff");
|
||||
builder.maxAge(200);
|
||||
builder.armourType(Servers.localServer.PVPSERVER ? ArmourTypes.ARMOUR_CLOTH : ArmourTypes.ARMOUR_SCALE_DRAGON);
|
||||
builder.baseCombatRating(25.0f);
|
||||
builder.combatDamageType(Wound.TYPE_COLD);
|
||||
builder.maxGroupAttackSize(10);
|
||||
|
||||
templateId = builder.getTemplateId();
|
||||
return builder;
|
||||
}
|
||||
|
||||
public ModVehicleBehaviour getVehicleBehaviour() {
|
||||
|
||||
return new ModVehicleBehaviour() {
|
||||
|
||||
@Override
|
||||
public void setSettingsForVehicle(Item item, Vehicle vehicle) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setSettingsForVehicle(Creature creature, Vehicle v) {
|
||||
VehicleFacade vehicle = wrap(v);
|
||||
|
||||
vehicle.createPassengerSeats(0);
|
||||
vehicle.setSeatFightMod(0, 0.8f, 1.1f);
|
||||
vehicle.setSeatOffset(0, 0.2f, 0.0f, 0.0f);
|
||||
vehicle.setCreature(true);
|
||||
vehicle.setSkillNeeded(Servers.localServer.PVPSERVER ? 33f : 40f);
|
||||
vehicle.setName(creature.getName());
|
||||
vehicle.setMaxHeightDiff(Servers.localServer.PVPSERVER ? 0.15f : 0.10f);
|
||||
vehicle.setMaxDepth(-50f);
|
||||
vehicle.setMaxSpeed(53.0f);
|
||||
vehicle.setCommandType((byte) 3);
|
||||
vehicle.setCanHaveEquipment(true);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addEncounters() {
|
||||
if (templateId == 0)
|
||||
return;
|
||||
|
||||
new EncounterBuilder(Tiles.Tile.TILE_SNOW.id)
|
||||
.addCreatures(templateId, 1)
|
||||
.build(1);
|
||||
|
||||
if(Servers.localServer.PVPSERVER){
|
||||
new EncounterBuilder(Tiles.Tile.TILE_TUNDRA.id)
|
||||
.addCreatures(templateId, 1)
|
||||
.build(1);
|
||||
}
|
||||
}
|
||||
}
|
||||
70
src/main/java/mod/sin/creatures/titans/Ifrit.java
Normal file
70
src/main/java/mod/sin/creatures/titans/Ifrit.java
Normal file
@@ -0,0 +1,70 @@
|
||||
package mod.sin.creatures.titans;
|
||||
|
||||
import org.gotti.wurmunlimited.modsupport.CreatureTemplateBuilder;
|
||||
import org.gotti.wurmunlimited.modsupport.creatures.ModCreature;
|
||||
|
||||
import com.wurmonline.server.bodys.BodyTemplate;
|
||||
import com.wurmonline.server.bodys.Wound;
|
||||
import com.wurmonline.server.combat.ArmourTypes;
|
||||
import com.wurmonline.server.creatures.CreatureTypes;
|
||||
import com.wurmonline.server.items.Materials;
|
||||
import com.wurmonline.server.skills.SkillList;
|
||||
|
||||
public class Ifrit implements ModCreature, CreatureTypes {
|
||||
public static int templateId;
|
||||
@Override
|
||||
public CreatureTemplateBuilder createCreateTemplateBuilder() {
|
||||
int[] types = {
|
||||
CreatureTypes.C_TYPE_MOVE_LOCAL,
|
||||
CreatureTypes.C_TYPE_AGG_HUMAN,
|
||||
CreatureTypes.C_TYPE_CARNIVORE,
|
||||
CreatureTypes.C_TYPE_HUNTING,
|
||||
CreatureTypes.C_TYPE_NON_NEWBIE
|
||||
};
|
||||
|
||||
//public CreatureTemplateBuilder(final String identifier, final String name, final String description,
|
||||
// final String modelName, final int[] types, final byte bodyType, final short vision, final byte sex, final short centimetersHigh, final short centimetersLong, final short centimetersWide,
|
||||
// final String deathSndMale, final String deathSndFemale, final String hitSndMale, final String hitSndFemale,
|
||||
// final float naturalArmour, final float handDam, final float kickDam, final float biteDam, final float headDam, final float breathDam, final float speed, final int moveRate,
|
||||
// final int[] itemsButchered, final int maxHuntDist, final int aggress) {
|
||||
CreatureTemplateBuilder builder = new CreatureTemplateBuilder("mod.creature.raid.ifrit", "Ifrit", "A valiant warrior of the flame. You feel the presence of Magranon.",
|
||||
"model.creature.humanoid.giant.juggernaut", types, BodyTemplate.TYPE_HUMAN, (short) 5, (byte) 0, (short) 350, (short) 100, (short) 60,
|
||||
"sound.death.magranon.juggernaut", "sound.death.magranon.juggernaut", "sound.combat.hit.magranon.juggernaut", "sound.combat.hit.magranon.juggernaut",
|
||||
0.014f, 10.0f, 13.0f, 0.0f, 0.0f, 0.0f, 0.5f, 400,
|
||||
new int[]{}, 40, 100, Materials.MATERIAL_MEAT_HUMANOID);
|
||||
|
||||
builder.skill(SkillList.BODY_STRENGTH, 99.0f);
|
||||
builder.skill(SkillList.BODY_STAMINA, 99.0f);
|
||||
builder.skill(SkillList.BODY_CONTROL, 99.0f);
|
||||
builder.skill(SkillList.MIND_LOGICAL, 99.0f);
|
||||
builder.skill(SkillList.MIND_SPEED, 99.0f);
|
||||
builder.skill(SkillList.SOUL_STRENGTH, 99.0f);
|
||||
builder.skill(SkillList.SOUL_DEPTH, 99.0f);
|
||||
builder.skill(SkillList.WEAPONLESS_FIGHTING, 99.0f);
|
||||
builder.skill(SkillList.GROUP_FIGHTING, 99.0f);
|
||||
builder.skill(SkillList.SCYTHE, 99.0f);
|
||||
|
||||
builder.boundsValues(-0.5f, -1.0f, 0.5f, 1.42f);
|
||||
builder.handDamString("burn");
|
||||
builder.kickDamString("ignite");
|
||||
builder.maxAge(200);
|
||||
builder.armourType(ArmourTypes.ARMOUR_SCALE_DRAGON);
|
||||
builder.baseCombatRating(99.0f);
|
||||
builder.combatDamageType(Wound.TYPE_BURN);
|
||||
builder.maxGroupAttackSize(150);
|
||||
|
||||
//builder.usesNewAttacks(true);
|
||||
// float baseDamage, float criticalChance, float baseSpeed, int attackReach, int weightGroup, byte damageType, boolean usesWeapon, int rounds, float waitUntilNextAttack
|
||||
//builder.addPrimaryAttack(new AttackAction("slashe", AttackIdentifier.STRIKE, new AttackValues(70f, 0.05f, 5f, 3, 1, Wound.TYPE_SLASH, false, 1, 1.0f)));
|
||||
//builder.addPrimaryAttack(new AttackAction("eviscerate", AttackIdentifier.STRIKE, new AttackValues(100f, 0.5f, 30f, 3, 1, Wound.TYPE_INFECTION, false, 4, 5.0f)));
|
||||
//builder.addSecondaryAttack(new AttackAction("annihilate", AttackIdentifier.KICK, new AttackValues(200f, 0.3f, 60f, 2, 1, Wound.TYPE_ACID, false, 7, 8.0f)));
|
||||
|
||||
templateId = builder.getTemplateId();
|
||||
return builder;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addEncounters() {
|
||||
return;
|
||||
}
|
||||
}
|
||||
67
src/main/java/mod/sin/creatures/titans/IfritFiend.java
Normal file
67
src/main/java/mod/sin/creatures/titans/IfritFiend.java
Normal file
@@ -0,0 +1,67 @@
|
||||
package mod.sin.creatures.titans;
|
||||
|
||||
import org.gotti.wurmunlimited.modsupport.CreatureTemplateBuilder;
|
||||
import org.gotti.wurmunlimited.modsupport.creatures.ModCreature;
|
||||
import com.wurmonline.server.bodys.BodyTemplate;
|
||||
import com.wurmonline.server.bodys.Wound;
|
||||
import com.wurmonline.server.combat.ArmourTypes;
|
||||
import com.wurmonline.server.creatures.CreatureTypes;
|
||||
import com.wurmonline.server.items.Materials;
|
||||
import com.wurmonline.server.skills.SkillList;
|
||||
|
||||
public class IfritFiend implements ModCreature, CreatureTypes {
|
||||
public static int templateId;
|
||||
|
||||
@Override
|
||||
public CreatureTemplateBuilder createCreateTemplateBuilder() {
|
||||
// {C_TYPE_MOVE_LOCAL, C_TYPE_VEHICLE, C_TYPE_ANIMAL, C_TYPE_LEADABLE, C_TYPE_GRAZER, C_TYPE_OMNIVORE, C_TYPE_DOMINATABLE, C_TYPE_AGG_HUMAN, C_TYPE_NON_NEWBIE, C_TYPE_BURNING}; - Hell Horse
|
||||
// int[] types = new int[]{7, 6, 13, 3, 29, 39, 60, 61}; - Spider
|
||||
int[] types = {
|
||||
CreatureTypes.C_TYPE_MOVE_LOCAL,
|
||||
CreatureTypes.C_TYPE_AGG_HUMAN,
|
||||
CreatureTypes.C_TYPE_HUNTING,
|
||||
CreatureTypes.C_TYPE_CARNIVORE,
|
||||
CreatureTypes.C_TYPE_DETECTINVIS,
|
||||
CreatureTypes.C_TYPE_NON_NEWBIE
|
||||
};
|
||||
|
||||
//public CreatureTemplateBuilder(final String identifier, final String name, final String description,
|
||||
// final String modelName, final int[] types, final byte bodyType, final short vision, final byte sex, final short centimetersHigh, final short centimetersLong, final short centimetersWide,
|
||||
// final String deathSndMale, final String deathSndFemale, final String hitSndMale, final String hitSndFemale,
|
||||
// final float naturalArmour, final float handDam, final float kickDam, final float biteDam, final float headDam, final float breathDam, final float speed, final int moveRate,
|
||||
// final int[] itemsButchered, final int maxHuntDist, final int aggress) {
|
||||
CreatureTemplateBuilder builder = new CreatureTemplateBuilder("mod.creature.ifrit.fiend", "Fiend of Ifrit", "A champion of Ifrit.",
|
||||
"model.creature.humanoid.lavacreature", types, BodyTemplate.TYPE_HUMAN, (short) 30, (byte) 0, (short) 85, (short) 50, (short) 85,
|
||||
"sound.death.lizard", "sound.death.lizard", "sound.combat.hit.lizard", "sound.combat.hit.lizard",
|
||||
0.3f, 23f, 0f, 19f, 0.0f, 0.0f, 2.0f, 2000,
|
||||
new int[]{}, 15, 70, Materials.MATERIAL_MEAT_HUMANOID);
|
||||
|
||||
builder.skill(SkillList.BODY_STRENGTH, 55.0f);
|
||||
builder.skill(SkillList.BODY_STAMINA, 65.0f);
|
||||
builder.skill(SkillList.BODY_CONTROL, 60.0f);
|
||||
builder.skill(SkillList.MIND_LOGICAL, 50.0f);
|
||||
builder.skill(SkillList.MIND_SPEED, 50.0f);
|
||||
builder.skill(SkillList.SOUL_STRENGTH, 50.0f);
|
||||
builder.skill(SkillList.SOUL_DEPTH, 50.0f);
|
||||
builder.skill(SkillList.WEAPONLESS_FIGHTING, 50.0f);
|
||||
builder.skill(SkillList.GROUP_FIGHTING, 40.0f);
|
||||
|
||||
builder.boundsValues(-0.5f, -1.0f, 0.5f, 1.42f);
|
||||
builder.handDamString("burn");
|
||||
builder.maxAge(100);
|
||||
builder.armourType(ArmourTypes.ARMOUR_LEATHER_DRAGON);
|
||||
builder.baseCombatRating(25.0f);
|
||||
builder.combatDamageType(Wound.TYPE_BURN);
|
||||
builder.maxPercentOfCreatures(0.005f);
|
||||
builder.maxGroupAttackSize(100);
|
||||
|
||||
templateId = builder.getTemplateId();
|
||||
return builder;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addEncounters() {
|
||||
if (templateId == 0)
|
||||
return;
|
||||
}
|
||||
}
|
||||
67
src/main/java/mod/sin/creatures/titans/IfritSpider.java
Normal file
67
src/main/java/mod/sin/creatures/titans/IfritSpider.java
Normal file
@@ -0,0 +1,67 @@
|
||||
package mod.sin.creatures.titans;
|
||||
|
||||
import org.gotti.wurmunlimited.modsupport.CreatureTemplateBuilder;
|
||||
import org.gotti.wurmunlimited.modsupport.creatures.ModCreature;
|
||||
import com.wurmonline.server.bodys.BodyTemplate;
|
||||
import com.wurmonline.server.bodys.Wound;
|
||||
import com.wurmonline.server.combat.ArmourTypes;
|
||||
import com.wurmonline.server.creatures.CreatureTypes;
|
||||
import com.wurmonline.server.items.Materials;
|
||||
import com.wurmonline.server.skills.SkillList;
|
||||
|
||||
public class IfritSpider implements ModCreature, CreatureTypes {
|
||||
public static int templateId;
|
||||
|
||||
@Override
|
||||
public CreatureTemplateBuilder createCreateTemplateBuilder() {
|
||||
// {C_TYPE_MOVE_LOCAL, C_TYPE_VEHICLE, C_TYPE_ANIMAL, C_TYPE_LEADABLE, C_TYPE_GRAZER, C_TYPE_OMNIVORE, C_TYPE_DOMINATABLE, C_TYPE_AGG_HUMAN, C_TYPE_NON_NEWBIE, C_TYPE_BURNING}; - Hell Horse
|
||||
// int[] types = new int[]{7, 6, 13, 3, 29, 39, 60, 61}; - Spider
|
||||
int[] types = {
|
||||
CreatureTypes.C_TYPE_MOVE_LOCAL,
|
||||
CreatureTypes.C_TYPE_AGG_HUMAN,
|
||||
CreatureTypes.C_TYPE_HUNTING,
|
||||
CreatureTypes.C_TYPE_CARNIVORE,
|
||||
CreatureTypes.C_TYPE_DETECTINVIS,
|
||||
CreatureTypes.C_TYPE_NON_NEWBIE
|
||||
};
|
||||
|
||||
//public CreatureTemplateBuilder(final String identifier, final String name, final String description,
|
||||
// final String modelName, final int[] types, final byte bodyType, final short vision, final byte sex, final short centimetersHigh, final short centimetersLong, final short centimetersWide,
|
||||
// final String deathSndMale, final String deathSndFemale, final String hitSndMale, final String hitSndFemale,
|
||||
// final float naturalArmour, final float handDam, final float kickDam, final float biteDam, final float headDam, final float breathDam, final float speed, final int moveRate,
|
||||
// final int[] itemsButchered, final int maxHuntDist, final int aggress) {
|
||||
CreatureTemplateBuilder builder = new CreatureTemplateBuilder("mod.creature.ifrit.spider", "Servant of Ifrit", "A mindless minion of Ifrit.",
|
||||
"model.creature.multiped.spider.lava", types, BodyTemplate.TYPE_SPIDER, (short) 30, (byte) 0, (short) 85, (short) 50, (short) 85,
|
||||
"sound.death.spider", "sound.death.spider", "sound.combat.hit.spider", "sound.combat.hit.spider",
|
||||
0.5f, 15f, 0f, 13f, 0.0f, 0.0f, 1.7f, 1500,
|
||||
new int[]{}, 15, 70, Materials.MATERIAL_MEAT_INSECT);
|
||||
|
||||
builder.skill(SkillList.BODY_STRENGTH, 65.0f);
|
||||
builder.skill(SkillList.BODY_STAMINA, 65.0f);
|
||||
builder.skill(SkillList.BODY_CONTROL, 60.0f);
|
||||
builder.skill(SkillList.MIND_LOGICAL, 50.0f);
|
||||
builder.skill(SkillList.MIND_SPEED, 50.0f);
|
||||
builder.skill(SkillList.SOUL_STRENGTH, 50.0f);
|
||||
builder.skill(SkillList.SOUL_DEPTH, 50.0f);
|
||||
builder.skill(SkillList.WEAPONLESS_FIGHTING, 50.0f);
|
||||
builder.skill(SkillList.GROUP_FIGHTING, 40.0f);
|
||||
|
||||
builder.boundsValues(-0.5f, -1.0f, 0.5f, 1.42f);
|
||||
builder.handDamString("burn");
|
||||
builder.maxAge(100);
|
||||
builder.armourType(ArmourTypes.ARMOUR_CLOTH);
|
||||
builder.baseCombatRating(15.0f);
|
||||
builder.combatDamageType(Wound.TYPE_BURN);
|
||||
builder.maxPercentOfCreatures(0.005f);
|
||||
builder.maxGroupAttackSize(100);
|
||||
|
||||
templateId = builder.getTemplateId();
|
||||
return builder;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addEncounters() {
|
||||
if (templateId == 0)
|
||||
return;
|
||||
}
|
||||
}
|
||||
70
src/main/java/mod/sin/creatures/titans/Lilith.java
Normal file
70
src/main/java/mod/sin/creatures/titans/Lilith.java
Normal file
@@ -0,0 +1,70 @@
|
||||
package mod.sin.creatures.titans;
|
||||
|
||||
import org.gotti.wurmunlimited.modsupport.CreatureTemplateBuilder;
|
||||
import org.gotti.wurmunlimited.modsupport.creatures.ModCreature;
|
||||
|
||||
import com.wurmonline.server.bodys.BodyTemplate;
|
||||
import com.wurmonline.server.bodys.Wound;
|
||||
import com.wurmonline.server.combat.ArmourTypes;
|
||||
import com.wurmonline.server.creatures.CreatureTypes;
|
||||
import com.wurmonline.server.items.Materials;
|
||||
import com.wurmonline.server.skills.SkillList;
|
||||
|
||||
public class Lilith implements ModCreature, CreatureTypes {
|
||||
public static int templateId;
|
||||
@Override
|
||||
public CreatureTemplateBuilder createCreateTemplateBuilder() {
|
||||
int[] types = {
|
||||
CreatureTypes.C_TYPE_MOVE_LOCAL,
|
||||
CreatureTypes.C_TYPE_AGG_HUMAN,
|
||||
CreatureTypes.C_TYPE_CARNIVORE,
|
||||
CreatureTypes.C_TYPE_HUNTING,
|
||||
CreatureTypes.C_TYPE_NON_NEWBIE
|
||||
};
|
||||
|
||||
//public CreatureTemplateBuilder(final String identifier, final String name, final String description,
|
||||
// final String modelName, final int[] types, final byte bodyType, final short vision, final byte sex, final short centimetersHigh, final short centimetersLong, final short centimetersWide,
|
||||
// final String deathSndMale, final String deathSndFemale, final String hitSndMale, final String hitSndFemale,
|
||||
// final float naturalArmour, final float handDam, final float kickDam, final float biteDam, final float headDam, final float breathDam, final float speed, final int moveRate,
|
||||
// final int[] itemsButchered, final int maxHuntDist, final int aggress) {
|
||||
CreatureTemplateBuilder builder = new CreatureTemplateBuilder("mod.creature.raid.lilith", "Lilith", "A bold warrior corrupted by darkness. You feel the presence of Libila.",
|
||||
"model.creature.humanoid.giant.incarnation", types, BodyTemplate.TYPE_HUMAN, (short) 5, (byte) 1, (short) 350, (short) 100, (short) 60,
|
||||
"sound.death.libila.incarnation", "sound.death.libila.incarnation", "sound.combat.hit.libila.incarnation", "sound.combat.hit.libila.incarnation",
|
||||
0.015f, 8.0f, 11.0f, 0.0f, 0.0f, 0.0f, 0.5f, 400,
|
||||
new int[]{}, 40, 100, Materials.MATERIAL_MEAT_HUMANOID);
|
||||
|
||||
builder.skill(SkillList.BODY_STRENGTH, 99.0f);
|
||||
builder.skill(SkillList.BODY_STAMINA, 99.0f);
|
||||
builder.skill(SkillList.BODY_CONTROL, 99.0f);
|
||||
builder.skill(SkillList.MIND_LOGICAL, 99.0f);
|
||||
builder.skill(SkillList.MIND_SPEED, 99.0f);
|
||||
builder.skill(SkillList.SOUL_STRENGTH, 99.0f);
|
||||
builder.skill(SkillList.SOUL_DEPTH, 99.0f);
|
||||
builder.skill(SkillList.WEAPONLESS_FIGHTING, 99.0f);
|
||||
builder.skill(SkillList.GROUP_FIGHTING, 99.0f);
|
||||
builder.skill(SkillList.SCYTHE, 99.0f);
|
||||
|
||||
builder.boundsValues(-0.5f, -1.0f, 0.5f, 1.42f);
|
||||
builder.handDamString("slashe");
|
||||
builder.kickDamString("eviscerate");
|
||||
builder.maxAge(200);
|
||||
builder.armourType(ArmourTypes.ARMOUR_SCALE_DRAGON);
|
||||
builder.baseCombatRating(99.0f);
|
||||
builder.combatDamageType(Wound.TYPE_INFECTION);
|
||||
builder.maxGroupAttackSize(150);
|
||||
|
||||
//builder.usesNewAttacks(true);
|
||||
// float baseDamage, float criticalChance, float baseSpeed, int attackReach, int weightGroup, byte damageType, boolean usesWeapon, int rounds, float waitUntilNextAttack
|
||||
//builder.addPrimaryAttack(new AttackAction("slashe", AttackIdentifier.STRIKE, new AttackValues(70f, 0.05f, 5f, 3, 1, Wound.TYPE_SLASH, false, 1, 1.0f)));
|
||||
//builder.addPrimaryAttack(new AttackAction("eviscerate", AttackIdentifier.STRIKE, new AttackValues(100f, 0.5f, 30f, 3, 1, Wound.TYPE_INFECTION, false, 4, 5.0f)));
|
||||
//builder.addSecondaryAttack(new AttackAction("annihilate", AttackIdentifier.KICK, new AttackValues(200f, 0.3f, 60f, 2, 1, Wound.TYPE_ACID, false, 7, 8.0f)));
|
||||
|
||||
templateId = builder.getTemplateId();
|
||||
return builder;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addEncounters() {
|
||||
return;
|
||||
}
|
||||
}
|
||||
67
src/main/java/mod/sin/creatures/titans/LilithWraith.java
Normal file
67
src/main/java/mod/sin/creatures/titans/LilithWraith.java
Normal file
@@ -0,0 +1,67 @@
|
||||
package mod.sin.creatures.titans;
|
||||
|
||||
import org.gotti.wurmunlimited.modsupport.CreatureTemplateBuilder;
|
||||
import org.gotti.wurmunlimited.modsupport.creatures.ModCreature;
|
||||
import com.wurmonline.server.bodys.BodyTemplate;
|
||||
import com.wurmonline.server.bodys.Wound;
|
||||
import com.wurmonline.server.combat.ArmourTypes;
|
||||
import com.wurmonline.server.creatures.CreatureTypes;
|
||||
import com.wurmonline.server.items.Materials;
|
||||
import com.wurmonline.server.skills.SkillList;
|
||||
|
||||
public class LilithWraith implements ModCreature, CreatureTypes {
|
||||
public static int templateId;
|
||||
|
||||
@Override
|
||||
public CreatureTemplateBuilder createCreateTemplateBuilder() {
|
||||
// {C_TYPE_MOVE_LOCAL, C_TYPE_VEHICLE, C_TYPE_ANIMAL, C_TYPE_LEADABLE, C_TYPE_GRAZER, C_TYPE_OMNIVORE, C_TYPE_DOMINATABLE, C_TYPE_AGG_HUMAN, C_TYPE_NON_NEWBIE, C_TYPE_BURNING}; - Hell Horse
|
||||
// int[] types = new int[]{7, 6, 13, 3, 29, 39, 60, 61}; - Spider
|
||||
int[] types = {
|
||||
CreatureTypes.C_TYPE_MOVE_LOCAL,
|
||||
CreatureTypes.C_TYPE_AGG_HUMAN,
|
||||
CreatureTypes.C_TYPE_HUNTING,
|
||||
CreatureTypes.C_TYPE_CARNIVORE,
|
||||
CreatureTypes.C_TYPE_DETECTINVIS,
|
||||
CreatureTypes.C_TYPE_NON_NEWBIE
|
||||
};
|
||||
|
||||
//public CreatureTemplateBuilder(final String identifier, final String name, final String description,
|
||||
// final String modelName, final int[] types, final byte bodyType, final short vision, final byte sex, final short centimetersHigh, final short centimetersLong, final short centimetersWide,
|
||||
// final String deathSndMale, final String deathSndFemale, final String hitSndMale, final String hitSndFemale,
|
||||
// final float naturalArmour, final float handDam, final float kickDam, final float biteDam, final float headDam, final float breathDam, final float speed, final int moveRate,
|
||||
// final int[] itemsButchered, final int maxHuntDist, final int aggress) {
|
||||
CreatureTemplateBuilder builder = new CreatureTemplateBuilder("mod.creature.lilith.wraith", "Wraith of Lilith", "A champion of Lilith.",
|
||||
"model.creature.humanoid.human.spirit.wraith", types, BodyTemplate.TYPE_HUMAN, (short) 30, (byte) 0, (short) 85, (short) 50, (short) 85,
|
||||
"sound.death.spirit.male", "sound.death.spirit.female", "sound.combat.hit.spirit.male", "sound.combat.hit.spirit.female",
|
||||
0.3f, 23f, 0f, 19f, 0.0f, 0.0f, 2.0f, 2000,
|
||||
new int[]{}, 15, 70, Materials.MATERIAL_MEAT_HUMANOID);
|
||||
|
||||
builder.skill(SkillList.BODY_STRENGTH, 55.0f);
|
||||
builder.skill(SkillList.BODY_STAMINA, 65.0f);
|
||||
builder.skill(SkillList.BODY_CONTROL, 60.0f);
|
||||
builder.skill(SkillList.MIND_LOGICAL, 50.0f);
|
||||
builder.skill(SkillList.MIND_SPEED, 50.0f);
|
||||
builder.skill(SkillList.SOUL_STRENGTH, 50.0f);
|
||||
builder.skill(SkillList.SOUL_DEPTH, 50.0f);
|
||||
builder.skill(SkillList.WEAPONLESS_FIGHTING, 50.0f);
|
||||
builder.skill(SkillList.GROUP_FIGHTING, 40.0f);
|
||||
|
||||
builder.boundsValues(-0.5f, -1.0f, 0.5f, 1.42f);
|
||||
builder.handDamString("claw");
|
||||
builder.maxAge(100);
|
||||
builder.armourType(ArmourTypes.ARMOUR_LEATHER_DRAGON);
|
||||
builder.baseCombatRating(25.0f);
|
||||
builder.combatDamageType(Wound.TYPE_INFECTION);
|
||||
builder.maxPercentOfCreatures(0.005f);
|
||||
builder.maxGroupAttackSize(100);
|
||||
|
||||
templateId = builder.getTemplateId();
|
||||
return builder;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addEncounters() {
|
||||
if (templateId == 0)
|
||||
return;
|
||||
}
|
||||
}
|
||||
67
src/main/java/mod/sin/creatures/titans/LilithZombie.java
Normal file
67
src/main/java/mod/sin/creatures/titans/LilithZombie.java
Normal file
@@ -0,0 +1,67 @@
|
||||
package mod.sin.creatures.titans;
|
||||
|
||||
import org.gotti.wurmunlimited.modsupport.CreatureTemplateBuilder;
|
||||
import org.gotti.wurmunlimited.modsupport.creatures.ModCreature;
|
||||
import com.wurmonline.server.bodys.BodyTemplate;
|
||||
import com.wurmonline.server.bodys.Wound;
|
||||
import com.wurmonline.server.combat.ArmourTypes;
|
||||
import com.wurmonline.server.creatures.CreatureTypes;
|
||||
import com.wurmonline.server.items.Materials;
|
||||
import com.wurmonline.server.skills.SkillList;
|
||||
|
||||
public class LilithZombie implements ModCreature, CreatureTypes {
|
||||
public static int templateId;
|
||||
|
||||
@Override
|
||||
public CreatureTemplateBuilder createCreateTemplateBuilder() {
|
||||
// {C_TYPE_MOVE_LOCAL, C_TYPE_VEHICLE, C_TYPE_ANIMAL, C_TYPE_LEADABLE, C_TYPE_GRAZER, C_TYPE_OMNIVORE, C_TYPE_DOMINATABLE, C_TYPE_AGG_HUMAN, C_TYPE_NON_NEWBIE, C_TYPE_BURNING}; - Hell Horse
|
||||
// int[] types = new int[]{7, 6, 13, 3, 29, 39, 60, 61}; - Spider
|
||||
int[] types = {
|
||||
CreatureTypes.C_TYPE_MOVE_LOCAL,
|
||||
CreatureTypes.C_TYPE_AGG_HUMAN,
|
||||
CreatureTypes.C_TYPE_HUNTING,
|
||||
CreatureTypes.C_TYPE_CARNIVORE,
|
||||
CreatureTypes.C_TYPE_DETECTINVIS,
|
||||
CreatureTypes.C_TYPE_NON_NEWBIE
|
||||
};
|
||||
|
||||
//public CreatureTemplateBuilder(final String identifier, final String name, final String description,
|
||||
// final String modelName, final int[] types, final byte bodyType, final short vision, final byte sex, final short centimetersHigh, final short centimetersLong, final short centimetersWide,
|
||||
// final String deathSndMale, final String deathSndFemale, final String hitSndMale, final String hitSndFemale,
|
||||
// final float naturalArmour, final float handDam, final float kickDam, final float biteDam, final float headDam, final float breathDam, final float speed, final int moveRate,
|
||||
// final int[] itemsButchered, final int maxHuntDist, final int aggress) {
|
||||
CreatureTemplateBuilder builder = new CreatureTemplateBuilder("mod.creature.lilith.zombie", "Servant of Lilith", "A mindless minion of Lilith.",
|
||||
"model.creature.humanoid.human.player.zombie", types, BodyTemplate.TYPE_HUMAN, (short) 30, (byte) 0, (short) 85, (short) 50, (short) 85,
|
||||
"sound.death.zombie", "sound.death.zombie", "sound.combat.hit.zombie", "sound.combat.hit.zombie",
|
||||
0.5f, 15f, 0f, 13f, 0.0f, 0.0f, 1.7f, 1500,
|
||||
new int[]{}, 15, 70, Materials.MATERIAL_MEAT_HUMANOID);
|
||||
|
||||
builder.skill(SkillList.BODY_STRENGTH, 65.0f);
|
||||
builder.skill(SkillList.BODY_STAMINA, 65.0f);
|
||||
builder.skill(SkillList.BODY_CONTROL, 60.0f);
|
||||
builder.skill(SkillList.MIND_LOGICAL, 50.0f);
|
||||
builder.skill(SkillList.MIND_SPEED, 50.0f);
|
||||
builder.skill(SkillList.SOUL_STRENGTH, 50.0f);
|
||||
builder.skill(SkillList.SOUL_DEPTH, 50.0f);
|
||||
builder.skill(SkillList.WEAPONLESS_FIGHTING, 50.0f);
|
||||
builder.skill(SkillList.GROUP_FIGHTING, 40.0f);
|
||||
|
||||
builder.boundsValues(-0.5f, -1.0f, 0.5f, 1.42f);
|
||||
builder.handDamString("claw");
|
||||
builder.maxAge(100);
|
||||
builder.armourType(ArmourTypes.ARMOUR_CLOTH);
|
||||
builder.baseCombatRating(15.0f);
|
||||
builder.combatDamageType(Wound.TYPE_INFECTION);
|
||||
builder.maxPercentOfCreatures(0.005f);
|
||||
builder.maxGroupAttackSize(100);
|
||||
|
||||
templateId = builder.getTemplateId();
|
||||
return builder;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addEncounters() {
|
||||
if (templateId == 0)
|
||||
return;
|
||||
}
|
||||
}
|
||||
46
src/main/java/mod/sin/items/AffinityOrb.java
Normal file
46
src/main/java/mod/sin/items/AffinityOrb.java
Normal file
@@ -0,0 +1,46 @@
|
||||
package mod.sin.items;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
import org.gotti.wurmunlimited.modsupport.ItemTemplateBuilder;
|
||||
|
||||
import com.wurmonline.server.MiscConstants;
|
||||
import com.wurmonline.server.items.ItemTemplate;
|
||||
import com.wurmonline.server.items.ItemTypes;
|
||||
import com.wurmonline.server.items.Materials;
|
||||
|
||||
public class AffinityOrb implements ItemTypes, MiscConstants {
|
||||
public static Logger logger = Logger.getLogger(AffinityOrb.class.getName());
|
||||
public static int templateId;
|
||||
|
||||
public void createTemplate() throws IOException{
|
||||
String name = "affinity orb";
|
||||
ItemTemplateBuilder itemBuilder = new ItemTemplateBuilder("wyvern.affinityorb");
|
||||
itemBuilder.name(name, "affinity orbs", "A valuable orb that infuses the user with hidden knowledge.");
|
||||
itemBuilder.descriptions("brilliantly glowing", "strongly glowing", "faintly glowing", "barely glowing");
|
||||
itemBuilder.itemTypes(new short[]{
|
||||
ItemTypes.ITEM_TYPE_MAGIC,
|
||||
ItemTypes.ITEM_TYPE_FULLPRICE,
|
||||
ItemTypes.ITEM_TYPE_NOSELLBACK,
|
||||
ItemTypes.ITEM_TYPE_ALWAYS_BANKABLE
|
||||
});
|
||||
itemBuilder.imageNumber((short) 919);
|
||||
itemBuilder.behaviourType((short) 1);
|
||||
itemBuilder.combatDamage(0);
|
||||
itemBuilder.decayTime(Long.MAX_VALUE);
|
||||
itemBuilder.dimensions(1, 1, 1);
|
||||
itemBuilder.primarySkill((int) NOID);
|
||||
itemBuilder.bodySpaces(EMPTY_BYTE_PRIMITIVE_ARRAY);
|
||||
itemBuilder.modelName("model.artifact.orbdoom");
|
||||
itemBuilder.difficulty(5.0f);
|
||||
itemBuilder.weightGrams(500);
|
||||
itemBuilder.material(Materials.MATERIAL_CRYSTAL);
|
||||
itemBuilder.value(3000000);
|
||||
itemBuilder.isTraded(true);
|
||||
|
||||
ItemTemplate template = itemBuilder.build();
|
||||
templateId = template.getTemplateId();
|
||||
logger.info(name+" TemplateID: "+templateId);
|
||||
}
|
||||
}
|
||||
45
src/main/java/mod/sin/items/ArenaCache.java
Normal file
45
src/main/java/mod/sin/items/ArenaCache.java
Normal file
@@ -0,0 +1,45 @@
|
||||
package mod.sin.items;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
import org.gotti.wurmunlimited.modsupport.ItemTemplateBuilder;
|
||||
|
||||
import com.wurmonline.server.MiscConstants;
|
||||
import com.wurmonline.server.items.ItemTemplate;
|
||||
import com.wurmonline.server.items.ItemTypes;
|
||||
import com.wurmonline.server.items.Materials;
|
||||
|
||||
public class ArenaCache implements ItemTypes, MiscConstants {
|
||||
public static Logger logger = Logger.getLogger(ArenaCache.class.getName());
|
||||
public static int templateId;
|
||||
|
||||
public void createTemplate() throws IOException{
|
||||
String name = "arena cache";
|
||||
ItemTemplateBuilder itemBuilder = new ItemTemplateBuilder("mod.item.arenacache");
|
||||
itemBuilder.name(name, "arena caches", "A cache of goods from a supply depot, waiting to be opened. What could be inside?");
|
||||
itemBuilder.itemTypes(new short[]{
|
||||
ItemTypes.ITEM_TYPE_MAGIC,
|
||||
ItemTypes.ITEM_TYPE_FULLPRICE,
|
||||
ItemTypes.ITEM_TYPE_NOSELLBACK,
|
||||
ItemTypes.ITEM_TYPE_ALWAYS_BANKABLE
|
||||
});
|
||||
itemBuilder.imageNumber((short) 243);
|
||||
itemBuilder.behaviourType((short) 1);
|
||||
itemBuilder.combatDamage(0);
|
||||
itemBuilder.decayTime(Long.MAX_VALUE);
|
||||
itemBuilder.dimensions(1, 1, 1);
|
||||
itemBuilder.primarySkill((int) NOID);
|
||||
itemBuilder.bodySpaces(EMPTY_BYTE_PRIMITIVE_ARRAY);
|
||||
itemBuilder.modelName("model.container.giftbox.");
|
||||
itemBuilder.difficulty(5.0f);
|
||||
itemBuilder.weightGrams(500);
|
||||
itemBuilder.material(Materials.MATERIAL_GOLD);
|
||||
itemBuilder.value(10000);
|
||||
itemBuilder.isTraded(true);
|
||||
|
||||
ItemTemplate template = itemBuilder.build();
|
||||
templateId = template.getTemplateId();
|
||||
logger.info(name+" TemplateID: "+templateId);
|
||||
}
|
||||
}
|
||||
51
src/main/java/mod/sin/items/ArenaSupplyDepot.java
Normal file
51
src/main/java/mod/sin/items/ArenaSupplyDepot.java
Normal file
@@ -0,0 +1,51 @@
|
||||
package mod.sin.items;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
import org.gotti.wurmunlimited.modsupport.ItemTemplateBuilder;
|
||||
|
||||
import com.wurmonline.server.MiscConstants;
|
||||
import com.wurmonline.server.items.ItemTemplate;
|
||||
import com.wurmonline.server.items.ItemTypes;
|
||||
import com.wurmonline.server.items.Materials;
|
||||
|
||||
public class ArenaSupplyDepot implements MiscConstants {
|
||||
public static Logger logger = Logger.getLogger(ArenaSupplyDepot.class.getName());
|
||||
public static int templateId;
|
||||
|
||||
public void createTemplate() throws IOException{
|
||||
String name = "arena depot";
|
||||
ItemTemplateBuilder itemBuilder = new ItemTemplateBuilder("mod.item.arena.depot");
|
||||
itemBuilder.name(name, "arena depots", "Contains a valuable cache of treasures.");
|
||||
// {108, 135, 1, 31, 25, 51, 86, 52, 59, 44, 147, 176, 180, 209, 199}
|
||||
itemBuilder.itemTypes(new short[]{
|
||||
ItemTypes.ITEM_TYPE_NAMED,
|
||||
ItemTypes.ITEM_TYPE_WOOD,
|
||||
ItemTypes.ITEM_TYPE_NOTAKE,
|
||||
ItemTypes.ITEM_TYPE_LOCKABLE,
|
||||
ItemTypes.ITEM_TYPE_DECORATION,
|
||||
ItemTypes.ITEM_TYPE_ONE_PER_TILE,
|
||||
ItemTypes.ITEM_TYPE_OWNER_TURNABLE,
|
||||
ItemTypes.ITEM_TYPE_REPAIRABLE,
|
||||
ItemTypes.ITEM_TYPE_MISSION,
|
||||
ItemTypes.ITEM_TYPE_PLANTABLE
|
||||
});
|
||||
itemBuilder.imageNumber((short) 462);
|
||||
itemBuilder.behaviourType((short) 1);
|
||||
itemBuilder.combatDamage(0);
|
||||
itemBuilder.decayTime(Long.MAX_VALUE);
|
||||
itemBuilder.dimensions(300, 300, 300);
|
||||
itemBuilder.primarySkill((int) NOID);
|
||||
itemBuilder.bodySpaces(EMPTY_BYTE_PRIMITIVE_ARRAY);
|
||||
itemBuilder.modelName("model.structure.war.supplydepot.2.0.");
|
||||
itemBuilder.difficulty(5.0f);
|
||||
itemBuilder.weightGrams(50000);
|
||||
itemBuilder.material(Materials.MATERIAL_WOOD_BIRCH);
|
||||
itemBuilder.value(5000);
|
||||
|
||||
ItemTemplate template = itemBuilder.build();
|
||||
templateId = template.getTemplateId();
|
||||
logger.info(name+" TemplateID: "+templateId);
|
||||
}
|
||||
}
|
||||
62
src/main/java/mod/sin/items/ArrowPackHunting.java
Normal file
62
src/main/java/mod/sin/items/ArrowPackHunting.java
Normal file
@@ -0,0 +1,62 @@
|
||||
package mod.sin.items;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
import org.gotti.wurmunlimited.modsupport.ItemTemplateBuilder;
|
||||
|
||||
import com.wurmonline.server.MiscConstants;
|
||||
import com.wurmonline.server.items.AdvancedCreationEntry;
|
||||
import com.wurmonline.server.items.CreationCategories;
|
||||
import com.wurmonline.server.items.CreationEntryCreator;
|
||||
import com.wurmonline.server.items.CreationRequirement;
|
||||
import com.wurmonline.server.items.ItemList;
|
||||
import com.wurmonline.server.items.ItemTemplate;
|
||||
import com.wurmonline.server.items.ItemTypes;
|
||||
import com.wurmonline.server.items.Materials;
|
||||
import com.wurmonline.server.skills.SkillList;
|
||||
|
||||
public class ArrowPackHunting {
|
||||
public static Logger logger = Logger.getLogger(ArrowPackHunting.class.getName());
|
||||
public static int templateId;
|
||||
|
||||
public void createTemplate() throws IOException{
|
||||
String name = "hunting arrow pack";
|
||||
ItemTemplateBuilder itemBuilder = new ItemTemplateBuilder("mod.item.arrowpack.hunting");
|
||||
itemBuilder.name(name, "hunting arrow packs", "A pack of arrows, able to be unpacked into a full quiver.");
|
||||
itemBuilder.descriptions("excellent", "good", "ok", "poor");
|
||||
itemBuilder.itemTypes(new short[]{ // {108, 146, 44, 21, 147, 113} - War Arrow
|
||||
ItemTypes.ITEM_TYPE_NAMED,
|
||||
ItemTypes.ITEM_TYPE_REPAIRABLE,
|
||||
ItemTypes.ITEM_TYPE_WOOD
|
||||
});
|
||||
itemBuilder.imageNumber((short) 760);
|
||||
itemBuilder.behaviourType((short) 1);
|
||||
itemBuilder.combatDamage(0);
|
||||
itemBuilder.decayTime(Long.MAX_VALUE);
|
||||
itemBuilder.dimensions(15, 15, 50);
|
||||
itemBuilder.primarySkill(-10);
|
||||
itemBuilder.bodySpaces(MiscConstants.EMPTY_BYTE_PRIMITIVE_ARRAY);
|
||||
itemBuilder.modelName("model.container.quiver.");
|
||||
itemBuilder.difficulty(55.0f);
|
||||
itemBuilder.weightGrams(2500);
|
||||
itemBuilder.material(Materials.MATERIAL_WOOD_BIRCH);
|
||||
itemBuilder.value(1000);
|
||||
itemBuilder.isTraded(true);
|
||||
|
||||
ItemTemplate template = itemBuilder.build();
|
||||
templateId = template.getTemplateId();
|
||||
logger.info(name+" TemplateID: "+templateId);
|
||||
}
|
||||
|
||||
public void initCreationEntry(){
|
||||
logger.info("initCreationEntry()");
|
||||
if(templateId > 0){
|
||||
AdvancedCreationEntry huntingPack = CreationEntryCreator.createAdvancedEntry(SkillList.GROUP_FLETCHING,
|
||||
ItemList.quiver, ItemList.arrowHunting, templateId,
|
||||
false, false, 0.0F, true, false, 0, 50.0D, CreationCategories.FLETCHING);
|
||||
|
||||
huntingPack.addRequirement(new CreationRequirement(1, ItemList.arrowHunting, 39, true));
|
||||
}
|
||||
}
|
||||
}
|
||||
62
src/main/java/mod/sin/items/ArrowPackWar.java
Normal file
62
src/main/java/mod/sin/items/ArrowPackWar.java
Normal file
@@ -0,0 +1,62 @@
|
||||
package mod.sin.items;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
import org.gotti.wurmunlimited.modsupport.ItemTemplateBuilder;
|
||||
|
||||
import com.wurmonline.server.MiscConstants;
|
||||
import com.wurmonline.server.items.AdvancedCreationEntry;
|
||||
import com.wurmonline.server.items.CreationCategories;
|
||||
import com.wurmonline.server.items.CreationEntryCreator;
|
||||
import com.wurmonline.server.items.CreationRequirement;
|
||||
import com.wurmonline.server.items.ItemList;
|
||||
import com.wurmonline.server.items.ItemTemplate;
|
||||
import com.wurmonline.server.items.ItemTypes;
|
||||
import com.wurmonline.server.items.Materials;
|
||||
import com.wurmonline.server.skills.SkillList;
|
||||
|
||||
public class ArrowPackWar {
|
||||
public static Logger logger = Logger.getLogger(ArrowPackWar.class.getName());
|
||||
public static int templateId;
|
||||
|
||||
public void createTemplate() throws IOException{
|
||||
String name = "war arrow pack";
|
||||
ItemTemplateBuilder itemBuilder = new ItemTemplateBuilder("mod.item.arrowpack.war");
|
||||
itemBuilder.name(name, "war arrow packs", "A pack of arrows, able to be unpacked into a full quiver.");
|
||||
itemBuilder.descriptions("excellent", "good", "ok", "poor");
|
||||
itemBuilder.itemTypes(new short[]{ // {108, 146, 44, 21, 147, 113} - War Arrow
|
||||
ItemTypes.ITEM_TYPE_NAMED,
|
||||
ItemTypes.ITEM_TYPE_REPAIRABLE,
|
||||
ItemTypes.ITEM_TYPE_WOOD
|
||||
});
|
||||
itemBuilder.imageNumber((short) 760);
|
||||
itemBuilder.behaviourType((short) 1);
|
||||
itemBuilder.combatDamage(0);
|
||||
itemBuilder.decayTime(Long.MAX_VALUE);
|
||||
itemBuilder.dimensions(15, 15, 50);
|
||||
itemBuilder.primarySkill(-10);
|
||||
itemBuilder.bodySpaces(MiscConstants.EMPTY_BYTE_PRIMITIVE_ARRAY);
|
||||
itemBuilder.modelName("model.container.quiver.");
|
||||
itemBuilder.difficulty(55.0f);
|
||||
itemBuilder.weightGrams(2500);
|
||||
itemBuilder.material(Materials.MATERIAL_WOOD_BIRCH);
|
||||
itemBuilder.value(1000);
|
||||
itemBuilder.isTraded(true);
|
||||
|
||||
ItemTemplate template = itemBuilder.build();
|
||||
templateId = template.getTemplateId();
|
||||
logger.info(name+" TemplateID: "+templateId);
|
||||
}
|
||||
|
||||
public void initCreationEntry(){
|
||||
logger.info("initCreationEntry()");
|
||||
if(templateId > 0){
|
||||
AdvancedCreationEntry huntingPack = CreationEntryCreator.createAdvancedEntry(SkillList.GROUP_FLETCHING,
|
||||
ItemList.quiver, ItemList.arrowWar, templateId,
|
||||
false, false, 0.0F, true, false, 0, 50.0D, CreationCategories.FLETCHING);
|
||||
|
||||
huntingPack.addRequirement(new CreationRequirement(1, ItemList.arrowWar, 39, true));
|
||||
}
|
||||
}
|
||||
}
|
||||
52
src/main/java/mod/sin/items/ChaosCrystal.java
Normal file
52
src/main/java/mod/sin/items/ChaosCrystal.java
Normal file
@@ -0,0 +1,52 @@
|
||||
package mod.sin.items;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
import org.gotti.wurmunlimited.modsupport.ItemTemplateBuilder;
|
||||
|
||||
import com.wurmonline.server.MiscConstants;
|
||||
import com.wurmonline.server.items.ItemTemplate;
|
||||
import com.wurmonline.server.items.ItemTypes;
|
||||
import com.wurmonline.server.items.Materials;
|
||||
|
||||
public class ChaosCrystal implements ItemTypes, MiscConstants {
|
||||
public static Logger logger = Logger.getLogger(ChaosCrystal.class.getName());
|
||||
public static int templateId;
|
||||
|
||||
public void createTemplate() throws IOException{
|
||||
/* ItemTemplateCreatorContinued.createItemTemplate(737, "Valrei mission item", "items", "excellent", "good", "ok", "poor",
|
||||
* "A weird item belonging on Valrei.",
|
||||
* new short[]{32, 59, 147, 60},
|
||||
* 462, 1, 0, 86400, 3, 5, 50, -10, MiscConstants.EMPTY_BYTE_PRIMITIVE_ARRAY,
|
||||
* "model.valrei.", 300.0f, 100, 21, 1, false);
|
||||
*/
|
||||
String name = "chaos crystal";
|
||||
ItemTemplateBuilder itemBuilder = new ItemTemplateBuilder("mod.chaoscrystal");
|
||||
itemBuilder.name(name, "chaos crystals", "This volatile crystal will either enhance an item, or destroy it outright.");
|
||||
itemBuilder.descriptions("brilliantly glowing", "strongly glowing", "faintly glowing", "barely glowing");
|
||||
itemBuilder.itemTypes(new short[]{
|
||||
ItemTypes.ITEM_TYPE_MAGIC,
|
||||
ItemTypes.ITEM_TYPE_FULLPRICE,
|
||||
ItemTypes.ITEM_TYPE_NOSELLBACK,
|
||||
ItemTypes.ITEM_TYPE_ALWAYS_BANKABLE
|
||||
});
|
||||
itemBuilder.imageNumber((short) 462);
|
||||
itemBuilder.behaviourType((short) 1);
|
||||
itemBuilder.combatDamage(0);
|
||||
itemBuilder.decayTime(Long.MAX_VALUE);
|
||||
itemBuilder.dimensions(1, 1, 1);
|
||||
itemBuilder.primarySkill((int) NOID);
|
||||
itemBuilder.bodySpaces(EMPTY_BYTE_PRIMITIVE_ARRAY);
|
||||
itemBuilder.modelName("model.valrei.");
|
||||
itemBuilder.difficulty(5.0f);
|
||||
itemBuilder.weightGrams(250);
|
||||
itemBuilder.material(Materials.MATERIAL_CRYSTAL);
|
||||
itemBuilder.value(5000);
|
||||
itemBuilder.isTraded(true);
|
||||
|
||||
ItemTemplate template = itemBuilder.build();
|
||||
templateId = template.getTemplateId();
|
||||
logger.info(name+" TemplateID: "+templateId);
|
||||
}
|
||||
}
|
||||
65
src/main/java/mod/sin/items/CoinDecoration.java
Normal file
65
src/main/java/mod/sin/items/CoinDecoration.java
Normal file
@@ -0,0 +1,65 @@
|
||||
package mod.sin.items;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
import org.gotti.wurmunlimited.modsupport.ItemTemplateBuilder;
|
||||
|
||||
import com.wurmonline.server.MiscConstants;
|
||||
import com.wurmonline.server.items.AdvancedCreationEntry;
|
||||
import com.wurmonline.server.items.CreationCategories;
|
||||
import com.wurmonline.server.items.CreationEntryCreator;
|
||||
import com.wurmonline.server.items.CreationRequirement;
|
||||
import com.wurmonline.server.items.ItemList;
|
||||
import com.wurmonline.server.items.ItemTemplate;
|
||||
import com.wurmonline.server.items.ItemTypes;
|
||||
import com.wurmonline.server.items.Materials;
|
||||
import com.wurmonline.server.skills.SkillList;
|
||||
|
||||
public class CoinDecoration implements ItemTypes, MiscConstants {
|
||||
public static Logger logger = Logger.getLogger(CoinDecoration.class.getName());
|
||||
public static int templateId;
|
||||
private String name = "coin pile";
|
||||
public void createTemplate() throws IOException{
|
||||
ItemTemplateBuilder itemBuilder = new ItemTemplateBuilder("mod.item.coin.pile");
|
||||
itemBuilder.name(name, "coin piles", "A pile of decorative coins.");
|
||||
itemBuilder.itemTypes(new short[]{ // {108, 21, 135, 86, 31, 51, 52, 157, 44, 92, 176} - Table
|
||||
ItemTypes.ITEM_TYPE_NAMED,
|
||||
ItemTypes.ITEM_TYPE_OWNER_DESTROYABLE,
|
||||
ItemTypes.ITEM_TYPE_DESTROYABLE,
|
||||
ItemTypes.ITEM_TYPE_TURNABLE,
|
||||
ItemTypes.ITEM_TYPE_DECORATION,
|
||||
ItemTypes.ITEM_TYPE_NOT_MISSION,
|
||||
ItemTypes.ITEM_TYPE_REPAIRABLE,
|
||||
ItemTypes.ITEM_TYPE_COLORABLE
|
||||
});
|
||||
itemBuilder.imageNumber((short) 572);
|
||||
itemBuilder.behaviourType((short) 1);
|
||||
itemBuilder.combatDamage(0);
|
||||
itemBuilder.decayTime(Long.MAX_VALUE);
|
||||
itemBuilder.dimensions(5, 5, 5);
|
||||
itemBuilder.primarySkill(SkillList.MISCELLANEOUS);
|
||||
itemBuilder.bodySpaces(EMPTY_BYTE_PRIMITIVE_ARRAY);
|
||||
itemBuilder.modelName("model.pile.coin.");
|
||||
itemBuilder.difficulty(70.0f);
|
||||
itemBuilder.weightGrams(1000);
|
||||
itemBuilder.material(Materials.MATERIAL_COPPER);
|
||||
itemBuilder.value(100);
|
||||
|
||||
ItemTemplate template = itemBuilder.build();
|
||||
templateId = template.getTemplateId();
|
||||
logger.info(name+" TemplateID: "+templateId);
|
||||
}
|
||||
|
||||
public void initCreationEntry(){
|
||||
logger.info("initCreationEntry()");
|
||||
if(templateId > 0){
|
||||
logger.info("Creating "+name+" creation entry, ID = "+templateId);
|
||||
final AdvancedCreationEntry entry = CreationEntryCreator.createAdvancedEntry(SkillList.MISCELLANEOUS,
|
||||
ItemList.coinCopper, ItemList.coinCopper, templateId, false, false, 0f, true, false, CreationCategories.DECORATION);
|
||||
entry.addRequirement(new CreationRequirement(1, ItemList.coinCopper, 3, true));
|
||||
}else{
|
||||
logger.info(name+" does not have a template ID on creation entry.");
|
||||
}
|
||||
}
|
||||
}
|
||||
65
src/main/java/mod/sin/items/CorpseDecoration.java
Normal file
65
src/main/java/mod/sin/items/CorpseDecoration.java
Normal file
@@ -0,0 +1,65 @@
|
||||
package mod.sin.items;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
import org.gotti.wurmunlimited.modsupport.ItemTemplateBuilder;
|
||||
|
||||
import com.wurmonline.server.MiscConstants;
|
||||
import com.wurmonline.server.items.AdvancedCreationEntry;
|
||||
import com.wurmonline.server.items.CreationCategories;
|
||||
import com.wurmonline.server.items.CreationEntryCreator;
|
||||
import com.wurmonline.server.items.CreationRequirement;
|
||||
import com.wurmonline.server.items.ItemList;
|
||||
import com.wurmonline.server.items.ItemTemplate;
|
||||
import com.wurmonline.server.items.ItemTypes;
|
||||
import com.wurmonline.server.items.Materials;
|
||||
import com.wurmonline.server.skills.SkillList;
|
||||
|
||||
public class CorpseDecoration implements ItemTypes, MiscConstants {
|
||||
public static Logger logger = Logger.getLogger(CorpseDecoration.class.getName());
|
||||
public static int templateId;
|
||||
private String name = "human corpse";
|
||||
public void createTemplate() throws IOException{
|
||||
ItemTemplateBuilder itemBuilder = new ItemTemplateBuilder("mod.item.corpse");
|
||||
itemBuilder.name(name, "human corpses", "A human corpse.");
|
||||
itemBuilder.itemTypes(new short[]{ // {108, 21, 135, 86, 31, 51, 52, 157, 44, 92, 176} - Table
|
||||
ItemTypes.ITEM_TYPE_NAMED,
|
||||
ItemTypes.ITEM_TYPE_OWNER_DESTROYABLE,
|
||||
ItemTypes.ITEM_TYPE_DESTROYABLE,
|
||||
ItemTypes.ITEM_TYPE_TURNABLE,
|
||||
ItemTypes.ITEM_TYPE_DECORATION,
|
||||
ItemTypes.ITEM_TYPE_NOT_MISSION,
|
||||
ItemTypes.ITEM_TYPE_REPAIRABLE,
|
||||
ItemTypes.ITEM_TYPE_COLORABLE
|
||||
});
|
||||
itemBuilder.imageNumber((short) 40);
|
||||
itemBuilder.behaviourType((short) 1);
|
||||
itemBuilder.combatDamage(0);
|
||||
itemBuilder.decayTime(Long.MAX_VALUE);
|
||||
itemBuilder.dimensions(20, 50, 200);
|
||||
itemBuilder.primarySkill(SkillList.LEATHERWORKING);
|
||||
itemBuilder.bodySpaces(EMPTY_BYTE_PRIMITIVE_ARRAY);
|
||||
itemBuilder.modelName("model.corpse.");
|
||||
itemBuilder.difficulty(50.0f);
|
||||
itemBuilder.weightGrams(50000);
|
||||
itemBuilder.material(Materials.MATERIAL_FLESH);
|
||||
itemBuilder.value(1000);
|
||||
|
||||
ItemTemplate template = itemBuilder.build();
|
||||
templateId = template.getTemplateId();
|
||||
logger.info(name+" TemplateID: "+templateId);
|
||||
}
|
||||
|
||||
public void initCreationEntry(){
|
||||
logger.info("initCreationEntry()");
|
||||
if(templateId > 0){
|
||||
logger.info("Creating "+name+" creation entry, ID = "+templateId);
|
||||
final AdvancedCreationEntry entry = CreationEntryCreator.createAdvancedEntry(SkillList.LEATHERWORKING,
|
||||
ItemList.leather, ItemList.leather, templateId, false, false, 0f, true, false, CreationCategories.DECORATION);
|
||||
entry.addRequirement(new CreationRequirement(1, ItemList.leather, 3, true));
|
||||
}else{
|
||||
logger.info(name+" does not have a template ID on creation entry.");
|
||||
}
|
||||
}
|
||||
}
|
||||
62
src/main/java/mod/sin/items/DepthDrill.java
Normal file
62
src/main/java/mod/sin/items/DepthDrill.java
Normal file
@@ -0,0 +1,62 @@
|
||||
package mod.sin.items;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
import org.gotti.wurmunlimited.modsupport.ItemTemplateBuilder;
|
||||
|
||||
import com.wurmonline.server.MiscConstants;
|
||||
import com.wurmonline.server.items.AdvancedCreationEntry;
|
||||
import com.wurmonline.server.items.CreationCategories;
|
||||
import com.wurmonline.server.items.CreationEntryCreator;
|
||||
import com.wurmonline.server.items.CreationRequirement;
|
||||
import com.wurmonline.server.items.ItemList;
|
||||
import com.wurmonline.server.items.ItemTemplate;
|
||||
import com.wurmonline.server.items.ItemTypes;
|
||||
import com.wurmonline.server.items.Materials;
|
||||
import com.wurmonline.server.skills.SkillList;
|
||||
|
||||
public class DepthDrill implements ItemTypes, MiscConstants {
|
||||
public static Logger logger = Logger.getLogger(DepthDrill.class.getName());
|
||||
public static int templateId;
|
||||
private String name = "depth drill";
|
||||
public void createTemplate() throws IOException{
|
||||
ItemTemplateBuilder itemBuilder = new ItemTemplateBuilder("wyvern.depthdrill");
|
||||
itemBuilder.name(name, "depth drills", "A tool for determining dirt depth.");
|
||||
itemBuilder.itemTypes(new short[]{
|
||||
ItemTypes.ITEM_TYPE_NAMED,
|
||||
ItemTypes.ITEM_TYPE_REPAIRABLE,
|
||||
ItemTypes.ITEM_TYPE_TOOL,
|
||||
ItemTypes.ITEM_TYPE_WEAPON_PIERCE
|
||||
});
|
||||
itemBuilder.imageNumber((short) 60);
|
||||
itemBuilder.behaviourType((short) 1);
|
||||
itemBuilder.combatDamage(0);
|
||||
itemBuilder.decayTime(Long.MAX_VALUE);
|
||||
itemBuilder.dimensions(6, 6, 96);
|
||||
itemBuilder.primarySkill(SkillList.CARPENTRY_FINE);
|
||||
itemBuilder.bodySpaces(EMPTY_BYTE_PRIMITIVE_ARRAY);
|
||||
itemBuilder.modelName("model.resource.shaft.");
|
||||
itemBuilder.difficulty(30.0f);
|
||||
itemBuilder.weightGrams(1100);
|
||||
itemBuilder.material(Materials.MATERIAL_IRON);
|
||||
itemBuilder.value(100);
|
||||
|
||||
ItemTemplate template = itemBuilder.build();
|
||||
templateId = template.getTemplateId();
|
||||
logger.info(name+" TemplateID: "+templateId);
|
||||
}
|
||||
|
||||
public void initCreationEntry(){
|
||||
logger.info("initCreationEntry()");
|
||||
if(templateId > 0){
|
||||
logger.info("Creating "+name+" creation entry, ID = "+templateId);
|
||||
final AdvancedCreationEntry entry = CreationEntryCreator.createAdvancedEntry(SkillList.CARPENTRY_FINE,
|
||||
ItemList.ironBand, ItemList.shaft, templateId, false, false, 0f, true, false, CreationCategories.TOOLS);
|
||||
entry.addRequirement(new CreationRequirement(1, ItemList.woodenHandleSword, 2, true));
|
||||
entry.addRequirement(new CreationRequirement(2, ItemList.nailsIronSmall, 1, true));
|
||||
}else{
|
||||
logger.info("Depth Drill does not have a template ID on creation entry.");
|
||||
}
|
||||
}
|
||||
}
|
||||
43
src/main/java/mod/sin/items/DisintegrationRod.java
Normal file
43
src/main/java/mod/sin/items/DisintegrationRod.java
Normal file
@@ -0,0 +1,43 @@
|
||||
package mod.sin.items;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
import org.gotti.wurmunlimited.modsupport.ItemTemplateBuilder;
|
||||
|
||||
import com.wurmonline.server.MiscConstants;
|
||||
import com.wurmonline.server.items.ItemTemplate;
|
||||
import com.wurmonline.server.items.ItemTypes;
|
||||
import com.wurmonline.server.items.Materials;
|
||||
|
||||
public class DisintegrationRod implements ItemTypes, MiscConstants {
|
||||
public static Logger logger = Logger.getLogger(DisintegrationRod.class.getName());
|
||||
public static int templateId;
|
||||
public void createTemplate() throws IOException{
|
||||
String name = "Rod of Disintegration";
|
||||
ItemTemplateBuilder itemBuilder = new ItemTemplateBuilder("item.mod.rod.disintegration");
|
||||
itemBuilder.name(name, "rods of disintegration", "A rod designed for removal of ore veins and cave walls.");
|
||||
itemBuilder.itemTypes(new short[]{ // {42, 53, 127, 155} - Rod of Transmutation {43, 42, 5, 76, 53, 127} - Sleep Powder
|
||||
ItemTypes.ITEM_TYPE_FULLPRICE,
|
||||
ItemTypes.ITEM_TYPE_NOSELLBACK,
|
||||
ItemTypes.ITEM_TYPE_ALWAYS_BANKABLE
|
||||
});
|
||||
itemBuilder.imageNumber((short) 1259);
|
||||
itemBuilder.behaviourType((short) 1);
|
||||
itemBuilder.combatDamage(0);
|
||||
itemBuilder.decayTime(Long.MAX_VALUE);
|
||||
itemBuilder.dimensions(5, 10, 60);
|
||||
itemBuilder.primarySkill((int) NOID);
|
||||
itemBuilder.bodySpaces(MiscConstants.EMPTY_BYTE_PRIMITIVE_ARRAY);
|
||||
itemBuilder.modelName("model.tool.rodtrans.");
|
||||
itemBuilder.difficulty(300.0f);
|
||||
itemBuilder.weightGrams(1000);
|
||||
itemBuilder.material(Materials.MATERIAL_STONE);
|
||||
itemBuilder.value(50000);
|
||||
itemBuilder.isTraded(true);
|
||||
|
||||
ItemTemplate template = itemBuilder.build();
|
||||
templateId = template.getTemplateId();
|
||||
logger.info(name+" TemplateID: "+templateId);
|
||||
}
|
||||
}
|
||||
43
src/main/java/mod/sin/items/EnchantOrb.java
Normal file
43
src/main/java/mod/sin/items/EnchantOrb.java
Normal file
@@ -0,0 +1,43 @@
|
||||
package mod.sin.items;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
import org.gotti.wurmunlimited.modsupport.ItemTemplateBuilder;
|
||||
|
||||
import com.wurmonline.server.MiscConstants;
|
||||
import com.wurmonline.server.items.ItemTemplate;
|
||||
import com.wurmonline.server.items.ItemTypes;
|
||||
|
||||
public class EnchantOrb implements ItemTypes, MiscConstants {
|
||||
public static Logger logger = Logger.getLogger(EnchantOrb.class.getName());
|
||||
public static int templateId;
|
||||
|
||||
public void createTemplate() throws IOException{
|
||||
String name = "enchant orb";
|
||||
ItemTemplateBuilder itemBuilder = new ItemTemplateBuilder("wyvern.enchantorb");
|
||||
itemBuilder.name(name, "enchant orbs", "It shimmers lightly, the magic inside waiting for a proper vessel.");
|
||||
itemBuilder.descriptions("vibrant", "glowing", "faint", "empty");
|
||||
itemBuilder.itemTypes(new short[]{
|
||||
ITEM_TYPE_MAGIC,
|
||||
ITEM_TYPE_INDESTRUCTIBLE
|
||||
});
|
||||
itemBuilder.imageNumber((short) 819);
|
||||
itemBuilder.behaviourType((short) 1);
|
||||
itemBuilder.combatDamage(0);
|
||||
itemBuilder.decayTime(Long.MAX_VALUE);
|
||||
itemBuilder.dimensions(1, 1, 1);
|
||||
itemBuilder.primarySkill((int) NOID);
|
||||
itemBuilder.bodySpaces(EMPTY_BYTE_PRIMITIVE_ARRAY);
|
||||
itemBuilder.modelName("model.artifact.orbdoom");
|
||||
itemBuilder.difficulty(5.0f);
|
||||
itemBuilder.weightGrams(500);
|
||||
itemBuilder.material((byte)52);
|
||||
itemBuilder.value(50000);
|
||||
itemBuilder.isTraded(true);
|
||||
|
||||
ItemTemplate template = itemBuilder.build();
|
||||
templateId = template.getTemplateId();
|
||||
logger.info(name+" TemplateID: "+templateId);
|
||||
}
|
||||
}
|
||||
52
src/main/java/mod/sin/items/EnchantersCrystal.java
Normal file
52
src/main/java/mod/sin/items/EnchantersCrystal.java
Normal file
@@ -0,0 +1,52 @@
|
||||
package mod.sin.items;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
import org.gotti.wurmunlimited.modsupport.ItemTemplateBuilder;
|
||||
|
||||
import com.wurmonline.server.MiscConstants;
|
||||
import com.wurmonline.server.items.ItemTemplate;
|
||||
import com.wurmonline.server.items.ItemTypes;
|
||||
import com.wurmonline.server.items.Materials;
|
||||
|
||||
public class EnchantersCrystal implements ItemTypes, MiscConstants {
|
||||
public static Logger logger = Logger.getLogger(EnchantersCrystal.class.getName());
|
||||
public static int templateId;
|
||||
|
||||
public void createTemplate() throws IOException{
|
||||
/* ItemTemplateCreatorContinued.createItemTemplate(737, "Valrei mission item", "items", "excellent", "good", "ok", "poor",
|
||||
* "A weird item belonging on Valrei.",
|
||||
* new short[]{32, 59, 147, 60},
|
||||
* 462, 1, 0, 86400, 3, 5, 50, -10, MiscConstants.EMPTY_BYTE_PRIMITIVE_ARRAY,
|
||||
* "model.valrei.", 300.0f, 100, 21, 1, false);
|
||||
*/
|
||||
String name = "enchanters crystal";
|
||||
ItemTemplateBuilder itemBuilder = new ItemTemplateBuilder("mod.item.crystal.enchanters");
|
||||
itemBuilder.name(name, "enchanters crystals", "This crystal can manipulate the magical properties of an item.");
|
||||
itemBuilder.descriptions("brilliantly glowing", "strongly glowing", "faintly glowing", "barely glowing");
|
||||
itemBuilder.itemTypes(new short[]{
|
||||
ItemTypes.ITEM_TYPE_MAGIC,
|
||||
ItemTypes.ITEM_TYPE_FULLPRICE,
|
||||
ItemTypes.ITEM_TYPE_NOSELLBACK,
|
||||
ItemTypes.ITEM_TYPE_ALWAYS_BANKABLE
|
||||
});
|
||||
itemBuilder.imageNumber((short) 462);
|
||||
itemBuilder.behaviourType((short) 1);
|
||||
itemBuilder.combatDamage(0);
|
||||
itemBuilder.decayTime(Long.MAX_VALUE);
|
||||
itemBuilder.dimensions(1, 1, 1);
|
||||
itemBuilder.primarySkill((int) NOID);
|
||||
itemBuilder.bodySpaces(EMPTY_BYTE_PRIMITIVE_ARRAY);
|
||||
itemBuilder.modelName("model.valrei.");
|
||||
itemBuilder.difficulty(5.0f);
|
||||
itemBuilder.weightGrams(250);
|
||||
itemBuilder.material(Materials.MATERIAL_CRYSTAL);
|
||||
itemBuilder.value(5000);
|
||||
itemBuilder.isTraded(true);
|
||||
|
||||
ItemTemplate template = itemBuilder.build();
|
||||
templateId = template.getTemplateId();
|
||||
logger.info(name+" TemplateID: "+templateId);
|
||||
}
|
||||
}
|
||||
72
src/main/java/mod/sin/items/EternalReservoir.java
Normal file
72
src/main/java/mod/sin/items/EternalReservoir.java
Normal file
@@ -0,0 +1,72 @@
|
||||
package mod.sin.items;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
import org.gotti.wurmunlimited.modsupport.ItemTemplateBuilder;
|
||||
|
||||
import com.wurmonline.server.MiscConstants;
|
||||
import com.wurmonline.server.items.AdvancedCreationEntry;
|
||||
import com.wurmonline.server.items.CreationCategories;
|
||||
import com.wurmonline.server.items.CreationEntryCreator;
|
||||
import com.wurmonline.server.items.CreationRequirement;
|
||||
import com.wurmonline.server.items.ItemList;
|
||||
import com.wurmonline.server.items.ItemTemplate;
|
||||
import com.wurmonline.server.items.ItemTypes;
|
||||
import com.wurmonline.server.items.Materials;
|
||||
import com.wurmonline.server.skills.SkillList;
|
||||
|
||||
public class EternalReservoir implements ItemTypes, MiscConstants {
|
||||
protected static Logger logger = Logger.getLogger(EternalReservoir.class.getName());
|
||||
public static int templateId;
|
||||
public void createTemplate() throws IOException{
|
||||
String name = "eternal reservoir";
|
||||
ItemTemplateBuilder itemBuilder = new ItemTemplateBuilder("mod.item.eternal.reservoir");
|
||||
itemBuilder.name(name, "eternal reservoir", "Fueled by the souls of the fallen, this black magic device stores souls that tend to nearby creatures and fires.");
|
||||
itemBuilder.itemTypes(new short[]{ // {25, 49, 31, 52, 40} Stone of Soulfall {108, 31, 25, 194, 52, 44, 195, 67, 49, 123, 178, 157} // Colossus
|
||||
ItemTypes.ITEM_TYPE_STONE,
|
||||
ItemTypes.ITEM_TYPE_REPAIRABLE,
|
||||
ItemTypes.ITEM_TYPE_NOTAKE,
|
||||
ItemTypes.ITEM_TYPE_DECORATION,
|
||||
ItemTypes.ITEM_TYPE_USE_GROUND_ONLY,
|
||||
ItemTypes.ITEM_TYPE_NEVER_SHOW_CREATION_WINDOW_OPTION,
|
||||
ItemTypes.ITEM_TYPE_NOT_MISSION
|
||||
});
|
||||
itemBuilder.imageNumber((short) 60);
|
||||
itemBuilder.behaviourType((short) 1);
|
||||
itemBuilder.combatDamage(0);
|
||||
itemBuilder.decayTime(Long.MAX_VALUE);
|
||||
itemBuilder.dimensions(500, 500, 1000);
|
||||
itemBuilder.primarySkill((int)MiscConstants.NOID);
|
||||
itemBuilder.bodySpaces(EMPTY_BYTE_PRIMITIVE_ARRAY);
|
||||
itemBuilder.modelName("model.structure.rift.altar.1.");
|
||||
itemBuilder.difficulty(50.0f);
|
||||
itemBuilder.weightGrams(200000);
|
||||
itemBuilder.material(Materials.MATERIAL_STONE);
|
||||
itemBuilder.value(10000);
|
||||
|
||||
ItemTemplate template = itemBuilder.build();
|
||||
templateId = template.getTemplateId();
|
||||
logger.info(name+" TemplateID: "+templateId);
|
||||
}
|
||||
|
||||
public void initCreationEntry(){
|
||||
logger.info("initCreationEntry()");
|
||||
if(templateId > 0){
|
||||
AdvancedCreationEntry massStorage = CreationEntryCreator.createAdvancedEntry(SkillList.POTTERY,
|
||||
ItemList.diamondStar, ItemList.dirtPile, templateId,
|
||||
false, false, 0.0F, true, true, 0, 0.0D, CreationCategories.ALTAR);
|
||||
|
||||
massStorage.addRequirement(new CreationRequirement(1, ItemList.dirtPile, 99, true));
|
||||
massStorage.addRequirement(new CreationRequirement(2, ItemList.brickPottery, 200, true));
|
||||
massStorage.addRequirement(new CreationRequirement(3, ItemList.peat, 50, true));
|
||||
massStorage.addRequirement(new CreationRequirement(4, ChaosCrystal.templateId, 50, true));
|
||||
massStorage.addRequirement(new CreationRequirement(5, ItemList.heart, 20, true));
|
||||
massStorage.addRequirement(new CreationRequirement(6, ItemList.emerald, 5, true));
|
||||
massStorage.addRequirement(new CreationRequirement(7, ItemList.diamond, 5, true));
|
||||
massStorage.addRequirement(new CreationRequirement(8, ItemList.opal, 5, true));
|
||||
massStorage.addRequirement(new CreationRequirement(9, ItemList.sapphire, 5, true));
|
||||
massStorage.addRequirement(new CreationRequirement(10, ItemList.ruby, 5, true));
|
||||
}
|
||||
}
|
||||
}
|
||||
48
src/main/java/mod/sin/items/FriyanTablet.java
Normal file
48
src/main/java/mod/sin/items/FriyanTablet.java
Normal file
@@ -0,0 +1,48 @@
|
||||
package mod.sin.items;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
import org.gotti.wurmunlimited.modsupport.ItemTemplateBuilder;
|
||||
|
||||
import com.wurmonline.server.MiscConstants;
|
||||
import com.wurmonline.server.items.ItemTemplate;
|
||||
import com.wurmonline.server.items.ItemTypes;
|
||||
import com.wurmonline.server.items.Materials;
|
||||
|
||||
public class FriyanTablet implements ItemTypes, MiscConstants {
|
||||
protected static Logger logger = Logger.getLogger(FriyanTablet.class.getName());
|
||||
public static int templateId;
|
||||
public void createTemplate() throws IOException{
|
||||
String name = "Tablet of Friyan";
|
||||
ItemTemplateBuilder itemBuilder = new ItemTemplateBuilder("mod.item.tablet.friyan");
|
||||
itemBuilder.name(name, "tablets of friyan", "Once a great scholar and sorceress, Friyan's faith had reached the zenith. While in this world, she wrote her knowledge in tablets like these. Perhaps you may learn more of the gods from it...");
|
||||
itemBuilder.itemTypes(new short[]{ // {25, 49, 31, 52, 40} Stone of Soulfall {108, 31, 25, 194, 52, 44, 195, 67, 49, 123, 178, 157} // Colossus
|
||||
ItemTypes.ITEM_TYPE_STONE,
|
||||
ItemTypes.ITEM_TYPE_OUTSIDE_ONLY,
|
||||
ItemTypes.ITEM_TYPE_NOTAKE,
|
||||
ItemTypes.ITEM_TYPE_DECORATION,
|
||||
ItemTypes.ITEM_TYPE_INDESTRUCTIBLE,
|
||||
ItemTypes.ITEM_TYPE_USE_GROUND_ONLY,
|
||||
ItemTypes.ITEM_TYPE_NOMOVE,
|
||||
ItemTypes.ITEM_TYPE_NEVER_SHOW_CREATION_WINDOW_OPTION,
|
||||
ItemTypes.ITEM_TYPE_NOT_MISSION
|
||||
});
|
||||
itemBuilder.imageNumber((short) 60);
|
||||
itemBuilder.behaviourType((short) 1);
|
||||
itemBuilder.combatDamage(0);
|
||||
itemBuilder.decayTime(Long.MAX_VALUE);
|
||||
itemBuilder.dimensions(500, 500, 1000);
|
||||
itemBuilder.primarySkill((int)MiscConstants.NOID);
|
||||
itemBuilder.bodySpaces(EMPTY_BYTE_PRIMITIVE_ARRAY);
|
||||
itemBuilder.modelName("model.structure.portal.10.");
|
||||
itemBuilder.difficulty(99.0f);
|
||||
itemBuilder.weightGrams(2000000);
|
||||
itemBuilder.material(Materials.MATERIAL_STONE);
|
||||
itemBuilder.value(10000);
|
||||
|
||||
ItemTemplate template = itemBuilder.build();
|
||||
templateId = template.getTemplateId();
|
||||
logger.info(name+" TemplateID: "+templateId);
|
||||
}
|
||||
}
|
||||
68
src/main/java/mod/sin/items/HugeCrate.java
Normal file
68
src/main/java/mod/sin/items/HugeCrate.java
Normal file
@@ -0,0 +1,68 @@
|
||||
package mod.sin.items;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
import org.gotti.wurmunlimited.modsupport.ItemTemplateBuilder;
|
||||
|
||||
import com.wurmonline.server.MiscConstants;
|
||||
import com.wurmonline.server.items.AdvancedCreationEntry;
|
||||
import com.wurmonline.server.items.CreationCategories;
|
||||
import com.wurmonline.server.items.CreationEntryCreator;
|
||||
import com.wurmonline.server.items.CreationRequirement;
|
||||
import com.wurmonline.server.items.ItemList;
|
||||
import com.wurmonline.server.items.ItemTemplate;
|
||||
import com.wurmonline.server.items.ItemTypes;
|
||||
import com.wurmonline.server.items.Materials;
|
||||
import com.wurmonline.server.skills.SkillList;
|
||||
|
||||
public class HugeCrate implements ItemTypes, MiscConstants {
|
||||
public static Logger logger = Logger.getLogger(HugeCrate.class.getName());
|
||||
public static int templateId;
|
||||
public void createTemplate() throws IOException{
|
||||
String name = "huge crate";
|
||||
ItemTemplateBuilder itemBuilder = new ItemTemplateBuilder("mod.item.crate.huge");
|
||||
itemBuilder.name(name, "huge crates", "A huge crate made from planks, primarily used to transport goods.");
|
||||
itemBuilder.itemTypes(new short[]{ // {108, 135, 167, 21, 51, 52, 44, 1, 92, 145, 176} - large crate
|
||||
ItemTypes.ITEM_TYPE_NAMED,
|
||||
ItemTypes.ITEM_TYPE_OWNER_DESTROYABLE,
|
||||
ItemTypes.ITEM_TYPE_WOOD,
|
||||
ItemTypes.ITEM_TYPE_TURNABLE,
|
||||
ItemTypes.ITEM_TYPE_DECORATION,
|
||||
ItemTypes.ITEM_TYPE_REPAIRABLE,
|
||||
ItemTypes.ITEM_TYPE_HOLLOW,
|
||||
ItemTypes.ITEM_TYPE_COLORABLE,
|
||||
ItemTypes.ITEM_TYPE_BULKCONTAINER,
|
||||
ItemTypes.ITEM_TYPE_TRANSPORTABLE
|
||||
});
|
||||
itemBuilder.imageNumber((short) 311);
|
||||
itemBuilder.behaviourType((short) 1);
|
||||
itemBuilder.combatDamage(0);
|
||||
itemBuilder.decayTime(9072000);
|
||||
itemBuilder.dimensions(140, 140, 140);
|
||||
itemBuilder.primarySkill((int) NOID);
|
||||
itemBuilder.bodySpaces(EMPTY_BYTE_PRIMITIVE_ARRAY);
|
||||
itemBuilder.modelName("model.container.crate.large.");
|
||||
itemBuilder.difficulty(70.0f);
|
||||
itemBuilder.weightGrams(20000);
|
||||
itemBuilder.material(Materials.MATERIAL_WOOD_BIRCH);
|
||||
itemBuilder.value(10000);
|
||||
itemBuilder.isTraded(false);
|
||||
|
||||
ItemTemplate template = itemBuilder.build();
|
||||
templateId = template.getTemplateId();
|
||||
logger.info(name+" TemplateID: "+ templateId);
|
||||
}
|
||||
|
||||
public void initCreationEntry() {
|
||||
logger.info("initCreationEntry()");
|
||||
if (templateId > 0) {
|
||||
logger.info("Creating Huge Crate creation entry, ID = "+templateId);
|
||||
final AdvancedCreationEntry entry = CreationEntryCreator.createAdvancedEntry(SkillList.CARPENTRY_FINE,
|
||||
ItemList.plank, ItemList.nailsIronLarge, templateId, false, false, 0f, true, false, CreationCategories.TOOLS);
|
||||
entry.addRequirement(new CreationRequirement(1, ItemList.plank, 20, true));
|
||||
} else {
|
||||
logger.info("Huge Crate does not have a template ID on creation entry.");
|
||||
}
|
||||
}
|
||||
}
|
||||
54
src/main/java/mod/sin/items/MassStorageBehaviour.java
Normal file
54
src/main/java/mod/sin/items/MassStorageBehaviour.java
Normal file
@@ -0,0 +1,54 @@
|
||||
package mod.sin.items;
|
||||
|
||||
import java.util.logging.Logger;
|
||||
|
||||
import org.gotti.wurmunlimited.modsupport.vehicles.ModVehicleBehaviour;
|
||||
import org.gotti.wurmunlimited.modsupport.vehicles.VehicleFacade;
|
||||
|
||||
import com.wurmonline.server.behaviours.Seat;
|
||||
import com.wurmonline.server.behaviours.Vehicle;
|
||||
import com.wurmonline.server.creatures.Creature;
|
||||
import com.wurmonline.server.items.Item;
|
||||
|
||||
public class MassStorageBehaviour extends ModVehicleBehaviour {
|
||||
public static Logger logger = Logger.getLogger(MassStorageBehaviour.class.getName());
|
||||
public void setSettingsForVehicle(final Creature creature, final Vehicle vehicle){
|
||||
// Empty
|
||||
}
|
||||
/*public void setSettingsForVehicle(final Item item, final Vehicle v){
|
||||
logger.info("Setting vehicle behaviour for item "+item.getTemplate().getTemplateId());
|
||||
|
||||
// Vehicle facade to access:
|
||||
VehicleFacade vehicle = wrap(v);
|
||||
vehicle.createPassengerSeats(1);
|
||||
vehicle.setCommandType((byte)1);
|
||||
vehicle.setCreature(false);
|
||||
vehicle.setSeatFightMod(0, 0.9f, 0.9f);
|
||||
vehicle.setSeatOffset(0, 0.0f, 0.0f, 0.246f);
|
||||
vehicle.setSkillNeeded(19.0f);
|
||||
}*/
|
||||
public void setSettingsForVehicle(final Item item, final Vehicle v) {
|
||||
logger.info("Setting vehicle behaviour for item "+item.getTemplate().getTemplateId());
|
||||
/*
|
||||
* Vehicle has some protected fields. The facade will deal with those.
|
||||
*/
|
||||
VehicleFacade vehicle = wrap(v);
|
||||
vehicle.createPassengerSeats(0);
|
||||
vehicle.setSeatFightMod(0, 0.7f, 0.4f);
|
||||
vehicle.setSeatOffset(0, 0f, 1.5f, -0.2f);
|
||||
vehicle.setCreature(false);
|
||||
vehicle.setEmbarkString("enter");
|
||||
vehicle.setName(item.getName());
|
||||
vehicle.setMaxDepth(9000f);
|
||||
vehicle.setMaxHeightDiff(0.00f);
|
||||
vehicle.setCommandType((byte)2);
|
||||
|
||||
/*
|
||||
* The Seat constructor is protected too. createSeat() will handle that
|
||||
*/
|
||||
final Seat[] hitches = { createSeat(Seat.TYPE_HITCHED) };
|
||||
hitches[0].offx = 3.0f;
|
||||
hitches[0].offy = 0.0f;
|
||||
vehicle.addHitchSeats(hitches);
|
||||
}
|
||||
}
|
||||
87
src/main/java/mod/sin/items/MassStorageUnit.java
Normal file
87
src/main/java/mod/sin/items/MassStorageUnit.java
Normal file
@@ -0,0 +1,87 @@
|
||||
package mod.sin.items;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
import org.gotti.wurmunlimited.modsupport.ItemTemplateBuilder;
|
||||
import org.gotti.wurmunlimited.modsupport.vehicles.ModVehicleBehaviours;
|
||||
|
||||
import com.wurmonline.server.MiscConstants;
|
||||
import com.wurmonline.server.items.AdvancedCreationEntry;
|
||||
import com.wurmonline.server.items.CreationCategories;
|
||||
import com.wurmonline.server.items.CreationEntryCreator;
|
||||
import com.wurmonline.server.items.CreationRequirement;
|
||||
import com.wurmonline.server.items.ItemList;
|
||||
import com.wurmonline.server.items.ItemTemplate;
|
||||
import com.wurmonline.server.items.ItemTypes;
|
||||
import com.wurmonline.server.items.Materials;
|
||||
import com.wurmonline.server.skills.SkillList;
|
||||
|
||||
public class MassStorageUnit implements ItemTypes {
|
||||
private static Logger logger = Logger.getLogger(MassStorageUnit.class.getName());
|
||||
public static int templateId;
|
||||
private String name = "mass storage unit";
|
||||
|
||||
public void createTemplate() throws IOException{
|
||||
ModVehicleBehaviours.init();
|
||||
ItemTemplateBuilder builder = new ItemTemplateBuilder("mod.item.mass.storage");
|
||||
builder.name(name, "mass storage units", "A massive storage unit able to be loaded with containers.");
|
||||
builder.descriptions("almost full", "somewhat occupied", "half-full", "emptyish");
|
||||
builder.itemTypes(new short[] {
|
||||
ITEM_TYPE_WOOD,
|
||||
ITEM_TYPE_NOTAKE,
|
||||
ITEM_TYPE_REPAIRABLE,
|
||||
ITEM_TYPE_TURNABLE,
|
||||
ITEM_TYPE_DECORATION,
|
||||
ITEM_TYPE_DESTROYABLE,
|
||||
ITEM_TYPE_ONE_PER_TILE,
|
||||
ITEM_TYPE_LOCKABLE,
|
||||
ITEM_TYPE_HOLLOW,
|
||||
ITEM_TYPE_VEHICLE,
|
||||
ITEM_TYPE_IMPROVEITEM,
|
||||
ITEM_TYPE_OWNER_DESTROYABLE,
|
||||
ItemTypes.ITEM_TYPE_USES_SPECIFIED_CONTAINER_VOLUME,
|
||||
ITEM_TYPE_OWNER_TURNABLE,
|
||||
ITEM_TYPE_CART,
|
||||
ITEM_TYPE_OWNER_MOVEABLE
|
||||
});
|
||||
builder.imageNumber((short) 60);
|
||||
builder.behaviourType((short) 41);
|
||||
builder.combatDamage(0);
|
||||
builder.decayTime(9072000L);
|
||||
builder.dimensions(400, 300, 1000);
|
||||
builder.primarySkill(-10);
|
||||
builder.bodySpaces(MiscConstants.EMPTY_BYTE_PRIMITIVE_ARRAY);
|
||||
builder.modelName("model.furniture.wooden.storageunit.");
|
||||
//builder.size(3);
|
||||
|
||||
builder.difficulty(80.0F);
|
||||
builder.weightGrams(300000);
|
||||
builder.material(Materials.MATERIAL_WOOD_BIRCH);
|
||||
|
||||
ItemTemplate template = builder.build();
|
||||
templateId = template.getTemplateId();
|
||||
template.setContainerSize(300, 300, 600);
|
||||
|
||||
MassStorageBehaviour massStorageBehaviour = new MassStorageBehaviour();
|
||||
ModVehicleBehaviours.addItemVehicle(templateId, massStorageBehaviour);
|
||||
//KingdomWagonBehaviour kingdomWagonBehaviour = new KingdomWagonBehaviour();
|
||||
//ModVehicleBehaviours.addItemVehicle(resultTemplate.getTemplateId(), kingdomWagonBehaviour);
|
||||
|
||||
logger.info(name+" TemplateID: "+templateId);
|
||||
}
|
||||
|
||||
public void initCreationEntry(){
|
||||
logger.info("initCreationEntry()");
|
||||
if(templateId > 0){
|
||||
AdvancedCreationEntry massStorage = CreationEntryCreator.createAdvancedEntry(SkillList.CARPENTRY_FINE,
|
||||
ItemList.woodBeam, ItemList.woodBeam, templateId,
|
||||
false, false, 0.0F, true, true, 0, 70.0D, CreationCategories.STORAGE);
|
||||
|
||||
massStorage.addRequirement(new CreationRequirement(1, ItemList.plank, 500, true));
|
||||
massStorage.addRequirement(new CreationRequirement(2, ItemList.shaft, 200, true));
|
||||
massStorage.addRequirement(new CreationRequirement(3, ItemList.ironBand, 50, true));
|
||||
massStorage.addRequirement(new CreationRequirement(4, ItemList.nailsIronLarge, 100, true));
|
||||
}
|
||||
}
|
||||
}
|
||||
45
src/main/java/mod/sin/items/SealedMap.java
Normal file
45
src/main/java/mod/sin/items/SealedMap.java
Normal file
@@ -0,0 +1,45 @@
|
||||
package mod.sin.items;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
import org.gotti.wurmunlimited.modsupport.ItemTemplateBuilder;
|
||||
|
||||
import com.wurmonline.server.MiscConstants;
|
||||
import com.wurmonline.server.items.ItemTemplate;
|
||||
import com.wurmonline.server.items.ItemTypes;
|
||||
import com.wurmonline.server.items.Materials;
|
||||
|
||||
public class SealedMap implements ItemTypes, MiscConstants {
|
||||
public static Logger logger = Logger.getLogger(SealedMap.class.getName());
|
||||
public static int templateId;
|
||||
|
||||
public void createTemplate() throws IOException{
|
||||
String name = "sealed map";
|
||||
ItemTemplateBuilder itemBuilder = new ItemTemplateBuilder("mod.item.sealed.map");
|
||||
itemBuilder.name(name, "sealed map", "A sealed treasure map, waiting to be opened.");
|
||||
itemBuilder.itemTypes(new short[]{
|
||||
ItemTypes.ITEM_TYPE_MAGIC,
|
||||
ItemTypes.ITEM_TYPE_NOSELLBACK,
|
||||
ItemTypes.ITEM_TYPE_FULLPRICE, // Not actually full price, the hook for value works before this is applied. This ensures coins are used.
|
||||
ItemTypes.ITEM_TYPE_ALWAYS_BANKABLE
|
||||
});
|
||||
itemBuilder.imageNumber((short) 640);
|
||||
itemBuilder.behaviourType((short) 1);
|
||||
itemBuilder.combatDamage(0);
|
||||
itemBuilder.decayTime(Long.MAX_VALUE);
|
||||
itemBuilder.dimensions(1, 1, 1);
|
||||
itemBuilder.primarySkill((int) NOID);
|
||||
itemBuilder.bodySpaces(EMPTY_BYTE_PRIMITIVE_ARRAY);
|
||||
itemBuilder.modelName("model.container.giftbox.");
|
||||
itemBuilder.difficulty(5.0f);
|
||||
itemBuilder.weightGrams(500);
|
||||
itemBuilder.material(Materials.MATERIAL_MAGIC);
|
||||
itemBuilder.value(5000000);
|
||||
itemBuilder.isTraded(true);
|
||||
|
||||
ItemTemplate template = itemBuilder.build();
|
||||
templateId = template.getTemplateId();
|
||||
logger.info(name+" TemplateID: "+templateId);
|
||||
}
|
||||
}
|
||||
62
src/main/java/mod/sin/items/SkeletonDecoration.java
Normal file
62
src/main/java/mod/sin/items/SkeletonDecoration.java
Normal file
@@ -0,0 +1,62 @@
|
||||
package mod.sin.items;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
import org.gotti.wurmunlimited.modsupport.ItemTemplateBuilder;
|
||||
|
||||
import com.wurmonline.server.MiscConstants;
|
||||
import com.wurmonline.server.items.CreationCategories;
|
||||
import com.wurmonline.server.items.CreationEntryCreator;
|
||||
import com.wurmonline.server.items.ItemList;
|
||||
import com.wurmonline.server.items.ItemTemplate;
|
||||
import com.wurmonline.server.items.ItemTypes;
|
||||
import com.wurmonline.server.items.Materials;
|
||||
import com.wurmonline.server.skills.SkillList;
|
||||
|
||||
public class SkeletonDecoration implements ItemTypes, MiscConstants {
|
||||
public static Logger logger = Logger.getLogger(SkeletonDecoration.class.getName());
|
||||
public static int templateId;
|
||||
private String name = "skeleton";
|
||||
public void createTemplate() throws IOException{
|
||||
ItemTemplateBuilder itemBuilder = new ItemTemplateBuilder("mod.item.skeleton");
|
||||
itemBuilder.name(name, "skeletons", "A skeleton.");
|
||||
itemBuilder.itemTypes(new short[]{ // {108, 21, 135, 86, 31, 51, 52, 157, 44, 92, 176} - Table
|
||||
ItemTypes.ITEM_TYPE_NAMED,
|
||||
ItemTypes.ITEM_TYPE_OWNER_DESTROYABLE,
|
||||
ItemTypes.ITEM_TYPE_DESTROYABLE,
|
||||
ItemTypes.ITEM_TYPE_TURNABLE,
|
||||
ItemTypes.ITEM_TYPE_DECORATION,
|
||||
ItemTypes.ITEM_TYPE_NOT_MISSION,
|
||||
ItemTypes.ITEM_TYPE_REPAIRABLE,
|
||||
ItemTypes.ITEM_TYPE_COLORABLE
|
||||
});
|
||||
itemBuilder.imageNumber((short) 40);
|
||||
itemBuilder.behaviourType((short) 1);
|
||||
itemBuilder.combatDamage(0);
|
||||
itemBuilder.decayTime(Long.MAX_VALUE);
|
||||
itemBuilder.dimensions(20, 50, 200);
|
||||
itemBuilder.primarySkill(SkillList.BUTCHERING);
|
||||
itemBuilder.bodySpaces(EMPTY_BYTE_PRIMITIVE_ARRAY);
|
||||
itemBuilder.modelName("model.corpse.human.butchered.");
|
||||
itemBuilder.difficulty(90.0f);
|
||||
itemBuilder.weightGrams(50000);
|
||||
itemBuilder.material(Materials.MATERIAL_FLESH);
|
||||
itemBuilder.value(1000);
|
||||
|
||||
ItemTemplate template = itemBuilder.build();
|
||||
templateId = template.getTemplateId();
|
||||
logger.info(name+" TemplateID: "+templateId);
|
||||
}
|
||||
|
||||
public void initCreationEntry(){
|
||||
logger.info("initCreationEntry()");
|
||||
if(templateId > 0){
|
||||
logger.info("Creating "+name+" creation entry, ID = "+templateId);
|
||||
CreationEntryCreator.createSimpleEntry(SkillList.BUTCHERING, ItemList.knifeButchering, 22760,
|
||||
templateId, false, true, 0f, false, false, CreationCategories.DECORATION);
|
||||
}else{
|
||||
logger.info(name+" does not have a template ID on creation entry.");
|
||||
}
|
||||
}
|
||||
}
|
||||
45
src/main/java/mod/sin/items/Soul.java
Normal file
45
src/main/java/mod/sin/items/Soul.java
Normal file
@@ -0,0 +1,45 @@
|
||||
package mod.sin.items;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
import org.gotti.wurmunlimited.modsupport.ItemTemplateBuilder;
|
||||
|
||||
import com.wurmonline.server.MiscConstants;
|
||||
import com.wurmonline.server.items.ItemTemplate;
|
||||
import com.wurmonline.server.items.ItemTypes;
|
||||
import com.wurmonline.server.items.Materials;
|
||||
|
||||
public class Soul implements ItemTypes, MiscConstants {
|
||||
public static Logger logger = Logger.getLogger(Soul.class.getName());
|
||||
public static int templateId;
|
||||
|
||||
public void createTemplate() throws IOException{
|
||||
String name = "soul";
|
||||
ItemTemplateBuilder itemBuilder = new ItemTemplateBuilder("mod.item.soul");
|
||||
itemBuilder.name(name, "souls", "The captured soul of a creature.");
|
||||
itemBuilder.descriptions("brilliantly glowing", "strongly glowing", "faintly glowing", "barely glowing");
|
||||
itemBuilder.itemTypes(new short[]{
|
||||
ItemTypes.ITEM_TYPE_MAGIC,
|
||||
ItemTypes.ITEM_TYPE_FULLPRICE,
|
||||
ItemTypes.ITEM_TYPE_NOSELLBACK,
|
||||
ItemTypes.ITEM_TYPE_ALWAYS_BANKABLE
|
||||
});
|
||||
itemBuilder.imageNumber((short) 859);
|
||||
itemBuilder.behaviourType((short) 1);
|
||||
itemBuilder.combatDamage(0);
|
||||
itemBuilder.decayTime(Long.MAX_VALUE);
|
||||
itemBuilder.dimensions(1, 1, 1);
|
||||
itemBuilder.primarySkill((int) NOID);
|
||||
itemBuilder.bodySpaces(EMPTY_BYTE_PRIMITIVE_ARRAY);
|
||||
itemBuilder.modelName("model.valrei.");
|
||||
itemBuilder.difficulty(5.0f);
|
||||
itemBuilder.weightGrams(250);
|
||||
itemBuilder.material(Materials.MATERIAL_CRYSTAL);
|
||||
itemBuilder.value(5000);
|
||||
|
||||
ItemTemplate template = itemBuilder.build();
|
||||
templateId = template.getTemplateId();
|
||||
logger.info(name+" TemplateID: "+templateId);
|
||||
}
|
||||
}
|
||||
68
src/main/java/mod/sin/items/StatuetteBreyk.java
Normal file
68
src/main/java/mod/sin/items/StatuetteBreyk.java
Normal file
@@ -0,0 +1,68 @@
|
||||
package mod.sin.items;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
import org.gotti.wurmunlimited.modsupport.ItemTemplateBuilder;
|
||||
|
||||
import com.wurmonline.server.MiscConstants;
|
||||
import com.wurmonline.server.items.CreationCategories;
|
||||
import com.wurmonline.server.items.CreationEntryCreator;
|
||||
import com.wurmonline.server.items.ItemList;
|
||||
import com.wurmonline.server.items.ItemTemplate;
|
||||
import com.wurmonline.server.items.ItemTypes;
|
||||
import com.wurmonline.server.items.Materials;
|
||||
import com.wurmonline.server.skills.SkillList;
|
||||
|
||||
public class StatuetteBreyk implements ItemTypes, MiscConstants {
|
||||
public static Logger logger = Logger.getLogger(StatuetteBreyk.class.getName());
|
||||
public static int templateId;
|
||||
private String name = "statuette of Breyk";
|
||||
public void createTemplate() throws IOException{
|
||||
ItemTemplateBuilder itemBuilder = new ItemTemplateBuilder("mod.item.statuette.breyk");
|
||||
itemBuilder.name(name, "statuettes", "A statuette resembling the artists interpretation of the deity Breyk.");
|
||||
itemBuilder.itemTypes(new short[]{ // {108, 52, 22, 44, 87, 92, 147} - Statuette
|
||||
ItemTypes.ITEM_TYPE_NAMED,
|
||||
ItemTypes.ITEM_TYPE_DECORATION,
|
||||
ItemTypes.ITEM_TYPE_METAL,
|
||||
ItemTypes.ITEM_TYPE_REPAIRABLE,
|
||||
ItemTypes.ITEM_TYPE_MATERIAL_PRICEEFFECT,
|
||||
ItemTypes.ITEM_TYPE_COLORABLE,
|
||||
ItemTypes.ITEM_TYPE_MISSION
|
||||
});
|
||||
itemBuilder.imageNumber((short) 282);
|
||||
itemBuilder.behaviourType((short) 35);
|
||||
itemBuilder.combatDamage(40);
|
||||
itemBuilder.decayTime(Long.MAX_VALUE);
|
||||
itemBuilder.dimensions(3, 5, 20);
|
||||
itemBuilder.primarySkill(-10);
|
||||
itemBuilder.bodySpaces(MiscConstants.EMPTY_BYTE_PRIMITIVE_ARRAY);
|
||||
itemBuilder.modelName("model.decoration.statuette.fo.");
|
||||
itemBuilder.difficulty(40.0f);
|
||||
itemBuilder.weightGrams(1000);
|
||||
itemBuilder.material(Materials.MATERIAL_SILVER);
|
||||
itemBuilder.value(20000);
|
||||
itemBuilder.isTraded(true);
|
||||
|
||||
ItemTemplate template = itemBuilder.build();
|
||||
templateId = template.getTemplateId();
|
||||
logger.info(name+" TemplateID: "+templateId);
|
||||
}
|
||||
|
||||
public void initCreationEntry(){
|
||||
logger.info("initCreationEntry()");
|
||||
if(templateId > 0){
|
||||
logger.info("Creating "+name+" creation entry, ID = "+templateId);
|
||||
CreationEntryCreator.createSimpleEntry(SkillList.SMITHING_GOLDSMITHING, ItemList.anvilSmall, ItemList.silverBar,
|
||||
templateId, false, true, 0.0f, false, false, CreationCategories.STATUETTES);
|
||||
CreationEntryCreator.createSimpleEntry(SkillList.SMITHING_GOLDSMITHING, ItemList.anvilSmall, ItemList.goldBar,
|
||||
templateId, false, true, 0.0f, false, false, CreationCategories.STATUETTES);
|
||||
//final AdvancedCreationEntry entry = CreationEntryCreator.createAdvancedEntry(SkillList.SMITHING_WEAPON_HEADS,
|
||||
// ItemList.ironBand, ItemList.shaft, templateId, false, false, 0f, true, false, CreationCategories.TOOLS);
|
||||
//entry.addRequirement(new CreationRequirement(1, ItemList.woodenHandleSword, 2, true));
|
||||
//entry.addRequirement(new CreationRequirement(2, ItemList.nailsIronSmall, 1, true));
|
||||
}else{
|
||||
logger.info(name+" does not have a template ID on creation entry.");
|
||||
}
|
||||
}
|
||||
}
|
||||
68
src/main/java/mod/sin/items/StatuetteCyberhusky.java
Normal file
68
src/main/java/mod/sin/items/StatuetteCyberhusky.java
Normal file
@@ -0,0 +1,68 @@
|
||||
package mod.sin.items;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
import org.gotti.wurmunlimited.modsupport.ItemTemplateBuilder;
|
||||
|
||||
import com.wurmonline.server.MiscConstants;
|
||||
import com.wurmonline.server.items.CreationCategories;
|
||||
import com.wurmonline.server.items.CreationEntryCreator;
|
||||
import com.wurmonline.server.items.ItemList;
|
||||
import com.wurmonline.server.items.ItemTemplate;
|
||||
import com.wurmonline.server.items.ItemTypes;
|
||||
import com.wurmonline.server.items.Materials;
|
||||
import com.wurmonline.server.skills.SkillList;
|
||||
|
||||
public class StatuetteCyberhusky implements ItemTypes, MiscConstants {
|
||||
public static Logger logger = Logger.getLogger(StatuetteCyberhusky.class.getName());
|
||||
public static int templateId;
|
||||
private String name = "statuette of Cyberhusky";
|
||||
public void createTemplate() throws IOException{
|
||||
ItemTemplateBuilder itemBuilder = new ItemTemplateBuilder("mod.item.statuette.cyberhusky");
|
||||
itemBuilder.name(name, "statuettes", "A statuette resembling the artists interpretation of the deity Cyberhusky.");
|
||||
itemBuilder.itemTypes(new short[]{ // {108, 52, 22, 44, 87, 92, 147} - Statuette
|
||||
ItemTypes.ITEM_TYPE_NAMED,
|
||||
ItemTypes.ITEM_TYPE_DECORATION,
|
||||
ItemTypes.ITEM_TYPE_METAL,
|
||||
ItemTypes.ITEM_TYPE_REPAIRABLE,
|
||||
ItemTypes.ITEM_TYPE_MATERIAL_PRICEEFFECT,
|
||||
ItemTypes.ITEM_TYPE_COLORABLE,
|
||||
ItemTypes.ITEM_TYPE_MISSION
|
||||
});
|
||||
itemBuilder.imageNumber((short) 282);
|
||||
itemBuilder.behaviourType((short) 35);
|
||||
itemBuilder.combatDamage(40);
|
||||
itemBuilder.decayTime(Long.MAX_VALUE);
|
||||
itemBuilder.dimensions(3, 5, 20);
|
||||
itemBuilder.primarySkill(-10);
|
||||
itemBuilder.bodySpaces(MiscConstants.EMPTY_BYTE_PRIMITIVE_ARRAY);
|
||||
itemBuilder.modelName("model.decoration.statuette.magranon.");
|
||||
itemBuilder.difficulty(40.0f);
|
||||
itemBuilder.weightGrams(1000);
|
||||
itemBuilder.material(Materials.MATERIAL_SILVER);
|
||||
itemBuilder.value(20000);
|
||||
itemBuilder.isTraded(true);
|
||||
|
||||
ItemTemplate template = itemBuilder.build();
|
||||
templateId = template.getTemplateId();
|
||||
logger.info(name+" TemplateID: "+templateId);
|
||||
}
|
||||
|
||||
public void initCreationEntry(){
|
||||
logger.info("initCreationEntry()");
|
||||
if(templateId > 0){
|
||||
logger.info("Creating "+name+" creation entry, ID = "+templateId);
|
||||
CreationEntryCreator.createSimpleEntry(SkillList.SMITHING_GOLDSMITHING, ItemList.anvilSmall, ItemList.silverBar,
|
||||
templateId, false, true, 0.0f, false, false, CreationCategories.STATUETTES);
|
||||
CreationEntryCreator.createSimpleEntry(SkillList.SMITHING_GOLDSMITHING, ItemList.anvilSmall, ItemList.goldBar,
|
||||
templateId, false, true, 0.0f, false, false, CreationCategories.STATUETTES);
|
||||
//final AdvancedCreationEntry entry = CreationEntryCreator.createAdvancedEntry(SkillList.SMITHING_WEAPON_HEADS,
|
||||
// ItemList.ironBand, ItemList.shaft, templateId, false, false, 0f, true, false, CreationCategories.TOOLS);
|
||||
//entry.addRequirement(new CreationRequirement(1, ItemList.woodenHandleSword, 2, true));
|
||||
//entry.addRequirement(new CreationRequirement(2, ItemList.nailsIronSmall, 1, true));
|
||||
}else{
|
||||
logger.info(name+" does not have a template ID on creation entry.");
|
||||
}
|
||||
}
|
||||
}
|
||||
46
src/main/java/mod/sin/items/TreasureBox.java
Normal file
46
src/main/java/mod/sin/items/TreasureBox.java
Normal file
@@ -0,0 +1,46 @@
|
||||
package mod.sin.items;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
import org.gotti.wurmunlimited.modsupport.ItemTemplateBuilder;
|
||||
|
||||
import com.wurmonline.server.MiscConstants;
|
||||
import com.wurmonline.server.items.ItemTemplate;
|
||||
import com.wurmonline.server.items.ItemTypes;
|
||||
import com.wurmonline.server.items.Materials;
|
||||
|
||||
public class TreasureBox implements ItemTypes, MiscConstants {
|
||||
public static Logger logger = Logger.getLogger(TreasureBox.class.getName());
|
||||
public static int templateId;
|
||||
|
||||
public void createTemplate() throws IOException{
|
||||
String name = "treasure box";
|
||||
ItemTemplateBuilder itemBuilder = new ItemTemplateBuilder("mod.item.treasurebox");
|
||||
itemBuilder.name(name, "treasure boxes", "A box of treasure, waiting to be opened. What could be inside?");
|
||||
itemBuilder.descriptions("brilliantly glowing", "strongly glowing", "faintly glowing", "barely glowing");
|
||||
itemBuilder.itemTypes(new short[]{
|
||||
ItemTypes.ITEM_TYPE_MAGIC,
|
||||
ItemTypes.ITEM_TYPE_FULLPRICE,
|
||||
ItemTypes.ITEM_TYPE_NOSELLBACK,
|
||||
ItemTypes.ITEM_TYPE_ALWAYS_BANKABLE
|
||||
});
|
||||
itemBuilder.imageNumber((short) 243);
|
||||
itemBuilder.behaviourType((short) 1);
|
||||
itemBuilder.combatDamage(0);
|
||||
itemBuilder.decayTime(Long.MAX_VALUE);
|
||||
itemBuilder.dimensions(1, 1, 1);
|
||||
itemBuilder.primarySkill((int) NOID);
|
||||
itemBuilder.bodySpaces(EMPTY_BYTE_PRIMITIVE_ARRAY);
|
||||
itemBuilder.modelName("model.container.giftbox.");
|
||||
itemBuilder.difficulty(5.0f);
|
||||
itemBuilder.weightGrams(500);
|
||||
itemBuilder.material(Materials.MATERIAL_GOLD);
|
||||
itemBuilder.value(10000);
|
||||
itemBuilder.isTraded(true);
|
||||
|
||||
ItemTemplate template = itemBuilder.build();
|
||||
templateId = template.getTemplateId();
|
||||
logger.info(name+" TemplateID: "+templateId);
|
||||
}
|
||||
}
|
||||
45
src/main/java/mod/sin/items/caches/AnimalCache.java
Normal file
45
src/main/java/mod/sin/items/caches/AnimalCache.java
Normal file
@@ -0,0 +1,45 @@
|
||||
package mod.sin.items.caches;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
import org.gotti.wurmunlimited.modsupport.ItemTemplateBuilder;
|
||||
|
||||
import com.wurmonline.server.MiscConstants;
|
||||
import com.wurmonline.server.items.ItemTemplate;
|
||||
import com.wurmonline.server.items.ItemTypes;
|
||||
import com.wurmonline.server.items.Materials;
|
||||
|
||||
public class AnimalCache implements ItemTypes, MiscConstants {
|
||||
public static Logger logger = Logger.getLogger(AnimalCache.class.getName());
|
||||
public static int templateId;
|
||||
|
||||
public void createTemplate() throws IOException{
|
||||
String name = "animal cache";
|
||||
ItemTemplateBuilder itemBuilder = new ItemTemplateBuilder("mod.item.cache.animal");
|
||||
itemBuilder.name(name, "animal caches", "A cache containing a tokened animal. It might even be a unique creature.");
|
||||
itemBuilder.itemTypes(new short[]{
|
||||
ItemTypes.ITEM_TYPE_MAGIC,
|
||||
ItemTypes.ITEM_TYPE_FULLPRICE,
|
||||
ItemTypes.ITEM_TYPE_NOSELLBACK,
|
||||
ItemTypes.ITEM_TYPE_ALWAYS_BANKABLE
|
||||
});
|
||||
itemBuilder.imageNumber((short) 243);
|
||||
itemBuilder.behaviourType((short) 1);
|
||||
itemBuilder.combatDamage(0);
|
||||
itemBuilder.decayTime(Long.MAX_VALUE);
|
||||
itemBuilder.dimensions(1, 1, 1);
|
||||
itemBuilder.primarySkill((int) NOID);
|
||||
itemBuilder.bodySpaces(EMPTY_BYTE_PRIMITIVE_ARRAY);
|
||||
itemBuilder.modelName("model.container.giftbox.");
|
||||
itemBuilder.difficulty(5.0f);
|
||||
itemBuilder.weightGrams(500);
|
||||
itemBuilder.material(Materials.MATERIAL_GOLD);
|
||||
itemBuilder.value(1000);
|
||||
itemBuilder.isTraded(true);
|
||||
|
||||
ItemTemplate template = itemBuilder.build();
|
||||
templateId = template.getTemplateId();
|
||||
logger.info(name+" TemplateID: "+templateId);
|
||||
}
|
||||
}
|
||||
45
src/main/java/mod/sin/items/caches/ArmourCache.java
Normal file
45
src/main/java/mod/sin/items/caches/ArmourCache.java
Normal file
@@ -0,0 +1,45 @@
|
||||
package mod.sin.items.caches;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
import org.gotti.wurmunlimited.modsupport.ItemTemplateBuilder;
|
||||
|
||||
import com.wurmonline.server.MiscConstants;
|
||||
import com.wurmonline.server.items.ItemTemplate;
|
||||
import com.wurmonline.server.items.ItemTypes;
|
||||
import com.wurmonline.server.items.Materials;
|
||||
|
||||
public class ArmourCache implements ItemTypes, MiscConstants {
|
||||
public static Logger logger = Logger.getLogger(ArmourCache.class.getName());
|
||||
public static int templateId;
|
||||
|
||||
public void createTemplate() throws IOException{
|
||||
String name = "armour cache";
|
||||
ItemTemplateBuilder itemBuilder = new ItemTemplateBuilder("mod.item.cache.armour");
|
||||
itemBuilder.name(name, "armour caches", "A cache of armour. This armour may contain special properties.");
|
||||
itemBuilder.itemTypes(new short[]{
|
||||
ItemTypes.ITEM_TYPE_MAGIC,
|
||||
ItemTypes.ITEM_TYPE_FULLPRICE,
|
||||
ItemTypes.ITEM_TYPE_NOSELLBACK,
|
||||
ItemTypes.ITEM_TYPE_ALWAYS_BANKABLE
|
||||
});
|
||||
itemBuilder.imageNumber((short) 243);
|
||||
itemBuilder.behaviourType((short) 1);
|
||||
itemBuilder.combatDamage(0);
|
||||
itemBuilder.decayTime(Long.MAX_VALUE);
|
||||
itemBuilder.dimensions(1, 1, 1);
|
||||
itemBuilder.primarySkill((int) NOID);
|
||||
itemBuilder.bodySpaces(EMPTY_BYTE_PRIMITIVE_ARRAY);
|
||||
itemBuilder.modelName("model.container.giftbox.");
|
||||
itemBuilder.difficulty(5.0f);
|
||||
itemBuilder.weightGrams(500);
|
||||
itemBuilder.material(Materials.MATERIAL_GOLD);
|
||||
itemBuilder.value(1000);
|
||||
itemBuilder.isTraded(true);
|
||||
|
||||
ItemTemplate template = itemBuilder.build();
|
||||
templateId = template.getTemplateId();
|
||||
logger.info(name+" TemplateID: "+templateId);
|
||||
}
|
||||
}
|
||||
45
src/main/java/mod/sin/items/caches/ArtifactCache.java
Normal file
45
src/main/java/mod/sin/items/caches/ArtifactCache.java
Normal file
@@ -0,0 +1,45 @@
|
||||
package mod.sin.items.caches;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
import org.gotti.wurmunlimited.modsupport.ItemTemplateBuilder;
|
||||
|
||||
import com.wurmonline.server.MiscConstants;
|
||||
import com.wurmonline.server.items.ItemTemplate;
|
||||
import com.wurmonline.server.items.ItemTypes;
|
||||
import com.wurmonline.server.items.Materials;
|
||||
|
||||
public class ArtifactCache implements ItemTypes, MiscConstants {
|
||||
public static Logger logger = Logger.getLogger(ArtifactCache.class.getName());
|
||||
public static int templateId;
|
||||
|
||||
public void createTemplate() throws IOException{
|
||||
String name = "artifact cache";
|
||||
ItemTemplateBuilder itemBuilder = new ItemTemplateBuilder("mod.item.cache.artifact");
|
||||
itemBuilder.name(name, "artifact caches", "A cache containing a special artifact.");
|
||||
itemBuilder.itemTypes(new short[]{
|
||||
ItemTypes.ITEM_TYPE_MAGIC,
|
||||
ItemTypes.ITEM_TYPE_FULLPRICE,
|
||||
ItemTypes.ITEM_TYPE_NOSELLBACK,
|
||||
ItemTypes.ITEM_TYPE_ALWAYS_BANKABLE
|
||||
});
|
||||
itemBuilder.imageNumber((short) 243);
|
||||
itemBuilder.behaviourType((short) 1);
|
||||
itemBuilder.combatDamage(0);
|
||||
itemBuilder.decayTime(Long.MAX_VALUE);
|
||||
itemBuilder.dimensions(1, 1, 1);
|
||||
itemBuilder.primarySkill((int) NOID);
|
||||
itemBuilder.bodySpaces(EMPTY_BYTE_PRIMITIVE_ARRAY);
|
||||
itemBuilder.modelName("model.container.giftbox.");
|
||||
itemBuilder.difficulty(5.0f);
|
||||
itemBuilder.weightGrams(500);
|
||||
itemBuilder.material(Materials.MATERIAL_GOLD);
|
||||
itemBuilder.value(1000);
|
||||
itemBuilder.isTraded(true);
|
||||
|
||||
ItemTemplate template = itemBuilder.build();
|
||||
templateId = template.getTemplateId();
|
||||
logger.info(name+" TemplateID: "+templateId);
|
||||
}
|
||||
}
|
||||
45
src/main/java/mod/sin/items/caches/CrystalCache.java
Normal file
45
src/main/java/mod/sin/items/caches/CrystalCache.java
Normal file
@@ -0,0 +1,45 @@
|
||||
package mod.sin.items.caches;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
import org.gotti.wurmunlimited.modsupport.ItemTemplateBuilder;
|
||||
|
||||
import com.wurmonline.server.MiscConstants;
|
||||
import com.wurmonline.server.items.ItemTemplate;
|
||||
import com.wurmonline.server.items.ItemTypes;
|
||||
import com.wurmonline.server.items.Materials;
|
||||
|
||||
public class CrystalCache implements ItemTypes, MiscConstants {
|
||||
public static Logger logger = Logger.getLogger(CrystalCache.class.getName());
|
||||
public static int templateId;
|
||||
|
||||
public void createTemplate() throws IOException{
|
||||
String name = "crystal cache";
|
||||
ItemTemplateBuilder itemBuilder = new ItemTemplateBuilder("mod.item.cache.crystal");
|
||||
itemBuilder.name(name, "crystal caches", "A cache of magical crystals.");
|
||||
itemBuilder.itemTypes(new short[]{
|
||||
ItemTypes.ITEM_TYPE_MAGIC,
|
||||
ItemTypes.ITEM_TYPE_FULLPRICE,
|
||||
ItemTypes.ITEM_TYPE_NOSELLBACK,
|
||||
ItemTypes.ITEM_TYPE_ALWAYS_BANKABLE
|
||||
});
|
||||
itemBuilder.imageNumber((short) 243);
|
||||
itemBuilder.behaviourType((short) 1);
|
||||
itemBuilder.combatDamage(0);
|
||||
itemBuilder.decayTime(Long.MAX_VALUE);
|
||||
itemBuilder.dimensions(1, 1, 1);
|
||||
itemBuilder.primarySkill((int) NOID);
|
||||
itemBuilder.bodySpaces(EMPTY_BYTE_PRIMITIVE_ARRAY);
|
||||
itemBuilder.modelName("model.container.giftbox.");
|
||||
itemBuilder.difficulty(5.0f);
|
||||
itemBuilder.weightGrams(500);
|
||||
itemBuilder.material(Materials.MATERIAL_GOLD);
|
||||
itemBuilder.value(1000);
|
||||
itemBuilder.isTraded(true);
|
||||
|
||||
ItemTemplate template = itemBuilder.build();
|
||||
templateId = template.getTemplateId();
|
||||
logger.info(name+" TemplateID: "+templateId);
|
||||
}
|
||||
}
|
||||
45
src/main/java/mod/sin/items/caches/DragonCache.java
Normal file
45
src/main/java/mod/sin/items/caches/DragonCache.java
Normal file
@@ -0,0 +1,45 @@
|
||||
package mod.sin.items.caches;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
import org.gotti.wurmunlimited.modsupport.ItemTemplateBuilder;
|
||||
|
||||
import com.wurmonline.server.MiscConstants;
|
||||
import com.wurmonline.server.items.ItemTemplate;
|
||||
import com.wurmonline.server.items.ItemTypes;
|
||||
import com.wurmonline.server.items.Materials;
|
||||
|
||||
public class DragonCache implements ItemTypes, MiscConstants {
|
||||
public static Logger logger = Logger.getLogger(DragonCache.class.getName());
|
||||
public static int templateId;
|
||||
|
||||
public void createTemplate() throws IOException{
|
||||
String name = "dragon cache";
|
||||
ItemTemplateBuilder itemBuilder = new ItemTemplateBuilder("mod.item.cache.dragon");
|
||||
itemBuilder.name(name, "dragon caches", "A cache of dragon material. May also contain drake hide or dragonscale armour.");
|
||||
itemBuilder.itemTypes(new short[]{
|
||||
ItemTypes.ITEM_TYPE_MAGIC,
|
||||
ItemTypes.ITEM_TYPE_FULLPRICE,
|
||||
ItemTypes.ITEM_TYPE_NOSELLBACK,
|
||||
ItemTypes.ITEM_TYPE_ALWAYS_BANKABLE
|
||||
});
|
||||
itemBuilder.imageNumber((short) 243);
|
||||
itemBuilder.behaviourType((short) 1);
|
||||
itemBuilder.combatDamage(0);
|
||||
itemBuilder.decayTime(Long.MAX_VALUE);
|
||||
itemBuilder.dimensions(1, 1, 1);
|
||||
itemBuilder.primarySkill((int) NOID);
|
||||
itemBuilder.bodySpaces(EMPTY_BYTE_PRIMITIVE_ARRAY);
|
||||
itemBuilder.modelName("model.container.giftbox.");
|
||||
itemBuilder.difficulty(5.0f);
|
||||
itemBuilder.weightGrams(500);
|
||||
itemBuilder.material(Materials.MATERIAL_GOLD);
|
||||
itemBuilder.value(1000);
|
||||
itemBuilder.isTraded(true);
|
||||
|
||||
ItemTemplate template = itemBuilder.build();
|
||||
templateId = template.getTemplateId();
|
||||
logger.info(name+" TemplateID: "+templateId);
|
||||
}
|
||||
}
|
||||
45
src/main/java/mod/sin/items/caches/GemCache.java
Normal file
45
src/main/java/mod/sin/items/caches/GemCache.java
Normal file
@@ -0,0 +1,45 @@
|
||||
package mod.sin.items.caches;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
import org.gotti.wurmunlimited.modsupport.ItemTemplateBuilder;
|
||||
|
||||
import com.wurmonline.server.MiscConstants;
|
||||
import com.wurmonline.server.items.ItemTemplate;
|
||||
import com.wurmonline.server.items.ItemTypes;
|
||||
import com.wurmonline.server.items.Materials;
|
||||
|
||||
public class GemCache implements ItemTypes, MiscConstants {
|
||||
public static Logger logger = Logger.getLogger(GemCache.class.getName());
|
||||
public static int templateId;
|
||||
|
||||
public void createTemplate() throws IOException{
|
||||
String name = "gem cache";
|
||||
ItemTemplateBuilder itemBuilder = new ItemTemplateBuilder("mod.item.cache.gem");
|
||||
itemBuilder.name(name, "gem caches", "A cache of gems. May also contain star gems.");
|
||||
itemBuilder.itemTypes(new short[]{
|
||||
ItemTypes.ITEM_TYPE_MAGIC,
|
||||
ItemTypes.ITEM_TYPE_FULLPRICE,
|
||||
ItemTypes.ITEM_TYPE_NOSELLBACK,
|
||||
ItemTypes.ITEM_TYPE_ALWAYS_BANKABLE
|
||||
});
|
||||
itemBuilder.imageNumber((short) 243);
|
||||
itemBuilder.behaviourType((short) 1);
|
||||
itemBuilder.combatDamage(0);
|
||||
itemBuilder.decayTime(Long.MAX_VALUE);
|
||||
itemBuilder.dimensions(1, 1, 1);
|
||||
itemBuilder.primarySkill((int) NOID);
|
||||
itemBuilder.bodySpaces(EMPTY_BYTE_PRIMITIVE_ARRAY);
|
||||
itemBuilder.modelName("model.container.giftbox.");
|
||||
itemBuilder.difficulty(5.0f);
|
||||
itemBuilder.weightGrams(500);
|
||||
itemBuilder.material(Materials.MATERIAL_GOLD);
|
||||
itemBuilder.value(1000);
|
||||
itemBuilder.isTraded(true);
|
||||
|
||||
ItemTemplate template = itemBuilder.build();
|
||||
templateId = template.getTemplateId();
|
||||
logger.info(name+" TemplateID: "+templateId);
|
||||
}
|
||||
}
|
||||
45
src/main/java/mod/sin/items/caches/MoonCache.java
Normal file
45
src/main/java/mod/sin/items/caches/MoonCache.java
Normal file
@@ -0,0 +1,45 @@
|
||||
package mod.sin.items.caches;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
import org.gotti.wurmunlimited.modsupport.ItemTemplateBuilder;
|
||||
|
||||
import com.wurmonline.server.MiscConstants;
|
||||
import com.wurmonline.server.items.ItemTemplate;
|
||||
import com.wurmonline.server.items.ItemTypes;
|
||||
import com.wurmonline.server.items.Materials;
|
||||
|
||||
public class MoonCache implements ItemTypes, MiscConstants {
|
||||
public static Logger logger = Logger.getLogger(MoonCache.class.getName());
|
||||
public static int templateId;
|
||||
|
||||
public void createTemplate() throws IOException{
|
||||
String name = "moon cache";
|
||||
ItemTemplateBuilder itemBuilder = new ItemTemplateBuilder("mod.item.cache.moon");
|
||||
itemBuilder.name(name, "moon caches", "A cache of moon metals. May also contain items created from moon metals.");
|
||||
itemBuilder.itemTypes(new short[]{
|
||||
ItemTypes.ITEM_TYPE_MAGIC,
|
||||
ItemTypes.ITEM_TYPE_FULLPRICE,
|
||||
ItemTypes.ITEM_TYPE_NOSELLBACK,
|
||||
ItemTypes.ITEM_TYPE_ALWAYS_BANKABLE
|
||||
});
|
||||
itemBuilder.imageNumber((short) 243);
|
||||
itemBuilder.behaviourType((short) 1);
|
||||
itemBuilder.combatDamage(0);
|
||||
itemBuilder.decayTime(Long.MAX_VALUE);
|
||||
itemBuilder.dimensions(1, 1, 1);
|
||||
itemBuilder.primarySkill((int) NOID);
|
||||
itemBuilder.bodySpaces(EMPTY_BYTE_PRIMITIVE_ARRAY);
|
||||
itemBuilder.modelName("model.container.giftbox.");
|
||||
itemBuilder.difficulty(5.0f);
|
||||
itemBuilder.weightGrams(500);
|
||||
itemBuilder.material(Materials.MATERIAL_GOLD);
|
||||
itemBuilder.value(1000);
|
||||
itemBuilder.isTraded(true);
|
||||
|
||||
ItemTemplate template = itemBuilder.build();
|
||||
templateId = template.getTemplateId();
|
||||
logger.info(name+" TemplateID: "+templateId);
|
||||
}
|
||||
}
|
||||
45
src/main/java/mod/sin/items/caches/PotionCache.java
Normal file
45
src/main/java/mod/sin/items/caches/PotionCache.java
Normal file
@@ -0,0 +1,45 @@
|
||||
package mod.sin.items.caches;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
import org.gotti.wurmunlimited.modsupport.ItemTemplateBuilder;
|
||||
|
||||
import com.wurmonline.server.MiscConstants;
|
||||
import com.wurmonline.server.items.ItemTemplate;
|
||||
import com.wurmonline.server.items.ItemTypes;
|
||||
import com.wurmonline.server.items.Materials;
|
||||
|
||||
public class PotionCache implements ItemTypes, MiscConstants {
|
||||
public static Logger logger = Logger.getLogger(PotionCache.class.getName());
|
||||
public static int templateId;
|
||||
|
||||
public void createTemplate() throws IOException{
|
||||
String name = "potion cache";
|
||||
ItemTemplateBuilder itemBuilder = new ItemTemplateBuilder("mod.item.cache.potion");
|
||||
itemBuilder.name(name, "potion caches", "A cache of potions.");
|
||||
itemBuilder.itemTypes(new short[]{
|
||||
ItemTypes.ITEM_TYPE_MAGIC,
|
||||
ItemTypes.ITEM_TYPE_FULLPRICE,
|
||||
ItemTypes.ITEM_TYPE_NOSELLBACK,
|
||||
ItemTypes.ITEM_TYPE_ALWAYS_BANKABLE
|
||||
});
|
||||
itemBuilder.imageNumber((short) 243);
|
||||
itemBuilder.behaviourType((short) 1);
|
||||
itemBuilder.combatDamage(0);
|
||||
itemBuilder.decayTime(Long.MAX_VALUE);
|
||||
itemBuilder.dimensions(1, 1, 1);
|
||||
itemBuilder.primarySkill((int) NOID);
|
||||
itemBuilder.bodySpaces(EMPTY_BYTE_PRIMITIVE_ARRAY);
|
||||
itemBuilder.modelName("model.container.giftbox.");
|
||||
itemBuilder.difficulty(5.0f);
|
||||
itemBuilder.weightGrams(500);
|
||||
itemBuilder.material(Materials.MATERIAL_GOLD);
|
||||
itemBuilder.value(1000);
|
||||
itemBuilder.isTraded(true);
|
||||
|
||||
ItemTemplate template = itemBuilder.build();
|
||||
templateId = template.getTemplateId();
|
||||
logger.info(name+" TemplateID: "+templateId);
|
||||
}
|
||||
}
|
||||
45
src/main/java/mod/sin/items/caches/RiftCache.java
Normal file
45
src/main/java/mod/sin/items/caches/RiftCache.java
Normal file
@@ -0,0 +1,45 @@
|
||||
package mod.sin.items.caches;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
import org.gotti.wurmunlimited.modsupport.ItemTemplateBuilder;
|
||||
|
||||
import com.wurmonline.server.MiscConstants;
|
||||
import com.wurmonline.server.items.ItemTemplate;
|
||||
import com.wurmonline.server.items.ItemTypes;
|
||||
import com.wurmonline.server.items.Materials;
|
||||
|
||||
public class RiftCache implements ItemTypes, MiscConstants {
|
||||
public static Logger logger = Logger.getLogger(RiftCache.class.getName());
|
||||
public static int templateId;
|
||||
|
||||
public void createTemplate() throws IOException{
|
||||
String name = "rift cache";
|
||||
ItemTemplateBuilder itemBuilder = new ItemTemplateBuilder("mod.item.cache.rift");
|
||||
itemBuilder.name(name, "rift caches", "A cache of rift material.");
|
||||
itemBuilder.itemTypes(new short[]{
|
||||
ItemTypes.ITEM_TYPE_MAGIC,
|
||||
ItemTypes.ITEM_TYPE_FULLPRICE,
|
||||
ItemTypes.ITEM_TYPE_NOSELLBACK,
|
||||
ItemTypes.ITEM_TYPE_ALWAYS_BANKABLE
|
||||
});
|
||||
itemBuilder.imageNumber((short) 243);
|
||||
itemBuilder.behaviourType((short) 1);
|
||||
itemBuilder.combatDamage(0);
|
||||
itemBuilder.decayTime(Long.MAX_VALUE);
|
||||
itemBuilder.dimensions(1, 1, 1);
|
||||
itemBuilder.primarySkill((int) NOID);
|
||||
itemBuilder.bodySpaces(EMPTY_BYTE_PRIMITIVE_ARRAY);
|
||||
itemBuilder.modelName("model.container.giftbox.");
|
||||
itemBuilder.difficulty(5.0f);
|
||||
itemBuilder.weightGrams(500);
|
||||
itemBuilder.material(Materials.MATERIAL_GOLD);
|
||||
itemBuilder.value(1000);
|
||||
itemBuilder.isTraded(true);
|
||||
|
||||
ItemTemplate template = itemBuilder.build();
|
||||
templateId = template.getTemplateId();
|
||||
logger.info(name+" TemplateID: "+templateId);
|
||||
}
|
||||
}
|
||||
45
src/main/java/mod/sin/items/caches/ToolCache.java
Normal file
45
src/main/java/mod/sin/items/caches/ToolCache.java
Normal file
@@ -0,0 +1,45 @@
|
||||
package mod.sin.items.caches;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
import org.gotti.wurmunlimited.modsupport.ItemTemplateBuilder;
|
||||
|
||||
import com.wurmonline.server.MiscConstants;
|
||||
import com.wurmonline.server.items.ItemTemplate;
|
||||
import com.wurmonline.server.items.ItemTypes;
|
||||
import com.wurmonline.server.items.Materials;
|
||||
|
||||
public class ToolCache implements ItemTypes, MiscConstants {
|
||||
public static Logger logger = Logger.getLogger(ToolCache.class.getName());
|
||||
public static int templateId;
|
||||
|
||||
public void createTemplate() throws IOException{
|
||||
String name = "tool cache";
|
||||
ItemTemplateBuilder itemBuilder = new ItemTemplateBuilder("mod.item.cache.tool");
|
||||
itemBuilder.name(name, "tool caches", "A cache containing a few tools. These tools could have special properties.");
|
||||
itemBuilder.itemTypes(new short[]{
|
||||
ItemTypes.ITEM_TYPE_MAGIC,
|
||||
ItemTypes.ITEM_TYPE_FULLPRICE,
|
||||
ItemTypes.ITEM_TYPE_NOSELLBACK,
|
||||
ItemTypes.ITEM_TYPE_ALWAYS_BANKABLE
|
||||
});
|
||||
itemBuilder.imageNumber((short) 243);
|
||||
itemBuilder.behaviourType((short) 1);
|
||||
itemBuilder.combatDamage(0);
|
||||
itemBuilder.decayTime(Long.MAX_VALUE);
|
||||
itemBuilder.dimensions(1, 1, 1);
|
||||
itemBuilder.primarySkill((int) NOID);
|
||||
itemBuilder.bodySpaces(EMPTY_BYTE_PRIMITIVE_ARRAY);
|
||||
itemBuilder.modelName("model.container.giftbox.");
|
||||
itemBuilder.difficulty(5.0f);
|
||||
itemBuilder.weightGrams(500);
|
||||
itemBuilder.material(Materials.MATERIAL_GOLD);
|
||||
itemBuilder.value(1000);
|
||||
itemBuilder.isTraded(true);
|
||||
|
||||
ItemTemplate template = itemBuilder.build();
|
||||
templateId = template.getTemplateId();
|
||||
logger.info(name+" TemplateID: "+templateId);
|
||||
}
|
||||
}
|
||||
45
src/main/java/mod/sin/items/caches/TreasureMapCache.java
Normal file
45
src/main/java/mod/sin/items/caches/TreasureMapCache.java
Normal file
@@ -0,0 +1,45 @@
|
||||
package mod.sin.items.caches;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
import org.gotti.wurmunlimited.modsupport.ItemTemplateBuilder;
|
||||
|
||||
import com.wurmonline.server.MiscConstants;
|
||||
import com.wurmonline.server.items.ItemTemplate;
|
||||
import com.wurmonline.server.items.ItemTypes;
|
||||
import com.wurmonline.server.items.Materials;
|
||||
|
||||
public class TreasureMapCache implements ItemTypes, MiscConstants {
|
||||
public static Logger logger = Logger.getLogger(TreasureMapCache.class.getName());
|
||||
public static int templateId;
|
||||
|
||||
public void createTemplate() throws IOException{
|
||||
String name = "treasure map cache";
|
||||
ItemTemplateBuilder itemBuilder = new ItemTemplateBuilder("mod.item.cache.treasure.map");
|
||||
itemBuilder.name(name, "treasure map caches", "A cache containing a new treasure map.");
|
||||
itemBuilder.itemTypes(new short[]{
|
||||
ItemTypes.ITEM_TYPE_MAGIC,
|
||||
ItemTypes.ITEM_TYPE_FULLPRICE,
|
||||
ItemTypes.ITEM_TYPE_NOSELLBACK,
|
||||
ItemTypes.ITEM_TYPE_ALWAYS_BANKABLE
|
||||
});
|
||||
itemBuilder.imageNumber((short) 243);
|
||||
itemBuilder.behaviourType((short) 1);
|
||||
itemBuilder.combatDamage(0);
|
||||
itemBuilder.decayTime(Long.MAX_VALUE);
|
||||
itemBuilder.dimensions(1, 1, 1);
|
||||
itemBuilder.primarySkill((int) NOID);
|
||||
itemBuilder.bodySpaces(EMPTY_BYTE_PRIMITIVE_ARRAY);
|
||||
itemBuilder.modelName("model.container.giftbox.");
|
||||
itemBuilder.difficulty(5.0f);
|
||||
itemBuilder.weightGrams(500);
|
||||
itemBuilder.material(Materials.MATERIAL_GOLD);
|
||||
itemBuilder.value(1000000);
|
||||
itemBuilder.isTraded(true);
|
||||
|
||||
ItemTemplate template = itemBuilder.build();
|
||||
templateId = template.getTemplateId();
|
||||
logger.info(name+" TemplateID: "+templateId);
|
||||
}
|
||||
}
|
||||
45
src/main/java/mod/sin/items/caches/WeaponCache.java
Normal file
45
src/main/java/mod/sin/items/caches/WeaponCache.java
Normal file
@@ -0,0 +1,45 @@
|
||||
package mod.sin.items.caches;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
import org.gotti.wurmunlimited.modsupport.ItemTemplateBuilder;
|
||||
|
||||
import com.wurmonline.server.MiscConstants;
|
||||
import com.wurmonline.server.items.ItemTemplate;
|
||||
import com.wurmonline.server.items.ItemTypes;
|
||||
import com.wurmonline.server.items.Materials;
|
||||
|
||||
public class WeaponCache implements ItemTypes, MiscConstants {
|
||||
public static Logger logger = Logger.getLogger(WeaponCache.class.getName());
|
||||
public static int templateId;
|
||||
|
||||
public void createTemplate() throws IOException{
|
||||
String name = "weapon cache";
|
||||
ItemTemplateBuilder itemBuilder = new ItemTemplateBuilder("mod.item.cache.weapon");
|
||||
itemBuilder.name(name, "weapon caches", "A cache containing a few weapons. These weapons could have special properties.");
|
||||
itemBuilder.itemTypes(new short[]{
|
||||
ItemTypes.ITEM_TYPE_MAGIC,
|
||||
ItemTypes.ITEM_TYPE_FULLPRICE,
|
||||
ItemTypes.ITEM_TYPE_NOSELLBACK,
|
||||
ItemTypes.ITEM_TYPE_ALWAYS_BANKABLE
|
||||
});
|
||||
itemBuilder.imageNumber((short) 243);
|
||||
itemBuilder.behaviourType((short) 1);
|
||||
itemBuilder.combatDamage(0);
|
||||
itemBuilder.decayTime(Long.MAX_VALUE);
|
||||
itemBuilder.dimensions(1, 1, 1);
|
||||
itemBuilder.primarySkill((int) NOID);
|
||||
itemBuilder.bodySpaces(EMPTY_BYTE_PRIMITIVE_ARRAY);
|
||||
itemBuilder.modelName("model.container.giftbox.");
|
||||
itemBuilder.difficulty(5.0f);
|
||||
itemBuilder.weightGrams(500);
|
||||
itemBuilder.material(Materials.MATERIAL_GOLD);
|
||||
itemBuilder.value(1000);
|
||||
itemBuilder.isTraded(true);
|
||||
|
||||
ItemTemplate template = itemBuilder.build();
|
||||
templateId = template.getTemplateId();
|
||||
logger.info(name+" TemplateID: "+templateId);
|
||||
}
|
||||
}
|
||||
70
src/main/java/mod/sin/weapons/BattleYoyo.java
Normal file
70
src/main/java/mod/sin/weapons/BattleYoyo.java
Normal file
@@ -0,0 +1,70 @@
|
||||
package mod.sin.weapons;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
import org.gotti.wurmunlimited.modsupport.ItemTemplateBuilder;
|
||||
|
||||
import com.wurmonline.server.MiscConstants;
|
||||
import com.wurmonline.server.items.CreationCategories;
|
||||
import com.wurmonline.server.items.CreationEntryCreator;
|
||||
import com.wurmonline.server.items.ItemList;
|
||||
import com.wurmonline.server.items.ItemTemplate;
|
||||
import com.wurmonline.server.items.ItemTypes;
|
||||
import com.wurmonline.server.items.Materials;
|
||||
import com.wurmonline.server.skills.SkillList;
|
||||
|
||||
public class BattleYoyo implements ItemTypes, MiscConstants {
|
||||
public static Logger logger = Logger.getLogger(BattleYoyo.class.getName());
|
||||
public static int templateId;
|
||||
private String name = "battle yoyo";
|
||||
public void createTemplate() throws IOException{
|
||||
/* ItemTemplateCreator.createItemTemplate(337,
|
||||
* "Hammer of Magranon", "hammers of magranon", "excellent", "good", "ok", "poor",
|
||||
* "A huge brutal warhammer made totally from bronze.",
|
||||
* new short[]{52, 48, 69, 37, 14, 40, 71},
|
||||
* 1339, 35, 80, Long.MAX_VALUE, 5, 10, 80, 10070, MiscConstants.EMPTY_BYTE_PRIMITIVE_ARRAY,
|
||||
* "model.artifact.hammerhuge.", 99.0f, 7000, 31, 3000000, false);
|
||||
*/
|
||||
ItemTemplateBuilder itemBuilder = new ItemTemplateBuilder("mod.item.battle.yoyo");
|
||||
itemBuilder.name(name, "battle yoyos", "A reinforced yoyo meant for combat. Designed to see whether walking the dog is an effective murder technique.");
|
||||
itemBuilder.itemTypes(new short[]{ // new short[]{108, 44, 147, 22, 37, 14, 189} - Large Maul
|
||||
ItemTypes.ITEM_TYPE_NAMED,
|
||||
ItemTypes.ITEM_TYPE_REPAIRABLE,
|
||||
ItemTypes.ITEM_TYPE_WOOD,
|
||||
ItemTypes.ITEM_TYPE_WEAPON,
|
||||
ItemTypes.ITEM_TYPE_WEAPON_CRUSH
|
||||
});
|
||||
itemBuilder.imageNumber((short) 761);
|
||||
itemBuilder.behaviourType((short) 35);
|
||||
itemBuilder.combatDamage(35);
|
||||
itemBuilder.decayTime(Long.MAX_VALUE);
|
||||
itemBuilder.dimensions(5, 10, 80);
|
||||
itemBuilder.primarySkill(SkillList.YOYO);
|
||||
itemBuilder.bodySpaces(MiscConstants.EMPTY_BYTE_PRIMITIVE_ARRAY);
|
||||
itemBuilder.modelName("model.toy.yoyo.");
|
||||
itemBuilder.difficulty(40.0f);
|
||||
itemBuilder.weightGrams(1000);
|
||||
itemBuilder.material(Materials.MATERIAL_WOOD_BIRCH);
|
||||
itemBuilder.value(1000);
|
||||
|
||||
ItemTemplate template = itemBuilder.build();
|
||||
templateId = template.getTemplateId();
|
||||
logger.info(name+" TemplateID: "+templateId);
|
||||
}
|
||||
|
||||
public void initCreationEntry(){
|
||||
logger.info("initCreationEntry()");
|
||||
if(templateId > 0){
|
||||
logger.info("Creating "+name+" creation entry, ID = "+templateId);
|
||||
CreationEntryCreator.createSimpleEntry(SkillList.TOYMAKING, ItemList.clothString, ItemList.shaft,
|
||||
templateId, false, true, 0.0f, false, false, CreationCategories.WEAPONS);
|
||||
//final AdvancedCreationEntry entry = CreationEntryCreator.createAdvancedEntry(SkillList.SMITHING_WEAPON_HEADS,
|
||||
// ItemList.ironBand, ItemList.shaft, templateId, false, false, 0f, true, false, CreationCategories.TOOLS);
|
||||
//entry.addRequirement(new CreationRequirement(1, ItemList.woodenHandleSword, 2, true));
|
||||
//entry.addRequirement(new CreationRequirement(2, ItemList.nailsIronSmall, 1, true));
|
||||
}else{
|
||||
logger.info(name+" does not have a template ID on creation entry.");
|
||||
}
|
||||
}
|
||||
}
|
||||
70
src/main/java/mod/sin/weapons/Club.java
Normal file
70
src/main/java/mod/sin/weapons/Club.java
Normal file
@@ -0,0 +1,70 @@
|
||||
package mod.sin.weapons;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
import org.gotti.wurmunlimited.modsupport.ItemTemplateBuilder;
|
||||
|
||||
import com.wurmonline.server.MiscConstants;
|
||||
import com.wurmonline.server.items.CreationCategories;
|
||||
import com.wurmonline.server.items.CreationEntryCreator;
|
||||
import com.wurmonline.server.items.ItemList;
|
||||
import com.wurmonline.server.items.ItemTemplate;
|
||||
import com.wurmonline.server.items.ItemTypes;
|
||||
import com.wurmonline.server.items.Materials;
|
||||
import com.wurmonline.server.skills.SkillList;
|
||||
|
||||
public class Club implements ItemTypes, MiscConstants {
|
||||
public static Logger logger = Logger.getLogger(Club.class.getName());
|
||||
public static int templateId;
|
||||
private String name = "club";
|
||||
public void createTemplate() throws IOException{
|
||||
/* ItemTemplateCreator.createItemTemplate(337,
|
||||
* "Hammer of Magranon", "hammers of magranon", "excellent", "good", "ok", "poor",
|
||||
* "A huge brutal warhammer made totally from bronze.",
|
||||
* new short[]{52, 48, 69, 37, 14, 40, 71},
|
||||
* 1339, 35, 80, Long.MAX_VALUE, 5, 10, 80, 10070, MiscConstants.EMPTY_BYTE_PRIMITIVE_ARRAY,
|
||||
* "model.artifact.hammerhuge.", 99.0f, 7000, 31, 3000000, false);
|
||||
*/
|
||||
ItemTemplateBuilder itemBuilder = new ItemTemplateBuilder("mod.item.club");
|
||||
itemBuilder.name(name, "clubs", "A blunt weapon.");
|
||||
itemBuilder.itemTypes(new short[]{ // new short[]{108, 44, 147, 22, 37, 14, 189} - Large Maul
|
||||
ItemTypes.ITEM_TYPE_NAMED,
|
||||
ItemTypes.ITEM_TYPE_REPAIRABLE,
|
||||
ItemTypes.ITEM_TYPE_WOOD,
|
||||
ItemTypes.ITEM_TYPE_WEAPON,
|
||||
ItemTypes.ITEM_TYPE_WEAPON_CRUSH
|
||||
});
|
||||
itemBuilder.imageNumber((short) 1239);
|
||||
itemBuilder.behaviourType((short) 35);
|
||||
itemBuilder.combatDamage(35);
|
||||
itemBuilder.decayTime(Long.MAX_VALUE);
|
||||
itemBuilder.dimensions(5, 10, 80);
|
||||
itemBuilder.primarySkill(SkillList.CLUB_HUGE);
|
||||
itemBuilder.bodySpaces(MiscConstants.EMPTY_BYTE_PRIMITIVE_ARRAY);
|
||||
itemBuilder.modelName("model.weapon.club.huge.");
|
||||
itemBuilder.difficulty(40.0f);
|
||||
itemBuilder.weightGrams(8000);
|
||||
itemBuilder.material(Materials.MATERIAL_WOOD_BIRCH);
|
||||
itemBuilder.value(1000);
|
||||
|
||||
ItemTemplate template = itemBuilder.build();
|
||||
templateId = template.getTemplateId();
|
||||
logger.info(name+" TemplateID: "+templateId);
|
||||
}
|
||||
|
||||
public void initCreationEntry(){
|
||||
logger.info("initCreationEntry()");
|
||||
if(templateId > 0){
|
||||
logger.info("Creating "+name+" creation entry, ID = "+templateId);
|
||||
CreationEntryCreator.createSimpleEntry(SkillList.CARPENTRY_FINE, ItemList.knifeCarving, ItemList.log,
|
||||
templateId, false, true, 0.0f, false, false, CreationCategories.WEAPONS);
|
||||
//final AdvancedCreationEntry entry = CreationEntryCreator.createAdvancedEntry(SkillList.SMITHING_WEAPON_HEADS,
|
||||
// ItemList.ironBand, ItemList.shaft, templateId, false, false, 0f, true, false, CreationCategories.TOOLS);
|
||||
//entry.addRequirement(new CreationRequirement(1, ItemList.woodenHandleSword, 2, true));
|
||||
//entry.addRequirement(new CreationRequirement(2, ItemList.nailsIronSmall, 1, true));
|
||||
}else{
|
||||
logger.info(name+" does not have a template ID on creation entry.");
|
||||
}
|
||||
}
|
||||
}
|
||||
71
src/main/java/mod/sin/weapons/Eviscerator.java
Normal file
71
src/main/java/mod/sin/weapons/Eviscerator.java
Normal file
@@ -0,0 +1,71 @@
|
||||
package mod.sin.weapons;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
import org.gotti.wurmunlimited.modsupport.ItemTemplateBuilder;
|
||||
|
||||
import com.wurmonline.server.MiscConstants;
|
||||
import com.wurmonline.server.items.CreationCategories;
|
||||
import com.wurmonline.server.items.CreationEntryCreator;
|
||||
import com.wurmonline.server.items.ItemTemplate;
|
||||
import com.wurmonline.server.items.ItemTypes;
|
||||
import com.wurmonline.server.items.Materials;
|
||||
import com.wurmonline.server.skills.SkillList;
|
||||
|
||||
import mod.sin.weapons.titan.WilhelmsWrath;
|
||||
|
||||
public class Eviscerator implements ItemTypes, MiscConstants {
|
||||
public static Logger logger = Logger.getLogger(Eviscerator.class.getName());
|
||||
public static int templateId;
|
||||
private String name = "eviscerator";
|
||||
public void createTemplate() throws IOException{
|
||||
/* ItemTemplateCreator.createItemTemplate(337,
|
||||
* "Hammer of Magranon", "hammers of magranon", "excellent", "good", "ok", "poor",
|
||||
* "A huge brutal warhammer made totally from bronze.",
|
||||
* new short[]{52, 48, 69, 37, 14, 40, 71},
|
||||
* 1339, 35, 80, Long.MAX_VALUE, 5, 10, 80, 10070, MiscConstants.EMPTY_BYTE_PRIMITIVE_ARRAY,
|
||||
* "model.artifact.hammerhuge.", 99.0f, 7000, 31, 3000000, false);
|
||||
*/
|
||||
ItemTemplateBuilder itemBuilder = new ItemTemplateBuilder("mod.item.eviscerator");
|
||||
itemBuilder.name(name, "eviscerators", "A one-handed scythe of despair, optimal for the Genocide of entire species.");
|
||||
itemBuilder.itemTypes(new short[]{ // new short[]{108, 44, 147, 22, 37, 14, 189} - Large Maul
|
||||
ItemTypes.ITEM_TYPE_NAMED,
|
||||
ItemTypes.ITEM_TYPE_REPAIRABLE,
|
||||
ItemTypes.ITEM_TYPE_METAL,
|
||||
ItemTypes.ITEM_TYPE_WEAPON,
|
||||
ItemTypes.ITEM_TYPE_WEAPON_SLASH
|
||||
});
|
||||
itemBuilder.imageNumber((short) 753);
|
||||
itemBuilder.behaviourType((short) 35);
|
||||
itemBuilder.combatDamage(40);
|
||||
itemBuilder.decayTime(Long.MAX_VALUE);
|
||||
itemBuilder.dimensions(5, 10, 80);
|
||||
itemBuilder.primarySkill(SkillList.SCYTHE);
|
||||
itemBuilder.bodySpaces(MiscConstants.EMPTY_BYTE_PRIMITIVE_ARRAY);
|
||||
itemBuilder.modelName("model.weapon.scythe.");
|
||||
itemBuilder.difficulty(90.0f);
|
||||
itemBuilder.weightGrams(500);
|
||||
itemBuilder.material(Materials.MATERIAL_ADAMANTINE);
|
||||
itemBuilder.value(1000);
|
||||
|
||||
ItemTemplate template = itemBuilder.build();
|
||||
templateId = template.getTemplateId();
|
||||
logger.info(name+" TemplateID: "+templateId);
|
||||
}
|
||||
|
||||
public void initCreationEntry(){
|
||||
logger.info("initCreationEntry()");
|
||||
if(templateId > 0){
|
||||
logger.info("Creating "+name+" creation entry, ID = "+templateId);
|
||||
CreationEntryCreator.createSimpleEntry(SkillList.GROUP_SMITHING_WEAPONSMITHING, WilhelmsWrath.templateId, WilhelmsWrath.templateId,
|
||||
templateId, true, true, 0.0f, false, false, CreationCategories.WEAPONS);
|
||||
//final AdvancedCreationEntry entry = CreationEntryCreator.createAdvancedEntry(SkillList.SMITHING_WEAPON_HEADS,
|
||||
// ItemList.ironBand, ItemList.shaft, templateId, false, false, 0f, true, false, CreationCategories.TOOLS);
|
||||
//entry.addRequirement(new CreationRequirement(1, ItemList.woodenHandleSword, 2, true));
|
||||
//entry.addRequirement(new CreationRequirement(2, ItemList.nailsIronSmall, 1, true));
|
||||
}else{
|
||||
logger.info(name+" does not have a template ID on creation entry.");
|
||||
}
|
||||
}
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user