Work around for squad member tagnames!!!
Work around for squad member tagnames!!!
I have come up with a (relatively) simple work around for assigning individual squad member/recruit a functioning tagnam that can cross from map to map over a campaign. Yes thats right, and it works too.
I was just dreaming one night about how cool it would be if some recruits could trigger events during a campaign over multiple maps, sadly disappointed about recruits tagnames being stripped after leaving thier initial maps, I started to think... hmm, what about a dogtag system?! where every recruit is given a set of dogtags (generic item, tagnamed with the recruits name, eg; entity hm11 'Stitch' is given a generic item entity 'StitchTag' that is tagnamed 'Stitch'). all subsequent events for Squad member hm11 'Stitch' would have triggers such as :
Condition: Player has exactly 1 item tagged 'Stitch' at anywhere
Action: whatever the hell storyline you want...
Wow, cool, I thought, but it sucks that those dogtags can be transferred from player to player thereby skewing the storyling... in effect a cheat of sorts, if Stitch dies, you can take his inventory (including His personal tagnamed dog tags) and play out the Stitch storylines even though he's dead. damn, so close I thought, but I hate that kind of loophole, so I gave up on the idea.
Sometime later, after some thinking, I came up with a solution, the trick is to make the generic item 'unlootable', yes, it's that simple, all you have to do is create a generic item with no sprite and untick 'lootable' and make the carryweight 0, yep that's it, and now your squaddies can have tagnames and triggers derived from those tagnames. It totally works too, I took a squad member from recruit pool to a different map, where a test trigger was set up (and it fired!) then I took my squad back to the bunker and put Stitch back into the recruit pool, and then I left the bunker and went back to same map (where test trigger was preserved)
and the trigger didn't fire!! Then I went back and retrieved Stitch and went back to the same map and the Trigger fired, and then I went to an entirely different map and again the trigger fired!!
The beauty of it is when an item is ticked 'unlootable' it doesn't show up in the entities inventory, so even if you use the 'take all' when looting a dead squaddies inventory, you can't pick it up!
Unfortuneatly this solution is not quit perfect as triggers involving an individual squad member's death as an Event cannot be accurately triggered. eg:
Conditions:
Player has more than 0 deaths at anyzone
Player has exactly 1 item tagged 'Stitch' at anyzone
Action:
What ever the hell you want.
Unfortunetly, this trigger will fire even if another squaddie other than Stitch is killed as long as Stitch is in anyzone.
I'm sure there will be other limitations to this system, but already I am quit sure that there will be many other purposes that we can now use this system for.
What do you guys think?
I was just dreaming one night about how cool it would be if some recruits could trigger events during a campaign over multiple maps, sadly disappointed about recruits tagnames being stripped after leaving thier initial maps, I started to think... hmm, what about a dogtag system?! where every recruit is given a set of dogtags (generic item, tagnamed with the recruits name, eg; entity hm11 'Stitch' is given a generic item entity 'StitchTag' that is tagnamed 'Stitch'). all subsequent events for Squad member hm11 'Stitch' would have triggers such as :
Condition: Player has exactly 1 item tagged 'Stitch' at anywhere
Action: whatever the hell storyline you want...
Wow, cool, I thought, but it sucks that those dogtags can be transferred from player to player thereby skewing the storyling... in effect a cheat of sorts, if Stitch dies, you can take his inventory (including His personal tagnamed dog tags) and play out the Stitch storylines even though he's dead. damn, so close I thought, but I hate that kind of loophole, so I gave up on the idea.
Sometime later, after some thinking, I came up with a solution, the trick is to make the generic item 'unlootable', yes, it's that simple, all you have to do is create a generic item with no sprite and untick 'lootable' and make the carryweight 0, yep that's it, and now your squaddies can have tagnames and triggers derived from those tagnames. It totally works too, I took a squad member from recruit pool to a different map, where a test trigger was set up (and it fired!) then I took my squad back to the bunker and put Stitch back into the recruit pool, and then I left the bunker and went back to same map (where test trigger was preserved)
and the trigger didn't fire!! Then I went back and retrieved Stitch and went back to the same map and the Trigger fired, and then I went to an entirely different map and again the trigger fired!!
The beauty of it is when an item is ticked 'unlootable' it doesn't show up in the entities inventory, so even if you use the 'take all' when looting a dead squaddies inventory, you can't pick it up!
Unfortuneatly this solution is not quit perfect as triggers involving an individual squad member's death as an Event cannot be accurately triggered. eg:
Conditions:
Player has more than 0 deaths at anyzone
Player has exactly 1 item tagged 'Stitch' at anyzone
Action:
What ever the hell you want.
Unfortunetly, this trigger will fire even if another squaddie other than Stitch is killed as long as Stitch is in anyzone.
I'm sure there will be other limitations to this system, but already I am quit sure that there will be many other purposes that we can now use this system for.
What do you guys think?
- requiem_for_a_starfury
- Hero of the Wastes
- Posts: 1820
- Joined: Tue Oct 29, 2002 11:13 am
Yeah it's not so much the identifying individuals, but acting on that identifier that is the problem. For instance you can also try using race if you have only a small collection of oddballs that can be recruited or any stat, trait, perk & zones for that matter.
For me the real need for tagnames is force speech and move/kill unit.
For me the real need for tagnames is force speech and move/kill unit.
If you can bear to hear the truth you've spoken
Twisted by knaves to make a trap for fools,
Twisted by knaves to make a trap for fools,
Yeah, I knew Force Speech was a bust, but it really stinks that the move unit wont function properly either. I tried the following trigger based upon my dogtag system and an item tagnamed 'crate'
Conditions:
Human has exactly 1 items tagged 'Stitch' at anywhere
Actions:
Move 'crate' to 'Stitch'
Set Player 4 to Waypoint 'Stitch'
it didn't work, The Crate got moved off map into an all black region, and Player 4 just stood there like an idiot. It seems you can't track to an tag item when it's in somebodies inventory.
Incidently there is a way to fake the forced speech of recruits using my dogtag system, but it will probably only be convincing with windowed speech only. Heres what you can do... Now presumeably you will want your character (We'll use Stitch again for my example) to interact with someone/something when he gets to a specific area (zone). what you need to do is open the Stitch entity file (hm11.ent) and change his race to unique other, then make it so he has no sprite in the image section, tagname him 'StitchVoice' and save as a new entity called 'StitchVoice'. Now go back to your map and in the zone where you want Stitch to have his encounter you place the invisible 'StitchVoice' entity. you will need to set up a player AI for your voice entity, click 'always friend' and 'immune friendly' under entity editor. Now set up the simple trigger:
Conditions:
Human has exactly 1 items tagged 'Stitch' at Speech Zone
Actions:
'StitchVoice' will use (windowed) speech node XXXXXX
It's convincing enough with the windowed conversation because the invisible Stitch Clone still carries the Stitch portrait when he speaks and from there you can fake a whole windowed conversation going back and forth between Stitch and whoever he's talking to. It wont be as pretty with floating text because unless Stitch is standing on exactly the right spot it'll look like anyone could be saying it.
I use these invisble voice entities throughout my campaign, they can be quite useful for many types of situations, and I'm still wishing some great spritemaker would make an invisible entity sprite with combat capabilities. hint, hint...
Conditions:
Human has exactly 1 items tagged 'Stitch' at anywhere
Actions:
Move 'crate' to 'Stitch'
Set Player 4 to Waypoint 'Stitch'
it didn't work, The Crate got moved off map into an all black region, and Player 4 just stood there like an idiot. It seems you can't track to an tag item when it's in somebodies inventory.
Incidently there is a way to fake the forced speech of recruits using my dogtag system, but it will probably only be convincing with windowed speech only. Heres what you can do... Now presumeably you will want your character (We'll use Stitch again for my example) to interact with someone/something when he gets to a specific area (zone). what you need to do is open the Stitch entity file (hm11.ent) and change his race to unique other, then make it so he has no sprite in the image section, tagname him 'StitchVoice' and save as a new entity called 'StitchVoice'. Now go back to your map and in the zone where you want Stitch to have his encounter you place the invisible 'StitchVoice' entity. you will need to set up a player AI for your voice entity, click 'always friend' and 'immune friendly' under entity editor. Now set up the simple trigger:
Conditions:
Human has exactly 1 items tagged 'Stitch' at Speech Zone
Actions:
'StitchVoice' will use (windowed) speech node XXXXXX
It's convincing enough with the windowed conversation because the invisible Stitch Clone still carries the Stitch portrait when he speaks and from there you can fake a whole windowed conversation going back and forth between Stitch and whoever he's talking to. It wont be as pretty with floating text because unless Stitch is standing on exactly the right spot it'll look like anyone could be saying it.
I use these invisble voice entities throughout my campaign, they can be quite useful for many types of situations, and I'm still wishing some great spritemaker would make an invisible entity sprite with combat capabilities. hint, hint...
I would personally use Campaign Variables, which also work really solid.
I tried several times to make it work but sometimes triggers just dont fire and tagnames appear non excistent... Campaign Variables seem to work best.
Haven't tried your option though... But the Dogtag idea is pretty cool, gives a little more indepth to the "military" self image that the brotherhood likes to have.
I tried several times to make it work but sometimes triggers just dont fire and tagnames appear non excistent... Campaign Variables seem to work best.
Haven't tried your option though... But the Dogtag idea is pretty cool, gives a little more indepth to the "military" self image that the brotherhood likes to have.
I have also discovered a way of making the player's squad members use floating speech, and it's relatively simply to set up. All you need to do is give your Single Player Spawn entity a tag name. In this example we'll tagname the spawnpoint 'SingleSP'. Now all you need to do is set up a trigger like so.
Conditions: Whatever the hell you want
Actions: Force speech - entity 'SingleSP' will use speech node XXXX
and thats it, the player will use the selected speech node. Of course like most all other aspects of the tactics engine there is a draw back to this system. The problem is that all squad members use the same speech node, so all six (or however many your squad is) say the same thing, and this can look really ugly if your not careful. But, if used in situations where the main player is alone like in the following screenshots it can look very good indeed. check it out...
[/img]
Conditions: Whatever the hell you want
Actions: Force speech - entity 'SingleSP' will use speech node XXXX
and thats it, the player will use the selected speech node. Of course like most all other aspects of the tactics engine there is a draw back to this system. The problem is that all squad members use the same speech node, so all six (or however many your squad is) say the same thing, and this can look really ugly if your not careful. But, if used in situations where the main player is alone like in the following screenshots it can look very good indeed. check it out...
[/img]
- requiem_for_a_starfury
- Hero of the Wastes
- Posts: 1820
- Joined: Tue Oct 29, 2002 11:13 am
Thanks for reminding me, it's the bloody spawn points not the world map that strip the tag names when you reload. Even using the goto mission command strips the tag names, so there goes an idea of a world map less campaign.
Using the recruit pool to transfer npcs between maps is the only way, I can think of, to preserve individual tag names now. Working a recruit master into each map (and your story) though, that's the tough part. Though if people do, then they can just use the single player spawns to give (and reinforce) the player character's tag name on each map. The only trigger that probably won't work properly, giving the main character a tag name via the spawn point, is the move unit command. Since it'll move the spawn point, or items to the spawn point as well as or even rather than the player.
Darn pesky things those spawn points, if you tick the 'main dude only' box then only the player character will appear, unless you reload then next time one squad member will appear, keep saving and reloading and you can get your whole team in a map meant for one person. Unless you add a spawn revist to the map then they'll appear all at once on reload.
Using the recruit pool to transfer npcs between maps is the only way, I can think of, to preserve individual tag names now. Working a recruit master into each map (and your story) though, that's the tough part. Though if people do, then they can just use the single player spawns to give (and reinforce) the player character's tag name on each map. The only trigger that probably won't work properly, giving the main character a tag name via the spawn point, is the move unit command. Since it'll move the spawn point, or items to the spawn point as well as or even rather than the player.
Darn pesky things those spawn points, if you tick the 'main dude only' box then only the player character will appear, unless you reload then next time one squad member will appear, keep saving and reloading and you can get your whole team in a map meant for one person. Unless you add a spawn revist to the map then they'll appear all at once on reload.
Aha, so you're saying that each time my squaddie comes from the recruit pool he/she has a tagname and it is functional until the squad respawns on a new map? Hmm, Interesting. I have already wrote in recruit-masters to the storylines of some of my bigger maps, and now that I know this, I will be sure to utilize someway or another.
About the move unit trigger, can you move a waypoint to the NPC's tagname, will it track to a squaddie's tagname? (Originally that is how I was planning my Arrest Scenario, but it didn't quite work out that way, heh...).
Also what about vehicle tagnames? do they behave the same as a squad member or more like a generic item, do they get stripped as well? I am envisioning a scenaro where the player's vehicle could get stolen (like in FO2). I know that vehicles 'count' as squad members and it kind of skewed my arrest scenario. (Although I have it working fine now).
And Req, I'd just like to say thanks to you for all the help over the years. Your name will definetly be going into the credits of my mod for inspiration and technical expertise.
About the move unit trigger, can you move a waypoint to the NPC's tagname, will it track to a squaddie's tagname? (Originally that is how I was planning my Arrest Scenario, but it didn't quite work out that way, heh...).
Also what about vehicle tagnames? do they behave the same as a squad member or more like a generic item, do they get stripped as well? I am envisioning a scenaro where the player's vehicle could get stolen (like in FO2). I know that vehicles 'count' as squad members and it kind of skewed my arrest scenario. (Although I have it working fine now).
And Req, I'd just like to say thanks to you for all the help over the years. Your name will definetly be going into the credits of my mod for inspiration and technical expertise.
- requiem_for_a_starfury
- Hero of the Wastes
- Posts: 1820
- Joined: Tue Oct 29, 2002 11:13 am
Yeah if you give a recruit a tag name in either the entity editor (and start them in the pool) or when placing them on a map then always put them into the recruit pool before leaving a map their tag names will be safe. So recruit masters, bus drivers, matter transporters whatever fits the story. This is the only way I've found to save the tag names from being stripped.xkcon wrote:Aha, so you're saying that each time my squaddie comes from the recruit pool he/she has a tagname and it is functional until the squad respawns on a new map? Hmm, Interesting. I have already wrote in recruit-masters to the storylines of some of my bigger maps, and now that I know this, I will be sure to utilize someway or another.
Yeah you can use the move unit to move waypoints to an npc, then have people/critters follow that waypoint.xkcon wrote:About the move unit trigger, can you move a waypoint to the NPC's tagname, will it track to a squaddie's tagname? (Originally that is how I was planning my Arrest Scenario, but it didn't quite work out that way, heh...).
Unfortunately vehicle tag names get stripped as well.xkcon wrote:Also what about vehicle tagnames? do they behave the same as a squad member or more like a generic item, do they get stripped as well? I am envisioning a scenaro where the player's vehicle could get stolen (like in FO2). I know that vehicles 'count' as squad members and it kind of skewed my arrest scenario. (Although I have it working fine now).
Good work by the way on the using the spawn points to give a tag name to a character. When I tried it I tested it with the move unit trigger, which is the only one that doesn't work properly with this method, so I assumed it didn't work at all. Well you know what they say about assuming anything.