71 lines
2.3 KiB
Plaintext
71 lines
2.3 KiB
Plaintext
|
ScriptName defaultActivateSelf extends objectReference
|
||
|
{Default script that simply activates itself when player enters trigger}
|
||
|
|
||
|
import game
|
||
|
import debug
|
||
|
|
||
|
bool property doOnce = TRUE auto
|
||
|
{Fire only once? Default: TRUE}
|
||
|
bool property disableWhenDone = FALSE auto
|
||
|
{Disable after activating? Default: FALSE}
|
||
|
bool property playerOnly = TRUE auto
|
||
|
{Only Player Triggers? Default: TRUE}
|
||
|
bool property playerAndAlliesOnly = False Auto
|
||
|
{Only player or Allies/Followers/Summons trigger? Overrides playerOnly if that's true as well. Default: TRUE}
|
||
|
int property minLevel auto
|
||
|
{Optional: If set, player must be >= minLevel to activate this}
|
||
|
|
||
|
Actor property PlayerRef Auto
|
||
|
Faction property CurrentFollowerFaction Auto
|
||
|
Package property Follow Auto
|
||
|
Package property FollowerPackageTemplate Auto
|
||
|
|
||
|
|
||
|
;************************************
|
||
|
|
||
|
auto State waiting
|
||
|
Event onTriggerEnter(objectReference triggerRef)
|
||
|
If PlayerRef == None
|
||
|
PlayerRef = Game.GetPlayer()
|
||
|
EndIf
|
||
|
|
||
|
Actor actorRef = triggerRef as Actor
|
||
|
; check whether we care if the player is activating
|
||
|
if(actorRef == PlayerRef || (playerAndAlliesOnly && IsPlayerAlly(actorRef)) || (playerOnly == False && playerAndAlliesOnly == False))
|
||
|
; also check level (if we even care about that)
|
||
|
if(minLevel <= 1 || PlayerRef.getLevel() >= minLevel)
|
||
|
if doOnce == TRUE
|
||
|
gotoState("allDone")
|
||
|
endif
|
||
|
if disableWhenDone
|
||
|
Self.Disable()
|
||
|
EndIf
|
||
|
; per the description of this script, pass self as the activating ref
|
||
|
activate(self)
|
||
|
endif
|
||
|
endif
|
||
|
endEvent
|
||
|
endState
|
||
|
|
||
|
bool Function IsPlayerAlly(Actor actorRef)
|
||
|
;Short-circuit this if this isn't an Actor at all, or if it's hostile to the player.
|
||
|
if (actorRef == None || actorRef.GetFactionReaction(PlayerRef) == 1)
|
||
|
return False
|
||
|
EndIf
|
||
|
|
||
|
;Is this a summon or one of the various types of player followers?
|
||
|
If actorRef.IsCommandedActor() || (actorRef.GetRelationshipRank(PlayerRef) > 0) || (CurrentFollowerFaction && actorRef.IsInFaction(CurrentFollowerFaction)) || actorRef.IsPlayerTeammate()
|
||
|
Return True
|
||
|
EndIf
|
||
|
|
||
|
Package curPackageTemplate = actorRef.GetCurrentPackage().GetTemplate()
|
||
|
Return ((curPackageTemplate == Follow) || (curPackageTemplate == FollowerPackageTemplate))
|
||
|
EndFunction
|
||
|
|
||
|
;************************************
|
||
|
|
||
|
State allDone
|
||
|
;do nothing
|
||
|
endState
|
||
|
|
||
|
;************************************
|