View difference between Paste ID: d1tvrAcv and mvQkvbJd
SHOW: | | - or go back to the newest paste.
1
---------------------------------
2
-- EXP on Kill quest by ManHunter
3
---------------------------------
4
quest exp_kill begin
5
	state start begin
6
		-------------------
7
		-- Inizio functions
8
		-------------------
9
		function GetScriptData(data)
10
			local questData = { ['expConstMul'] = 3,
11
								['expMul'] = 25,
12
								['goldConstMul'] = 4,
13
								['goldMul'] = 20,
14
								['successProb'] = 65,
15
								['extraSuccessProb'] = 20,
16
								['numOfRewards'] = 2}
17
			return rawget(questData, data)
18
		end
19
		
20
		function GetRewardItem(reward, extra)
21
			if extra == 1 then
22
				local extraRewardList = {	4592,
23
											7676 }
24
				return extraRewardList[reward]
25
			else
26
				local rewardList = { 	1000,
27
										3902 }
28
				return rewardList[reward]
29
			end
30
		end
31
		
32
		function GetRewardExp(mul)
33
			local expGained = 0
34-
			if math.random(1, 100) <= GetScriptData('successProb') then
34+
35
				expGained = (exp_kill.GetScriptData('expConstMul') * math.random(1, exp_kill.GetScriptData('expMul')) * pc.level * mul ) + exp_kill.GetScriptData('expMul')
36
				return expGained
37
			else
38
				expGained = math.random(1, exp_kill.GetScriptData('expMul'))
39
				return expGained
40
			end
41
		end
42
		
43
		function GetRewardGold(mul)
44
			local goldGained = 0
45-
			if math.random(1, 100) <= GetScriptData('successProb') then
45+
46
				goldGained = (exp_kill.GetScriptData('goldConstMul') * math.random(1, exp_kill.GetScriptData('goldMul')) * pc.level * mul ) + exp_kill.GetScriptData('goldMul')
47
				return goldGained
48
			else
49
				goldGained = math.random(1, exp_kill.GetScriptData('expMul'))
50
				return goldGained
51
			end
52
		end
53
		-----------------
54
		-- Fine functions
55
		-----------------
56
		
57
		when kill with npc.is_pc() and pc.level >= 15 and pc.level < 100 and npc.get_empire() ~= pc.get_empire() begin
58
			if math.random(1, 100) <= exp_kill.GetScriptData('successProb') then
59
				pc.give_item2(exp_kill.GetRewardItem(math.random(1, exp_kill.GetScriptData('numOfRewards')), 0), 1)
60
				if math.random(1, 100) <= exp_kill.GetScriptData('extraSuccessProb') then
61
					pc.give_item2(exp_kill.GetRewardItem(math.random(1, exp_kill.GetScriptData('numOfRewards')), 1), 1)
62
				end
63
			end
64
			if math.random(1, 100) <= exp_kill.GetScriptData('successProb') then
65
				local expGained = exp_kill.GetRewardExp(100)
66
				if math.random(1, 100) <= exp_kill.GetScriptData('extraSuccessProb') then
67
					expGained = expGained + exp_kill.GetRewardExp(25)
68
				end
69
				pc.give_exp2(expGained)
70
			end
71
			if math.random(1, 100) <= exp_kill.GetScriptData('successProb') then
72
				local goldGained = exp_kill.GetRewardGold(10)
73
				if math.random(1, 100) <= exp_kill.GetScriptData('extraSuccessProb') then
74
					goldGained = goldGained + exp_kill.GetRewardGold(2)
75
				end
76
				pc.changegold(goldGained)
77
			end
78
		end
79
	end
80
end