summaryrefslogtreecommitdiff
path: root/example/scripts/status/jump.lua
blob: d28c290f783f3c194faa256c4d448a607cb13231 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
-------------------------------------------------------------
-- This status jumps from being to being                   --
-- Thats all it does.                                      --
----------------------------------------------------------------------------------
--  Copyright 2009 The Mana World Development Team                              --
--                                                                              --
--  This file is part of The Mana World.                                        --
--                                                                              --
--  The Mana World  is free software; you can redistribute  it and/or modify it --
--  under the terms of the GNU General  Public License as published by the Free --
--  Software Foundation; either version 2 of the License, or any later version. --
----------------------------------------------------------------------------------


local function tick(target, ticknumber)
    if (ticknumber % 10 == 0) then
        target:say("I have the jumping bug!")
    end
    
    if (target:status_time(2) < 2000) then
        target:set_status_time(2, 6000)
    end
    
    if (ticknumber % 50 ~= 0) then return end
    
    local victims = get_beings_in_circle(target, 64)
    local count = #victims

    if i == 0 then return end
    
    local i
    local remaining = 1000
    local victim = nil
    
    repeat
        remaining = remaining - 1
        i = math.random(count)
        victim = victims[i]
        if (victim == target) then
            victim = nil
            i = -1
        else
            i = victim:type()
        end
    until (i == TYPE_MONSTER or i == TYPE_CHARACTER or remaining == 0)

    if (victim == nil) then return end
    
    target:remove_status(2)

    victim:apply_status(2, 6000)
    victim:say("Now I have the jumping bug")
end

get_status_effect("jumping status"):on_tick(tick)