– Fixed bug with saving open doors.
– Fixed issue that made NPCs react to seeing you with a weapon in another building.
– Fixed bug that made it impossible to do an aimed shot while crouching.
– Fixed minor issue with the opening and closing of some doors not affecting tile lighting.
– Fixed some issues with elevators that could severly mess up the pathfinding of NPCs.
– Fixed player and background noise levels getting stuck if sound files are missing for some reason.
– Fixed bug that would cause the player to still be alive after dying if he was following a character when killed (i.e. the player had clicked on a character and the player character was walking up to that character).
– Fixed issue that would make a character face in a different direction than he was moving when getting out of another character’s way.
– Fixed bug that would make a character choose an edge tile to walk to when getting out of another character’s way.
– Made level visibility also apply to other buildings.
– Added power lines overlay when hovering over fuse boxes (and other stuff that’s connected to something else via power lines).
– When clicking on a world object or using an item on it, the player character will now automatically walk up to it if it’s out of reach (but not if the player character is in one building and the object in another).
– You can now shoot at characters in an elevator, and they can shoot at you.
– Made sure the current objective screen is removed if you walk into an elevator and the elevator buttons are displayed or walk up to talk to a character.
– Added an arrow for when hovering over an edge tile to show that going there will make you leave the map.
– Integrated the current objective and restart location buttons better with the interface.
– Made placement of character dialogue take into account whether or not the character is in a moving elevator.
– Changed the name of the Electric Surge and Lock Override devices to Remote Power Surge and Remote Door Lock.
– Added functionality to the scripting language so that actions can be set to only occur after a dialogue has ended and the player has closed the dialogue screen (such as the receptionist only going to investigate the car alarm when the player closes the dialogue window).
– Some changes to the test map.
– Fixed bug that would potentially crash the game when drawing the selection outline around a shooting character whose line of sight is broken.
– Fixed an error in the level design that made it possible to shoot the CEO from the adjacent building without doing anything else (it wasn’t supposed to be that easy!).
I was hoping to have v0.1.4 out by now, but I’m constantly running into new issues and bugs that need fixing. One of the big causes for all this is allowing the player to shoot at characters in an elevator and being shot at while in an elevator. The actual shooting part isn’t a problem – it’s having a dead body in the elevator along with any dropped weapons.
For the dropped weapons, I just had to make sure that they’re ‘teleported’ to the new level whenever the elevator moves from one level to another. Not such a big issue, but it took some time to get working. With the actual dead bodies, I was experiencing that the bodies would sometimes come back to life and chase down the player that originally killed them. The NPC would basically get snapped out of his dead state for some reason and continue his gunfight with the player (the weirdness of which was exasperated by the fact that the NPC had dropped his gun when dying and would therefore just be firing his empty hand at the player!).
It took a few hours of staring at code and trying different things before I figured out what was going on: When an elevator moves from one level to another, the code runs through a loop and moves all characters in the elevator to this new level. In doing so, the tiles on the new level are set to being occupied by these characters. Except dead bodies shouldn’t occupy (and thus block) a tile. This meant that whenever another NPC tried to move onto this tile, it would tell the dead NPC to get out of the way – and voila, the dead guards would get back on their feet and move out of the way. Since they were now in a ‘walk’ animation instead of the ‘dead’ animation, they were quite literally reanimated.
Also, if you’ve ever wondered why killed characters in the original X-COM always dropped dead by pretty much just collapsing in on themselves, it’s because corpses that stretch across multiple tiles can create all sorts of graphical issues. Such as corpses clipping through walls or doors. This will only become more apparent in Hostile Takeover with corpses in elevators, as the elevators aren’t large enough for the corpse sprites. I will, however, be making more corpse sprites in the future to remedy this, as well as running various checks to make sure corpses aren’t clipping through walls. For now, just know that this isn’t a bug but just something further down on my to-do list.
In the last blog post, I mentioned something I was working on that wasn’t quite ready to show yet. Well, it’s working now, so here it is:
I’ve added functionality for showing these power lines when hovering over something that’s connected to something else. Until now, you kinda had to guess or give it a try to figure out what shutting off a fuse box would do, for example, but now it should be a lot easier.
This also means that I can have multiple fuse boxes (or switches or other stuff in the future) that all affect different parts of a building – instead of just a single fuse box that shuts off all power. This really opens up the options for adding various puzzles to a map.
There are still bugs to be fixed in the game, but it seems that it’s stable enough now that I can focus on some stuff that will take a bit longer to implement – and that will also break save game and map file compatibility. I imagine that’s what the release schedule is going to look like for a while: work a bit longer on a release with some new features in it, then do a bunch of bug-fix releases.
Two often requested features will be added in the next release: If you click on or try to use something on an object that’s outside your characters reach, he will now go up to it instead of just complaining that it’s out of reach. I originally didn’t add this as I was afraid a miss-click could mean that you’d for example accidentally break cover. But the annoyance of your character not automatically walking up to stuff seems to outweigh that risk.
The other feature is something I’m not sure of, but will be adding as a test. It’s having floors above the one your currently on not being drawn for adjacent buildings either. This will make it a lot easier to snipe from an adjacent building – but I fear it may make some stuff too easy, unless I can just design the map to take this into account.
I’m also working on a third new feature that should make a certain aspect of the game a lot more intuitive and easier to use. I don’t have it up and running completely like I want yet, so I’ll reveal what it is in a later blog post.
Here’s a quick bug-fix release I wanted out, as the next release will probably take a week or two to get out:
– Fixed bug that crashed the game when placing a device.
– Fixed bug with item labels (for picking up stuff from the ground or placed devices) not being positioned correctly if resolution changed.
– Fixed issue with attacking guards constantly opening and closing a door if the target is right on the other side.
– Fixed bug that would freeze the game when loading a new objective from the script file (temporary script file wasn’t created when loading a game, only when starting new game).
– Fixed rare crashing bug when drawing the character selection border.
– Fixed patrolling AIs being stopped indefinitely by a locked door.
– Fixed issue that would make inventory items disappear if you tried to use them on something they can’t be used on.
– Higher chance of player hitting target when shooting (non-aimed).
– Player aiming/shooting animations won’t get interrupted when taking damage.
– Balancing of damage given when shooting.
– Damage dealt shown.
– You can now also rotate the map with Q and E.
Hostile Takeover was released into the wild last week, and so far the latest v0.1.2 has been downloaded almost 300 times in 2 days. So that’s awesome. I’ve also received a bunch of great feedback and fixed various bugs.
The most pressing issue seems to be the combat. Simply put, for an assassin, you get killed way too easily in a gunfight with guards. So I’ve made three changes to address this: Your shooting animation is no longer interrupted when you take damage, your chance to hit has been improved, and AIs can’t deal you a critical one-shot kill anymore. I’ve also added damage indicators that show how much damage is dealt. This will all be in v0.1.3, which I’ll probably release when I’ve also fixed a bug with an infinite loop that freezes the game.
In the long run, I’ll be adding melee combat. The current idea is that if you’re standing right next to a target, an attack will automatically be with melee combat, while if the target is further away, it’s a ranged attack (i.e. shooting). Melee combat will also be used for sneaking up behind a target and slitting his throat or administering a sedative. For stealthy ranged attacks, I’ll probably also be adding a pistol with a silencer.