1: <?php
2:
3: namespace Budabot\User\Modules;
4:
5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18:
19: class WhoisOrgController {
20:
21: 22: 23: 24:
25: public $moduleName;
26:
27:
28: public $db;
29:
30:
31: public $chatBot;
32:
33:
34: public $text;
35:
36:
37: public $util;
38:
39:
40: public $playerManager;
41:
42:
43: public $guildManager;
44:
45: 46: 47: 48: 49:
50: public function whoisorgCommand($message, $channel, $sender, $sendto, $args) {
51: $rk_num = $this->chatBot->vars['dimension'];
52: if (count($args) == 3) {
53: $rk_num = $args[2];
54: }
55:
56: if (preg_match("/^[0-9]+$/", $args[1])) {
57: $org_id = $args[1];
58: } else {
59:
60: $name = ucfirst(strtolower($args[1]));
61: $whois = $this->playerManager->getByName($name, $rk_num);
62:
63: if ($whois === null) {
64: $msg = "Could not find character info for $name.";
65: $sendto->reply($msg);
66: return;
67: } else if ($whois->guild_id == 0) {
68: $msg = "Character <highlight>$name<end> does not seem to be in an org.";
69: $sendto->reply($msg);
70: return;
71: } else {
72: $org_id = $whois->guild_id;
73: }
74: }
75:
76: $msg = "Getting org info...";
77: $sendto->reply($msg);
78:
79: $org = $this->guildManager->getById($org_id, $rk_num);
80: if ($org === null) {
81: $msg = "Error in getting the org info. Either the org does not exist or AO's server was too slow to respond.";
82: $sendto->reply($msg);
83: return;
84: }
85:
86: $num_adv = 0;
87: $num_agent = 0;
88: $num_crat = 0;
89: $num_crat = 0;
90: $num_enf = 0;
91: $num_eng = 0;
92: $num_fix = 0;
93: $num_keep = 0;
94: $num_ma = 0;
95: $num_mp = 0;
96: $num_nt = 0;
97: $num_shade = 0;
98: $num_sol = 0;
99: $num_trad = 0;
100: $lvl_min = 220;
101: $lvl_max = 1;
102:
103: $num_members = count($org->members);
104: forEach ($org->members as $member) {
105: if ($member->guild_rank_id == 0) {
106: $president_name = $member->name;
107: $president_prof = $member->profession;
108: $president_lvl = $member->level;
109: $president_gender = $member->gender;
110: $president_breed = $member->breed;
111: $faction = $member->faction;
112: }
113: $lvl_tot += $member->level;
114:
115: if ($lvl_min > $member->level) {
116: $lvl_min = $member->level;
117: }
118:
119: if ($lvl_max < $member->level) {
120: $lvl_max = $member->level;
121: }
122:
123: switch ($member->profession) {
124: case "Adventurer":
125: $num_adv++;
126: break;
127: case "Agent":
128: $num_agent++;
129: break;
130: case "Bureaucrat":
131: $num_crat++;
132: break;
133: case "Doctor":
134: $num_doc++;
135: break;
136: case "Enforcer":
137: $num_enf++;
138: break;
139: case "Engineer":
140: $num_eng++;
141: break;
142: case "Fixer":
143: $num_fix++;
144: break;
145: case "Keeper":
146: $num_keep++;
147: break;
148: case "Martial Artist":
149: $num_ma++;
150: break;
151: case "Meta-Physicist":
152: $num_mp++;
153: break;
154: case "Nano-Technician":
155: $num_nt++;
156: break;
157: case "Shade":
158: $num_shade++;
159: break;
160: case "Soldier":
161: $num_sol++;
162: break;
163: case "Trader":
164: $num_trad++;
165: break;
166: }
167: }
168: $lvl_avg = round($lvl_tot/$num_members);
169:
170: $link = "<header2>General Info<end>\n";
171: $link .= "Faction: <highlight>$faction<end>\n";
172: $link .= "Lowest lvl: <highlight>$lvl_min<end>\n";
173: $link .= "Highest lvl: <highlight>$lvl_max<end>\n";
174: $link .= "Average lvl: <highlight>$lvl_avg<end>\n\n";
175:
176: $link .= "<header2>President<end>\n";
177: $link .= "Name: <highlight>$president_name<end>\n";
178: $link .= "Profession: <highlight>$president_prof<end>\n";
179: $link .= "Level: <highlight>$president_lvl<end>\n";
180: $link .= "Gender: <highlight>$president_gender<end>\n";
181: $link .= "Breed: <highlight>$president_breed<end>\n\n";
182:
183: $link .= "<header2>Members<end> ($num_members)\n";
184: $link .= "Adventurer: <highlight>$num_adv<end> (".round(($num_adv*100)/$num_members, 1)."%)\n";
185: $link .= "Agents: <highlight>$num_agent<end> (".round(($num_agent*100)/$num_members, 1)."%)\n";
186: $link .= "Bureaucrats: <highlight>$num_crat<end> (".round(($num_crat*100)/$num_members, 1)."%)\n";
187: $link .= "Doctors: <highlight>$num_doc<end> (".round(($num_doc*100)/$num_members, 1)."%)\n";
188: $link .= "Enforcers: <highlight>$num_enf<end> (".round(($num_enf*100)/$num_members, 1)."%)\n";
189: $link .= "Engineers: <highlight>$num_eng<end> (".round(($num_eng*100)/$num_members, 1)."%)\n";
190: $link .= "Fixers: <highlight>$num_fix<end> (".round(($num_fix*100)/$num_members, 1)."%)\n";
191: $link .= "Keepers: <highlight>$num_keep<end> (".round(($num_keep*100)/$num_members, 1)."%)\n";
192: $link .= "Martial Artists: <highlight>$num_ma<end> (".round(($num_ma*100)/$num_members, 1)."%)\n";
193: $link .= "Meta-Physicists: <highlight>$num_mp<end> (".round(($num_mp*100)/$num_members, 1)."%)\n";
194: $link .= "Nano-Technicians: <highlight>$num_nt<end> (".round(($num_nt*100)/$num_members, 1)."%)\n";
195: $link .= "Shades: <highlight>$num_shade<end> (".round(($num_shade*100)/$num_members, 1)."%)\n";
196: $link .= "Soldiers: <highlight>$num_sol<end> (".round(($num_sol*100)/$num_members, 1)."%)\n";
197: $link .= "Traders: <highlight>$num_trad<end> (".round(($num_trad*100)/$num_members, 1)."%)\n";
198: $msg = $this->text->makeBlob("Org Info for $org->orgname", $link);
199:
200: $sendto->reply($msg);
201: }
202: }
203:
204: