Time for a new Script Library?

Post » Tue Feb 08, 2011 9:40 am

One of the things that really slows me down in modding is scripting - some very kind modders have helped me out by explaining how scripts work or wehn I've been totally clueless writing scripts for me.

I've made good use of the Script Library as a resource but have found some good ones since then in the CS forum

Is there any interest in compiling another Script Library? I would be happy to sort them and put them in a PDF and upload it as a Community Script Library v2 - though I think an ESP which includes some as working examples would be helpful too.

I just thinking having access to scripts can speed up projects and encourage fresh thinking.

Here's a great one I've started using by Toccatta for relocking doors

Begin Relocking_door;script by ToccattaShort KeyUsedIf ( CellChanged == 1 )	Lock 20	Set KeyUsed to 0EndifIf ( onactivate == 1 )	Activate	If ( GetLocked == 0 )		Set KeyUsed to 1	EndifElseif ( KeyUsed == 0 )	If ( GetLocked == 0 )		Messagebox "The door has a magical lock and can only be unlocked by the correct key."		Lock 20	EndifEndifEnd


If you have an interesting script and would like to post it please feel free - if you have an explanation of how it works even better and best of all would be that you've tested it and it works :)
User avatar
Alex Vincent
 
Posts: 3514
Joined: Thu Jun 28, 2007 9:31 pm

Post » Tue Feb 08, 2011 2:57 pm

Is there any interest in compiling another Script Library? I would be happy to sort them and put them in a PDF and upload it as a Community Script Library v2


I think a wiki would be a good place for something like this, then they could be commented on and updated and such.
User avatar
Fam Mughal
 
Posts: 3468
Joined: Sat May 26, 2007 3:18 am

Post » Tue Feb 08, 2011 12:55 pm

Oh my ! Thank you for setting this thread up , you've already helped my out of one scripting pickle ! I seem to be script dyslexic so this is now a bookmarked resource !
User avatar
Captian Caveman
 
Posts: 3410
Joined: Thu Sep 20, 2007 5:36 am

Post » Tue Feb 08, 2011 11:22 am

I submit my fireplace script. It took me some time to get it to reset correctly.
(I often wonder why interactive fireplaces don't seem very common in mods.)

The script gives the option to remove two logs from a pile and place them in the fireplace, causing the fire to grow bigger and brighter. It then resets itself after 12 hours.
It can be seen in action in The Sable Dragon.
Begin TheFireplaceScriptshort stateshort buttonshort myDayshort myDaysPassedfloat hourfloat maxHourif ( menumode == 1 )    returnendifif ( state == 4 )    if ( Day != myDay )        set myDay to Day        set myDaysPassed to ( myDaysPassed + 1 )    endif    set hour to ( ( myDaysPassed * 24 ) + GameHour )    if ( hour > maxHour )        set state to 0    endif    returnendifif ( state == 1 )    if ( OnActivate == 1 )        set state to 2        messagebox "Would you like to throw some wood on the fire?" "Sure" "Maybe later"    endif    returnendifif ( state == 2 )    set button to GetButtonPressed    if ( button == -1 )        return    elseif ( button == 0 )        set state to 3    elseif ( button == 1 )        set state to 1    endif    returnendifif ( state == 3 )    set myDay to Day    set maxHour to ( GameHour + 12 )    "log1_on"->Enable  ;places a log in the fire    "log2_on"->Enable  ;places a log in the fire    "fireplace_on"->Enable  ;places a larger fire in the fireplace    "loglight"->Enable ;enables an invisible light to brighten the room    "log1_off"->Disable  ;removes a log from the pile    "log2_off"->Disable  ;removes a log from the pile    Messagebox "Ah, the fire is bright and warm now. That should be good for a few hours."    set state to 4    returnendifif ( state == 0 )    set myDay to Day    set myDaysPassed to 0    set state to 1    "log1_on"->Disable  ;This sections resets the fireplace and logs to their original state    "log2_on"->Disable    "fireplace_on"->Disable    "loglight"->Disable    "log1_off"->Enable    "log2_off"->EnableendifEnd

User avatar
P PoLlo
 
Posts: 3408
Joined: Wed Oct 31, 2007 10:05 am

Post » Tue Feb 08, 2011 9:47 am

That' s great idea Pluto . I guess it could be adapted for a signal fire or light house ( if I were that sadistic .....making a modded light house that requires constant attention .... it has possibilities ! ) Cheers !
User avatar
Karen anwyn Green
 
Posts: 3448
Joined: Thu Jun 15, 2006 4:26 pm

Post » Tue Feb 08, 2011 3:59 pm

I submit my fireplace script. It took me some time to get it to reset correctly.
(I often wonder why interactive fireplaces don't seem very common in mods.)

^^ I have two lighthouses and lots of fireplaces in my mod. That script could be very useful. Thanks for sharing!
User avatar
Trey Johnson
 
Posts: 3295
Joined: Thu Oct 11, 2007 7:00 pm

Post » Tue Feb 08, 2011 12:48 pm

I remember contributing to the last script library (or, at least, I think it was the last script library!) and I'm more than happy to contribute to this one as well. I'll have to have a look and see what scripts I've got that I could add, but am also happy to write some new ones if anyone has any ideas for some.

I have an interactive ladder script, a locked door knock-and-answer script, portcullis script which still needs polishing up, washing line script, and some more probably... I think I even scripted an archery game once... though I'm not sure if I finished it without any bugs, I'll have to check. A lot of my scripts tend to be very specific to things in my mods, so I don't know how useful they would be in a general script library.
User avatar
Jimmie Allen
 
Posts: 3358
Joined: Sun Oct 14, 2007 6:39 am

Post » Tue Feb 08, 2011 8:00 am

The only script I've written so far is too big to list here, but you're more than welcome to use it. It can be downloaded http://planetelderscrolls.gamespy.com/View.php?view=Mods.Detail&id=7660. It's a "chained' script allowing you to have an ingredient sorter that handles hundreds of ingredients with only one activator. It should be able to be lengthened almost endlessly to allow for more and more ingredients. :)



KF
User avatar
Fiori Pra
 
Posts: 3446
Joined: Thu Mar 15, 2007 12:30 pm

Post » Tue Feb 08, 2011 5:44 pm

I would be happy to submit my script :) This script actually makes a bottle a door and then after you activated it, it dissapears. Had to made it so cause "UsedOnMe" dont seem to work :(

Begin ( What ever name you want )

If ( menumode == 1 )
return
endif

If ( onActivate == 1 )
positioncell 0.0.0 "yourcell"
disapear
endif

end


I think it was like that :)
User avatar
Alexxxxxx
 
Posts: 3417
Joined: Mon Jul 31, 2006 10:55 am

Post » Tue Feb 08, 2011 4:31 pm

I have a few scripts I developed for Elemental Magicka that someone might find useful. Perhaps if I clean then up a little bit or at least document the variables more transparently (I know what they mean but it isn't exactly obvious for all of them) then I will submit them.
User avatar
Krystal Wilson
 
Posts: 3450
Joined: Wed Jan 17, 2007 9:40 am

Post » Tue Feb 08, 2011 8:28 pm

Of course this is right up my alley. I'll see if I can come up with some tidbits to contribute. But on the other side of this, I agree with john.moonsugar about a wiki idea. Or at least some sort of public and dynamic repository anyone can contribute to. I'm happy to slap something like that together. Thoughts?
User avatar
Cool Man Sam
 
Posts: 3392
Joined: Thu May 10, 2007 1:19 pm

Post » Tue Feb 08, 2011 8:46 pm

Firstly thanks to everyone who has replied so far with scripts

I'm keen to just keep this thread alive for a while so we can collate a reasonable number of scripts - if you are submitting a script please state whether you need one of the expansions to make it work or a script extender or even MGE

I think a wiki would be a good place for something like this, then they could be commented on and updated and such.


Of course this is right up my alley. I'll see if I can come up with some tidbits to contribute. But on the other side of this, I agree with john.moonsugar about a wiki idea. Or at least some sort of public and dynamic repository anyone can contribute to. I'm happy to slap something like that together. Thoughts?


To John and Fliggerty - a wiki is a good idea - it would be invaluable as a common place to go and add, update or find scripts - I find the USEP wiki an excellent resource now for their scripting section.

That said I think that having a downloadable pdf adds a level of availability that an online resource can't - I often mod from a PC with no internet access and find it very helpful having a copy of the MWSFD open at the same time

PES, TES are the most well known and easily found sites for new modders to go to and so I think having the ability to download from there would be very useful - if possible having a demonstration esp which includes the scripts to DL would be helpful as well

I guess for now I'm just keen for this thread to fill up with some of the interesting script ideas the community has come up with.


I remember contributing to the last script library (or, at least, I think it was the last script library!) and I'm more than happy to contribute to this one as well. I'll have to have a look and see what scripts I've got that I could add, but am also happy to write some new ones if anyone has any ideas for some.

I have an interactive ladder script, a locked door knock-and-answer script, portcullis script which still needs polishing up, washing line script, and some more probably... I think I even scripted an archery game once... though I'm not sure if I finished it without any bugs, I'll have to check. A lot of my scripts tend to be very specific to things in my mods, so I don't know how useful they would be in a general script library.


Um... they all sound good to me... am intrigued with the washing line script :)


The only script I've written so far is too big to list here, but you're more than welcome to use it. It can be downloaded http://planetelderscrolls.gamespy.com/View.php?view=Mods.Detail&id=7660. It's a "chained' script allowing you to have an ingredient sorter that handles hundreds of ingredients with only one activator. It should be able to be lengthened almost endlessly to allow for more and more ingredients. :)

KF


Thanks Kiteflyer that was a cute way to put a plug in for your mod :) I dl'd it and will include it - though you are right it will likely take a couple of pages

I would be happy to submit my script :) This script actually makes a bottle a door and then after you activated it, it dissapears. Had to made it so cause "UsedOnMe" dont seem to work :(

I think it was like that :)


Thanks Kodman91 - so was it like a teleport ring?


I have a few scripts I developed for Elemental Magicka that someone might find useful. Perhaps if I clean then up a little bit or at least document the variables more transparently (I know what they mean but it isn't exactly obvious for all of them) then I will submit them.


Yes please

edit: Sigh... spelling
User avatar
evelina c
 
Posts: 3377
Joined: Tue Dec 19, 2006 4:28 pm

Post » Tue Feb 08, 2011 4:50 pm

It's a piece of cake to have a site's contents exported to PDF. So could have our cake and eat it too. :hehe:
User avatar
Lily Something
 
Posts: 3327
Joined: Thu Jun 15, 2006 12:21 pm

Post » Tue Feb 08, 2011 4:35 pm

It's a piece of cake to have a site's contents exported to PDF. So could have our cake and eat it too. :hehe:


Could that be a chocolate cake ?
User avatar
louise tagg
 
Posts: 3394
Joined: Sun Aug 06, 2006 8:32 am

Post » Tue Feb 08, 2011 7:26 pm

Well what about a forum dedicated to scripting (GHF, Fligg?). Set up subforums such as "Statics" (for scripts that do something to/with statics), "NPCs", "Magic" etc. Everything that is needed is a bit of discipline to submit every snippet as a topic so it can be discussed and even improved. Would keep things neat and tidy as well.

Currently at GHF, you find all kinds of stuff in one subforum. The news topics in the GHF scripting forums look ideal for discussing, presenting and helping out on scripts. Maybe the "one topic one snippet" rule is a bit optimistic. But if it was kept up, you'd have no excuse to post a topic titled "Need help with some script issues" :)
User avatar
Ana
 
Posts: 3445
Joined: Sat Jul 01, 2006 4:29 am

Post » Tue Feb 08, 2011 4:27 pm

It's a piece of cake to have a site's contents exported to PDF. So could have our cake and eat it too. :hehe:


I think a wiki is a better option. I lurk quite often, and come back and have to look at topics that are old news to everyone else. Sometimes the topics get posted, there is a flurry of response, and then the topic goes away to be replaced by newer threads and then someone makes a new topic and the old one (same subject) is forgotten. A wiki would keep a renewable source for a script library.

Also this:

http://www.web2pdfconvert.com/

captures a web page and makes it into a downloadable pdf.

use that with this:

http://www.mergepdf.net/

to add pages together into a multi-page pdf

ST
User avatar
Andrea P
 
Posts: 3400
Joined: Mon Feb 12, 2007 7:45 am

Post » Tue Feb 08, 2011 7:11 am

I think a wiki is a better option.*snip*


At the moment the delivery of the format doesn't matter as much as actually having some content :-)

We have just a few scripts contributed so far so if anyone wants to add some more they are very welcome.
User avatar
Cathrin Hummel
 
Posts: 3399
Joined: Mon Apr 16, 2007 7:16 pm

Post » Tue Feb 08, 2011 4:07 pm

I'd like to submit a first draft of my generic projectile script from Elemental Magicka. The functionality of it won't really change, but in the future I'd like to clean it up a bit more and document better. Still, I wanted to submit something before it slips my mind again.

There are a number of adjustable constants/functions depending upon what type of motion you are trying to achieve, and what you want the forward sweep to be, but I tried to at least comment those lines. This script would be a lot easier to execute if Morrowind scripting had a few low level math functions...

Begin NMZ_GenericProjectile_Script; -- -- Script Variablesfloat state					; Controls disablefloat timer1					; Removal timerfloat px					; Caster x position, now calculated rather than being tied to a referencefloat py					; Caster y position, now calculated rather than being tied to a referencefloat xpos					; New x positionfloat ypos					; New y positionfloat zpos					; New z positionfloat dx					; Delta xfloat dy					; Delya yfloat v0					; Initial velocityfloat vx					; Initial velocity x componentfloat vy					; Initial velocity y componentfloat hyp					; Unit vector from caster position to object positionfloat hypx					; Vector in x direction from caster position to object positionfloat hypy					; Vector in y direction from caster position to object positionfloat dx1					; New x positionfloat dy1					; New y positionfloat a0z					; Acceleration due to gravityfloat v0z					; Initial velocity z component (separate from v0, vx, and vy)float dz					; Position + Velocity term for the z direction motionfloat dz1					; Acceleration term for the z direction motionfloat xpos0					; Initial x positionfloat ypos0					; Initial y positionfloat zpos0					; Initial z positionfloat theta					; (d/dz)(dz + dz1)float ktheta					; Rotation speedfloat tfinal					; Final time after which the object will explode if it hasn't collided yet.  This is needed because we don't know the ground height.float pz					; Player z position (projectile will keep going past tfinal so long as it is above the player)float zangle					; Angle in the z direction of the objectfloat xtemp					; Temporary variable for calculating forward vectorfloat ytemp					; Temporary variable for calculating forward vectorfloat circleTimer				; Timer for circular motionfloat circleTimerB				; Timer b for circular motionfloat circle34th				; Unused 34th script variable, results in error on usagefloat circleTime				; Time to complete one revolution of the circular motion componentfloat circleRadius				; Radius function for the circular motion componentfloat circleDelta				; Temp variablefloat circleVec1Offset				; Circle vector 1, z directionfloat circleVec2Offset				; Circle vector 2, xy forward directionfloat circleVec2x				; Circle vector 2 x componentfloat circleVec2y				; Circle vector 2 y componentfloat circleVec2xAlt				; Circle vector 1 x componentfloat circleVec2yAlt				; Circle vector 1 y componentfloat circleNormalize				; Normalization factor for vector resolutionfloat circleOffsetX				; Circle x offsetfloat circleOffsetY				; Circle y offsetfloat circleTime2				; 0.75 *circleTimefloat circleTime3				; 0.50 *circleTimefloat circleTime4				; 0.25 *circleTimefloat circleSeedTime				; Randomized seed timer, 0 < circleSeedTime < circleTime to randomize start position	float circleDelta2				; circleDelta^2float circleDelta3				; circleDelta^3float circleDelta4				; circleDelta^4float circleDelta5				; circleDelta^5float circleDelta6				; circleDelta^6float circleDelta7				; circleDelta^7float zangle2					; zangle^2float zangle3					; zangle^3float zangle4					; zangle^4float zangle5					; zangle^5float zangle6					; zangle^6float zangle7					; zangle^7float HeightLimit				; Explosion limiter toggle, 0 = explode at tFinal, 1 = explode at tFinal only if not above player's z position (keeps arrows from looking funny)float angleOffset				; Optional z angle offset; -- -- Menumode Blockif ( MenuMode == 1 )	Returnendif; -- -- Disable Blockif ( GetDisabled == 1 )	if ( state <= 200 )		set state to ( state + 1 )		Return	else		setdelete 1		DontSaveObject		Return	endifendif; -- -- Spell Blockif ( state == 0 )	;Scale object	setscale 1.0	;Height-based explosion limiter	set HeightLimit to 0	;Figure out motion vector	set xpos to ( GetPos,x )	set ypos to ( GetPos,y )	set xpos0 to xpos	set ypos0 to ypos	;Optional angle offset line for the forward sweep range.  Comment out the following line to always move directly forward.	set angleOffset to ( Random, 121 )	;z angle calculations	set zangle to ( GetAngle, z )	set zangle to ( zangle + angleOffset )	set zangle to ( zangle - 60 )	setangle, z, zangle	;Convert to radians	set zangle to ( zangle * 3.1415 / 180 );	MessageBox "zangle %0.00f xpos %0.00f ypos %0.00f px %0.00f py %0.00f", zangle, xpos, ypos, px, py		;Perform some Taylor series approximations for sin(x) and cos(x), how hard would it have been to include these functions natively?	set zangle2 to ( zangle * zangle )	set zangle3 to ( zangle * zangle2 )	set zangle4 to ( zangle2 * zangle2 )	set zangle5 to ( zangle2 * zangle3 )	set zangle6 to ( zangle3 * zangle3 )	set zangle7 to ( zangle3 * zangle4 )	set xtemp to ( zangle - ( zangle3 / 6 ) )	set xtemp to ( xtemp + ( zangle5 / 120 ) )	set xtemp to ( xtemp - ( zangle7 / 5040 ) )		set ytemp to ( 1 - ( zangle2 / 2 ) )	set ytemp to ( ytemp + ( zangle4 / 24 ) )	set ytemp to ( ytemp - ( zangle6 / 720 ) )	set px to ( xpos - xtemp )	set py to ( ypos - ytemp )	set dx to ( xpos - px )	set dy to ( ypos - py )	;Resolve velocity components	;Default v0 value is 1000	set v0 to 1000	set hypx to ( ( GetPos,x ) - px )	set hypy to ( ( GetPos,y ) - py )	set hypx to ( hypx * hypx )	set hypy to ( hypy * hypy )	set hyp to ( hypx + hypy )	set hyp to ( GetSquareRoot, hyp )	set hyp to ( hyp + 0.01 )	set vx to ( v0 * dx / hyp )	set vy to ( v0 * dy / hyp )	;Raise off ground	set zpos to ( GetPos, z )	set zpos to ( zpos + 80 )	set zpos0 to zpos	; Default values	;set v0z to 200	;set ktheta to ( -75 / v0z )	set v0z to 200	set ktheta to ( -75 / v0z )	;Default tfinal value is 2.8	set tfinal to 2.8	setpos,z, zpos	;Next block	set state to 1	Returnelseif ( state == 1 )	set timer1 to ( timer1 + GetSecondsPassed )	if ( timer1 < tfinal )		; Collision check		if ( GetCollidingActor == 1 )			set state to 2			Return		elseif ( GetCollidingPC == 1 )			set state to 2			Return		endif		; The new x, y, and z positions of the object are the linear superposition		; of the forward linear motion (v0 controlled), gravitational motion (v0z controlled),		; and the circular motion around the point generated by the former functions.		; (1) Linear motion component in the forward direction		set dx1 to ( ( timer1 * vx  ) + xpos0 )		set dy1 to ( ( timer1 * vy  ) + ypos0 )		; (2) Gravity component of the motion in the z direction				;Default value for a0z is 478		set a0z to 478		set dz to ( zpos0 + ( v0z * timer1 ) )		set dz1 to ( -0.5 * a0z * timer1 * timer1 )		set dz1 to ( dz + dz1 )		; (3) Circular motion component		set circleRadius to 20		set circleTime to 1		set circleTime2 to ( 0.75 * circleTime )		set circleTime3 to ( 0.50 * circleTime )		set circleTime4 to ( 0.25 * circleTime )		; -- Set circle timer to reset after each revolution		if ( circleSeedTime == 0 )			set circleSeedTime to ( Random, 101 )			set circleSeedTime to ( circleSeedTime * circleTime / 100 )		endif		set circleTimer to ( timer1 + circleSeedTime )		while ( circleTimer > circleTime )			set circleTimer to ( circleTimer - circleTime )		endwhile		if ( circleTimer < circleTime4 )			set circleTimerB to ( circleTimer - 0 )		elseif ( circleTimer < circleTime3 )			set circleTimerB to ( circleTimer - circleTime4 )		elseif ( circleTimer < circleTime2 )			set circleTimerB to ( circleTimer - circleTime3 )		elseif ( circleTimer < circleTime )			set circleTimerB to ( circleTimer - circleTime2 )		endif		; -- Calculate offsets for the z vector and forward vector		set circleDelta to ( 2 * 3.1415 * circleTimerB / ( circleTime ) )		set circleDelta2 to ( circleDelta * circleDelta )		set circleDelta3 to ( circleDelta * circleDelta2 )		set circleDelta4 to ( circleDelta2 * circleDelta2 )		set circleDelta5 to ( circleDelta2 * circleDelta3 )		set circleDelta6 to ( circleDelta3 * circleDelta3 )		set circleDelta7 to ( circleDelta3 * circleDelta4 )		set circleVec1Offset to ( 1 - ( circleDelta2 / 2 ) )		set circleVec1Offset to ( circleVec1Offset + ( circleDelta4 / 24 ) )		set circleVec1Offset to ( circleVec1Offset - ( circleDelta6 / 720 ) )		set circleVec1Offset to ( circleVec1Offset * circleRadius )		set circleVec2Offset to ( circleDelta - ( circleDelta3 / 6 ) )		set circleVec2Offset to ( circleVec2Offset + ( circleDelta5 / 120 ) )		set circleVec2Offset to ( circleVec2Offset - ( circleDelta7 / 5040 ) )		set circleVec2Offset to ( circleVec2Offset * circleRadius )			; -- Resolve circleVec2Offset into x and y components		; Note that the circleVec2x/y calcs use the vy/x respectively, which looks reversed,		; but the vector we want is normal to the forward vector and the z vector rather than		; the forward vector itself.		set circleNormalize to ( ( vx * vx ) + ( vy * vy ) )		set circleNormalize to ( GetSquareRoot, circleNormalize )		set circleVec2x to ( circleVec2Offset * vy  / circleNormalize )		set circleVec2y to ( circleVec2Offset * vx  / circleNormalize )		set circleVec2xAlt to ( circleVec1Offset * vy  / circleNormalize )		set circleVec2yAlt to ( circleVec1Offset * vx  / circleNormalize )		if ( circleTimer < circleTime4 )			set dz1 to ( dz1 - circleVec1Offset )			set dx1 to ( dx1 + circleVec2x )			set dy1 to ( dy1 + circleVec2y )		elseif ( circleTimer < circleTime3 )			set dz1 to ( dz1 + circleVec2Offset )			set dx1 to ( dx1 + circleVec2xAlt )			set dy1 to ( dy1 + circleVec2yAlt )		elseif ( circleTimer < circleTime2 )			set dz1 to ( dz1 + circleVec1Offset )			set dx1 to ( dx1 - circleVec2x )			set dy1 to ( dy1 - circleVec2y )		elseif ( circleTimer < circleTime )			set dz1 to ( dz1 - circleVec2Offset )			set dx1 to ( dx1 - circleVec2xAlt )			set dy1 to ( dy1 - circleVec2yAlt )		endif		; (4) Rotation in x direction to accompany translation		set theta to ( v0z + ( -a0z * timer1 ) )		set theta to ( theta * ktheta )		; ---- Optional rotation limiter (keeps arrows from looking funny) ---		;if ( theta > 90 )		;	set theta to 90		;elseif ( theta < -90 )		;	set theta to -90		;endif		setangle,x,theta		; (5) Rotate in y direction to refresh collision		rotate,y,0.01		; (6) Set new coordinates for this frame		set xpos to dx1		set ypos to dy1		set zpos to dz1		setpos, x, xpos		setpos, y, ypos		setpos, z, zpos		Return	else		; This block will allow it to keep arcing if the need arises		set pz to ( Player->Getpos,z )		set zpos to ( GetPos, z )		if ( HeightLimit > 0 )			if ( zpos > pz )				set tfinal to ( tfinal + 0.1 )				return			endif		endif		set state to 2		return	endifelseif ( state == 2 )	set xpos to ( GetPos, x )	set ypos to ( GetPos, y )	set zpos to ( GetPos, z )	;Move the projectile downward a little bit.  if it just barely collided, then the spell might not hit without this adjustment.	set zpos to ( zpos - 100 )	setpos,z,zpos	;Replace the following spell with the desired effect upon impact	ExplodeSpell "NMZ_ProjectileSpell_Bomb"	DisableendifEnd

User avatar
NO suckers In Here
 
Posts: 3449
Joined: Thu Jul 13, 2006 2:05 am


Return to III - Morrowind