monster added: Hag

This commit is contained in:
Zeno Rogue 2021-05-17 14:18:45 +02:00
parent 7dfa614e6a
commit d22965a1da
3 changed files with 35 additions and 0 deletions

View File

@ -1682,6 +1682,10 @@ ITEM('>', 0xFF6060, "fatigue", itFatigue, IC_NAI, ZERO, RESERVED, osNone,
"Press 't' or click the destination to activate."
)
MONSTER('H', 0x181818, "Hag", moHexer, CF_FACE_UP, RESERVED, moYeti,
"Hags can curse you from afar!")
//shmupspecials
MONSTER( '@', 0xC0C0C0, "Rogue", moPlayer, CF_FACE_UP | CF_PLAYER, RESERVED, moNone, "In the Shoot'em Up mode, you are armed with thrown Knives.")
MONSTER( '*', 0xC0C0C0, "Knife", moBullet, ZERO | CF_BULLET, RESERVED, moNone, "A simple, but effective, missile, used by rogues.")

View File

@ -2286,6 +2286,15 @@ EX bool drawMonsterType(eMonster m, cell *where, const shiftmatrix& V1, color_t
int acol = col;
queuepoly(VAHEAD, cgi.shTrylobiteHead, darkena(acol, 0, 0xFF));
}
else if(m == moHexer) {
const shiftmatrix VBS = VBODY * otherbodyparts(V, darkena(col, 1, 0xFF), m, footphase);
ShadowV(V, cgi.shFemaleBody);
queuepoly(VBS, cgi.shFemaleBody, darkena(0x800080, 0, 0xFF));
queuepoly(VHEAD1, cgi.shWitchHair, darkena(0xFF00FF, 1, 0xFF));
queuepoly(VHEAD, cgi.shPFace, darkena(0xFFFFFF, 0, 0xFF));
queuepoly(VBS, cgi.shWitchDress, darkena(col, 1, 0XC0));
humanoid_eyes(V, 0xF000F0FF);
}
else if(isWitch(m)) {
const shiftmatrix VBS = VBODY * otherbodyparts(V, darkena(col, 1, 0xFF), m, footphase);
int cc = 0xFF;

View File

@ -1874,6 +1874,28 @@ EX void specialMoves() {
if(shot || dont_approach) c->stuntime = 1;
}
else if(m == moHexer && c->item && (classflag(c->item) & IF_CURSE) && !peace::on) {
bool shot = false;
// bool dont_approach = false;
// smaller range on the sphere
int firerange = (sphere || getDistLimit() < 5) ? 2 : 4;
bool dont_approach;
for(int i=0; i<isize(targets); i++) {
cell *t = targets[i];
if(isPlayerOn(t) && celldistance(c,t) <= firerange) {
addMessage(XLAT("%The1 curses you!", m));
items[c->item] += orbcharges(c->item);
c->item = itNone;
c->stuntime = 1;
}
if(celldistance(c,t) == firerange+1) dont_approach = true;
}
if(dont_approach) c->stuntime = 1;
}
else if(m == moVampire) {
for(int i=0; i<isize(targets); i++) {
cell *t = targets[i];