318 lines
8.2 KiB
Plaintext
318 lines
8.2 KiB
Plaintext
scriptname _00E_A0_BankSystemQuest extends Quest Conditional
|
|
|
|
import Game
|
|
import Utility
|
|
|
|
|
|
;****************
|
|
; How to call:
|
|
;****************
|
|
|
|
; Einzahlen: (BankQuest as _00E_A0_BankSystemQuest).Transfer("start", "Deposit")
|
|
; Abheben: (BankQuest as _00E_A0_BankSystemQuest).Transfer("start", "Withdraw")
|
|
|
|
;=====================================================================================
|
|
; EVENT
|
|
;=====================================================================================
|
|
|
|
Event OnUpdate()
|
|
|
|
if bRestartDeposit
|
|
|
|
bRestartDeposit = False
|
|
Transfer("start", "Deposit")
|
|
|
|
Elseif bRestartWithdraw
|
|
|
|
bRestartWithdraw = False
|
|
Transfer("start", "Withdraw")
|
|
|
|
EndIf
|
|
|
|
EndEvent
|
|
|
|
;=====================================================================================
|
|
; FUNCTIONS
|
|
;=====================================================================================
|
|
|
|
Function Terminate(String TransferAction)
|
|
|
|
Transfer("null", "RecalculateZins") ; < Finger weg!
|
|
|
|
ENDfunction
|
|
|
|
Int CashFlow
|
|
Int iMaxAmount
|
|
Bool Registered
|
|
|
|
function Transfer(string TransferRate, string TransferAction)
|
|
|
|
bTransferInAction = True
|
|
Deposited = REFdepositBox.getItemCount(Gold) as int
|
|
GLBcurrent.setValue(Deposited)
|
|
|
|
; Zinsformel **********************************************************************************************
|
|
|
|
if Deposited < 100
|
|
ZinsPercent = 0.3
|
|
elseif Deposited > 99 && Deposited < 300
|
|
ZinsPercent = 0.5
|
|
elseif Deposited > 299 && Deposited < 400
|
|
ZinsPercent = 0.8
|
|
elseif Deposited > 399 && Deposited < 500
|
|
ZinsPercent = 1.2
|
|
elseif Deposited > 499 && Deposited < 600
|
|
ZinsPercent = 1.6
|
|
elseif Deposited > 599 && Deposited < 700
|
|
ZinsPercent = 1.9
|
|
elseif Deposited > 699 && Deposited < 800
|
|
ZinsPercent = 2.1
|
|
elseif Deposited > 799 && Deposited < 900
|
|
ZinsPercent = 2.4
|
|
elseif Deposited > 899 && Deposited < 1000
|
|
ZinsPercent = 2.6
|
|
elseif Deposited == 1000 || Deposited > 1000
|
|
ZinsPercent = 2.8
|
|
endif
|
|
|
|
Zins = REFdepositBox.getItemCount(Gold) /100.0 *ZinsPercent
|
|
if Zins > 250
|
|
Zins = 250
|
|
endif
|
|
|
|
; ********************************************************************************************************
|
|
|
|
if TransferAction != "RecalculateZins"
|
|
If Registered == false
|
|
RegisterForSingleUpdateGameTime(24)
|
|
Registered = true
|
|
endif
|
|
|
|
if TransferRate == "start"
|
|
if TransferAction == "Deposit"
|
|
iMaxAmount = GetPlayer().GetItemCount(Gold)
|
|
|
|
if EnderalFunctions.TextInputEnabled()
|
|
CashFlow = (((Self as QUEST) as FORM) as UILIB_1).ShowTextInput(_00E_BankSystem_Deposit_Comfy.GetName() + iMaxAmount + ")", iMaxAmount) as Int
|
|
else
|
|
int iFallback = _00E_BankSystem_Deposit_FallbackSelect.Show(Deposited)
|
|
|
|
if iFallback == 0
|
|
CashFlow = 100
|
|
elseif iFallback == 1
|
|
CashFlow = 250
|
|
elseif iFallback == 2
|
|
CashFlow = 500
|
|
elseif iFallback == 3
|
|
CashFlow = 1000
|
|
elseif iFallback == 4
|
|
CashFlow = 1500
|
|
elseif iFallback == 5
|
|
CashFlow = 2000
|
|
else
|
|
bTransferInAction = False
|
|
return
|
|
endif
|
|
endif
|
|
else
|
|
iMaxAmount = REFdepositBox.GetItemCount(Gold)
|
|
|
|
if EnderalFunctions.TextInputEnabled()
|
|
CashFlow = (((Self as QUEST) as FORM) as UILIB_1).ShowTextInput(_00E_BankSystem_Withdraw_Comfy.GetName() + iMaxAmount + ")", iMaxAmount) as Int
|
|
else
|
|
int iFallback = _00E_BankSystem_Withdraw_FallbackSelect.Show(iMaxAmount)
|
|
|
|
if iFallback == 0
|
|
CashFlow = 100
|
|
elseif iFallback == 1
|
|
CashFlow = 250
|
|
elseif iFallback == 2
|
|
CashFlow = 500
|
|
elseif iFallback == 3
|
|
CashFlow = 1000
|
|
elseif iFallback == 4
|
|
CashFlow = 1500
|
|
elseif iFallback == 5
|
|
CashFlow = 2000
|
|
elseif iFallback == 6
|
|
CashFlow = iMaxAmount
|
|
else
|
|
bTransferInAction = False
|
|
return
|
|
endif
|
|
endif
|
|
endif
|
|
|
|
if CashFlow <= 0
|
|
bTransferInAction = False
|
|
return
|
|
endif
|
|
|
|
if CashFlow > iMaxAmount
|
|
|
|
if TransferAction == "Deposit"
|
|
|
|
_00E_Bank_NotEnoughMoneyDeposit.Show()
|
|
|
|
if ! EnderalFunctions.TextInputEnabled()
|
|
bTransferInAction = False
|
|
return
|
|
endif
|
|
|
|
bRestartDeposit = True
|
|
RegisterForSingleUpdate(1)
|
|
|
|
Else
|
|
|
|
_00E_Bank_NotEnoughMoneyWithdraw.Show()
|
|
|
|
if ! EnderalFunctions.TextInputEnabled()
|
|
bTransferInAction = False
|
|
return
|
|
endif
|
|
|
|
bRestartWithdraw = True
|
|
RegisterForSingleUpdate(1)
|
|
|
|
EndIf
|
|
|
|
Else
|
|
|
|
if TransferAction == "Deposit"
|
|
|
|
getplayer().removeItem(Gold, CashFlow, False)
|
|
REFdepositBox.additem(Gold, CashFlow)
|
|
;SFXgoldDeposit.play(getplayer())
|
|
GLBcurrent.setValue(Deposited)
|
|
|
|
elseif TransferAction == "Withdraw"
|
|
|
|
getplayer().additem(Gold, CashFlow, False)
|
|
REFdepositBox.removeitem(Gold, CashFlow)
|
|
;SFXgoldWithdraw.play(getplayer())
|
|
GLBcurrent.setValue(Deposited)
|
|
|
|
endif
|
|
|
|
If TransferAction == "Deposit"
|
|
Bankier.GetActorReference().Say(BankSystem_D0_PlayerDepositTopic)
|
|
Elseif TransferAction == "Withdraw"
|
|
Bankier.GetActorReference().Say(BankSystem_D0_PlayerWithdrawTopic)
|
|
EndIf
|
|
|
|
EndIf
|
|
|
|
Terminate(TransferAction)
|
|
|
|
bTransferInAction = False
|
|
|
|
endif
|
|
endif
|
|
ENDfunction
|
|
|
|
Function ShowRootMenu()
|
|
|
|
if Deposited < 100
|
|
ZinsPercent = 0.3
|
|
elseif Deposited > 99 && Deposited < 300
|
|
ZinsPercent = 0.5
|
|
elseif Deposited > 299 && Deposited < 400
|
|
ZinsPercent = 0.8
|
|
elseif Deposited > 399 && Deposited < 500
|
|
ZinsPercent = 1.2
|
|
elseif Deposited > 499 && Deposited < 600
|
|
ZinsPercent = 1.6
|
|
elseif Deposited > 599 && Deposited < 700
|
|
ZinsPercent = 1.9
|
|
elseif Deposited > 699 && Deposited < 800
|
|
ZinsPercent = 2.1
|
|
elseif Deposited > 799 && Deposited < 900
|
|
ZinsPercent = 2.4
|
|
elseif Deposited > 899 && Deposited < 1000
|
|
ZinsPercent = 2.6
|
|
elseif Deposited == 1000 || Deposited > 1000
|
|
ZinsPercent = 2.8
|
|
endif
|
|
|
|
Zins = REFdepositBox.getItemCount(Gold) /100.0 *ZinsPercent
|
|
|
|
|
|
if Zins > 250
|
|
Zins = 250
|
|
endif
|
|
|
|
int iButton = _00E_BankSystem_Root.Show(REFdepositBox.getItemCount(Gold), Zins, _00E_BankSystem_Beteiligungen.GetValue() as int, getplayer().GetItemCount(gold) as int)
|
|
|
|
if iButton == 0
|
|
Transfer("start", "Deposit")
|
|
Elseif iButton == 1
|
|
Transfer("start", "Withdraw")
|
|
Else
|
|
Return
|
|
EndIf
|
|
|
|
EndFunction
|
|
|
|
int ZinsHistory
|
|
Event OnUpdateGameTime()
|
|
|
|
ZinsHistory = ZinsHistory +Zins as int
|
|
REFdepositBox.additem(gold, zins as int)
|
|
REFdepositBox.additem(gold, _00E_BankSystem_Beteiligungen.GetValue() as int)
|
|
Transfer("null", "RecalculateZins")
|
|
|
|
if REFdepositBox.GetItemCount(Gold) != 0
|
|
RegisterForSingleUpdateGameTime(24)
|
|
|
|
If !bDoneAchievement && REFdepositBox.GetItemCount(Gold) >= 100000
|
|
Steam.UnlockAchievement("END_BANKACCOUNT_01")
|
|
bDoneAchievement = true
|
|
EndIf
|
|
else
|
|
Registered = false
|
|
endif
|
|
|
|
ENDevent
|
|
|
|
;=====================================================================================
|
|
; PROPERTIES
|
|
;=====================================================================================
|
|
|
|
bool bRestartDeposit
|
|
bool bRestartWithdraw
|
|
bool bDoneAchievement = false
|
|
|
|
bool Property bTransferInAction Auto Conditional Hidden
|
|
|
|
ObjectReference Property REFdepositBox Auto
|
|
|
|
Message Property _00E_Bank_NotEnoughMoneyWithdraw Auto
|
|
Message Property _00E_Bank_NotEnoughMoneyDeposit Auto
|
|
|
|
Message Property _00E_BankSystem_Deposit_Comfy Auto
|
|
Message Property _00E_BankSystem_Deposit_FallbackSelect Auto
|
|
Message Property _00E_BankSystem_Withdraw_FallbackSelect Auto
|
|
Message Property _00E_BankSystem_Withdraw_Comfy Auto
|
|
Message Property _00E_BankSystem_Root Auto
|
|
|
|
Sound Property SFXgoldDeposit Auto
|
|
Sound Property SFXgoldWithdraw Auto
|
|
|
|
GlobalVariable Property GLBcurrent Auto
|
|
GlobalVariable Property _00E_BankSystem_Beteiligungen Auto
|
|
MiscObject Property Gold Auto
|
|
|
|
ReferenceAlias Property Bankier Auto
|
|
|
|
int Property Created Auto hidden
|
|
int Property Current Auto hidden
|
|
int Property GetInput Auto hidden
|
|
|
|
Topic Property BankSystem_D0_PlayerDepositTopic Auto
|
|
Topic Property BankSystem_D0_PlayerWithdrawTopic Auto
|
|
|
|
float property Zins auto hidden
|
|
float property ZinsPercent auto hidden
|
|
float property Deposited auto hidden
|
|
|