1
Fork 0
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

129 lines
3.4 KiB

Scriptname _00E_MQ11c_OorbayaBallistaScript extends TrapBase
;Dart Trap extending TrapBase
;integrated with the TrapTriggerBase
;
;================================================================
import debug
import utility
import custom
int property shotCount = 3 auto
{This property track the ammo that the ballista has, and starts with}
;int numShots = 20 ;might want to make this a property
float fireRate = 0.1
float property initialDelay = 0.0 auto
weapon property ballistaWeaponM auto
weapon property ballistaWeaponL auto
weapon property ballistaWeaponR auto
Ammo Property _00E_MQ11c_OorbayaBallistBolt Auto
GlobalVariable Property _00E_MQ11c_BallistaFired Auto
Actor Property MQ11c_SC10_RyneusOorbaya Auto
bool property isFiring auto hidden
bool property isLoaded auto hidden
bool property shotFired = false auto hidden
bool property weaponResolved = false auto hidden
Quest Property MQ11c Auto
ReferenceAlias Property Oorbaya Auto
Function initialize()
endFunction
Function ResetLimiter()
shotFired = false ;shotCount is scoped outside of the OnActivate blocks. This will reset scopecount to 0, extending the firing time.
EndFunction
Function fireTrap()
if !TrapDisarmed
_00E_MQ11c_BallistaFired.SetValue(1)
Oorbaya.GetActorReference().SetGhost(False)
isFiring = True
objectReference TrapSelf = self as objectReference
;TRACE("fireTrap called")
WindupSound.play( self as ObjectReference) ;play windup sound
wait( initialDelay ) ;wait for windup
; if (fireOnlyOnce == True) ;If this can be fired only once then disarm
; trapDisarmed = True
; endif
while(shotcount > 0) && !shotfired && isLoaded
if shotCount == 3
playAnimation("Trigger01") ;fire anim 01
ballistaWeaponM.fire( TrapSelf, _00E_MQ11c_OorbayaBallistBolt ) ;fire 01
shotcount -= 1
WaitForAnimationEvent("FTrans01")
playAnimationAndWait("Reset01","RTrans01") ;reset anim 01
elseIf ShotCount == 2
playAnimation("Trigger02") ;fire anim 02
ballistaWeaponL.fire( TrapSelf, _00E_MQ11c_OorbayaBallistBolt ) ;fire 02
shotcount -= 1
WaitForAnimationEvent("FTrans02")
playAnimationAndWait("Reset02","RTrans02") ;reset anim 02
elseIf ShotCount == 1
playAnimation("Trigger03") ;fire anim 03
ballistaWeaponR.fire( TrapSelf, _00E_MQ11c_OorbayaBallistBolt ) ;fire 03
shotcount -= 1
WaitForAnimationEvent("FTrans03")
;playAnimationAndWait("Reset03","RTrans03") ;reset anim 03
endIf
shotFired = True
Wait(1)
if (loop == TRUE) ;Reset Limiter
resetLimiter()
endif
endWhile
if isLoaded
isFiring = false
;playAnimation("idle")
goToState("Reset")
endif
endif
endFunction
State Reset
Event OnBeginState()
;TRACE("State Reset")
if shotcount > 0
;shotCount = 3
GoToState ( "Idle" )
Else
TrapDisarmed = True
GoToState ("Reset")
endif
endEvent
Event OnActivate( objectReference activateRef )
;TRACE("Reset trigger")
EndEvent
endState
;-----------------------------------------------
event onLoad()
isLoaded = TRUE
if isFiring == True
fireTrap()
endif
if shotCount == 3
playAnimationAndWait("Reset03","RTrans03") ;reset anim 01
elseIf ShotCount == 2
playAnimationAndWait("Reset01","RTrans01") ;reset anim 02
elseIf ShotCount == 1
playAnimationAndWait("Reset02","RTrans02") ;reset anim 02
endIf
EndEvent
event onUnload()
; debug.Trace(self + " has recieved onUnload event")
isLoaded = FALSE
endEvent