mirror of
https://github.com/zenorogue/hyperrogue.git
synced 2025-02-02 12:19:18 +00:00
more movei
This commit is contained in:
parent
e6853e6540
commit
bf584b5429
23
complex.cpp
23
complex.cpp
@ -141,7 +141,7 @@ EX namespace whirlwind {
|
|||||||
for(int i=0; i<z-1; i++) {
|
for(int i=0; i<z-1; i++) {
|
||||||
moveItem(whirlline[i], whirlline[i+1], true);
|
moveItem(whirlline[i], whirlline[i+1], true);
|
||||||
if(whirlline[i]->item)
|
if(whirlline[i]->item)
|
||||||
animateMovement(whirlline[i+1], whirlline[i], LAYER_BOAT, NOHINT);
|
animateMovement(match(whirlline[i+1], whirlline[i]), LAYER_BOAT);
|
||||||
}
|
}
|
||||||
for(int i=0; i<z; i++)
|
for(int i=0; i<z; i++)
|
||||||
pickupMovedItems(whirlline[i]);
|
pickupMovedItems(whirlline[i]);
|
||||||
@ -1036,7 +1036,7 @@ EX namespace whirlpool {
|
|||||||
if(wfrom && wto && wfrom->wall == waBoat && wto->wall == waSea && !wto->monst) {
|
if(wfrom && wto && wfrom->wall == waBoat && wto->wall == waSea && !wto->monst) {
|
||||||
wfrom->wall = waSea; wto->wall = waBoat;
|
wfrom->wall = waSea; wto->wall = waBoat;
|
||||||
wto->mondir = neighborId(wto, wfrom);
|
wto->mondir = neighborId(wto, wfrom);
|
||||||
animateMovement(wfrom, wto, LAYER_BOAT, NOHINT);
|
animateMovement(moveimon(wto).rev(), LAYER_BOAT);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(wfrom && wto && wfrom->item && !wto->item && wfrom->wall != waBoat) {
|
if(wfrom && wto && wfrom->item && !wto->item && wfrom->wall != waBoat) {
|
||||||
@ -2499,14 +2499,14 @@ EX namespace dragon {
|
|||||||
void pullback(cell *c) {
|
void pullback(cell *c) {
|
||||||
int maxlen = 1000;
|
int maxlen = 1000;
|
||||||
while(maxlen-->0) {
|
while(maxlen-->0) {
|
||||||
cell *c2 = c->move(c->mondir);
|
auto mi = moveimon(c).rev();
|
||||||
mountmove(c, c->mondir, true, c2);
|
mountmove(mi, true);
|
||||||
c->monst = c2->monst;
|
c->monst = mi.s->monst;
|
||||||
c->hitpoints = c2->hitpoints;
|
c->hitpoints = mi.s->hitpoints;
|
||||||
animateMovement(c2, c, LAYER_BIG, c->c.spin(c->mondir));
|
animateMovement(mi, LAYER_BIG);
|
||||||
c->stuntime = 2;
|
c->stuntime = 2;
|
||||||
if(c2->mondir == NODIR) { c->mondir = NODIR; c2->monst = moNone; return; }
|
if(mi.s->mondir == NODIR) { c->mondir = NODIR; mi.s->monst = moNone; return; }
|
||||||
c = c2;
|
c = mi.s;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2622,8 +2622,9 @@ EX namespace dragon {
|
|||||||
cmt->hitpoints = cft->hitpoints;
|
cmt->hitpoints = cft->hitpoints;
|
||||||
cmt->monst = cft->monst;
|
cmt->monst = cft->monst;
|
||||||
cft->monst = moNone;
|
cft->monst = moNone;
|
||||||
mountmove(cmt, cmt->mondir, true, cft);
|
auto mi = moveimon(cft);
|
||||||
animateMovement(cft, cmt, LAYER_BIG, allcells[i]->mondir);
|
mountmove(mi, true);
|
||||||
|
animateMovement(mi, LAYER_BIG);
|
||||||
}
|
}
|
||||||
while(c->mondir != NODIR) {
|
while(c->mondir != NODIR) {
|
||||||
c = c->move(c->mondir);
|
c = c->move(c->mondir);
|
||||||
|
@ -249,7 +249,7 @@ EX namespace westwall {
|
|||||||
for(int i=0; i<z-1; i++) {
|
for(int i=0; i<z-1; i++) {
|
||||||
moveItem(whirlline[i], whirlline[i+1], true);
|
moveItem(whirlline[i], whirlline[i+1], true);
|
||||||
if(whirlline[i]->item)
|
if(whirlline[i]->item)
|
||||||
animateMovement(whirlline[i+1], whirlline[i], LAYER_BOAT, NOHINT);
|
animateMovement(match(whirlline[i+1], whirlline[i]), LAYER_BOAT);
|
||||||
}
|
}
|
||||||
for(int i=0; i<z; i++)
|
for(int i=0; i<z; i++)
|
||||||
pickupMovedItems(whirlline[i]);
|
pickupMovedItems(whirlline[i]);
|
||||||
|
95
game.cpp
95
game.cpp
@ -4678,30 +4678,26 @@ EX void afterplayermoved() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
EX void mountmove(cell *c, int spin, bool fp, int id) {
|
EX void mountmove(const movei& mi, bool fp) {
|
||||||
if(multi::players > 1) {
|
|
||||||
multi::player[id].at = c;
|
|
||||||
multi::player[id].spin = spin;
|
|
||||||
multi::flipped[id] = fp;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
cwt.at = c;
|
|
||||||
cwt.spin = spin;
|
|
||||||
flipplayer = fp;
|
|
||||||
}
|
|
||||||
afterplayermoved();
|
|
||||||
}
|
|
||||||
|
|
||||||
EX void mountmove(cell *c, int spin, bool fp, cell *ppos) {
|
|
||||||
for(int i=0; i<numplayers(); i++) {
|
for(int i=0; i<numplayers(); i++) {
|
||||||
if(playerpos(i) == ppos) {
|
if(playerpos(i) == mi.s) {
|
||||||
animateMovement(ppos, c, LAYER_SMALL, revhint(c, spin));
|
animateMovement(mi, LAYER_SMALL);
|
||||||
mountmove(c, spin, fp, i);
|
if(multi::players > 1) {
|
||||||
|
multi::player[i].at = mi.t;
|
||||||
|
multi::player[i].spin = mi.rev_dir();
|
||||||
|
multi::flipped[i] = fp;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
cwt.at = mi.t;
|
||||||
|
cwt.spin = mi.rev_dir();
|
||||||
|
flipplayer = fp;
|
||||||
|
}
|
||||||
|
afterplayermoved();
|
||||||
}
|
}
|
||||||
if(lastmountpos[i] == ppos && ppos != NULL) {
|
if(lastmountpos[i] == mi.s && mi.s) {
|
||||||
lastmountpos[i] = c;
|
lastmountpos[i] = mi.t;
|
||||||
}
|
}
|
||||||
else if(lastmountpos[i] == c) {
|
else if(lastmountpos[i] == mi.t) {
|
||||||
lastmountpos[i] = NULL;
|
lastmountpos[i] = NULL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -4729,9 +4725,10 @@ EX void moveWorm(cell *c) {
|
|||||||
for(int i=isize(allcells)-2; i>=0; i--) {
|
for(int i=isize(allcells)-2; i>=0; i--) {
|
||||||
cell *cmt = allcells[i+1];
|
cell *cmt = allcells[i+1];
|
||||||
cell *cft = allcells[i];
|
cell *cft = allcells[i];
|
||||||
|
auto mi = moveimon(cft);
|
||||||
if(cft->monst != moTentacleGhost && cmt->monst != moTentacleGhost)
|
if(cft->monst != moTentacleGhost && cmt->monst != moTentacleGhost)
|
||||||
mountmove(cmt, cft->c.spin(cft->mondir), false, cft);
|
mountmove(mi, false);
|
||||||
animateMovement(cft, cmt, LAYER_BIG, cft->mondir);
|
animateMovement(mi, LAYER_BIG);
|
||||||
}
|
}
|
||||||
c->monst = moNone;
|
c->monst = moNone;
|
||||||
if(c->mondir != NODIR) c->move(c->mondir)->monst = moTentacleEscaping;
|
if(c->mondir != NODIR) c->move(c->mondir)->monst = moTentacleEscaping;
|
||||||
@ -4812,33 +4809,31 @@ EX void moveWorm(cell *c) {
|
|||||||
goal->mondir = mi.rev_dir_or(NODIR);
|
goal->mondir = mi.rev_dir_or(NODIR);
|
||||||
goal->monmirror = c->monmirror ^ c->c.mirror(dir);
|
goal->monmirror = c->monmirror ^ c->c.mirror(dir);
|
||||||
|
|
||||||
mountmove(goal, goal->mondir, true, c);
|
mountmove(mi, true);
|
||||||
|
|
||||||
if(id) {
|
if(id) {
|
||||||
cell *c2 = c, *c3 = c2;
|
cell *c2 = c, *c3 = c2;
|
||||||
while(c2->monst == moTentacletail || c2->monst == moTentacleGhost) {
|
while(c2->monst == moTentacletail || c2->monst == moTentacleGhost) {
|
||||||
if(c2->mondir == NODIR) {
|
auto mi = moveimon(c2);
|
||||||
// drawParticles(c2, (linf[c2->land].color & 0xF0F0F0), 16, 50);
|
if(!mi.proper()) return;
|
||||||
return;
|
c3 = c2, c2 = mi.t;
|
||||||
}
|
|
||||||
c3 = c2, c2 = c3->move(c2->mondir);
|
|
||||||
if(c3->monst != moTentacleGhost && c2->monst != moTentacleGhost)
|
if(c3->monst != moTentacleGhost && c2->monst != moTentacleGhost)
|
||||||
mountmove(c3, c3->mondir, true, c2);
|
mountmove(mi, true);
|
||||||
animateMovement(c2, c3, LAYER_BIG, c2->c.spin(c2->mondir));
|
animateMovement(mi.rev(), LAYER_BIG);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
cell *c2 = c, *c3 = c2;
|
cell *c2 = c, *c3 = c2;
|
||||||
for(int a=0; a<WORMLENGTH; a++) {
|
for(int a=0; a<WORMLENGTH; a++) {
|
||||||
if(c2->monst == moWormtail) {
|
if(c2->monst == moWormtail) {
|
||||||
if(c2->mondir == NODIR) {
|
movei mim = moveimon(c2).rev();
|
||||||
|
if(!mim.proper()) {
|
||||||
drawParticles(c2, (linf[c2->land].color & 0xF0F0F0), 16);
|
drawParticles(c2, (linf[c2->land].color & 0xF0F0F0), 16);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
movei mim(c2, c2->mondir);
|
c3 = c2, c2 = mim.s;
|
||||||
c3 = c2, c2 = mim.t;
|
mountmove(mim, true);
|
||||||
mountmove(c3, c3->mondir, true, c2);
|
animateMovement(mim, LAYER_BIG);
|
||||||
animateMovement(mim.rev(), LAYER_BIG);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -5153,15 +5148,16 @@ EX void moveHexSnake(const movei& mi, bool mounted) {
|
|||||||
preventbarriers(from);
|
preventbarriers(from);
|
||||||
|
|
||||||
animateMovement(mi, LAYER_BIG);
|
animateMovement(mi, LAYER_BIG);
|
||||||
mountmove(from, from->mondir, true, c);
|
mountmove(mi, true);
|
||||||
|
|
||||||
cell *c2 = c, *c3=c2;
|
cell *c2 = c, *c3=c2;
|
||||||
for(int a=0;; a++) if(c2->monst == moHexSnakeTail) {
|
for(int a=0;; a++) if(c2->monst == moHexSnakeTail) {
|
||||||
if(a == ROCKSNAKELENGTH) { c2->monst = moNone, c3->mondir = NODIR; break; }
|
if(a == ROCKSNAKELENGTH) { c2->monst = moNone, c3->mondir = NODIR; break; }
|
||||||
if(c2->mondir == NODIR) break;
|
auto mim = moveimon(c2).rev();
|
||||||
mountmove(c2, c2->mondir, true, c2->move(c2->mondir));
|
if(!mim.proper()) break;
|
||||||
animateMovement(movei(c2, c2->mondir).rev(), LAYER_BIG);
|
mountmove(mim, true);
|
||||||
c3 = c2, c2 = c3->move(c2->mondir);
|
animateMovement(mim, LAYER_BIG);
|
||||||
|
c3 = c2, c2 = mim.s;
|
||||||
}
|
}
|
||||||
else break;
|
else break;
|
||||||
}
|
}
|
||||||
@ -5307,7 +5303,8 @@ EX void movemutant() {
|
|||||||
cell *c = young[i];
|
cell *c = young[i];
|
||||||
if(clearing::buggyplant) { if(c->monst == moMutant) c->monst=moNone; continue; }
|
if(clearing::buggyplant) { if(c->monst == moMutant) c->monst=moNone; continue; }
|
||||||
for(int j=0; j<c->type; j++) {
|
for(int j=0; j<c->type; j++) {
|
||||||
cell *c2 = c->move(j);
|
movei mi(c, j);
|
||||||
|
auto& c2 = mi.t;
|
||||||
if(!c2) continue;
|
if(!c2) continue;
|
||||||
|
|
||||||
if(c2->monst != moMutant && canAttack(c, moMutant, c2, c2->monst, AF_ONLY_FBUG | AF_GETPLAYER)) {
|
if(c2->monst != moMutant && canAttack(c, moMutant, c2, c2->monst, AF_ONLY_FBUG | AF_GETPLAYER)) {
|
||||||
@ -5322,7 +5319,7 @@ EX void movemutant() {
|
|||||||
c2->monst = moMutant;
|
c2->monst = moMutant;
|
||||||
c2->mondir = c->c.spin(j);
|
c2->mondir = c->c.spin(j);
|
||||||
c2->stuntime = mutantphase;
|
c2->stuntime = mutantphase;
|
||||||
animateMovement(c, c2, LAYER_BIG, j);
|
animateMovement(mi, LAYER_BIG);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -5364,7 +5361,7 @@ EX void moveshadow() {
|
|||||||
cell* where = shpos[p][cshpos];
|
cell* where = shpos[p][cshpos];
|
||||||
if(where && where->monst == moNone && where->cpdist && where->land == laGraveyard &&
|
if(where && where->monst == moNone && where->cpdist && where->land == laGraveyard &&
|
||||||
!sword::at(where)) {
|
!sword::at(where)) {
|
||||||
if(shfrom) animateMovement(shfrom, where, LAYER_SMALL, NOHINT);
|
if(shfrom) animateMovement(match(shfrom, where), LAYER_SMALL);
|
||||||
where->monst = moShadow;
|
where->monst = moShadow;
|
||||||
where->hitpoints = p;
|
where->hitpoints = p;
|
||||||
where->stuntime = 0;
|
where->stuntime = 0;
|
||||||
@ -8264,7 +8261,7 @@ EX bool movepcto(int d, int subdir IS(1), bool checkonly IS(false)) {
|
|||||||
|
|
||||||
if(checkonly) { c2->wall = save_c2; cwt.at->wall = save_cw; nextmovetype = lmMove; return true; }
|
if(checkonly) { c2->wall = save_c2; cwt.at->wall = save_cw; nextmovetype = lmMove; return true; }
|
||||||
addMessage(XLAT("You push %the1 behind you!", waBigStatue));
|
addMessage(XLAT("You push %the1 behind you!", waBigStatue));
|
||||||
animateMovement(c2, cwt.at, LAYER_BOAT, cwt.at->c.spin(d));
|
animateMovement(mi.rev(), LAYER_BOAT);
|
||||||
goto statuejump;
|
goto statuejump;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -8623,16 +8620,14 @@ EX bool movepcto(int d, int subdir IS(1), bool checkonly IS(false)) {
|
|||||||
|
|
||||||
stabbingAttack(cwt.at, c2, moPlayer);
|
stabbingAttack(cwt.at, c2, moPlayer);
|
||||||
cell *c1 = cwt.at;
|
cell *c1 = cwt.at;
|
||||||
int d = cwt.spin;
|
|
||||||
cwt += wstep;
|
cwt += wstep;
|
||||||
if(switchplaces) {
|
if(switchplaces) {
|
||||||
movei m(c1, cwt.at, cwt.spin);
|
indAnimateMovement(mi, LAYER_SMALL);
|
||||||
indAnimateMovement(m, LAYER_SMALL);
|
indAnimateMovement(mi.rev(), LAYER_SMALL);
|
||||||
indAnimateMovement(m.rev(), LAYER_SMALL);
|
|
||||||
commitAnimations(LAYER_SMALL);
|
commitAnimations(LAYER_SMALL);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
animateMovement(c1, cwt.at, LAYER_SMALL, d);
|
animateMovement(mi, LAYER_SMALL);
|
||||||
|
|
||||||
mirror::act(origd, mirror::SPINMULTI | mirror::ATTACK | mirror::GO);
|
mirror::act(origd, mirror::SPINMULTI | mirror::ATTACK | mirror::GO);
|
||||||
|
|
||||||
|
@ -4094,8 +4094,9 @@ EX void drawMarkers() {
|
|||||||
cell *c1 = mouseover;
|
cell *c1 = mouseover;
|
||||||
for(int it=0; it<10; it++) {
|
for(int it=0; it<10; it++) {
|
||||||
int di;
|
int di;
|
||||||
cell *c2 = blowoff_destination(c1, di);
|
auto mib = blowoff_destination(c1, di);
|
||||||
if(!c2) break;
|
if(!mib.proper()) break;
|
||||||
|
auto& c2 = mib.t;
|
||||||
transmatrix T1 = ggmatrix(c1);
|
transmatrix T1 = ggmatrix(c1);
|
||||||
transmatrix T2 = ggmatrix(c2);
|
transmatrix T2 = ggmatrix(c2);
|
||||||
transmatrix T = T1 * rspintox(inverse(T1)*T2*C0) * xpush(hdist(T1*C0, T2*C0) * fractick(50, 0));
|
transmatrix T = T1 * rspintox(inverse(T1)*T2*C0) * xpush(hdist(T1*C0, T2*C0) * fractick(50, 0));
|
||||||
@ -5050,10 +5051,6 @@ EX void animateMovement(const movei& m, int layer) {
|
|||||||
a.mirrored = !a.mirrored;
|
a.mirrored = !a.mirrored;
|
||||||
}
|
}
|
||||||
|
|
||||||
EX void animateMovement(cell *src, cell *tgt, int layer, int direction_hint) {
|
|
||||||
animateMovement(movei(src, tgt, direction_hint), layer);
|
|
||||||
}
|
|
||||||
|
|
||||||
EX void animateAttack(const movei& m, int layer) {
|
EX void animateAttack(const movei& m, int layer) {
|
||||||
if(vid.mspeed >= 5) return; // no animations!
|
if(vid.mspeed >= 5) return; // no animations!
|
||||||
transmatrix T = iadj(m);
|
transmatrix T = iadj(m);
|
||||||
|
@ -457,7 +457,7 @@ struct movei {
|
|||||||
bool proper() const { return d >= 0 && d < s->type && s->move(d) == t; }
|
bool proper() const { return d >= 0 && d < s->type && s->move(d) == t; }
|
||||||
movei(cell *_s, int _d) : s(_s), d(_d) {
|
movei(cell *_s, int _d) : s(_s), d(_d) {
|
||||||
if(d == STRONGWIND) t = whirlwind::jumpDestination(s);
|
if(d == STRONGWIND) t = whirlwind::jumpDestination(s);
|
||||||
else if(d == FALL || d == NO_SPACE) t = s;
|
else if(d < 0 || d >= s->type) t = s;
|
||||||
else t = s->move(d);
|
else t = s->move(d);
|
||||||
}
|
}
|
||||||
movei(cell *_s, cell *_t, int _d) : s(_s), t(_t), d(_d) {}
|
movei(cell *_s, cell *_t, int _d) : s(_s), t(_t), d(_d) {}
|
||||||
@ -465,10 +465,13 @@ struct movei {
|
|||||||
movei rev() const { return movei(t, s, rev_dir_or(d)); }
|
movei rev() const { return movei(t, s, rev_dir_or(d)); }
|
||||||
int dir_or(int x) const { return proper() ? d : x; }
|
int dir_or(int x) const { return proper() ? d : x; }
|
||||||
int rev_dir_or(int x) const { return proper() ? s->c.spin(d) : x; }
|
int rev_dir_or(int x) const { return proper() ? s->c.spin(d) : x; }
|
||||||
|
int rev_dir() const { return s->c.spin(d); }
|
||||||
bool mirror() { return s->c.mirror(d); }
|
bool mirror() { return s->c.mirror(d); }
|
||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
EX movei moveimon(cell *c) { return movei(c, c->mondir); }
|
||||||
|
|
||||||
EX movei match(cell *f, cell *t) {
|
EX movei match(cell *f, cell *t) {
|
||||||
for(int i=0; i<f->type; i++) if(f->move(i) == t) return movei(f, t, i);
|
for(int i=0; i<f->type; i++) if(f->move(i) == t) return movei(f, t, i);
|
||||||
return movei(f, t, -1);
|
return movei(f, t, -1);
|
||||||
|
2
orbs.cpp
2
orbs.cpp
@ -601,7 +601,7 @@ EX void jumpTo(cell *dest, eItem byWhat, int bonuskill IS(0), eMonster dashmon I
|
|||||||
killFriendlyIvy();
|
killFriendlyIvy();
|
||||||
|
|
||||||
cell *c1 = cwt.at;
|
cell *c1 = cwt.at;
|
||||||
animateMovement(cwt.at, dest, LAYER_SMALL, NOHINT);
|
animateMovement(match(cwt.at, dest), LAYER_SMALL);
|
||||||
cwt.at = dest;
|
cwt.at = dest;
|
||||||
forCellIdEx(c2, i, dest) if(c2->cpdist < dest->cpdist) {
|
forCellIdEx(c2, i, dest) if(c2->cpdist < dest->cpdist) {
|
||||||
cwt.spin = i;
|
cwt.spin = i;
|
||||||
|
@ -530,7 +530,7 @@ void moved() {
|
|||||||
cwt.spin = neighborId(centerover, cwt.at);
|
cwt.spin = neighborId(centerover, cwt.at);
|
||||||
flipplayer = true;
|
flipplayer = true;
|
||||||
}
|
}
|
||||||
animateMovement(cwt.at, centerover, LAYER_SMALL, NODIR);
|
animateMovement(match(cwt.at, centerover), LAYER_SMALL);
|
||||||
cwt.at = centerover;
|
cwt.at = centerover;
|
||||||
save_memory();
|
save_memory();
|
||||||
return;
|
return;
|
||||||
|
@ -1043,7 +1043,7 @@ void movePlayer(monster *m, int delta) {
|
|||||||
m->base->wall = waChasm;
|
m->base->wall = waChasm;
|
||||||
else {
|
else {
|
||||||
m->base->wall = waBigStatue;
|
m->base->wall = waBigStatue;
|
||||||
animateMovement(c2, m->base, LAYER_BOAT, NOHINT);
|
animateMovement(match(c2, m->base), LAYER_BOAT);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if(m->inBoat && !isWateryOrBoat(c2) && passable(c2, m->base, P_ISPLAYER | P_MIRROR | reflectflag)) {
|
else if(m->inBoat && !isWateryOrBoat(c2) && passable(c2, m->base, P_ISPLAYER | P_MIRROR | reflectflag)) {
|
||||||
@ -2295,7 +2295,7 @@ void moveMonster(monster *m, int delta) {
|
|||||||
m->base->wall = waChasm;
|
m->base->wall = waChasm;
|
||||||
else
|
else
|
||||||
m->base->wall = waBigStatue;
|
m->base->wall = waBigStatue;
|
||||||
animateMovement(c2, m->base, LAYER_BOAT, NOHINT);
|
animateMovement(match(c2, m->base), LAYER_BOAT);
|
||||||
}
|
}
|
||||||
if(passable_for(m->type, c2, m->base, P_CHAIN | P_ONPLAYER | reflectflag) && !isWatery(c2) && m->inBoat) {
|
if(passable_for(m->type, c2, m->base, P_CHAIN | P_ONPLAYER | reflectflag) && !isWatery(c2) && m->inBoat) {
|
||||||
if(isWatery(m->base))
|
if(isWatery(m->base))
|
||||||
|
Loading…
Reference in New Issue
Block a user