class Kobold extends Critter { Kobold(PVector p) { super(p, new Nothing()); fill_color = color(175, 215, 180); stroke_color = color(196, 176, 97); hp = max_hp = 7; } } class Goblin extends Critter { Goblin(PVector p) { super(p, new Knife()); fill_color = color(64, 192, 96); stroke_color = color(128, 96, 64); hp = max_hp = 4; x_speed = 1; coward = 0; } } class Ghost extends Critter { Ghost(PVector p) { super(p, new Spook()); radiu = 12; fill_color = color(200, 200, 230); stroke_color = color(0, 180, 230); hp = max_hp = 6; x_speed = 3; ground_control = 0.02; air_control = 0.02; knockback_resist=0.3; coward = 1; reflexes = 5; } } class Ninja extends Critter { Ninja(PVector p) { super(p, new Knife()); fill_color = color(96, 96, 96); stroke_color = color(16, 16, 16); reflexes = 15; hp = max_hp = 4; x_speed = 1.2; coward = -1; } void AIthink() { super.AIthink(); if(random(200) < 1) jump_button=!jump_button; } } class Hobgoblin extends Critter { Hobgoblin(PVector p) { super(p, new Club()); fill_color = color(255, 160, 96); stroke_color = color(128, 96, 64); hp = max_hp = 8; radiu = 14; x_speed = 1; coward = 0; knockback_resist = 2; } } class Dragondot extends Critter { Dragondot(PVector p) { super(p, new Claw()); fill_color = color(192, 16, 64); stroke_color = color(148, 0, 32); hp = max_hp = 20; radiu = 24; x_speed = 2; coward = 1; knockback_resist = 3; reflexes = 10; } void AIthink() { if(!(pc.weapon instanceof Nothing)) super.AIthink(); else { if(grounded) x_wish = 0; if(pos.x > width/2 + 50) x_wish = -0.5; if(pos.x < width/2 - 50) x_wish = 0.5; if(PVector.dist(pos, pc.pos) < 80 && x_wish != 0 && grounded) jump_button=true; else jump_button = false; } } void considerDying() { super.considerDying(); if(removal_flag) bgmStop(); } } class Wizard extends Critter { Wizard(PVector p) { super(p, new Fireball()); fill_color = color(64, 96, 255); stroke_color = color(0, 32, 128); hp = max_hp = 12; radiu = 10; x_speed = 1.3; coward = -1; reflexes=50; knockback_resist = 1; } void AIthink() { super.AIthink(); if(PVector.dist(pc.pos, pos) > 15) attack_button=true; if(chargeup_timer > weapon.charge_time && pc.pos.y > GROUND_LEVEL - 50 && PVector.dist(pc.pos, pos) < 100) attack_button=false; } } class Worg extends Critter { Worg(PVector p) { super(p, new Fang()); fill_color = color(172, 160, 145); stroke_color = color(162, 130, 96); hp = max_hp = 8; radiu = 15; x_speed = 1.2; coward = 1; reflexes=50; knockback_resist = 2; reachy = 70; } void AIthink() { super.AIthink(); if(PVector.dist(pc.pos, pos) > 150) attack_button=true; if(chargeup_timer > weapon.charge_time && pc.pos.y > GROUND_LEVEL - 30 && PVector.dist(pc.pos, pos) < 120) if(reflexes_timer >30 || reflexes_timer == 0) reflexes_timer = 30; if(hitstun_timer == 1) reflexes_timer = 1; } }