summaryrefslogtreecommitdiffstats
path: root/example/scripts/status/jump.lua
blob: 9dc0195182e7c98e6c911cdccc8e71f9326a4a37 (plain)
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
        being_say(target, "I have the jumping bug!")
    end
    
    if (being_get_status_time(target, 2) < 2000) then
        being_set_status_time(target, 2, 6000)
    end
    
    if (ticknumber % 50 ~= 0) then return end
    
    local victims = get_beings_in_circle(posX(target), posY(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 = being_type(victim)
        end
    until (i == TYPE_MONSTER or i == TYPE_CHARACTER or remaining == 0)

    if (victim == nil) then return end
    
    being_remove_status(target, 2)

    being_apply_status(victim, 2, 6000)
    being_say(victim, "Now I have the jumping bug")
end

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