Psychic Debugging
#11537 posted by Preach on 2012/01/07 20:22:17
I'm going to channel Raymond Chan here, are the hordes spawned by the death of other monsters? Like waves once a certain number die?
Trigger multiple -> Lightning trap -> Trigger once -> relays
It's a bit odd all the other fights seem to work fine. This particular spawn however is spawning both a zerg in a spawn room that then come through teleporters AND a bunch that spawn right next to the player. If they are not waking you don't notice because they aggro you anyway :p
Activator
#11540 posted by Preach on 2012/01/07 23:08:23
So the lightning trap is shooting a hurtable trigger_once during this sequence? Because I could see that setting the wrong activator and so not waking monsters up. One test of this would be to replace the hordes with just a regular monster whose back is turned and see if that trigger will wake them up. If this monster also fails to wake then read on to find out the problem...
The concept of the activator is a fairly opaque topic in quake mapping. When an targetname event gets called, one of the entities in the game is designated as the activator of that event. If the trigger was a touch trigger then the player who touched it is the activator. Similarly relays propagate the activator of the original event.
What about when the trigger is driven by damage? Well, the QC has to work a bit harder to get this right. If the damage was done by a player rocket, naive code might make the rocket the activator. Really what we want is for the owner of the rocket to be the activator, which is why T_Damage takes two entities: the inflictor and the attacker. In this case the rocket is the inflictor and the player is the attacker. The concept of the attacker is also needed for correct ai and kill message attribution.
So I'd guess that the problem is that the lightning trap is being identified as the attacker and therefore becomes the activator. Lightning traps don't use their activator as the attacker, self is the attacker (mostly because the lightning uses the thunderbolt attack function which doesn't distinguish between inflictor and attacker). This is typical for trap shooters though, spike shooters would behave in the same way.
Activator Fix
#11541 posted by Preach on 2012/01/07 23:35:53
Forenote: Bear in mind that if any of the monsters from a horde spot the player, they will wake all the nearby monsters which will overwhelmingly reach the whole horde. Be careful of false positives in your testing.
There's actually a much more common source of activator bugs in maps, which I think have been discussed recently: monster kills (I assumed this was the issue at first). When a monster fires a trigger on death, their killer becomes the activator of the event. Usually the player does the killing but infighting can ruin it! So it's doubly worth looking at how to fix activator issues.
One suggestion would be just change this crazy QC stuff so that monsters who are activated always attack the player regardless of who caused the activation. I don't like this fix because it only works in single player. In co-op you might have multiple players, so you have to decide how to sensibly pick one for monsters to attack. Even if you think you've fixed this, what about if there are no players!
A simple fix on the mapping side of things is to make sure that events to wake up monsters are only bound to things that players can do, like touch triggers, buttons and item pick-ups. A lot of the time this is reasonable and worth bearing in mind. I don't think it's ideal everywhere though; if you imagine a climactic arena fight with multiple waves of spawning monsters, it might destroy the intensity if the player gets to press a button at their leisure to restart the combat.
So in these circumstances I would recommend a new pattern: Use the trigger event which may have the wrong activator to spawn a trigger_once over the combat area. Make this trigger_once target the monsters on touch. Since touch triggers only fire on players you can be sure the monsters will have a valid target. There is no chance in co-op that the monsters will go after the player who is AFK over the one in the arena. If no players are in the server, we just wait for a player to enter the area.
Yes
#11542 posted by necros on 2012/01/07 23:36:52
i ran into this problem back in ne_tower.
you could try making a giant info_notnull trigger_once in the area the player will be in that is only turned on when the lightning trap hits the trigger once, and have THAT trigger target the relays and monsters. this way the player will be the activator.
Heh
#11543 posted by necros on 2012/01/07 23:37:27
i should refresh pages before posting. -_-
Addendum
#11544 posted by Preach on 2012/01/07 23:38:58
There is no chance in co-op that the monsters will go after the player who is AFK over the one in the arena.
Reads better as:
There is no chance in co-op that the monsters will go after the player who is AFK in spawn ahead of the one in the arena.
Oh Yeah!
#11545 posted by Preach on 2012/01/07 23:39:34
For once my verbose answer is in before Necros' concise one!
Haaah
#11546 posted by ijed on 2012/01/08 05:22:44
I love you guys!
(did I already post this?)
Apparently Not
#11547 posted by ijed on 2012/01/08 05:26:24
I think I've fixed it, ta guys
Hah just after typing that I played it through again and both major horde sections broke, grr :p
#11550 posted by negke on 2012/01/08 12:37:59
Battle not with monster activation issues, lest ye become a monster. And if you gaze into the void, the trigger_hurt gazes also.
- Preach 2009
Sod that I was planning to release an alpha of this bloody thing today! :(
#11552 posted by Spirit on 2012/01/08 14:25:19
anything that stands in the way of horde gameplay is a good thing. I wonder how great rage could have been without it.
you mean, any bit of the game with the mutants? :P
Guh it is actually not working just with a straight trigger now. Monsters spawn but don't aggro. grrr.
I've reduced the spawning down to a single trigger the player walks through, and waves are staggered by doors in front of different groups... but it's only waking about half of the monsters anyway. Added multiple triggers in a line, or a single trigger multiple the player sits in and fires every few seconds, still isn't doing anything. Bit confused :p
ZQF
#11556 posted by RickyT33 on 2012/01/08 15:54:17
This aint a fix, but:
You could just normal monsters with the spawned and alert flags. This way you have 100% control of where and when they spawn, its easier to implement skills etc. I dunno if that would work in your map, but its an idea maybe :S
Yeah I'll mess around with how they are activating... I think I've worked out one factor that's causing trouble, some groups still had different spawn delays, and I think that was causing some telefragging and messing things up :p
Worth A Look
#11558 posted by Preach on 2012/01/08 18:33:18
Even if you do get it fixed, do set aside a copy of the map how it is now and send it to me sometime, I can check there isn't a bug in the code that way.
#11559 posted by necros on 2012/01/08 18:50:14
there's horde gameplay in rage?! :D
My conclusion is it is the spawn delay that is causing the mobs to not activate on spawn. I created a set spawned by the same trigger, two with no delay and two with ten seconds, first activate the second don't :E
#11561 posted by necros on 2012/01/08 20:14:36
isn't the auto-wake feature broken in quoth2? i know it definitely is for the horde spawner.
|