mirror of
https://github.com/zenorogue/hyperrogue.git
synced 2025-08-06 22:05:06 +00:00
implemented Orb of the Woods
This commit is contained in:
parent
49ba1a7fc4
commit
698104b29c
@ -1687,6 +1687,10 @@ LAND(0xC0C0FF, "Cursed Land", laCursed, 0, itCursed, RESERVED,
|
|||||||
ITEM('/', 0x211F6F, "Cursed Gold", itCursed, IC_TREASURE, ZERO, RESERVED, osNone,
|
ITEM('/', 0x211F6F, "Cursed Gold", itCursed, IC_TREASURE, ZERO, RESERVED, osNone,
|
||||||
"A cursed gold.")
|
"A cursed gold.")
|
||||||
|
|
||||||
|
ITEM('o', 0x208020, "Orb of the Woods", itOrbWoods, IC_ORB, ZERO, RESERVED, osTerraform,
|
||||||
|
"Lets you swap positions with the trees.")
|
||||||
|
|
||||||
|
|
||||||
//shmupspecials
|
//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, "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.")
|
MONSTER( '*', 0xC0C0C0, "Knife", moBullet, ZERO | CF_BULLET, RESERVED, moNone, "A simple, but effective, missile, used by rogues.")
|
||||||
|
2
orbs.cpp
2
orbs.cpp
@ -146,6 +146,7 @@ EX void reduceOrbPowers() {
|
|||||||
reduceOrbPower(itOrbPsi, 111);
|
reduceOrbPower(itOrbPsi, 111);
|
||||||
reduceOrbPower(itOrbInvis, 77);
|
reduceOrbPower(itOrbInvis, 77);
|
||||||
reduceOrbPower(itOrbAether, 77);
|
reduceOrbPower(itOrbAether, 77);
|
||||||
|
reduceOrbPower(itOrbWoods, 100);
|
||||||
reduceOrbPower(itOrbDigging, 100);
|
reduceOrbPower(itOrbDigging, 100);
|
||||||
reduceOrbPower(itOrbTeleport, 200);
|
reduceOrbPower(itOrbTeleport, 200);
|
||||||
reduceOrbPower(itOrbSpace, 150);
|
reduceOrbPower(itOrbSpace, 150);
|
||||||
@ -1541,6 +1542,7 @@ EX int orbcharges(eItem it) {
|
|||||||
case itOrbFrog:
|
case itOrbFrog:
|
||||||
case itOrbDash:
|
case itOrbDash:
|
||||||
case itOrbPhasing:
|
case itOrbPhasing:
|
||||||
|
case itOrbWoods:
|
||||||
return 45;
|
return 45;
|
||||||
case itOrb37:
|
case itOrb37:
|
||||||
case itOrbEnergy:
|
case itOrbEnergy:
|
||||||
|
18
pcmove.cpp
18
pcmove.cpp
@ -738,8 +738,13 @@ void pcmove::tell_why_cannot_attack() {
|
|||||||
bool pcmove::after_escape() {
|
bool pcmove::after_escape() {
|
||||||
cell*& c2 = mi.t;
|
cell*& c2 = mi.t;
|
||||||
|
|
||||||
if(c2->wall == waBigStatue && !c2->monst && !nonAdjacentPlayer(c2, cwt.at) && fmsMove) {
|
bool push_behind = c2->wall == waBigStatue || (among(c2->wall, waCTree, waSmallTree, waBigTree, waShrub, waVinePlant) && markOrb(itOrbWoods));
|
||||||
if(!canPushStatueOn(cwt.at, P_ISPLAYER)) {
|
|
||||||
|
if(thruVine(c2, cwt.at)) push_behind = true;
|
||||||
|
|
||||||
|
if(push_behind && !c2->monst && !nonAdjacentPlayer(c2, cwt.at) && fmsMove) {
|
||||||
|
eWall what = c2->wall;
|
||||||
|
if(!thruVine(c2, cwt.at) && !canPushStatueOn(cwt.at, P_ISPLAYER)) {
|
||||||
if(vmsg()) {
|
if(vmsg()) {
|
||||||
if(isFire(cwt.at))
|
if(isFire(cwt.at))
|
||||||
addMessage(XLAT("You have to escape first!"));
|
addMessage(XLAT("You have to escape first!"));
|
||||||
@ -753,11 +758,14 @@ bool pcmove::after_escape() {
|
|||||||
changes.ccell(cwt.at);
|
changes.ccell(cwt.at);
|
||||||
|
|
||||||
c2->wall = cwt.at->wall;
|
c2->wall = cwt.at->wall;
|
||||||
if(doesnotFall(cwt.at))
|
if(doesnotFall(cwt.at)) {
|
||||||
cwt.at->wall = waBigStatue;
|
cwt.at->wall = what;
|
||||||
|
if(cellHalfvine(what))
|
||||||
|
c2->wall = waNone, cwt.at->wall = waVinePlant;
|
||||||
|
}
|
||||||
|
|
||||||
nextmovetype = lmMove;
|
nextmovetype = lmMove;
|
||||||
addMessage(XLAT("You push %the1 behind you!", waBigStatue));
|
addMessage(XLAT("You push %the1 behind you!", what));
|
||||||
animateMovement(mi.rev(), LAYER_BOAT);
|
animateMovement(mi.rev(), LAYER_BOAT);
|
||||||
changes.push_push(cwt.at);
|
changes.push_push(cwt.at);
|
||||||
return perform_actual_move();
|
return perform_actual_move();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user