rot, quest showcase *now with interior

In order to implement content in-game, you must be a Developer. This is the place for you to introduce yourself, and apply to become a TR Developer.

Moderator: Lead Developers

rot
Lead Developer
Posts: 696
Joined: Sun Oct 21, 2012 10:34 pm

rot, quest showcase *now with interior

Post by rot »

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.
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.
arvisrend
Lead Developer
Posts: 1971
Joined: Mon Oct 04, 2010 11:39 am
Location: substitutional world

Re: rot, quest showcase

Post by arvisrend »

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?
rot
Lead Developer
Posts: 696
Joined: Sun Oct 21, 2012 10:34 pm

Post by rot »

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?
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.


-------

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.
arvisrend
Lead Developer
Posts: 1971
Joined: Mon Oct 04, 2010 11:39 am
Location: substitutional world

Post by arvisrend »

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...
rot
Lead Developer
Posts: 696
Joined: Sun Oct 21, 2012 10:34 pm

Post by rot »

arvisrend wrote: Error message inside the cave, occuring several times: "Scale parameters for Magic Effect Blind are bad."
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?


I'll try and have a look before the holidays then. Thanks!
abot
TR Tester
Posts: 94
Joined: Sun Nov 30, 2008 11:58 pm
Contact:

Post by abot »

re: "Scale parameters for Magic Effect Blind are bad."
no casting animation needed, but casting object mesh should have collision (e.g. EditorMarker.nif = bad, EditorMarker_box_01.nif = good)
rot
Lead Developer
Posts: 696
Joined: Sun Oct 21, 2012 10:34 pm

Post by rot »

Is there any question abot can't answer? =D

Thanks. I assume the collision on "EditorMarker_box_01.nif" isn't known to cause too much trouble? (blocking movements and such)
Why
Lead Developer
Posts: 1654
Joined: Sat Jul 04, 2009 3:18 am
Location: Utrecht

Post by Why »

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!
arvisrend
Lead Developer
Posts: 1971
Joined: Mon Oct 04, 2010 11:39 am
Location: substitutional world

Post by arvisrend »

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?
rot
Lead Developer
Posts: 696
Joined: Sun Oct 21, 2012 10:34 pm

Post by rot »

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!
No worries, I'm also too busy to mod this week.

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.
Sure, since you didn't see anything left from Mainland in there it'll just be a few clicks.

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?
I knew there were bound to be some bugs in there!
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.
arvisrend
Lead Developer
Posts: 1971
Joined: Mon Oct 04, 2010 11:39 am
Location: substitutional world

Post by arvisrend »

Oh. My character was so high-level that I even had to use the console to get to the interesting ways to do your quest. In particular, he had some 220 strength through enchanted clothing, and Sunder, so yes, the illusionist was a bit of a pushover.
rot
Lead Developer
Posts: 696
Joined: Sun Oct 21, 2012 10:34 pm

Post by rot »

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?
rot
Lead Developer
Posts: 696
Joined: Sun Oct 21, 2012 10:34 pm

Post by rot »

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.
arvisrend
Lead Developer
Posts: 1971
Joined: Mon Oct 04, 2010 11:39 am
Location: substitutional world

Post by arvisrend »

Cool... but I don't know why, yet still I'm getting these blind-spell error messages. Have you reverted your fix?
rot
Lead Developer
Posts: 696
Joined: Sun Oct 21, 2012 10:34 pm

Post by rot »

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'
rot
Lead Developer
Posts: 696
Joined: Sun Oct 21, 2012 10:34 pm

Post by rot »

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.
Why
Lead Developer
Posts: 1654
Joined: Sat Jul 04, 2009 3:18 am
Location: Utrecht

Post by Why »

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!
rot
Lead Developer
Posts: 696
Joined: Sun Oct 21, 2012 10:34 pm

Post by rot »

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.

rot wrote:snip
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.
Last edited by rot on Sun Aug 18, 2013 9:42 pm, edited 1 time in total.
arvisrend
Lead Developer
Posts: 1971
Joined: Mon Oct 04, 2010 11:39 am
Location: substitutional world

Post by arvisrend »

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

Code: Select all

if ( MenuMode == 1 )
	return
endif
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:

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
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

Code: Select all

	If ( OnActivate == 1 )
		set taken to 1
		Activate
by

Code: Select all

	If ( OnActivate == 1 )
		set taken to 1
		disable
		player->additem [this object] 1
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:

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
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.]
User avatar
Haplo
Lead Developer
Posts: 11651
Joined: Sat Aug 30, 2003 6:22 pm
Location: Celibacy

Post by Haplo »

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
rot
Lead Developer
Posts: 696
Joined: Sun Oct 21, 2012 10:34 pm

Post by rot »

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)
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.
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.
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.

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).
I made a yeller dummy I might still have somewhere to test these kinda things ,
- 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
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.
They do, but I specifically set those fatigue values from other scripts - might not work from straight CS-set values,

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.
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.
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.

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 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: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
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 :>
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 -

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?
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,
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.
arvisrend
Lead Developer
Posts: 1971
Joined: Mon Oct 04, 2010 11:39 am
Location: substitutional world

Post by arvisrend »

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,
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:- "OnDeath" failure can regardless happen,
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: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 don't understand this, and I'm unsure whether getHealthGetRatio is any better than getHealth here.
rot wrote:They do, but I specifically set those fatigue values from other scripts - might not work from straight CS-set values,
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?)
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 ?
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 thought against getHealth since a few rebalancing mods tweak even the durability on vanilla equipment.
This shouldn't matter because you have created new objects and those won't be tweaked by the mods.
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.
Ah, I know that. But I believe saving framerate is more important.
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 -
I don't know this any better than you...
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.
This behavior of Setdelete surprises me the least; aren't spells more or less bound to the caster?

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.
rot
Lead Developer
Posts: 696
Joined: Sun Oct 21, 2012 10:34 pm

Post by rot »

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

Code: Select all

short dead
If ( dead == 0 )
   If ( GetHealthGetRatio <= 0.05 )
      ModCurrentHealth -100
      Set dead to 1
   Endif
Endif
once NPC health reaches 5% rather than a set value, you manually kill it. That should get through all possible functions failures?


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?)
In this case it's max fatigue, but good point!

This behavior of Setdelete surprises me the least; aren't spells more or less bound to the caster?
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...
Last edited by rot on Thu Dec 27, 2012 1:12 am, edited 1 time in total.
rot
Lead Developer
Posts: 696
Joined: Sun Oct 21, 2012 10:34 pm

Post by rot »

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 !
Why
Lead Developer
Posts: 1654
Joined: Sat Jul 04, 2009 3:18 am
Location: Utrecht

Post by Why »

Oh snap that dialog file totally slipped through the cracks. I'll look at it first thing in the morning!
Why
Lead Developer
Posts: 1654
Joined: Sat Jul 04, 2009 3:18 am
Location: Utrecht

Post by Why »

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.
User avatar
Thrignar Fraxix
Developer Emeritus
Posts: 10644
Joined: Mon Dec 06, 2004 10:30 pm
Location: Silnim
Contact:

Post by Thrignar Fraxix »

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
rot
Lead Developer
Posts: 696
Joined: Sun Oct 21, 2012 10:34 pm

Post by rot »

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?!
arvisrend
Lead Developer
Posts: 1971
Joined: Mon Oct 04, 2010 11:39 am
Location: substitutional world

Post by arvisrend »

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"
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:Are global variables okay? As in, no drawbacks? Sounds too good to be true.
Yes, globals are fine: http://tamriel-rebuilt.org/old_forum/viewtopic.php?p=307226#307226
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)
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:Why does Almsivi Intervention still work after the Tribunal lose their powers?!
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.

Congrats on the promotion!
rot
Lead Developer
Posts: 696
Joined: Sun Oct 21, 2012 10:34 pm

Post by rot »

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?
rot
Lead Developer
Posts: 696
Joined: Sun Oct 21, 2012 10:34 pm

Post by rot »

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?)
Attachments
try me.ESP
(38.37 KiB) Downloaded 185 times
Mwgek
Developer
Posts: 638
Joined: Fri Apr 11, 2008 8:40 pm

Post by Mwgek »

Crazy stuff, I like it. Feels a bit moddy on certain points but was a great experience :).
--Mwgek--
rot
Lead Developer
Posts: 696
Joined: Sun Oct 21, 2012 10:34 pm

Post by rot »

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)
Attachments
SkipCharGen.ESP
(9.25 KiB) Downloaded 272 times
rot
Lead Developer
Posts: 696
Joined: Sun Oct 21, 2012 10:34 pm

Post by rot »

coc "TurnMeOn"
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
rot
Lead Developer
Posts: 696
Joined: Sun Oct 21, 2012 10:34 pm

Post by rot »

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.
Attachments
Clean rot_IntShowcase.ESP
(70.96 KiB) Downloaded 249 times
User avatar
Tondollari
Developer
Posts: 219
Joined: Mon Dec 02, 2013 9:42 pm
Location: Louisiana

Post by Tondollari »

This is a pretty sweet skooma den. I love the broken ladder that leads to the head honcho's(?) room. Also, it was a lot of fun searching through all those empty vials for the one(?) skooma bottle. Please tell me if there's more than one cause i looked all over.
rot
Lead Developer
Posts: 696
Joined: Sun Oct 21, 2012 10:34 pm

Post by rot »

Yeah there's only one there. A few more hidden elsewhere, though... (thanks for the look-see!)
User avatar
sasquatch
Developer
Posts: 184
Joined: Tue Dec 31, 2013 2:18 am

Post by sasquatch »

The smuggler cave is one of the best, if not the best cave I have seen for TR. Exceptionally well crafted, very unique, and allows for so much exploration. More interiors should be like this. MUST-USE-THIS! Great work.
my opinion.
User avatar
sasquatch
Developer
Posts: 184
Joined: Tue Dec 31, 2013 2:18 am

Post by sasquatch »

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.
my opinion.
rot
Lead Developer
Posts: 696
Joined: Sun Oct 21, 2012 10:34 pm

Post by rot »

Thanks, I'm indeed not sure to what extent woodXrock bleeding action is acceptable,
or whether the interior scale > exterior scale thing is supposed to be applied to non-building interiors (didn't place the exterior entrance with this showcase in mind)
Locked