From 9812a14ced434f8540b940f5da14e7b743088ed1 Mon Sep 17 00:00:00 2001 From: Jesusaves Date: Wed, 22 Jan 2020 23:10:01 -0300 Subject: Small sketch of PvP Honor System framework --- npc/functions/honor.txt | 60 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 npc/functions/honor.txt (limited to 'npc/functions/honor.txt') diff --git a/npc/functions/honor.txt b/npc/functions/honor.txt new file mode 100644 index 000000000..e09f6b02f --- /dev/null +++ b/npc/functions/honor.txt @@ -0,0 +1,60 @@ +// TMW2 Script +// Author: +// Jesusalva +// Description: +// PvP Honor Rank system + +// Numerical representation of player strength +// get_BR( getcharid(3) ) +function script get_BR { + .@oid=getcharid(3); + .@rid=getarg(0, .@oid); + .@br=0; + + // attachrid() and detachrid() + // readbattleparam(.@rid) + // Load + if (attachrid(.@rid)) { + .@br+=BaseLevel; + } else { + Exception("GET_BR INVALID RID "+.@rid, RB_DEBUGMES|RB_IRCBROADCAST); + } + + // Restore + detachrid(); + if (!attachrid(.@oid)) + Exception("::FATAL :: GET_BR INVALID OID "+.@oid, RB_DEBUGMES|RB_IRCBROADCAST|RB_ISFATAL); + + return .@br; +} + +// Calculate the Honor Points which are due +// calc_HR( get_BR(getcharid(3)), get_BR(killedrid) ) +function script calc_HR { + .@atk_br=getarg(0); + .@def_br=getarg(1); + .@cbase=10000; + + // Dishonorable + if (.@atk_br > .@def_br) { + .@overpower=.@atk_br*.@cbase/.@def_br; + // Honorable + } else if (.@def_br > .@atk_br) { + .@overpower=.@atk_br*.@cbase/.@def_br; + // Neutral + } else { + .@overpower=0; + } + + return 0; +} + +// getvariableofpc(HONOR, .@rid, 0) < 0 → determine if other player is bandit +// is_bandit( account id ) +function script is_bandit { + .@oid=getcharid(3); + .@rid=getarg(0, .@oid); + + return getvariableofpc(HONOR, .@rid, 0) < 0; +} + -- cgit v1.2.3-60-g2f50