Merge
This commit is contained in:
commit
de680a1e5c
@ -1,19 +0,0 @@
|
||||
- Special brush types
|
||||
- Special brush delete
|
||||
- LOVE
|
||||
- LOLZ
|
||||
- Property edit
|
||||
- Saving, loading, thumbnailing, etc
|
||||
- HEAT/COOL
|
||||
- Streamlines
|
||||
- Grid
|
||||
- Sign moving
|
||||
- Electron fancyness with glass, fire_r-g-b now out of scope
|
||||
- Grav fancyness, use current frame index to determine colour, not globals!
|
||||
- Emp flash
|
||||
- Stickman HP
|
||||
|
||||
To do:
|
||||
See TODO's
|
||||
Char * and string, hmm....
|
||||
Vectors for things like signs, stamp list, etc where appropriate
|
2
README
2
README
@ -1,4 +1,4 @@
|
||||
The Powder Toy - November 2012
|
||||
The Powder Toy - March 2013
|
||||
|
||||
Get the latest version here: http://powdertoy.co.uk/Download.html
|
||||
|
||||
|
@ -121,7 +121,12 @@ void Client::Initialise(std::string proxyString)
|
||||
}
|
||||
|
||||
if(proxyString.length())
|
||||
http_init((char*)proxyString.c_str());
|
||||
{
|
||||
char *proxy = new char[proxyString.length() + 1];
|
||||
std::strcpy (proxy, proxyString.c_str());
|
||||
http_init(proxy);
|
||||
delete[] proxy;
|
||||
}
|
||||
else
|
||||
http_init(NULL);
|
||||
|
||||
@ -144,7 +149,14 @@ void Client::Initialise(std::string proxyString)
|
||||
|
||||
if(authUser.ID)
|
||||
{
|
||||
http_auth_headers(versionCheckRequest, (char *)format::NumberToString<int>(authUser.ID).c_str(), NULL, (char *)authUser.SessionID.c_str());
|
||||
std::string idTempString = format::NumberToString<int>(authUser.ID);
|
||||
char *id = new char[idTempString.length() + 1];
|
||||
std::strcpy (id, idTempString.c_str());
|
||||
char *session = new char[authUser.SessionID.length() + 1];
|
||||
std::strcpy (session, authUser.SessionID.c_str());
|
||||
http_auth_headers(versionCheckRequest, id, NULL, session);
|
||||
delete[] id;
|
||||
delete[] session;
|
||||
}
|
||||
}
|
||||
|
||||
@ -404,7 +416,12 @@ void Client::SetProxy(std::string proxy)
|
||||
{
|
||||
http_done();
|
||||
if(proxy.length())
|
||||
http_init((char*)proxy.c_str());
|
||||
{
|
||||
char *tempproxy = new char[proxy.length() + 1];
|
||||
std::strcpy (tempproxy, proxy.c_str());
|
||||
http_init(tempproxy);
|
||||
delete[] tempproxy;
|
||||
}
|
||||
else
|
||||
http_init(NULL);
|
||||
}
|
||||
@ -861,18 +878,24 @@ RequestStatus Client::UploadSave(SaveInfo & save)
|
||||
}
|
||||
|
||||
char *saveName = new char[save.GetName().length() + 1];
|
||||
std::strcpy ( saveName, save.GetName().c_str() );
|
||||
std::strcpy (saveName, save.GetName().c_str());
|
||||
char *saveDescription = new char[save.GetDescription().length() + 1];
|
||||
std::strcpy ( saveDescription, save.GetDescription().c_str() );
|
||||
std::strcpy (saveDescription, save.GetDescription().c_str());
|
||||
char *userid = new char[userIDStream.str().length() + 1];
|
||||
std::strcpy (userid, userIDStream.str().c_str());
|
||||
char *session = new char[authUser.SessionID.length() + 1];
|
||||
std::strcpy (session, authUser.SessionID.c_str());
|
||||
|
||||
char * postNames[] = { "Name", "Description", "Data:save.bin", "Publish", NULL };
|
||||
char * postDatas[] = { saveName, saveDescription, gameData, (char *)(save.GetPublished()?"Public":"Private") };
|
||||
int postLengths[] = { save.GetName().length(), save.GetDescription().length(), gameDataLength, save.GetPublished()?6:7 };
|
||||
//std::cout << postNames[0] << " " << postDatas[0] << " " << postLengths[0] << std::endl;
|
||||
data = http_multipart_post("http://" SERVER "/Save.api", postNames, postDatas, postLengths, (char *)(userIDStream.str().c_str()), NULL, (char *)(authUser.SessionID.c_str()), &dataStatus, &dataLength);
|
||||
data = http_multipart_post("http://" SERVER "/Save.api", postNames, postDatas, postLengths, userid, NULL, session, &dataStatus, &dataLength);
|
||||
|
||||
delete[] saveDescription;
|
||||
delete[] saveName;
|
||||
delete[] userid;
|
||||
delete[] session;
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -998,7 +1021,7 @@ std::string Client::AddStamp(GameSave * saveData)
|
||||
stampStream.write((const char *)gameData, gameDataLength);
|
||||
stampStream.close();
|
||||
|
||||
free(gameData);
|
||||
delete gameData;
|
||||
|
||||
stampIDs.push_front(saveID.str());
|
||||
|
||||
@ -1075,17 +1098,28 @@ RequestStatus Client::ExecVote(int saveID, int direction)
|
||||
std::stringstream idStream;
|
||||
idStream << saveID;
|
||||
|
||||
std::string saveIDText = format::NumberToString<int>(saveID);
|
||||
std::string directionText = direction==1?"Up":"Down";
|
||||
|
||||
std::string userIDText = format::NumberToString<int>(authUser.ID);
|
||||
if(authUser.ID)
|
||||
{
|
||||
char * directionText = (char*)(direction==1?"Up":"Down");
|
||||
std::string saveIDText = format::NumberToString<int>(saveID);
|
||||
std::string userIDText = format::NumberToString<int>(authUser.ID);
|
||||
|
||||
char *id = new char[saveIDText.length() + 1];
|
||||
std::strcpy (id, saveIDText.c_str());
|
||||
char *userid = new char[userIDText.length() + 1];
|
||||
std::strcpy (userid, userIDText.c_str());
|
||||
char *session = new char[authUser.SessionID.length() + 1];
|
||||
std::strcpy (session, authUser.SessionID.c_str());
|
||||
|
||||
char * postNames[] = { "ID", "Action", NULL };
|
||||
char * postDatas[] = { (char*)(saveIDText.c_str()), (char*)(directionText.c_str()) };
|
||||
int postLengths[] = { saveIDText.length(), directionText.length() };
|
||||
char * postDatas[] = { id, directionText };
|
||||
int postLengths[] = { saveIDText.length(), strlen(directionText) };
|
||||
//std::cout << postNames[0] << " " << postDatas[0] << " " << postLengths[0] << std::endl;
|
||||
data = http_multipart_post("http://" SERVER "/Vote.api", postNames, postDatas, postLengths, (char *)(userIDText.c_str()), NULL, (char *)(authUser.SessionID.c_str()), &dataStatus, &dataLength);
|
||||
data = http_multipart_post("http://" SERVER "/Vote.api", postNames, postDatas, postLengths, userid, NULL, session, &dataStatus, &dataLength);
|
||||
|
||||
delete[] id;
|
||||
delete[] userid;
|
||||
delete[] session;
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -1127,7 +1161,11 @@ unsigned char * Client::GetSaveData(int saveID, int saveDate, int & dataLength)
|
||||
urlStream << "http://" << STATICSERVER << "/" << saveID << ".cps";
|
||||
}
|
||||
|
||||
data = (unsigned char *)http_simple_get((char *)urlStream.str().c_str(), &dataStatus, &dataLength);
|
||||
char *url = new char[urlStream.str().length() + 1];
|
||||
std::strcpy (url, urlStream.str().c_str());
|
||||
data = (unsigned char *)http_simple_get(url, &dataStatus, &dataLength);
|
||||
delete[] url;
|
||||
|
||||
if(data && dataStatus == 200)
|
||||
{
|
||||
return data;
|
||||
@ -1616,16 +1654,19 @@ SaveInfo * Client::GetSave(int saveID, int saveDate)
|
||||
tempSave->Favourite = tempFavourite.Value();
|
||||
tempSave->Views = tempViews.Value();
|
||||
tempSave->Version = tempVersion.Value();
|
||||
free(data);
|
||||
return tempSave;
|
||||
}
|
||||
catch (json::Exception &e)
|
||||
{
|
||||
lastError = "Could not read response";
|
||||
free(data);
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (data) free(data);
|
||||
lastError = http_ret_text(dataStatus);
|
||||
}
|
||||
return NULL;
|
||||
|
@ -1038,21 +1038,20 @@ void GameView::OnMouseUp(int x, int y, unsigned button)
|
||||
{
|
||||
if(selectMode==PlaceSave)
|
||||
{
|
||||
Thumbnail * tempThumb = placeSaveThumb;
|
||||
if(tempThumb)
|
||||
if(placeSaveThumb)
|
||||
{
|
||||
int thumbX = selectPoint2.X - (tempThumb->Size.X/2);
|
||||
int thumbY = selectPoint2.Y - (tempThumb->Size.Y/2);
|
||||
int thumbX = selectPoint2.X - (placeSaveThumb->Size.X/2);
|
||||
int thumbY = selectPoint2.Y - (placeSaveThumb->Size.Y/2);
|
||||
|
||||
if(thumbX<0)
|
||||
thumbX = 0;
|
||||
if(thumbX+(tempThumb->Size.X)>=XRES)
|
||||
thumbX = XRES-tempThumb->Size.X;
|
||||
if(thumbX+(placeSaveThumb->Size.X)>=XRES)
|
||||
thumbX = XRES-placeSaveThumb->Size.X;
|
||||
|
||||
if(thumbY<0)
|
||||
thumbY = 0;
|
||||
if(thumbY+(tempThumb->Size.Y)>=YRES)
|
||||
thumbY = YRES-tempThumb->Size.Y;
|
||||
if(thumbY+(placeSaveThumb->Size.Y)>=YRES)
|
||||
thumbY = YRES-placeSaveThumb->Size.Y;
|
||||
|
||||
c->PlaceSave(ui::Point(thumbX, thumbY));
|
||||
}
|
||||
@ -1388,13 +1387,13 @@ void GameView::OnKeyPress(int key, Uint16 character, bool shift, bool ctrl, bool
|
||||
if(ctrl)
|
||||
{
|
||||
c->LoadClipboard();
|
||||
selectPoint2 = ui::Point(-1, -1);
|
||||
selectPoint2 = mousePosition;
|
||||
selectPoint1 = selectPoint2;
|
||||
}
|
||||
break;
|
||||
case 'l':
|
||||
c->LoadStamp();
|
||||
selectPoint2 = ui::Point(-1, -1);
|
||||
selectPoint2 = mousePosition;
|
||||
selectPoint1 = selectPoint2;
|
||||
isMouseDown = false;
|
||||
drawMode = DrawPoints;
|
||||
@ -1696,6 +1695,7 @@ void GameView::NotifyPlaceSaveChanged(GameModel * sender)
|
||||
{
|
||||
placeSaveThumb = SaveRenderer::Ref().Render(sender->GetPlaceSave());
|
||||
selectMode = PlaceSave;
|
||||
selectPoint2 = mousePosition;
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -1850,27 +1850,26 @@ void GameView::OnDraw()
|
||||
{
|
||||
if(selectMode==PlaceSave)
|
||||
{
|
||||
Thumbnail * tempThumb = placeSaveThumb;
|
||||
if(tempThumb && selectPoint2.X!=-1)
|
||||
if(placeSaveThumb && selectPoint2.X!=-1)
|
||||
{
|
||||
int thumbX = selectPoint2.X - (tempThumb->Size.X/2);
|
||||
int thumbY = selectPoint2.Y - (tempThumb->Size.Y/2);
|
||||
int thumbX = selectPoint2.X - (placeSaveThumb->Size.X/2);
|
||||
int thumbY = selectPoint2.Y - (placeSaveThumb->Size.Y/2);
|
||||
|
||||
ui::Point thumbPos = c->NormaliseBlockCoord(ui::Point(thumbX, thumbY));
|
||||
|
||||
if(thumbPos.X<0)
|
||||
thumbPos.X = 0;
|
||||
if(thumbPos.X+(tempThumb->Size.X)>=XRES)
|
||||
thumbPos.X = XRES-tempThumb->Size.X;
|
||||
if(thumbPos.X+(placeSaveThumb->Size.X)>=XRES)
|
||||
thumbPos.X = XRES-placeSaveThumb->Size.X;
|
||||
|
||||
if(thumbPos.Y<0)
|
||||
thumbPos.Y = 0;
|
||||
if(thumbPos.Y+(tempThumb->Size.Y)>=YRES)
|
||||
thumbPos.Y = YRES-tempThumb->Size.Y;
|
||||
if(thumbPos.Y+(placeSaveThumb->Size.Y)>=YRES)
|
||||
thumbPos.Y = YRES-placeSaveThumb->Size.Y;
|
||||
|
||||
ren->draw_image(tempThumb->Data, thumbPos.X, thumbPos.Y, tempThumb->Size.X, tempThumb->Size.Y, 128);
|
||||
ren->draw_image(placeSaveThumb->Data, thumbPos.X, thumbPos.Y, placeSaveThumb->Size.X, placeSaveThumb->Size.Y, 128);
|
||||
|
||||
ren->xor_rect(thumbPos.X, thumbPos.Y, tempThumb->Size.X, tempThumb->Size.Y);
|
||||
ren->xor_rect(thumbPos.X, thumbPos.Y, placeSaveThumb->Size.X, placeSaveThumb->Size.Y);
|
||||
}
|
||||
}
|
||||
else
|
||||
|
@ -362,6 +362,12 @@ void PIXELMETHODS_CLASS::draw_image(pixel *img, int x, int y, int w, int h, int
|
||||
int i, j, r, g, b;
|
||||
if (!img) return;
|
||||
if(y + h > VIDYRES) h = ((VIDYRES)-y)-1; //Adjust height to prevent drawing off the bottom
|
||||
if (y < 0 && -y < h)
|
||||
{
|
||||
img += -y*w;
|
||||
h += y;
|
||||
y = 0;
|
||||
}
|
||||
if(!h || y < 0) return;
|
||||
if(a >= 255)
|
||||
for (j=0; j<h; j++)
|
||||
|
@ -408,7 +408,7 @@ void Window::DoMouseDown(int x_, int y_, unsigned button)
|
||||
if(!stop)
|
||||
OnMouseDown(x_, y_, button);
|
||||
|
||||
if(x_ < Position.X || y_ < Position.Y || x_ > Position.X+Size.X || y_ > Position.Y+Size.Y)
|
||||
if(!clickState && (x_ < Position.X || y_ < Position.Y || x_ > Position.X+Size.X || y_ > Position.Y+Size.Y))
|
||||
OnTryExit(MouseOutside);
|
||||
|
||||
if(destruct)
|
||||
|
@ -36,28 +36,62 @@ void * PreviewModel::updateSaveCommentsTHelper(void * obj)
|
||||
return ((PreviewModel*)obj)->updateSaveCommentsT();
|
||||
}
|
||||
|
||||
void PreviewModel::updateSaveInfoTDelete(void * arg)
|
||||
{
|
||||
delete arg;
|
||||
}
|
||||
void PreviewModel::updateSaveDataTDelete(void * arg)
|
||||
{
|
||||
free(arg);
|
||||
}
|
||||
void PreviewModel::updateSaveCommentsTDelete(void * arg)
|
||||
{
|
||||
for(int i = 0; i < ((std::vector<SaveComment*> *)arg)->size(); i++)
|
||||
delete ((std::vector<SaveComment*> *)arg)->at(i);
|
||||
((std::vector<SaveComment*> *)arg)->clear();
|
||||
delete arg;
|
||||
}
|
||||
|
||||
void * PreviewModel::updateSaveInfoT()
|
||||
{
|
||||
SaveInfo * tempSave = Client::Ref().GetSave(tSaveID, tSaveDate);
|
||||
SaveInfo * tempSave;
|
||||
pthread_setcancelstate(PTHREAD_CANCEL_DISABLE,NULL);
|
||||
tempSave = Client::Ref().GetSave(tSaveID, tSaveDate);
|
||||
pthread_cleanup_push(&updateSaveInfoTDelete,tempSave);
|
||||
pthread_setcancelstate(PTHREAD_CANCEL_ENABLE,NULL);
|
||||
pthread_testcancel();
|
||||
updateSaveInfoFinished = true;
|
||||
pthread_cleanup_pop(0);
|
||||
return tempSave;
|
||||
}
|
||||
|
||||
void * PreviewModel::updateSaveDataT()
|
||||
{
|
||||
int tempDataSize;
|
||||
unsigned char * tempData = Client::Ref().GetSaveData(tSaveID, tSaveDate, tempDataSize);
|
||||
unsigned char * tempData;
|
||||
pthread_setcancelstate(PTHREAD_CANCEL_DISABLE,NULL);
|
||||
tempData = Client::Ref().GetSaveData(tSaveID, tSaveDate, tempDataSize);
|
||||
pthread_cleanup_push(&updateSaveDataTDelete,tempData);
|
||||
pthread_setcancelstate(PTHREAD_CANCEL_ENABLE,NULL);
|
||||
pthread_testcancel();
|
||||
saveDataBuffer.clear();
|
||||
if (tempData)
|
||||
saveDataBuffer.insert(saveDataBuffer.begin(), tempData, tempData+tempDataSize);
|
||||
updateSaveDataFinished = true;
|
||||
pthread_cleanup_pop(1);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
void * PreviewModel::updateSaveCommentsT()
|
||||
{
|
||||
std::vector<SaveComment*> * tempComments = Client::Ref().GetComments(tSaveID, (commentsPageNumber-1)*20, 20);
|
||||
std::vector<SaveComment*> * tempComments;
|
||||
pthread_setcancelstate(PTHREAD_CANCEL_DISABLE,NULL);
|
||||
tempComments = Client::Ref().GetComments(tSaveID, (commentsPageNumber-1)*20, 20);
|
||||
pthread_cleanup_push(&updateSaveCommentsTDelete,tempComments);
|
||||
pthread_setcancelstate(PTHREAD_CANCEL_ENABLE,NULL);
|
||||
pthread_testcancel();
|
||||
updateSaveCommentsFinished = true;
|
||||
pthread_cleanup_pop(0);
|
||||
return tempComments;
|
||||
}
|
||||
|
||||
@ -101,6 +135,7 @@ void PreviewModel::UpdateSave(int saveID, int saveDate)
|
||||
for(int i = 0; i < saveComments->size(); i++)
|
||||
delete saveComments->at(i);
|
||||
saveComments->clear();
|
||||
delete saveComments;
|
||||
saveComments = NULL;
|
||||
}
|
||||
notifySaveChanged();
|
||||
@ -166,6 +201,7 @@ void PreviewModel::UpdateComments(int pageNumber)
|
||||
{
|
||||
for(int i = 0; i < saveComments->size(); i++)
|
||||
delete saveComments->at(i);
|
||||
saveComments->clear();
|
||||
delete saveComments;
|
||||
saveComments = NULL;
|
||||
}
|
||||
@ -307,6 +343,9 @@ void PreviewModel::Update()
|
||||
}
|
||||
|
||||
PreviewModel::~PreviewModel() {
|
||||
pthread_cancel(updateSaveDataThread);
|
||||
pthread_cancel(updateSaveInfoThread);
|
||||
pthread_cancel(updateSaveCommentsThread);
|
||||
if(save)
|
||||
delete save;
|
||||
if(saveComments)
|
||||
@ -314,6 +353,7 @@ PreviewModel::~PreviewModel() {
|
||||
for(int i = 0; i < saveComments->size(); i++)
|
||||
delete saveComments->at(i);
|
||||
saveComments->clear();
|
||||
delete saveComments;
|
||||
}
|
||||
saveDataBuffer.clear();
|
||||
}
|
||||
|
@ -44,18 +44,21 @@ class PreviewModel {
|
||||
volatile bool updateSaveDataFinished;
|
||||
pthread_t updateSaveDataThread;
|
||||
static void * updateSaveDataTHelper(void * obj);
|
||||
static void updateSaveDataTDelete(void * arg);
|
||||
void * updateSaveDataT();
|
||||
|
||||
bool updateSaveInfoWorking;
|
||||
volatile bool updateSaveInfoFinished;
|
||||
pthread_t updateSaveInfoThread;
|
||||
static void * updateSaveInfoTHelper(void * obj);
|
||||
static void updateSaveInfoTDelete(void * arg);
|
||||
void * updateSaveInfoT();
|
||||
|
||||
bool updateSaveCommentsWorking;
|
||||
volatile bool updateSaveCommentsFinished;
|
||||
pthread_t updateSaveCommentsThread;
|
||||
static void * updateSaveCommentsTHelper(void * obj);
|
||||
static void updateSaveCommentsTDelete(void * arg);
|
||||
void * updateSaveCommentsT();
|
||||
public:
|
||||
PreviewModel();
|
||||
|
@ -64,7 +64,7 @@ void * SearchModel::updateTagListT()
|
||||
void SearchModel::UpdateSaveList(int pageNumber, std::string query)
|
||||
{
|
||||
//Threading
|
||||
if(!updateSaveListWorking && !updateTagListWorking)
|
||||
if(!updateSaveListWorking)
|
||||
{
|
||||
lastQuery = query;
|
||||
lastError = "";
|
||||
@ -84,7 +84,7 @@ void SearchModel::UpdateSaveList(int pageNumber, std::string query)
|
||||
selected.clear();
|
||||
notifySelectedChanged();
|
||||
|
||||
if(GetShowTags() && !tagList.size())
|
||||
if(GetShowTags() && !tagList.size() && !updateTagListWorking)
|
||||
{
|
||||
updateTagListFinished = false;
|
||||
updateTagListWorking = true;
|
||||
|
@ -48,7 +48,7 @@ private:
|
||||
bool updateTagListWorking;
|
||||
volatile bool updateTagListFinished;
|
||||
pthread_t updateTagListThread;
|
||||
static void * updateTagListTHelper(void * obj);
|
||||
static void * updateTagListTHelper(void * obj);
|
||||
void * updateTagListT();
|
||||
public:
|
||||
SearchModel();
|
||||
|
@ -146,10 +146,13 @@ int Simulation::Load(int fullX, int fullY, GameSave * save)
|
||||
Element_PPIP::ppip_changed = 1;
|
||||
for(int i = 0; i < save->signs.size() && signs.size() < MAXSIGNS; i++)
|
||||
{
|
||||
sign tempSign = save->signs[i];
|
||||
tempSign.x += fullX;
|
||||
tempSign.y += fullY;
|
||||
signs.push_back(tempSign);
|
||||
if (save->signs[i].text[0])
|
||||
{
|
||||
sign tempSign = save->signs[i];
|
||||
tempSign.x += fullX;
|
||||
tempSign.y += fullY;
|
||||
signs.push_back(tempSign);
|
||||
}
|
||||
}
|
||||
for(int saveBlockX = 0; saveBlockX < save->blockWidth; saveBlockX++)
|
||||
{
|
||||
@ -2105,7 +2108,6 @@ void Simulation::init_can_move()
|
||||
}
|
||||
can_move[PT_ELEC][PT_LCRY] = 2;
|
||||
can_move[PT_ELEC][PT_EXOT] = 2;
|
||||
can_move[PT_NEUT][PT_EXOT] = 2;
|
||||
can_move[PT_PHOT][PT_LCRY] = 3;//varies according to LCRY life
|
||||
|
||||
can_move[PT_PHOT][PT_BIZR] = 2;
|
||||
@ -2115,7 +2117,6 @@ void Simulation::init_can_move()
|
||||
can_move[PT_PHOT][PT_BIZRS] = 2;
|
||||
can_move[PT_ELEC][PT_BIZRS] = 2;
|
||||
|
||||
can_move[PT_NEUT][PT_INVIS] = 2;
|
||||
//whol eats anar
|
||||
can_move[PT_ANAR][PT_WHOL] = 1;
|
||||
can_move[PT_ANAR][PT_NWHL] = 1;
|
||||
|
@ -31,7 +31,7 @@ Element_DEUT::Element_DEUT()
|
||||
Description = "Deuterium oxide. Volume changes with temp, radioactive with neutrons.";
|
||||
|
||||
State = ST_LIQUID;
|
||||
Properties = TYPE_LIQUID|PROP_NEUTPENETRATE;
|
||||
Properties = TYPE_LIQUID|PROP_NEUTPASS;
|
||||
|
||||
LowPressure = IPL;
|
||||
LowPressureTransition = NT;
|
||||
|
@ -31,7 +31,7 @@ Element_DSTW::Element_DSTW()
|
||||
Description = "Distilled water, does not conduct electricity.";
|
||||
|
||||
State = ST_LIQUID;
|
||||
Properties = TYPE_LIQUID|PROP_NEUTPENETRATE;
|
||||
Properties = TYPE_LIQUID|PROP_NEUTPASS;
|
||||
|
||||
LowPressure = IPL;
|
||||
LowPressureTransition = NT;
|
||||
|
@ -31,7 +31,7 @@ Element_EXOT::Element_EXOT()
|
||||
Description = "Exotic matter. Explodes with excess exposure to electrons.";
|
||||
|
||||
State = ST_LIQUID;
|
||||
Properties = TYPE_LIQUID;
|
||||
Properties = TYPE_LIQUID|PROP_NEUTPASS;
|
||||
|
||||
LowPressure = IPL;
|
||||
LowPressureTransition = NT;
|
||||
|
@ -31,7 +31,7 @@ Element_GAS::Element_GAS()
|
||||
Description = "Gas. Diffuses. Flammable. Liquefies under pressure.";
|
||||
|
||||
State = ST_GAS;
|
||||
Properties = TYPE_GAS | PROP_NEUTPENETRATE;
|
||||
Properties = TYPE_GAS | PROP_NEUTPASS;
|
||||
|
||||
LowPressure = IPL;
|
||||
LowPressureTransition = NT;
|
||||
@ -46,4 +46,4 @@ Element_GAS::Element_GAS()
|
||||
|
||||
}
|
||||
|
||||
Element_GAS::~Element_GAS() {}
|
||||
Element_GAS::~Element_GAS() {}
|
||||
|
@ -31,7 +31,7 @@ Element_ICEI::Element_ICEI()
|
||||
Description = "Solid. Freezes water. Crushes under pressure. Cools down air.";
|
||||
|
||||
State = ST_SOLID;
|
||||
Properties = TYPE_SOLID|PROP_LIFE_DEC|PROP_NEUTPENETRATE;
|
||||
Properties = TYPE_SOLID|PROP_LIFE_DEC|PROP_NEUTPASS;
|
||||
|
||||
LowPressure = IPL;
|
||||
LowPressureTransition = NT;
|
||||
|
@ -31,7 +31,7 @@ Element_OIL::Element_OIL()
|
||||
Description = "Liquid. Flammable.";
|
||||
|
||||
State = ST_LIQUID;
|
||||
Properties = TYPE_LIQUID | PROP_NEUTPENETRATE;
|
||||
Properties = TYPE_LIQUID | PROP_NEUTPASS;
|
||||
|
||||
LowPressure = IPL;
|
||||
LowPressureTransition = NT;
|
||||
@ -46,4 +46,4 @@ Element_OIL::Element_OIL()
|
||||
|
||||
}
|
||||
|
||||
Element_OIL::~Element_OIL() {}
|
||||
Element_OIL::~Element_OIL() {}
|
||||
|
@ -31,7 +31,7 @@ Element_PLUT::Element_PLUT()
|
||||
Description = "Heavy particles. Fissile. Generates neutrons under pressure.";
|
||||
|
||||
State = ST_SOLID;
|
||||
Properties = TYPE_PART|PROP_NEUTPENETRATE|PROP_RADIOACTIVE;
|
||||
Properties = TYPE_PART|PROP_NEUTPASS|PROP_RADIOACTIVE;
|
||||
|
||||
LowPressure = IPL;
|
||||
LowPressureTransition = NT;
|
||||
|
@ -31,7 +31,7 @@ Element_SNOW::Element_SNOW()
|
||||
Description = "Light particles.";
|
||||
|
||||
State = ST_SOLID;
|
||||
Properties = TYPE_PART|PROP_LIFE_DEC|PROP_NEUTPENETRATE;
|
||||
Properties = TYPE_PART|PROP_LIFE_DEC|PROP_NEUTPASS;
|
||||
|
||||
LowPressure = IPL;
|
||||
LowPressureTransition = NT;
|
||||
|
@ -31,7 +31,7 @@ Element_WATR::Element_WATR()
|
||||
Description = "Liquid. Conducts electricity. Freezes. Extinguishes fires.";
|
||||
|
||||
State = ST_LIQUID;
|
||||
Properties = TYPE_LIQUID|PROP_CONDUCTS|PROP_LIFE_DEC|PROP_NEUTPENETRATE;
|
||||
Properties = TYPE_LIQUID|PROP_CONDUCTS|PROP_LIFE_DEC|PROP_NEUTPASS;
|
||||
|
||||
LowPressure = IPL;
|
||||
LowPressureTransition = NT;
|
||||
|
Reference in New Issue
Block a user