| 
等級:25 - 爐火純青 經驗值:0 / 245 魔法值:14302 / 14302  生命值:5%  
升級 
   100% TA的每日心情|  | 慵懶 6 小時前
 | 
|---|
 簽到天數: 5755 天 [LV.Master]伴壇終老 | 
 
 發表於 2016-2-26 21:16:08
|
顯示全部樓層 
| 探險代碼總共不到500行. t) Z2 K( U" t0 \' c% p# x 1 d+ b8 o1 O5 }: s2 c9 g
 貿易系統與財團系統* t7 E5 ^3 r4 d3 x
 的總行數都比這些多很多
 % ^/ D  N0 |& y把這些解讀出來不是難事2 V2 C' M' \7 U5 l
 
 複製程式碼class MissionCaseExpedition extends MissionFunctions implements Mission, C; M/ b1 ?' @7 B( |0 M; P- l& |. r. i
{2 H! _& Y6 g9 E0 |+ V0 F
        function __construct($fleet)% [1 {0 N* ^: T
        {7 i  R/ G& y$ S, t  t4 W5 m5 u  E
                $this->_fleet        = $fleet;8 c4 Y; g/ R: G$ d) x
        }3 ^4 m, R$ T6 }! Q, @0 H
        1 A; z2 D8 b% J( E
        function TargetEvent(). ?0 M  I$ t/ Z/ w! Z/ r
        {6 M0 Q9 J3 r- t
                $this->setState(FLEET_HOLD);1 e# ~* \4 w' R+ C+ r( |
                $this->SaveFleet();# G6 t& {2 g" x- L
        }& s5 ]2 W1 h" L( E+ \9 D
        % b$ `* K8 ?  r: x. Q3 X) d* {
        function EndStayEvent()# V( j) {: R8 p; z. U
        {" r& K0 K5 m! C8 `$ q4 K
                global $pricelist, $reslist, $resource;% @6 u* h& N. z: ~2 w  l
                $LNG        = $this->getLanguage(NULL, $this->_fleet['fleet_owner']);+ v$ Z) f! |2 X5 F
                $config        = Config::get($this->_fleet['fleet_universe']);* I. W7 v1 ~8 k3 i/ z% O
        $expeditionPoints       = array();' f) F1 E" @( w$ u6 ^: _% ~. a/ q
                foreach($reslist['fleet'] as $shipId)4 }0 ?! y1 Y/ o
                {0 A) X7 X5 B# z8 Y, ^# h
                        $expeditionPoints[$shipId]        = ($pricelist[$shipId]['cost'][901] + $pricelist[$shipId]['cost'][902]) * 5 / 1000;2 D! {4 H- b3 }) t
                }1 O# {  S) ]5 T  P3 @
                        . o8 v) |  ~/ Y" ?! `
                $fleetArray                = FleetFunctions::unserialize($this->_fleet['fleet_array']);, C( A" h* K3 T4 h
                $fleetPoints         = 0;9 i3 _2 `8 Z) g/ C5 r! z1 c5 S; G
                $fleetCapacity        = 0;, R: {" ^6 d9 A4 @  ~$ E% p
                foreach ($fleetArray as $shipId => $shipAmount)' e0 S# k9 m) f1 J5 Y. X
                {: F+ g- y/ _5 X
                        $fleetCapacity                            += $shipAmount * $pricelist[$shipId]['capacity'];$ G7 H  T# j4 Q* ?6 @
                        $fleetPoints                              += $shipAmount * $expeditionPoints[$shipId];4 O& \3 r! M2 w
                }# M$ }1 q/ a" B8 j* D4 L
                $fleetCapacity  -= $this->_fleet['fleet_resource_metal'] + $this->_fleet['fleet_resource_crystal']. L! }8 |% e* K7 U: g* o
                        + $this->_fleet['fleet_resource_deuterium'] + $this->_fleet['fleet_resource_darkmatter'];l6 T( Z$ W/ H  ^
                $GetEvent       = mt_rand(1, 9);/ R# k% V- F" G# x+ X) L# N1 Z
        $Message        = $LNG['sys_expe_nothing_'.mt_rand(1,8)];( `9 a/ g/ c* b  W$ k, W
                switch($GetEvent)+ _+ C/ k0 }4 h3 ~# z
                {) C  T" W" T" h" g
                        case 1:5 t3 z$ R$ B7 [& m0 i
                                $eventSize                = mt_rand(0, 100);  Q' G" l' v# C/ \6 o! H
                $factor                        = 0;/ @8 `) g, r) Y6 `. m. V. M2 M
                                if(10 < $eventSize)! @. ~3 ?' P3 M# |) i+ L  x
                                {" P7 [. c! ^& }6 e2 x! c
                                        $Message        = $LNG['sys_expe_found_ress_1_'.mt_rand(1,4)];0 ~. F: K# J+ E% n" _
                                        $factor                = mt_rand(10, 50);; l+ k4 b/ F* U4 }, r/ ~9 o- O3 R
                                }7 r- V+ g6 o8 e  S2 I
                                elseif(0 < $eventSize && 10 >= $eventSize); J. F2 |6 g+ J9 Q$ J1 |+ r) @
                                {: u( K3 ]- {7 o# z" V
                                        $Message        = $LNG['sys_expe_found_ress_2_'.mt_rand(1,3)];) z4 e- [7 ~# H0 S4 T/ ]& Z) [
                                        $factor                = mt_rand(50, 100);" d; v+ t5 @, o  f. L
                                }& k. p0 s5 k0 j% D; O
                                elseif(0 == $eventSize)9 U  n. }6 [. v9 Z% G/ h* l
                                {9 ~& H3 j' L# k: C, D! _
                                        $Message        = $LNG['sys_expe_found_ress_3_'.mt_rand(1,2)];/ o/ J0 X- b5 S6 W
                                        $factor                = mt_rand(100, 200);) h) I3 |! ~% c/ P! i) z5 E
                                }% j! S, k" F; [0 c* }  U
                                $chanceToFound        = mt_rand(1, 6);# y5 z7 a7 \; c$ H4 g
                                if($chanceToFound > 3)8 t4 }6 B5 e8 c
                                {* d: x0 w9 L: s
                                        $resourceId        = 901;7 f! v+ L4 k3 L2 k. C8 v
                                }+ z0 ?. `9 G6 }1 h
                                elseif($chanceToFound > 1): n9 B, E5 M4 {6 I
                                {5 U2 g5 _9 f# A/ B% H0 p
                                        $resourceId        = 902;9 B$ H& K$ Q3 O/ E) i
                                        $factor                = $factor / 2;7 K1 k& \$ d4 j9 e6 g
                                }  z  @: Q6 h( R" P2 u+ Y
                                else7 P% b1 D. q% O1 ^$ o. B6 e
                                {1 c4 M* z) Q3 b+ _3 c" E
                                        $resourceId        = 903;: P* L1 P2 ~. s$ C% e+ n3 ?
                                        $factor                = $factor / 3;: W; r! x' f: \0 m# w4 I4 h
                                }/ e7 [# k; u/ q2 A& S1 t5 \
                                $sql                = "SELECT MAX(total_points) as total FROM %%STATPOINTS%%0 i2 @( l4 r7 q2 Y  ~2 U' T$ J0 F
                                WHERE `stat_type` = :type AND `universe` = :universe;";! i+ J: i) [& J( }9 B* P
                                $topPoints        = Database::get()->selectSingle($sql, array(; D4 [* @; [! n
                                        ':type'                => 1,- @* V+ n5 ]( M  P* }! A
                                        ':universe'        => $this->_fleet['fleet_universe']. l1 q9 l1 J1 _" ]" Y% y
                                ), 'total');( V& r" j( t: a; E4 @- m- d
                                if($topPoints > 5000000)0 N( X1 E5 H' a0 h# J3 U8 v! Y
                                {/ U$ [7 b5 e/ J5 A; Q0 E5 U6 k% u
                                        $maxFactor                = 12000;: }* B& Y; u# }6 f* f  g& E
                                }4 B) h& V9 t$ ]% s
                                elseif($topPoints > 1000000)' p9 I" k2 O& e5 y  W# P2 e
                                {. T/ S% v! ^% |3 X
                                        $maxFactor                = 9000;4 }: t. b1 R9 f- A" ]' o7 L
                                }3 I/ e6 A- q0 F4 K; c0 w1 F
                                elseif($topPoints > 100000)" A+ c5 M1 b1 G+ \& ?: Q2 Z9 b
                                {& w) V6 Y3 i. u/ s
                                        $maxFactor                = 6000;% T2 ~) G% v5 A: ]4 B! E- u
                                }: P8 Z5 z2 V5 u: R8 {' t
                                else8 _4 i7 i7 ^4 C0 a
                                {6 O7 X4 O! `; ?8 ?2 c
                                        $maxFactor                = 2400;% F" x5 K  o! n
                                }7 N7 z, I* h9 x1 l7 c4 ~6 m
                                $founded                = round(min($maxFactor, max(200, $factor)) * $fleetPoints);0 g$ O% R. O; b
                                $fleetColName        = 'fleet_resource_'.$resource[$resourceId];" S3 j& W7 g- `
                                $this->UpdateFleet($fleetColName, $this->_fleet[$fleetColName] + $founded);$ I! w: @0 _3 S" L  Q! o
                        break;% i6 C3 D1 ^( b
                        case 2:" Z5 r% L% D  O6 ^! t8 F$ A% ]
                                $eventSize   = mt_rand(0, 100);7 @( ?* x% ~: z% T% O0 R5 O$ Z
                $Size       = 0;" s7 U: N- Q0 Q& s5 {0 v0 u' _
                                if(10 < $eventSize) {) p- O7 {* o8 @+ C! l; m7 t/ h) y
                                        $Size                = mt_rand(100, 300);& D! b/ @6 {$ B% i- E7 M# ?; b
                                        $Message        = $LNG['sys_expe_found_dm_1_'.mt_rand(1,5)];5 N( Q" \) t5 {
                                } elseif(0 < $eventSize && 10 >= $eventSize) {% h2 o/ B5 e5 \3 x5 I. z& ]
                                        $Size                = mt_rand(301, 600);3 d- t/ i  w! r
                                        $Message        = $LNG['sys_expe_found_dm_2_'.mt_rand(1,3)];/ c5 X4 o- ^9 b8 _. b
                                } elseif(0 == $eventSize) {6 L- M. V6 }/ l/ V
                                        $Size                 = mt_rand(601, 3000);' r8 O/ j8 {' x7 ]0 f0 E3 A
                                        $Message        = $LNG['sys_expe_found_dm_3_'.mt_rand(1,2)];3 o4 ]3 {+ Y2 e' X) D+ x5 `2 f! _
                                }a( K  N$ ~) n
                                $this->UpdateFleet('fleet_resource_darkmatter', $this->_fleet['fleet_resource_darkmatter'] + $Size);6 n* q- S' f% N7 i, y5 y
                        break;. S" c) l7 \( R, y
                        case 3:1 r1 b; b, _2 T7 J# p
                                $eventSize        = mt_rand(0, 100);& c1 `/ m( n4 d& S1 Y" J2 O. j6 h
                $Size       = 0;% ?& S" Y2 s( L& l2 ]5 A4 z
                $Message    = "";2 _; f0 T5 i9 F, K( e
                                if(10 < $eventSize) {$ U0 ~. g+ Z- u1 j
                                        $Size                = mt_rand(10, 50);3 @8 Q2 a+ t/ N& f; [
                                        $Message        = $LNG['sys_expe_found_ships_1_'.mt_rand(1,4)];3 C+ B! I4 p9 V: s
                                } elseif(0 < $eventSize && 10 >= $eventSize) {! C8 {/ ^. t; W1 k* C$ T
                                        $Size                = mt_rand(52, 100);4 B! u: u9 X" \  ]! v
                                        $Message        = $LNG['sys_expe_found_ships_2_'.mt_rand(1,2)];. c" \" a" p6 u
                                } elseif(0 == $eventSize) {: a7 @3 l; y- _8 ?
                                        $Size                 = mt_rand(102, 200);; s' G: D: L, M3 s, f3 H
                                        $Message        = $LNG['sys_expe_found_ships_3_'.mt_rand(1,2)];' h5 u! z- d9 c) R) Q& N% P& [. L, l6 h
                                }( g1 d$ I  T; Z2 E" V
                                $sql                = "SELECT MAX(total_points) as total FROM %%STATPOINTS%%, @  l  a9 t- @7 o) \8 N8 B. _
                                WHERE `stat_type` = :type AND `universe` = :universe;";% w7 M3 C. Y1 }, U
                                $topPoints        = Database::get()->selectSingle($sql, array(/ s: ^8 B2 j* m' p$ L$ M
                                        ':type'                => 1,( [0 f# B& ]: x0 Z% G
                                        ':universe'        => $this->_fleet['fleet_universe']8 m3 c' t. v$ k: G0 O. A% o: g
                                ), 'total');$ _$ J6 Q) o# J2 l. S5 `
                                $MaxPoints                 = ($topPoints < 5000000) ? 4500 : 6000;4 U% y9 o/ U  u5 N- \% S
                                $FoundShips                = max(round($Size * min($fleetPoints, $MaxPoints)), 10000);4 u1 z$ {& Q: n1 C7 |0 |- s5 A3 P
                                # X7 O$ f7 Q3 q- o
                                $FoundShipMess        = "";        ) g8 W& h# {2 {6 r7 E. D* p7 ]/ O
                                $NewFleetArray         = "";+ L! x, R: j2 f1 H1 R  g& g
                                , l5 O9 o! q6 e& ^
                                $Found                        = array();/ i7 v1 G4 D, G: s
                                foreach($reslist['fleet'] as $ID) 3 j, i- M, U) E$ t  L
                                {8 s, f' `; W: @% v- y" \
                                        if(!isset($fleetArray[$ID]) || $ID == 208 || $ID == 209 || $ID == 214)8 ~$ @$ h8 @, Q+ f
                                                continue;+ H' I, w# ^# S  w% \3 c8 e
                                        # g6 @- R! U4 k& ?2 g" M) T
                                        $MaxFound                        = floor($FoundShips / ($pricelist[$ID]['cost'][901] + $pricelist[$ID]['cost'][902]));0 {: [) e; ^# b2 A5 E! h- R  w( ^, g
                                        if($MaxFound <= 0) 7 k8 n. u2 d, i# N5 x
                                                continue;' A/ E  E% b0 F( R
                                                ( c8 S6 _, L" }$ }% ~9 _
                                        $Count                                = mt_rand(0, $MaxFound);0 ?2 Q+ N# m7 j7 y
                                        if($Count <= 0) 4 u7 t1 N" r( T2 a
                                                continue;+ _" P5 f, _( x5 I' o
                                                9 _# {2 K& U4 m2 U* k5 y5 x( q
                                        $Found[$ID]                        = $Count;3 S1 g! c1 |2 j1 v- y& |
                                        $FoundShips                         -= $Count * ($pricelist[$ID]['cost'][901] + $pricelist[$ID]['cost'][902]);# H" p1 e7 |7 T% v0 E1 z
                                        $FoundShipMess           .= '<br>'.$LNG['tech'][$ID].': '.pretty_number($Count);9 o$ _, h( Z3 h+ T
                                        if($FoundShips <= 0)0 U' p+ B* u1 ^. d1 E7 ^
                                                break;* P- [3 d0 X/ O1 s# |+ r& v
                                }( D  l* G6 v' Q, A$ c8 m7 h) T) n  ]# e
                                J: q$ ^0 B. W& i7 A
                                if (empty($Found)) {  n7 o# n$ _3 a, w
                                        $FoundShipMess .= '<br><br>'.$LNG['sys_expe_found_ships_nothing'];+ @6 s+ l9 x9 M
                                }0 C+ M0 B( r8 Q5 K- e
                                foreach($fleetArray as $ID => $Count)7 m6 Z) d5 p. U
                                {* Q2 H3 B/ ^$ ^; p5 g
                                        if(!empty($Found[$ID]))' {+ h3 I& T- c
                                        {- R! e: a) s6 M' o9 g
                                                $Count        += $Found[$ID];) f: Y9 o8 S2 n
                                        }$ [$ T5 @5 x9 J6 _2 }, n
                                        % a5 J3 `: x, i$ n
                                        $NewFleetArray          .= $ID.",".floatToString($Count).';';5 c0 ?) ?% t5 T5 c& G
                                }        $ ]- T6 {' \; r; X& {3 k, G
                                $ m, C" \; [, u+ t
                                $Message        .= $FoundShipMess;5 |. @1 j, D* q6 V1 g% a4 j9 b
                                                        . V6 t) p0 ?: J& ]9 _  h( H: h
                                $this->UpdateFleet('fleet_array', $NewFleetArray);! b3 n. W0 [; {
                                $this->UpdateFleet('fleet_amount', array_sum($fleetArray));1 o; o* k; P' P" ?
                        break;: @+ z- o: D  P; R% d
                        case 4:# u: g" i- [1 A, M
                        & V, Q9 e. }; [& c* i
                                $messageHTML        = <<<HTML0 B/ f1 b2 h5 ?6 }) A/ P. N8 F
<div class="raportMessage"># J2 r- Y: g3 [* ?! w% O3 T
<table>% G& Y: t  F8 j8 G. E) ]
<tr>0 I  {/ O$ S; c) {% o* p
<td colspan="2"><a href="CombatReport.php?raport=%s" target="_blank"><span class="%s">%s %s (%s)</span></a></td>. x8 p3 [6 R' m9 r* ?7 g
</tr>6 c( {- ~7 M9 O
<tr>: ~& b" \* G  l/ x8 W" G
<td>%s</td><td><span class="%s">%s: %s</span> <span class="%s">%s: %s</span></td>! R& q* W, G/ x  k; }/ E
</tr># f" _- G2 y, y) _& m$ S
<tr>2 }# T1 k8 r0 r: `
<td>%s</td><td><span>%s: <span class="raportSteal element901">%s</span> </span><span>%s: <span class="raportSteal element902">%s</span> </span><span>%s: <span class="raportSteal element903">%s</span></span></td>s1 m& _* t, ^; G% q* s$ `
</tr>5 V" P, X/ g& w; N. F3 w
<tr>0 J2 z. ]' I% n% P- R" i1 U
<td>%s</td><td><span>%s: <span class="raportDebris element901">%s</span> </span><span>%s: <span class="raportDebris element902">%s</span></span></td>, ]: \. b, G( ^! i
</tr>, e7 J& f9 n+ J! D1 S$ W2 W
</table>r1 I5 R" f/ k, Y7 f: g/ u
</div>1 s7 j( F* y; O# o& L& R# M
HTML;* p; B: r, e% e4 B& ?; V
                                //Minize HTML# @* E3 V  l" |
                                $messageHTML        = str_replace(array("\n", "\t", "\r"), "", $messageHTML);1 R2 y- ^7 J  s1 v. t
                                // pirate or alien. T* \6 ?) _5 I% w% P# P
                                $attackType        = mt_rand(1,2);) J9 g8 g) k" M& T5 R2 ^
                                $eventSize        = mt_rand(0, 100);: k0 p2 n' c2 ]/ h- @
                                $targetFleetData        = array();1 o5 x, m9 ]0 d: x# I5 W
                                if($attackType == 1); x: U( g) f& A9 r& u& x6 o
                                {& Y. m# H8 H! t( F' M
                                        $techBonus                = -3;4 {- {$ `9 y, u6 g' e% |
                                        $targetName                = $LNG['sys_expe_attackname_1'];) ~4 H' ]9 n2 h7 v4 x; I  P
                                        $roundFunction        = 'floor';, E' J. S# ]- {+ n+ c- v
                                        if(10 < $eventSize)+ J6 b0 \: W- S" Y; S) o9 S
                                        {, W3 f% k& F4 [! o8 r
                                                $Message                            = $LNG['sys_expe_attack_1_1_5'];2 E8 W" S# Q2 j+ @
                                                $attackFactor                        = (30 + mt_rand(-3, 3)) / 100;- K7 [  T' C' N" `4 o* }3 W
                                                $targetFleetData[204]        = 5;- }) J3 X! D8 J; e; t$ @
                                        }- L. i: R5 j1 C0 u' B4 }4 _
                                        elseif(0 < $eventSize && 10 >= $eventSize), W  T1 W) c; T" b: T7 y
                                        {- Y1 c4 ^' D- g9 T: i" f( i
                                                $Message                            = $LNG['sys_expe_attack_1_2_3'];0 J; w: r! B. W; }
                                                $attackFactor                        = (50 + mt_rand(-5, 5)) / 100;7 Q% a$ b' K. G2 Q6 `, Q
                                                $targetFleetData[206]        = 3;! ~2 \1 f: ^. q8 b
                                        }/ }' f5 I5 s4 [2 ]8 u! n% l
                                        else( u7 {3 a! Z! _/ [- o6 b
                                        {5 @+ x1 v  k- y0 C* _
                                                $Message                                   = $LNG['sys_expe_attack_1_3_2'];7 d( O0 N$ b$ ]9 b' f; M, t/ n
                                                $attackFactor                        = (80 + mt_rand(-8, 8)) / 100;6 x0 A8 r. l* P
                                                $targetFleetData[207]        = 2;) w& x0 B( C' X: I6 ]8 O
                                        }2 C5 x/ b4 ~0 [
                                }$ P+ k! s: f5 U: S
                                else0 r. G7 a1 u8 O; H( g
                                {9 g! u) O- b/ k. K: t* u* z
                                        $techBonus                = 3;2 Q- j2 a& I) L0 `- l9 q. K7 p
                                        $targetName                = $LNG['sys_expe_attackname_2'];* G+ g" x1 c! L) B+ }
                                        $roundFunction        = 'ceil';# |6 @* |: ?5 h1 m, \5 s
                                        if(10 < $eventSize)! e( G* u- z  u$ F' F' Q7 j' @4 b3 b
                                        {3 _8 z+ o, K8 d
                                                $Message                            = $LNG['sys_expe_attack_1_1_5'];! x& L  T5 @) q: v( g, h
                                                $attackFactor                        = (40 + mt_rand(-4, 4)) / 100;1 f& U  D( c- \5 z* A7 Z5 i
                                                $targetFleetData[204]        = 5;& l3 K' I  g7 O1 v9 C& C- Y! P; Y+ N
                                        }1 I# B% S$ |% d0 l" q8 g) C0 |" B
                                        elseif(0 < $eventSize && 10 >= $eventSize)3 w4 q8 a9 z. x* N
                                        {5 j/ l* _' X' r. H' L; C, l7 D- t
                                                $Message                            = $LNG['sys_expe_attack_1_3_3'];) X+ e* c) c" F
                                                $attackFactor                        = (60 + mt_rand(-6, 6)) / 100;, v3 o: r. t5 b0 S3 N2 f% M& E! C4 V
                                                $targetFleetData[215]        = 3;9 N% Z; _$ m: ]$ ?0 A
                                        }. d' i3 q2 v4 `/ R/ J
                                        else7 u$ k5 }, e7 o) }6 l6 k3 T
                                        {" Y. C3 I( K: K$ A
                                                $Message                            = $LNG['sys_expe_attack_1_3_2'];9 y/ }/ {+ p+ [% F: g( x
                                                $attackFactor                        = (90 + mt_rand(-9, 9)) / 100;$ u# `# \* s* x. a' N- }1 S
                                                $targetFleetData[213]        = 2;6 i# m1 l! f- G
                                        }5 J4 G" F1 w9 r
                                }( F# J3 Z. e+ i& @4 p( S: x3 d' F
                                        , q, s) Y; O0 c
                                foreach($fleetArray as $shipId => $shipAmount)+ A! H0 t% U/ _; ]* J2 C
                                {9 b0 j" B, V  c. ~1 o
                                        if(isset($targetFleetData[$shipId])), [! ]# {. V4 t; }# Z( T
                                        {; W$ }, `% S; W7 M! o
                                                $targetFleetData[$shipId]        = 0;, e, ]5 I  i% W& c2 [  |1 N, k3 p! A
                                        }0 V; s2 @6 v5 z0 w% M( L- W# o, L7 I
                                        $targetFleetData[$shipId]        = $roundFunction($shipAmount * $attackFactor);$ Q7 Z' \& E$ w( D3 J8 e& w
                                }# O- {$ r9 \  O
                                $targetFleetData        = array_filter($targetFleetData);- o0 N- s0 c* |, ~. m4 @
                                $sql = 'SELECT * FROM %%USERS%% WHERE id = :userId;';: H6 B, \# ?" o* S
                                $senderData        = Database::get()->selectSingle($sql, array(/ L) x  I3 m9 W5 H2 ^! K
                                        ':userId'        => $this->_fleet['fleet_owner']+ _7 z# l) r7 N7 f) p
                                ));" E: S) B( j/ [/ o0 w
                                $targetData        = array(4 q. X" ?  o$ _
                                        'id'                        => 0,, @3 t% r4 U) g- K) q" z3 T% i
                                        'username'                => $targetName,' |6 g+ g$ R+ C+ _: U9 x, z) x
                                        'military_tech'        => min($senderData['military_tech'] + $techBonus, 0),) a' U( A4 |; u& c" L
                                        'defence_tech'        => min($senderData['defence_tech'] + $techBonus, 0),( Y; ^& y/ W$ L
                                        'shield_tech'        => min($senderData['shield_tech'] + $techBonus, 0),|+ L8 [- ]+ ]4 u* h5 @* d! `" D' i
                                        'rpg_amiral'        => 0,7 f% O" v1 r- `# _" a0 ]
                                        'dm_defensive'        => 0,/ Z5 x0 g2 @5 n- U- v' w
                                        'dm_attack'         => 0) l  m# z& \- I% y' R
                                );/ @) V7 _' Y- b: m5 V
                                j6 A, B# T5 R& z# v  ?
                                $fleetID        = $this->_fleet['fleet_id'];! @. h8 a: {) i
                                ) o# f* f( ~# m- V0 n. c9 h3 R
                                $fleetAttack[$fleetID]['fleetDetail']                = $this->_fleet;* C: h. W+ G; o! {
                                $fleetAttack[$fleetID]['player']                        = $senderData;5 L. k* O1 ^8 Y4 t! `- N! \, u
                                $fleetAttack[$fleetID]['player']['factor']        = getFactors($fleetAttack[$this->_fleet['fleet_id']]['player'], 'attack', $this->_fleet['fleet_start_time']);' q  _% }0 ?) [; v/ f; d' i
                                $fleetAttack[$fleetID]['unit']                                = $fleetArray;! f0 _  C# t/ d8 l+ B" E
                                5 c8 [0 {- N* P: |
                                $fleetDefend = array();% S% G$ k4 |5 `6 Z
                                $fleetDefend[0]['fleetDetail'] = array(3 L5 N1 F6 l* K
                                        'fleet_start_galaxy'                => $this->_fleet['fleet_end_galaxy'],) y0 y' u" @5 @# S
                                        'fleet_start_system'                => $this->_fleet['fleet_end_system'],5 ?9 C/ j& f# @& [! \
                                        'fleet_start_planet'                => $this->_fleet['fleet_end_planet'],I, a- W/ L/ {6 u/ ]8 X
                                        'fleet_start_type'                        => 1,# @# O5 m2 e4 ?8 c% A
                                        'fleet_end_galaxy'                        => $this->_fleet['fleet_end_galaxy']," p* Q/ [' |( R  P1 s- p
                                        'fleet_end_system'                        => $this->_fleet['fleet_end_system'],9 U2 O9 i' N3 ]1 j, f" x" u+ W
                                        'fleet_end_planet'                        => $this->_fleet['fleet_end_planet'],/ @7 j: ]1 }9 D1 F* @; y
                                        'fleet_end_type'                        => 1,3 J/ F, k3 K3 }. U$ V0 F
                                        'fleet_resource_metal'                => 0,+ f8 p( G- S8 r4 t
                                        'fleet_resource_crystal'        => 0,2 C$ q& n1 }9 H( p* D* q0 ~
                                        'fleet_resource_deuterium'        => 0, b* i7 |+ X/ P. T# _% i
                                );* E) r8 ~( N" b; n
                                $bonusList        = BuildFunctions::getBonusList();2 L+ f7 b& n  j7 j2 U+ s
                                $fleetDefend[0]['player']        = $targetData;o; l2 V3 O, D* C; w
                                $fleetDefend[0]['player']['factor']        = ArrayUtil::combineArrayWithSingleElement($bonusList, 0);, l+ U) t4 ~. U" R6 T; i
                                $fleetDefend[0]['unit']                = $targetFleetData;) ^, L1 Y! o; N& e. E9 Q
                                require_once 'includes/classes/missions/functions/calculateAttack.php';6 j" z% r# h7 z) _. ?- I
                                $combatResult        = calculateAttack($fleetAttack, $fleetDefend, $config->Fleet_Cdr, $config->Defs_Cdr);4 _' f/ ~. K; [( A3 \2 }
                                $fleetArray = '';- E5 Z% k8 j+ z0 C" i
                                $totalCount = 0;; U0 p( q2 M* ~* ^5 x& w6 Q" u
                                ) l6 B" \& \4 p: L+ r( `& l7 W
                                $fleetAttack[$fleetID]['unit']        = array_filter($fleetAttack[$fleetID]['unit']);; d1 J4 ^& E( q  b0 p
                                foreach ($fleetAttack[$fleetID]['unit'] as $element => $amount)2 r4 a* M/ M; t  a1 }6 y
                                {. w6 v1 M2 `% J: s  [: c- A
                                        $fleetArray .= $element.','.$amount.';';) {; s! H. {) |; Z
                                        $totalCount += $amount;, G$ G7 t" P7 ~. x/ |! F
                                }- u( w/ b. x7 r- e1 d" y9 A6 C7 r  D
                                if ($totalCount <= 0)! R( Y1 g5 ?0 D6 I7 I
                                {/ {) q! s; I9 b+ n, ^! c) g! b
                                        $this->KillFleet();' k! Y1 z2 }  a8 q2 K
                                }* X/ k( l! C/ d1 F# T
                                else: ~+ b$ e# t& J! ~* ^
                                {5 X! N. h, p$ S! D
                                        $this->UpdateFleet('fleet_array', substr($fleetArray, 0, -1));, Z- {3 W% R+ F! w
                                        $this->UpdateFleet('fleet_amount', $totalCount);* q  d4 x8 d1 I8 V) V1 z+ \! z: w
                                }) K" @. N0 G4 d0 m* D
                                require_once('includes/classes/missions/functions/GenerateReport.php');! S3 `; y( W0 l* b
                        ! X, W! H1 J( L) z& J
                        8 g# e8 z: w" g% P
                                $debrisResource        = array(901, 902);$ o' j) ^' C3 ^% `9 `
                                $debris                        = array();' Y% K1 E  S% l% H  @
                                foreach($debrisResource as $elementID)1 q7 o  x: V& W
                                {, P+ R- C2 I/ ~* D
                                        $debris[$elementID]                        = 0;0 z- ~9 @. `2 c  S
                                }) }# g5 t7 @1 `9 ~; l3 H" T" e
                                9 B. D% W. m5 ?9 t/ O. N: I
                                $stealResource        = array(901 => 0, 902 => 0, 903 => 0);0 ?2 _9 s% i# X/ ~
                        b9 P  a) [& G4 e% ~8 p9 r
                                $reportInfo        = array(, @2 R/ x, z* f' @$ L
                                        'thisFleet'                                => $this->_fleet,' Z' M% Q( u5 R/ g+ |) }7 i' p& c7 K
                                        'debris'                                => $debris,4 {+ w! i+ \* q; q5 Q
                                        'stealResource'                        => $stealResource,3 O- k$ w: |/ G1 K6 L4 d# K1 w
                                        'moonChance'                        => 0,/ q2 J3 p7 H1 `# D- q9 U
                                        'moonDestroy'                        => false,( k9 p7 D5 z) \5 h) \
                                        'moonName'                                => NULL,. m' U) K$ p! U7 Y0 b# t$ x. H
                                        'moonDestroyChance'                => NULL,- ]( Z; d% `3 v7 s
                                        'moonDestroySuccess'        => NULL,& I4 J; [) F- @8 I4 z
                                        'fleetDestroyChance'        => NULL,4 J8 J$ ]1 N9 Q! |. N
                                        'fleetDestroySuccess'        => NULL,- o! w  K8 X- p) p1 v1 v; O8 A
                                );5 S, @! z$ y  E) ~* ?9 {
                                ' H8 d& w% p/ G% L6 q; x1 R3 E5 W
                                $reportData        = GenerateReport($combatResult, $reportInfo);5 ^( H4 t. Q* U# i2 x
                        9 r* x9 o' \$ R% Q0 e/ J6 a
                                $reportID        = md5(uniqid('', true).TIMESTAMP);* J! z) P0 l% c- @$ b) L  A$ E- B1 m7 C
                                $sql                = "INSERT INTO %%RW%% SET/ l- a- @0 j+ \. C' J
                                rid                        = :reportId,* f  S: P/ p; G9 N7 T
                                raport                = :reportData,# q2 @+ l8 c& _. J$ |! P* d
                                time                = :time,, K/ ], x' M* ~* z% x  E7 F. ^
                                attacker        = :attacker;";* t# p! o6 C: p1 F9 w
                                Database::get()->insert($sql, array(- F) @. x6 X: Q% f" V- b
                                        ':reportId'                => $reportID,( T7 s5 ~6 J( }3 A3 G
                                        ':reportData'        => serialize($reportData),Z7 ~" `: W+ p4 q. m
                                        ':time'                        => $this->_fleet['fleet_start_time'],2 F0 _- N3 w- a% j1 x
                                        ':attacker'                => $this->_fleet['fleet_owner'],; G* X8 q* ^9 ~+ |
                                ));; {* Q/ _/ V2 {) d0 ]$ M
                        % w; I7 a( U- N9 Q, ~: P7 e1 I* H
                                switch($combatResult['won'])6 ~: |* ]) F# Z8 v# `
                                {- U5 h$ l# S: Q. z% H/ h/ O
                                        case "a":* k& t4 y6 C! j7 r! p( {; v  X4 T
                                                $attackClass        = 'raportWin';" ?9 G4 w- c& S
                                                $defendClass        = 'raportLose';. Z6 R; S; ?5 J
                                        break;* J7 E+ o, s$ o
                                        case "r":- i, H' X. d+ z; L1 L: T
                                                $attackClass        = 'raportLose';/ T. d2 b& [  M) W/ V5 P
                                                $defendClass        = 'raportWin';3 K6 t* E! R/ |( w/ C
                                        break;7 Z* }) y  [4 }" P
                                        default:+ S4 O& z" `& a& I6 y  ^
                                                $attackClass        = 'raportDraw';% n" d: ]* ~( z! J: O
                                                $defendClass        = 'raportDraw';3 g( C7 {: {' g8 B; u' d
                                        break;" h) {0 d# ~" \
                                }% L- Z0 V0 b! ]' s
                                $message        = sprintf($messageHTML,+ \% K" B$ p/ \' p0 `0 O
                                        $reportID,( t7 ]: g6 ~4 K0 N/ U
                                        $attackClass,+ f* R9 @( @3 N! E) c
                                        $LNG['sys_mess_attack_report'],' s4 J; B( |% ?* j6 P
                                        sprintf(/ @- }  k9 V; D- Y, g: ]5 j
                                                $LNG['sys_adress_planet'],2 E! S1 z. C5 s' R) ^
                                                $this->_fleet['fleet_end_galaxy'],7 D8 w  M: H" Z8 R6 d
                                                $this->_fleet['fleet_end_system'],9 T4 T( t$ h6 F9 u4 o4 \
                                                $this->_fleet['fleet_end_planet']3 g% a/ @6 I* ?% r. }) Q5 `
                                        ),7 E# y5 {; m( s3 N
                                        $LNG['type_planet_short'][$this->_fleet['fleet_end_type']],) M5 h4 a7 G5 C$ m3 j/ p7 }1 Z0 |7 A
                                        $LNG['sys_lost'],; l9 c6 G/ g/ h# ^! W% S" N
                                        $attackClass,* [/ ~) r+ ~- o( F
                                        $LNG['sys_attack_attacker_pos'], pretty_number($combatResult['unitLost']['attacker']),9 o' j+ w% K9 o' }
                                        $defendClass,$ P: T, D" i+ _. x& m. p
                                        $LNG['sys_attack_defender_pos'], pretty_number($combatResult['unitLost']['defender']),* ~  K+ C6 j. M" n' c2 b8 P4 r
                                        $LNG['sys_gain'],. k0 t7 ~0 f! F* D
                                        $LNG['tech'][901], pretty_number($stealResource[901]),1 Z3 u9 }  J" Z% [1 t
                                        $LNG['tech'][902], pretty_number($stealResource[902]),7 M1 Z2 ^' G7 u- i
                                        $LNG['tech'][903], pretty_number($stealResource[903]),5 c; E3 }# b5 F$ D7 ]3 q
                                        $LNG['sys_debris'],% ~0 D; g$ o; L, v
                                        $LNG['tech'][901], pretty_number($debris[901]),' f7 Y4 i# n+ D+ b, h
                                        $LNG['tech'][902], pretty_number($debris[902])+ K" P! T3 L, I& j) ~- n
                                );: Z9 Q$ e7 s, X8 o
                                & P* v% B8 P" T0 ?2 i
                                PlayerUtil::sendMessage($this->_fleet['fleet_owner'], 0, $LNG['sys_mess_tower'], 3,9 O8 p+ Y/ G' Z9 D2 U! M
                                        $LNG['sys_mess_attack_report'], $message, $this->_fleet['fleet_end_stay']);4 L4 V, A* p# ~8 ]
                        break;B" d" A2 ^3 y% L* b5 A1 s
                        case 5:' Z$ i2 _* s. t; K& U  W& I
                                $this->KillFleet();% X4 W$ A5 H8 q3 x, |
                                $Message        = $LNG['sys_expe_lost_fleet_'.mt_rand(1,4)];3 i3 f  I4 ?  ^3 m
                        break;8 b" L2 B8 ^7 \8 O
                        case 6:' m. ]9 h) _; h
                                # http://owiki.de/Expedition#Ver.C3.A4nderte_Flugzeit' M( o: G4 Y# i% }/ }8 S' R
                                $chance        = mt_rand(0, 100);) h4 N5 {4 r! Y$ Z
                                $Wrapper        = array();  ~0 W) P9 _3 }) }: r
                                $Wrapper[]        = 2;1 [8 E9 w; c8 |
                                $Wrapper[]        = 2;! b5 A  x# F% t$ V9 X, m' Q+ |
                                $Wrapper[]        = 2;; E* ]! b9 F8 D/ v* z& \
                                $Wrapper[]        = 2;- }. `+ n: O! i) `- T
                                $Wrapper[]        = 2;7 ?- A" _5 ?) n. @' r2 ]
                                $Wrapper[]        = 2;! g3 H* A+ V( B+ J( r& E
                                $Wrapper[]        = 2;$ x2 f- F3 Q6 Y6 w" {
                                $Wrapper[]        = 3;- y& Q! x$ S# a4 f$ h. N
                                $Wrapper[]        = 3;( t: p4 g4 H2 Y0 Z. y
                                $Wrapper[]        = 5;* @, S! P+ ^, r9 C2 _. }! J
                        7 J5 @9 E0 T! \1 _2 d8 g  G
                                if($chance < 75)- z9 `  q- m' m2 `: f  V
                                {* Q" i; o8 a8 \
                                        // More return time: s& r/ ]9 }# ]* ^' J  I4 w
                                        $normalBackTime        = $this->_fleet['fleet_end_time'] - $this->_fleet['fleet_end_stay'];8 s' e' x) T8 Y7 ~9 p8 }8 i/ [9 ?9 L
                                        $stayTime                = $this->_fleet['fleet_end_stay'] - $this->_fleet['fleet_start_time'];" `8 \8 ?' D* g( p
                                        $factor                        = $Wrapper[mt_rand(0, 9)];' d8 Y0 p8 s. ]0 W( C' S
                                        $endTime                = $this->_fleet['fleet_end_stay'] + $normalBackTime + $stayTime + $factor;$ b: H$ `/ t( |, {; M
                                        $this->UpdateFleet('fleet_end_time', $endTime);1 q0 K$ l, w& f
                                        $Message = $LNG['sys_expe_time_slow_'.mt_rand(1,6)];1 Q( p$ a* b  x0 Q; l, [: a! P
                                }; |! q3 s( h/ v* F
                                else7 A5 I+ v6 J% `2 B
                                {1 T0 q! m9 H( j# Y# D
                                        $normalBackTime        = $this->_fleet['fleet_end_time'] - $this->_fleet['fleet_end_stay'];/ ?: J: `$ j8 Q3 r, q- X- E: |' |
                                        $stayTime                = $this->_fleet['fleet_end_stay'] - $this->_fleet['fleet_start_time'];% @! x& {- ^* u$ z( k; F! p
                                        $factor                        = $Wrapper[mt_rand(0, 9)];7 p" k7 n1 ?! |
                                        $endTime                = max(1, $normalBackTime - $stayTime / 3 * $factor);7 `8 Z9 w" Z% ?4 {! S8 q1 p, u
                                        $this->UpdateFleet('fleet_end_time', $endTime);4 {' T! r! O( @3 {
                                        $Message = $LNG['sys_expe_time_fast_'.mt_rand(1,3)];6 F/ n' [5 A3 A
                                }P8 s5 `) s' N. u0 B
                        break;1 L3 j/ V: b) o, i
                }) \8 c. |% P5 j; f& p
                PlayerUtil::sendMessage($this->_fleet['fleet_owner'], 0, $LNG['sys_mess_tower'], 15,' S% |, ~+ b7 T2 ^" G
                        $LNG['sys_expe_report'], $Message, $this->_fleet['fleet_end_stay'], NULL, 1, $this->_fleet['fleet_universe']);* ~% S$ h* \/ k: [
                $this->setState(FLEET_RETURN);: Q+ c, r7 m+ ~+ N7 N
                $this->SaveFleet();+ N, Z' |* V5 G3 q2 \( F
        }7 K3 C) ~, n/ K9 p2 A
        : ]+ ~  e) \% k
        function ReturnEvent()" k8 a$ ?# s# \7 z3 i
        {0 q5 e6 n2 m: h; W: y
                $LNG                = $this->getLanguage(NULL, $this->_fleet['fleet_owner']);" G6 y8 O; }1 g" F2 N1 V) d
                $Message         = sprintf(9 E! U1 r. p5 \3 V$ A3 l
                        $LNG['sys_expe_back_home'],/ `, P3 P- n9 k" ?# n7 p$ t
                        $LNG['tech'][901], pretty_number($this->_fleet['fleet_resource_metal']),! x; b7 E3 F4 [& G5 b: o
                        $LNG['tech'][902], pretty_number($this->_fleet['fleet_resource_crystal']),* x% s' G, v2 {
                        $LNG['tech'][903], pretty_number($this->_fleet['fleet_resource_deuterium']),, _, ], q# W0 [9 x* v! K
                        $LNG['tech'][921], pretty_number($this->_fleet['fleet_resource_darkmatter']). K5 D- r, h$ G; b5 n3 W  Y
                );6 @. \2 H4 d, T% o% v$ S
                PlayerUtil::sendMessage($this->_fleet['fleet_owner'], 0, $LNG['sys_mess_tower'], 4, $LNG['sys_mess_fleetback'],8 X" N. U" p9 I: ]/ N( O7 Q* T
                        $Message, $this->_fleet['fleet_end_time'], NULL, 1, $this->_fleet['fleet_universe']);6 x, J% n9 L+ ?4 c
                $this->RestoreFleet();* V% L" p: h; X! [* J
        }1 w' V4 |* H+ ~& r6 S
}
 | 
 |