Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Messages - Stoddard

Pages: 1 ... 29 30 [31] 32 33
451
XPiratez / Re: Any way to make your gals emit light on night missions?
« on: September 02, 2016, 10:12:35 am »
After some playtesting ... slow transition to full brightness got annoying very fast, so I made it faster and limited to min shade 4, so that it doesn't ruin your night vision so much. And rebound it to tab key, so you can do useful things like walking while seeing where you in fact step.

https://vid.me/NFHm

I tried toggle mode and did not like it. In current form it ruins the night for me. Maybe with the palette hack it won't.

Cleaned up patch:
Spoiler:
Code: [Select]
diff --git a/src/Battlescape/Map.cpp b/src/Battlescape/Map.cpp
index ec64c89..52b9db6 100644
--- a/src/Battlescape/Map.cpp
+++ b/src/Battlescape/Map.cpp
@@ -108,6 +108,10 @@ Map::Map(Game *game, int width, int height, int x, int y, int visibleMapHeight)
  _scrollMouseTimer->onTimer((SurfaceHandler)&Map::scrollMouse);
  _scrollKeyTimer = new Timer(SCROLL_INTERVAL);
  _scrollKeyTimer->onTimer((SurfaceHandler)&Map::scrollKey);
+ _fadeTimer = new Timer(FADE_INTERVAL);
+ _fadeTimer->onTimer((SurfaceHandler)&Map::fadeShade);
+ _fadeTimer->start();
+ _fadeShade = 16;
  _camera->setScrollTimer(_scrollMouseTimer, _scrollKeyTimer);
 
  _txtAccuracy = new Text(24, 9, 0, 0);
@@ -124,6 +128,7 @@ Map::~Map()
 {
  delete _scrollMouseTimer;
  delete _scrollKeyTimer;
+ delete _fadeTimer;
  delete _arrow;
  delete _message;
  delete _camera;
@@ -174,6 +179,7 @@ void Map::think()
 {
  _scrollMouseTimer->think(0, this);
  _scrollKeyTimer->think(0, this);
+ _fadeTimer->think(0, this);
 }
 
 /**
@@ -417,7 +423,7 @@ void Map::drawTerrain(Surface *surface)
 
  if (tile->isDiscovered(2))
  {
- tileShade = tile->getShade();
+ tileShade = reShade(tile->getShade());
  }
  else
  {
@@ -469,7 +475,7 @@ void Map::drawTerrain(Surface *surface)
  int tileNorthShade, tileTwoNorthShade, tileWestShade, tileNorthWestShade, tileSouthWestShade;
  if (tileNorth->isDiscovered(2))
  {
- tileNorthShade = tileNorth->getShade();
+ tileNorthShade = reShade(tileNorth->getShade());
  }
  else
  {
@@ -508,7 +514,7 @@ void Map::drawTerrain(Surface *surface)
  Tile *tileTwoNorth = _save->getTile(mapPosition - Position(0,2,0));
  if (tileTwoNorth->isDiscovered(2))
  {
- tileTwoNorthShade = tileTwoNorth->getShade();
+ tileTwoNorthShade = reShade(tileTwoNorth->getShade());
  }
  else
  {
@@ -529,7 +535,7 @@ void Map::drawTerrain(Surface *surface)
  Tile *tileNorthWest = _save->getTile(mapPosition - Position(1,1,0));
  if (tileNorthWest->isDiscovered(2))
  {
- tileNorthWestShade = tileNorthWest->getShade();
+ tileNorthWestShade = reShade(tileNorthWest->getShade());
  }
  else
  {
@@ -563,7 +569,7 @@ void Map::drawTerrain(Surface *surface)
  Tile *tileSouthWest = _save->getTile(mapPosition + Position(-1, 1, 0));
  if (tileSouthWest->isDiscovered(2))
  {
- tileSouthWestShade = tileSouthWest->getShade();
+ tileSouthWestShade = reShade(tileSouthWest->getShade());
  }
  else
  {
@@ -583,7 +589,7 @@ void Map::drawTerrain(Surface *surface)
  BattleUnit *westUnit = tileWest->getUnit();
  if (tileWest->isDiscovered(2))
  {
- tileWestShade = tileWest->getShade();
+ tileWestShade = reShade(tileWest->getShade());
  }
  else
  {
@@ -595,7 +601,7 @@ void Map::drawTerrain(Surface *surface)
  {
  if ((tileWest->getMapData(O_WESTWALL)->isDoor() || tileWest->getMapData(O_WESTWALL)->isUFODoor())
  && tileWest->isDiscovered(0))
- wallShade = tileWest->getShade();
+ wallShade = reShade(tileWest->getShade());
  else
  wallShade = tileWestShade;
  tmpSurface->blitNShade(surface, screenPosition.x - tileOffset.x, screenPosition.y - tileWest->getMapData(O_WESTWALL)->getYOffset() + tileOffset.y, wallShade, true);
@@ -605,7 +611,7 @@ void Map::drawTerrain(Surface *surface)
  {
  if ((tileWest->getMapData(O_NORTHWALL)->isDoor() || tileWest->getMapData(O_NORTHWALL)->isUFODoor())
  && tileWest->isDiscovered(1))
- wallShade = tileWest->getShade();
+ wallShade = reShade(tileWest->getShade());
  else
  wallShade = tileWestShade;
  tmpSurface->blitNShade(surface, screenPosition.x - tileOffset.x, screenPosition.y - tileWest->getMapData(O_NORTHWALL)->getYOffset() + tileOffset.y, wallShade, true);
@@ -699,7 +705,7 @@ void Map::drawTerrain(Surface *surface)
  {
  if ((tile->getMapData(O_WESTWALL)->isDoor() || tile->getMapData(O_WESTWALL)->isUFODoor())
  && tile->isDiscovered(0))
- wallShade = tile->getShade();
+ wallShade = reShade(tile->getShade());
  else
  wallShade = tileShade;
  tmpSurface->blitNShade(surface, screenPosition.x, screenPosition.y - tile->getMapData(O_WESTWALL)->getYOffset(), wallShade);
@@ -710,7 +716,7 @@ void Map::drawTerrain(Surface *surface)
  {
  if ((tile->getMapData(O_NORTHWALL)->isDoor() || tile->getMapData(O_NORTHWALL)->isUFODoor())
  && tile->isDiscovered(1))
- wallShade = tile->getShade();
+ wallShade = reShade(tile->getShade());
  else
  wallShade = tileShade;
  if (tile->getMapData(O_WESTWALL))
@@ -897,7 +903,7 @@ void Map::drawTerrain(Surface *surface)
  tunit, part,
  offset.x,
  offset.y,
- ttile->getShade()
+ reShade(ttile->getShade())
  );
  }
  }
@@ -1325,6 +1331,16 @@ void Map::keyboardPress(Action *action, State *state)
 }
 
 /**
+ * Handles fade-in and fade-out on Alt key
+ * @param original tile/item/unit shade
+ */
+
+int Map::reShade(const int shade)
+{
+ return shade > _fadeShade ? _fadeShade : shade;
+}
+
+/**
  * Handles keyboard releases on the map.
  * @param action Pointer to an action.
  * @param state State that the action handlers belong to.
@@ -1626,6 +1642,28 @@ void Map::scrollKey()
 }
 
 /**
+ * Modify the fade shade level if fade's in progress.
+ */
+void Map::fadeShade()
+{
+ Uint8 *keystate = SDL_GetKeyState(NULL);
+ if (keystate[SDLK_TAB])
+ {
+ if (_fadeShade > 4)
+ {
+ --_fadeShade;
+ }
+ }
+ else
+ {
+ if (_fadeShade < _save->getGlobalShade())
+ {
+ ++_fadeShade;
+ }
+ }
+}
+
+/**
  * Gets a list of waypoints on the map.
  * @return A list of waypoints.
  */
diff --git a/src/Battlescape/Map.h b/src/Battlescape/Map.h
index ea2bd22..33c3157 100644
--- a/src/Battlescape/Map.h
+++ b/src/Battlescape/Map.h
@@ -46,8 +46,11 @@ class Map : public InteractiveSurface
 {
 private:
  static const int SCROLL_INTERVAL = 15;
+ static const int FADE_INTERVAL = 23;
  static const int BULLET_SPRITES = 35;
  Timer *_scrollMouseTimer, *_scrollKeyTimer;
+ Timer *_fadeTimer;
+ int _fadeShade;
  Game *_game;
  SavedBattleGame *_save;
  Surface *_arrow;
@@ -121,6 +124,8 @@ public:
  void scrollMouse();
  https:/// Keyboard-scrolls the camera.
  void scrollKey();
+ https:/// fades in/out
+ void fadeShade();
  https:/// Get waypoints vector.
  std::vector<Position> *getWaypoints();
  https:/// Set mouse-buttons' pressed state.
@@ -147,6 +152,8 @@ public:
  void setBlastFlash(bool flash);
  https:/// Check if the screen is flashing this.
  bool getBlastFlash();
+ https:/// Modify shade for fading
+ int reShade(const int shade);
 };
 
 }

Can't make a windows binary, sorry for that.


452
XPiratez / Re: Any way to make your gals emit light on night missions?
« on: September 02, 2016, 08:33:07 am »
It doesn't show anything that would not be seen if it was day.


EDIT: Ah, I misunderstood. It does not touch in-game lightning in any way. If units are dark, they stay dark to the AI or player for visibility calculations.

It's a low-level rendering hack so to say.

453
XPiratez / Re: Any way to make your gals emit light on night missions?
« on: September 02, 2016, 07:30:01 am »
Why so complicated?

https://vid.me/0YHL

Press alt a little longer and it all lights up. Release and it fades back.

Took all of two hours thinking of, coding, debugging, fighting with a screencapture program, uploading ...

Spoiler:
Code: [Select]
diff --git a/src/Battlescape/Map.cpp b/src/Battlescape/Map.cpp
index ec64c89..b425d82 100644
--- a/src/Battlescape/Map.cpp
+++ b/src/Battlescape/Map.cpp
@@ -52,6 +52,7 @@
 #include "../Interface/NumberText.h"
 #include "../Interface/Text.h"
 
+#include <cstdio>
 
 /*
   1) Map origin is top corner.
@@ -108,6 +109,10 @@ Map::Map(Game *game, int width, int height, int x, int y, int visibleMapHeight)
  _scrollMouseTimer->onTimer((SurfaceHandler)&Map::scrollMouse);
  _scrollKeyTimer = new Timer(SCROLL_INTERVAL);
  _scrollKeyTimer->onTimer((SurfaceHandler)&Map::scrollKey);
+ _fadeTimer = new Timer(FADE_INTERVAL);
+ _fadeTimer->onTimer((SurfaceHandler)&Map::fadeShade);
+ _fadeTimer->start();
+ _fadeShade = 15; https:// or _save->getGlobalShade();
  _camera->setScrollTimer(_scrollMouseTimer, _scrollKeyTimer);
 
  _txtAccuracy = new Text(24, 9, 0, 0);
@@ -124,6 +129,7 @@ Map::~Map()
 {
  delete _scrollMouseTimer;
  delete _scrollKeyTimer;
+ delete _fadeTimer;
  delete _arrow;
  delete _message;
  delete _camera;
@@ -174,6 +180,7 @@ void Map::think()
 {
  _scrollMouseTimer->think(0, this);
  _scrollKeyTimer->think(0, this);
+ _fadeTimer->think(0, this);
 }
 
 /**
@@ -417,7 +424,7 @@ void Map::drawTerrain(Surface *surface)
 
  if (tile->isDiscovered(2))
  {
- tileShade = tile->getShade();
+ tileShade = reShade(tile->getShade());
  }
  else
  {
@@ -469,7 +476,7 @@ void Map::drawTerrain(Surface *surface)
  int tileNorthShade, tileTwoNorthShade, tileWestShade, tileNorthWestShade, tileSouthWestShade;
  if (tileNorth->isDiscovered(2))
  {
- tileNorthShade = tileNorth->getShade();
+ tileNorthShade = reShade(tileNorth->getShade());
  }
  else
  {
@@ -508,7 +515,7 @@ void Map::drawTerrain(Surface *surface)
  Tile *tileTwoNorth = _save->getTile(mapPosition - Position(0,2,0));
  if (tileTwoNorth->isDiscovered(2))
  {
- tileTwoNorthShade = tileTwoNorth->getShade();
+ tileTwoNorthShade = reShade(tileTwoNorth->getShade());
  }
  else
  {
@@ -529,7 +536,7 @@ void Map::drawTerrain(Surface *surface)
  Tile *tileNorthWest = _save->getTile(mapPosition - Position(1,1,0));
  if (tileNorthWest->isDiscovered(2))
  {
- tileNorthWestShade = tileNorthWest->getShade();
+ tileNorthWestShade = reShade(tileNorthWest->getShade());
  }
  else
  {
@@ -563,7 +570,7 @@ void Map::drawTerrain(Surface *surface)
  Tile *tileSouthWest = _save->getTile(mapPosition + Position(-1, 1, 0));
  if (tileSouthWest->isDiscovered(2))
  {
- tileSouthWestShade = tileSouthWest->getShade();
+ tileSouthWestShade = reShade(tileSouthWest->getShade());
  }
  else
  {
@@ -583,7 +590,7 @@ void Map::drawTerrain(Surface *surface)
  BattleUnit *westUnit = tileWest->getUnit();
  if (tileWest->isDiscovered(2))
  {
- tileWestShade = tileWest->getShade();
+ tileWestShade = reShade(tileWest->getShade());
  }
  else
  {
@@ -595,7 +602,7 @@ void Map::drawTerrain(Surface *surface)
  {
  if ((tileWest->getMapData(O_WESTWALL)->isDoor() || tileWest->getMapData(O_WESTWALL)->isUFODoor())
  && tileWest->isDiscovered(0))
- wallShade = tileWest->getShade();
+ wallShade = reShade(tileWest->getShade());
  else
  wallShade = tileWestShade;
  tmpSurface->blitNShade(surface, screenPosition.x - tileOffset.x, screenPosition.y - tileWest->getMapData(O_WESTWALL)->getYOffset() + tileOffset.y, wallShade, true);
@@ -605,7 +612,7 @@ void Map::drawTerrain(Surface *surface)
  {
  if ((tileWest->getMapData(O_NORTHWALL)->isDoor() || tileWest->getMapData(O_NORTHWALL)->isUFODoor())
  && tileWest->isDiscovered(1))
- wallShade = tileWest->getShade();
+ wallShade = reShade(tileWest->getShade());
  else
  wallShade = tileWestShade;
  tmpSurface->blitNShade(surface, screenPosition.x - tileOffset.x, screenPosition.y - tileWest->getMapData(O_NORTHWALL)->getYOffset() + tileOffset.y, wallShade, true);
@@ -677,7 +684,7 @@ void Map::drawTerrain(Surface *surface)
  frameNumber += halfAnimFrame + tileWest->getAnimationOffset();
  }
  tmpSurface = _game->getMod()->getSurfaceSet("SMOKE.PCK")->getFrame(frameNumber);
- tmpSurface->blitNShade(surface, screenPosition.x - tileOffset.x, screenPosition.y + tileOffset.y, shade, true);
+ tmpSurface->blitNShade(surface, screenPosition.x - tileOffset.x, screenPosition.y + tileOffset.y, reShade(shade), true);
  }
  https:// Draw object
  if (tileWest->getMapData(O_OBJECT) && tileWest->getMapData(O_OBJECT)->getBigWall() >= 6 && tileWest->getMapData(O_OBJECT)->getBigWall() != 9)
@@ -702,7 +709,7 @@ void Map::drawTerrain(Surface *surface)
  wallShade = tile->getShade();
  else
  wallShade = tileShade;
- tmpSurface->blitNShade(surface, screenPosition.x, screenPosition.y - tile->getMapData(O_WESTWALL)->getYOffset(), wallShade);
+ tmpSurface->blitNShade(surface, screenPosition.x, screenPosition.y - tile->getMapData(O_WESTWALL)->getYOffset(), reShade(wallShade));
  }
  https:// Draw north wall
  tmpSurface = tile->getSprite(O_NORTHWALL);
@@ -710,7 +717,7 @@ void Map::drawTerrain(Surface *surface)
  {
  if ((tile->getMapData(O_NORTHWALL)->isDoor() || tile->getMapData(O_NORTHWALL)->isUFODoor())
  && tile->isDiscovered(1))
- wallShade = tile->getShade();
+ wallShade = reShade(tile->getShade());
  else
  wallShade = tileShade;
  if (tile->getMapData(O_WESTWALL))
@@ -897,7 +904,7 @@ void Map::drawTerrain(Surface *surface)
  tunit, part,
  offset.x,
  offset.y,
- ttile->getShade()
+ reShade(ttile->getShade())
  );
  }
  }
@@ -1325,6 +1332,16 @@ void Map::keyboardPress(Action *action, State *state)
 }
 
 /**
+ * Handles fade-in and fade-out on Alt key
+ * @param original tile/item/unit shade
+ */
+
+int Map::reShade(const int shade)
+{
+ return shade > _fadeShade ? _fadeShade : shade;
+}
+
+/**
  * Handles keyboard releases on the map.
  * @param action Pointer to an action.
  * @param state State that the action handlers belong to.
@@ -1626,6 +1643,27 @@ void Map::scrollKey()
 }
 
 /**
+ * Modify the fade shade level if fade's in progress.
+ */
+void Map::fadeShade()
+{
+ if (((SDL_GetModState() & KMOD_ALT) != 0))
+ {
+ if (_fadeShade > 0)
+ {
+ --_fadeShade;
+ }
+ }
+ else
+ {
+ if (_fadeShade < _save->getGlobalShade())
+ {
+ ++_fadeShade;
+ }
+ }
+}
+
+/**
  * Gets a list of waypoints on the map.
  * @return A list of waypoints.
  */
diff --git a/src/Battlescape/Map.h b/src/Battlescape/Map.h
index ea2bd22..6a8eac5 100644
--- a/src/Battlescape/Map.h
+++ b/src/Battlescape/Map.h
@@ -46,8 +46,11 @@ class Map : public InteractiveSurface
 {
 private:
  static const int SCROLL_INTERVAL = 15;
+ static const int FADE_INTERVAL = 222;
  static const int BULLET_SPRITES = 35;
  Timer *_scrollMouseTimer, *_scrollKeyTimer;
+ Timer *_fadeTimer;
+ int _fadeShade;
  Game *_game;
  SavedBattleGame *_save;
  Surface *_arrow;
@@ -121,6 +124,8 @@ public:
  void scrollMouse();
  https:/// Keyboard-scrolls the camera.
  void scrollKey();
+ https:/// fades in/out
+ void fadeShade();
  https:/// Get waypoints vector.
  std::vector<Position> *getWaypoints();
  https:/// Set mouse-buttons' pressed state.
@@ -147,6 +152,8 @@ public:
  void setBlastFlash(bool flash);
  https:/// Check if the screen is flashing this.
  bool getBlastFlash();
+ https:/// Modify shade for fading
+ int reShade(const int shade);
 };
 
 }


EDIT: that "#include <cstdio>" shouldn't be there obviously

454
I'm writing god-damned flight model for the ufos, complete with orbital insertions and reentry. Someone please stop me.

Also, Hobbes, how did you do non-stock markers for the bases?

455
OXCE Wishlists / Re: Solar's wishlist
« on: August 29, 2016, 05:16:54 pm »
Digging around geoscape code I had an idea come up:

Make craft repair, rearm, refuel manufacturing jobs, if a craft has 'runts required' attr, which tell how many runts are required to attain the stock repair, etc speed. Since there's crew unification proposal listed in the wishlist, make this number equal to crew number, so that the crew has some work to do after a flight. Ofc if someone got wounded, you either have spare hands on the base, or the craft isn't getting ready in time.

Add some runt space in the hangars which enables these task types. Autogenerate tasks upon arrival to cut down clicks. To be extra nasty, disallow repairs without workshop-type space, maybe for severe damage only. Maybe fuel repairs with some kind of 'spare parts' item or just plastasteel/electronics/chemicals/scrap/booze.

Now I'm not sure if there's support to locking down runt space to be used for only one class of work. I think not, but on the other hand, each hangar will provide  IIRC at most 6 runt slots, so it wouldn't blow up total runt space much. Ofc if you squat this  space for other manufacturing, craft isn't getting serviced either. Could be used for "prisoner processing" and "employment interviews" on outpost-style bases that lack other runt space.

I'd write this myself, but I don't have time right now, neck deep in AI API. So I'm just posting this here to not forget it.


456
Programming / Re: Code question
« on: August 29, 2016, 12:38:51 am »
Ah, well, didn't expect that.
Thank you all for the answer.

457
Programming / Code question
« on: August 28, 2016, 11:06:01 pm »
Can someone please explain what are the

Code: [Select]
if (_game->getSavedGame()->getMonthsPassed() != -1)
checks all around the codebase mean?


458
XPiratez / Re: Bughunt
« on: August 22, 2016, 11:05:53 pm »
I'd say if only HWPs remain, surrender is unconditional, since there's no one left to control them

459

This idea of the crew or parts of it returning after some days doesn't make much sense if you consider that if there was a crash there would be a search and rescue operation right away.

I guess the idea was that it was you who has to execute CSAR. Which you might not be able to do right away. So if enemy doesn't arrive, and friendlies don't arrive, survivors hitchhike out and you lose whatever equipment survived the crash.

It all depends on the setting. I agree this all doesn't make much sense in vanilla setting. There are others though.

Also, why would aliens be present on a crashed xcom craft site?

They don't, unless they come, as you say. They might not be able or willing to come though.

The aliens could assault the crashed craft right away (and you'd be defending it, so essentially another ufo mission), but it doesn't make much sense for these sites to be present for days or weeks.

The first part I agree, but still think that for some settings having to do SAR yourself or lose stuff and possibly more people might make sense.

I'm of no opinion on whether or how exactly to implement this. Got to do the basics first. Let's return to this after hostile intercepts and multifights actually work.

460
A possible half-assed solution would be to go the Power Dolls route: any lost crew has a chance of returning. If it happens, it happens within days or weeks, not straight away.
It's not very elegant and would require new mechanics, but the feels when someone you thought dead suddenly shows up at your base are wonderful. :)

Set up a transfer. Choose a base that has spare barracks space at random.

This should be easy enough to implement. Only the surprise part isn't entirely possible: even if the transfer is made to not show in transfer lists, the barrack space must be reserved. If the only base with spare space is the launching one, that'd be a clue that someone made it out. Still unknown who exactly of course.

461
Well this is great just as a difficulty option for OpenXCom: activate it and a few ufos will instead attack your craft if detected by either a base or a ufo

If the GCI option was available, then all it would require is a setting for the specific ufo type (canIntercept: true) for the ruleset so that the engine uses the detection/interception for this specific type, then it would be a matter of creating a regular alienMission of objective 0 like Alien Patrol (who just fly around and not land), assign to its waves the interceptor ufos  and you could have alien bases spawning either intercept or/and patrol missions.


I'm not sure how bases can spawn missions, but anyway I don't know enough about modding side yet. These simple rules would be a great start, thank you.

I plan to stop at 4x4 max intercepts right now, each intercept window will show all the ufos, current target being designated like this:



and changed by just clicking another ufo; the "show ufo" button showing currently designated target, possibly with damage levels (might depend on a craft module). Did not decide on how approach should work wrt other ufos yet, any ideas appreciated.

This flight vs ufo business proves to be tough though.

462
Oh, this sounds really interesting. I suppose the alien bases could also be set to launch interceptions?

But of course. Cities are there only because there's much more of them currently than the bases, and it fits xpiratez lore, which I understand assumes there's big faction presence in cities.



Each of the different letters is a type of Skynet base. Bases generate Aerial Hunter-Killers (UFOs) which perform regional missions: Supply, Retaliation, Infiltration, Research etc. Each different base type generates different missions:
* H bases generate additional bases of type B or C or Supply missions
* I generates Retaliation/Infiltration/Supply missions
* L generates Abductions/Harvest/Supply missions

Or, if there was instead an 'Interception' alienMission, it could be assigned to base type I, or a base type specifically dedicated to Interception and it would be run several times in a month, and even set specific patrol areas using missionZones.

But alien bases launching automatically interceptors works too.

That's really nice.

I didn't start yet on how all the activity will be guided by rulesets really. Currently it's like GCI, in addition to regular missions, if the code decides you're detected, and random gods wink so an so (to be tied into craft availability), it spawns an ufo and guides it to the target, no connection to existing AlienMissions.

As it is, the only AlienMission that resembles interception a bit is the base assault, and it is so hardcoded, that it's useless as a model. So something else will emerge. Currently I'm reassigning missions from ufos to flights of ufos, so that the dogfight UI will have some uniform place to fetch info from.

463
Yup, factions launch intercepts if you fly too slow / often near a city. Makes bulding the first base in a populated area a bad choice :)
Just this evening  I made nearby craft assist each other, very hacky, but it turned the regular 'secret base' hgunship/frig/cruiser swarm from a turkey shoot megascorp hunt into an omg gtfo moment, baracudas and dragons nonwithstanding. The can't disengage if your speed is too low feature I like the most.

I'm working on UI side of this. 4x4 dogfights just might be possible without drastic changes, but i'd like to go beyond that. No idea how though.

I wonder, what all the comments like

https:// Set UFO size - going to be moved to Ufo class to implement simultaneous dogfights.
(DogfightState.cpp)

are about? Was there some abandoned work on this? I'd hate reinventing more wheels than abs necessary.


Current version is a scrapheap, and also kills fps on anything above 5 minute rate. Only works on linux too,
but i'm getting there, yeah!

Economy stuff took the farthest seat for now.

EDIT:
also, the cylindrical map worked for some time alongside the game in a separate window, but got bitrot as it's not really needed right now.

464
OXCE Suggestions DONE / Re: Multiple inventory templates
« on: August 20, 2016, 12:21:10 am »
OXCE+ for linux is being continuosly built here https://lxnt.wtf/oxem/

Between minimal dependencies and three ubuntu flavours one surely can find a binary that would work on some other linux.
Besides I can add another dozen builds no problem, I just don't know which ones are wanted.

465
OXCE Wishlists / Re: Solar's wishlist
« on: August 18, 2016, 04:13:41 am »
I just did that and realized that it is stupid during testing.
If you need for example 2 pilots... one of them has max stats and second has min stats... the max stats of the first pilot would be used and second pilot would make no difference. That defies the purpose of requiring a second pilot.
So, I will revert the change and use average stats as per now.

As i first read the topic I thought there's no need for averaging at all - highest piloting-related gal supplies the approach-dodge related skills, the other is the gunner, so god help her. Same if there's more than two slots, only it would  be necessary to split them by type - how many pilots, how many gunners, maybe average piloting among the pilots, split guns and their chance to hit among the gunners. Or just average too for the first step. Slot assignment is automatic in order of bravery. Simple, eh? And no need for any bridge UI.

Pages: 1 ... 29 30 [31] 32 33