Crossfire JXClient, Trunk
AbstractScriptProcess.java
Go to the documentation of this file.
1 /*
2  * This file is part of JXClient, the Fullscreen Java Crossfire Client.
3  *
4  * JXClient is free software; you can redistribute it and/or modify
5  * it under the terms of the GNU General Public License as published by
6  * the Free Software Foundation; either version 2 of the License, or
7  * (at your option) any later version.
8  *
9  * JXClient is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12  * GNU General Public License for more details.
13  *
14  * You should have received a copy of the GNU General Public License
15  * along with JXClient; if not, write to the Free Software
16  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
17  *
18  * Copyright (C) 2005-2008 Yann Chachkoff
19  * Copyright (C) 2006-2017,2019-2023 Andreas Kirschbaum
20  * Copyright (C) 2010-2012,2014-2018,2020-2023 Nicolas Weeger
21  */
22 
23 package com.realtime.crossfire.jxclient.scripts;
24 
43 import java.io.IOException;
44 import java.nio.ByteBuffer;
45 import java.util.regex.Matcher;
46 import java.util.regex.Pattern;
47 import org.jetbrains.annotations.NotNull;
48 import org.jetbrains.annotations.Nullable;
49 
55 public abstract class AbstractScriptProcess implements Runnable, ScriptProcess {
56 
61  @NotNull
62  private static final Pattern PATTERN_ISSUE = Pattern.compile("(-?[0-9]+) +(-?[0-9]+) +(.+)");
63 
67  private final int scriptId;
68 
72  @NotNull
73  private final String filename;
74 
78  @NotNull
79  private final CommandQueue commandQueue;
80 
84  @NotNull
86 
90  @NotNull
91  private final Stats stats;
92 
96  @NotNull
97  private final FloorView floorView;
98 
102  @NotNull
103  private final ItemSet itemSet;
104 
108  @NotNull
110 
114  @NotNull
116 
120  @NotNull
121  private final SkillSet skillSet;
122 
126  @NotNull
128 
132  @NotNull
134 
138  private boolean isMonitoring;
139 
143  private int posX;
144 
148  private int posY;
149 
154  @NotNull
156 
157  @Override
158  public void connecting() {
159  // ignore
160  }
161 
162  @Override
163  public void connected() {
164  // ignore
165  }
166 
167  @Override
168  public void packetReceived(@NotNull final ByteBuffer packet) {
169  // ignore
170  }
171 
172  @Override
173  public void packetSent(@NotNull final ClientSocketMonitorCommand monitor) {
174  commandSent(monitor.getMonitorCommand());
175  }
176 
177  @Override
178  public void disconnected(@NotNull final String reason) {
179  // ignore
180  }
181 
182  };
183 
197  protected AbstractScriptProcess(final int scriptId, @NotNull final String filename, @NotNull final CommandQueue commandQueue, @NotNull final CrossfireServerConnection crossfireServerConnection, @NotNull final Stats stats, @NotNull final FloorView floorView, @NotNull final ItemSet itemSet, @NotNull final SpellsManager spellsManager, @NotNull final MapUpdaterState mapUpdaterState, @NotNull final SkillSet skillSet) {
198  this.scriptId = scriptId;
199  this.filename = filename;
200  this.commandQueue = commandQueue;
201  this.crossfireServerConnection = crossfireServerConnection;
202  this.stats = stats;
203  this.floorView = floorView;
204  this.itemSet = itemSet;
205  this.spellsManager = spellsManager;
206  this.mapUpdaterState = mapUpdaterState;
207  this.skillSet = skillSet;
209  }
210 
211  @Override
212  public int getScriptId() {
213  return scriptId;
214  }
215 
216  @NotNull
217  @Override
218  public String getFilename() {
219  return filename;
220  }
221 
222  @Override
223  public void run() {
224  @Nullable String result = "unexpected";
225  try {
226  try {
228  try {
230  try {
231  while (true) {
232  final String line = readFromScript();
233  if (line == null) {
234  break;
235  }
236 
237  runScriptCommand(line);
238  }
239  result = waitForTermination();
240  } finally {
242  }
243  } finally {
245  }
246  } catch (final IOException ex) {
247  result = ex.getMessage();
248  }
249  } finally {
250  if (isMonitoring) {
252  }
254  for (ScriptProcessListener scriptProcessListener : scriptProcessListeners) {
255  scriptProcessListener.scriptTerminated(result);
256  }
257  }
258  }
259 
265  private void mapScroll(final int dx, final int dy) {
266  final CfMap map = mapUpdaterState.getMap();
267  //noinspection SynchronizationOnLocalVariableOrMethodParameter
268  synchronized (map) {
269  posX += dx;
270  posY += dy;
271  }
272  }
273 
277  private void newmap() {
278  final CfMap map = mapUpdaterState.getMap();
279  //noinspection SynchronizationOnLocalVariableOrMethodParameter
280  synchronized (map) {
281  posX = 0;
282  posY = 0;
283  }
284  }
285 
291  @Nullable
292  protected abstract String readFromScript() throws IOException;
293 
299  @Nullable
300  protected abstract String waitForTermination();
301 
302  @Override
303  public void commandSent(@NotNull final String cmd) {
304  try {
305  writeToScript(cmd+"\n");
306  } catch (final IOException ex) {
307  reportError(ex.getMessage());
308  killScript();
309  }
310  }
311 
317  protected abstract void writeToScript(@NotNull final String data) throws IOException;
318 
324  private void commandSentItem(@NotNull final String cmd, @NotNull final CfItem item) {
325  int flags = 0;
326  if (item.isMagic()) {
327  flags |= 0x100;
328  }
329  if (item.isCursed()) {
330  flags |= 0x80;
331  }
332  if (item.isDamned()) {
333  flags |= 0x40;
334  }
335  if (item.isUnpaid()) {
336  flags |= 0x20;
337  }
338  if (item.isLocked()) {
339  flags |= 0x10;
340  }
341  if (item.isApplied()) {
342  flags |= 0x08;
343  }
344  if (item.isOpen()) {
345  flags |= 0x04;
346  }
347  final int nrof = Math.max(1, item.getNrOf());
348  final String name = nrof <= 1 ? item.getName() : nrof+" "+item.getName();
349  commandSent(cmd+" "+item.getTag()+" "+nrof+" "+Math.max(0, item.getWeight())+" "+flags+" "+item.getType()+" "+name);
350  }
351 
358  private void commandSentMap(@NotNull final CfMap map, final int x, final int y) {
359  final StringBuilder sb = new StringBuilder("request map ");
360  //noinspection SynchronizationOnLocalVariableOrMethodParameter
361  synchronized (map) {
362  final CfMapSquare square = map.getMapSquare(x, y);
363  sb.append(x+posX-mapUpdaterState.getMapWidth()/2);
364  sb.append(' ');
365  sb.append(y+posY-mapUpdaterState.getMapHeight()/2);
366  sb.append(' ');
367  sb.append(square.getDarkness());
368  sb.append(" n y n "); // XXX: smoothing
369  sb.append(square.isFogOfWar() ? 'y' : 'n');
370  sb.append(" smooth 0 0 0 heads"); // XXX: smoothing
371  for (int i = 0; i < 3; i++) {
372  sb.append(' ');
373  final Face face = square.getFace(i);
374  sb.append(face == CfMapSquare.DEFAULT_FACE ? 0 : face.getFaceNum());
375  }
376  sb.append(" tails");
377  for (int i = 0; i < 3; i++) {
378  final CfMapSquare headSquare = square.getHeadMapSquare(i);
379  if (headSquare == null) {
380  sb.append(" 0");
381  } else {
382  sb.append(' ');
383  final Face face = headSquare.getFace(i);
384  sb.append(face == CfMapSquare.DEFAULT_FACE ? 0 : face.getFaceNum());
385  }
386  }
387  }
388  commandSent(sb.toString());
389  }
390 
391  @NotNull
392  @Override
393  public String toString() {
394  return scriptId+" "+filename;
395  }
396 
401  private void cmdRequest(@NotNull final String params) {
402  if (params.equals("player")) {
403  commandSent("request player "+itemSet.getPlayer().getTag()+" "+stats.getTitle());
404  } else if (params.equals("range")) {
405  commandSent("request range "+stats.getRange());
406  } else if (params.equals("weight")) {
408  } else if (params.equals("stat stats")) {
410  } else if (params.equals("stat stats_race")) {
412  } else if (params.equals("stat stats_base")) {
414  } else if (params.equals("stat stats_applied")) {
416  } else if (params.equals("stat cmbt")) {
418  } else if (params.equals("stat hp")) {
420  } else if (params.equals("stat xp")) {
421  final StringBuilder sb = new StringBuilder("request stat xp ");
422  sb.append(stats.getStat(Stats.CS_STAT_LEVEL));
423  sb.append(' ').append(stats.getExperience());
425  final Skill skill = skillSet.getSkill(i);
426  if (skill == null) {
427  sb.append(" 0 0");
428  } else {
429  sb.append(' ').append(skill.getLevel());
430  sb.append(' ').append(skill.getExperience());
431  }
432  }
433  commandSent(sb.toString());
434  } else if (params.equals("stat resists")) {
435  final StringBuilder sb = new StringBuilder("request stat resists");
436  for (int i = Stats.CS_STAT_RESIST_START; i <= Stats.CS_STAT_RESIST_END; i++) {
437  sb.append(' ');
438  sb.append(stats.getStat(i));
439  }
440  // add dummy values for GTK client compatibility
441  for (int i = Stats.CS_STAT_RESIST_END+1-Stats.CS_STAT_RESIST_START; i < 30; i++) {
442  sb.append(" 0");
443  }
444  commandSent(sb.toString());
445  } else if (params.equals("stat paths")) {
447  } else if (params.equals("flags")) {
448  commandSent("request flags "+stats.getStat(Stats.CS_STAT_FLAGS)+" "+(commandQueue.checkFire() ? "1" : "0")+" "+(commandQueue.checkRun() ? "1" : "0")+" 0");
449  } else if (params.equals("items inv")) {
450  for (CfItem item : itemSet.getPlayerInventory()) {
451  commandSentItem("request items inv", item);
452  }
453  commandSent("request items inv end");
454  } else if (params.equals("items actv")) {
455  for (CfItem item : itemSet.getPlayerInventory()) {
456  if (item.isApplied()) {
457  commandSentItem("request items actv", item);
458  }
459  }
460  commandSent("request items actv end");
461  } else if (params.equals("items on")) {
462  for (CfItem item : itemSet.getItemsByLocation(0)) {
463  commandSentItem("request items on", item);
464  }
465  commandSent("request items on end");
466  } else if (params.equals("items cont")) {
467  final int containerTag = floorView.getCurrentFloorTag();
468  if (containerTag != 0) {
469  for (CfItem item : itemSet.getItemsByLocation(containerTag)) {
470  commandSentItem("request items cont", item);
471  }
472  }
473  commandSent("request items cont end");
474  } else if (params.equals("map pos")) {
475  final CfMap map = mapUpdaterState.getMap();
476  final int x;
477  final int y;
478  //noinspection SynchronizationOnLocalVariableOrMethodParameter
479  synchronized (map) {
480  x = posX;
481  y = posY;
482  }
483  commandSent("request map pos "+x+" "+y);
484  } else if (params.equals("map near")) {
485  final CfMap map = mapUpdaterState.getMap();
486  final int centerX = mapUpdaterState.getMapWidth()/2;
487  final int centerY = mapUpdaterState.getMapHeight()/2;
488  for (int y = -1; y <= +1; y++) {
489  for (int x = -1; x <= +1; x++) {
490  commandSentMap(map, centerX+x, centerY+y);
491  }
492  }
493  } else if (params.equals("map all")) {
494  final CfMap map = mapUpdaterState.getMap();
495  final int width = mapUpdaterState.getMapWidth()/2;
496  final int height = mapUpdaterState.getMapHeight()/2;
497  for (int y = 0; y < height; y++) {
498  for (int x = 0; x < width; x++) {
499  commandSentMap(map, x, y);
500  }
501  }
502  } else if (params.startsWith("map ")) {
503  final String[] tmp = params.split(" +");
504  if (tmp.length != 3) {
505  reportError("syntax error: request "+params);
506  return;
507  }
508 
509  final int x;
510  try {
511  x = Integer.parseInt(tmp[1]);
512  } catch (final NumberFormatException ignored) {
513  reportError("syntax error: request "+params);
514  return;
515  }
516 
517  final int y;
518  try {
519  y = Integer.parseInt(tmp[2]);
520  } catch (final NumberFormatException ignored) {
521  reportError("syntax error: request "+params);
522  return;
523  }
524 
526  } else if (params.equals("skills")) {
528  final Object skill = skillSet.getSkill(i);
529  if (skill != null) {
530  commandSent("request skills "+i+" "+skill);
531  }
532  }
533  commandSent("request skills end");
534  } else if (params.equals("spells")) {
535  for (Spell spell : spellsManager.getAllSpells()) {
536  commandSent("request spells "+spell.getTag()+" "+spell.getLevel()+" "+spell.getMana()+" "+spell.getGrace()+" "+spell.getSkill()+" "+spell.getPath()+" "+spell.getCastingTime()+" "+spell.getDamage()+" "+spell.getName());
537  }
538  commandSent("request spells end");
539  } else {
540  reportError("syntax error: request "+params);
541  }
542  }
543 
548  private void cmdIssueMark(@NotNull final String params) {
549  final int tag;
550  try {
551  tag = Integer.parseInt(params);
552  } catch (final NumberFormatException ignored) {
553  reportError("syntax error: issue mark "+params);
554  return;
555  }
557  }
558 
563  private void cmdIssueLock(@NotNull final String params) {
564  final String[] tmp = params.split(" +", 2);
565  if (tmp.length != 2) {
566  reportError("syntax error: issue lock "+params);
567  return;
568  }
569  final int val;
570  final int tag;
571  try {
572  val = Integer.parseInt(tmp[0]);
573  tag = Integer.parseInt(tmp[1]);
574  } catch (final NumberFormatException ignored) {
575  reportError("syntax error: issue lock "+params);
576  return;
577  }
578  if (val < 0 || val > 1) {
579  reportError("syntax error: issue lock "+params);
580  return;
581  }
582  crossfireServerConnection.sendLock(val != 0, tag);
583  }
584 
592  private void cmdIssueMove(@NotNull final String params, final int destTag, @NotNull final String commandName) {
593  final String[] tmp = params.split(" +", 2);
594  if (tmp.length != 1 && tmp.length != 2) {
595  reportError("syntax error: issue "+commandName+" "+params);
596  return;
597  }
598  final int tag;
599  final int count;
600  try {
601  tag = Integer.parseInt(tmp[0]);
602  count = tmp.length < 2 ? 0 : Integer.parseInt(tmp[1]);
603  } catch (final NumberFormatException ignored) {
604  reportError("syntax error: issue "+commandName+" "+params);
605  return;
606  }
607  crossfireServerConnection.sendMove(destTag, tag, count);
608  }
609 
614  private void cmdIssueApply(@NotNull final String params) {
615  final int tag;
616  try {
617  tag = Integer.parseInt(params);
618  } catch (final NumberFormatException ignored) {
619  reportError("syntax error: issue apply "+params);
620  return;
621  }
623  }
624 
629  private void cmdIssue(@NotNull final String params) {
630  final Matcher matcher = PATTERN_ISSUE.matcher(params);
631  if (!matcher.matches()) {
632  commandQueue.sendRawString(params);
633  return;
634  }
635 
636  final int repeat;
637  final int tmp;
638  try {
639  repeat = Integer.parseInt(matcher.group(1));
640  tmp = Integer.parseInt(matcher.group(2));
641  } catch (final NumberFormatException ignored) {
642  reportError("syntax error: issue "+params);
643  return;
644  }
645  if (tmp < 0 || tmp > 1) {
646  reportError("syntax error: issue "+params);
647  return;
648  }
649  final boolean mustSend = tmp != 0;
650  final String command = matcher.group(3);
651  commandQueue.sendNcom(mustSend, repeat, command);
652  }
653 
658  private void cmdDraw(@NotNull final String params) {
659  final String[] pps = params.split(" +", 2);
660  if (pps.length != 2) {
661  reportError("syntax error: draw "+params);
662  return;
663  }
664  final int color;
665  try {
666  color = Integer.parseInt(pps[0]);
667  } catch (final NumberFormatException ignored) {
668  reportError("syntax error: draw "+params);
669  return;
670  }
671  crossfireServerConnection.drawInfo(pps[1], color);
672  }
673 
677  private void cmdMonitor() {
678  if (!isMonitoring) {
679  isMonitoring = true;
681  }
682  }
683 
687  private void cmdUnmonitor() {
688  if (isMonitoring) {
689  isMonitoring = false;
691  }
692  }
693 
698  private void runScriptCommand(@NotNull final String cmdLine) {
699  final String[] tmp = cmdLine.split(" +", 2);
700  switch (tmp[0]) {
701  case "watch":
702  if (tmp.length == 1) {
704  } else if (tmp[1].indexOf(' ') != -1) {
705  reportError("syntax error: "+cmdLine);
706  } else {
707  packetWatcher.addCommand(tmp[1]);
708  }
709  break;
710 
711  case "unwatch":
712  packetWatcher.removeCommand(tmp.length >= 2 ? tmp[1] : "");
713  break;
714 
715  case "request":
716  if (tmp.length == 2) {
717  cmdRequest(tmp[1]);
718  } else {
719  reportError("syntax error: "+cmdLine);
720  }
721  break;
722 
723  case "issue":
724  if (tmp.length == 2) {
725  final String tmp2 = tmp[1].split(" ", 2)[0];
726  if (tmp2.equalsIgnoreCase("mark")) {
727  cmdIssueMark(tmp[1].substring(5));
728  } else if (tmp2.equalsIgnoreCase("lock")) {
729  cmdIssueLock(tmp[1].substring(5));
730  } else if (tmp2.equalsIgnoreCase("take")) {
731  cmdIssueMove(tmp[1].substring(5), itemSet.getPlayer().getTag(), "take");
732  } else if (tmp2.equalsIgnoreCase("drop")) {
733  cmdIssueMove(tmp[1].substring(5), 0, "drop");
734  } else if (tmp2.equalsIgnoreCase("apply")) {
735  cmdIssueApply(tmp[1].substring(6));
736  } else {
737  cmdIssue(tmp[1]);
738  }
739  } else {
740  reportError("syntax error: "+cmdLine);
741  }
742  break;
743 
744  case "draw":
745  if (tmp.length == 2) {
746  cmdDraw(tmp[1]);
747  } else {
748  reportError("syntax error: "+cmdLine);
749  }
750  break;
751 
752  case "monitor":
753  if (tmp.length == 1) {
754  cmdMonitor();
755  } else {
756  reportError("The 'monitor' command does not take arguments.");
757  }
758  break;
759 
760  case "unmonitor":
761  if (tmp.length == 1) {
762  cmdUnmonitor();
763  } else {
764  reportError("The 'unmonitor' command does not take arguments.");
765  }
766  break;
767 
768  default:
769  reportError("unrecognized command from script: "+cmdLine);
770  break;
771  }
772  }
773 
778  private void reportError(@NotNull final String string) {
780  }
781 
782  @Override
783  public void addScriptProcessListener(@NotNull final ScriptProcessListener scriptProcessListener) {
784  scriptProcessListeners.add(scriptProcessListener);
785  }
786 
787  @Override
788  public int compareTo(@NotNull final ScriptProcess o) {
789  if (scriptId < o.getScriptId()) {
790  return -1;
791  }
792  if (scriptId > o.getScriptId()) {
793  return +1;
794  }
795  return 0;
796  }
797 
798  @Override
799  public int hashCode() {
800  return scriptId;
801  }
802 
803  @Override
804  public boolean equals(@Nullable final Object obj) {
805  if (!(obj instanceof ScriptProcess)) {
806  return false;
807  }
808 
809  final ScriptProcess scriptProcess = (ScriptProcess)obj;
810  return scriptProcess.getScriptId() == scriptId;
811  }
812 
813 }
com.realtime.crossfire.jxclient
com.realtime.crossfire.jxclient.scripts.AbstractScriptProcess.cmdIssueMove
void cmdIssueMove(@NotNull final String params, final int destTag, @NotNull final String commandName)
Definition: AbstractScriptProcess.java:592
com.realtime.crossfire.jxclient.server.server.ServerConnection.addClientSocketListener
void addClientSocketListener(@NotNull ClientSocketListener clientSocketListener)
com.realtime.crossfire.jxclient.server.server.ServerConnection.removeClientSocketListener
void removeClientSocketListener(@NotNull ClientSocketListener clientSocketListener)
com.realtime.crossfire.jxclient.scripts.AbstractScriptProcess.posX
int posX
Definition: AbstractScriptProcess.java:143
com.realtime.crossfire.jxclient.server.crossfire.CrossfireServerConnection.sendLock
void sendLock(boolean val, int tag)
com.realtime.crossfire.jxclient.scripts.PacketWatcher.removeCommand
void removeCommand(@NotNull final String command)
Definition: PacketWatcher.java:147
com.realtime.crossfire.jxclient.stats.Stats.getRange
String getRange()
Definition: Stats.java:837
com.realtime.crossfire.jxclient.server
com.realtime.crossfire.jxclient.stats.Stats.CS_STAT_LEVEL
static final int CS_STAT_LEVEL
Definition: Stats.java:109
com.realtime.crossfire.jxclient.stats.Stats.CS_NUM_SKILLS
static final int CS_NUM_SKILLS
Definition: Stats.java:475
com.realtime.crossfire.jxclient.scripts.ScriptProcessListener
Definition: ScriptProcessListener.java:32
com.realtime.crossfire.jxclient.server.crossfire.CrossfireServerConnection.sendMark
void sendMark(int tag)
com.realtime.crossfire.jxclient.stats.Stats.CS_STAT_BASE_POW
static final int CS_STAT_BASE_POW
Definition: Stats.java:280
com.realtime.crossfire.jxclient.scripts.AbstractScriptProcess.compareTo
int compareTo(@NotNull final ScriptProcess o)
Definition: AbstractScriptProcess.java:788
com.realtime.crossfire.jxclient.scripts.AbstractScriptProcess.isMonitoring
boolean isMonitoring
Definition: AbstractScriptProcess.java:138
com.realtime.crossfire.jxclient.stats.Stats.CS_STAT_RACE_WIS
static final int CS_STAT_RACE_WIS
Definition: Stats.java:225
com.realtime.crossfire.jxclient.map
Definition: CfMap.java:23
com.realtime.crossfire.jxclient.stats.Stats.CS_STAT_WEIGHT_LIM
static final int CS_STAT_WEIGHT_LIM
Definition: Stats.java:185
com.realtime.crossfire.jxclient.items.FloorView
Definition: FloorView.java:36
com.realtime.crossfire.jxclient.scripts.AbstractScriptProcess.commandQueue
final CommandQueue commandQueue
Definition: AbstractScriptProcess.java:79
com.realtime.crossfire.jxclient.scripts.AbstractScriptProcess.writeToScript
abstract void writeToScript(@NotNull final String data)
com.realtime.crossfire.jxclient.scripts.AbstractScriptProcess.filename
final String filename
Definition: AbstractScriptProcess.java:73
com.realtime.crossfire.jxclient.map.MapUpdaterState.removeCrossfireMapScrollListener
void removeCrossfireMapScrollListener(@NotNull final MapScrollListener listener)
Definition: MapUpdaterState.java:197
com.realtime.crossfire.jxclient.stats.Stats.CS_STAT_RESIST_START
static final int CS_STAT_RESIST_START
Definition: Stats.java:351
com.realtime.crossfire.jxclient.items.ItemSet.getItemsByLocation
List< CfItem > getItemsByLocation(final int location)
Definition: ItemSet.java:132
com.realtime.crossfire.jxclient.stats.Stats.CS_STAT_APPLIED_STR
static final int CS_STAT_APPLIED_STR
Definition: Stats.java:285
com.realtime.crossfire.jxclient.stats.Stats.CS_STAT_BASE_DEX
static final int CS_STAT_BASE_DEX
Definition: Stats.java:265
com.realtime.crossfire.jxclient.stats.Stats.CS_STAT_CHA
static final int CS_STAT_CHA
Definition: Stats.java:94
com.realtime.crossfire.jxclient.server.crossfire.CrossfireServerConnection.sendMove
void sendMove(int to, int tag, int nrof)
com.realtime.crossfire.jxclient.map.MapUpdaterState.addCrossfireNewmapListener
void addCrossfireNewmapListener(@NotNull final NewmapListener listener)
Definition: MapUpdaterState.java:173
com.realtime.crossfire.jxclient.stats.Stats.CS_STAT_BASE_WIS
static final int CS_STAT_BASE_WIS
Definition: Stats.java:260
com.realtime.crossfire.jxclient.scripts.AbstractScriptProcess.PATTERN_ISSUE
static final Pattern PATTERN_ISSUE
Definition: AbstractScriptProcess.java:62
com.realtime.crossfire.jxclient.scripts.AbstractScriptProcess.scriptId
final int scriptId
Definition: AbstractScriptProcess.java:67
com.realtime.crossfire.jxclient.scripts.AbstractScriptProcess.equals
boolean equals(@Nullable final Object obj)
Definition: AbstractScriptProcess.java:804
com.realtime.crossfire.jxclient.items.ItemSet
Definition: ItemSet.java:44
com.realtime.crossfire.jxclient.skills.Skill.getLevel
int getLevel()
Definition: Skill.java:107
com.realtime.crossfire.jxclient.server.socket.ClientSocketListener
Definition: ClientSocketListener.java:33
com.realtime.crossfire.jxclient.util.EventListenerList2
Definition: EventListenerList2.java:37
com.realtime.crossfire.jxclient.scripts.AbstractScriptProcess.cmdIssue
void cmdIssue(@NotNull final String params)
Definition: AbstractScriptProcess.java:629
com.realtime.crossfire.jxclient.map.CfMap
Definition: CfMap.java:46
com.realtime.crossfire.jxclient.skills.Skill
Definition: Skill.java:35
com.realtime.crossfire.jxclient.server.crossfire.CrossfireDrawinfoListener
Definition: CrossfireDrawinfoListener.java:33
com.realtime.crossfire.jxclient.stats.Stats
Definition: Stats.java:44
com.realtime.crossfire.jxclient.stats.Stats.CS_STAT_FOOD
static final int CS_STAT_FOOD
Definition: Stats.java:139
com.realtime.crossfire.jxclient.scripts.AbstractScriptProcess.crossfireServerConnection
final CrossfireServerConnection crossfireServerConnection
Definition: AbstractScriptProcess.java:85
com.realtime.crossfire.jxclient.faces
Definition: AbstractFaceQueue.java:23
com.realtime.crossfire.jxclient.map.MapUpdaterState.addCrossfireMapScrollListener
void addCrossfireMapScrollListener(@NotNull final MapScrollListener listener)
Definition: MapUpdaterState.java:189
com.realtime.crossfire.jxclient.stats.Stats.CS_STAT_APPLIED_DEX
static final int CS_STAT_APPLIED_DEX
Definition: Stats.java:300
com.realtime.crossfire.jxclient.map.CfMapSquare.getDarkness
int getDarkness()
Definition: CfMapSquare.java:207
com.realtime.crossfire.jxclient.scripts.AbstractScriptProcess.commandSent
void commandSent(@NotNull final String cmd)
Definition: AbstractScriptProcess.java:303
com.realtime.crossfire.jxclient.stats.Stats.CS_STAT_MAXGRACE
static final int CS_STAT_MAXGRACE
Definition: Stats.java:175
com.realtime.crossfire.jxclient.map.CfMapSquare.DEFAULT_FACE
static final Face DEFAULT_FACE
Definition: CfMapSquare.java:66
com.realtime.crossfire.jxclient.scripts.AbstractScriptProcess.commandSentItem
void commandSentItem(@NotNull final String cmd, @NotNull final CfItem item)
Definition: AbstractScriptProcess.java:324
com.realtime.crossfire.jxclient.scripts.AbstractScriptProcess.toString
String toString()
Definition: AbstractScriptProcess.java:393
com.realtime.crossfire.jxclient.scripts.AbstractScriptProcess.spellsManager
final SpellsManager spellsManager
Definition: AbstractScriptProcess.java:109
com.realtime.crossfire.jxclient.items.ItemSet.getPlayer
CfItem getPlayer()
Definition: ItemSet.java:272
com.realtime.crossfire.jxclient.stats.Stats.CS_STAT_SPELL_DENY
static final int CS_STAT_SPELL_DENY
Definition: Stats.java:210
com.realtime.crossfire.jxclient.stats.Stats.CS_STAT_STR
static final int CS_STAT_STR
Definition: Stats.java:69
com.realtime.crossfire.jxclient.scripts.AbstractScriptProcess.cmdRequest
void cmdRequest(@NotNull final String params)
Definition: AbstractScriptProcess.java:401
com.realtime.crossfire.jxclient.queue.CommandQueue.sendRawString
void sendRawString(@NotNull final String command)
Definition: CommandQueue.java:258
com.realtime.crossfire.jxclient.stats.Stats.CS_STAT_RACE_INT
static final int CS_STAT_RACE_INT
Definition: Stats.java:220
com.realtime.crossfire.jxclient.stats.Stats.CS_STAT_MAXHP
static final int CS_STAT_MAXHP
Definition: Stats.java:54
com.realtime.crossfire.jxclient.scripts.AbstractScriptProcess.posY
int posY
Definition: AbstractScriptProcess.java:148
com.realtime.crossfire.jxclient.stats.Stats.CS_STAT_SPELL_REPEL
static final int CS_STAT_SPELL_REPEL
Definition: Stats.java:205
com.realtime.crossfire.jxclient.scripts.AbstractScriptProcess.reportError
void reportError(@NotNull final String string)
Definition: AbstractScriptProcess.java:778
com.realtime.crossfire.jxclient.scripts.AbstractScriptProcess.runScriptCommand
void runScriptCommand(@NotNull final String cmdLine)
Definition: AbstractScriptProcess.java:698
com.realtime.crossfire.jxclient.stats.Stats.getStat
int getStat(final int statNo)
Definition: Stats.java:771
com.realtime.crossfire.jxclient.scripts.AbstractScriptProcess.getScriptId
int getScriptId()
Definition: AbstractScriptProcess.java:212
com.realtime.crossfire.jxclient.scripts.ScriptProcess.getScriptId
int getScriptId()
com.realtime.crossfire.jxclient.skills.Skill.getExperience
long getExperience()
Definition: Skill.java:99
com.realtime.crossfire.jxclient.scripts.PacketWatcher
Definition: PacketWatcher.java:38
com.realtime.crossfire.jxclient.stats.Stats.CS_STAT_APPLIED_CHA
static final int CS_STAT_APPLIED_CHA
Definition: Stats.java:310
com.realtime.crossfire.jxclient.scripts.AbstractScriptProcess.cmdDraw
void cmdDraw(@NotNull final String params)
Definition: AbstractScriptProcess.java:658
com.realtime.crossfire.jxclient.stats.Stats.CS_STAT_WC
static final int CS_STAT_WC
Definition: Stats.java:114
com.realtime.crossfire.jxclient.scripts.PacketWatcher.addCommand
void addCommand(@NotNull final String command)
Definition: PacketWatcher.java:137
com.realtime.crossfire.jxclient.scripts.AbstractScriptProcess.mapUpdaterState
final MapUpdaterState mapUpdaterState
Definition: AbstractScriptProcess.java:115
com.realtime.crossfire.jxclient.stats.Stats.CS_STAT_FLAGS
static final int CS_STAT_FLAGS
Definition: Stats.java:180
com.realtime.crossfire.jxclient.scripts.AbstractScriptProcess.addScriptProcessListener
void addScriptProcessListener(@NotNull final ScriptProcessListener scriptProcessListener)
Definition: AbstractScriptProcess.java:783
com.realtime.crossfire.jxclient.skills
Definition: Skill.java:23
com.realtime.crossfire.jxclient.spells.Spell
Definition: Spell.java:37
com.realtime.crossfire.jxclient.scripts.AbstractScriptProcess.itemSet
final ItemSet itemSet
Definition: AbstractScriptProcess.java:103
com.realtime.crossfire.jxclient.stats.Stats.CS_STAT_APPLIED_POW
static final int CS_STAT_APPLIED_POW
Definition: Stats.java:315
com.realtime.crossfire.jxclient.scripts.AbstractScriptProcess.readFromScript
abstract String readFromScript()
com.realtime.crossfire.jxclient.server.crossfire.CrossfireServerConnection
Definition: CrossfireServerConnection.java:37
com.realtime.crossfire.jxclient.stats.Stats.CS_STAT_AC
static final int CS_STAT_AC
Definition: Stats.java:119
com.realtime.crossfire.jxclient.map.MapUpdaterState
Definition: MapUpdaterState.java:49
com.realtime.crossfire.jxclient.scripts.AbstractScriptProcess.stats
final Stats stats
Definition: AbstractScriptProcess.java:91
com.realtime.crossfire.jxclient.map.MapUpdaterState.getMapHeight
int getMapHeight()
Definition: MapUpdaterState.java:424
com.realtime.crossfire.jxclient.server.crossfire.CrossfireServerConnection.sendApply
void sendApply(int tag)
com.realtime.crossfire.jxclient.stats.Stats.CS_STAT_RACE_DEX
static final int CS_STAT_RACE_DEX
Definition: Stats.java:230
com.realtime.crossfire.jxclient.spells.SpellsManager
Definition: SpellsManager.java:50
com.realtime.crossfire.jxclient.queue.CommandQueue
Definition: CommandQueue.java:38
com.realtime.crossfire.jxclient.server.crossfire.CrossfireServerConnection.drawInfo
void drawInfo(@NotNull String message, int color)
com.realtime.crossfire.jxclient.stats.Stats.CS_STAT_APPLIED_INT
static final int CS_STAT_APPLIED_INT
Definition: Stats.java:290
com.realtime.crossfire.jxclient.scripts.ScriptProcess.killScript
void killScript()
com.realtime.crossfire.jxclient.items.CfItem
Definition: CfItem.java:37
com.realtime.crossfire.jxclient.scripts.AbstractScriptProcess.cmdUnmonitor
void cmdUnmonitor()
Definition: AbstractScriptProcess.java:687
com.realtime.crossfire.jxclient.stats.Stats.CS_STAT_SPELL_ATTUNE
static final int CS_STAT_SPELL_ATTUNE
Definition: Stats.java:200
com.realtime.crossfire.jxclient.scripts.AbstractScriptProcess.cmdIssueLock
void cmdIssueLock(@NotNull final String params)
Definition: AbstractScriptProcess.java:563
com.realtime.crossfire.jxclient.scripts.AbstractScriptProcess.cmdMonitor
void cmdMonitor()
Definition: AbstractScriptProcess.java:677
com.realtime.crossfire.jxclient.stats.Stats.CS_STAT_BASE_CHA
static final int CS_STAT_BASE_CHA
Definition: Stats.java:275
com.realtime.crossfire.jxclient.items.CfItem.getWeight
int getWeight()
Definition: CfItem.java:295
com.realtime.crossfire.jxclient.map.CfMapSquare.getFace
Face getFace(final int layer)
Definition: CfMapSquare.java:278
com.realtime.crossfire.jxclient.stats.Stats.CS_STAT_RESIST_END
static final int CS_STAT_RESIST_END
Definition: Stats.java:356
com.realtime.crossfire.jxclient.queue.CommandQueue.checkRun
boolean checkRun()
Definition: CommandQueue.java:284
com.realtime.crossfire.jxclient.scripts.AbstractScriptProcess.clientSocketListener
final ClientSocketListener clientSocketListener
Definition: AbstractScriptProcess.java:155
com.realtime.crossfire.jxclient.util
Definition: Codec.java:23
com.realtime.crossfire.jxclient.skills.SkillSet.getSkill
Skill getSkill(final int id)
Definition: SkillSet.java:192
com.realtime.crossfire.jxclient.scripts.AbstractScriptProcess.mapScroll
void mapScroll(final int dx, final int dy)
Definition: AbstractScriptProcess.java:265
com.realtime.crossfire.jxclient.server.crossfire
Definition: AbstractCrossfireServerConnection.java:23
com.realtime.crossfire.jxclient.stats.Stats.CS_STAT_DEX
static final int CS_STAT_DEX
Definition: Stats.java:84
com.realtime.crossfire.jxclient.stats.Stats.CS_STAT_CON
static final int CS_STAT_CON
Definition: Stats.java:89
com.realtime.crossfire.jxclient.scripts.AbstractScriptProcess.scriptProcessListeners
final EventListenerList2< ScriptProcessListener > scriptProcessListeners
Definition: AbstractScriptProcess.java:127
com.realtime.crossfire.jxclient.stats.Stats.CS_STAT_BASE_CON
static final int CS_STAT_BASE_CON
Definition: Stats.java:270
com.realtime.crossfire.jxclient.stats.Stats.CS_STAT_BASE_STR
static final int CS_STAT_BASE_STR
Definition: Stats.java:250
com.realtime.crossfire.jxclient.map.CfMapSquare.getHeadMapSquare
CfMapSquare getHeadMapSquare(final int layer)
Definition: CfMapSquare.java:307
com.realtime.crossfire.jxclient.scripts.AbstractScriptProcess.AbstractScriptProcess
AbstractScriptProcess(final int scriptId, @NotNull final String filename, @NotNull final CommandQueue commandQueue, @NotNull final CrossfireServerConnection crossfireServerConnection, @NotNull final Stats stats, @NotNull final FloorView floorView, @NotNull final ItemSet itemSet, @NotNull final SpellsManager spellsManager, @NotNull final MapUpdaterState mapUpdaterState, @NotNull final SkillSet skillSet)
Definition: AbstractScriptProcess.java:197
com.realtime.crossfire.jxclient.queue
Definition: CommandQueue.java:23
com.realtime.crossfire.jxclient.scripts.AbstractScriptProcess.cmdIssueApply
void cmdIssueApply(@NotNull final String params)
Definition: AbstractScriptProcess.java:614
com.realtime.crossfire.jxclient.stats.Stats.CS_STAT_APPLIED_WIS
static final int CS_STAT_APPLIED_WIS
Definition: Stats.java:295
com.realtime.crossfire
com.realtime.crossfire.jxclient.scripts.ScriptProcess
Definition: ScriptProcess.java:31
com.realtime.crossfire.jxclient.stats.Stats.CS_STAT_RACE_STR
static final int CS_STAT_RACE_STR
Definition: Stats.java:215
com.realtime.crossfire.jxclient.stats.Stats.CS_STAT_HP
static final int CS_STAT_HP
Definition: Stats.java:49
com.realtime.crossfire.jxclient.scripts.AbstractScriptProcess.commandSentMap
void commandSentMap(@NotNull final CfMap map, final int x, final int y)
Definition: AbstractScriptProcess.java:358
com.realtime.crossfire.jxclient.items.CfItem.getTag
int getTag()
Definition: CfItem.java:287
com.realtime
com.realtime.crossfire.jxclient.scripts.AbstractScriptProcess.waitForTermination
abstract String waitForTermination()
com.realtime.crossfire.jxclient.stats.Stats.CS_STAT_DAM
static final int CS_STAT_DAM
Definition: Stats.java:124
com.realtime.crossfire.jxclient.stats.Stats.CS_STAT_POW
static final int CS_STAT_POW
Definition: Stats.java:165
com.realtime.crossfire.jxclient.queue.CommandQueue.sendNcom
void sendNcom(final boolean mustSend, @NotNull final String command)
Definition: CommandQueue.java:184
com.realtime.crossfire.jxclient.scripts.AbstractScriptProcess.skillSet
final SkillSet skillSet
Definition: AbstractScriptProcess.java:121
com.realtime.crossfire.jxclient.queue.CommandQueue.checkFire
boolean checkFire()
Definition: CommandQueue.java:294
com.realtime.crossfire.jxclient.server.socket
Definition: ClientSocket.java:23
com.realtime.crossfire.jxclient.stats.Stats.CS_STAT_INT
static final int CS_STAT_INT
Definition: Stats.java:74
com
com.realtime.crossfire.jxclient.stats.Stats.getExperience
long getExperience()
Definition: Stats.java:915
com.realtime.crossfire.jxclient.scripts.AbstractScriptProcess.cmdIssueMark
void cmdIssueMark(@NotNull final String params)
Definition: AbstractScriptProcess.java:548
com.realtime.crossfire.jxclient.faces.Face.getFaceNum
int getFaceNum()
Definition: Face.java:105
com.realtime.crossfire.jxclient.stats.Stats.CS_STAT_RACE_CHA
static final int CS_STAT_RACE_CHA
Definition: Stats.java:240
com.realtime.crossfire.jxclient.scripts.AbstractScriptProcess
Definition: AbstractScriptProcess.java:55
com.realtime.crossfire.jxclient.stats.Stats.CS_STAT_WIS
static final int CS_STAT_WIS
Definition: Stats.java:79
com.realtime.crossfire.jxclient.items
Definition: AbstractItemView.java:23
com.realtime.crossfire.jxclient.scripts.AbstractScriptProcess.hashCode
int hashCode()
Definition: AbstractScriptProcess.java:799
com.realtime.crossfire.jxclient.scripts.AbstractScriptProcess.floorView
final FloorView floorView
Definition: AbstractScriptProcess.java:97
com.realtime.crossfire.jxclient.stats.Stats.CS_STAT_GRACE
static final int CS_STAT_GRACE
Definition: Stats.java:170
com.realtime.crossfire.jxclient.stats.Stats.CS_STAT_SPEED
static final int CS_STAT_SPEED
Definition: Stats.java:134
com.realtime.crossfire.jxclient.scripts.AbstractScriptProcess.newmap
void newmap()
Definition: AbstractScriptProcess.java:277
com.realtime.crossfire.jxclient.scripts.AbstractScriptProcess.run
void run()
Definition: AbstractScriptProcess.java:223
com.realtime.crossfire.jxclient.map.CfMapSquare.isFogOfWar
boolean isFogOfWar()
Definition: CfMapSquare.java:322
com.realtime.crossfire.jxclient.scripts.AbstractScriptProcess.packetWatcher
final PacketWatcher packetWatcher
Definition: AbstractScriptProcess.java:133
com.realtime.crossfire.jxclient.map.MapUpdaterState.removeCrossfireNewmapListener
void removeCrossfireNewmapListener(@NotNull final NewmapListener listener)
Definition: MapUpdaterState.java:181
com.realtime.crossfire.jxclient.items.ItemSet.getPlayerInventory
Iterable< CfItem > getPlayerInventory()
Definition: ItemSet.java:301
com.realtime.crossfire.jxclient.stats.Stats.CS_STAT_RACE_CON
static final int CS_STAT_RACE_CON
Definition: Stats.java:235
com.realtime.crossfire.jxclient.stats.Stats.CS_STAT_BASE_INT
static final int CS_STAT_BASE_INT
Definition: Stats.java:255
com.realtime.crossfire.jxclient.skills.SkillSet
Definition: SkillSet.java:39
com.realtime.crossfire.jxclient.map.MapUpdaterState.getMapWidth
int getMapWidth()
Definition: MapUpdaterState.java:414
com.realtime.crossfire.jxclient.server.socket.ClientSocketMonitorCommand
Definition: ClientSocketMonitorCommand.java:8
com.realtime.crossfire.jxclient.stats.Stats.CS_STAT_SP
static final int CS_STAT_SP
Definition: Stats.java:59
com.realtime.crossfire.jxclient.stats.Stats.CS_STAT_RACE_POW
static final int CS_STAT_RACE_POW
Definition: Stats.java:245
com.realtime.crossfire.jxclient.spells.SpellsManager.getAllSpells
Collection< Spell > getAllSpells()
Definition: SpellsManager.java:334
com.realtime.crossfire.jxclient.stats.Stats.CS_STAT_APPLIED_CON
static final int CS_STAT_APPLIED_CON
Definition: Stats.java:305
com.realtime.crossfire.jxclient.faces.Face
Definition: Face.java:37
com.realtime.crossfire.jxclient.server.crossfire.CrossfireDrawinfoListener.NDI_RED
int NDI_RED
Definition: CrossfireDrawinfoListener.java:53
com.realtime.crossfire.jxclient.map.CfMapSquare
Definition: CfMapSquare.java:40
com.realtime.crossfire.jxclient.scripts.AbstractScriptProcess.getFilename
String getFilename()
Definition: AbstractScriptProcess.java:218
com.realtime.crossfire.jxclient.stats.Stats.CS_STAT_SKILLINFO
static final int CS_STAT_SKILLINFO
Definition: Stats.java:539
com.realtime.crossfire.jxclient.stats.Stats.CS_STAT_WEAP_SP
static final int CS_STAT_WEAP_SP
Definition: Stats.java:149
com.realtime.crossfire.jxclient.stats.Stats.getTitle
String getTitle()
Definition: Stats.java:827
com.realtime.crossfire.jxclient.map.MapUpdaterState.getMap
CfMap getMap()
Definition: MapUpdaterState.java:406
com.realtime.crossfire.jxclient.stats
Definition: ActiveSkillWatcher.java:23
com.realtime.crossfire.jxclient.spells
Definition: Spell.java:23
com.realtime.crossfire.jxclient.scripts.PacketWatcher.destroy
void destroy()
Definition: PacketWatcher.java:102
com.realtime.crossfire.jxclient.stats.Stats.CS_STAT_MAXSP
static final int CS_STAT_MAXSP
Definition: Stats.java:64
com.realtime.crossfire.jxclient.items.FloorView.getCurrentFloorTag
int getCurrentFloorTag()
Definition: FloorView.java:116