1 var EnemyCharacterClass = function(stage, args){
2 EnemyCharacterClass.base.apply(this, arguments);
4 this.movingVelocity = 150;
6 //メインキャラクターを追跡する場合はtrue
8 //メインキャラクターを感知する範囲(原点距離がこれ以内の場合に追跡をする。)
9 this.chasingRange = 200;
10 this.fightingRange = 32;
12 this.lastCollidedTick = 0;
14 this.touchDamage = 10;
15 this.damagePerTickBase = 60;
16 this.damagePerTickCount = this.damagePerTickBase;
17 this.damageLastTick = 0;
18 this.damaging = false;
19 //メインキャラクターから受けるダメージの設定
21 this.hurtPerTickBase = 60;
22 this.hurtPerTickCount = this.hurtPerTickBase;
23 this.hurtLastTick = 0;
27 this.HP = this.max_HP;
28 this.isWeaponed = false;
29 }.extend(OperatedCharacterClass, {
30 className: "EnemyCharacterClass",
33 var main = this.ownerStage.userControlledCharacter;
34 var distX = main.origin.x - this.origin.x - ((this.chasingMode == 0) ? this.fightingRange : -this.fightingRange);
35 if(this.chasing && Math.abs(distX) <= this.chasingRange && Math.abs(this.origin.y - main.origin.y) <= this.chasingRange){
39 if(this.chasingMode == 0){
44 if(this.chasingMode == 1){
55 if(this.damagePerTickCount == this.damagePerTickBase){
56 main.damage(this.touchDamage);
57 this.damagePerTickCount--;
59 this.damagePerTickCount--;
60 if(this.damagePerTickCount <= 0){
61 this.damagePerTickCount = this.damagePerTickBase;
67 if(this.hurtPerTickCount == this.hurtPerTickBase){
68 this.damage(this.hurt);
69 this.hurtPerTickCount--;
71 this.hurtPerTickCount--;
72 if(this.hurtPerTickCount <= 0){
73 this.hurtPerTickCount = this.hurtPerTickBase;
77 if(this.lastCollidedTick + 10 < this.ownerStage.manager.tickCount){
84 this.damaging = false;
88 if(this.origin.y > 1000)
90 this.ownerStage.removeStageObject(this);
93 EnemyCharacterClass.base.prototype.tick.apply(this);
99 this.ownerStage.removeStageObject(this);
102 objectAttacked : function(obj, obj_x, obj_y, direction)
104 if(obj instanceof MainCharacterClass)
108 if(direction & CollideTop){
112 this.hurtPerTickCount = this.hurtPerTickBase;
115 if(direction & (CollideLeft | CollideRight)){
118 this.damaging = true;
119 this.damagePerTickCount = this.damagePerTickBase;
123 this.lastCollidedTick = this.ownerStage.manager.tickCount;
126 draw: function(x, y){
129 EnemyCharacterClass.base.prototype.draw.apply(this, arguments);
130 this.ownerStage.mainContext.save();
131 //this.ownerStage.mainContext.fillStyle = "rgba(255,255,255,0.5)";
132 //this.ownerStage.mainContext.strokeStyle = "rgba(0, 0, 0, 1)";
133 //this.ownerStage.mainContext.font = "normal 12px sans-serif";
134 //drawText(this.ownerStage.mainContext, this.HP, x, y - 20);
137 var backColor = "gray";
139 var barWidth = this.max_HP;
140 if(barWidth < 16) barWidth = 16;
141 var barPerHP = this.HP / this.max_HP;
146 var backColor = "red";
147 }else if(barPerHP < 0.4)
149 var backColor = "yellow";
152 this.ownerStage.mainContext.fillStyle = backColor;
153 this.ownerStage.mainContext.fillRect(x + (this.size.x - barWidth) / 2, y - thickness, barWidth, thickness);
154 this.ownerStage.mainContext.fillStyle = color;
155 this.ownerStage.mainContext.fillRect(x + (this.size.x - barWidth) / 2, y - thickness, barWidth * barPerHP, thickness);
157 this.ownerStage.mainContext.restore();