rot, quest showcase *now with interior
Moderator: Lead Developers
rot, quest showcase *now with interior
Took me a few years to realise that the final Telvannis mod that never came wasn't part of the plan any longer (anyone remember that? the one with the main quest? heh)
Only recently got the TR release. Which I was very impressed by. Because it's great. Okay, I'm not much good at praisewords, but I've since learned a bit of tescs from fixing other mods and I'd like to help.
Here's my showcase - not really done playtesting and it's not polished, nor even finished for that matter, but I likely won't get to work on it for a few weeks so any early comments are welcome. No hurry.
ESP includes a quest in a medium-size cave, feat. lots of scripts. Started by talking with Melien Jaurard in Seyda Neen, Arrille's Tradehouse. Also (edit:no longer) dependent on the latest TR_Mainland.esm release, mostly for a few misc items not found in _Data.
Went a bit overboard and made a custom interior ("Baeshbanit", unconnected to exteriors and accessed through the questgiver), but you needn't give it a proper review, was just toying with the editor to learn how it works. What you need is more quest implementers, yes?
edit -description too long for comment box,
Context:
Quest giver is a Breton in service of an unspecified, shady-business type noble. Noble owns a small moonsugar/skooma smuggling ring in Morrowind, based in the cave Baeshbanit. No signs of life from the cave for a few weeks, smugglers sent to enforce reported that There Be Monsters in there. One of the smugglers known to hang around there is an Imperial rich kid whose relatives are pulling favors from the Imperial Guards, so the noble needs to downplay it fast.
Quest giver sends the PC to the cave to investigate, tells not to stir up too much trouble (eg not kill the smugglers, preferrably, nor the guards, though he doesn't know about those), and also asks him to recover incriminating evidence (2 ledgers, probably for his own purposes).
In other words, messy and mostly an excuse for scripting setups. The quest should work, all that's left unfinished is some scripting fluff for the final fight - was trying to simulate a Demoralize spell on the player, didn't work out so well but that's probably beyond the kind of scripting gimmicks required for TR. More basic scripts I could handle, though I can't quite make the NPC travel AI consistently agree with ladders. Not sure whether it's the scripts, my pathgridding, or simply the engine messing up.
Only recently got the TR release. Which I was very impressed by. Because it's great. Okay, I'm not much good at praisewords, but I've since learned a bit of tescs from fixing other mods and I'd like to help.
Here's my showcase - not really done playtesting and it's not polished, nor even finished for that matter, but I likely won't get to work on it for a few weeks so any early comments are welcome. No hurry.
ESP includes a quest in a medium-size cave, feat. lots of scripts. Started by talking with Melien Jaurard in Seyda Neen, Arrille's Tradehouse. Also (edit:no longer) dependent on the latest TR_Mainland.esm release, mostly for a few misc items not found in _Data.
Went a bit overboard and made a custom interior ("Baeshbanit", unconnected to exteriors and accessed through the questgiver), but you needn't give it a proper review, was just toying with the editor to learn how it works. What you need is more quest implementers, yes?
edit -description too long for comment box,
Context:
Quest giver is a Breton in service of an unspecified, shady-business type noble. Noble owns a small moonsugar/skooma smuggling ring in Morrowind, based in the cave Baeshbanit. No signs of life from the cave for a few weeks, smugglers sent to enforce reported that There Be Monsters in there. One of the smugglers known to hang around there is an Imperial rich kid whose relatives are pulling favors from the Imperial Guards, so the noble needs to downplay it fast.
Quest giver sends the PC to the cave to investigate, tells not to stir up too much trouble (eg not kill the smugglers, preferrably, nor the guards, though he doesn't know about those), and also asks him to recover incriminating evidence (2 ledgers, probably for his own purposes).
In other words, messy and mostly an excuse for scripting setups. The quest should work, all that's left unfinished is some scripting fluff for the final fight - was trying to simulate a Demoralize spell on the player, didn't work out so well but that's probably beyond the kind of scripting gimmicks required for TR. More basic scripts I could handle, though I can't quite make the NPC travel AI consistently agree with ladders. Not sure whether it's the scripts, my pathgridding, or simply the engine messing up.
- Attachments
-
- rot_QuestShowcase.ESP
- (276.11 KiB) Downloaded 237 times
-
- rot_QuestShowcase2.ESP
- text edit
- (270.99 KiB) Downloaded 209 times
Last edited by rot on Tue Mar 04, 2014 8:53 pm, edited 9 times in total.
-
- Lead Developer
- Posts: 1971
- Joined: Mon Oct 04, 2010 11:39 am
- Location: substitutional world
Re: rot, quest showcase
rot, that looks great, but before I start doing anything on it: do you really need anything from TR_Mainland.esm? Just asking because I find it a bit hard to imagine why the dependence.
EDIT: Oh, I should learn reading. What misc items do you use?
EDIT: Oh, I should learn reading. What misc items do you use?
I recall it was mostly fluff ingredients, maybe a firewood static? Nothing critical, if removing the dependency removes them it won't cause any trouble with the scripting.arvisrend wrote:rot, that looks great, but before I start doing anything on it: do you really need anything from TR_Mainland.esm? Just asking because I find it a bit hard to imagine why the dependence.
EDIT: Oh, I should learn reading. What misc items do you use?
-------
edit- more detailed description:
The cave has a corridor-entrance, leading to a central room which branches into 3 more.
First room has three NPCs - the Imperial (he was the manager here), a Dunmer smuggler, and a technically-slave Khajiit,
Second room is a steep drop with two Imperial Legion guards/investigators locked up at the bottom. They blacked out after entering the cave and have no idea what's going on there,
Third room used to be the Imperial's, now housing an altmer illusionist. The mage pretty much hypnotized the skooma fiends and had been experimenting on them for a while, he's done and getting ready to leave.
Here's how the quest goes (hopefully):
Entrance:
There's a medium lock in front so wanderers don't just barge in, questgiver provides the key. Harmless trap on it if the player has to dicky with the door.
Further: The altmer illusionist is there, and will run ahead of (and then behind) the player, casting illusions throughout the cave. He's invisible but can be detected by magic (detect enchantment from the robe he's wearing, or detect life/humanoid if there's such a spell?). He triggers an illusion/hologram - a harmless and unharmable creature which attacks the player, and will just disappear when hit or after a while. Few more of these in other parts of the cave.
Central room:
Stairs progressively lead up to the first, second and third parts of the cave, which the player probably visits in order but can skip. If the player catches and fights the invisible illusionist, or kills him after he attacks in the last room, no more illusions or effects will be triggered in the cave.
First room:
When the player gets close to the NPCs, they get Frenzy cast on them and attack for ~20 secs. They stopcombat/run when the effect is dispelled or fades. Player can talk but their minds are still blitzed and they have nothing useful to say.
Second room:
There's a chest resting on a plank poking out of a rock. Looks pretty ridiculous because it's an illusion, which will disappear if stepped on, making the player fall down to the bottom.
Two guards are down there, hinted at by their equipment lying around. A key to the door behind which they're locked up is on a table up above. When the player gets near an illusion is triggered, making the guards look like scamps attacking the player. They'll switch back to being guards when killed (dead guards), or if the effect on the player is resisted/dispelled/fades. Also can be resisted by willpower if the player "activates" the scamps (though talking to them isn't possible after they strike at the player once). Killing them makes the questgiver a bit unhappy (the investigators not returning will attract attention from the legion or something). If they're alive, the player can bullshit them - along the lines of a Daedra cult invading the cave, the cultists are dead and all's peachy now, they don't find out about the smuggling, = the questgiver will be extra happy. Or else they'll just leave if the door's open.
Last room:
The illusionist follows and attacks when the player approaches his desk. When he is first hurt he "splits" - becomes an illusion which fades while he reappears behind the player. If the player skipped the other rooms, the mage has more juice and can use that trick again twice.
When his health gets low he casts a paralyse spell.
Either way he attempts to run to his desk, take his bag and use the invisibility potion if it's there. If he reaches the entrance while still invisible he gets away.
-
- Lead Developer
- Posts: 1971
- Joined: Mon Oct 04, 2010 11:39 am
- Location: substitutional world
I don't think you use anything from the Mainland at all. That shouldn't surprise you, as the objects added by Mainland are usually very specific and local. Though there are exceptions, alas...
First impressions:
You sure know how to script!
"discrete" should be "discreet".
Error message inside the cave, occuring several times: "Scale parameters for Magic Effect Blind are bad."
I'll look deeper at this in two days...
First impressions:
You sure know how to script!
"discrete" should be "discreet".
Error message inside the cave, occuring several times: "Scale parameters for Magic Effect Blind are bad."
I'll look deeper at this in two days...
I'd guess it's caused by the activators casting these spells. Light-type objects also went full bonkers when I tried to make them cast special effects, probably has to do with them not having a proper cast animation?arvisrend wrote: Error message inside the cave, occuring several times: "Scale parameters for Magic Effect Blind are bad."
I'll try and have a look before the holidays then. Thanks!
-
- Lead Developer
- Posts: 1971
- Joined: Mon Oct 04, 2010 11:39 am
- Location: substitutional world
rot, can we have an updated file, with abot's suggestion implemented? This won't count towards your three-releases clock. And yeah, I'd like to see the Mainland dependency gone as well, though that's your choice.
Also, a minor balancing thing: At the moment, meeting the three hexed workers before confronting the illusionist makes the player miss out on 1 or 2 magickguard robes (because the illusionist clones himself a bit less often). Maybe make all the clones but the last one dissolve in dust when they die?
Also, a minor balancing thing: At the moment, meeting the three hexed workers before confronting the illusionist makes the player miss out on 1 or 2 magickguard robes (because the illusionist clones himself a bit less often). Maybe make all the clones but the last one dissolve in dust when they die?
No worries, I'm also too busy to mod this week.Why wrote:I'll just drop by to say it's awesome that you're showcasing for quests, I'm keeping an eye on this, but I'm super busy at the moment. I'll get to this soon!
Sure, since you didn't see anything left from Mainland in there it'll just be a few clicks.arvisrend wrote:rot, can we have an updated file, with abot's suggestion implemented? This won't count towards your three-releases clock. And yeah, I'd like to see the Mainland dependency gone as well, though that's your choice.
I knew there were bound to be some bugs in there!arvisrend wrote:Also, a minor balancing thing: At the moment, meeting the three hexed workers before confronting the illusionist makes the player miss out on 1 or 2 magickguard robes (because the illusionist clones himself a bit less often). Maybe make all the clones but the last one dissolve in dust when they die?
The illusionist isn't supposed to truly get cloned, he just leaves an illusion of himself where he was, while he reappears behind the player. So the "originals" are supposed to become unharmable (through sanctuary + spell absorb) and then disappear.
Maybe you're killing him with a spell long/powerful enough to finish him after he's become unharmable? I don't remember accounting for that possibility.
Updated file with the fixes in first post,
I should've mentioned ~50 Willpower is best to test the effects, as it resists some of them.
When I get some CS time I'll pad his scripts against heavy damage and give another shot to the "demoralize on player" trick. I really don't feel using DisableControls on the player is wise, and Paralysis can be cured with potions which wouldn't make sense, any ideas?
I should've mentioned ~50 Willpower is best to test the effects, as it resists some of them.
When I get some CS time I'll pad his scripts against heavy damage and give another shot to the "demoralize on player" trick. I really don't feel using DisableControls on the player is wise, and Paralysis can be cured with potions which wouldn't make sense, any ideas?
Updated new file again.
Couldn't help but think about it, and the clone thing was also a quick fix (one Return line added in the script in case of physical one-shot, and a Dispel to ward against lingering uberspells),
That particular cloning problem should be gone.
But mostly "EditorMarker_box_01.nif" turn out to be invisible walls and my earlier fix had messed up badly. Ewww.
Couldn't help but think about it, and the clone thing was also a quick fix (one Return line added in the script in case of physical one-shot, and a Dispel to ward against lingering uberspells),
That particular cloning problem should be gone.
But mostly "EditorMarker_box_01.nif" turn out to be invisible walls and my earlier fix had messed up badly. Ewww.
edit: updated file
Not exactly - all the casting activators still have the invisible collision wall mesh,
BUT I scaled them down to 0.001 so they wouldn't... collide (now that was smart!) and block the player. The engine must be considering they don't have collision.
Most of these only stay a few frames and the one that doesn't can be moved, I guess it's okay to keep them big. Fixin'
Not exactly - all the casting activators still have the invisible collision wall mesh,
BUT I scaled them down to 0.001 so they wouldn't... collide (now that was smart!) and block the player. The engine must be considering they don't have collision.
Most of these only stay a few frames and the one that doesn't can be moved, I guess it's okay to keep them big. Fixin'
Updated file, this is now done design-wise.
I playtested it some, got to display the error messages and saw the "bad parameters" too - that spellcast-collision error happens:
- when the base mesh has no collision
- when the caster object's been scaled down so small it doesn't have collision
- when a visual spell effect is applied on such a small object (hit by area of effect)
- when the caster is (?)beyond the engine's minimum collision processing distance (?)
So, fixed these and a few more bugs. As for previously unfinished stuff:
- Making the player run away - scrapped, movements are fine but I don't see how to control the view, short of repositioning through PositionCell which isn't very fluid. Could work for a blackout-parsed Command spell on player maybe. Molag Bal anyone?
- Mage tries to escape at the ends - done; the invisibility escape effect is half-arsed because...
- Removed most all the invisibility that relied on setting scale to 0.001, as the Invisibility effect itself on a NPC only makes it transparent. Any area spell hit with that scale results in errors, so, scrapped. I'm thinking a way to make a NPC "really" invisible would be to replace him with one that has collision but fully transparent textures, but I don't know how to do that kind of mesh-animation fiddling yet. Sounds like it might be useful though.
So, the mage doesn't stalk and follow in the whole cave anymore but can still be caught at the start if you're very fast.
The one thing I'm still not OK with is, there is a chance when the mage casts a Touch spell for the effect to apply on the PC only once he casts his next spell (on self) a few seconds later. Sounds like more of an engine bug. Harmless but weird.
I playtested it some, got to display the error messages and saw the "bad parameters" too - that spellcast-collision error happens:
- when the base mesh has no collision
- when the caster object's been scaled down so small it doesn't have collision
- when a visual spell effect is applied on such a small object (hit by area of effect)
- when the caster is (?)beyond the engine's minimum collision processing distance (?)
So, fixed these and a few more bugs. As for previously unfinished stuff:
- Making the player run away - scrapped, movements are fine but I don't see how to control the view, short of repositioning through PositionCell which isn't very fluid. Could work for a blackout-parsed Command spell on player maybe. Molag Bal anyone?
- Mage tries to escape at the ends - done; the invisibility escape effect is half-arsed because...
- Removed most all the invisibility that relied on setting scale to 0.001, as the Invisibility effect itself on a NPC only makes it transparent. Any area spell hit with that scale results in errors, so, scrapped. I'm thinking a way to make a NPC "really" invisible would be to replace him with one that has collision but fully transparent textures, but I don't know how to do that kind of mesh-animation fiddling yet. Sounds like it might be useful though.
So, the mage doesn't stalk and follow in the whole cave anymore but can still be caught at the start if you're very fast.
The one thing I'm still not OK with is, there is a chance when the mage casts a Touch spell for the effect to apply on the PC only once he casts his next spell (on self) a few seconds later. Sounds like more of an engine bug. Harmless but weird.
Wow, talk about a complicated showcase.
I love the way the mage and the cave are scripted. Really innovative use to make things seem like illusions and whatnot. It seems your scripting abilities are more than adequate to join the project - I'm just a bit concerned about your dialog. The amount of it is fine, though you overuse choice a bit, there's not much need to begin the quest with a choice-greeting, just use a linked topic to start it that the player can select. But those things are of minor importance - what is important is the tone of it. Try to make it a bit more speech-like, especially for the noble and the guards. I didn't actually mind the tone of the noble too much, but he could still be a bit more lively. The journal could be cleaned up a little as well.
So please, post a file with updated dialog, and you'll be good to go!
I love the way the mage and the cave are scripted. Really innovative use to make things seem like illusions and whatnot. It seems your scripting abilities are more than adequate to join the project - I'm just a bit concerned about your dialog. The amount of it is fine, though you overuse choice a bit, there's not much need to begin the quest with a choice-greeting, just use a linked topic to start it that the player can select. But those things are of minor importance - what is important is the tone of it. Try to make it a bit more speech-like, especially for the noble and the guards. I didn't actually mind the tone of the noble too much, but he could still be a bit more lively. The journal could be cleaned up a little as well.
So please, post a file with updated dialog, and you'll be good to go!
Thanks Why,
I'll try and brush up the dialogue. That IS the aspect of questing I'm the least comfortable with. Any dialogue I write at the moment either feels wholly unnatural (as in this) or wouldn't fit with the Morrowind setting. Hoping to improve though.
In the meantime, here's a synopsis I came up with during an especially boring lecture - honest attempt at quest design trying to be a story and not a right scriptfest.
Just putting that out there for practice and all, comments welcome but not required.
I'll try and brush up the dialogue. That IS the aspect of questing I'm the least comfortable with. Any dialogue I write at the moment either feels wholly unnatural (as in this) or wouldn't fit with the Morrowind setting. Hoping to improve though.
In the meantime, here's a synopsis I came up with during an especially boring lecture - honest attempt at quest design trying to be a story and not a right scriptfest.
Just putting that out there for practice and all, comments welcome but not required.
TL;DR an argument over who gets a petty item snowballs beyond the grave, clueless descendents think they did something to anger their ancestors. Poke the ghosts, find out what it's all about, and force or shame them into leaving.rot wrote:snip
Last edited by rot on Sun Aug 18, 2013 9:42 pm, edited 1 time in total.
-
- Lead Developer
- Posts: 1971
- Joined: Mon Oct 04, 2010 11:39 am
- Location: substitutional world
I can't comment on your new quest design (this needs someone who understands lore), but some remarks on your first questing showcase:
- I was stuck just outside the (closed!) rot_baesh_guarddoor door. Something about the collision geometry. I suggest not to use doors at any other X-angles than 0 and 180 without some good testing; this seems a weak spot of the collision engine.
- Unused scripts should be removed from the file, not just short-circuited, for the sake of better maintainability.
- The "[Listen to him]"/"[Refuse]" choice in the Greeting of the questgiver is useless. NPCs can give very long greetings without requiring the player to confirm he wants to listen. It is understood that if the player doesn't care, he just doesn't have to read it.
- You could be more vocal about the scripting tactics you have discovered!
I particularly liked how you called a global script from a dialogue result, which then injected a choice into the dialogue result. I don't understand how the
block didn't short-circuit the script, though (is menumode briefly set to 0 when a dialogue reply is being computed?), and moreover, for the particular thing you have done, I would just have put the script into the dialogue result box (if-loops work there). But the tactic is quite nice.
- "GetHealth <= 0" isn't a way to find out whether an NPC is dead. If an NPC dies while a health-restore effect is active on him (be it his own spell, or an enchantment, or a spell the player cast on him to use him as a better training dummy), he often dies with a positive health recorded. Unfortunately, there isn't an automatic way to fix this, since OnDeath has its known quirks and getDeadCount is extremely heavy on the framerate (for no good reason).
- Fatigue is a float, so I'm not sure if comparisons like "if ( rot_naralitar0->GetFatigue == 300 )" and "ElseIf ( rot_naralitar0->GetFatigue == 250 )" actually do what they should. I haven't checked.
- You check if the player tries to talk to the fake scamps. I bet this is very unlikely since creatures in combat cannot be talked to.
- Apparently the timer for resisting the spell (script rot_sc_baesh_guardspell) is measured in frames. Not sure if this is very fair to low-end gamers. Same for the attack timer on the frenzied smugglers.
- In script rot_sc_baesh_guardspell, I don't get this:
What's the point of things underneath a "return"?
- The items scripted with rot_sc_baesh_guardstuff keep their script even when the player has taken them. This isn't sooo good, because players tend to collect all their stuff in one house, and by the end of the game it overflows with scripted items already. If the script wouldn't be on so many different objects, I'd suggest you replace
by
But you've got 4 different objects in this script, and MW scripting doesn't know enough reflection to distinguish between them. Well, but the objects have different health, so you can use getHealth to tell them apart ;)
I see you did it right in script rot_sc_baesh_potion.
- You commented:
But the ogrim kinda did fall from the ceiling (or from some height, at least) nevertheless. Not sure what exactly causes this. Maybe use PlaceItemCell instead of placeatme? (I haven't tried.)
- Naralitar's escape routine behaves weirdly. Sometimes, he fails (or doesn't try?) to become invisible, and just stands around peacefully without doing anything after paralyzing the player. One time I had him successfully escape and then the game crashed, possibly due to the "Setdelete 1" in his script?
I haven't carefully read all the scripts (in fact, I don't even understand most of the rot_sc_naralitar* scripts), but what I've seen shows your skills well enough to recommend you for scripting 200%.
Now the problem is that questing also is writing dialogue, not just scripts. Unfortunately none of it seems to be good in your file, at least not in the sense of "believable and fitting the style and the context". Of course, this would probably have been easier if you had chosen a less outlandish quest design, so I believe there is quite some potential here as well, particularly since book rot_baeshbanit_letter is well-written!
[Note: I'm not asking you to fix any bugs anymore since we can't use this quest in TR and I'm more than convinced of your scripting leetness.]
- I was stuck just outside the (closed!) rot_baesh_guarddoor door. Something about the collision geometry. I suggest not to use doors at any other X-angles than 0 and 180 without some good testing; this seems a weak spot of the collision engine.
- Unused scripts should be removed from the file, not just short-circuited, for the sake of better maintainability.
- The "[Listen to him]"/"[Refuse]" choice in the Greeting of the questgiver is useless. NPCs can give very long greetings without requiring the player to confirm he wants to listen. It is understood that if the player doesn't care, he just doesn't have to read it.
- You could be more vocal about the scripting tactics you have discovered!
I particularly liked how you called a global script from a dialogue result, which then injected a choice into the dialogue result. I don't understand how the
Code: Select all
if ( MenuMode == 1 )
return
endif
- "GetHealth <= 0" isn't a way to find out whether an NPC is dead. If an NPC dies while a health-restore effect is active on him (be it his own spell, or an enchantment, or a spell the player cast on him to use him as a better training dummy), he often dies with a positive health recorded. Unfortunately, there isn't an automatic way to fix this, since OnDeath has its known quirks and getDeadCount is extremely heavy on the framerate (for no good reason).
- Fatigue is a float, so I'm not sure if comparisons like "if ( rot_naralitar0->GetFatigue == 300 )" and "ElseIf ( rot_naralitar0->GetFatigue == 250 )" actually do what they should. I haven't checked.
- You check if the player tries to talk to the fake scamps. I bet this is very unlikely since creatures in combat cannot be talked to.
- Apparently the timer for resisting the spell (script rot_sc_baesh_guardspell) is measured in frames. Not sure if this is very fair to low-end gamers. Same for the attack timer on the frenzied smugglers.
- In script rot_sc_baesh_guardspell, I don't get this:
Code: Select all
if ( player->GetWillpower >= 85 ) ;allow high willpower to resist the spell
player->RemoveSpellEffects, "rot_sp_baesh_guardillusion"
return
if ( player->GetIllusion > 60 )
MessageBox, "You have resisted an illusion spell."
elseif ( player->GetIntelligence >= 30 )
MessageBox, "You have resisted a spell."
endif
- The items scripted with rot_sc_baesh_guardstuff keep their script even when the player has taken them. This isn't sooo good, because players tend to collect all their stuff in one house, and by the end of the game it overflows with scripted items already. If the script wouldn't be on so many different objects, I'd suggest you replace
Code: Select all
If ( OnActivate == 1 )
set taken to 1
Activate
Code: Select all
If ( OnActivate == 1 )
set taken to 1
disable
player->additem [this object] 1
I see you did it right in script rot_sc_baesh_potion.
- You commented:
Code: Select all
if ( scaled == 0 ) ;MUST collide, else error message
SetScale 0.1 ;but let's scale it down a bit else the ogrim falls from the ceiling
set scaled to 1
endif
- Naralitar's escape routine behaves weirdly. Sometimes, he fails (or doesn't try?) to become invisible, and just stands around peacefully without doing anything after paralyzing the player. One time I had him successfully escape and then the game crashed, possibly due to the "Setdelete 1" in his script?
I haven't carefully read all the scripts (in fact, I don't even understand most of the rot_sc_naralitar* scripts), but what I've seen shows your skills well enough to recommend you for scripting 200%.
Now the problem is that questing also is writing dialogue, not just scripts. Unfortunately none of it seems to be good in your file, at least not in the sense of "believable and fitting the style and the context". Of course, this would probably have been easier if you had chosen a less outlandish quest design, so I believe there is quite some potential here as well, particularly since book rot_baeshbanit_letter is well-written!
[Note: I'm not asking you to fix any bugs anymore since we can't use this quest in TR and I'm more than convinced of your scripting leetness.]
arvisrend I often find while playing Morrowind that when combat is initiated (the music starts) the NPCs are slow to initiate combat. Maybe it's because I have a high agility? It always seems like a bug to me, that I can run up and activate them to talk with them before they start being hostile.
Forum Administrator & Data Files Manager
[06/19/2012 04:15AM] +Cat table stabbing is apparently a really popular sport in morrowind
[August 29, 2014 04:05PM] <+Katze> I am writing an IRC bot! :O
[August 29, 2014 04:25PM] *** Katze has quit IRC: Z-Lined
[06/19/2012 04:15AM] +Cat table stabbing is apparently a really popular sport in morrowind
[August 29, 2014 04:05PM] <+Katze> I am writing an IRC bot! :O
[August 29, 2014 04:25PM] *** Katze has quit IRC: Z-Lined
Uploaded new file with tweaked dialogue.
Kept more formal-apologetic tone when guards are adressing a legion superior if that's ok, rest is at least marginally better.
arvis, thanks! I'll still try to fix the stuff I don't fully understand, learning quite a lot.
(scripting blabber ahead only)
script injection can also be used for modular responses with MessageBox, though it displays in bold white (like "your journal has been updated"), suitable for actions but probably not for generic dialogue. Still, could allow specific, complex cases with tons of permutations by replacing dozen of necessary entries with just one entry & one script.
- issue specific to health-restore comes from magic effects still processing during the dying animation, which means we're good as long as death is checked every frame on top of the script and then record it,
- "OnDeath" failure can regardless happen, and the NPC dies with very low but still >0 health - and the chance of failure is either system-dependant or/and much more likely from damaging spell effects than weapons. So "gethealth <= 0" would have the exact same problem. Also the remaining health can possibly be integer, and I didn't check whether max health had any bearing on that buuut, using healthratio to make sure, how about this as an all-purpose death check?
I think if that's of any use for creatures, it could be scripted around by alternatively stop-starting combat on each hit, but not worth the effort here.
but also, out of habit when playing I always open inventory before I take items, and the pick-up not happening as usual which results from shortcutting activation (object stays onscreen before closing inventory) is a dead ringer for shenanigans. (also allows on a low-Intelligence character to check for TR spellbooks worth keeping... whoops, powergaming slip)
Is there any way to externally call a terminable global script targeted on such objects?
I tried an example adapted straight from Scripting for Dummies to call a script for instance on a door (unique, placed in CS), and it compiles fine but doesn't run ingame. And calling anything on a specific object "ref" doesn't allow scripts to compile in the CS - adding 00000000 etc, which, I've read in aeons-old forbidden scripture, was a technique before the additions from Tribunal/BM -
The crash you had I'm almost certain**** comes from the effect when he disappears for good - explodespell called from the invisible wall activator w/ collision, which causes a crash when Player or a NPC is moving through it during the frame in which it is active. I'm thinking I should make another invisible activator with non-offending collision if I'm ever to use that explodespell FX technique elsewhere.
****But aside from that, I've found Setdelete can cause weird consequences (eg deleting a caster will prematurely finish the duration of his spells) and generally shouldn't be used before everything even remotedly related to it is over with. Filed that under my understanding that the Morrowind script engine's special ecosystem of bugs is at least as alien as the game itself.
Kept more formal-apologetic tone when guards are adressing a legion superior if that's ok, rest is at least marginally better.
arvis, thanks! I'll still try to fix the stuff I don't fully understand, learning quite a lot.
(scripting blabber ahead only)
I don't know what the extent of all known tricks is, but yeah, I didn't see that one in Dummies so kept it as is to remember. Well spotted.arvisrend wrote:You could be more vocal about the scripting tactics you have discovered!
I particularly liked how you called a global script from a dialogue result, which then injected a choice into the dialogue result.
script injection can also be used for modular responses with MessageBox, though it displays in bold white (like "your journal has been updated"), suitable for actions but probably not for generic dialogue. Still, could allow specific, complex cases with tons of permutations by replacing dozen of necessary entries with just one entry & one script.
I made a yeller dummy I might still have somewhere to test these kinda things ,arvisrend wrote:"GetHealth <= 0" isn't a way to find out whether an NPC is dead. If an NPC dies while a health-restore effect is active on him (be it his own spell, or an enchantment, or a spell the player cast on him to use him as a better training dummy), he often dies with a positive health recorded. Unfortunately, there isn't an automatic way to fix this, since OnDeath has its known quirks and getDeadCount is extremely heavy on the framerate (for no good reason).
- issue specific to health-restore comes from magic effects still processing during the dying animation, which means we're good as long as death is checked every frame on top of the script and then record it,
- "OnDeath" failure can regardless happen, and the NPC dies with very low but still >0 health - and the chance of failure is either system-dependant or/and much more likely from damaging spell effects than weapons. So "gethealth <= 0" would have the exact same problem. Also the remaining health can possibly be integer, and I didn't check whether max health had any bearing on that buuut, using healthratio to make sure, how about this as an all-purpose death check?
Code: Select all
short dead
If ( dead == 0 )
If ( GetHealthGetRatio <= 0.05 )
ModCurrentHealth -100
Set dead to 1
Endif
Endif
They do, but I specifically set those fatigue values from other scripts - might not work from straight CS-set values,arvisrend wrote:Fatigue is a float, so I'm not sure if comparisons like "if ( rot_naralitar0->GetFatigue == 300 )" and "ElseIf ( rot_naralitar0->GetFatigue == 250 )" actually do what they should. I haven't checked.
Indeed, works before their first blow is struck only (or calm/stealth, neither making much sense). And as Haplo said there's always a varyingly short time before that happens.arvisrend wrote:You check if the player tries to talk to the fake scamps. I bet this is very unlikely since creatures in combat cannot be talked to.
I think if that's of any use for creatures, it could be scripted around by alternatively stop-starting combat on each hit, but not worth the effort here.
I did all my timers in frames because on my install(pretty low-end, frequent slowdowns), the getseconds sometimes (rarely) counts noticeably slower or faster than it should for no reason I could figure (simple scripts without any returns). So is GetSecondsPassed usually OK ?arvisrend wrote:Apparently the timer for resisting the spell (script rot_sc_baesh_guardspell) is measured in frames. Not sure if this is very fair to low-end gamers. Same for the attack timer on the frenzied smugglers.
I thought against getHealth since a few rebalancing mods tweak even the durability on vanilla equipment. Also, the reason why I didn't make it 5 scripts was... yes, ok, laziness :>arvisrend wrote:The items scripted with rot_sc_baesh_guardstuff keep their script even when the player has taken them.
[...]
But you've got 4 different objects in this script, and MW scripting doesn't know enough reflection to distinguish between them. Well, but the objects have different health, so you can use getHealth to tell them apart
but also, out of habit when playing I always open inventory before I take items, and the pick-up not happening as usual which results from shortcutting activation (object stays onscreen before closing inventory) is a dead ringer for shenanigans. (also allows on a low-Intelligence character to check for TR spellbooks worth keeping... whoops, powergaming slip)
Is there any way to externally call a terminable global script targeted on such objects?
I tried an example adapted straight from Scripting for Dummies to call a script for instance on a door (unique, placed in CS), and it compiles fine but doesn't run ingame. And calling anything on a specific object "ref" doesn't allow scripts to compile in the CS - adding 00000000 etc, which, I've read in aeons-old forbidden scripture, was a technique before the additions from Tribunal/BM -
I fixed him not casting on my end by assuming it was an AI overlap and adding a 1frame delay before it, might need more on higher FPS,arvisrend wrote:Naralitar's escape routine behaves weirdly. Sometimes, he fails (or doesn't try?) to become invisible, and just stands around peacefully without doing anything after paralyzing the player. One time I had him successfully escape and then the game crashed, possibly due to the "Setdelete 1" in his script?
The crash you had I'm almost certain**** comes from the effect when he disappears for good - explodespell called from the invisible wall activator w/ collision, which causes a crash when Player or a NPC is moving through it during the frame in which it is active. I'm thinking I should make another invisible activator with non-offending collision if I'm ever to use that explodespell FX technique elsewhere.
****But aside from that, I've found Setdelete can cause weird consequences (eg deleting a caster will prematurely finish the duration of his spells) and generally shouldn't be used before everything even remotedly related to it is over with. Filed that under my understanding that the Morrowind script engine's special ecosystem of bugs is at least as alien as the game itself.
-
- Lead Developer
- Posts: 1971
- Joined: Mon Oct 04, 2010 11:39 am
- Location: substitutional world
Really? I'm not sure if the only problem is that health goes up after death. It might be that it never falls to 0 at all. (By the way, for some reason, sethealth 1 already kills some NPCs...)rot wrote:- issue specific to health-restore comes from magic effects still processing during the dying animation, which means we're good as long as death is checked every frame on top of the script and then record it,
I recall OnDeath being rather predictable: it fails if it's the second call of OnDeath on the same NPC in the same frame, but this is easily avoided in most cases. Other than OnDeath has never betrayed me. Do you have evidence of it being more erratic?rot wrote:- "OnDeath" failure can regardless happen,
I don't understand this, and I'm unsure whether getHealthGetRatio is any better than getHealth here.rot wrote:Also the remaining health can possibly be integer, and I didn't check whether max health had any bearing on that buuut, using healthratio to make sure, how about this as an all-purpose death check?
Ah, I see. But can't the automated recovery of fatigue during every frame mess this up?rot wrote:They do, but I specifically set those fatigue values from other scripts - might not work from straight CS-set values,
(I'd still not use equality of floats in any way... I know people do use that, but who told us this will still work in OpenMW?)
Hmmmm. I obviously can't say GetSecondPassed is completely reliable, but I can tell that it's the way how we handle timers (unless these are for technical purposes like optimizing scripts).rot wrote:I did all my timers in frames because on my install(pretty low-end, frequent slowdowns), the getseconds sometimes (rarely) counts noticeably slower or faster than it should for no reason I could figure (simple scripts without any returns). So is GetSecondsPassed usually OK ?
This shouldn't matter because you have created new objects and those won't be tweaked by the mods.rot wrote:I thought against getHealth since a few rebalancing mods tweak even the durability on vanilla equipment.
Ah, I know that. But I believe saving framerate is more important.rot wrote:but also, out of habit when playing I always open inventory before I take items, and the pick-up not happening as usual which results from shortcutting activation (object stays onscreen before closing inventory) is a dead ringer for shenanigans.
I don't know this any better than you...rot wrote:I tried an example adapted straight from Scripting for Dummies to call a script for instance on a door (unique, placed in CS), and it compiles fine but doesn't run ingame. And calling anything on a specific object "ref" doesn't allow scripts to compile in the CS - adding 00000000 etc, which, I've read in aeons-old forbidden scripture, was a technique before the additions from Tribunal/BM -
This behavior of Setdelete surprises me the least; aren't spells more or less bound to the caster?rot wrote:****But aside from that, I've found Setdelete can cause weird consequences (eg deleting a caster will prematurely finish the duration of his spells) and generally shouldn't be used before everything even remotedly related to it is over with. Filed that under my understanding that the Morrowind script engine's special ecosystem of bugs is at least as alien as the game itself.
Thanks for the replies, by the way; it helps a lot to combine this scripting knowledge. I fear I won't be able to help you with dialogue, as I'm swamped in other work (TR and other), but I hope Why or Notling or anyone else jumps in here.
re: death detection,
I didn't test restore health effects really properly but the frame on death always was a low point for health (and then possibly come high values, which I assumed was because of the animation - spell visual effects are also there until the NPC is done falling down),
When testing OnDeath and GetHealth (together but separate), the very few times they failed on effective death, they failed together - as in, OnDeath didn't trigger and GetHealth returned a low float and I remember a 1.0xx also. -> nope, seems OnDeath works fine regardless of GetHealth
I also assume ratio behaves the same as GetHealth, but might be useful just in case a higher MaximumHealth pool could allow higher erroneous health on death, so with
once NPC health reaches 5% rather than a set value, you manually kill it. That should get through all possible functions failures?
I didn't test restore health effects really properly but the frame on death always was a low point for health (and then possibly come high values, which I assumed was because of the animation - spell visual effects are also there until the NPC is done falling down),
When testing OnDeath and GetHealth (together but separate), the very few times they failed on effective death, they failed together - as in, OnDeath didn't trigger and GetHealth returned a low float and I remember a 1.0xx also. -> nope, seems OnDeath works fine regardless of GetHealth
I also assume ratio behaves the same as GetHealth, but might be useful just in case a higher MaximumHealth pool could allow higher erroneous health on death, so with
Code: Select all
short dead
If ( dead == 0 )
If ( GetHealthGetRatio <= 0.05 )
ModCurrentHealth -100
Set dead to 1
Endif
Endif
In this case it's max fatigue, but good point!Ah, I see. But can't the automated recovery of fatigue during every frame mess this up?
(I'd still not use equality of floats in any way... I know people do use that, but who told us this will still work in OpenMW?)
True, I've had weirder tantrums with it - not just spells, also objects Placed from deleted objects glitching. But nowadays I don't even trust anything done after a Reload...This behavior of Setdelete surprises me the least; aren't spells more or less bound to the caster?
Last edited by rot on Thu Dec 27, 2012 1:12 am, edited 1 time in total.
Did some quick GetHealth / OnDeath testing,
- was wrong about OnDeath not triggering and GetHealth >0 on death - they're unrelated (or at least, you can have GetHealth fail but OnDeath = 1)
I did have single OnDeath fails before, but couldn't reproduce now. Previous tests were on a heavily modded install with MWSE and whatnot though, not sure how reliable that is.
- can confirm that Restore Health makes health go up after death only during the dying animation. So there will always be a frame with detectably low Health - at least at a low value if not == 0.
=> So long as the death is recorded in a variable or something, all's fine with Restore Health.
Seeya in '13 !
- was wrong about OnDeath not triggering and GetHealth >0 on death - they're unrelated (or at least, you can have GetHealth fail but OnDeath = 1)
I did have single OnDeath fails before, but couldn't reproduce now. Previous tests were on a heavily modded install with MWSE and whatnot though, not sure how reliable that is.
- can confirm that Restore Health makes health go up after death only during the dying animation. So there will always be a frame with detectably low Health - at least at a low value if not == 0.
=> So long as the death is recorded in a variable or something, all's fine with Restore Health.
Seeya in '13 !
This looked good, and considering your scripting it's a great showcase. Welcome to the team, please feel free to ask me any questions that you have, you can send me a PM any time you like. I'll be putting up new quest claims, both some actual implementation things and some designs, soon, so be sure to keep an eye on that!
If a claim is in Quests: Unclaimed, simply click the claim button and write a post with your plans for the place and, 99 out of 100 times, either arvisrend or myself will come and grant it to you.
Also, we've got an IRC channel (click the TR Chat button up top, or follow the instructions in [url=http://tamriel-rebuilt.org/old_forum/viewtopic.php?t=12403]this thread[/url]) where we discuss smaller stuff and generally hang out and have fun, you're absolutely welcome to join there too (as is anyone, really, but it's an especially great place to discuss quests).
So yes, promoted for quests & AI & stuff! I added you to the proper usergroup, one of the admins should be around shortly to push some additional buttons and give you that fancy TR Modder tag.
If a claim is in Quests: Unclaimed, simply click the claim button and write a post with your plans for the place and, 99 out of 100 times, either arvisrend or myself will come and grant it to you.
Also, we've got an IRC channel (click the TR Chat button up top, or follow the instructions in [url=http://tamriel-rebuilt.org/old_forum/viewtopic.php?t=12403]this thread[/url]) where we discuss smaller stuff and generally hang out and have fun, you're absolutely welcome to join there too (as is anyone, really, but it's an especially great place to discuss quests).
So yes, promoted for quests & AI & stuff! I added you to the proper usergroup, one of the admins should be around shortly to push some additional buttons and give you that fancy TR Modder tag.
- Thrignar Fraxix
- Developer Emeritus
- Posts: 10644
- Joined: Mon Dec 06, 2004 10:30 pm
- Location: Silnim
- Contact:
buttons pressed, congratulations.
Reviewing Administrator
Morrowind Reviews: 1640
Completed MW Interiors: 29
The just man frowns, but never sneers. We can understand anger, but not malevolence - Victor Hugo, Les Miserables
The abuse of greatness is when it disjoins remorse from power - Brutus, Julius Caesar
Fun is bad - Haplo
Morrowind Reviews: 1640
Completed MW Interiors: 29
The just man frowns, but never sneers. We can understand anger, but not malevolence - Victor Hugo, Les Miserables
The abuse of greatness is when it disjoins remorse from power - Brutus, Julius Caesar
Fun is bad - Haplo
Thanks! Did have a few questions I kept forgetting about -
Might be useful for all new questers, which convention is preferred in dialogue choices? Seen both in TR:
[Description] Speech
Description "Speech"
Are global variables okay? As in, no drawbacks? Sounds too good to be true.
I see the player is still an outlander in TR; is it also assumed s/he is the Nerevarine-to-be? (like it is some vanilla non-MQ text) Or landed in Vvardenfell? Should it be taken into account that the player might be the Nerevarine already?
(don't know about the average player but I never was nerevarine meself - hell, I've never even played the vanilla MQ)
Why does Almsivi Intervention still work after the Tribunal lose their powers?!
Might be useful for all new questers, which convention is preferred in dialogue choices? Seen both in TR:
[Description] Speech
Description "Speech"
Are global variables okay? As in, no drawbacks? Sounds too good to be true.
I see the player is still an outlander in TR; is it also assumed s/he is the Nerevarine-to-be? (like it is some vanilla non-MQ text) Or landed in Vvardenfell? Should it be taken into account that the player might be the Nerevarine already?
(don't know about the average player but I never was nerevarine meself - hell, I've never even played the vanilla MQ)
Why does Almsivi Intervention still work after the Tribunal lose their powers?!
-
- Lead Developer
- Posts: 1971
- Joined: Mon Oct 04, 2010 11:39 am
- Location: substitutional world
Truth is, we don't have a convention on this one, and you're not the first who is asking for one. I'd go with [Description] Speech.rot wrote:Thanks! Did have a few questions I kept forgetting about -
Might be useful for all new questers, which convention is preferred in dialogue choices? Seen both in TR:
[Description] Speech
Description "Speech"
Yes, globals are fine: http://tamriel-rebuilt.org/old_forum/viewtopic.php?p=307226#307226rot wrote:Are global variables okay? As in, no drawbacks? Sounds too good to be true.
What exactly do you want to know? I think there are plenty of vanilla quests which completely ignore the status of the prophecies, and I believe so do all of our quests. Unless you are writing Temple quests, this shouldn't bother you.rot wrote:I see the player is still an outlander in TR; is it also assumed s/he is the Nerevarine-to-be? (like it is some vanilla non-MQ text) Or landed in Vvardenfell? Should it be taken into account that the player might be the Nerevarine already?
(don't know about the average player but I never was nerevarine meself - hell, I've never even played the vanilla MQ)
And the levitation spell on the minitrue is still intact. Apparently not all power is lost. It can also be argued that it's really not just the Tribunal, but [url=http://lolzombie.com/wp-content/uploads/2010/02/people.jpg]the faith of the Temple fellowship[/url] that keeps the Temple's constant-effect magic like the Alsmivi-Intervention network active. I don't know the details; this is probably for the lore forum.rot wrote:Why does Almsivi Intervention still work after the Tribunal lose their powers?!
Congrats on the promotion!
Yay for globals. Was wondering why modders, apparently, used to add items to dummy NPCs to keep count of things.
On the Nerevarine thing, mostly: should there be special, more deferent dialogue? Still a vanilla thing where the Nerevarine would go around, getting grovelly generic greets from everyone and then the "go fetch" tone from a questgiver. Or do the NPCs on the Mainland not care much?
On the Nerevarine thing, mostly: should there be special, more deferent dialogue? Still a vanilla thing where the Nerevarine would go around, getting grovelly generic greets from everyone and then the "go fetch" tone from a questgiver. Or do the NPCs on the Mainland not care much?
Bare proof of concept for scripted interiors.
coc "Level 1" to get there, let's see how far you can get!
Mostly wanted to test a "weird geometry" architecture idea, which I don't think could fit anywhere in TR but you tell me. (any plans for ... extra-plannar :p locations?)
coc "Level 1" to get there, let's see how far you can get!
Mostly wanted to test a "weird geometry" architecture idea, which I don't think could fit anywhere in TR but you tell me. (any plans for ... extra-plannar :p locations?)
- Attachments
-
- try me.ESP
- (38.37 KiB) Downloaded 185 times
I guess anyone who'd have a use for it already made their own, and a lvl 1 Seyda Neen save serves most playtesting purposes, but just in case...
This is what I use to skip the character generation phase for playtesting with New Game. (also adds most spell effects, and disease and vampirism rings)
This is what I use to skip the character generation phase for playtesting with New Game. (also adds most spell effects, and disease and vampirism rings)
- Attachments
-
- SkipCharGen.ESP
- (9.25 KiB) Downloaded 272 times
coc "TurnMeOn"
Does this puzzle make sense? Is it too easy? How'd you improve it? (its principle, not the interior design itself)
Does this puzzle make sense? Is it too easy? How'd you improve it? (its principle, not the interior design itself)
- Attachments
-
- TurnMeOn.ESP
- (44.25 KiB) Downloaded 186 times
Interior showcase!
In the spirit of cross-disciplinarity, not wasting work etc.,
This a smuggler cave (the interior for my old showcase, minus the quest)
intended for repurposing to [url=http://tamriel-rebuilt.org/old_forum/viewtopic.php?p=320824]this claim[/url] if initial reviews aren't too scathing.
In the spirit of cross-disciplinarity, not wasting work etc.,
This a smuggler cave (the interior for my old showcase, minus the quest)
intended for repurposing to [url=http://tamriel-rebuilt.org/old_forum/viewtopic.php?p=320824]this claim[/url] if initial reviews aren't too scathing.
- Attachments
-
- Clean rot_IntShowcase.ESP
- (70.96 KiB) Downloaded 249 times
- Tondollari
- Developer
- Posts: 219
- Joined: Mon Dec 02, 2013 9:42 pm
- Location: Louisiana
The problem with using your interior for the linked claim is that your cave, in all it's glory, Doesnt seem to fit the exterior well. A mountainside might be a better location to allow for the height / depth of this interior. The cave could be a stopping place or endpoint for a TRV smuggling route. The mountain range redo that borders the TRV seems to be on hold but if a playable section was added with a path along it I think this cave would be great point of interest. If completed, envision the mountain path as an off the grid route for the most hardened of travelers and a passage that allows smugglers to move goods without detection.
Also I'm sure you realize this but there are a # of bleeders here. one on the steep ramp w boardwalk is most noticeable.
Also I'm sure you realize this but there are a # of bleeders here. one on the steep ramp w boardwalk is most noticeable.
my opinion.