package com.planet_ink.coffee_mud.Races; import com.planet_ink.coffee_mud.core.interfaces.*; import com.planet_ink.coffee_mud.core.*; import com.planet_ink.coffee_mud.Abilities.interfaces.*; import com.planet_ink.coffee_mud.Areas.interfaces.*; import com.planet_ink.coffee_mud.Behaviors.interfaces.*; import com.planet_ink.coffee_mud.CharClasses.interfaces.*; import com.planet_ink.coffee_mud.Commands.interfaces.*; import com.planet_ink.coffee_mud.Common.interfaces.*; import com.planet_ink.coffee_mud.Exits.interfaces.*; import com.planet_ink.coffee_mud.Items.interfaces.*; import com.planet_ink.coffee_mud.Locales.interfaces.*; import com.planet_ink.coffee_mud.MOBS.interfaces.*; import com.planet_ink.coffee_mud.Races.interfaces.*; import java.util.*; public class FaerieDragon extends StdRace { public String ID(){ return "Faerie Dragon"; } public String name(){ return "Faerie Dragon"; } public int shortestMale(){return 12;} public int shortestFemale(){return 14;} public int heightVariance(){return 12;} public int lightestWeight(){return 10;} public int weightVariance(){return 15;} public long forbiddenWornBits(){return Item.WORN_WIELD|Item.WORN_WAIST|Item.WORN_BACK|Item.WORN_ABOUT_BODY|Item.WORN_FEET|Item.WORN_HANDS;} public String racialCategory(){return "Dragon";} private String[]racialAbilityNames={"Spell_Invisibility","Spell_FaerieFire","WingFlying"}; private int[]racialAbilityLevels={5,5,1}; private int[]racialAbilityProficiencies={100,100,100}; private boolean[]racialAbilityQuals={false,false,false}; protected String[] racialAbilityNames(){return racialAbilityNames;} protected int[] racialAbilityLevels(){return racialAbilityLevels;} protected int[] racialAbilityProficiencies(){return racialAbilityProficiencies;} protected boolean[] racialAbilityQuals(){return racialAbilityQuals;} private String[]culturalAbilityNames={"Draconic"}; private int[]culturalAbilityProficiencies={100}; public String[] culturalAbilityNames(){return culturalAbilityNames;} public int[] culturalAbilityProficiencies(){return culturalAbilityProficiencies;} // an ey ea he ne ar ha to le fo no gi mo wa ta wi private static final int[] parts={0 ,2 ,2 ,1 ,1 ,0 ,0 ,1 ,4 ,4 ,1 ,0 ,1 ,1 ,1 ,2 }; public int[] bodyMask(){return parts;} private int[] agingChart={0,5,20,110,325,500,850,950,1050}; public int[] getAgingChart(){return agingChart;} protected static Vector resources=new Vector(); public int availabilityCode(){return Area.THEME_FANTASY|Area.THEME_SKILLONLYMASK;} public void affectEnvStats(Environmental affected, EnvStats affectableStats) { super.affectEnvStats(affected,affectableStats); affectableStats.setSensesMask(affectableStats.sensesMask()|EnvStats.CAN_SEE_INFRARED); if(!CMLib.flags().isSleeping(affected)) affectableStats.setDisposition(affectableStats.disposition()|EnvStats.IS_FLYING); } public void affectCharStats(MOB affectedMOB, CharStats affectableStats) { super.affectCharStats(affectedMOB, affectableStats); affectableStats.setStat(CharStats.STAT_STRENGTH,affectableStats.getStat(CharStats.STAT_STRENGTH)-2); affectableStats.setStat(CharStats.STAT_DEXTERITY,affectableStats.getStat(CharStats.STAT_DEXTERITY)+5); affectableStats.setStat(CharStats.STAT_INTELLIGENCE,affectableStats.getStat(CharStats.STAT_INTELLIGENCE)+2); } public Weapon myNaturalWeapon() { if(naturalWeapon==null) { naturalWeapon=CMClass.getWeapon("StdWeapon"); naturalWeapon.setName("tiny talons"); naturalWeapon.setWeaponType(Weapon.TYPE_PIERCING); } return naturalWeapon; } public String healthText(MOB viewer, MOB mob) { double pct=(CMath.div(mob.curState().getHitPoints(),mob.maxState().getHitPoints())); if(pct<.10) return "^r" + mob.displayName(viewer) + "^r is raging in bloody pain!^N"; else if(pct<.20) return "^r" + mob.displayName(viewer) + "^r is covered in blood.^N"; else if(pct<.30) return "^r" + mob.displayName(viewer) + "^r is bleeding badly from lots of wounds.^N"; else if(pct<.50) return "^y" + mob.displayName(viewer) + "^y has some bloody wounds and gashed scales.^N"; else if(pct<.60) return "^p" + mob.displayName(viewer) + "^p has a few bloody wounds.^N"; else if(pct<.70) return "^p" + mob.displayName(viewer) + "^p is cut and bruised heavily.^N"; else if(pct<.90) return "^g" + mob.displayName(viewer) + "^g has a few bruises and scratched scales.^N"; else if(pct<.99) return "^g" + mob.displayName(viewer) + "^g has a few small bruises.^N"; else return "^c" + mob.displayName(viewer) + "^c is in perfect health.^N"; } public Vector myResources() { synchronized(resources) { if(resources.size()==0) { resources.addElement(makeResource ("a "+name().toLowerCase()+" claw",RawMaterial.RESOURCE_BONE)); for(int i=0;i<3;i++) resources.addElement(makeResource ("a strip of "+name().toLowerCase()+" scales",RawMaterial.RESOURCE_SCALES)); for(int i=0;i<2;i++) resources.addElement(makeResource ("a pound of "+name().toLowerCase()+" meat",RawMaterial.RESOURCE_MEAT)); resources.addElement(makeResource ("some "+name().toLowerCase()+" blood",RawMaterial.RESOURCE_BLOOD)); } } return resources; } }