~ubuntu-branches/ubuntu/lucid/warzone2100/lucid

« back to all changes in this revision

Viewing changes to data/base/script/text/cam1-1-ai.slo

  • Committer: Bazaar Package Importer
  • Author(s): Christoph Egger, Paul Wise, Christoph Egger
  • Date: 2009-06-29 17:12:52 UTC
  • mfrom: (1.1.11 upstream) (2.1.7 squeeze)
  • Revision ID: james.westby@ubuntu.com-20090629171252-5ddnlfg3zfchrega
Tags: 2.2.1+dfsg1-1
[ Paul Wise ]
* New upstream release (Closes: #534962)
* Adjust the flex build-depends to take account of the conflict
  with all the versions of flex 2.5.34 (LP: #372872)
* Make the -music Recommends more strict, 2.1 music doesn't work
  with 2.2.
* Upstream moved the downloads to sourceforge, update the watch file
* Bump Standards-Version, no changes needed
* Drop use of dh_desktop since it no longer does anything
* Recommend the new warzone2100-video package, version 2.2 or similar
* Mention the warzone2100 crash reports in the -dbg package description

[ Christoph Egger ]
* Replace CC-2.0 graphic from cybersphinx, create a new tarball
* Add myself to uploaders

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
 * Cam1.1-AI.slo
 
3
 *
 
4
 * Opposition AI (No build of units)
 
5
 *
 
6
 */
 
7
 
 
8
 
 
9
// enemy1 variables
 
10
private         GROUP           enemy1Fin, enemy1Force1, enemy1Force2;
 
11
private         GROUP           enemy1Guard, enemy1Rear1, enemy1Rear2;
 
12
public          INT             LZ_X,LZ_Y;
 
13
 
 
14
// temporary variables
 
15
private         DROID           newDroid;
 
16
private         INT             moveX,moveY;
 
17
private         INT             xdiff,ydiff;
 
18
private         INT             ld;     //default leadership for enemy2
 
19
private         INT             atk1X, atk1Y;
 
20
private         INT             playerX1, playerY1, playerX2, playerY2;
 
21
private         GROUP           playerForce1, playerForce2;
 
22
private         DROID           hitDroid;
 
23
private         BASEOBJ         attackerObj;
 
24
 
 
25
/* values for build lists start here */
 
26
/* General Values */
 
27
public          int             player;
 
28
public          int             enemy1;
 
29
 
 
30
/* Enemy Tactics */
 
31
public          TEMPLATE        trike;
 
32
public          TEMPLATE        buggy;
 
33
public          TEMPLATE        bloke;
 
34
public          TEMPLATE        jeep;
 
35
 
 
36
/* enemy1 */
 
37
/* no factories! */
 
38
public          int             enm1Ret1X, enm1Ret1Y;
 
39
public          int             enm1Ret2X, enm1Ret2Y;
 
40
 
 
41
/* stuff for tracking player */
 
42
private         int             count, count2;
 
43
 
 
44
trigger         enemy1AttackPause( every, 3000 );       //5 mins
 
45
trigger         rearAttackTrig((droidInRange(0, 2496, 7460, 5*128)), 10);
 
46
trigger         baseAttackTrig((droidInRange(0, 2496, 9664, 5*128)), 10);
 
47
trigger         sideAttackTrig((droidInRange(0, 832, 7488, 6*128)), 10);
 
48
trigger         every10(every, 40);     //slowed since ordering every time
 
49
 
 
50
event startup(CALL_GAMEINIT)
 
51
{
 
52
        ld=75;                                          //enemy2 leadership (change to higher when fixed!)
 
53
//make up starting forces
 
54
        groupAddArea(enemy1Force1, enemy1, 2624, 1088, 4160, 2496);     //east ambush at base
 
55
        groupAddArea(enemy1Force1, enemy1, 704, 4288, 1472, 5184);      //sw of base on ridge
 
56
        //setGroupSecondary(enemy1Force1, DSO_ATTACK_LEVEL, DSS_ALEV_ATTACKED); //return fire only
 
57
//don't bother with hold until cancelling Hold works!!! (John needs to fix)
 
58
        //setGroupSecondary(enemy1Force1, DSO_HALTTYPE, DSS_HALT_HOLD);         //hold position
 
59
        groupAddArea(enemy1Force2, enemy1, 448, 1088, 960, 1728);       //to west of base on hill
 
60
        orderGroupLoc(enemy1Force2,  DORDER_SCOUT, 1600, 2624);
 
61
        //groupAddArea(enemy1Guard, enemy1, 1728, 1344, 2368, 1728);    //around artifact
 
62
 
 
63
        groupAddArea(enemy1Rear2, enemy1, 3904, 10944, 4288, 11328);    //rear 2 (trikes and buggies)
 
64
 
 
65
        //orderGroupLoc(enemy1Guard, DORDER_SCOUT, 2212, 1600);
 
66
//set retreat point?
 
67
        setRetreatPoint(enemy1, enm1Ret1X, enm1Ret1Y);  //retreat to base
 
68
        setRetreatForce(enemy1, 75);                    //set morale to 25%
 
69
        setRetreatLeadership(enemy1, 50);               //set leadership chance (small=more likely?)
 
70
 
 
71
}
 
72
 
 
73
 
 
74
/* Enemy force movements */
 
75
 
 
76
event enemy1Atk1(rearAttackTrig)
 
77
{
 
78
        orderGroupLoc(enemy1Rear2, DORDER_SCOUT, playerX1, playerY1); //attack players centre
 
79
        setEventTrigger(enemy1Atk1, every10);   //once triggered keep updating
 
80
}
 
81
 
 
82
/*
 
83
event enemy1Atk2(baseAttackTrig)
 
84
{
 
85
 
 
86
        //orderGroupLoc(enemy1Force1, DORDER_SCOUT, playerX1, playerY1);
 
87
        setEventTrigger(enemy1Atk2, every10);   //once triggered keep updating
 
88
}
 
89
*/
 
90
 
 
91
event enemy1Atk3(sideAttackTrig)
 
92
{
 
93
 
 
94
        orderGroupLoc(enemy1Force2, DORDER_SCOUT, playerX1, playerY1);
 
95
        setEventTrigger(enemy1Atk3, every10);   //once triggered keep updating
 
96
}
 
97
 
 
98
/* GJ: trackPlayer removed because stole droids from incoming transporters */
 
99
/*
 
100
event trackPlayer(every, 10)
 
101
{
 
102
//changed so use whole of player's army as order point!
 
103
//not a good way of doing this (shouldn't use player's forces in groups!)
 
104
                //groupAddArea(playerForce1, player, 0, 0, 48*128, 48*128);
 
105
                groupAddArea(playerForce1, player, 0, 0, 44*128, 93*128);
 
106
                playerX1=playerForce1.x;
 
107
                playerY1=playerForce1.y;
 
108
 
 
109
}
 
110
*/
 
111
 
 
112
//new version that doesn't use groups!!! (uses grid instead!)
 
113
//event trackPlayer(every, 15) - slow it down AB 2/12/98
 
114
event trackPlayer(every, 30)
 
115
{
 
116
    //this loops thru trying to find out where the selectedPlayer is - map size is 44 x 93 tiles
 
117
        count = 0;
 
118
    
 
119
    //look across the height of the map
 
120
        while (count < 93*128)
 
121
        {
 
122
                count2 = 0;
 
123
        //look across the width of the map
 
124
                while (count2 < 44*128)
 
125
                {
 
126
                        //if (numDroidsInArea(player, count2, count2 + (10*128), count, count + (10*128)) > 0)
 
127
            //make the area looking over bigger to cut down on how many loops there are - AB 2/12/98
 
128
            if (numDroidsInArea(player, count2, count, count2 + (22*128), count + (31*128)) > 0)
 
129
                        {
 
130
                                /*playerX1 = count2 + (5*128);
 
131
                                playerY1 = count + (5*128);
 
132
                                count = 93*128;
 
133
                                count2 = 44*128;*/
 
134
                                playerX1 = count2 + (11*128);
 
135
                                playerY1 = count + (15*128);
 
136
                //set count values to quit loop
 
137
                                count = 93*128;
 
138
                                count2 = 44*128;
 
139
                        }
 
140
            //loop to next x value
 
141
            count2 = count2 + (22*128);    
 
142
                }
 
143
        //loop to next y value
 
144
        count = count + (31*128);
 
145
        }
 
146
}
 
147
 
 
148
 
 
149
/* UNNECESSARY FOR HIT & RUN MISSION!!!
 
150
event lastAttack1(every, 50)
 
151
{
 
152
//make enemy easier to find if all his buildings destroyed
 
153
        if (not anyStructButWallsLeft(enemy1))
 
154
        {
 
155
                groupAddArea(enemy1Fin, enemy1, 0, 0, 8191, 16383);
 
156
                orderGroupLoc(enemy1Fin, DORDER_SCOUT, enm1Ass1X, enm1Ass1Y);
 
157
                //setEventTrigger(lastAttack1, inactive);
 
158
        }
 
159
}
 
160
*/
 
161
 
 
162
//remove hold orders if hit!
 
163
event letGo(CALL_DROID_ATTACKED, enemy1, ref hitDroid, ref attackerObj)
 
164
{
 
165
        if (hitDroid != NULLOBJECT)
 
166
        {
 
167
                if (groupMember(enemy1Force1, hitDroid))
 
168
                {
 
169
                        setGroupSecondary(enemy1Force1, DSO_ATTACK_LEVEL, DSS_ALEV_ALWAYS);     //fire at will
 
170
                        //setGroupSecondary(enemy1Force1, DSO_HALTTYPE, DSS_HALT_GUARD);                //cancel hold position
 
171
                }
 
172
                else
 
173
                {
 
174
                        setDroidSecondary(hitDroid, DSO_ATTACK_LEVEL, DSS_ALEV_ALWAYS);
 
175
                        setDroidSecondary(hitDroid, DSO_HALTTYPE, DSS_HALT_GUARD);
 
176
                }
 
177
        }
 
178
}
 
 
b'\\ No newline at end of file'