package ring.mobiles;
//Static import for all of the BodyPart constants.
import static ring.mobiles.Body.*;
/**
* The BodyFactory class creates stock bodies for a host of creatures. There
* are bodies available for all the default races, as well as generic/specific
* NPC body creation methods.
* @author projectmoon
*
*/
public class BodyFactory {
// createMediumHumanoidBody method.
// This method will create a body used by basically all of the PC races in
// the game except
// for ogres, gnomes, and illithids. It also creates a lot of the NPC
// races/mobile races.
public static Body createMediumHumanoidBody() {
Body body = new Body();
body.addPart(MEDIUM_BODY);
body.addPart(LEFT_ARM);
body.addPart(RIGHT_ARM);
body.addPart(LEFT_FINGER);
body.addPart(RIGHT_FINGER);
body.addPart(HEAD);
body.addPart(FACE);
body.addPart(LEFT_HAND);
body.addPart(RIGHT_HAND);
body.addPart(LEFT_WRIST);
body.addPart(RIGHT_WRIST);
body.addPart(LEFT_LEG);
body.addPart(RIGHT_LEG);
body.addPart(LEFT_FOOT);
body.addPart(RIGHT_FOOT);
body.addPart(SHOULDER);
body.addPart(SHOULDER);
body.addPart(WAIST);
return body;
}
// createSmallHumanoidBody method.
// This makes a small humanoid. It is used for Gnomes for the most part.
public static Body createSmallHumanoidBody() {
Body body = new Body();
body.addPart(SMALL_BODY);
body.addPart(LEFT_ARM);
body.addPart(RIGHT_ARM);
body.addPart(LEFT_FINGER);
body.addPart(RIGHT_FINGER);
body.addPart(HEAD);
body.addPart(FACE);
body.addPart(LEFT_HAND);
body.addPart(RIGHT_HAND);
body.addPart(LEFT_WRIST);
body.addPart(RIGHT_WRIST);
body.addPart(LEFT_LEG);
body.addPart(RIGHT_LEG);
body.addPart(LEFT_FOOT);
body.addPart(RIGHT_FOOT);
body.addPart(SHOULDER);
body.addPart(SHOULDER);
body.addPart(WAIST);
return body;
}
// createIllithidBody method.
// This method creates the body of an illithid. The illithid only has one
// difference--
// 4 tentacles. These tentacles give it the ability to brain drain and also
// wear tentacle
// weapons.
public static Body createIllithidBody() {
Body body = new Body();
body.addPart(MEDIUM_BODY);
body.addPart(LEFT_ARM);
body.addPart(RIGHT_ARM);
body.addPart(LEFT_FINGER);
body.addPart(RIGHT_FINGER);
body.addPart(HEAD);
body.addPart(FACE);
body.addPart(LEFT_HAND);
body.addPart(RIGHT_HAND);
body.addPart(LEFT_WRIST);
body.addPart(RIGHT_WRIST);
body.addPart(LEFT_LEG);
body.addPart(RIGHT_LEG);
body.addPart(LEFT_FOOT);
body.addPart(RIGHT_FOOT);
body.addPart(SHOULDER);
body.addPart(SHOULDER);
body.addPart(WAIST);
body.addPart(TENTACLES);
body.addPart(TENTACLES);
body.addPart(TENTACLES);
body.addPart(TENTACLES);
return body;
}
// createLargeHumanoid method.
// This method creates a large humanoid body. This is used for ogres,
// giants, and the like.
public static Body createLargeHumanoidBody() {
Body body = new Body();
body.addPart(LARGE_BODY);
body.addPart(LEFT_ARM);
body.addPart(RIGHT_ARM);
body.addPart(LEFT_FINGER);
body.addPart(RIGHT_FINGER);
body.addPart(HEAD);
body.addPart(FACE);
body.addPart(LEFT_HAND);
body.addPart(RIGHT_HAND);
body.addPart(LEFT_WRIST);
body.addPart(RIGHT_WRIST);
body.addPart(LEFT_LEG);
body.addPart(RIGHT_LEG);
body.addPart(LEFT_FOOT);
body.addPart(RIGHT_FOOT);
body.addPart(SHOULDER);
body.addPart(SHOULDER);
body.addPart(WAIST);
return body;
}
// createSmallQuadrapedBody method.
// This method creates a small quadraped such as a rabbit or fox. This is
// used for most
// animal monsters in the game. However, there are some bodies that can
// create bigger
// versions of quadrapeds.
public static Body createSmallQuadrapedBody() {
Body body = new Body();
body.addPart(SMALL_BODY);
body.addPart(HEAD);
body.addPart(FACE);
body.addPart(LEFT_LEG);
body.addPart(RIGHT_LEG);
body.addPart(LEFT_FOOT);
body.addPart(RIGHT_FOOT);
body.addPart(LEFT_LEG);
body.addPart(RIGHT_LEG);
body.addPart(LEFT_FOOT);
body.addPart(RIGHT_FOOT);
body.addPart(WAIST);
return body;
}
// createMediumQuadrapedBody method.
// This method creates a medium-sized quadraped body.
public static Body createMediumQuadrapedBody() {
Body body = new Body();
body.addPart(MEDIUM_BODY);
body.addPart(HEAD);
body.addPart(FACE);
body.addPart(LEFT_LEG);
body.addPart(RIGHT_LEG);
body.addPart(LEFT_FOOT);
body.addPart(RIGHT_FOOT);
body.addPart(LEFT_LEG);
body.addPart(RIGHT_LEG);
body.addPart(LEFT_FOOT);
body.addPart(RIGHT_FOOT);
body.addPart(SHOULDER);
body.addPart(SHOULDER);
body.addPart(WAIST);
return body;
}
// createLargeQuadrapedBody method.
// This method creates a large quadraped body. Useful for mobiles like
// young,
// wingless... dragons?
public static Body createLargeQuadrapedBody() {
Body body = new Body();
body.addPart(LARGE_BODY);
body.addPart(HEAD);
body.addPart(FACE);
body.addPart(LEFT_LEG);
body.addPart(RIGHT_LEG);
body.addPart(LEFT_FOOT);
body.addPart(RIGHT_FOOT);
body.addPart(LEFT_LEG);
body.addPart(RIGHT_LEG);
body.addPart(LEFT_FOOT);
body.addPart(RIGHT_FOOT);
body.addPart(SHOULDER);
body.addPart(SHOULDER);
body.addPart(WAIST);
return body;
}
// createHugeQuadrapedBody method.
// Creates a huge quadraped body. Useful for something like the Tarrasque.
public static Body createHugeQuadrapedBody() {
Body body = new Body();
body.addPart(HUGE_BODY);
body.addPart(HEAD);
body.addPart(FACE);
body.addPart(LEFT_LEG);
body.addPart(RIGHT_LEG);
body.addPart(LEFT_FOOT);
body.addPart(RIGHT_FOOT);
body.addPart(LEFT_LEG);
body.addPart(RIGHT_LEG);
body.addPart(LEFT_FOOT);
body.addPart(RIGHT_FOOT);
body.addPart(SHOULDER);
body.addPart(SHOULDER);
body.addPart(WAIST);
return body;
}
// createDragonBody method.
// This method creates a dragon body. Essentially the above method, but with
// wings.
public static Body createDragonBody() {
Body body = new Body();
body.addPart(SMALL_BODY);
body.addPart(HEAD);
body.addPart(FACE);
body.addPart(LEFT_LEG);
body.addPart(RIGHT_LEG);
body.addPart(LEFT_FOOT);
body.addPart(RIGHT_FOOT);
body.addPart(LEFT_LEG);
body.addPart(RIGHT_LEG);
body.addPart(LEFT_FOOT);
body.addPart(RIGHT_FOOT);
body.addPart(SHOULDER);
body.addPart(SHOULDER);
body.addPart(WAIST);
body.addPart(WINGS);
return body;
}
}