package Ġworld . greg s . void ps . world . community . chat Ċ Ċ import Ġworld . greg s . void ps . cache . definition . data . Quick Chat Type Ċ import Ġworld . greg s . void ps . engine . client . message Ċ import Ġworld . greg s . void ps . engine . client . update . view . Viewport . Companion . VIEW _ RADIUS Ċ import Ġworld . greg s . void ps . engine . client . variable . getVar Ċ import Ġworld . greg s . void ps . engine . entity . character . player .* Ċ import Ġworld . greg s . void ps . engine . entity . character . player . chat .* Ċ import Ġworld . greg s . void ps . engine . entity . character . player . skill . Skill Ċ import Ġworld . greg s . void ps . engine . entity . definition . Enum Definitions Ċ import Ġworld . greg s . void ps . engine . entity . definition . Item Definitions Ċ import Ġworld . greg s . void ps . engine . entity . definition . Quick Chat Phrase Definitions Ċ import Ġworld . greg s . void ps . engine . entity . definition . Variable Definitions Ċ import Ġworld . greg s . void ps . engine . event . on Ċ import Ġworld . greg s . void ps . engine . utility . inject Ċ import Ġworld . greg s . void ps . network . encode . cl an Quick Chat Ċ import Ġworld . greg s . void ps . network . encode . private Quick Chat From Ċ import Ġworld . greg s . void ps . network . encode . private Quick Chat To Ċ import Ġworld . greg s . void ps . network . encode . public Quick Chat Ċ import Ġworld . greg s . void ps . world . community . cl an . cl an Ċ import Ġworld . greg s . void ps . world . community . ignore . ign ores Ċ Ċ val Ġplayers : ĠP layers Ġby Ġinject () Ċ val Ġphrases : ĠQuick Chat Phrase Definitions Ġby Ġinject () Ċ val Ġvariables : ĠVariable Definitions Ġby Ġinject () Ċ val Ġenums : ĠEnum Definitions Ġby Ġinject () Ċ val Ġitems : ĠItem Definitions Ġby Ġinject () Ċ Ċ on < Private Quick Chat > Ġ{ Ġplayer : ĠPlayer Ġ-> ĊĠĠĠ Ġval Ġtarget Ġ= Ġplayers . get ( friend ) ĊĠĠĠ Ġif Ġ( target Ġ== Ġnull Ġ|| Ġtarget . ign ores ( player )) Ġ{ ĊĠĠĠĠĠĠĠ Ġplayer . message (" Unable Ġto Ġsend Ġmessage Ġ- Ġplayer Ġunavailable .") ĊĠĠĠĠĠĠĠ Ġreturn @ on ĊĠĠĠ Ġ} ĊĠĠĠ Ġval Ġdefinition Ġ= Ġphrases . get ( file ) ĊĠĠĠ Ġval Ġdata Ġ= Ġgenerate Data ( player , Ġfile , Ġdata ) ĊĠĠĠ Ġplayer . client ?. private Quick Chat To ( target . name , Ġfile , Ġdata ) ĊĊĠĠĠ Ġval Ġtext Ġ= Ġdefinition . build String ( enums . definitions , Ġitems . definitions , Ġdata ) ĊĠĠĠ Ġval Ġmessage Ġ= ĠPrivate Quick ChatMessage ( player , Ġfile , Ġtext , Ġdata ) ĊĠĠĠ Ġtarget . events . emit ( message ) Ċ } Ċ Ċ on < Private Quick ChatMessage >({ Ġit . network ed Ġ}) Ġ{ Ġplayer : ĠPlayer Ġ-> ĊĠĠĠ Ġplayer . client ?. private Quick Chat From ( source . name , Ġsource . rights . ordinal , Ġfile , Ġdata ) Ċ } Ċ Ċ on < Public Quick Chat >({ Ġchat Type Ġ== Ġ 0 Ġ}) Ġ{ Ġplayer : ĠPlayer Ġ-> ĊĠĠĠ Ġval Ġdefinition Ġ= Ġphrases . get ( file ) ĊĠĠĠ Ġval Ġdata Ġ= Ġgenerate Data ( player , Ġfile , Ġdata ) ĊĠĠĠ Ġval Ġtext Ġ= Ġdefinition . build String ( enums . definitions , Ġitems . definitions , Ġdata ) ĊĠĠĠ Ġval Ġmessage Ġ= ĠPublic Quick ChatMessage ( player , Ġchat Type , Ġfile , Ġtext , Ġdata ) ĊĠĠĠ Ġplayers . filter Ġ{ Ġit . tile . within ( player . tile , ĠVIEW _ RADIUS ) Ġ&& Ġ! it . ign ores ( player ) Ġ}. forEach Ġ{ ĊĠĠĠĠĠĠĠ Ġit . events . emit ( message ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ on < Public Quick ChatMessage >({ Ġit . network ed Ġ}) Ġ{ Ġplayer : ĠPlayer Ġ-> ĊĠĠĠ Ġplayer . client ?. public Quick Chat ( source . index , Ġ 0 x 8 0 0 0 , Ġsource . rights . ordinal , Ġfile , Ġdata ) Ċ } Ċ Ċ on < Public Quick Chat >({ Ġchat Type Ġ== Ġ 1 Ġ}) Ġ{ Ġplayer : ĠPlayer Ġ-> ĊĠĠĠ Ġval Ġcl an Ġ= Ġplayer . cl an ĊĠĠĠ Ġif Ġ( cl an Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠ Ġplayer . message (" You Ġmust Ġbe Ġin Ġa Ġcl an Ġchat Ġto Ġtalk .", ĠChat Type . Cl an Chat ) ĊĠĠĠĠĠĠĠ Ġreturn @ on ĊĠĠĠ Ġ} ĊĠĠĠ Ġif Ġ(! cl an . has Rank ( player , Ġcl an . talk Rank ) Ġ|| Ġ! cl an . members . contains ( player )) Ġ{ ĊĠĠĠĠĠĠĠ Ġplayer . message (" You Ġare Ġnot Ġallowed Ġto Ġtalk Ġin Ġthis Ġcl an Ġchat Ġchannel .", ĠChat Type . Cl an Chat ) ĊĠĠĠĠĠĠĠ Ġreturn @ on ĊĠĠĠ Ġ} ĊĠĠĠ Ġval Ġdefinition Ġ= Ġphrases . get ( file ) ĊĠĠĠ Ġval Ġdata Ġ= Ġgenerate Data ( player , Ġfile , Ġdata ) ĊĠĠĠ Ġval Ġtext Ġ= Ġdefinition . build String ( enums . definitions , Ġitems . definitions , Ġdata ) ĊĠĠĠ Ġval Ġmessage Ġ= ĠCl an Quick ChatMessage ( player , Ġchat Type , Ġfile , Ġtext , Ġdata ) ĊĠĠĠ Ġcl an . members . filter Not Ġ{ Ġit . ign ores ( player ) Ġ}. forEach Ġ{ ĊĠĠĠĠĠĠĠ Ġit . events . emit ( message ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ on < Cl an Quick ChatMessage >({ Ġit . network ed Ġ}) Ġ{ Ġplayer : ĠPlayer Ġ-> ĊĠĠĠ Ġplayer . client ?. cl an Quick Chat ( source . name , Ġplayer . cl an !!. name , Ġsource . rights . ordinal , Ġfile , Ġdata ) Ċ } Ċ Ċ fun Ġgenerate Data ( player : ĠPlayer , Ġfile : ĠInt , Ġdata : ĠByteArray ): ĠByteArray Ġ{ ĊĠĠĠ Ġval Ġdefinition Ġ= Ġphrases . get ( file ) ĊĠĠĠ Ġval Ġtypes Ġ= Ġdefinition . types Ġ?: Ġreturn Ġdata ĊĠĠĠ Ġif Ġ( types . size Ġ== Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( definition . getType ( 0 )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠQuick Chat Type . Skill Level Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġskill Ġ= ĠSkill . all [ definition . ids !!. first (). first ()] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlevel Ġ= Ġplayer . levels . getMax ( skill ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġbyte ArrayOf ( level . to Byte ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠQuick Chat Type . Var p Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvariable Ġ= Ġdefinition . ids !!. first (). first () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġkey Ġ= Ġvariables . getKey ( variable ) !! ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġint ( player . getVar ( key )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠQuick Chat Type . Var bit Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvariable Ġ= Ġdefinition . ids !!. first (). first () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġkey Ġ= Ġvariables . getKey ( variable ) !! ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġint ( player . getVar ( key )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠQuick Chat Type . Combat Level Ġ-> Ġreturn Ġbyte ArrayOf ( player . com bat Level . to Byte ()) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠQuick Chat Type . S layer Assignment , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠQuick Chat Type . Cl an Rank , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠQuick Chat Type . Average Combat Level , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠQuick Chat Type . S oul W ars Ġ-> Ġreturn Ġbyte ArrayOf ( 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġreturn Ġdata ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlist Ġ= Ġmutable ListOf < Int >() ĊĠĠĠĠĠĠĠ Ġfor Ġ( index Ġin Ġtypes . indices ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( definition . getType ( index )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠQuick Chat Type . Skill Level , ĠQuick Chat Type . Skill Experience Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġskill Ġ= ĠSkill . all [ definition . ids ! ![ index ]. last ()] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlist . add ( player . levels . getMax ( skill )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġreturn Ġdata ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġlist . map Ġ{ Ġit . to Byte () Ġ}. toByteArray () ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun Ġint ( value : ĠInt ) Ġ= Ġbyte ArrayOf (( value Ġshr Ġ 2 4 ). to Byte (), Ġ( value Ġshr Ġ 1 6 ). to Byte (), Ġ( value Ġshr Ġ 8 ). to Byte (), Ġvalue . to Byte ())