diff options
author | Fedja Beader <fedja@protonmail.ch> | 2025-02-08 13:23:05 +0100 |
---|---|---|
committer | Jesusalva Jesusalva <jesusalva@tmw2.org> | 2025-02-12 01:32:35 +0000 |
commit | ac5c7bea20f59543f184610c7aedbb8f3ccdae31 (patch) | |
tree | 8803f5baddf640fcf7674a5a2f9eddf884513454 | |
parent | 96a53614c442b393ea854aab3195a938a92504fe (diff) | |
download | serverdata-ac5c7bea20f59543f184610c7aedbb8f3ccdae31.tar.gz serverdata-ac5c7bea20f59543f184610c7aedbb8f3ccdae31.tar.bz2 serverdata-ac5c7bea20f59543f184610c7aedbb8f3ccdae31.tar.xz serverdata-ac5c7bea20f59543f184610c7aedbb8f3ccdae31.zip |
Optimise for reading, not writing
-rw-r--r-- | npc/config/magic.txt | 56 |
1 files changed, 29 insertions, 27 deletions
diff --git a/npc/config/magic.txt b/npc/config/magic.txt index d59f1d0b8..ca9def074 100644 --- a/npc/config/magic.txt +++ b/npc/config/magic.txt @@ -157,25 +157,27 @@ function script SummonMagic { // Valid BL: BL_MOB | BL_PC | BL_HOM | BL_MER // Do not use: NPC, PET, ELEM function script rectharm { - .@t=getarg(0); - .@rx=getarg(1); - .@ry=getarg(2); - .@d=getarg(3); - .@h=getarg(4, HARM_MISC); - .@e=getarg(5, Ele_Neutral); - .@f$=getarg(6, "filter_hostile"); - .@b=getarg(7, BL_PC | BL_MOB | BL_MER | BL_HOM); - .@caster=getarg(8, .@t); - - getmapxy(.@m$, .@x, .@y, getunittype(.@t), .@t); - - .@c=getunits(.@b, .@mbs, false, .@m$, .@x-.@rx, .@y-.@ry, .@x+.@rx, .@y+.@ry); - for (.@i = 0; .@i < .@c; .@i++) { + .@target = getarg(0); + .@range_x = getarg(1); + .@range_y = getarg(2); + .@damage = getarg(3); + .@harm_type = getarg(4, HARM_MISC); + .@element = getarg(5, Ele_Neutral); + .@filter$ = getarg(6, "filter_hostile"); + .@blocks = getarg(7, BL_PC | BL_MOB | BL_MER | BL_HOM); + .@caster = getarg(8, .@t); + + getmapxy(.@map$, .@x, .@y, getunittype(.@target), .@target); + + .@count = getunits(.@blocks, .@units, false, .@map$, + .@x-.@range_x, .@y-.@range_y, .@x+.@range_x, .@y+.@range_y); + + for (.@i = 0; .@i < .@count; .@i++) { // Filtering - if (!callfunc(.@f$, .@mbs[.@i])) + if (!callfunc(.@filter$, .@units[.@i])) continue; - harm(.@mbs[.@i], .@d, .@h, .@e, .@caster); - specialeffect(FX_ATTACK, AREA, .@mbs[.@i]); + harm(.@units[.@i], .@damage, .@harm_type, .@element, .@caster); + specialeffect(FX_ATTACK, AREA, .@units[.@i]); // TODO: Handle MobPt to don't overload timer system? } return; @@ -185,16 +187,16 @@ function script rectharm { // areaharm(target, range, DMG, {type, element, filter, bl, caster}) // Same as rectharm() but using a square instead of two lengths for a rectangle function script areaharm { - .@t=getarg(0); - .@r=getarg(1); - .@d=getarg(2); - .@h=getarg(3, HARM_MISC); - .@e=getarg(4, Ele_Neutral); - .@f$=getarg(5, "filter_hostile"); - .@b=getarg(6, BL_PC | BL_MOB | BL_MER | BL_HOM); - .@caster=getarg(7, .@t); - - rectharm(.@t, .@r, .@r, .@d, .@h, .@e, .@f$, .@b, .@caster); + .@target = getarg(0); + .@range = getarg(1); + .@damage = getarg(2); + .@harm_type = getarg(3, HARM_MISC); + .@element = getarg(4, Ele_Neutral); + .@filter$ = getarg(5, "filter_hostile"); + .@blocks = getarg(6, BL_PC | BL_MOB | BL_MER | BL_HOM); + .@caster = getarg(7, .@target); + + rectharm(.@target, .@range, .@range, .@damage, .@harm_type, .@element, .@filter$, .@blocks, .@caster); return; } |