[Add] More thingies.. Factions!!

This commit is contained in:
Allanis 2013-03-13 22:39:52 +00:00
parent bc12bbaba2
commit d246c2cbe2
7 changed files with 127 additions and 9 deletions

View File

@ -10,17 +10,37 @@
</faction> </faction>
<faction name = "Militia"> <faction name = "Militia">
</faction> </faction>
<faction name = "Empire">
</faction>
<faction name = "Collective">
</faction>
<Alliances> <Alliances>
<alliance name = "Neutral"> <alliance name = "Neutral">
<ally>Independent</ally> <ally>Independent</ally>
<ally>Merchant</ally> <ally>Merchant</ally>
<ally>Militia</ally> <ally>Militia</ally>
</alliance> </alliance>
<alliance name = "Empire United">
<ally>Empire</ally>
<ally>Merchant</ally>
</alliance>
</Alliances> </Alliances>
<Enemies> <Enemies>
<enemies> <enemies>
<enemy type = "alliance">Neutral</enemy> <enemy type="faction">Collective</enemy>
<enemy type = "faction">Pirate</enemy> <enemy type="alliance">Neutral</enemy>
</enemies>
<enemies>
<enemy type="faction">Collective</enemy>
<enemy type="faction">Player</enemy>
</enemies>
<enemies>
<enemy type="alliance">Neutral</enemy>
<enemy type="faction">Pirate</enemy>
</enemies>
<enemies>
<enemy type="alliance">Empire United</enemy>
<enemy type="faction">Pirate</enemy>
</enemies> </enemies>
<enemies> <enemies>
<enemy type="faction">Pirate</enemy> <enemy type="faction">Pirate</enemy>

View File

@ -25,10 +25,7 @@
<ai>merchant</ai> <ai>merchant</ai>
<faction>Merchant</faction> <faction>Merchant</faction>
<pilots> <pilots>
<pilot chance='80'>Merchant Ship</pilot> <pilot chance='100'>Merchant Ship</pilot>
<pilot chance='80'>Merchant Ship</pilot>
<pilot chance='80'>Merchant Mule</pilot>
<pilot chance='80'>Merchant Mule</pilot>
</pilots> </pilots>
</fleet> </fleet>
<fleet name="Pirate"> <fleet name="Pirate">
@ -40,4 +37,23 @@
<pilot chance='80'>Leapard</pilot> <pilot chance='80'>Leapard</pilot>
</pilots> </pilots>
</fleet> </fleet>
<fleet name="Collective Drone">
<ai>collective</ai>
<faction>Collective</faction>
<pilots>
<pilot chance='100'>Drone</pilot>
</pilots>
</fleet>
<fleet name="Collective Sml Swarm">
<ai>collective</ai>
<faction>Collective</faction>
<pilots>
<pilot chance='100'>Drone</pilot>
<pilot chance='90'>Drone</pilot>
<pilot chance='80'>Drone</pilot>
<pilot chance='70'>Drone</pilot>
<pilot chance='60'>Drone</pilot>
<pilot chance='50'>Drone</pilot>
</pilots>
</fleet>
</Fleets> </Fleets>

View File

@ -94,6 +94,29 @@
</fleets> </fleets>
<jumps> <jumps>
<jump>NCG-7291</jump> <jump>NCG-7291</jump>
<jump>C-59</jump>
</jumps>
</ssys>
<ssys name="C-59">
<pos>
<x>90</x>
<y>50</y>
</pos>
<general>
<stars>200</stars>
<asteroids>0</asteroids>
<interference>0</interference>
</general>
<planets>
</planets>
<fleets>
<fleet chance="80">Collective Drone</fleet>
<fleet chance="80">Collective Drone</fleet>
<fleet chance="80">Collective Drone</fleet>
<fleet chance="60">Collective Sml Swarm</fleet>
</fleets>
<jumps>
<jump>NCG-7292</jump>
</jumps> </jumps>
</ssys> </ssys>
</Systems> </Systems>

52
scripts/ai/collective.lua Normal file
View File

@ -0,0 +1,52 @@
-- Required control rate.
control_rate = 2
function control()
if ai.taskname() == "none" then
enemy = ai.getenemy()
if enemey ~= 0 then
ai.pushtask(0, "attack", enemy)
end
end
end
-- Required "attacked" function.
function attacked(attacker)
task = ai.taskname()
if task ~= "attack" then
-- Now pilot fights back.
ai.pushtask(0, "attack", attacker)
elseif task == "attack" then
if ai.targetid() ~= attacker then
ai.pushtask(0, "attack", attacker)
end
end
end
function attack()
target = ai.targetid()
-- Make sure pilot exists.
if not ai.exists(target) then
ai.poptask()
return
end
dir = ai.face(target)
dist = ai.dist(ai.pos(target))
second = ai.secondary()
if ai.secondary() == "Launcher" then
ai.settarget(target)
is.shoot(2)
end
if dir < 10 and dist > 300 then
ai.accel()
elseif dir < 10 and dist < 300 then
ai.shoot()
end
end

View File

@ -152,7 +152,8 @@ static void map_render(double bx, double by, double w, double h) {
// Draw the system. // Draw the system.
if(sys == cur_system) COLOUR(cRadar_targ); if(sys == cur_system) COLOUR(cRadar_targ);
else if(sys->nplanets == 0) COLOUR(cInert); else if(sys->nplanets==0) COLOUR(cInert); // TODO: dependant on planet type.
else if(areEnemies(player->faction, sys->faction)) COLOUR(cRed);
else COLOUR(cYellow); else COLOUR(cYellow);
gl_drawCircleInRect(x + sys->pos.x*map_zoom, gl_drawCircleInRect(x + sys->pos.x*map_zoom,

View File

@ -480,6 +480,10 @@ static StarSystem* system_parse(const xmlNodePtr parent) {
MELEMENT(flags&FLAG_INTEFERENCESET, "inteference"); MELEMENT(flags&FLAG_INTEFERENCESET, "inteference");
#undef MELEMENT #undef MELEMENT
// Post processing.
if(tmp->nplanets > 0)
// TODO: Make dependant on overall planet faction.
tmp->faction = tmp->planets[0].faction;
return tmp; return tmp;
} }

View File

@ -67,6 +67,8 @@ typedef struct StarSystem_ {
int stars, asteroids; // Un numero! int stars, asteroids; // Un numero!
double interference; // Un uh.. Percentage. double interference; // Un uh.. Percentage.
Faction* faction; // Overall faction.
Planet* planets; // Planets. Planet* planets; // Planets.
int nplanets; // Total number of planets. int nplanets; // Total number of planets.