package
{
import adobe.utils.CustomActions;
import com.adobe.utils.PerspectiveMatrix3D;
import flash.geom.Point;
import flash.geom.Vector3D;
public class MobsTemplate
{
// Basic Info
public var ID:int = -1; // ID Number
public var boss:Boolean = false; // If mob is a boss
public var Name:String = ''; // Name
public var AI:Boolean = true; // Has active AI
public var HPmax:int = 0; // Max Hit Points
public var HPcurrent:int = 0; // Current Hit Points
public var speed:Number = 0; // Mob's speed
public var awake:Boolean = false; // Mob is awake
public var waking:Boolean = false; // Mob is awake
public var radius:int = 0; // Radius for bullet hits
public var radiusMove:int = 0; // Radius for wall Collision
public var yOffset:int = 0; // Amount to offset the center of the radius verically
public var posNow:Point = new Point(0, 0); // Mob 2D Position (currentX, currentZ)
public var posTry:Point = new Point(0, 0); // Mob 2D Position (attemptedX, attemptedZ)
// Rotation
public var yRot:Number = 0; // Rotation in Y for facing.
public var yRotSpeed:Number = 0; // Degrees can turn per tic.
public var vertRotation:Boolean = true; // Whether to rotate about vertical axis
// Collision
public var collide:Boolean = false; // Hit a wall or a mob
public var collideWall:Boolean = false; // Hit a wall (used for explosive wall hits)
public var dropTest:Boolean = false; // If mob should car about dropping of edges
public var dropAmt:Number = 0; // How far to check for drop
public var dropPoint:Point = new Point(0, 0); // Test
public var ignoreMobs:Boolean = false; // Whether to collide with other enemy mobs
public var collideTime:int = 0; // How long mob has been colliding
public var unstickTime:int = 0; // Time left to unstick mob
public var collidePlayer:Boolean = false; // Colliding with player
// Gravity
public var gravity:Number = 0; // Amount to move down per frame
public var onGround:Boolean = false; // Mob is on the ground
public var groundCnt:int = 0;
public var groundCntMax:int = 3;
public var vertMove:Number = 0; // Jumping
public var movePoint:Point = new Point(0, 0); // Normalized move amount
public var mobCanSeeYou:Boolean = false; // If mob can see player
public var angleToDesired:Number = 0 // Angle from Mob to Player
public var rotateAmtY:Number = 0; // Amt To Rotate
public var movePath:Vector3D = new Vector3D(0,0,0,0); // Movement Direction
// Weapon
public var weapon:int = 0; // Weapon number;
public var weaponRanged:Boolean = false; // Mob Uses Ranged Weapon
public var weaponMelee:Boolean = false; // Mob Uses Melee Weapon
public var weaponExplode:Boolean = false; // Mob Uses Explosive Weapon
public var weaponExplodeWall:Boolean = false; // Mob Uses Explosive Weapon
public var weaponSpawn:Boolean = false; // Mob Uses Spawn Weapon
public var weaponSpawnMob:String = ''; // Mob Spawn Type
public var weaponSpawnOffset:Point = new Point (0,0); // Mob Spawn Offset
public var weaponSpawnAngle:Number = 0; // Mob Spawn Angle
public var weaponRange:int = 0; // Range of weapon
public var detonationRange:int = 0; // Range of trigger to detonate explosive mob
public var weaponCoolMax:int = 0; // Max time to wait after attack
public var weaponCooldown:int = 0; // Current time left until can attack
public var weaponDamage:int = 0; // Amount of damage attack does
public var weaponAngles:Point = new Point(0, 0); // Min Max angles that allow weapon damage
public var weaponSplash:Number = 0; // Distance for splash damage
public var weaponSpread:Array = new Array(true, 0, new Array(0)); // Projectile angles: # shots/fire, current index, angle list, array(0) specifies length
public var weaponSpeed:int = 0; // Speed of projectile
public var weaponBounce:int = -1; // Number of times rounds bounce
public var weaponHoming:int = -1; // If bullets home
// Animation
public var animNow:AnimImporter // Animation to play
public var animPast:AnimImporter // Animation to blend
public var blendTimeMax:int = 10; // Max time to blend
public var blendTime:int = 0; // Current blend time
public var frameNum:int = 0; // Current frame number
public var frameNumPast:int = 0; // Blend frame number
public var removeMe:Boolean = false; // Death anim complete, remove mob from update array
public var deathVFX:Boolean = false; // Death vfx has been played
public var animMove:Boolean = false; // Mob follow movement path - used for bosses
public var moveFrame:uint = 0; // Frame of movement path anim - used for bosses
// Misc.
public var update:Boolean = false; // Update if on screen or near player
public var alerted:Boolean = false; // Has seen player
public var hitFrame:Boolean = false; // Has taken damage
public var lastSeen:Point = new Point(0, 0); // point last seen player
public function MobsTemplate():void
{
}
public function init(_mob:MobsTemplate):void
{
}
}
}
Example:
package
{
import flash.geom.Point;
public class MobsBoomer extends MobsTemplate
{
public function MobsBoomer():void
{
}
override public function init(_mob:MobsTemplate):void
{
// Basic Info
_mob.ID = 2; // ID Number
_mob.HPmax = 4; // Max Hit Points
_mob.HPcurrent = _mob.HPmax; // Current Hit Points
_mob.speed = 16; // Mob's speed
_mob.radius = 70; // Radius for bullet hits
_mob.radiusMove = 10; // Radius for wall Collision
_mob.yRotSpeed = 10; // Degrees can turn per tic.
_mob.gravity = 10; // Amount to move down per frame
_mob.yOffset = -100; // Amount to move center radius
_mob.dropTest = true; // If mob should car about dropping of edges
_mob.dropAmt = 50; // How far to check for drop
// Weapon
_mob.weaponExplode = true; // Mob Uses Explosive Weapon
_mob.weaponRange = 100; // Range of weapon
_mob.detonationRange = 120;
_mob.weaponCoolMax = 60; // Max time to wait after attack
_mob.weaponDamage = 2; // Amount of damage attack does
_mob.weaponAngles = new Point(360, -360); // Min Max angles that allow weapon damage
}
}
}