View Javadoc

1   
2               /**
3               IMPORTANT !!!
4   
5               DO NOT EDIT THIS FILE. IT IS GENERATED FROM approriate xml file in xmlresources/gbinfomessages BY
6               THE JavaClassesGenerator.xslt. MODIFY THESE FILES INSTEAD OF THIS ONE.
7   
8               IMPORTANT END !!!
9               */
10              package
11              cz.cuni.amis.pogamut.udk.communication.messages.gbinfomessages;
12  	    		import java.util.*;
13      import javax.vecmath.*;
14      import cz.cuni.amis.pogamut.base.communication.messages.*;
15      import cz.cuni.amis.pogamut.base.communication.worldview.*;
16      import cz.cuni.amis.pogamut.base.communication.worldview.event.*;
17      import cz.cuni.amis.pogamut.base.communication.worldview.object.*;
18      import cz.cuni.amis.pogamut.base.communication.translator.event.*;
19      import cz.cuni.amis.pogamut.base3d.worldview.object.*;
20      import cz.cuni.amis.pogamut.base3d.worldview.object.event.*;
21      import cz.cuni.amis.pogamut.unreal.communication.messages.UnrealId;
22      import cz.cuni.amis.pogamut.udk.communication.messages.*;
23      import cz.cuni.amis.pogamut.udk.communication.worldview.objects.*;
24      import cz.cuni.amis.pogamut.udk.communication.translator.itemdescriptor.*;
25      import cz.cuni.amis.pogamut.udk.communication.messages.ItemType.Category;
26      import cz.cuni.amis.utils.exception.*;
27      import cz.cuni.amis.pogamut.base.communication.translator.event.IWorldObjectUpdateResult.Result;
28      import cz.cuni.amis.utils.SafeEquals;
29      import cz.cuni.amis.pogamut.multi.communication.worldview.object.*;
30      
31              
32              /**
33                
34  		Asynchronous message. Sent after succesfull init command (so usually just once). 
35  		Holds many attributes of the bots like speed, id starting and max health, etc.
36  		Some attributes are not used due to GameBots mechanics.
37  	
38                            Corresponding GameBots message is
39                            INITED.
40                        
41               */
42              
43              public class
44              InitedMessage
45                      extends GBObjectUpdate
46                  
47  	            	implements IGBWorldObjectEvent, IWorldObject
48  
49              {
50              
51              /**
52                Creates new instance of command InitedMessage.
53                
54  		Asynchronous message. Sent after succesfull init command (so usually just once). 
55  		Holds many attributes of the bots like speed, id starting and max health, etc.
56  		Some attributes are not used due to GameBots mechanics.
57  	Corresponding GameBots message for this command is
58                .
59                    @param BotId 
60  			A unique unreal Id of the new bot.
61  		
62                    @param HealthStart 
63  			Bot will always start with this health amount (usually 100). 
64  		
65                    @param HealthFull 
66  			Full health of the bot (usually 100).
67  		
68                    @param HealthMax 
69  			Maximum health of the bot (default 199).
70  		
71                    @param AdrenalineStart 
72  			Amount of adrenaline at the start. Usually 0.
73  		
74                    @param AdrenalineMax 
75  			Maxium amount of the adrenaline. Usually 100 (this can trigger the combos).
76  		
77                    @param ShieldStrengthStart 
78  			Starting strength of the bot armor (usually 0).
79  		
80                    @param ShieldStrengthMax 
81  			Maximum strength of the bot armor (usually 150).
82  		
83                    @param MaxMultiJump 
84  			Maximum amount of succesing jumps. Currently limited to double jump in GB.
85  		
86                    @param DamageScaling 
87  			Damage scaling for this bot. (he will deal reduced damage depending on the setting).
88  		
89                    @param GroundSpeed 
90  			Groundspeed of the bot (on the ground). Default 440.
91  		
92                    @param WaterSpeed 
93  			Waterspeed of the bot (in the water).
94  		
95                    @param AirSpeed 
96  			AirSpeed of the bot (in the air).
97  		
98                    @param LadderSpeed 
99  			Ladderspeed of the bot (on the ladder).
100 		
101                   @param AccelRate 
102 			Accelartion rate of this bot. How fast he accelerates.
103 		
104                   @param JumpZ 
105 			 Bot Jump's Z boost.
106 		
107                   @param MultiJumpBoost 
108 			Not used in GB.
109 		
110                   @param MaxFallSpeed 
111 			 Max fall speed of the bot.
112 		
113                   @param DodgeSpeedFactor 
114 			Dodge speed factor.
115 		
116                   @param DodgeSpeedZ 
117 			Dodge jump Z boost of the bot. 
118 		
119                   @param AirControl 
120 			How well can be the bot controlled in the air (ranges from 0 to 1).
121 		
122               */
123              public InitedMessage(
124                 UnrealId BotId,  int HealthStart,  int HealthFull,  int HealthMax,  double AdrenalineStart,  double AdrenalineMax,  int ShieldStrengthStart,  int ShieldStrengthMax,  int MaxMultiJump,  double DamageScaling,  double GroundSpeed,  double WaterSpeed,  double AirSpeed,  double LadderSpeed,  double AccelRate,  double JumpZ,  double MultiJumpBoost,  double MaxFallSpeed,  double DodgeSpeedFactor,  double DodgeSpeedZ,  double AirControl) {
125                     
126                     this.BotId = BotId;
127                 
128                     this.HealthStart = HealthStart;
129                 
130                     this.HealthFull = HealthFull;
131                 
132                     this.HealthMax = HealthMax;
133                 
134                     this.AdrenalineStart = AdrenalineStart;
135                 
136                     this.AdrenalineMax = AdrenalineMax;
137                 
138                     this.ShieldStrengthStart = ShieldStrengthStart;
139                 
140                     this.ShieldStrengthMax = ShieldStrengthMax;
141                 
142                     this.MaxMultiJump = MaxMultiJump;
143                 
144                     this.DamageScaling = DamageScaling;
145                 
146                     this.GroundSpeed = GroundSpeed;
147                 
148                     this.WaterSpeed = WaterSpeed;
149                 
150                     this.AirSpeed = AirSpeed;
151                 
152                     this.LadderSpeed = LadderSpeed;
153                 
154                     this.AccelRate = AccelRate;
155                 
156                     this.JumpZ = JumpZ;
157                 
158                     this.MultiJumpBoost = MultiJumpBoost;
159                 
160                     this.MaxFallSpeed = MaxFallSpeed;
161                 
162                     this.DodgeSpeedFactor = DodgeSpeedFactor;
163                 
164                     this.DodgeSpeedZ = DodgeSpeedZ;
165                 
166                     this.AirControl = AirControl;
167                 
168                 }
169 
170             
171     	/** Example how the message looks like - used during parser tests. */
172     	public static final String PROTOTYPE =
173     		"INITED {BotId unreal_id} {HealthStart 0} {HealthFull 0} {HealthMax 0} {AdrenalineStart 0} {AdrenalineMax 0} {ShieldStrengthStart 0} {ShieldStrengthMax 0} {MaxMultiJump 0} {DamageScaling 0} {GroundSpeed 0} {WaterSpeed 0} {AirSpeed 0} {LadderSpeed 0} {AccelRate 0} {JumpZ 0} {MultiJumpBoost 0} {MaxFallSpeed 0} {DodgeSpeedFactor 0} {DodgeSpeedZ 0} {AirControl 0}";
174     
175 
176             /////// Properties BEGIN
177             
178         /**
179         
180 			A unique unreal Id of the new bot.
181 		 */
182         protected
183          UnrealId BotId =
184         	null;
185 
186         
187         /**
188         
189 			A unique unreal Id of the new bot.
190 		 */
191         public
192         UnrealId getBotId() {
193             return
194          BotId;
195         }
196         
197 
198         
199         /**
200         
201 			Bot will always start with this health amount (usually 100). 
202 		 */
203         protected
204          int HealthStart =
205         	0;
206 
207         
208         /**
209         
210 			Bot will always start with this health amount (usually 100). 
211 		 */
212         public
213         int getHealthStart() {
214             return
215          HealthStart;
216         }
217         
218 
219         
220         /**
221         
222 			Full health of the bot (usually 100).
223 		 */
224         protected
225          int HealthFull =
226         	0;
227 
228         
229         /**
230         
231 			Full health of the bot (usually 100).
232 		 */
233         public
234         int getHealthFull() {
235             return
236          HealthFull;
237         }
238         
239 
240         
241         /**
242         
243 			Maximum health of the bot (default 199).
244 		 */
245         protected
246          int HealthMax =
247         	0;
248 
249         
250         /**
251         
252 			Maximum health of the bot (default 199).
253 		 */
254         public
255         int getHealthMax() {
256             return
257          HealthMax;
258         }
259         
260 
261         
262         /**
263         
264 			Amount of adrenaline at the start. Usually 0.
265 		 */
266         protected
267          double AdrenalineStart =
268         	0;
269 
270         
271         /**
272         
273 			Amount of adrenaline at the start. Usually 0.
274 		 */
275         public
276         double getAdrenalineStart() {
277             return
278          AdrenalineStart;
279         }
280         
281 
282         
283         /**
284         
285 			Maxium amount of the adrenaline. Usually 100 (this can trigger the combos).
286 		 */
287         protected
288          double AdrenalineMax =
289         	0;
290 
291         
292         /**
293         
294 			Maxium amount of the adrenaline. Usually 100 (this can trigger the combos).
295 		 */
296         public
297         double getAdrenalineMax() {
298             return
299          AdrenalineMax;
300         }
301         
302 
303         
304         /**
305         
306 			Starting strength of the bot armor (usually 0).
307 		 */
308         protected
309          int ShieldStrengthStart =
310         	0;
311 
312         
313         /**
314         
315 			Starting strength of the bot armor (usually 0).
316 		 */
317         public
318         int getShieldStrengthStart() {
319             return
320          ShieldStrengthStart;
321         }
322         
323 
324         
325         /**
326         
327 			Maximum strength of the bot armor (usually 150).
328 		 */
329         protected
330          int ShieldStrengthMax =
331         	0;
332 
333         
334         /**
335         
336 			Maximum strength of the bot armor (usually 150).
337 		 */
338         public
339         int getShieldStrengthMax() {
340             return
341          ShieldStrengthMax;
342         }
343         
344 
345         
346         /**
347         
348 			Maximum amount of succesing jumps. Currently limited to double jump in GB.
349 		 */
350         protected
351          int MaxMultiJump =
352         	0;
353 
354         
355         /**
356         
357 			Maximum amount of succesing jumps. Currently limited to double jump in GB.
358 		 */
359         public
360         int getMaxMultiJump() {
361             return
362          MaxMultiJump;
363         }
364         
365 
366         
367         /**
368         
369 			Damage scaling for this bot. (he will deal reduced damage depending on the setting).
370 		 */
371         protected
372          double DamageScaling =
373         	0;
374 
375         
376         /**
377         
378 			Damage scaling for this bot. (he will deal reduced damage depending on the setting).
379 		 */
380         public
381         double getDamageScaling() {
382             return
383          DamageScaling;
384         }
385         
386 
387         
388         /**
389         
390 			Groundspeed of the bot (on the ground). Default 440.
391 		 */
392         protected
393          double GroundSpeed =
394         	0;
395 
396         
397         /**
398         
399 			Groundspeed of the bot (on the ground). Default 440.
400 		 */
401         public
402         double getGroundSpeed() {
403             return
404          GroundSpeed;
405         }
406         
407 
408         
409         /**
410         
411 			Waterspeed of the bot (in the water).
412 		 */
413         protected
414          double WaterSpeed =
415         	0;
416 
417         
418         /**
419         
420 			Waterspeed of the bot (in the water).
421 		 */
422         public
423         double getWaterSpeed() {
424             return
425          WaterSpeed;
426         }
427         
428 
429         
430         /**
431         
432 			AirSpeed of the bot (in the air).
433 		 */
434         protected
435          double AirSpeed =
436         	0;
437 
438         
439         /**
440         
441 			AirSpeed of the bot (in the air).
442 		 */
443         public
444         double getAirSpeed() {
445             return
446          AirSpeed;
447         }
448         
449 
450         
451         /**
452         
453 			Ladderspeed of the bot (on the ladder).
454 		 */
455         protected
456          double LadderSpeed =
457         	0;
458 
459         
460         /**
461         
462 			Ladderspeed of the bot (on the ladder).
463 		 */
464         public
465         double getLadderSpeed() {
466             return
467          LadderSpeed;
468         }
469         
470 
471         
472         /**
473         
474 			Accelartion rate of this bot. How fast he accelerates.
475 		 */
476         protected
477          double AccelRate =
478         	0;
479 
480         
481         /**
482         
483 			Accelartion rate of this bot. How fast he accelerates.
484 		 */
485         public
486         double getAccelRate() {
487             return
488          AccelRate;
489         }
490         
491 
492         
493         /**
494         
495 			 Bot Jump's Z boost.
496 		 */
497         protected
498          double JumpZ =
499         	0;
500 
501         
502         /**
503         
504 			 Bot Jump's Z boost.
505 		 */
506         public
507         double getJumpZ() {
508             return
509          JumpZ;
510         }
511         
512 
513         
514         /**
515         
516 			Not used in GB.
517 		 */
518         protected
519          double MultiJumpBoost =
520         	0;
521 
522         
523         /**
524         
525 			Not used in GB.
526 		 */
527         public
528         double getMultiJumpBoost() {
529             return
530          MultiJumpBoost;
531         }
532         
533 
534         
535         /**
536         
537 			 Max fall speed of the bot.
538 		 */
539         protected
540          double MaxFallSpeed =
541         	0;
542 
543         
544         /**
545         
546 			 Max fall speed of the bot.
547 		 */
548         public
549         double getMaxFallSpeed() {
550             return
551          MaxFallSpeed;
552         }
553         
554 
555         
556         /**
557         
558 			Dodge speed factor.
559 		 */
560         protected
561          double DodgeSpeedFactor =
562         	0;
563 
564         
565         /**
566         
567 			Dodge speed factor.
568 		 */
569         public
570         double getDodgeSpeedFactor() {
571             return
572          DodgeSpeedFactor;
573         }
574         
575 
576         
577         /**
578         
579 			Dodge jump Z boost of the bot. 
580 		 */
581         protected
582          double DodgeSpeedZ =
583         	0;
584 
585         
586         /**
587         
588 			Dodge jump Z boost of the bot. 
589 		 */
590         public
591         double getDodgeSpeedZ() {
592             return
593          DodgeSpeedZ;
594         }
595         
596 
597         
598         /**
599         
600 			How well can be the bot controlled in the air (ranges from 0 to 1).
601 		 */
602         protected
603          double AirControl =
604         	0;
605 
606         
607         /**
608         
609 			How well can be the bot controlled in the air (ranges from 0 to 1).
610 		 */
611         public
612         double getAirControl() {
613             return
614          AirControl;
615         }
616         
617 
618         
619             /////// Properties END
620 
621             /////// Extra Java code BEGIN
622 
623             	/////// Additional code from xslt BEGIN
624             		
625             					public static final UnrealId InitedMessageId = UnrealId.get("InitedMessageId");
626 
627             					public UnrealId getId() {
628             						return InitedMessageId;
629             					}
630             				
631        							protected double Time = 0;
632 
633        							protected double getTime() {
634        								return Time;
635        							}
636 
637        							protected void setTime(double time) {
638        								this.Time = time;
639        							}
640 
641        							public double getLastSeenTime() {
642        								return Time;
643        							}
644        						
645        					
646        					public ILocalWorldObject getLocal() {
647        						return null;
648        					}
649        					
650        					public ISharedWorldObject getShared() {
651        						return null;
652        					}
653        					
654        					public IStaticWorldObject getStatic() {
655        						return null;
656        					}
657        					
658        					@Override
659        					public long getSimTime() {
660        						return (long)getLastSeenTime();
661        					}
662 
663        					public boolean equals(Object obj) {
664 	                      if (!(obj instanceof InitedMessage)) return false;
665 	                      InitedMessage cast = (InitedMessage)obj;
666 	                      if (this.getId() != null) return this.getId().equals(cast.getId());
667 	                      else return cast.getId() == null;
668 	                    }
669 
670 	                    public int hashCode() {
671 	                      if (getId() != null) return getId().hashCode();
672 	                      return 0;
673 	                    }
674 
675             		
676 
677 
678             	/////// Additional code from xslt END
679 
680 	            /////// Extra Java from XML BEGIN
681             		
682             	/////// Extra Java from XML END
683 
684             /////// Extra Java code END
685 
686             
687 
688             /**
689               * Cloning constructor.
690               */
691              public InitedMessage(InitedMessage original) {
692                 
693                      this.BotId=original.BotId;
694                 
695                      this.HealthStart=original.HealthStart;
696                 
697                      this.HealthFull=original.HealthFull;
698                 
699                      this.HealthMax=original.HealthMax;
700                 
701                      this.AdrenalineStart=original.AdrenalineStart;
702                 
703                      this.AdrenalineMax=original.AdrenalineMax;
704                 
705                      this.ShieldStrengthStart=original.ShieldStrengthStart;
706                 
707                      this.ShieldStrengthMax=original.ShieldStrengthMax;
708                 
709                      this.MaxMultiJump=original.MaxMultiJump;
710                 
711                      this.DamageScaling=original.DamageScaling;
712                 
713                      this.GroundSpeed=original.GroundSpeed;
714                 
715                      this.WaterSpeed=original.WaterSpeed;
716                 
717                      this.AirSpeed=original.AirSpeed;
718                 
719                      this.LadderSpeed=original.LadderSpeed;
720                 
721                      this.AccelRate=original.AccelRate;
722                 
723                      this.JumpZ=original.JumpZ;
724                 
725                      this.MultiJumpBoost=original.MultiJumpBoost;
726                 
727                      this.MaxFallSpeed=original.MaxFallSpeed;
728                 
729                      this.DodgeSpeedFactor=original.DodgeSpeedFactor;
730                 
731                      this.DodgeSpeedZ=original.DodgeSpeedZ;
732                 
733                      this.AirControl=original.AirControl;
734                 
735              }
736 
737              
738                  /**
739                   * Used by Yylex to create empty message then to fill it's protected fields (Yylex is in the same package).
740                   */
741 	             public InitedMessage() {
742 	             }
743              
744 
745 	    		/**
746 	    		 * Here we save the original object for which this object is an update.
747 	    		 */
748 	    		private IWorldObject orig = null;
749 
750 	            public IWorldObjectUpdateResult update(IWorldObject obj) {
751 		            if(obj == null) {
752 		               orig = this;
753 		               return new IWorldObjectUpdateResult.WorldObjectUpdateResult(cz.cuni.amis.pogamut.base.communication.translator.event.IWorldObjectUpdateResult.Result.CREATED, this);
754 		            }
755 		            orig = obj;
756 		            // typecast
757 		            InitedMessage  o = (InitedMessage)obj;
758 
759 		            boolean updated = false;
760 
761 		            
762 		    					if (o.HealthStart != HealthStart) {
763 		    					    o.HealthStart=HealthStart;
764 		    						updated = true;
765 		    					}
766 		    				
767 		    					if (o.HealthFull != HealthFull) {
768 		    					    o.HealthFull=HealthFull;
769 		    						updated = true;
770 		    					}
771 		    				
772 		    					if (o.HealthMax != HealthMax) {
773 		    					    o.HealthMax=HealthMax;
774 		    						updated = true;
775 		    					}
776 		    				
777 		    					if (o.AdrenalineStart != AdrenalineStart) {
778 		    					    o.AdrenalineStart=AdrenalineStart;
779 		    						updated = true;
780 		    					}
781 		    				
782 		    					if (o.AdrenalineMax != AdrenalineMax) {
783 		    					    o.AdrenalineMax=AdrenalineMax;
784 		    						updated = true;
785 		    					}
786 		    				
787 		    					if (o.ShieldStrengthStart != ShieldStrengthStart) {
788 		    					    o.ShieldStrengthStart=ShieldStrengthStart;
789 		    						updated = true;
790 		    					}
791 		    				
792 		    					if (o.ShieldStrengthMax != ShieldStrengthMax) {
793 		    					    o.ShieldStrengthMax=ShieldStrengthMax;
794 		    						updated = true;
795 		    					}
796 		    				
797 		    					if (o.MaxMultiJump != MaxMultiJump) {
798 		    					    o.MaxMultiJump=MaxMultiJump;
799 		    						updated = true;
800 		    					}
801 		    				
802 		    					if (o.DamageScaling != DamageScaling) {
803 		    					    o.DamageScaling=DamageScaling;
804 		    						updated = true;
805 		    					}
806 		    				
807 		    					if (o.GroundSpeed != GroundSpeed) {
808 		    					    o.GroundSpeed=GroundSpeed;
809 		    						updated = true;
810 		    					}
811 		    				
812 		    					if (o.WaterSpeed != WaterSpeed) {
813 		    					    o.WaterSpeed=WaterSpeed;
814 		    						updated = true;
815 		    					}
816 		    				
817 		    					if (o.AirSpeed != AirSpeed) {
818 		    					    o.AirSpeed=AirSpeed;
819 		    						updated = true;
820 		    					}
821 		    				
822 		    					if (o.LadderSpeed != LadderSpeed) {
823 		    					    o.LadderSpeed=LadderSpeed;
824 		    						updated = true;
825 		    					}
826 		    				
827 		    					if (o.AccelRate != AccelRate) {
828 		    					    o.AccelRate=AccelRate;
829 		    						updated = true;
830 		    					}
831 		    				
832 		    					if (o.JumpZ != JumpZ) {
833 		    					    o.JumpZ=JumpZ;
834 		    						updated = true;
835 		    					}
836 		    				
837 		    					if (o.MultiJumpBoost != MultiJumpBoost) {
838 		    					    o.MultiJumpBoost=MultiJumpBoost;
839 		    						updated = true;
840 		    					}
841 		    				
842 		    					if (o.MaxFallSpeed != MaxFallSpeed) {
843 		    					    o.MaxFallSpeed=MaxFallSpeed;
844 		    						updated = true;
845 		    					}
846 		    				
847 		    					if (o.DodgeSpeedFactor != DodgeSpeedFactor) {
848 		    					    o.DodgeSpeedFactor=DodgeSpeedFactor;
849 		    						updated = true;
850 		    					}
851 		    				
852 		    					if (o.DodgeSpeedZ != DodgeSpeedZ) {
853 		    					    o.DodgeSpeedZ=DodgeSpeedZ;
854 		    						updated = true;
855 		    					}
856 		    				
857 		    					if (o.AirControl != AirControl) {
858 		    					    o.AirControl=AirControl;
859 		    						updated = true;
860 		    					}
861 		    				
862 								o.Time = Time;
863 							
864 
865 		            if (updated) {
866 		                return new IWorldObjectUpdateResult.WorldObjectUpdateResult(cz.cuni.amis.pogamut.base.communication.translator.event.IWorldObjectUpdateResult.Result.UPDATED, o);
867 		            } else {
868 		            	return new IWorldObjectUpdateResult.WorldObjectUpdateResult(cz.cuni.amis.pogamut.base.communication.translator.event.IWorldObjectUpdateResult.Result.SAME, o);
869 		            }
870 		        }
871 
872 	            /**
873 	             * Returns original object (if method update() has already been called, for bot-programmer that is always true
874 	             * as the original object is updated and then the event is propagated).
875 	             */
876 		        public IWorldObject getObject() {
877 		            if (orig == null) return this;
878 		            return orig;
879 		        }
880 	        
881 
882                  
883             public String toString() {
884                 return
885                 
886                 		super.toString() + " | " +
887                 		
888 				               "BotId = " +
889 				               String.valueOf(BotId) + " | " +
890 				            
891 				               "HealthStart = " +
892 				               String.valueOf(HealthStart) + " | " +
893 				            
894 				               "HealthFull = " +
895 				               String.valueOf(HealthFull) + " | " +
896 				            
897 				               "HealthMax = " +
898 				               String.valueOf(HealthMax) + " | " +
899 				            
900 				               "AdrenalineStart = " +
901 				               String.valueOf(AdrenalineStart) + " | " +
902 				            
903 				               "AdrenalineMax = " +
904 				               String.valueOf(AdrenalineMax) + " | " +
905 				            
906 				               "ShieldStrengthStart = " +
907 				               String.valueOf(ShieldStrengthStart) + " | " +
908 				            
909 				               "ShieldStrengthMax = " +
910 				               String.valueOf(ShieldStrengthMax) + " | " +
911 				            
912 				               "MaxMultiJump = " +
913 				               String.valueOf(MaxMultiJump) + " | " +
914 				            
915 				               "DamageScaling = " +
916 				               String.valueOf(DamageScaling) + " | " +
917 				            
918 				               "GroundSpeed = " +
919 				               String.valueOf(GroundSpeed) + " | " +
920 				            
921 				               "WaterSpeed = " +
922 				               String.valueOf(WaterSpeed) + " | " +
923 				            
924 				               "AirSpeed = " +
925 				               String.valueOf(AirSpeed) + " | " +
926 				            
927 				               "LadderSpeed = " +
928 				               String.valueOf(LadderSpeed) + " | " +
929 				            
930 				               "AccelRate = " +
931 				               String.valueOf(AccelRate) + " | " +
932 				            
933 				               "JumpZ = " +
934 				               String.valueOf(JumpZ) + " | " +
935 				            
936 				               "MultiJumpBoost = " +
937 				               String.valueOf(MultiJumpBoost) + " | " +
938 				            
939 				               "MaxFallSpeed = " +
940 				               String.valueOf(MaxFallSpeed) + " | " +
941 				            
942 				               "DodgeSpeedFactor = " +
943 				               String.valueOf(DodgeSpeedFactor) + " | " +
944 				            
945 				               "DodgeSpeedZ = " +
946 				               String.valueOf(DodgeSpeedZ) + " | " +
947 				            
948 				               "AirControl = " +
949 				               String.valueOf(AirControl) + " | " +
950 				             "";
951                 	
952              }
953 
954              public String toHtmlString() {
955                 return super.toString() +
956             
957             "<b>BotId</b> : " +
958             String.valueOf(BotId) +
959             " <br/> " +
960             
961             "<b>HealthStart</b> : " +
962             String.valueOf(HealthStart) +
963             " <br/> " +
964             
965             "<b>HealthFull</b> : " +
966             String.valueOf(HealthFull) +
967             " <br/> " +
968             
969             "<b>HealthMax</b> : " +
970             String.valueOf(HealthMax) +
971             " <br/> " +
972             
973             "<b>AdrenalineStart</b> : " +
974             String.valueOf(AdrenalineStart) +
975             " <br/> " +
976             
977             "<b>AdrenalineMax</b> : " +
978             String.valueOf(AdrenalineMax) +
979             " <br/> " +
980             
981             "<b>ShieldStrengthStart</b> : " +
982             String.valueOf(ShieldStrengthStart) +
983             " <br/> " +
984             
985             "<b>ShieldStrengthMax</b> : " +
986             String.valueOf(ShieldStrengthMax) +
987             " <br/> " +
988             
989             "<b>MaxMultiJump</b> : " +
990             String.valueOf(MaxMultiJump) +
991             " <br/> " +
992             
993             "<b>DamageScaling</b> : " +
994             String.valueOf(DamageScaling) +
995             " <br/> " +
996             
997             "<b>GroundSpeed</b> : " +
998             String.valueOf(GroundSpeed) +
999             " <br/> " +
1000             
1001             "<b>WaterSpeed</b> : " +
1002             String.valueOf(WaterSpeed) +
1003             " <br/> " +
1004             
1005             "<b>AirSpeed</b> : " +
1006             String.valueOf(AirSpeed) +
1007             " <br/> " +
1008             
1009             "<b>LadderSpeed</b> : " +
1010             String.valueOf(LadderSpeed) +
1011             " <br/> " +
1012             
1013             "<b>AccelRate</b> : " +
1014             String.valueOf(AccelRate) +
1015             " <br/> " +
1016             
1017             "<b>JumpZ</b> : " +
1018             String.valueOf(JumpZ) +
1019             " <br/> " +
1020             
1021             "<b>MultiJumpBoost</b> : " +
1022             String.valueOf(MultiJumpBoost) +
1023             " <br/> " +
1024             
1025             "<b>MaxFallSpeed</b> : " +
1026             String.valueOf(MaxFallSpeed) +
1027             " <br/> " +
1028             
1029             "<b>DodgeSpeedFactor</b> : " +
1030             String.valueOf(DodgeSpeedFactor) +
1031             " <br/> " +
1032             
1033             "<b>DodgeSpeedZ</b> : " +
1034             String.valueOf(DodgeSpeedZ) +
1035             " <br/> " +
1036             
1037             "<b>AirControl</b> : " +
1038             String.valueOf(AirControl) +
1039             " <br/> " +
1040              "";
1041              }
1042 
1043              
1044              
1045              }
1046 
1047