diff options
Diffstat (limited to 'npc/008-1/soul-menhir.txt')
-rw-r--r-- | npc/008-1/soul-menhir.txt | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/npc/008-1/soul-menhir.txt b/npc/008-1/soul-menhir.txt new file mode 100644 index 00000000..dd1a6e38 --- /dev/null +++ b/npc/008-1/soul-menhir.txt @@ -0,0 +1,58 @@ +// Evol scripts. +// Author: +// gumi +// Description: +// place of power, mana refills faster when sitting nearby + +008-1,253,112,0 script Soul Menhir#hurnscald NPC_NO_SPRITE,{ + + end; + +OnRefill: + @menhir_lock = false; + getmapxy(.@map$, .@x, .@y, UNITTYPE_PC); + + if (.@map$ != .map$ || distance(.x, .y, .@x, .@y) > .refill_distance || + !(issit())) + end; + + heal(0, .refill_rate); + end; + + +OnTimer500: + .@count = getunits(BL_PC, .@units[0], false, .map$, (.x - .refill_distance), + (.y - .refill_distance), (.x + .refill_distance), (.y + .refill_distance)); + + for (.@i = 0; .@i < .@count; ++.@i) + { + if (.@units[.@i] < 0) continue; // pre-check, just in case + deltimer(.name$ + "::OnRefill", .@units[.@i]); + if (gettimer(TIMER_COUNT, .@units[.@i], .name$ + "::OnRefill") > 0 || + getvariableofpc(@menhir_lock, .@units[.@i])) { + continue; + } + set(getvariableofpc(@menhir_lock, .@units[.@i]), true); + addtimer(rand(.refill_timer), .name$ + "::OnRefill", .@units[.@i]); + } + + initnpctimer(); + end; + +OnInit: + + .refill_rate = 1; // number of SP to give every refill + .refill_distance = 7; // max distance + .refill_timer = 200; // wait rand(X) ms before refill + initnpctimer(); + +////////// UNFINISHED ////////// +//////////////////////////////// +// REMOVE THIS CODE WHEN THIS // +// NPC IS NO LONGER A WIP ////// +//////////////////////////////// +//if (!debug) disablenpc(.name$); +///////// UNFINISHED /////////// + + end; +} |