summaryrefslogtreecommitdiff
path: root/src/elements
diff options
context:
space:
mode:
authorSimon Robertshaw <simon@hardwired.org.uk>2012-04-18 13:57:29 (GMT)
committer Simon Robertshaw <simon@hardwired.org.uk>2012-04-18 13:57:29 (GMT)
commiteeff570f89ff5519df26dc4c85739a49f7b9d1a0 (patch)
tree25d448ac6df06d7de1f38f66ad6c5a77645f94b5 /src/elements
parentf84dc03c23452af62c5772509b1b5732f22f1ca8 (diff)
downloadpowder-eeff570f89ff5519df26dc4c85739a49f7b9d1a0.zip
powder-eeff570f89ff5519df26dc4c85739a49f7b9d1a0.tar.gz
TPT: Fixed the bug with fighters running away from stick mans, but now boundary check is worser so fighters won't usually notice holes on their way 2b4d0442b5
Diffstat (limited to 'src/elements')
-rw-r--r--src/elements/figh.cpp44
1 files changed, 23 insertions, 21 deletions
diff --git a/src/elements/figh.cpp b/src/elements/figh.cpp
index 35b5a20..6a8bb4e 100644
--- a/src/elements/figh.cpp
+++ b/src/elements/figh.cpp
@@ -4,41 +4,41 @@ int update_FIGH(UPDATE_FUNC_ARGS)
{
playerst* figh = &sim->fighters[(unsigned char)parts[i].tmp];
- float tarx, tary;
+ unsigned int tarx, tary;
parts[i].tmp2 = 0; //0 - stay in place, 1 - seek a stick man
//Set target cords
- if (sim->player.spwn)
+ if (sim->player.spwn && sim->player2.spwn)
{
- if (sim->player2.spwn)
if ((pow(sim->player.legs[2]-x, 2) + pow(sim->player.legs[3]-y, 2))<=
(pow(sim->player2.legs[2]-x, 2) + pow(sim->player2.legs[3]-y, 2)))
{
- tarx = sim->player.legs[2];
- tary = sim->player.legs[3];
+ tarx = (unsigned int)sim->player.legs[2];
+ tary = (unsigned int)sim->player.legs[3];
}
else
{
- tarx = sim->player2.legs[2];
- tary = sim->player2.legs[3];
+ tarx = (unsigned int)sim->player2.legs[2];
+ tary = (unsigned int)sim->player2.legs[3];
}
- else
- {
- tarx = sim->player.legs[2];
- tary = sim->player.legs[3];
- }
-
- parts[i].tmp2 = 1;
+ parts[i].tmp2 = 1;
}
else
+ {
+ if (sim->player.spwn)
+ {
+ tarx = (unsigned int)sim->player.legs[2];
+ tary = (unsigned int)sim->player.legs[3];
+ parts[i].tmp2 = 1;
+ }
if (sim->player2.spwn)
{
- tarx = sim->player2.legs[2];
- tary = sim->player2.legs[3];
-
+ tarx = (unsigned int)sim->player2.legs[2];
+ tary = (unsigned int)sim->player2.legs[3];
parts[i].tmp2 = 1;
}
+ }
switch (parts[i].tmp2)
{
@@ -46,14 +46,15 @@ int update_FIGH(UPDATE_FUNC_ARGS)
if ((pow(tarx-x, 2) + pow(tary-y, 2))<600)
{
if (figh->elem == PT_LIGH || figh->elem == PT_NEUT
- || (sim->ptypes[figh->elem].properties&(PROP_DEADLY|PROP_RADIOACTIVE))
+ || sim->ptypes[figh->elem].properties&(PROP_DEADLY|PROP_RADIOACTIVE)
|| sim->ptypes[figh->elem].heat>=323 || sim->ptypes[figh->elem].heat<=243)
figh->comm = (int)figh->comm | 0x08;
}
else
- if (tarx<x )
+ if (tarx<x)
{
- if(!sim->eval_move(PT_DUST, figh->legs[4]-10, figh->legs[5]+6, NULL))
+ if(!(sim->eval_move(PT_DUST, figh->legs[4]-10, figh->legs[5]+6, NULL)
+ && sim->eval_move(PT_DUST, figh->legs[4]-10, figh->legs[5]+3, NULL)))
figh->comm = 0x01;
else
figh->comm = 0x02;
@@ -65,7 +66,8 @@ int update_FIGH(UPDATE_FUNC_ARGS)
}
else
{
- if (!sim->eval_move(PT_DUST, figh->legs[12]+10, figh->legs[13]+6, NULL))
+ if (!(sim->eval_move(PT_DUST, figh->legs[12]+10, figh->legs[13]+6, NULL)
+ && sim->eval_move(PT_DUST, figh->legs[12]+10, figh->legs[13]+3, NULL)))
figh->comm = 0x02;
else
figh->comm = 0x01;