File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -28,6 +28,8 @@ pkgdata_DATA = bin/data/README.txt
2828resourcesdir = $(pkgdatadir ) /data/Resources
2929resources_DATA = \
3030 bin/data/Resources/Pathfinding_Orb.png \
31+ bin/data/Resources/Pathfinding_Shadow.png \
32+ bin/data/Resources/Floating_Orb.png \
3133 bin/data/Resources/Alternate_Pathfinding_Orb.png
3234
3335rulesetdir = $(pkgdatadir ) /data/Ruleset
Original file line number Diff line number Diff line change @@ -2833,6 +2833,14 @@ items:
28332833 recover: false
28342834 floorSprite: 73
28352835 weight: 1000
2836+ - type: FLOATING_ORB
2837+ recover: false
2838+ floorSprite: 74
2839+ weight: 1000
2840+ - type: PATHFINDER_SHADOW
2841+ recover: false
2842+ floorSprite: 75
2843+ weight: 999
28362844ufos:
28372845 - type: STR_SMALL_SCOUT
28382846 size: STR_VERY_SMALL
@@ -9321,6 +9329,8 @@ extraSprites:
93219329 - type: FLOOROB.PCK
93229330 files:
93239331 73: Resources/Pathfinding_Orb.png
9332+ 74: Resources/Floating_Orb.png
9333+ 75: Resources/Pathfinding_Shadow.png
93249334#New spritesheet Example:
93259335# - type: GIANTBUNNY.PCK
93269336# width: 32
Original file line number Diff line number Diff line change @@ -797,18 +797,33 @@ bool Pathfinding::previewPath(bool bRemove)
797797 Tile *tileBelow = _save->getTile (pos + Position (x,y,-1 ));
798798 if (!bRemove)
799799 {
800- BattleItem *item = new BattleItem (_save->getBattleState ()->getGame ()->getRuleset ()->getItem (" PATHFINDER_ORB" ), _save->getCurrentItemId ());
800+ BattleItem *item;
801+ if (tile->getPosition ().z > 0 && tile->hasNoFloor (tileBelow))
802+ {
803+ BattleItem *itemB = new BattleItem (_save->getBattleState ()->getGame ()->getRuleset ()->getItem (" PATHFINDER_SHADOW" ), _save->getCurrentItemId ());
804+ tile->addItem (itemB, _save->getBattleState ()->getGame ()->getRuleset ()->getInventory (" STR_GROUND" ));
805+ _save->getTileEngine ()->applyGravity (tile);
806+ item = new BattleItem (_save->getBattleState ()->getGame ()->getRuleset ()->getItem (" FLOATING_ORB" ), _save->getCurrentItemId ());
807+ }
808+ else
809+ {
810+ item = new BattleItem (_save->getBattleState ()->getGame ()->getRuleset ()->getItem (" PATHFINDER_ORB" ), _save->getCurrentItemId ());
811+ }
801812 tile->addItem (item, _save->getBattleState ()->getGame ()->getRuleset ()->getInventory (" STR_GROUND" ));
802813 }
803814 else
804815 {
805- for (std::vector<BattleItem*>::iterator j = tile->getInventory ()->begin (); j != tile->getInventory ()->end (); ++j)
816+ Tile *tile2 = _save->getTileEngine ()->applyGravity (tile);
817+ for (std::vector<BattleItem*>::iterator j = tile2->getInventory ()->begin (); j != tile2->getInventory ()->end ();)
806818 {
807- if ((*j)->getRules ()->getType () == " PATHFINDER_ORB" )
819+ if ((*j)->getRules ()->getType () == " PATHFINDER_ORB" || (*j)-> getRules ()-> getType () == " PATHFINDER_SHADOW " || (*j)-> getRules ()-> getType () == " FLOATING_ORB " )
808820 {
809821 delete *j;
810- tile->getInventory ()->erase (j);
811- break ;
822+ j = tile2->getInventory ()->erase (j);
823+ }
824+ else
825+ {
826+ ++j;
812827 }
813828 }
814829 }
Original file line number Diff line number Diff line change @@ -817,7 +817,10 @@ struct ColorReplace
817817 if (src)
818818 {
819819 const int newShade = (src&15 ) + shade;
820- if (newShade > 15 )
820+ if (src > 248 )
821+ // preserve blacks.
822+ dest = src;
823+ else if (newShade > 15 )
821824 // so dark it would flip over to another color - make it black instead
822825 dest = 15 ;
823826 else
You can’t perform that action at this time.
0 commit comments