280 lines
8.9 KiB
Plaintext
280 lines
8.9 KiB
Plaintext
Scriptname _SAG_Acitv_JulianosChallenge_Script extends Quest
|
|
|
|
Message Property _SAG_OpponentGotAnswerRightMessage Auto
|
|
Int Property MaxCases = 62 AutoReadOnly Hidden
|
|
Int Property Start = 0 AutoReadOnly Hidden
|
|
Message Property CorrectionMagic Auto
|
|
ReferenceAlias Property MagicSchoolRefAlias Auto
|
|
ObjectReference Property NameHolderMagicSchool Auto
|
|
String[] Property MagicSchools Auto
|
|
ReferenceAlias Property NameHolder Auto
|
|
ObjectReference Property NameHolderRef Auto
|
|
FormList Property SpellList Auto
|
|
Message Property QuestionMagic Auto
|
|
ReferenceAlias Property Opponent Auto
|
|
String s_chargeninitialtext
|
|
Int CurrentPlayerPosition = 0
|
|
Int CurrentOpponentPosition = 0
|
|
Int DicePlayerResult = 0
|
|
Int DicePlayer1 = 0
|
|
Int DicePlayer2 = 0
|
|
Int DiceOpponentResult = 0
|
|
Int DiceOpponent1 = 0
|
|
Int DiceOpponent2 = 0
|
|
ObjectReference Property PLayerPosition Auto
|
|
ObjectReference Property Marker Auto
|
|
Actor Property Commentator Auto
|
|
Actor Property PlayerRef Auto
|
|
ObjectReference InitialFurn
|
|
ObjectReference[] Property PLayerDice01 Auto
|
|
ObjectReference[] Property PlayerDice02 Auto
|
|
ObjectReference[] Property OpponentDice01 Auto
|
|
ObjectReference[] Property OpponentDice02 Auto
|
|
ObjectReference[] Property PlayerChip Auto
|
|
ObjectReference[] Property OpponentChip Auto
|
|
Int[] Property DeathCases Auto
|
|
|
|
Function InitiateGame()
|
|
s_chargeninitialtext = Game.GetGameSettingString("sCharGenControlsDisabled")
|
|
Game.SetGameSettingString("sCharGenControlsDisabled","")
|
|
Commentator.GetActorBase().SetVoiceType(Opponent.GetActorReference().GetVoiceType())
|
|
Commentator.SetDisplayName(Opponent.GetReference().GetDisplayName(), true)
|
|
initialFurn = PlayerRef.GetFurnitureReference()
|
|
game.DisablePlayerControls(true, true, true, true, true, false, true, false, 0)
|
|
game.ForceFirstPerson()
|
|
game.SetInChargen(true, true, true)
|
|
PlayerPosition.MoveTo(PlayerRef as objectreference, 0.000000, 0.000000, 0.000000, true)
|
|
utility.Wait(0.300000)
|
|
PlayerRef.MoveTo(Marker, 0.000000, 0.000000, 0.000000, true)
|
|
if Opponent.GetReference().IsDisabled()
|
|
Opponent.GetReference().Enable(false)
|
|
endIf
|
|
Utility.Wait(3.0)
|
|
PlayGame()
|
|
EndFunction
|
|
|
|
Function PlayGame()
|
|
if CurrentPlayerPosition != 0
|
|
PlayerDice01[DicePlayer1].Disable()
|
|
PlayerDice02[DicePlayer2].Disable()
|
|
PlayerChip[0].Enable()
|
|
PlayerChip[CurrentPlayerPosition].Disable()
|
|
CurrentPlayerPosition = 0
|
|
|
|
OpponentDice01[DicePlayer1].Disable()
|
|
OpponentDice02[DicePlayer2].Disable()
|
|
OpponentChip[0].Enable()
|
|
OpponentChip[CurrentOpponentPosition].Disable()
|
|
CurrentOpponentPosition = 0
|
|
endif
|
|
OpponentTurn()
|
|
EndFunction
|
|
|
|
Function OpponentTurn()
|
|
OpponentDice01[DiceOpponent1].Disable()
|
|
OpponentDice02[DiceOpponent2].Disable()
|
|
DiceOpponent1 = Utility.RandomInt(0,5)
|
|
DiceOpponent2 = Utility.RandomInt(0,5)
|
|
OpponentDice01[DiceOpponent1].Enable(true)
|
|
OpponentDice02[DiceOpponent2].Enable(true)
|
|
OpponentChip[CurrentOpponentPosition].Disable()
|
|
CurrentOpponentPosition += DiceOpponent1+DiceOpponent2+2
|
|
|
|
OpponentChip[CurrentOpponentPosition].Enable()
|
|
Utility.Wait(2.0)
|
|
if DeathCases.Find(CurrentOpponentPosition) >= 0
|
|
if Utility.RandomInt(0,3) < 2
|
|
OpponentChip[CurrentOpponentPosition].Disable()
|
|
CurrentOpponentPosition = 0
|
|
OpponentChip[CurrentOpponentPosition].Enable()
|
|
else
|
|
_SAG_OpponentGotAnswerRightMessage.Show()
|
|
endif
|
|
endif
|
|
if CurrentOpponentPosition == 57
|
|
OpponentChip[CurrentOpponentPosition].Disable()
|
|
CurrentOpponentPosition = 28
|
|
OpponentChip[CurrentOpponentPosition].Enable()
|
|
elseif CUrrentOpponentPosition == 39
|
|
OpponentChip[CurrentOpponentPosition].Disable()
|
|
CurrentOpponentPosition = 4
|
|
OpponentChip[CurrentOpponentPosition].Enable()
|
|
elseif CurrentOpponentPosition == 43
|
|
OpponentChip[CurrentOpponentPosition].Disable()
|
|
CurrentOpponentPosition = 8
|
|
OpponentChip[CurrentOpponentPosition].Enable()
|
|
elseif CurrentOpponentPosition == 47
|
|
OpponentChip[CurrentOpponentPosition].Disable()
|
|
CurrentOpponentPosition = 13
|
|
OpponentChip[CurrentOpponentPosition].Enable()
|
|
elseif CurrentOpponentPosition == 52
|
|
OpponentChip[CurrentOpponentPosition].Disable()
|
|
CurrentOpponentPosition = 21
|
|
OpponentChip[CurrentOpponentPosition].Enable()
|
|
elseif CurrentOpponentPosition == 54
|
|
OpponentChip[CurrentOpponentPosition].Disable()
|
|
CurrentOpponentPosition = 22
|
|
OpponentChip[CurrentOpponentPosition].Enable()
|
|
endif
|
|
Utility.Wait(2.0)
|
|
if CurrentOpponentPosition < MaxCases
|
|
PlayerTurn()
|
|
endif
|
|
if CurrentOpponentPosition >= MaxCases
|
|
OpponentChip[CurrentOpponentPosition].Disable()
|
|
CurrentOpponentPosition = MaxCases
|
|
OpponentChip[CurrentOpponentPosition].Enable()
|
|
OpponentWin()
|
|
Return
|
|
endif
|
|
EndFunction
|
|
|
|
Function OpponentWin()
|
|
_SAG_Activ_Board_OpponentWon.Show()
|
|
PlayAgain()
|
|
EndFunction
|
|
|
|
Function PlayerTurn()
|
|
PlayerDice01[DicePlayer1].Disable()
|
|
PlayerDice02[DicePlayer2].Disable()
|
|
DicePlayer1 = Utility.RandomInt(0,5)
|
|
DicePlayer2 = Utility.RandomInt(0,5)
|
|
PlayerDice01[DicePlayer1].Enable(true)
|
|
PlayerDice02[DicePlayer2].Enable(true)
|
|
PlayerChip[CurrentPlayerPosition].Disable()
|
|
CurrentPlayerPosition += DicePlayer1+DicePlayer2+2
|
|
PlayerChip[CurrentPlayerPosition].Enable()
|
|
if DeathCases.Find(CurrentPlayerPosition) >= 0
|
|
AskQuestion()
|
|
endif
|
|
if CurrentPlayerPosition == 57
|
|
PlayerChip[CurrentPlayerPosition].Disable()
|
|
CurrentPlayerPosition = 28
|
|
PlayerChip[CurrentPlayerPosition].Enable()
|
|
elseif CUrrentPlayerPosition == 39
|
|
PlayerChip[CurrentPlayerPosition].Disable()
|
|
CurrentPlayerPosition = 4
|
|
PlayerChip[CurrentPlayerPosition].Enable()
|
|
elseif CurrentPlayerPosition == 43
|
|
PlayerChip[CurrentPlayerPosition].Disable()
|
|
CurrentPlayerPosition = 8
|
|
PlayerChip[CurrentPlayerPosition].Enable()
|
|
elseif CurrentPlayerPosition == 47
|
|
PlayerChip[CurrentPlayerPosition].Disable()
|
|
CurrentPlayerPosition = 13
|
|
PlayerChip[CurrentPlayerPosition].Enable()
|
|
elseif CurrentPlayerPosition == 52
|
|
PlayerChip[CurrentPlayerPosition].Disable()
|
|
CurrentPlayerPosition = 21
|
|
PlayerChip[CurrentPlayerPosition].Enable()
|
|
elseif CurrentPlayerPosition == 54
|
|
PlayerChip[CurrentPlayerPosition].Disable()
|
|
CurrentPlayerPosition = 22
|
|
PlayerChip[CurrentPlayerPosition].Enable()
|
|
endif
|
|
Utility.Wait(2.0)
|
|
if CurrentPlayerPosition < MaxCases
|
|
OpponentTurn()
|
|
endif
|
|
if CurrentPlayerPosition >= MaxCases
|
|
PlayerChip[CurrentPlayerPosition].Disable()
|
|
CurrentPlayerPosition = MaxCases
|
|
PlayerChip[CurrentPlayerPosition].Enable()
|
|
PlayerWon()
|
|
Return
|
|
endif
|
|
EndFunction
|
|
|
|
Function PlayerWon()
|
|
PlayerRef.Additem(LotteryTicket, 2)
|
|
_SAG_Activ_BoardGame_PlayerWon.ShowAsHelpMessage("_sag_boardgameplayerwon", 2.0, 1.0, 1)
|
|
Message.ResetHelpMessage("_sag_boardgameplayerwon")
|
|
PlayAgain()
|
|
EndFunction
|
|
|
|
Function PlayAgain()
|
|
Utility.Wait(2.0)
|
|
if PlayerRef.GetItemCount(Gold001) < 10
|
|
if initialfurn
|
|
PlayerRef.MoveTo(initialfurn)
|
|
else
|
|
PlayerRef.MoveTo(Playerposition)
|
|
endif
|
|
if initialfurn
|
|
PLayerRef.MoveTo(initialfurn)
|
|
else
|
|
PlayerRef.MoveTo(PlayerPosition)
|
|
endif
|
|
Game.EnablePlayerControls()
|
|
Game.SetInChargen(abDisableSaving = false, abDisableWaiting = false, abShowControlsDisabledMessage = false)
|
|
Opponent.Clear()
|
|
PlayerDice01[DicePlayer1].Disable()
|
|
PlayerDice02[DicePlayer2].Disable()
|
|
PlayerChip[0].Enable()
|
|
PlayerChip[CurrentPlayerPosition].Disable()
|
|
CurrentPlayerPosition = 0
|
|
OpponentDice01[DicePlayer1].Disable()
|
|
OpponentDice02[DicePlayer2].Disable()
|
|
OpponentChip[0].Enable()
|
|
OpponentChip[CurrentOpponentPosition].Disable()
|
|
CurrentOpponentPosition = 0
|
|
Return
|
|
else
|
|
int playagain = playagainmessage.Show()
|
|
if playagain == 0
|
|
PlayGame()
|
|
else
|
|
if initialfurn
|
|
PLayerRef.MoveTo(initialfurn)
|
|
else
|
|
PlayerRef.MoveTo(PlayerPosition)
|
|
endif
|
|
Game.EnablePlayerControls()
|
|
Game.SetInChargen(abDisableSaving = false, abDisableWaiting = false, abShowControlsDisabledMessage = false)
|
|
Opponent.Clear()
|
|
PlayerDice01[DicePlayer1].Disable()
|
|
PlayerDice02[DicePlayer2].Disable()
|
|
PlayerChip[0].Enable()
|
|
PlayerChip[CurrentPlayerPosition].Disable()
|
|
CurrentPlayerPosition = 0
|
|
OpponentDice01[DicePlayer1].Disable()
|
|
OpponentDice02[DicePlayer2].Disable()
|
|
OpponentChip[0].Enable()
|
|
OpponentChip[CurrentOpponentPosition].Disable()
|
|
CurrentOpponentPosition = 0
|
|
Return
|
|
endif
|
|
endif
|
|
EndFunction
|
|
|
|
Function AskQuestion()
|
|
Int Malus = Utility.RandomInt(2,12)
|
|
NameHolder.Clear()
|
|
MagicSchoolRefAlias.Clear()
|
|
Spell ChosenSpell = (SpellList.GetAt(Utility.RandomInt(0,SpellList.GetSize() - 1)) as BOOK).GetSpell()
|
|
Int ME_Index = ChosenSpell.GetCostliestEffectIndex()
|
|
String MagicSchool = ChosenSpell.GetNthEffectMagicEffect(ME_Index).GetAssociatedSkill()
|
|
NameHolderRef.GetBaseObject().SetName(ChosenSpell.GetName())
|
|
NameHolderMagicSchool.GetBaseObject().SetName(MagicSchool)
|
|
MagicSchoolRefAlias.ForceRefTo(NameHolderMagicSchool)
|
|
NameHolder.ForceRefTo(NameHolderRef)
|
|
if MagicSchool == "" || MagicSchool == " "
|
|
AskQuestion()
|
|
Return
|
|
endif
|
|
Int Answer = QuestionMagic.Show()
|
|
|
|
if MagicSchools[Answer] == MagicSchool
|
|
else
|
|
CorrectionMagic.Show()
|
|
PlayerChip[CurrentPlayerPosition].Disable(true)
|
|
CurrentPlayerPosition = 0
|
|
PlayerChip[CurrentPlayerPosition].Enable(true)
|
|
endif
|
|
EndFunction
|
|
|
|
Book Property LotteryTicket Auto
|
|
Message Property _SAG_Activ_Board_OpponentWon Auto
|
|
Message Property playagainmessage Auto
|
|
Message Property _SAG_Activ_BoardGame_PlayerWon Auto
|
|
MiscObject Property Gold001 Auto |