1
0
mirror of https://github.com/zenorogue/hyperrogue.git synced 2025-08-05 05:13:57 +00:00

westwall:: monster theme

This commit is contained in:
Zeno Rogue 2018-12-23 17:41:12 +01:00
parent 6ec03a5217
commit 8a414d1768
6 changed files with 12 additions and 10 deletions

View File

@ -781,6 +781,8 @@ monstertype minf[motypes] = {
{ 'B', 0xE07000, "Brown Bug", NODESCYET}, { 'B', 0xE07000, "Brown Bug", NODESCYET},
{ 'B', 0xE07060, "Acid Bird", NODESCYET}, { 'B', 0xE07060, "Acid Bird", NODESCYET},
{ 'W', 0xA04060, "Variant Warrior", NODESCYET}, { 'W', 0xA04060, "Variant Warrior", NODESCYET},
{ 'W', 0xC04040, "Falling Dog", NODESCYET},
{ 'B', 0x40C040, "Western Hawk", NODESCYET},
// shmup specials // shmup specials
{ '@', 0xC0C0C0, "Rogue", "In the Shoot'em Up mode, you are armed with thrown Knives."}, { '@', 0xC0C0C0, "Rogue", "In the Shoot'em Up mode, you are armed with thrown Knives."},

View File

@ -10,7 +10,7 @@ static inline void set_flag(flagtype& f, flagtype which, bool b) {
else f &= ~which; else f &= ~which;
} }
static const int motypes = 165; static const int motypes = 167;
struct monstertype { struct monstertype {
char glyph; char glyph;
@ -68,6 +68,7 @@ enum eMonster {
moPair, moHexDemon, moAltDemon, moMonk, moCrusher, moPair, moHexDemon, moAltDemon, moMonk, moCrusher,
moSwitch1, moSwitch2, moSwitch1, moSwitch2,
moBrownBug, moAcidBird, moVariantWarrior, moBrownBug, moAcidBird, moVariantWarrior,
moFallingDog, moWestHawk,
// shmup specials // shmup specials
moPlayer, moBullet, moFlailBullet, moFireball, moTongue, moAirball, moCrushball, moPlayer, moBullet, moFlailBullet, moFireball, moTongue, moAirball, moCrushball,
// temporary // temporary

View File

@ -370,7 +370,7 @@ bool isAngryBird(eMonster m) {
return m == moEagle || m == moAlbatross || m == moBomberbird || m == moGargoyle || return m == moEagle || m == moAlbatross || m == moBomberbird || m == moGargoyle ||
m == moWindCrow || m == moSparrowhawk || m == moWindCrow || m == moSparrowhawk ||
m == moVampire || m == moBat || m == moButterfly || m == moGadfly || m == moVampire || m == moBat || m == moButterfly || m == moGadfly ||
m == moAcidBird; m == moAcidBird || m == moWestHawk;
} }
bool isBird(eMonster m) { bool isBird(eMonster m) {
@ -412,7 +412,7 @@ bool normalMover(eMonster m) {
m == moHunterGuard || m == moHunterChanging || m == moHunterGuard || m == moHunterChanging ||
m == moIceGolem || m == moIceGolem ||
m == moSwitch1 || m == moSwitch2 || m == moCrusher || m == moPair || m == moSwitch1 || m == moSwitch2 || m == moCrusher || m == moPair ||
m == moBrownBug || m == moVariantWarrior || m == moBrownBug || m == moVariantWarrior || m == moFallingDog ||
isMagneticPole(m) || isMagneticPole(m) ||
slowMover(m); slowMover(m);
} }

View File

@ -378,6 +378,7 @@ int* killtable[] = {
&kills[moSwitch1], &kills[moSwitch2], &kills[moSwitch1], &kills[moSwitch2],
&kills[moMonk], &kills[moCrusher], &kills[moHexDemon], &kills[moAltDemon], &kills[moPair], &kills[moMonk], &kills[moCrusher], &kills[moHexDemon], &kills[moAltDemon], &kills[moPair],
&kills[moBrownBug], &kills[moAcidBird], &kills[moBrownBug], &kills[moAcidBird],
&kills[moFallingDog], &kills[moVariantWarrior], &kills[moWestHawk],
NULL NULL
}; };

View File

@ -1209,13 +1209,13 @@ bool drawMonsterType(eMonster m, cell *where, const transmatrix& V, color_t col,
} }
queuepoly(VABODY, shBugArmor, darkena(col, 1, 0xFF)); queuepoly(VABODY, shBugArmor, darkena(col, 1, 0xFF));
} }
else if(m == moRunDog || m == moHunterDog || m == moHunterGuard || m == moHunterChanging) { else if(among(m, moRunDog, moHunterDog, moHunterGuard, moHunterChanging, moFallingDog)) {
if(!mmspatial && !footphase) if(!mmspatial && !footphase)
queuepoly(VABODY, shDogBody, darkena(col, 0, 0xFF)); queuepoly(VABODY, shDogBody, darkena(col, 0, 0xFF));
else { else {
ShadowV(V, shDogTorso); ShadowV(V, shDogTorso);
queuepoly(VABODY, shDogTorso, darkena(col, 0, 0xFF)); queuepoly(VABODY, shDogTorso, darkena(col, 0, 0xFF));
animallegs(VALEGS, moRunDog, darkena(col, 0, 0xFF), footphase); animallegs(VALEGS, moRunDog, m == moFallingDog ? 0xFFFFFFFF : darkena(col, 0, 0xFF), footphase);
} }
queuepoly(VAHEAD, shDogHead, darkena(col, 0, 0xFF)); queuepoly(VAHEAD, shDogHead, darkena(col, 0, 0xFF));
@ -1256,7 +1256,7 @@ bool drawMonsterType(eMonster m, cell *where, const transmatrix& V, color_t col,
ShadowV(V, shEagle); ShadowV(V, shEagle);
queuepoly(VBIRD, shEagle, darkena(col, 0, 0xFF)); queuepoly(VBIRD, shEagle, darkena(col, 0, 0xFF));
} }
else if(m == moSparrowhawk) { else if(m == moSparrowhawk || m == moWestHawk) {
ShadowV(V, shHawk); ShadowV(V, shHawk);
queuepoly(VBIRD, shHawk, darkena(col, 0, 0xFF)); queuepoly(VBIRD, shHawk, darkena(col, 0, 0xFF));
} }

View File

@ -1157,10 +1157,8 @@ void giantLandSwitch(cell *c, int d, cell *from) {
if(d == 9) if(d == 9)
westwall::switchTreasure(c); westwall::switchTreasure(c);
ONEMPTY { ONEMPTY {
if(hrand(4500) < items[itWest] + yendor::hardness()) if(hrand(6000) < 5 + items[itWest] + yendor::hardness())
c->monst = moWindCrow; c->monst = hrand(100) < 20 ? moWestHawk : moFallingDog;
if(hrand(doCross?3000:30000) < items[itWest] + yendor::hardness() - 5)
c->monst = moAirElemental;
} }
break; break;