diff options
author | Jesusaves <cpntb1@ymail.com> | 2021-07-07 20:36:00 -0300 |
---|---|---|
committer | Jesusaves <cpntb1@ymail.com> | 2021-07-07 20:36:00 -0300 |
commit | 6967b9e0b63d19141d4f59b7933a960ac81916d0 (patch) | |
tree | 8ecd9cd2461f3598cb7faece71eb77162aa4ef2a /npc/functions/filters.txt | |
parent | 9877fd4ad81120af8e63e96d5d429092014dc017 (diff) | |
parent | 046c659193e1ca8bd13478678d1277df8bf9395c (diff) | |
download | serverdata-6967b9e0b63d19141d4f59b7933a960ac81916d0.tar.gz serverdata-6967b9e0b63d19141d4f59b7933a960ac81916d0.tar.bz2 serverdata-6967b9e0b63d19141d4f59b7933a960ac81916d0.tar.xz serverdata-6967b9e0b63d19141d4f59b7933a960ac81916d0.zip |
Merge branch 'master' into legacy
Override all files with 'master' version.
This version is meant to preserve git history as requested by bjorn.
Diffstat (limited to 'npc/functions/filters.txt')
-rw-r--r-- | npc/functions/filters.txt | 132 |
1 files changed, 132 insertions, 0 deletions
diff --git a/npc/functions/filters.txt b/npc/functions/filters.txt new file mode 100644 index 00000000..91e536dc --- /dev/null +++ b/npc/functions/filters.txt @@ -0,0 +1,132 @@ +// TMW2 scripts. +// Authors: +// Jesusalva +// Description: +// Several filters + +// filter_always( id ) +function script filter_always { + return true; +} + +// filter_onlyme( id ) +function script filter_onlyme { + return (getarg(0) == getcharid(3)); +} + +// filter_notme( id ) +function script filter_notme { + return (getarg(0) != getcharid(3)); +} + +// filter_sameguild( id ) +function script filter_sameguild { + if (getarg(0) == getcharid(3)) + return true; + if (getcharid(2) < 1) + return false; + return (strcharinfo(2, "~!<mk>@tmw2.org", getarg(0)) == strcharinfo(2)); +} + +// filter_sameguildnotyou( id ) +function script filter_sameguildnotyou { + if (getcharid(2) < 1) + return false; + if (getarg(0) == getcharid(3)) + return false; + return (strcharinfo(2, "~!<mk>@tmw2.org", getarg(0)) == strcharinfo(2)); +} + +// filter_sameparty( id ) +function script filter_sameparty { + if (getarg(0) == getcharid(3)) + return true; + if (getcharid(1) < 1 && getarg(0) != getcharid(3)) + return false; + return (strcharinfo(1, "~!<mk>@tmw2.org", getarg(0)) == strcharinfo(1)); +} + +// filter_sameguildorparty( id ) +function script filter_sameguildorparty { + if (getarg(0) == getcharid(3)) + return true; + if (getcharid(2) < 1 && getcharid(1) < 1) + return false; + .@party=(strcharinfo(1, "~!<mk>@tmw2.org", getarg(0)) == strcharinfo(1)); + .@guild=(strcharinfo(2, "~!<mk>@tmw2.org", getarg(0)) == strcharinfo(2)); + return ((getcharid(1) > 0 && .@party) || (getcharid(2) > 0 && .@guild)); +} + +// filter_sameguildorpartynotyou( id ) +function script filter_sameguildorpartynotyou { + if (getarg(0) == getcharid(3)) + return false; + if (getcharid(2) < 1 && getcharid(1) < 1) + return false; + .@party=(strcharinfo(1, "~!<mk>@tmw2.org", getarg(0)) == strcharinfo(1)); + .@guild=(strcharinfo(2, "~!<mk>@tmw2.org", getarg(0)) == strcharinfo(2)); + return ((getcharid(1) > 0 && .@party) || (getcharid(2) > 0 && .@guild)); +} + +// filter_hostile( id ) +function script filter_hostile { + //.@type=getunitdata(getarg(0), UDT_TYPE); + .@type=getunittype(getarg(0)); + .@chkid=getarg(0); + + // Players outside PVP + if (.@type == UNITTYPE_PC) { + getmapxy(.@m$, .@x, .@y, .@type, .@chkid); + if (!ispvpmap(.@m$)) + return false; + // FIXME: We already have !(filter_sameguildorparty()) + // We might be over-processing this + // Honor party flag + if (!getmapflag(.@mapa$, mf_pvp_noparty) && + getcharid(1) == getcharid(1, strcharinfo(0, "", .@chkid))) + return false; + // Honor guild flag + if (!getmapflag(.@mapa$, mf_pvp_noguild) && + getcharid(2) == getcharid(2, strcharinfo(0, "", .@chkid))) + return false; + } + + // Monsters + if (.@type == UNITTYPE_MOB) + return true; + + // NPCs + if (.@type == UNITTYPE_NPC) + return false; + + // Homunculus + if (.@type == UNITTYPE_HOM) + .@chkid=charid2rid(getunitdata(getarg(0), UDT_MASTERCID)); + + // Pets + if (.@type == UNITTYPE_PET) + .@chkid=getunitdata(getarg(0), UDT_MASTERAID); + + // Mercenaries + if (.@type == UNITTYPE_MER) + .@chkid=charid2rid(getunitdata(getarg(0), UDT_MASTERCID)); + + // Elementals + if (.@type == UNITTYPE_ELEM) + .@chkid=charid2rid(getunitdata(getarg(0), UDT_MASTERCID)); + + //debugmes "filter_hostile: Filtering %d (original %d) (BL %d)", .@chkid, getarg(0), .@type; + // Players (and slaves) + return !(filter_sameguildorparty(.@chkid)); +} + +// filter_friendly( id ) +function script filter_friendly { + return !(filter_hostile(getarg(0))); +} + +// filter_notboss( id ) +function script filter_notboss { + return (!(getunitdata(getarg(0), UDT_MODE) & MD_BOSS)); +} + |