// TMW2 Script // Author: // Jesusalva // Description: // PvP Honor Rank system // Returns if a map is on PVP Mode or Not // ispvpmap( {mapid} ) function script ispvpmap { .@mapa$=getarg(0, getmapname()); return (getmapflag(.@mapa$, mf_pvp) || getmapflag(.@mapa$, mf_pvp_noparty) || getmapflag(.@mapa$, mf_pvpnoguild)); } // 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) // Or rather: battleparam() if (attachrid(.@rid)) { // 1 BR per allocated status point .@br+=battleparam(UDT_STR); .@br+=battleparam(UDT_AGI); .@br+=battleparam(UDT_VIT); .@br+=battleparam(UDT_DEX); .@br+=battleparam(UDT_INT); .@br+=battleparam(UDT_LUK); // 6 BR per level .@br+=BaseLevel*6; // 1 BR for 5 DMG points (average) .@br+=(battleparam(UDT_ATKMIN)+battleparam(UDT_ATKMAX))/5; .@br+=battleparam(UDT_MATKMAX)/5; // 8 BR for each attack range .@br+=battleparam(UDT_ATKRANGE)*8; // 1 BR for 10 DEF points .@br+=battleparam(UDT_DEF)/10; .@br+=battleparam(UDT_MDEF)/10; } 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=1000; .@maxop=300; // 30% // Calculate how much (%) you've used above needed .@overpower=.@atk_br*.@cbase/.@def_br; // Dishonorable: You used maxop above cbase // Maybe we should use level difference? // FIXME if (.@overpower > .@cbase+.@maxop) { .@honor=-(BaseLevel/4); } else { .@honor=BaseLevel/4; } return .@honor; } // 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; }