I'm having a bit of a problem on Arrival where there's a monster who refuses to budge.
Spoiler:
My intention is for the BoB to activate as the player enters the airlock.
[/quote]ravenshining wrote:Philtron, my understanding is that Visible/Invisible/Dual Monster Triggers can cross one Zone Border but not two, whereas Glue Triggers can not cross a single Superglue polygon. I am not sure how or whether the M1 and M2 polygons interact with each other...
I've tried and completely reconstructing the area with more polygons, this time using Glue, Glue Trigger, and Superglue polygons. BoB no longer gets stuck, but now the triggers completely fail to function. Despite neither monster being set to blind, they don't react until you fire a weapon or hit them.
Code: Select all
/* if weÕre trying to move into an impassable polygon, disallow the move */
switch (destination_polygon->type)
{
case _polygon_is_zone_border:
if (!data->cross_zone_boundaries) cost= -1;
break;
Looking through the source code, this does not seem to be the case. It looks like when a signal encounters a zone border, it tests to see whether a passed_zone_border flag is set: if it is, the signal stops, if it is not, the flag is set and continues.philtron wrote:Unless Weland and AlephOne deal with these things differently, then a single Zone Border will block any signal sent by a Monster Trigger.
Hmm, it appears that Glue Triggers call the same function activate_nearby_monsters() that Monster Triggers do, but passing different flags. Also there appears to be no difference between Dual and Invisible monster triggers!philtron wrote:I've never used Glue or Super Glue, but if I remember correctly: A monster placed on a Glue polygon will only activate when the player steps on a Glue trigger or if it sees or hears the player. A monster placed on a Superglue trigger will not activate even until it sees or hears an enemy, regardless of whether the player steps on a Glue Trigger. I am not 100% certain about that, nor do I know how any of this interacts with the other Monster Triggers and Zone Borders. Does a Glue Trigger cross a zone border? Don't know, but I know it's been discussed on these forums in the past.
You could try Hopper's marathon utilities to convert the M1 map into a M2 map that Weland can read. Easier than getting Bovine or Pfhorte working.ravenshining wrote:I shall have to get a better M1 map editor than Mia working to investigate the originals and ensure monsters enjoy the same freedoms in Redux.
For triggers, activate_nearby_monsters is called from changed_polygon in marathon2.cpp without the _pass_one_zone_border flag. So, the signal stops without passing one zone border.ravenshining wrote:Looking through the source code, this does not seem to be the case. It looks like when a signal encounters a zone border, it tests to see whether a passed_zone_border flag is set: if it is, the signal stops, if it is not, the flag is set and continues.
With further testing, I did manage to get it to load one Infinity save. So it is possible, but most of the time it barfs.treellama wrote:Looks like it barfs loading the saved light states. Oh well.
I appreciate the throwback early 2000's window manager and theme though. Opera is a fitting touch as well.
What...? Ah, now I see. _pass_one_zone_border is for monsters and weapons, not polygons. It's neat finding stuff I've been wrong about for twenty years.treellama wrote:For triggers, activate_nearby_monsters is called from changed_polygon in marathon2.cpp without the _pass_one_zone_border flag. So, the signal stops without passing one zone border.
Confusing, no?
Making multiplayer work better is a major goal of Redux. But don't worry, the oxygen tick is doing great at depleting oxygen and killing non-vacuum-enabled Pfhor. I'll use them so rarely, I can just make custom physics for whatever monsters will be exposed to them.The Man wrote:Unfortunately, the light-based approach I've described above will only work for single-player games. I'm not sure if you're making multiplayer an option; if you are, I'll probably have to come up with some other approach,
Code: Select all
function Triggers.idle()
oxygen()
end
function oxygen()
for p in Players() do
if p.polygon.media then
p.oxygen = p.oxygen-1
end
end
end
On Major Damage and Total Carnage, you burn extra oxygen while firing.The Man wrote:I have no idea what the algorithm Marathon uses to calculate that is, but given the relevant information from the source code I could probably replicate it within a day or two.
FWIW, I pegged it as a G4 Sunbathing homage the second I entered the main part of the map. Even before then, I kind of suspected.Pfhorrest wrote:I thought so as well, which is why I used Craig's remix thereof for Eternal's "Sahkmet Rising", which is an obvious homage to G4 Sunbathing (even previously being named "G3 Moontanning").