/
combat.php
89 lines (89 loc) · 3.2 KB
/
combat.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
<?php
include 'core/config.php';
include 'core/core.php';
include 'core/game.php';
include 'locales/'.$_SESSION[$shortTitle.'User']['locale'].'/gl.php';
$db->query('start transaction');
if (isset($_SESSION[$shortTitle.'User']['id'], $_GET['action'], $_GET['nodeId']))
{
$node=new node();
if ($node->get('id', $_GET['nodeId'])=='done')
{
$flags=flags::get('name');
$node->checkAll(time());
switch ($_GET['action'])
{
case 'add':
if ($flags['combat'])
{
if (isset($_POST['name'], $_POST['attackerGroupUnitIds'], $_POST['attackerGroups']))
{
foreach ($_POST as $key=>$value)
if (!in_array($key, array('name', 'attackerGroupUnitIds', 'attackerGroups', 'attackerFocus'))) $_POST[$key]=misc::clean($value, 'numeric');
else if (!in_array($key, array('name', 'attackerFocus')))
{
$nr=count($_POST[$key]);
for ($i=0; $i<$nr; $i++) $_POST[$key][$i]=misc::clean($_POST[$key][$i], 'numeric');
}
else $_POST[$key]=misc::clean($value);
$target=new node();
if ($target->get('name', $_POST['name'])=='done')
{
$targetUser=new user();
if ($targetUser->get('id', $target->data['user'])=='done')
{
$alliance=new alliance();
$targetAlliance=new alliance();
if (($targetAlliance->get('id', $targetUser->data['alliance'])=='done')&&($alliance->get('id', $_SESSION[$shortTitle.'User']['alliance'])=='done'))
{
$war=$alliance->getWar($targetAlliance->data['id']);
if (isset($war['type']))
{
$gotStatic=false;
$data=array();
$data['input']['attacker']['focus']=$_POST['attackerFocus'];
$data['input']['attacker']['faction']=$node->data['faction'];
foreach ($_POST['attackerGroupUnitIds'] as $key=>$unitId)
{
$data['input']['attacker']['groups'][$key]=array('unitId'=>$unitId, 'quantity'=>$_POST['attackerGroups'][$key]);
if (!$game['units'][$node->data['faction']][$unitId]['speed']) $gotStatic=true;
}
if (!$gotStatic) $status=$node->addCombat($target->data['id'], $data);
else $status='cannotSendStatic';
$message=$ui[$status];
}
else $message=$ui['noWar'];
}
else $message=$ui['noAlliance'];
}
else $message=$ui['noUser'];
}
else $message=$ui['noNode'];
}
}
else $message=$ui['featureDisabled'];
break;
case 'cancel':
if (isset($_GET['combatId']))
{
$combat=node::getCombat($_GET['combatId']);
if (isset($combat['id']))
if ($combat['sender']==$node->data['id'])
{
$status=$node->cancelCombat($combat['id']);
if ($status=='done') header('Location: node.php?action=get&nodeId='.$node->data['id']);
else $message=$ui[$status];
}
else $message=$ui['accessDenied'];
else $message=$ui['noCombat'];
}
break;
}
}
else $message=$ui['noNode'];
}
else $message=$ui['insufficientData'];
if ((isset($status))&&($status=='error')) $db->query('rollback');
else $db->query('commit');
include 'templates/'.$_SESSION[$shortTitle.'User']['template'].'/combat.php';
?>