mirror of
https://github.com/zenorogue/hyperrogue.git
synced 2025-01-22 23:17:04 +00:00
world turtles
This commit is contained in:
parent
a9a5a0c9c2
commit
5e48af2bb3
@ -336,6 +336,7 @@ EX void stunMonster(cell *c2, eMonster killer, flagtype flags) {
|
||||
c2->monst == moTerraWarrior ? min(int(c2->stuntime + 8 - c2->hitpoints), 7) :
|
||||
isMetalBeast(c2->monst) ? 7 :
|
||||
c2->monst == moTortoise ? 7 :
|
||||
c2->monst == moWorldTurtle ? 7 :
|
||||
c2->monst == moReptile ? 7 :
|
||||
isPrincess(c2->monst) ? 6 :
|
||||
// spear stunning
|
||||
@ -350,7 +351,7 @@ EX void stunMonster(cell *c2, eMonster killer, flagtype flags) {
|
||||
c2->monst == moBrownBug ? 3 :
|
||||
3);
|
||||
if(killer == moArrowTrap) newtime = min(newtime + 3, 7);
|
||||
if(!isMetalBeast(c2->monst) && !among(c2->monst, moSkeleton, moReptile, moSalamander, moTortoise, moBrownBug)) {
|
||||
if(!isMetalBeast(c2->monst) && !among(c2->monst, moSkeleton, moReptile, moSalamander, moTortoise, moWorldTurtle, moBrownBug)) {
|
||||
c2->hitpoints--;
|
||||
if(c2->monst == moPrincess)
|
||||
playSound(c2, princessgender() ? "hit-princess" : "hit-prince");
|
||||
@ -1002,7 +1003,7 @@ EX void killFriendlyIvy() {
|
||||
}
|
||||
|
||||
EX bool monsterPushable(cell *c2) {
|
||||
return (c2->monst != moFatGuard && !(isMetalBeast(c2->monst) && c2->stuntime < 2) && c2->monst != moTortoise && c2->monst != moTerraWarrior && c2->monst != moVizier);
|
||||
return (c2->monst != moFatGuard && !(isMetalBeast(c2->monst) && c2->stuntime < 2) && c2->monst != moTortoise && c2->monst != moTerraWarrior && c2->monst != moVizier && c2->monst != moWorldTurtle);
|
||||
}
|
||||
|
||||
EX bool should_switchplace(cell *c1, cell *c2) {
|
||||
|
@ -1565,7 +1565,13 @@ WALL( '=', 0x0000A0, "deep water", waDeepWater, WF_WATER, RESERVED, 0, sgWater,
|
||||
MONSTER( 'P', 0xC08080, "Pike", moPike, CF_FACE_SIDE | CF_SHARK, RESERVED, moShark,
|
||||
"You remembler anglers from your hometown showing the impressive pikes they have caught. This one is much larger."
|
||||
)
|
||||
MONSTER( 'S', 0xC0C080, "Yellow Skipper", moYellowSkipper, CF_FACE_SIDE | CF_SHARK, RESERVED, moShark, "Just a nasty shark.") /* unused */
|
||||
MONSTER( 'T', 0xFF00FF, "World Turtle", moWorldTurtle, CF_FACE_SIDE | CF_STUNNABLE | CF_SLOWMOVER, RESERVED, moYeti,
|
||||
"Have you reached the edge of the Poincaré disk? No, it must just be the edge of this world. "
|
||||
"Which happens to be floating on the backs of some turtles. Wondering how such not very big turtles could "
|
||||
"support such a large world? Well, there are LOTS of them! "
|
||||
"This one got so annoyed by the fact that you discovered this that it left its post. However, the world still "
|
||||
"stands, because there are so many turtles."
|
||||
)
|
||||
MONSTER( 'R', 0x4040C0, "Rusałka", moRusalka, CF_FACE_SIDE | CF_SHARK, RESERVED, moShark, GENDERSWITCH)
|
||||
ITEM( 'o', 0x808080, "Orb of Plague", itOrbPlague, IC_ORB, IF_EMPATHY, RESERVED, osOffensive,
|
||||
"When you kill an enemy, adjacent enemies all also attacked, as long as they are further away from you than from the originally attacked enemy. "
|
||||
|
18
graph.cpp
18
graph.cpp
@ -438,6 +438,13 @@ EX namespace tortoise {
|
||||
if(getBit(bits, tfShellDark)) shellcolor = gradient(shellcolor, 0, 0, .5, 1);
|
||||
if(getBit(bits, tfSkinDark)) skincolor = gradient(skincolor, 0, 0, .5, 1);
|
||||
|
||||
if(bits < 0) {
|
||||
skincolor = 0xC00060;
|
||||
shellcolor = 0xFF00FF;
|
||||
scutecolor = 0x6000C0;
|
||||
eyecolor = 0xFFFFFF;
|
||||
}
|
||||
|
||||
for(int i=0; i<12; i++) {
|
||||
color_t col =
|
||||
i == 0 ? shellcolor:
|
||||
@ -1266,9 +1273,9 @@ EX bool drawMonsterType(eMonster m, cell *where, const transmatrix& V1, color_t
|
||||
|
||||
// if(GDIM == 3) V = V * cspin(0, 2, M_PI/2);
|
||||
|
||||
if(m == moTortoise && where && where->stuntime >= 3)
|
||||
if(among(m, moTortoise, moWorldTurtle) && where && where->stuntime >= 3)
|
||||
drawStunStars(V, where->stuntime-2);
|
||||
else if (m == moTortoise || m == moPlayer || (where && !where->stuntime)) ;
|
||||
else if (among(m, moTortoise, moWorldTurtle) || m == moPlayer || (where && !where->stuntime)) ;
|
||||
else if(where && !(isMetalBeast(m) && where->stuntime == 1))
|
||||
drawStunStars(V, where->stuntime);
|
||||
|
||||
@ -1284,6 +1291,11 @@ EX bool drawMonsterType(eMonster m, cell *where, const transmatrix& V1, color_t
|
||||
return false;
|
||||
}
|
||||
|
||||
case moWorldTurtle: {
|
||||
tortoise::draw(V, -1, 0, where ? where->stuntime : 0);
|
||||
return false;
|
||||
}
|
||||
|
||||
case moPlayer:
|
||||
drawPlayer(m, where, V, col, footphase);
|
||||
return false;
|
||||
@ -1525,7 +1537,7 @@ EX bool drawMonsterType(eMonster m, cell *where, const transmatrix& V1, color_t
|
||||
return false;
|
||||
}
|
||||
|
||||
case moShark: case moGreaterShark: case moCShark: case moYellowSkipper:
|
||||
case moShark: case moGreaterShark: case moCShark:
|
||||
queuepoly(VFISH, cgi.shShark, darkena(col, 0, 0xFF));
|
||||
return false;
|
||||
|
||||
|
@ -2910,8 +2910,13 @@ EX void setdist(cell *c, int d, cell *from) {
|
||||
c->item = itNone;
|
||||
}
|
||||
}
|
||||
if(d == 7 && c->land == laMemory && hrand(100) < 5) {
|
||||
c->wall = waTrapdoor, c->item = itOrbSafety;
|
||||
if(d == 7 && c->land == laMemory) {
|
||||
if(hrand(100) < 5) {
|
||||
c->wall = waTrapdoor, c->item = itOrbSafety;
|
||||
}
|
||||
else if(hrand(100) < 2) {
|
||||
c->monst = moWorldTurtle, c->wall = waNone, c->hitpoints = 5;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -258,6 +258,7 @@ EX void moveMonster(const movei& mi) {
|
||||
if(!cellEdgeUnstable(ct)) {
|
||||
if(isMetalBeast(m)) ct->stuntime += 2;
|
||||
if(m == moTortoise) ct->stuntime += 3;
|
||||
if(m == moWorldTurtle) ct->stuntime += 3;
|
||||
if(m == moDraugr && ct->land != laBurial && ct->land != laHalloween) ct->stuntime += 2;
|
||||
if(m == moBrownBug && snakelevel(ct) < snakelevel(cf)) ct->stuntime += 2;
|
||||
if(m == moBrownBug && snakelevel(ct) < snakelevel(cf) - 1) ct->stuntime += 2;
|
||||
|
Loading…
Reference in New Issue
Block a user