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