package{ import flash.display.Sprite import flash.text.*; import flash.display.MovieClip; import fl.transitions.*; import fl.transitions.easing.*; import flash.events.KeyboardEvent; import flash.ui.Keyboard; import flash.events.Event; public class Character extends Sprite{ public var totalHealth:int; public var currentHealth:int; public var totalMana:int; public var currentMana:int; public var experience:int; public var gold:int; public var characterLevel:int; public var vitality:int; public var intelligence:int; public var strength:int; public var agility:int; public var speed:int; public var movementSpeed:uint=10; public var _left:Boolean; public var _right:Boolean; public var _up:Boolean; public var _down:Boolean; public var myCharacter:MovieClip; function Character(constructorvitality:int, constructorintelligence:int, constructorstrength:int, constructoragility:int, constructorspeed:int):void{ trace("constructor"); totalHealth = 50+10*constructorvitality; currentHealth = totalHealth; totalMana = 30+constructorintelligence*10; currentMana = totalMana; characterLevel = 1; experience = 0; vitality=constructorvitality; intelligence=constructorintelligence; strength=constructorstrength; agility=constructoragility; speed=constructorspeed; } public function getStats():int{ return vitality+intelligence+strength+agility+speed; } public function attack():int{ var damage:int = 0; var hitType:int = Math.random()*1000; if(hitType<300){ displayDamage(damage,0); } if(hitType>700){ damage = (Math.random()*10+strength)*1.5; displayDamage(damage,2); } if(hitType>=300 && hitType<=700){ damage = Math.random()*10+strength; displayDamage(damage,1); } return damage; } private function displayDamage(damage:int, damageType:int):void{ var damageText:TextField = new TextField(); switch(damageType){ case 0: damageText.text = "Miss"; var missFormat:TextFormat = new TextFormat(); missFormat.color = 0xFFFFFF; missFormat.font = "Rosewood Std"; missFormat.size=40; damageText.setTextFormat(missFormat); break; case 1: damageText.text = String(damage); var damageFormat:TextFormat = new TextFormat(); damageFormat.color = 0xFFFF00; damageFormat.font = "Rosewood Std"; damageFormat.size = 40; damageText.setTextFormat(damageFormat); break; case 2: damageText.text = String(damage); var critFormat:TextFormat = new TextFormat(); critFormat.color = 0x990000; critFormat.font = "Rosewood Std"; critFormat.size = 40; damageText.setTextFormat(critFormat); break; default: trace("Gerf gives great handjobs"); } addChild(damageText); damageText.x=750; var tweenUp:Tween = new Tween(damageText, "y", Regular.easeOut, 330, 150, 2, true); var tweenAlpha:Tween = new Tween(damageText, "alpha", Regular.easeOut, 1,0,2,true); tweenAlpha.addEventListener(TweenEvent.MOTION_FINISH, removeText); function removeText(e:TweenEvent):void{ removeChild(damageText); } } public function heal():int{ var healAmount:int = 0; var healType:int = Math.random()*1000; switch(healType){ case (healType<500): healAmount=Math.random()*5+intelligence; displayHeal(healAmount, 0); return healAmount; break; case (healType>=500): healAmount=(Math.random()*5+intelligence)*1.5; displayHeal(healAmount, 1); return healAmount; break; default: return 0; } } private function displayHeal(healAmount:int, healType:int):void{ var healText = new TextField(); switch(healType){ case 0: healText.text = String(healAmount); var healFormat:TextFormat = new TextFormat(); healFormat.color = 0xFFFFFF; healFormat.font = "Rosewood Std"; healFormat.size = 40; healText.setTextFormat(healFormat); break; case 1: healText.text = String(healAmount); var critHealFormat:TextFormat = new TextFormat(); critHealFormat.color = 0xFF0000; critHealFormat.font = "Rosewood Std"; critHealFormat.size = 40; healText.setTextFormat(critHealFormat); break; default: trace("something messed up with heals"); } } public function useHealthPotion():void{ var newHealth:int = Math.random()*20+50; var critRandom:int = Math.random()*1000; switch(critRandom){ case(critRandom<25): newHealth*=1.5; if(currentHealth+newHealth<=totalHealth){ displayHeal(newHealth, 1); currentHealth+=newHealth; } else{ displayHeal(totalHealth-currentHealth,1); currentHealth=totalHealth; } break; case(critRandom>=25): if(currentHealth+newHealth<=totalHealth){ displayHeal(newHealth, 0); currentHealth+=newHealth; } else{ displayHeal(totalHealth-currentHealth,0); currentHealth=totalHealth; } break; default: trace("Something messed up with the heal potions."); } } public function useManaPotion():void{ var newMana:int = Math.random()*15+30; var critRandom:int = Math.random()*1000; switch(critRandom){ case(critRandom<25): newMana*=1.5; if(currentMana+newMana<=totalMana){ displayHeal(newMana, 1); currentMana+=newMana; } else{ displayHeal(totalMana-currentMana,1); currentMana=totalMana; } break; case(critRandom>=25): if(currentMana+newMana<=totalMana){ displayHeal(newMana, 0); currentMana+=newMana; } else{ displayHeal(totalMana-currentMana,0); currentMana=totalMana; } break; default: trace("Something messed up with the mana potions."); } } public function getCurrentHealth():int{ return currentHealth; } public function getTotalHealth():int{ return totalHealth; } public function getCurrentMana():int{ return currentMana; } public function getTotalMana():int{ return totalMana; } public function getCurrentLevel():int{ return characterLevel; } public function getCurrentExp():int{ return experience; } public function getMaxExp():int{ return 1000*1.2^(characterLevel-1); } public function getGold():int{ return gold; } public function getTimerSpeed():int{ return 6000-speed*25; } } }