this.max_HP = 20;
this.HP = this.max_HP;
this.isWeaponed = false;
+
+ // 攻撃を受けた際などに一時的に無敵モードになるように
+ // これがないと攻撃を受けたことが分かりにくくなる
+ this.isDamageDefenseMode = false;
+ this.damageDefenseModeTimeStamp = 0;
+ this.damageDefenseModeLong = 500;
+
}.extend(OperatedCharacterClass, {
className: "EnemyCharacterClass",
tick : function()
{
+ if(this.isDamageDefenseMode)
+ {
+ if((+new Date()) > this.damageDefenseModeTimeStamp + this.damageDefenseModeLong)
+ {
+ this.isDamageDefenseMode = false;
+ }
+ }
+
var main = this.ownerStage.userControlledCharacter;
var distX = main.origin.x - this.origin.x - ((this.chasingMode == 0) ? this.fightingRange : -this.fightingRange);
if(this.chasing && Math.abs(distX) <= this.chasingRange && Math.abs(this.origin.y - main.origin.y) <= this.chasingRange){
}
//自分自身のダメージ
if(this.hurting){
- if(this.hurtPerTickCount == this.hurtPerTickBase){
- this.damage(this.hurt);
- this.hurtPerTickCount--;
- } else{
- this.hurtPerTickCount--;
- if(this.hurtPerTickCount <= 0){
- this.hurtPerTickCount = this.hurtPerTickBase;
+ if(!this.isDamageDefenseMode)
+ {
+ if(this.hurtPerTickCount == this.hurtPerTickBase){
+ this.damage(this.hurt);
+ this.hurtPerTickCount--;
+ } else{
+ this.hurtPerTickCount--;
+ if(this.hurtPerTickCount <= 0){
+ this.hurtPerTickCount = this.hurtPerTickBase;
+ }
}
}
}
},
draw: function(x, y){
EnemyCharacterClass.base.prototype.draw.apply(this, arguments);
+ this.ownerStage.mainContext.save();
+ if(this.isDamageDefenseMode)
+ {
+ var d = ((+new Date()) - this.damageDefenseModeTimeStamp) / this.damageDefenseModeLong;
+ this.ownerStage.mainContext.fillStyle = "rgba(255,0,0," + d + ")";
+ this.ownerStage.mainContext.fillRectangle(x, y, this.size.x, this.size.y);
+ }
+
if(this.hurt > 0)
{
- this.ownerStage.mainContext.save();
+
var backColor = "gray";
var thickness = 4;
var barWidth = this.max_HP;
this.ownerStage.mainContext.fillRect(x + (this.size.x - barWidth) / 2, y - thickness, barWidth, thickness);
this.ownerStage.mainContext.fillStyle = color;
this.ownerStage.mainContext.fillRect(x + (this.size.x - barWidth) / 2, y - thickness, barWidth * barPerHP, thickness);
-
- this.ownerStage.mainContext.restore();
}
- },
+ this.ownerStage.mainContext.restore();
+ }
});