Skip to content

Commit

Permalink
qtscript: Rename missionTimer() -> getMissionTimer() for consistency.
Browse files Browse the repository at this point in the history
Add possibility to load droids conditionally based on difficulty level.
Add assert for correct weapon size requirement. Make addDroid() put
droids in the middle of tiles.
  • Loading branch information
perim committed Dec 15, 2012
1 parent 7db682e commit 7de0941
Show file tree
Hide file tree
Showing 5 changed files with 43 additions and 12 deletions.
7 changes: 1 addition & 6 deletions data/base/script/campaign/cam1a.js
Expand Up @@ -77,7 +77,7 @@ function eventCheatMode(entered)
function gameWon()
{
enableResearch("R-Wpn-MG1Mk1"); // bonus research topic on level end
var bonusTime = missionTime();
var bonusTime = getMissionTime();
if (bonusTime > 0)
{
setPowerModifier(125); // 25% bonus to completing fast
Expand Down Expand Up @@ -266,11 +266,6 @@ function eventStartLevel()
addartifact("artifact3pos", "artifact3");
addartifact("artifact2pos", "artifact4");

//groupAddArea(scavGroup, enemy1, 4416, 6336, 5440, 7104);
//setGroupRetreatPoint(scavGroup, 4416, 5440); //retreat to crossroads
//setGroupRetreatForce(scavGroup, 99); //set morale to 1%
//setGroupRetreatLeadership(scavGroup, 10);

setTimer("tick", 1000);
}

Expand Down
8 changes: 8 additions & 0 deletions data/base/wrf/cam1/cam1a/droid.ini
Expand Up @@ -292,6 +292,14 @@ rotation = 0, 0, 0
player = 7
template = BaBaPeople

[droid_0921]
id = 921
position = 5180, 6700, 8
rotation = 90, 0, 0
player = 7
template = BarbarianTrike
difficulty = 2

[droid_3227]
id = 3227
position = 1778, 6452, 11
Expand Down
27 changes: 27 additions & 0 deletions src/game.cpp
Expand Up @@ -47,6 +47,7 @@
#include "game.h"
#include "qtscript.h"
#include "fpath.h"
#include "difficulty.h"
#include "map.h"
#include "droid.h"
#include "action.h"
Expand Down Expand Up @@ -4085,6 +4086,20 @@ static void setPlayer(WzConfig &ini, int player)
}
}

static bool skipForDifficulty(WzConfig &ini, int player)
{
if (ini.contains("difficulty")) // optionally skip this object
{
int difficulty = ini.value("difficulty").toInt();
if ((game.type == CAMPAIGN && difficulty > (int)getDifficultyLevel())
|| (game.type == SKIRMISH && difficulty > NetPlay.players[player].difficulty))
{
return true;
}
}
return false;
}

static bool loadSaveDroidPointers(const QString &pFileName, DROID **ppsCurrentDroidLists)
{
WzConfig ini(pFileName);
Expand All @@ -4100,11 +4115,17 @@ static bool loadSaveDroidPointers(const QString &pFileName, DROID **ppsCurrentDr
DROID *psDroid;
int id = ini.value("id").toInt();
int player = getPlayer(ini);

if (id <= 0)
{
ini.endGroup();
continue; // special hack for campaign missions, cannot have targets
}
if (skipForDifficulty(ini, player))
{
ini.endGroup();
continue; // another hack for campaign missions, cannot have targets
}

for (psDroid = ppsCurrentDroidLists[player]; psDroid && psDroid->id != id; psDroid = psDroid->psNext)
{
Expand Down Expand Up @@ -4228,6 +4249,12 @@ static bool loadSaveDroid(const char *pFileName, DROID **ppsCurrentDroidLists)
bool onMission = ini.value("onMission", false).toBool();
DROID_TEMPLATE templ, *psTemplate = &templ;

if (skipForDifficulty(ini, player))
{
ini.endGroup();
continue;
}

if (ini.contains("template"))
{
// Use real template (for maps)
Expand Down
9 changes: 4 additions & 5 deletions src/qtscriptfuncs.cpp
Expand Up @@ -1175,7 +1175,6 @@ static QScriptValue js_addDroid(QScriptContext *context, QScriptEngine *engine)
psTemplate->numWeaps = 0;
for (int i = 0; i < numTurrets; i++)
{
context->argument(8 + i).toString();
int j;
switch (droidType)
{
Expand Down Expand Up @@ -1231,7 +1230,7 @@ static QScriptValue js_addDroid(QScriptContext *context, QScriptEngine *engine)
{
bool oldMulti = bMultiMessages;
bMultiMessages = false; // ugh, fixme
DROID *psDroid = buildDroid(psTemplate, world_coord(x), world_coord(y), player, false, NULL);
DROID *psDroid = buildDroid(psTemplate, world_coord(x) + TILE_UNITS / 2, world_coord(y) + TILE_UNITS / 2, player, false, NULL);
if (psDroid)
{
addDroid(psDroid, apsDroidLists);
Expand Down Expand Up @@ -2075,8 +2074,8 @@ static QScriptValue js_setMissionTime(QScriptContext *context, QScriptEngine *)
return QScriptValue();
}

//-- \subsection{missionTime()} Get time remaining on mission countdown in seconds.
static QScriptValue js_missionTime(QScriptContext *, QScriptEngine *)
//-- \subsection{getMissionTime()} Get time remaining on mission countdown in seconds.
static QScriptValue js_getMissionTime(QScriptContext *, QScriptEngine *)
{
return QScriptValue((mission.time - (gameTime - mission.startTime)) / 1000);
}
Expand Down Expand Up @@ -3551,7 +3550,7 @@ bool registerFunctions(QScriptEngine *engine, QString scriptName)
engine->globalObject().setProperty("setStructureLimits", engine->newFunction(js_setStructureLimits));
engine->globalObject().setProperty("applyLimitSet", engine->newFunction(js_applyLimitSet));
engine->globalObject().setProperty("setMissionTime", engine->newFunction(js_setMissionTime));
engine->globalObject().setProperty("missionTime", engine->newFunction(js_missionTime));
engine->globalObject().setProperty("getMissionTime", engine->newFunction(js_getMissionTime));
engine->globalObject().setProperty("setReinforcementTime", engine->newFunction(js_setReinforcementTime));
engine->globalObject().setProperty("completeResearch", engine->newFunction(js_completeResearch));
engine->globalObject().setProperty("enableResearch", engine->newFunction(js_enableResearch));
Expand Down
4 changes: 3 additions & 1 deletion src/stats.cpp
Expand Up @@ -675,7 +675,9 @@ bool loadWeaponStats(const char *pFileName)
psStats->designable = ini.value("designable").toBool();
psStats->penetrate = ini.value("penetrate").toBool();
// weapon size limitation
psStats->weaponSize = (WEAPON_SIZE)ini.value("weaponSize", WEAPON_SIZE_ANY).toInt();
int weaponSize = ini.value("weaponSize", WEAPON_SIZE_ANY).toInt();
ASSERT(weaponSize <= WEAPON_SIZE_ANY, "Bad weapon size for %s", list[i].toUtf8().constData());
psStats->weaponSize = (WEAPON_SIZE)weaponSize;

ASSERT(psStats->flightSpeed > 0, "Invalid flight speed for %s", list[i].toUtf8().constData());

Expand Down

0 comments on commit 7de0941

Please sign in to comment.