328 lines
7.9 KiB
Plaintext
328 lines
7.9 KiB
Plaintext
|
scriptName TrapNorPlatform extends MovingTrap
|
||
|
;
|
||
|
;
|
||
|
;==========================================
|
||
|
|
||
|
|
||
|
;===================================================================
|
||
|
;;GENERAL PROPERTIES BLOCK
|
||
|
;===================================================================
|
||
|
|
||
|
float property FireSpeed = 1.0 Auto
|
||
|
{Time (in seconds) to move from the starting position to the ending position}
|
||
|
|
||
|
float property ReturnSpeed = 5.0 Auto
|
||
|
{Time (in seconds) to return from the ending position to the starting position}
|
||
|
|
||
|
float property ReturnDelay = 2.5 Auto
|
||
|
{Time (in seconds) to delay before resetting}
|
||
|
|
||
|
string midAnim = "Mid"
|
||
|
|
||
|
string up01Anim = "128Up"
|
||
|
string up02Anim = "256Up"
|
||
|
string up03Anim = "384Up"
|
||
|
string up04Anim = "512Up"
|
||
|
string up05Anim = "640Up"
|
||
|
string up06Anim = "768Up"
|
||
|
|
||
|
string down01Anim = "128Dn"
|
||
|
string down02Anim = "256Dn"
|
||
|
string down03Anim = "384Dn"
|
||
|
string down04Anim = "512Dn"
|
||
|
string down05Anim = "640Dn"
|
||
|
string down06Anim = "768Dn"
|
||
|
|
||
|
|
||
|
;;;;;;;;;;;;;;
|
||
|
|
||
|
bool restartLooping = false
|
||
|
bool finishedPlaying = false
|
||
|
bool hasPlayedAttackAnimOnce = FALSE
|
||
|
float property initialDelay = 0.25 auto
|
||
|
|
||
|
string property fireAnim auto hidden
|
||
|
{firing animation, should not need to change}
|
||
|
string property fireSpeedString auto hidden
|
||
|
{firing speed string, name set in script}
|
||
|
string property fireEvent = "Done" auto hidden
|
||
|
{firing animation event, should not need to change}
|
||
|
string property resetAnim auto hidden
|
||
|
{reset animation, should not need to change}
|
||
|
string property resetSpeedString auto hidden
|
||
|
{reset speed string, name set in script}
|
||
|
string property resetEvent = "Done" auto hidden
|
||
|
{reset animation event, should not need to change}
|
||
|
string property startSwungAnim auto hidden
|
||
|
{anim event to start already swung}
|
||
|
|
||
|
bool property startSwung = false auto
|
||
|
{set to true to start swung}
|
||
|
|
||
|
hazardBase property myHazardBase auto hidden
|
||
|
|
||
|
;;;OLD SCRIPT
|
||
|
int property StartingHeight = 0 auto
|
||
|
{The starting height of the platform, -6 to 6
|
||
|
heights are in increments of 128
|
||
|
defaults == 0}
|
||
|
;/ {The starting height of the platform, -6 to 6, defaults to 0}
|
||
|
int Function Get()
|
||
|
return StartingHeight
|
||
|
endFunction
|
||
|
|
||
|
Function Set (int value)
|
||
|
if (value >= 6 && value <= 6)
|
||
|
StartingHeight = Value
|
||
|
else
|
||
|
StartingHeight = 0
|
||
|
endif
|
||
|
endFunction
|
||
|
endProperty/;
|
||
|
|
||
|
int property EndingHeight = 3 auto
|
||
|
{The ending height of the platform, -6 to 6
|
||
|
heights are in increments of 128
|
||
|
defaults == 3}
|
||
|
;/ int Function Get()
|
||
|
return EndingHeight
|
||
|
endFunction
|
||
|
|
||
|
Function Set (int value)
|
||
|
if (value >= 6 && value <= 6)
|
||
|
EndingHeight = Value
|
||
|
else
|
||
|
EndingHeight = 3
|
||
|
endif
|
||
|
endFunction
|
||
|
endProperty/;
|
||
|
|
||
|
;===================================================================
|
||
|
;;EVENT BLOCK
|
||
|
;===================================================================
|
||
|
|
||
|
|
||
|
EVENT OnLoad()
|
||
|
;/if (startSwung == true )
|
||
|
;trace(self + "OnLoad: playanimation(" + startSwungAnim + ")")
|
||
|
playAnimation(startSwungAnim) ;activator starts opened
|
||
|
endif/;
|
||
|
|
||
|
; debug.Trace(self + " has called onLoad")
|
||
|
SetResetAnim()
|
||
|
SetFireAnim()
|
||
|
myHazardBase = (self as objectReference) as hazardBase
|
||
|
isLoaded = TRUE
|
||
|
if isFiring == True || startSwung == True
|
||
|
startSwung = False
|
||
|
if startSwung
|
||
|
loop == True
|
||
|
endif
|
||
|
fireTrap()
|
||
|
endif
|
||
|
endEVENT
|
||
|
|
||
|
|
||
|
;===================================================================
|
||
|
;;FIRE TRAP BLOCK
|
||
|
;===================================================================
|
||
|
|
||
|
Function fireTrap()
|
||
|
|
||
|
;Basic wind up and fire once checking
|
||
|
; debug.TRACE(self + " has called fireTrap")
|
||
|
; debug.TRACE(self + ": lastActivateRef = " + lastActivateRef)
|
||
|
isFiring = True
|
||
|
myHazardBase.goToState("CanHit")
|
||
|
WindupSound.play( self as ObjectReference) ;play windup sound
|
||
|
ResolveLeveledDamage()
|
||
|
SetResetAnim()
|
||
|
SetFireAnim()
|
||
|
utility.wait( initialDelay ) ;wait for windup
|
||
|
hasPlayedAttackAnimOnce = FALSE
|
||
|
;TRACE("Initial Delay complete")
|
||
|
|
||
|
if (fireOnlyOnce == True) ;If this can be fired only once then disarm
|
||
|
trapDisarmed = True
|
||
|
endif
|
||
|
|
||
|
;TRACE("Looping =")
|
||
|
;TRACE(Loop)
|
||
|
|
||
|
;Trap Guts
|
||
|
while(finishedPlaying == False && isLoaded == true)
|
||
|
;trace(self + "Firing trap: playanimation(" + fireAnim + ")")
|
||
|
;trace(self + "Firing trap: waiting for event(" + fireEvent + ")")
|
||
|
if (hasPlayedAttackAnimOnce == FALSE)
|
||
|
fireSpeedString = FireAnim
|
||
|
fireSpeedString + "s"
|
||
|
SetAnimationVariableFloat(fireSpeedString, FireSpeed)
|
||
|
PlayAnimationAndWait(fireAnim, fireEvent)
|
||
|
; ;debug.Trace(self + "has finished anim once")
|
||
|
hasPlayedAttackAnimOnce = TRUE
|
||
|
|
||
|
Else
|
||
|
utility.wait(0.5)
|
||
|
endif
|
||
|
finishedPlaying = True
|
||
|
|
||
|
if (loop == TRUE) ;Reset Limiter
|
||
|
; ;debug.Trace(self + "is looping because loop = " + loop)
|
||
|
resetLimiter()
|
||
|
endif
|
||
|
endWhile
|
||
|
myHazardBase.goToState("CannotHit")
|
||
|
resetSpeedString = resetAnim
|
||
|
resetSpeedString + "s"
|
||
|
SetAnimationVariableFloat(resetSpeedString, ReturnSpeed)
|
||
|
utility.wait(ReturnDelay)
|
||
|
|
||
|
if isLoaded
|
||
|
isFiring = false
|
||
|
PlayAnimationAndWait(resetAnim, resetEvent)
|
||
|
goToState("Reset")
|
||
|
endif
|
||
|
;trace(self + "Reset trap: playanimation(" + resetAnim + ")")
|
||
|
;trace(self + "Reset trap: waiting for event(" + resetEvent + ")")
|
||
|
|
||
|
|
||
|
endFunction
|
||
|
|
||
|
State Reset
|
||
|
|
||
|
Event OnBeginState()
|
||
|
GoToState ( "Idle" )
|
||
|
myHazardBase = (self as objectReference) as hazardBase
|
||
|
if myHazardBase
|
||
|
myHazardBase.goToState("CannotHit")
|
||
|
endif
|
||
|
endEvent
|
||
|
|
||
|
Event OnActivate( objectReference activateRef )
|
||
|
lastActivateRef = activateRef
|
||
|
EndEvent
|
||
|
|
||
|
endState
|
||
|
|
||
|
;===================================================================
|
||
|
;;FUNCTION BLOCK
|
||
|
;===================================================================
|
||
|
|
||
|
Function ResetLimiter()
|
||
|
finishedPlaying = False
|
||
|
;hazardBase myHazardBase = (self as objectReference) as hazardBase
|
||
|
;myHazardBase.goToState("CanHit")
|
||
|
EndFunction
|
||
|
|
||
|
|
||
|
Function SetResetAnim()
|
||
|
if startingHeight == -6
|
||
|
ResetAnim = down06Anim
|
||
|
ElseIf startingHeight == -5
|
||
|
ResetAnim = down05Anim
|
||
|
ElseIf startingHeight == -4
|
||
|
ResetAnim = down04Anim
|
||
|
ElseIf startingHeight == -3
|
||
|
ResetAnim = down03Anim
|
||
|
ElseIf startingHeight == -2
|
||
|
ResetAnim = down02Anim
|
||
|
ElseIf startingHeight == -1
|
||
|
ResetAnim = down01Anim
|
||
|
ElseIf startingHeight == 0
|
||
|
ResetAnim = midAnim
|
||
|
ElseIf startingHeight == 1
|
||
|
ResetAnim = up01Anim
|
||
|
ElseIf startingHeight == 2
|
||
|
ResetAnim = up02Anim
|
||
|
ElseIf startingHeight == 3
|
||
|
ResetAnim = up03Anim
|
||
|
ElseIf startingHeight == 4
|
||
|
ResetAnim = up04Anim
|
||
|
ElseIf startingHeight == 5
|
||
|
ResetAnim = up05Anim
|
||
|
ElseIf startingHeight == 6
|
||
|
ResetAnim = up06Anim
|
||
|
Endif
|
||
|
EndFunction
|
||
|
|
||
|
Function SetFireAnim()
|
||
|
if EndingHeight == -6
|
||
|
FireAnim = down06Anim
|
||
|
ElseIf EndingHeight == -5
|
||
|
FireAnim = down05Anim
|
||
|
ElseIf EndingHeight == -4
|
||
|
FireAnim = down04Anim
|
||
|
ElseIf EndingHeight == -3
|
||
|
FireAnim = down03Anim
|
||
|
ElseIf EndingHeight == -2
|
||
|
FireAnim = down02Anim
|
||
|
ElseIf EndingHeight == -1
|
||
|
FireAnim = down01Anim
|
||
|
ElseIf EndingHeight == 0
|
||
|
FireAnim = midAnim
|
||
|
ElseIf EndingHeight == 1
|
||
|
FireAnim = up01Anim
|
||
|
ElseIf EndingHeight == 2
|
||
|
FireAnim = up02Anim
|
||
|
ElseIf EndingHeight == 3
|
||
|
FireAnim = up03Anim
|
||
|
ElseIf EndingHeight == 4
|
||
|
FireAnim = up04Anim
|
||
|
ElseIf EndingHeight == 5
|
||
|
FireAnim = up05Anim
|
||
|
ElseIf EndingHeight == 6
|
||
|
FireAnim = up06Anim
|
||
|
Endif
|
||
|
|
||
|
startSwungAnim = FireAnim
|
||
|
EndFunction
|
||
|
|
||
|
|
||
|
Function ResolveLeveledDamage()
|
||
|
int damageLevel
|
||
|
int damage
|
||
|
damageLevel = CalculateEncounterLevel(TrapLevel)
|
||
|
|
||
|
damage = LvlDamage1
|
||
|
|
||
|
if (damageLevel > LvlThreshold1 && damageLevel <= LvlThreshold2)
|
||
|
damage = LvlDamage2
|
||
|
;Trace("damage threshold =")
|
||
|
;Trace("2")
|
||
|
endif
|
||
|
if (damageLevel > LvlThreshold2 && damageLevel <= LvlThreshold3)
|
||
|
damage = LvlDamage3
|
||
|
;Trace("damage threshold =")
|
||
|
;Trace("3")
|
||
|
endif
|
||
|
if (damageLevel > LvlThreshold3 && damageLevel <= LvlThreshold4)
|
||
|
damage = LvlDamage4
|
||
|
;Trace("damage threshold =")
|
||
|
;Trace("4")
|
||
|
endif
|
||
|
if (damageLevel > LvlThreshold4 && damageLevel <= LvlThreshold5)
|
||
|
damage = LvlDamage5
|
||
|
;Trace("damage threshold =")
|
||
|
;Trace("5")
|
||
|
endif
|
||
|
if (damageLevel > LvlThreshold5)
|
||
|
damage = LvlDamage6
|
||
|
;Trace("damage threshold =")
|
||
|
;Trace("6")
|
||
|
endif
|
||
|
|
||
|
;Trace("damage =")
|
||
|
;Trace(damage)
|
||
|
|
||
|
;return damage
|
||
|
myHazardBase = (self as objectReference) as hazardBase
|
||
|
if myHazardBase
|
||
|
myHazardBase.damage = damage
|
||
|
endif
|
||
|
EndFunction
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|