|
|
include "terminal"
|
|
|
include "terminal/common.lua"
|
|
|
|
|
|
obj {
|
|
|
nam = 'tower_key_0';
|
|
|
value = 1;
|
|
|
nam = 'tower_key_0';
|
|
|
value = 1;
|
|
|
color = 'red';
|
|
|
disp = translate("tower_locale", 'tower_red_key_disp');
|
|
|
disp2 = translate("tower_locale", 'tower_red_key_disp2');
|
|
|
disp3 = translate("tower_locale", 'tower_red_key_disp3');
|
|
|
inv = translate("tower_locale", 'tower_red_key_inv');
|
|
|
disp = translate("tower_locale", 'tower_red_key_disp');
|
|
|
disp2 = translate("tower_locale", 'tower_red_key_disp2');
|
|
|
disp3 = translate("tower_locale", 'tower_red_key_disp3');
|
|
|
inv = translate("tower_locale", 'tower_red_key_inv');
|
|
|
}
|
|
|
|
|
|
obj {
|
|
|
nam = 'tower_key_1';
|
|
|
value = 2;
|
|
|
nam = 'tower_key_1';
|
|
|
value = 2;
|
|
|
color = 'gold';
|
|
|
disp = translate("tower_locale", 'tower_gold_key_disp');
|
|
|
disp2 = translate("tower_locale", 'tower_gold_key_disp2');
|
|
|
disp3 = translate("tower_locale", 'tower_gold_key_disp3');
|
|
|
inv = translate("tower_locale", 'tower_gold_key_inv');
|
|
|
disp = translate("tower_locale", 'tower_gold_key_disp');
|
|
|
disp2 = translate("tower_locale", 'tower_gold_key_disp2');
|
|
|
disp3 = translate("tower_locale", 'tower_gold_key_disp3');
|
|
|
inv = translate("tower_locale", 'tower_gold_key_inv');
|
|
|
}
|
|
|
|
|
|
obj {
|
|
|
nam = 'tower_key_2';
|
|
|
value = 3;
|
|
|
nam = 'tower_key_2';
|
|
|
value = 3;
|
|
|
color = 'blue';
|
|
|
disp = translate("tower_locale", 'tower_blue_key_disp');
|
|
|
disp2 = translate("tower_locale", 'tower_blue_key_disp2');
|
|
|
disp3 = translate("tower_locale", 'tower_blue_key_disp3');
|
|
|
inv = translate("tower_locale", 'tower_blue_key_inv');
|
|
|
disp = translate("tower_locale", 'tower_blue_key_disp');
|
|
|
disp2 = translate("tower_locale", 'tower_blue_key_disp2');
|
|
|
disp3 = translate("tower_locale", 'tower_blue_key_disp3');
|
|
|
inv = translate("tower_locale", 'tower_blue_key_inv');
|
|
|
}
|
|
|
|
|
|
obj {
|
|
|
nam = 'tower_key_3';
|
|
|
value = 4;
|
|
|
nam = 'tower_key_3';
|
|
|
value = 4;
|
|
|
color = 'green';
|
|
|
disp = translate("tower_locale", 'tower_green_key_disp');
|
|
|
disp2 = translate("tower_locale", 'tower_green_key_disp2');
|
|
|
disp3 = translate("tower_locale", 'tower_green_key_disp3');
|
|
|
inv = translate("tower_locale", 'tower_green_key_inv');
|
|
|
disp = translate("tower_locale", 'tower_green_key_disp');
|
|
|
disp2 = translate("tower_locale", 'tower_green_key_disp2');
|
|
|
disp3 = translate("tower_locale", 'tower_green_key_disp3');
|
|
|
inv = translate("tower_locale", 'tower_green_key_inv');
|
|
|
}
|
|
|
|
|
|
obj {
|
|
|
nam = 'tower_level_2_key';
|
|
|
disp = translate("tower_locale", 'tower_level_2_key_disp');
|
|
|
inv = translate("tower_locale", 'tower_level_2_key_dsc');
|
|
|
nam = 'tower_level_2_key';
|
|
|
disp = translate("tower_locale", 'tower_level_2_key_disp');
|
|
|
inv = translate("tower_locale", 'tower_level_2_key_dsc');
|
|
|
}
|
|
|
|
|
|
obj {
|
|
|
nam = 'tower_hint_1';
|
|
|
disp = translate("tower_locale", 'tower_hint_1_disp');
|
|
|
inv = function(s)
|
|
|
nam = 'tower_hint_1';
|
|
|
disp = translate("tower_locale", 'tower_hint_1_disp');
|
|
|
inv = function(s)
|
|
|
return translate_now("tower_locale", 'tower_hint_1_inv', {target=level_1_target});
|
|
|
end;
|
|
|
}
|
|
@@ -125,108 +125,108 @@ dlg {
|
|
|
};
|
|
|
|
|
|
obj {
|
|
|
nam = 'flask';
|
|
|
disp = translate("tower_locale", 'flask_disp');
|
|
|
disp2 = translate("tower_locale", 'flask_disp2');
|
|
|
disp3 = translate("tower_locale", 'flask_disp3');
|
|
|
inv = translate("tower_locale", 'flask_inv');
|
|
|
nam = 'flask';
|
|
|
disp = translate("tower_locale", 'flask_disp');
|
|
|
disp2 = translate("tower_locale", 'flask_disp2');
|
|
|
disp3 = translate("tower_locale", 'flask_disp3');
|
|
|
inv = translate("tower_locale", 'flask_inv');
|
|
|
}
|
|
|
|
|
|
obj {
|
|
|
nam = 'potion_open';
|
|
|
disp = translate("tower_locale", 'potion_open_disp');
|
|
|
disp2 = translate("tower_locale", 'potion_open_disp2');
|
|
|
disp3 = translate("tower_locale", 'potion_open_disp3');
|
|
|
inv = translate("tower_locale", 'potion_open_inv');
|
|
|
nam = 'potion_open';
|
|
|
disp = translate("tower_locale", 'potion_open_disp');
|
|
|
disp2 = translate("tower_locale", 'potion_open_disp2');
|
|
|
disp3 = translate("tower_locale", 'potion_open_disp3');
|
|
|
inv = translate("tower_locale", 'potion_open_inv');
|
|
|
}
|
|
|
|
|
|
obj {
|
|
|
nam = 'potion_light';
|
|
|
disp = translate("tower_locale", 'potion_light_disp');
|
|
|
disp2 = translate("tower_locale", 'potion_light_disp2');
|
|
|
disp3 = translate("tower_locale", 'potion_light_disp3');
|
|
|
inv = function(s)
|
|
|
if here()^'tower_level_3_room_2' then
|
|
|
remove('potion_light', pl);
|
|
|
here().light = true;
|
|
|
_'#door':enable();
|
|
|
_'#shelves':enable();
|
|
|
_'level_3_room_2_down':enable()
|
|
|
_'#darkness':disable();
|
|
|
return translate_now("tower_locale", 'potion_light_inv_used');
|
|
|
else
|
|
|
return translate_now("tower_locale", 'potion_light_inv');
|
|
|
end;
|
|
|
end;
|
|
|
nam = 'potion_light';
|
|
|
disp = translate("tower_locale", 'potion_light_disp');
|
|
|
disp2 = translate("tower_locale", 'potion_light_disp2');
|
|
|
disp3 = translate("tower_locale", 'potion_light_disp3');
|
|
|
inv = function(s)
|
|
|
if here()^'tower_level_3_room_2' then
|
|
|
remove('potion_light', pl);
|
|
|
here().light = true;
|
|
|
_'#door':enable();
|
|
|
_'#shelves':enable();
|
|
|
_'level_3_room_2_down':enable()
|
|
|
_'#darkness':disable();
|
|
|
return translate_now("tower_locale", 'potion_light_inv_used');
|
|
|
else
|
|
|
return translate_now("tower_locale", 'potion_light_inv');
|
|
|
end;
|
|
|
end;
|
|
|
}
|
|
|
|
|
|
obj {
|
|
|
nam = 'candle';
|
|
|
disp = translate("tower_locale", 'candle_disp');
|
|
|
disp2 = translate("tower_locale", 'candle_disp2');
|
|
|
disp3 = translate("tower_locale", 'candle_disp3');
|
|
|
inv = translate("tower_locale", 'candle_inv');
|
|
|
nam = 'candle';
|
|
|
disp = translate("tower_locale", 'candle_disp');
|
|
|
disp2 = translate("tower_locale", 'candle_disp2');
|
|
|
disp3 = translate("tower_locale", 'candle_disp3');
|
|
|
inv = translate("tower_locale", 'candle_inv');
|
|
|
}
|
|
|
|
|
|
obj {
|
|
|
nam = 'potion_enrichment';
|
|
|
disp = translate("tower_locale", 'potion_enrichment_disp');
|
|
|
disp2 = translate("tower_locale", 'potion_enrichment_disp2');
|
|
|
disp3 = translate("tower_locale", 'potion_enrichment_disp3');
|
|
|
inv = translate("tower_locale", 'potion_enrichment_inv');
|
|
|
nam = 'potion_enrichment';
|
|
|
disp = translate("tower_locale", 'potion_enrichment_disp');
|
|
|
disp2 = translate("tower_locale", 'potion_enrichment_disp2');
|
|
|
disp3 = translate("tower_locale", 'potion_enrichment_disp3');
|
|
|
inv = translate("tower_locale", 'potion_enrichment_inv');
|
|
|
}
|
|
|
|
|
|
obj {
|
|
|
nam = 'emerald';
|
|
|
disp = translate("tower_locale", 'emerald_disp');
|
|
|
disp2 = translate("tower_locale", 'emerald_disp2');
|
|
|
disp3 = translate("tower_locale", 'emerald_disp3');
|
|
|
inv = translate("tower_locale", 'emerald_inv');
|
|
|
nam = 'emerald';
|
|
|
disp = translate("tower_locale", 'emerald_disp');
|
|
|
disp2 = translate("tower_locale", 'emerald_disp2');
|
|
|
disp3 = translate("tower_locale", 'emerald_disp3');
|
|
|
inv = translate("tower_locale", 'emerald_inv');
|
|
|
}
|
|
|
|
|
|
obj {
|
|
|
nam = 'password_note';
|
|
|
disp = translate("tower_locale", 'password_note_disp');
|
|
|
disp2 = translate("tower_locale", 'password_note_disp2');
|
|
|
disp3 = translate("tower_locale", 'password_note_disp3');
|
|
|
inv = function(s)
|
|
|
nam = 'password_note';
|
|
|
disp = translate("tower_locale", 'password_note_disp');
|
|
|
disp2 = translate("tower_locale", 'password_note_disp2');
|
|
|
disp3 = translate("tower_locale", 'password_note_disp3');
|
|
|
inv = function(s)
|
|
|
return translate_now("tower_locale", 'password_note_inv', {password=password1});
|
|
|
end;
|
|
|
}
|
|
|
|
|
|
obj {
|
|
|
nam = 'tool_box';
|
|
|
dsc = translate("tower_locale", 'tool_box_dsc');
|
|
|
disp = translate("tower_locale", 'tool_box_disp');
|
|
|
disp2 = translate("tower_locale", 'tool_box_disp2');
|
|
|
disp3 = translate("tower_locale", 'tool_box_disp3');
|
|
|
inv = translate("tower_locale", 'tool_box_inv');
|
|
|
nam = 'tool_box';
|
|
|
dsc = translate("tower_locale", 'tool_box_dsc');
|
|
|
disp = translate("tower_locale", 'tool_box_disp');
|
|
|
disp2 = translate("tower_locale", 'tool_box_disp2');
|
|
|
disp3 = translate("tower_locale", 'tool_box_disp3');
|
|
|
inv = translate("tower_locale", 'tool_box_inv');
|
|
|
};
|
|
|
|
|
|
obj {
|
|
|
state = 0; -- 0 - empty, 1 - cold water, 2 - hot water
|
|
|
nam = 'kettle';
|
|
|
disp = function(s)
|
|
|
if s.state == 0 then
|
|
|
return translate_now("tower_locale", 'kettle_disp');
|
|
|
elseif s.state == 1 then
|
|
|
return translate_now("tower_locale", 'kettle_disp_water');
|
|
|
elseif s.state == 2 then
|
|
|
return translate_now("tower_locale", 'kettle_disp_hot_water');
|
|
|
end;
|
|
|
end;
|
|
|
disp2 = translate("tower_locale", 'kettle_disp2');
|
|
|
disp3 = translate("tower_locale", 'kettle_disp3');
|
|
|
inv = function(s)
|
|
|
state = 0; -- 0 - empty, 1 - cold water, 2 - hot water
|
|
|
nam = 'kettle';
|
|
|
disp = function(s)
|
|
|
if s.state == 0 then
|
|
|
return translate_now("tower_locale", 'kettle_disp');
|
|
|
elseif s.state == 1 then
|
|
|
return translate_now("tower_locale", 'kettle_disp_water');
|
|
|
elseif s.state == 2 then
|
|
|
return translate_now("tower_locale", 'kettle_disp_hot_water');
|
|
|
end;
|
|
|
end;
|
|
|
disp2 = translate("tower_locale", 'kettle_disp2');
|
|
|
disp3 = translate("tower_locale", 'kettle_disp3');
|
|
|
inv = function(s)
|
|
|
p(translate_now("tower_locale", 'kettle_inv'));
|
|
|
if s.state == 0 then
|
|
|
p(translate_now("tower_locale", 'kettle_inv_empty'));
|
|
|
elseif s.state == 1 then
|
|
|
p(translate_now("tower_locale", 'kettle_inv_water'));
|
|
|
elseif s.state == 2 then
|
|
|
p(translate_now("tower_locale", 'kettle_inv_hot_water'));
|
|
|
end;
|
|
|
end;
|
|
|
if s.state == 0 then
|
|
|
p(translate_now("tower_locale", 'kettle_inv_empty'));
|
|
|
elseif s.state == 1 then
|
|
|
p(translate_now("tower_locale", 'kettle_inv_water'));
|
|
|
elseif s.state == 2 then
|
|
|
p(translate_now("tower_locale", 'kettle_inv_hot_water'));
|
|
|
end;
|
|
|
end;
|
|
|
dsc = translate("tower_locale", 'kettle_dsc');
|
|
|
tak = function(s)
|
|
|
if not _'solarscale_ally'.tea_asked then
|
|
@@ -322,162 +322,162 @@ obj {
|
|
|
};
|
|
|
|
|
|
room {
|
|
|
keys_taken = false;
|
|
|
theme = 'tower';
|
|
|
nam = 'tower_level_1';
|
|
|
pic = 'images/tower_level_1.png';
|
|
|
disp = translate("tower_locale", 'tower_level_1_disp');
|
|
|
decor = translate("tower_locale", 'tower_level_1_decor');
|
|
|
way = {
|
|
|
path {translate("tower_locale", 'transition_leave'), "ending_left"};
|
|
|
path {"level_1_next_room", translate("tower_locale", 'transition_room'), "tower_level_1_room_2"}:disable();
|
|
|
path {"level_1_up", translate("tower_locale", 'transition_upstairs'), "tower_level_2"}:disable();
|
|
|
};
|
|
|
enter = function(s)
|
|
|
snd.music('sound/bgm_tower.ogg');
|
|
|
keys_taken = false;
|
|
|
theme = 'tower';
|
|
|
nam = 'tower_level_1';
|
|
|
pic = 'images/tower_level_1.png';
|
|
|
disp = translate("tower_locale", 'tower_level_1_disp');
|
|
|
decor = translate("tower_locale", 'tower_level_1_decor');
|
|
|
way = {
|
|
|
path {translate("tower_locale", 'transition_leave'), "ending_left"};
|
|
|
path {"level_1_next_room", translate("tower_locale", 'transition_room'), "tower_level_1_room_2"}:disable();
|
|
|
path {"level_1_up", translate("tower_locale", 'transition_upstairs'), "tower_level_2"}:disable();
|
|
|
};
|
|
|
enter = function(s)
|
|
|
snd.music('sound/bgm_tower.ogg');
|
|
|
instead.autosave();
|
|
|
end;
|
|
|
end;
|
|
|
exit = function(s)
|
|
|
_'ending_left'.state = 0;
|
|
|
end;
|
|
|
}: with {
|
|
|
'tower_walls',
|
|
|
obj {
|
|
|
nam = '#ceiling';
|
|
|
act = translate("tower_locale", 'tower_level_1_ceiling');
|
|
|
};
|
|
|
obj {
|
|
|
state = 0;
|
|
|
nam = '#tables';
|
|
|
act = function(s)
|
|
|
p(translate_now("tower_locale", 'tower_level_1_tables'));
|
|
|
if s.state == 0 then
|
|
|
s.state = 1;
|
|
|
p(translate_now("tower_locale", 'tower_level_1_tables_box'));
|
|
|
_'tower_box':enable();
|
|
|
end;
|
|
|
end;
|
|
|
};
|
|
|
obj {
|
|
|
state = 0;
|
|
|
nam = '#candelabra';
|
|
|
act = function(s)
|
|
|
p(translate_now("tower_locale", 'tower_level_1_candelabra'));
|
|
|
if s.state == 0 then
|
|
|
s.state = 1;
|
|
|
p(translate_now("tower_locale", 'tower_level_1_candelabra_keys'));
|
|
|
_'#keys':enable();
|
|
|
else
|
|
|
if not candle_taken then
|
|
|
s.state = 2;
|
|
|
take('candle');
|
|
|
candle_taken = true;
|
|
|
p(translate_now("tower_locale", 'tower_candelabra_candle_taken'));
|
|
|
else
|
|
|
if s.state == 2 then
|
|
|
p(translate_now("tower_locale", 'tower_candelabra_candle_missing'));
|
|
|
end;
|
|
|
end;
|
|
|
end;
|
|
|
'tower_walls',
|
|
|
obj {
|
|
|
nam = '#ceiling';
|
|
|
act = translate("tower_locale", 'tower_level_1_ceiling');
|
|
|
};
|
|
|
obj {
|
|
|
state = 0;
|
|
|
nam = '#tables';
|
|
|
act = function(s)
|
|
|
p(translate_now("tower_locale", 'tower_level_1_tables'));
|
|
|
if s.state == 0 then
|
|
|
s.state = 1;
|
|
|
p(translate_now("tower_locale", 'tower_level_1_tables_box'));
|
|
|
_'tower_box':enable();
|
|
|
end;
|
|
|
end;
|
|
|
};
|
|
|
obj {
|
|
|
state = 0;
|
|
|
nam = '#candelabra';
|
|
|
act = function(s)
|
|
|
p(translate_now("tower_locale", 'tower_level_1_candelabra'));
|
|
|
if s.state == 0 then
|
|
|
s.state = 1;
|
|
|
p(translate_now("tower_locale", 'tower_level_1_candelabra_keys'));
|
|
|
_'#keys':enable();
|
|
|
else
|
|
|
if not candle_taken then
|
|
|
s.state = 2;
|
|
|
take('candle');
|
|
|
candle_taken = true;
|
|
|
p(translate_now("tower_locale", 'tower_candelabra_candle_taken'));
|
|
|
else
|
|
|
if s.state == 2 then
|
|
|
p(translate_now("tower_locale", 'tower_candelabra_candle_missing'));
|
|
|
end;
|
|
|
end;
|
|
|
end;
|
|
|
|
|
|
end;
|
|
|
};
|
|
|
obj {
|
|
|
nam = '#chairs';
|
|
|
act = translate("tower_locale", 'tower_level_1_chairs');
|
|
|
};
|
|
|
obj {
|
|
|
nam = '#keys';
|
|
|
dsc = translate("tower_locale", 'tower_level_1_keys');
|
|
|
act = function(s)
|
|
|
here().keys_taken = true;
|
|
|
take('tower_key_0');
|
|
|
take('tower_key_1');
|
|
|
take('tower_key_2');
|
|
|
take('tower_key_3');
|
|
|
remove('#keys', here());
|
|
|
return translate_now("tower_locale", 'tower_level_1_keys_take');
|
|
|
end;
|
|
|
}:disable();
|
|
|
obj {
|
|
|
nam = 'tower_box';
|
|
|
disp = translate("tower_locale", 'tower_level_1_box_disp');
|
|
|
dsc = translate("tower_locale", 'tower_level_1_box_dsc');
|
|
|
tak = function(s)
|
|
|
take('tower_hint_1');
|
|
|
return translate_now("tower_locale", 'tower_level_1_box_tak');
|
|
|
end;
|
|
|
inv = function(s)
|
|
|
if here()^'inside_box' then
|
|
|
return translate_now("tower_locale", 'tower_level_1_box_inv');
|
|
|
end;
|
|
|
walkin('inside_box');
|
|
|
end;
|
|
|
}:disable();
|
|
|
obj {
|
|
|
state = false;
|
|
|
nam = '#tower_1_door';
|
|
|
dsc = function(s)
|
|
|
if s.state then
|
|
|
return translate_now("tower_locale", 'tower_level_1_door_open');
|
|
|
else
|
|
|
return translate_now("tower_locale", 'tower_level_1_door_closed');
|
|
|
end;
|
|
|
end;
|
|
|
act = function(s)
|
|
|
if s.state then
|
|
|
return translate_now("tower_locale", 'tower_level_1_door_act_open');
|
|
|
else
|
|
|
return translate_now("tower_locale", 'tower_level_1_door_act_closed');
|
|
|
end;
|
|
|
end;
|
|
|
used = function(s, o)
|
|
|
if o^'hidden_key' or o^'tower_key_0' or o^'tower_key_1' or o^'tower_key_2' or o^'tower_key_3' then
|
|
|
return translate_now("common_locale", 'key_does_not_fit');
|
|
|
elseif o^'tower_level_2_key' then
|
|
|
remove('tower_level_2_key', pl);
|
|
|
s.state = true;
|
|
|
enable('level_1_up');
|
|
|
return translate_now("tower_locale", 'tower_level_1_door_use_correct_key');
|
|
|
end;
|
|
|
end;
|
|
|
};
|
|
|
obj {
|
|
|
nam = '#chairs';
|
|
|
act = translate("tower_locale", 'tower_level_1_chairs');
|
|
|
};
|
|
|
obj {
|
|
|
nam = '#keys';
|
|
|
dsc = translate("tower_locale", 'tower_level_1_keys');
|
|
|
act = function(s)
|
|
|
here().keys_taken = true;
|
|
|
take('tower_key_0');
|
|
|
take('tower_key_1');
|
|
|
take('tower_key_2');
|
|
|
take('tower_key_3');
|
|
|
remove('#keys', here());
|
|
|
return translate_now("tower_locale", 'tower_level_1_keys_take');
|
|
|
end;
|
|
|
}:disable();
|
|
|
obj {
|
|
|
nam = 'tower_box';
|
|
|
disp = translate("tower_locale", 'tower_level_1_box_disp');
|
|
|
dsc = translate("tower_locale", 'tower_level_1_box_dsc');
|
|
|
tak = function(s)
|
|
|
take('tower_hint_1');
|
|
|
return translate_now("tower_locale", 'tower_level_1_box_tak');
|
|
|
end;
|
|
|
inv = function(s)
|
|
|
if here()^'inside_box' then
|
|
|
return translate_now("tower_locale", 'tower_level_1_box_inv');
|
|
|
end;
|
|
|
walkin('inside_box');
|
|
|
end;
|
|
|
}:disable();
|
|
|
obj {
|
|
|
state = false;
|
|
|
nam = '#tower_1_door';
|
|
|
dsc = function(s)
|
|
|
if s.state then
|
|
|
return translate_now("tower_locale", 'tower_level_1_door_open');
|
|
|
else
|
|
|
return translate_now("tower_locale", 'tower_level_1_door_closed');
|
|
|
end;
|
|
|
end;
|
|
|
act = function(s)
|
|
|
if s.state then
|
|
|
return translate_now("tower_locale", 'tower_level_1_door_act_open');
|
|
|
else
|
|
|
return translate_now("tower_locale", 'tower_level_1_door_act_closed');
|
|
|
end;
|
|
|
end;
|
|
|
used = function(s, o)
|
|
|
if o^'hidden_key' or o^'tower_key_0' or o^'tower_key_1' or o^'tower_key_2' or o^'tower_key_3' then
|
|
|
return translate_now("common_locale", 'key_does_not_fit');
|
|
|
elseif o^'tower_level_2_key' then
|
|
|
remove('tower_level_2_key', pl);
|
|
|
s.state = true;
|
|
|
enable('level_1_up');
|
|
|
return translate_now("tower_locale", 'tower_level_1_door_use_correct_key');
|
|
|
end;
|
|
|
|
|
|
return false;
|
|
|
end;
|
|
|
}:with {
|
|
|
obj {
|
|
|
nam = '#stairwell';
|
|
|
act = translate("tower_locale", 'tower_level_1_stairwell');
|
|
|
}
|
|
|
};
|
|
|
obj {
|
|
|
nam = '#tower_1_kitchen_door';
|
|
|
dsc = translate("tower_locale", 'tower_level_1_kitchen_door');
|
|
|
act = function(s)
|
|
|
if not _'level_1_next_room':disabled() then
|
|
|
return translate_now("tower_locale", 'tower_level_1_kitchen_door_act_open');
|
|
|
else
|
|
|
return translate_now("tower_locale", 'tower_level_1_kitchen_door_act_closed');
|
|
|
end;
|
|
|
end;
|
|
|
used = function(s, o)
|
|
|
if o^'tower_level_2_key' or o^'tower_key_0' or o^'tower_key_1' or o^'tower_key_2' or o^'tower_key_3' or o^'hidden_key' then
|
|
|
return translate_now("tower_locale", 'tower_level_1_kitchen_door_used_key');
|
|
|
end;
|
|
|
end;
|
|
|
}:with {
|
|
|
obj {
|
|
|
nam = '#stairwell';
|
|
|
act = translate("tower_locale", 'tower_level_1_stairwell');
|
|
|
}
|
|
|
};
|
|
|
obj {
|
|
|
nam = '#tower_1_kitchen_door';
|
|
|
dsc = translate("tower_locale", 'tower_level_1_kitchen_door');
|
|
|
act = function(s)
|
|
|
if not _'level_1_next_room':disabled() then
|
|
|
return translate_now("tower_locale", 'tower_level_1_kitchen_door_act_open');
|
|
|
else
|
|
|
return translate_now("tower_locale", 'tower_level_1_kitchen_door_act_closed');
|
|
|
end;
|
|
|
end;
|
|
|
used = function(s, o)
|
|
|
if o^'tower_level_2_key' or o^'tower_key_0' or o^'tower_key_1' or o^'tower_key_2' or o^'tower_key_3' or o^'hidden_key' then
|
|
|
return translate_now("tower_locale", 'tower_level_1_kitchen_door_used_key');
|
|
|
end;
|
|
|
|
|
|
if o^'potion_open' then
|
|
|
return translate_now("tower_locale", 'tower_level_1_kitchen_door_used_potion');
|
|
|
end;
|
|
|
if o^'potion_open' then
|
|
|
return translate_now("tower_locale", 'tower_level_1_kitchen_door_used_potion');
|
|
|
end;
|
|
|
|
|
|
return false;
|
|
|
end;
|
|
|
};
|
|
|
return false;
|
|
|
end;
|
|
|
};
|
|
|
}
|
|
|
|
|
|
room {
|
|
|
nam = 'inside_box';
|
|
|
disp = translate("tower_locale", 'tower_level_1_box_disp');
|
|
|
nam = 'inside_box';
|
|
|
disp = translate("tower_locale", 'tower_level_1_box_disp');
|
|
|
theme = 'tower';
|
|
|
nofollow = true;
|
|
|
nofollow = true;
|
|
|
pic = function(s)
|
|
|
local pic = 'images/box/box_bg.png';
|
|
|
local sum = tostring(s:sum());
|
|
@@ -522,324 +522,327 @@ room {
|
|
|
local sum = 0;
|
|
|
|
|
|
if _('keyhole_1').key then
|
|
|
sum = sum + _('keyhole_1').value * _('keyhole_1').key.value;
|
|
|
end;
|
|
|
sum = sum + _('keyhole_1').value * _('keyhole_1').key.value;
|
|
|
end;
|
|
|
|
|
|
if _('keyhole_2').key then
|
|
|
sum = sum + _('keyhole_2').value * _('keyhole_2').key.value;
|
|
|
end;
|
|
|
if _('keyhole_2').key then
|
|
|
sum = sum + _('keyhole_2').value * _('keyhole_2').key.value;
|
|
|
end;
|
|
|
|
|
|
if _('keyhole_3').key then
|
|
|
sum = sum + _('keyhole_3').value * _('keyhole_3').key.value;
|
|
|
end;
|
|
|
if _('keyhole_3').key then
|
|
|
sum = sum + _('keyhole_3').value * _('keyhole_3').key.value;
|
|
|
end;
|
|
|
|
|
|
if _('keyhole_4').key then
|
|
|
sum = sum + _('keyhole_4').value * _('keyhole_4').key.value;
|
|
|
end;
|
|
|
if _('keyhole_4').key then
|
|
|
sum = sum + _('keyhole_4').value * _('keyhole_4').key.value;
|
|
|
end;
|
|
|
|
|
|
return sum;
|
|
|
end;
|
|
|
value = function(s)
|
|
|
local sum = s:sum();
|
|
|
value = function(s)
|
|
|
local sum = s:sum();
|
|
|
|
|
|
if sum < 10 then
|
|
|
return '00' .. tostring(sum);
|
|
|
elseif sum < 100 then
|
|
|
return '0' .. tostring(sum);
|
|
|
else
|
|
|
return tostring(sum);
|
|
|
end;
|
|
|
end;
|
|
|
test = function(s)
|
|
|
return s:value() == level_1_target;
|
|
|
end;
|
|
|
decor = function(s)
|
|
|
return translate_now("tower_locale", 'inside_box_decor', {
|
|
|
if sum < 10 then
|
|
|
return '00' .. tostring(sum);
|
|
|
elseif sum < 100 then
|
|
|
return '0' .. tostring(sum);
|
|
|
else
|
|
|
return tostring(sum);
|
|
|
end;
|
|
|
end;
|
|
|
test = function(s)
|
|
|
return s:value() == level_1_target;
|
|
|
end;
|
|
|
decor = function(s)
|
|
|
return translate_now("tower_locale", 'inside_box_decor', {
|
|
|
numbers = s:value()
|
|
|
});
|
|
|
end;
|
|
|
way = {
|
|
|
path {translate("common_locale", 'back'), 'tower_level_1'};
|
|
|
};
|
|
|
end;
|
|
|
way = {
|
|
|
path {translate("common_locale", 'back'), 'tower_level_1'};
|
|
|
};
|
|
|
}:with {
|
|
|
obj {
|
|
|
nam = 'keyhole_1';
|
|
|
value = 125;
|
|
|
key = false;
|
|
|
dsc = function(s)
|
|
|
if s.key then
|
|
|
obj {
|
|
|
nam = 'keyhole_1';
|
|
|
value = 125;
|
|
|
key = false;
|
|
|
dsc = function(s)
|
|
|
if s.key then
|
|
|
return translate_now("tower_locale", 'inside_box_keyhole_1_key', {
|
|
|
key = s.key.disp2
|
|
|
}) .. '^';
|
|
|
else
|
|
|
return translate_now("tower_locale", 'inside_box_keyhole_1_empty') .. '^';
|
|
|
end;
|
|
|
end;
|
|
|
used = function(s, o)
|
|
|
if o^'tower_key_0' or o^'tower_key_1' or o^'tower_key_2' or o^'tower_key_3' then
|
|
|
else
|
|
|
return translate_now("tower_locale", 'inside_box_keyhole_1_empty') .. '^';
|
|
|
end;
|
|
|
end;
|
|
|
used = function(s, o)
|
|
|
if o^'tower_key_0' or o^'tower_key_1' or o^'tower_key_2' or o^'tower_key_3' then
|
|
|
if s.key then
|
|
|
return translate_now("tower_locale", 'inside_box_keyhole_used_has_key');
|
|
|
end;
|
|
|
s.key = o;
|
|
|
remove(o, pl);
|
|
|
s.key = o;
|
|
|
remove(o, pl);
|
|
|
|
|
|
pl:need_scene(true);
|
|
|
p(translate_now("tower_locale", 'inside_box_keyhole_used_insert_key', {
|
|
|
pl:need_scene(true);
|
|
|
p(translate_now("tower_locale", 'inside_box_keyhole_used_insert_key', {
|
|
|
key = o.disp3
|
|
|
}));
|
|
|
|
|
|
if _('inside_box'):test() then
|
|
|
remove('tower_box', pl);
|
|
|
remove('tower_hint_1', pl);
|
|
|
take('tower_level_2_key');
|
|
|
if _('inside_box'):test() then
|
|
|
remove('tower_box', pl);
|
|
|
remove('tower_hint_1', pl);
|
|
|
take('tower_level_2_key');
|
|
|
p(translate_now("tower_locale", 'inside_box_keyhole_used_open'));
|
|
|
walk('tower_level_1');
|
|
|
end;
|
|
|
walk('tower_level_1');
|
|
|
end;
|
|
|
else
|
|
|
return false;
|
|
|
end;
|
|
|
end;
|
|
|
act = function(s)
|
|
|
pl:need_scene(true);
|
|
|
if s.key then
|
|
|
local key = s.key;
|
|
|
take(key);
|
|
|
s.key = false;
|
|
|
return translate_now("tower_locale", 'inside_box_keyhole_act_key', {
|
|
|
end;
|
|
|
end;
|
|
|
act = function(s)
|
|
|
pl:need_scene(true);
|
|
|
if s.key then
|
|
|
local key = s.key;
|
|
|
take(key);
|
|
|
s.key = false;
|
|
|
return translate_now("tower_locale", 'inside_box_keyhole_act_key', {
|
|
|
key = key.disp3
|
|
|
});
|
|
|
else
|
|
|
return translate_now("tower_locale", 'inside_box_keyhole_act_empty');
|
|
|
end;
|
|
|
end;
|
|
|
};
|
|
|
obj {
|
|
|
nam = 'keyhole_2';
|
|
|
value = 25;
|
|
|
key = false;
|
|
|
dsc = function(s)
|
|
|
if s.key then
|
|
|
else
|
|
|
return translate_now("tower_locale", 'inside_box_keyhole_act_empty');
|
|
|
end;
|
|
|
end;
|
|
|
};
|
|
|
obj {
|
|
|
nam = 'keyhole_2';
|
|
|
value = 25;
|
|
|
key = false;
|
|
|
dsc = function(s)
|
|
|
if s.key then
|
|
|
return translate_now("tower_locale", 'inside_box_keyhole_2_key', {
|
|
|
key = s.key.disp2
|
|
|
}) .. '^';
|
|
|
else
|
|
|
return translate_now("tower_locale", 'inside_box_keyhole_2_empty') .. '^';
|
|
|
end;
|
|
|
end;
|
|
|
used = function(s, o)
|
|
|
if o^'tower_key_0' or o^'tower_key_1' or o^'tower_key_2' or o^'tower_key_3' then
|
|
|
else
|
|
|
return translate_now("tower_locale", 'inside_box_keyhole_2_empty') .. '^';
|
|
|
end;
|
|
|
end;
|
|
|
used = function(s, o)
|
|
|
if o^'tower_key_0' or o^'tower_key_1' or o^'tower_key_2' or o^'tower_key_3' then
|
|
|
if s.key then
|
|
|
return translate_now("tower_locale", 'inside_box_keyhole_used_has_key');
|
|
|
end;
|
|
|
|
|
|
s.key = o;
|
|
|
remove(o, pl);
|
|
|
s.key = o;
|
|
|
remove(o, pl);
|
|
|
|
|
|
pl:need_scene(true);
|
|
|
p(translate_now("tower_locale", 'inside_box_keyhole_used_insert_key', {
|
|
|
pl:need_scene(true);
|
|
|
p(translate_now("tower_locale", 'inside_box_keyhole_used_insert_key', {
|
|
|
key = o.disp3
|
|
|
}));
|
|
|
|
|
|
if _('inside_box'):test() then
|
|
|
remove('tower_box', pl);
|
|
|
remove('tower_hint_1', pl);
|
|
|
take('tower_level_2_key');
|
|
|
p(translate_now("tower_locale", 'inside_box_keyhole_used_open'));
|
|
|
walk('tower_level_1');
|
|
|
end;
|
|
|
if _('inside_box'):test() then
|
|
|
remove('tower_box', pl);
|
|
|
remove('tower_hint_1', pl);
|
|
|
take('tower_level_2_key');
|
|
|
p(translate_now("tower_locale", 'inside_box_keyhole_used_open'));
|
|
|
walk('tower_level_1');
|
|
|
end;
|
|
|
else
|
|
|
return false;
|
|
|
end;
|
|
|
end;
|
|
|
act = function(s)
|
|
|
pl:need_scene(true);
|
|
|
if s.key then
|
|
|
local key = s.key;
|
|
|
take(key);
|
|
|
s.key = false;
|
|
|
return translate_now("tower_locale", 'inside_box_keyhole_act_key', {
|
|
|
end;
|
|
|
end;
|
|
|
act = function(s)
|
|
|
pl:need_scene(true);
|
|
|
if s.key then
|
|
|
local key = s.key;
|
|
|
take(key);
|
|
|
s.key = false;
|
|
|
return translate_now("tower_locale", 'inside_box_keyhole_act_key', {
|
|
|
key = key.disp3
|
|
|
});
|
|
|
else
|
|
|
return translate_now("tower_locale", 'inside_box_keyhole_act_empty');
|
|
|
end;
|
|
|
end;
|
|
|
};
|
|
|
obj {
|
|
|
nam = 'keyhole_3';
|
|
|
value = 5;
|
|
|
key = false;
|
|
|
dsc = function(s)
|
|
|
if s.key then
|
|
|
else
|
|
|
return translate_now("tower_locale", 'inside_box_keyhole_act_empty');
|
|
|
end;
|
|
|
end;
|
|
|
};
|
|
|
obj {
|
|
|
nam = 'keyhole_3';
|
|
|
value = 5;
|
|
|
key = false;
|
|
|
dsc = function(s)
|
|
|
if s.key then
|
|
|
return translate_now("tower_locale", 'inside_box_keyhole_3_key', {
|
|
|
key = s.key.disp2
|
|
|
}) .. '^';
|
|
|
else
|
|
|
return translate_now("tower_locale", 'inside_box_keyhole_3_empty') .. '^';
|
|
|
end;
|
|
|
end;
|
|
|
used = function(s, o)
|
|
|
if o^'tower_key_0' or o^'tower_key_1' or o^'tower_key_2' or o^'tower_key_3' then
|
|
|
else
|
|
|
return translate_now("tower_locale", 'inside_box_keyhole_3_empty') .. '^';
|
|
|
end;
|
|
|
end;
|
|
|
used = function(s, o)
|
|
|
if o^'tower_key_0' or o^'tower_key_1' or o^'tower_key_2' or o^'tower_key_3' then
|
|
|
if s.key then
|
|
|
return translate_now("tower_locale", 'inside_box_keyhole_used_has_key');
|
|
|
end;
|
|
|
|
|
|
s.key = o;
|
|
|
remove(o, pl);
|
|
|
s.key = o;
|
|
|
remove(o, pl);
|
|
|
|
|
|
pl:need_scene(true);
|
|
|
p(translate_now("tower_locale", 'inside_box_keyhole_used_insert_key', {
|
|
|
pl:need_scene(true);
|
|
|
p(translate_now("tower_locale", 'inside_box_keyhole_used_insert_key', {
|
|
|
key = o.disp3
|
|
|
}));
|
|
|
|
|
|
if _('inside_box'):test() then
|
|
|
remove('tower_box', pl);
|
|
|
remove('tower_hint_1', pl);
|
|
|
take('tower_level_2_key');
|
|
|
p(translate_now("tower_locale", 'inside_box_keyhole_used_open'));
|
|
|
walk('tower_level_1');
|
|
|
end;
|
|
|
if _('inside_box'):test() then
|
|
|
remove('tower_box', pl);
|
|
|
remove('tower_hint_1', pl);
|
|
|
take('tower_level_2_key');
|
|
|
p(translate_now("tower_locale", 'inside_box_keyhole_used_open'));
|
|
|
walk('tower_level_1');
|
|
|
end;
|
|
|
else
|
|
|
return false;
|
|
|
end;
|
|
|
end;
|
|
|
act = function(s)
|
|
|
pl:need_scene(true);
|
|
|
if s.key then
|
|
|
local key = s.key;
|
|
|
take(key);
|
|
|
s.key = false;
|
|
|
return translate_now("tower_locale", 'inside_box_keyhole_act_key', {
|
|
|
end;
|
|
|
end;
|
|
|
act = function(s)
|
|
|
pl:need_scene(true);
|
|
|
if s.key then
|
|
|
local key = s.key;
|
|
|
take(key);
|
|
|
s.key = false;
|
|
|
return translate_now("tower_locale", 'inside_box_keyhole_act_key', {
|
|
|
key = key.disp3
|
|
|
});
|
|
|
else
|
|
|
return translate_now("tower_locale", 'inside_box_keyhole_act_empty');
|
|
|
end;
|
|
|
end;
|
|
|
};
|
|
|
obj {
|
|
|
nam = 'keyhole_4';
|
|
|
value = 1;
|
|
|
key = false;
|
|
|
dsc = function(s)
|
|
|
if s.key then
|
|
|
else
|
|
|
return translate_now("tower_locale", 'inside_box_keyhole_act_empty');
|
|
|
end;
|
|
|
end;
|
|
|
};
|
|
|
obj {
|
|
|
nam = 'keyhole_4';
|
|
|
value = 1;
|
|
|
key = false;
|
|
|
dsc = function(s)
|
|
|
if s.key then
|
|
|
return translate_now("tower_locale", 'inside_box_keyhole_4_key', {
|
|
|
key = s.key.disp2
|
|
|
}) .. '^';
|
|
|
else
|
|
|
return translate_now("tower_locale", 'inside_box_keyhole_4_empty') .. '^';
|
|
|
end;
|
|
|
end;
|
|
|
used = function(s, o)
|
|
|
if o^'tower_key_0' or o^'tower_key_1' or o^'tower_key_2' or o^'tower_key_3' then
|
|
|
else
|
|
|
return translate_now("tower_locale", 'inside_box_keyhole_4_empty') .. '^';
|
|
|
end;
|
|
|
end;
|
|
|
used = function(s, o)
|
|
|
if o^'tower_key_0' or o^'tower_key_1' or o^'tower_key_2' or o^'tower_key_3' then
|
|
|
if s.key then
|
|
|
return translate_now("tower_locale", 'inside_box_keyhole_used_has_key');
|
|
|
end;
|
|
|
s.key = o;
|
|
|
remove(o, pl);
|
|
|
s.key = o;
|
|
|
remove(o, pl);
|
|
|
|
|
|
pl:need_scene(true);
|
|
|
p(translate_now("tower_locale", 'inside_box_keyhole_used_insert_key', {
|
|
|
pl:need_scene(true);
|
|
|
p(translate_now("tower_locale", 'inside_box_keyhole_used_insert_key', {
|
|
|
key = o.disp3
|
|
|
}));
|
|
|
|
|
|
if _('inside_box'):test() then
|
|
|
remove('tower_box', pl);
|
|
|
remove('tower_hint_1', pl);
|
|
|
take('tower_level_2_key');
|
|
|
p(translate_now("tower_locale", 'inside_box_keyhole_used_open'));
|
|
|
walk('tower_level_1');
|
|
|
end;
|
|
|
if _('inside_box'):test() then
|
|
|
remove('tower_box', pl);
|
|
|
remove('tower_hint_1', pl);
|
|
|
take('tower_level_2_key');
|
|
|
p(translate_now("tower_locale", 'inside_box_keyhole_used_open'));
|
|
|
walk('tower_level_1');
|
|
|
end;
|
|
|
|
|
|
else
|
|
|
return false;
|
|
|
end;
|
|
|
end;
|
|
|
act = function(s)
|
|
|
pl:need_scene(true);
|
|
|
if s.key then
|
|
|
local key = s.key;
|
|
|
take(key);
|
|
|
s.key = false;
|
|
|
return translate_now("tower_locale", 'inside_box_keyhole_act_key', {
|
|
|
end;
|
|
|
end;
|
|
|
act = function(s)
|
|
|
pl:need_scene(true);
|
|
|
if s.key then
|
|
|
local key = s.key;
|
|
|
take(key);
|
|
|
s.key = false;
|
|
|
return translate_now("tower_locale", 'inside_box_keyhole_act_key', {
|
|
|
key = key.disp3
|
|
|
});
|
|
|
else
|
|
|
return translate_now("tower_locale", 'inside_box_keyhole_act_empty');
|
|
|
end;
|
|
|
end;
|
|
|
};
|
|
|
else
|
|
|
return translate_now("tower_locale", 'inside_box_keyhole_act_empty');
|
|
|
end;
|
|
|
end;
|
|
|
};
|
|
|
}
|
|
|
|
|
|
room {
|
|
|
nam = 'tower_level_2';
|
|
|
pic = 'images/tower_level_2_l.png';
|
|
|
disp = translate("tower_locale", 'tower_level_2_disp');
|
|
|
theme = 'tower';
|
|
|
decor = translate("tower_locale", 'tower_level_2_decor');
|
|
|
way = {
|
|
|
path {translate("tower_locale", 'transition_downstairs'), "tower_level_1"};
|
|
|
path {"level_2_next_room", translate("tower_locale", 'transition_room'), "tower_level_2_room_2"}:disable();
|
|
|
path {"level_2_up", translate("tower_locale", 'transition_upstairs'), "tower_level_3"}:disable();
|
|
|
};
|
|
|
nam = 'tower_level_2';
|
|
|
pic = 'images/tower_level_2_l.png';
|
|
|
disp = translate("tower_locale", 'tower_level_2_disp');
|
|
|
theme = 'tower';
|
|
|
decor = translate("tower_locale", 'tower_level_2_decor');
|
|
|
way = {
|
|
|
path {translate("tower_locale", 'transition_downstairs'), "tower_level_1"};
|
|
|
path {"level_2_next_room", translate("tower_locale", 'transition_room'), "tower_level_2_room_2"}:disable();
|
|
|
path {"level_2_up", translate("tower_locale", 'transition_upstairs'), "tower_level_3"}:disable();
|
|
|
};
|
|
|
themeInit = function(s)
|
|
|
load_sounds('bubble', 'potion');
|
|
|
end;
|
|
|
}:with {
|
|
|
'tower_walls',
|
|
|
obj {
|
|
|
state = 0;
|
|
|
nam = '#tables';
|
|
|
act = function(s)
|
|
|
p(translate_now("tower_locale", 'tower_level_2_tables'));
|
|
|
if s.state == 0 then
|
|
|
s.state = 1;
|
|
|
_'red_catalyst':enable();
|
|
|
_'purple_catalyst':enable();
|
|
|
p(translate_now("tower_locale", 'tower_level_2_table_vials'));
|
|
|
end;
|
|
|
end;
|
|
|
};
|
|
|
obj {
|
|
|
state = 0;
|
|
|
nam = '#racks';
|
|
|
act = function(s)
|
|
|
p(translate_now("tower_locale", 'tower_level_2_racks'));
|
|
|
if s.state == 0 then
|
|
|
s.state = 1;
|
|
|
_'blue_catalyst':enable();
|
|
|
_'turquoise_catalyst':enable();
|
|
|
p(translate_now("tower_locale", 'tower_level_2_rack_vials'));
|
|
|
end;
|
|
|
end;
|
|
|
};
|
|
|
obj {
|
|
|
state = 0;
|
|
|
nam = '#cabinets';
|
|
|
act = function(s)
|
|
|
p(translate_now("tower_locale", 'tower_level_2_cabinets'));
|
|
|
if s.state == 0 then
|
|
|
s.state = 1;
|
|
|
_'green_catalyst':enable();
|
|
|
_'yellow_catalyst':enable();
|
|
|
p(translate_now("tower_locale", 'tower_level_2_cabinet_vials'));
|
|
|
end;
|
|
|
end;
|
|
|
};
|
|
|
obj {
|
|
|
nam = '#fire';
|
|
|
act = translate("tower_locale", 'tower_level_2_fire');
|
|
|
};
|
|
|
obj {
|
|
|
nam = 'alchemy_book';
|
|
|
dsc = translate("tower_locale", 'tower_level_2_book');
|
|
|
act = function(s)
|
|
|
walkin('alchemy_book_dlg');
|
|
|
end;
|
|
|
};
|
|
|
obj {
|
|
|
nam = 'tower_cauldron';
|
|
|
act = function()
|
|
|
walkin('cauldron_inside');
|
|
|
end;
|
|
|
used = function(s, o)
|
|
|
'tower_walls',
|
|
|
obj {
|
|
|
state = 0;
|
|
|
nam = '#tables';
|
|
|
act = function(s)
|
|
|
p(translate_now("tower_locale", 'tower_level_2_tables'));
|
|
|
if s.state == 0 then
|
|
|
s.state = 1;
|
|
|
_'red_catalyst':enable();
|
|
|
_'purple_catalyst':enable();
|
|
|
p(translate_now("tower_locale", 'tower_level_2_table_vials'));
|
|
|
end;
|
|
|
end;
|
|
|
};
|
|
|
obj {
|
|
|
state = 0;
|
|
|
nam = '#racks';
|
|
|
act = function(s)
|
|
|
p(translate_now("tower_locale", 'tower_level_2_racks'));
|
|
|
if s.state == 0 then
|
|
|
s.state = 1;
|
|
|
_'blue_catalyst':enable();
|
|
|
_'turquoise_catalyst':enable();
|
|
|
p(translate_now("tower_locale", 'tower_level_2_rack_vials'));
|
|
|
end;
|
|
|
end;
|
|
|
};
|
|
|
obj {
|
|
|
state = 0;
|
|
|
nam = '#cabinets';
|
|
|
act = function(s)
|
|
|
p(translate_now("tower_locale", 'tower_level_2_cabinets'));
|
|
|
if s.state == 0 then
|
|
|
s.state = 1;
|
|
|
_'green_catalyst':enable();
|
|
|
_'yellow_catalyst':enable();
|
|
|
p(translate_now("tower_locale", 'tower_level_2_cabinet_vials'));
|
|
|
end;
|
|
|
end;
|
|
|
};
|
|
|
obj {
|
|
|
nam = '#fire';
|
|
|
act = translate("tower_locale", 'tower_level_2_fire');
|
|
|
};
|
|
|
obj {
|
|
|
nam = 'alchemy_book';
|
|
|
dsc = translate("tower_locale", 'tower_level_2_book');
|
|
|
act = function(s)
|
|
|
walkin('alchemy_book_dlg');
|
|
|
end;
|
|
|
};
|
|
|
obj {
|
|
|
nam = 'tower_cauldron';
|
|
|
act = function()
|
|
|
walkin('cauldron_inside');
|
|
|
end;
|
|
|
used = function(s, o)
|
|
|
if o^'kettle' or o^'cups' or o^'teapot' or o^'teabox' or o.ptype then
|
|
|
return translate_now("tower_locale", 'tower_level_2_cannot_be_thrown')
|
|
|
end;
|
|
@@ -847,282 +850,282 @@ room {
|
|
|
if cauldron.potion then
|
|
|
return translate_now("tower_locale", 'tower_level_2_potion_in_the_cauldron')
|
|
|
end;
|
|
|
pl:need_scene(true);
|
|
|
table.insert(cauldron.state, o);
|
|
|
remove(o, pl);
|
|
|
sounds['bubble']:play();
|
|
|
pl:need_scene(true);
|
|
|
table.insert(cauldron.state, o);
|
|
|
remove(o, pl);
|
|
|
sounds['bubble']:play();
|
|
|
p(translate_now("tower_locale", 'tower_level_2_cauldron_used', {
|
|
|
item = o.disp3
|
|
|
}));
|
|
|
if cauldron:check_potion() then
|
|
|
sounds['potion']:play();
|
|
|
p(translate_now("tower_locale", 'tower_level_2_potion_ready'));
|
|
|
end;
|
|
|
end;
|
|
|
};
|
|
|
obj {
|
|
|
state = false;
|
|
|
nam = '#tower_2_door';
|
|
|
dsc = function(s)
|
|
|
if s.state then
|
|
|
return translate_now("tower_locale", 'tower_2_door_dsc_open');
|
|
|
else
|
|
|
return translate_now("tower_locale", 'tower_2_door_dsc_closed');
|
|
|
end;
|
|
|
end;
|
|
|
act = function(s)
|
|
|
if s.state then
|
|
|
return translate_now("tower_locale", 'tower_2_door_act_open');
|
|
|
else
|
|
|
return translate_now("tower_locale", 'tower_2_door_act_closed');
|
|
|
end;
|
|
|
end;
|
|
|
used = function(s, o)
|
|
|
if o^'hidden_key' then
|
|
|
return translate_now("common_locale", 'key_does_not_fit');
|
|
|
elseif o^'potion_open' then
|
|
|
remove('potion_open', pl);
|
|
|
s.state = true;
|
|
|
enable('level_2_up');
|
|
|
take('flask');
|
|
|
return translate_now("tower_locale", 'tower_2_door_used_potion');
|
|
|
if cauldron:check_potion() then
|
|
|
sounds['potion']:play();
|
|
|
p(translate_now("tower_locale", 'tower_level_2_potion_ready'));
|
|
|
end;
|
|
|
end;
|
|
|
};
|
|
|
obj {
|
|
|
state = false;
|
|
|
nam = '#tower_2_door';
|
|
|
dsc = function(s)
|
|
|
if s.state then
|
|
|
return translate_now("tower_locale", 'tower_2_door_dsc_open');
|
|
|
else
|
|
|
return translate_now("tower_locale", 'tower_2_door_dsc_closed');
|
|
|
end;
|
|
|
end;
|
|
|
act = function(s)
|
|
|
if s.state then
|
|
|
return translate_now("tower_locale", 'tower_2_door_act_open');
|
|
|
else
|
|
|
return translate_now("tower_locale", 'tower_2_door_act_closed');
|
|
|
end;
|
|
|
end;
|
|
|
used = function(s, o)
|
|
|
if o^'hidden_key' then
|
|
|
return translate_now("common_locale", 'key_does_not_fit');
|
|
|
elseif o^'potion_open' then
|
|
|
remove('potion_open', pl);
|
|
|
s.state = true;
|
|
|
enable('level_2_up');
|
|
|
take('flask');
|
|
|
return translate_now("tower_locale", 'tower_2_door_used_potion');
|
|
|
else
|
|
|
return false;
|
|
|
end;
|
|
|
end;
|
|
|
}: with {
|
|
|
obj {
|
|
|
nam = '#stairwell';
|
|
|
act = translate("tower_locale", 'tower_level_1_stairwell');
|
|
|
}
|
|
|
};
|
|
|
obj {
|
|
|
nam = 'red_catalyst';
|
|
|
dsc = translate("tower_locale", 'red_catalyst_dsc');
|
|
|
disp = translate("tower_locale", 'red_catalyst_disp');
|
|
|
disp2 = translate("tower_locale", 'red_catalyst_disp2');
|
|
|
disp3 = translate("tower_locale", 'red_catalyst_disp3');
|
|
|
tak = translate("tower_locale", 'catalyst_tak');
|
|
|
inv = translate("tower_locale", 'red_catalyst_inv');
|
|
|
}:disable();
|
|
|
obj {
|
|
|
nam = 'green_catalyst';
|
|
|
dsc = translate("tower_locale", 'green_catalyst_dsc');
|
|
|
disp = translate("tower_locale", 'green_catalyst_disp');
|
|
|
disp2 = translate("tower_locale", 'green_catalyst_disp2');
|
|
|
disp3 = translate("tower_locale", 'green_catalyst_disp3');
|
|
|
tak = translate("tower_locale", 'catalyst_tak');
|
|
|
inv = translate("tower_locale", 'green_catalyst_inv');
|
|
|
}:disable();
|
|
|
obj {
|
|
|
nam = 'blue_catalyst';
|
|
|
dsc = translate("tower_locale", 'blue_catalyst_dsc');
|
|
|
disp = translate("tower_locale", 'blue_catalyst_disp');
|
|
|
disp2 = translate("tower_locale", 'blue_catalyst_disp2');
|
|
|
disp3 = translate("tower_locale", 'blue_catalyst_disp3');
|
|
|
tak = translate("tower_locale", 'catalyst_tak');
|
|
|
inv = translate("tower_locale", 'blue_catalyst_inv');
|
|
|
}:disable();
|
|
|
end;
|
|
|
end;
|
|
|
}: with {
|
|
|
obj {
|
|
|
nam = '#stairwell';
|
|
|
act = translate("tower_locale", 'tower_level_1_stairwell');
|
|
|
}
|
|
|
};
|
|
|
obj {
|
|
|
nam = 'red_catalyst';
|
|
|
dsc = translate("tower_locale", 'red_catalyst_dsc');
|
|
|
disp = translate("tower_locale", 'red_catalyst_disp');
|
|
|
disp2 = translate("tower_locale", 'red_catalyst_disp2');
|
|
|
disp3 = translate("tower_locale", 'red_catalyst_disp3');
|
|
|
tak = translate("tower_locale", 'catalyst_tak');
|
|
|
inv = translate("tower_locale", 'red_catalyst_inv');
|
|
|
}:disable();
|
|
|
obj {
|
|
|
nam = 'green_catalyst';
|
|
|
dsc = translate("tower_locale", 'green_catalyst_dsc');
|
|
|
disp = translate("tower_locale", 'green_catalyst_disp');
|
|
|
disp2 = translate("tower_locale", 'green_catalyst_disp2');
|
|
|
disp3 = translate("tower_locale", 'green_catalyst_disp3');
|
|
|
tak = translate("tower_locale", 'catalyst_tak');
|
|
|
inv = translate("tower_locale", 'green_catalyst_inv');
|
|
|
}:disable();
|
|
|
obj {
|
|
|
nam = 'purple_catalyst';
|
|
|
dsc = translate("tower_locale", 'purple_catalyst_dsc');
|
|
|
disp = translate("tower_locale", 'purple_catalyst_disp');
|
|
|
disp2 = translate("tower_locale", 'purple_catalyst_disp2');
|
|
|
disp3 = translate("tower_locale", 'purple_catalyst_disp3');
|
|
|
tak = translate("tower_locale", 'catalyst_tak');
|
|
|
inv = translate("tower_locale", 'purple_catalyst_inv');
|
|
|
}:disable();
|
|
|
obj {
|
|
|
nam = 'yellow_catalyst';
|
|
|
dsc = translate("tower_locale", 'yellow_catalyst_dsc');
|
|
|
disp = translate("tower_locale", 'yellow_catalyst_disp');
|
|
|
disp2 = translate("tower_locale", 'yellow_catalyst_disp2');
|
|
|
disp3 = translate("tower_locale", 'yellow_catalyst_disp3');
|
|
|
tak = translate("tower_locale", 'catalyst_tak');
|
|
|
inv = translate("tower_locale", 'yellow_catalyst_inv');
|
|
|
}:disable();
|
|
|
obj {
|
|
|
nam = 'turquoise_catalyst';
|
|
|
dsc = translate("tower_locale", 'turquoise_catalyst_dsc');
|
|
|
disp = translate("tower_locale", 'turquoise_catalyst_disp');
|
|
|
disp2 = translate("tower_locale", 'turquoise_catalyst_disp2');
|
|
|
disp3 = translate("tower_locale", 'turquoise_catalyst_disp3');
|
|
|
tak = translate("tower_locale", 'catalyst_tak');
|
|
|
inv = translate("tower_locale", 'turquoise_catalyst_inv');
|
|
|
}:disable();
|
|
|
nam = 'blue_catalyst';
|
|
|
dsc = translate("tower_locale", 'blue_catalyst_dsc');
|
|
|
disp = translate("tower_locale", 'blue_catalyst_disp');
|
|
|
disp2 = translate("tower_locale", 'blue_catalyst_disp2');
|
|
|
disp3 = translate("tower_locale", 'blue_catalyst_disp3');
|
|
|
tak = translate("tower_locale", 'catalyst_tak');
|
|
|
inv = translate("tower_locale", 'blue_catalyst_inv');
|
|
|
}:disable();
|
|
|
obj {
|
|
|
nam = 'purple_catalyst';
|
|
|
dsc = translate("tower_locale", 'purple_catalyst_dsc');
|
|
|
disp = translate("tower_locale", 'purple_catalyst_disp');
|
|
|
disp2 = translate("tower_locale", 'purple_catalyst_disp2');
|
|
|
disp3 = translate("tower_locale", 'purple_catalyst_disp3');
|
|
|
tak = translate("tower_locale", 'catalyst_tak');
|
|
|
inv = translate("tower_locale", 'purple_catalyst_inv');
|
|
|
}:disable();
|
|
|
obj {
|
|
|
nam = 'yellow_catalyst';
|
|
|
dsc = translate("tower_locale", 'yellow_catalyst_dsc');
|
|
|
disp = translate("tower_locale", 'yellow_catalyst_disp');
|
|
|
disp2 = translate("tower_locale", 'yellow_catalyst_disp2');
|
|
|
disp3 = translate("tower_locale", 'yellow_catalyst_disp3');
|
|
|
tak = translate("tower_locale", 'catalyst_tak');
|
|
|
inv = translate("tower_locale", 'yellow_catalyst_inv');
|
|
|
}:disable();
|
|
|
obj {
|
|
|
nam = 'turquoise_catalyst';
|
|
|
dsc = translate("tower_locale", 'turquoise_catalyst_dsc');
|
|
|
disp = translate("tower_locale", 'turquoise_catalyst_disp');
|
|
|
disp2 = translate("tower_locale", 'turquoise_catalyst_disp2');
|
|
|
disp3 = translate("tower_locale", 'turquoise_catalyst_disp3');
|
|
|
tak = translate("tower_locale", 'catalyst_tak');
|
|
|
inv = translate("tower_locale", 'turquoise_catalyst_inv');
|
|
|
}:disable();
|
|
|
}
|
|
|
|
|
|
dlg {
|
|
|
nam = 'alchemy_book_dlg';
|
|
|
nam = 'alchemy_book_dlg';
|
|
|
theme = 'tower';
|
|
|
pic = 'images/tower_level_2_l.png';
|
|
|
disp = translate("tower_locale", 'alchemy_book_dlg_disp');
|
|
|
enter = translate("tower_locale", 'alchemy_book_dlg_enter');
|
|
|
phr = {
|
|
|
pic = 'images/tower_level_2_l.png';
|
|
|
disp = translate("tower_locale", 'alchemy_book_dlg_disp');
|
|
|
enter = translate("tower_locale", 'alchemy_book_dlg_enter');
|
|
|
phr = {
|
|
|
{always=true, translate("tower_locale", 'alchemy_book_dlg_open'), function(s)
|
|
|
return translate_now("tower_locale", 'alchemy_book_dlg_open_response', {catalyst=_(opening_catalyst).disp2});
|
|
|
end};
|
|
|
{always=true, translate("tower_locale", 'alchemy_book_dlg_light'), function(s)
|
|
|
{always=true, translate("tower_locale", 'alchemy_book_dlg_light'), function(s)
|
|
|
return translate_now("tower_locale", 'alchemy_book_dlg_light_response', {catalyst=_(light_catalyst).disp2});
|
|
|
end};
|
|
|
{always=true, translate("tower_locale", 'alchemy_book_dlg_rich'), function(s)
|
|
|
{always=true, translate("tower_locale", 'alchemy_book_dlg_rich'), function(s)
|
|
|
return translate_now("tower_locale", 'alchemy_book_dlg_rich_response', {catalyst=_(enrichment_catalyst).disp2});
|
|
|
end};
|
|
|
{always=true, translate("tower_locale", 'alchemy_book_dlg_leave'), function() walkout(); end}
|
|
|
};
|
|
|
{always=true, translate("tower_locale", 'alchemy_book_dlg_leave'), function() walkout(); end}
|
|
|
};
|
|
|
}
|
|
|
|
|
|
dlg {
|
|
|
theme = 'tower';
|
|
|
state = {};
|
|
|
potion = false;
|
|
|
hideinv = true;
|
|
|
nam = 'cauldron_inside';
|
|
|
pic = 'images/tower_level_2_l.png';
|
|
|
disp = translate("tower_locale", 'cauldron_inside_disp');
|
|
|
check_potion = function(s)
|
|
|
if #s.state == 3 then
|
|
|
if has_object(s.state, 'lock') and has_object(s.state, 'hidden_key') and has_object(s.state, opening_catalyst) then
|
|
|
s.potion = _('potion_open');
|
|
|
return true;
|
|
|
elseif has_object(s.state, 'candle') and has_object(s.state, 'flask') and has_object(s.state, light_catalyst) then
|
|
|
s.potion = _('potion_light');
|
|
|
return true;
|
|
|
elseif has_object(s.state, 'silver_fork') and has_object(s.state, 'emerald') and has_object(s.state, enrichment_catalyst) then
|
|
|
s.potion = _('potion_enrichment');
|
|
|
return true;
|
|
|
end;
|
|
|
end;
|
|
|
state = {};
|
|
|
potion = false;
|
|
|
hideinv = true;
|
|
|
nam = 'cauldron_inside';
|
|
|
pic = 'images/tower_level_2_l.png';
|
|
|
disp = translate("tower_locale", 'cauldron_inside_disp');
|
|
|
check_potion = function(s)
|
|
|
if #s.state == 3 then
|
|
|
if has_object(s.state, 'lock') and has_object(s.state, 'hidden_key') and has_object(s.state, opening_catalyst) then
|
|
|
s.potion = _('potion_open');
|
|
|
return true;
|
|
|
elseif has_object(s.state, 'candle') and has_object(s.state, 'flask') and has_object(s.state, light_catalyst) then
|
|
|
s.potion = _('potion_light');
|
|
|
return true;
|
|
|
elseif has_object(s.state, 'silver_fork') and has_object(s.state, 'emerald') and has_object(s.state, enrichment_catalyst) then
|
|
|
s.potion = _('potion_enrichment');
|
|
|
return true;
|
|
|
end;
|
|
|
end;
|
|
|
|
|
|
return false;
|
|
|
end;
|
|
|
enter = function(s)
|
|
|
if s.potion then
|
|
|
enable('#take_potion');
|
|
|
disable('#take_all');
|
|
|
return false;
|
|
|
end;
|
|
|
enter = function(s)
|
|
|
if s.potion then
|
|
|
enable('#take_potion');
|
|
|
disable('#take_all');
|
|
|
return translate_now("tower_locale", 'cauldron_inside_enter_potion', {
|
|
|
potion=std.call(s.potion, "disp2");
|
|
|
});
|
|
|
elseif #s.state == 0 then
|
|
|
disable('#take_potion');
|
|
|
disable('#take_all');
|
|
|
return translate_now("tower_locale", 'cauldron_inside_enter_water');
|
|
|
elseif #s.state == 1 then
|
|
|
disable('#take_potion');
|
|
|
enable('#take_all');
|
|
|
elseif #s.state == 0 then
|
|
|
disable('#take_potion');
|
|
|
disable('#take_all');
|
|
|
return translate_now("tower_locale", 'cauldron_inside_enter_water');
|
|
|
elseif #s.state == 1 then
|
|
|
disable('#take_potion');
|
|
|
enable('#take_all');
|
|
|
return translate_now("tower_locale", 'cauldron_inside_enter_single_item', {
|
|
|
item=std.call(s.state[1], "disp2");
|
|
|
});
|
|
|
else
|
|
|
disable('#take_potion');
|
|
|
enable('#take_all');
|
|
|
else
|
|
|
disable('#take_potion');
|
|
|
enable('#take_all');
|
|
|
|
|
|
local dsc = translate_now("tower_locale", 'cauldron_inside_enter_many_items') .. ' ';
|
|
|
local dsc = translate_now("tower_locale", 'cauldron_inside_enter_many_items') .. ' ';
|
|
|
|
|
|
for i = 1, #s.state do
|
|
|
dsc = dsc .. std.call(s.state[i], "disp2");
|
|
|
if i < #s.state then
|
|
|
dsc = dsc .. ', ';
|
|
|
end;
|
|
|
end;
|
|
|
return dsc .. '. ';
|
|
|
end;
|
|
|
end;
|
|
|
phr = {
|
|
|
{'#take_potion', translate("tower_locale", 'cauldron_inside_take_potion'), function(s)
|
|
|
local potion = _('cauldron_inside').potion;
|
|
|
_('cauldron_inside').state = {};
|
|
|
take(potion);
|
|
|
_('cauldron_inside').potion = false;
|
|
|
pr(translate_now("tower_locale", 'cauldron_inside_take_potion_response'));
|
|
|
walkout();
|
|
|
end};
|
|
|
{'#take_all', translate("tower_locale", 'cauldron_inside_take_items'), function(s)
|
|
|
local state = _('cauldron_inside').state;
|
|
|
_('cauldron_inside').state = {};
|
|
|
for i = 1, #state do
|
|
|
take(state[i]);
|
|
|
end;
|
|
|
walkout();
|
|
|
end};
|
|
|
{always=true, translate("tower_locale", 'cauldron_inside_leave'), function(s)
|
|
|
walkout();
|
|
|
end;};
|
|
|
}
|
|
|
for i = 1, #s.state do
|
|
|
dsc = dsc .. std.call(s.state[i], "disp2");
|
|
|
if i < #s.state then
|
|
|
dsc = dsc .. ', ';
|
|
|
end;
|
|
|
end;
|
|
|
return dsc .. '. ';
|
|
|
end;
|
|
|
end;
|
|
|
phr = {
|
|
|
{'#take_potion', translate("tower_locale", 'cauldron_inside_take_potion'), function(s)
|
|
|
local potion = _('cauldron_inside').potion;
|
|
|
_('cauldron_inside').state = {};
|
|
|
take(potion);
|
|
|
_('cauldron_inside').potion = false;
|
|
|
pr(translate_now("tower_locale", 'cauldron_inside_take_potion_response'));
|
|
|
walkout();
|
|
|
end};
|
|
|
{'#take_all', translate("tower_locale", 'cauldron_inside_take_items'), function(s)
|
|
|
local state = _('cauldron_inside').state;
|
|
|
_('cauldron_inside').state = {};
|
|
|
for i = 1, #state do
|
|
|
take(state[i]);
|
|
|
end;
|
|
|
walkout();
|
|
|
end};
|
|
|
{always=true, translate("tower_locale", 'cauldron_inside_leave'), function(s)
|
|
|
walkout();
|
|
|
end;};
|
|
|
}
|
|
|
}
|
|
|
|
|
|
room {
|
|
|
nam = 'tower_level_3';
|
|
|
theme = 'tower';
|
|
|
disp = translate("tower_locale", 'tower_level_3_disp');
|
|
|
pic = 'images/tower_level_3.png';
|
|
|
decor = translate("tower_locale", 'tower_level_3_decor');
|
|
|
nam = 'tower_level_3';
|
|
|
theme = 'tower';
|
|
|
disp = translate("tower_locale", 'tower_level_3_disp');
|
|
|
pic = 'images/tower_level_3.png';
|
|
|
decor = translate("tower_locale", 'tower_level_3_decor');
|
|
|
enter = function(s)
|
|
|
if tower_accept_level < 1 then
|
|
|
tower_accept_level = 1;
|
|
|
end;
|
|
|
end;
|
|
|
way = {
|
|
|
path {translate("tower_locale", 'transition_downstairs'), "tower_level_2"};
|
|
|
path {"level_3_next_room", translate("tower_locale", 'transition_room'), "tower_level_3_room_2"}:disable();
|
|
|
path {"level_3_up", translate("tower_locale", 'transition_upstairs'), "tower_level_4"}:disable();
|
|
|
};
|
|
|
way = {
|
|
|
path {translate("tower_locale", 'transition_downstairs'), "tower_level_2"};
|
|
|
path {"level_3_next_room", translate("tower_locale", 'transition_room'), "tower_level_3_room_2"}:disable();
|
|
|
path {"level_3_up", translate("tower_locale", 'transition_upstairs'), "tower_level_4"}:disable();
|
|
|
};
|
|
|
}:with {
|
|
|
'tower_walls',
|
|
|
obj {
|
|
|
nam = '#bookshelves';
|
|
|
act = translate("tower_locale", 'tower_level_3_bookshelves');
|
|
|
};
|
|
|
obj {
|
|
|
nam = '#fireplace';
|
|
|
act = translate("tower_locale", 'tower_level_3_fireplace');
|
|
|
};
|
|
|
obj {
|
|
|
nam = '#rockchair';
|
|
|
act = translate("tower_locale", 'tower_level_3_rockchair');
|
|
|
};
|
|
|
obj {
|
|
|
nam = 'level_3_room_2_door';
|
|
|
dsc = translate("tower_locale", 'tower_level_3_hidden_door_dsc');
|
|
|
act = translate("tower_locale", 'tower_level_3_hidden_door_act');
|
|
|
}:disable();
|
|
|
obj {
|
|
|
solved = false;
|
|
|
nam = 'tower_level_3_table';
|
|
|
act = function(s)
|
|
|
if s.solved then
|
|
|
return translate_now("tower_locale", 'tower_level_3_table_decor') .. ' ' .. translate_now("tower_locale", 'tower_level_3_table_decor_solved');
|
|
|
else
|
|
|
walkin('tower_level_3_table_in');
|
|
|
end;
|
|
|
end;
|
|
|
};
|
|
|
obj {
|
|
|
nam = '#tower_3_door';
|
|
|
dsc = function(s)
|
|
|
if _'level_3_up':disabled() then
|
|
|
return translate_now("tower_locale", 'tower_level_3_door_dsc_locked');
|
|
|
else
|
|
|
return translate_now("tower_locale", 'tower_level_3_door_dsc_open');
|
|
|
end;
|
|
|
end;
|
|
|
act = function(s)
|
|
|
if _'level_3_up':disabled() then
|
|
|
return translate_now("tower_locale", 'tower_level_3_door_act_locked');
|
|
|
else
|
|
|
return translate_now("tower_locale", 'tower_level_3_door_act_open');
|
|
|
end;
|
|
|
end;
|
|
|
}: with {
|
|
|
obj {
|
|
|
nam = '#stairwell';
|
|
|
act = translate("tower_locale", 'tower_level_1_stairwell');
|
|
|
}
|
|
|
};
|
|
|
obj {
|
|
|
nam = '#bookshelves';
|
|
|
act = translate("tower_locale", 'tower_level_3_bookshelves');
|
|
|
};
|
|
|
obj {
|
|
|
nam = '#fireplace';
|
|
|
act = translate("tower_locale", 'tower_level_3_fireplace');
|
|
|
};
|
|
|
obj {
|
|
|
nam = '#rockchair';
|
|
|
act = translate("tower_locale", 'tower_level_3_rockchair');
|
|
|
};
|
|
|
obj {
|
|
|
nam = 'level_3_room_2_door';
|
|
|
dsc = translate("tower_locale", 'tower_level_3_hidden_door_dsc');
|
|
|
act = translate("tower_locale", 'tower_level_3_hidden_door_act');
|
|
|
}:disable();
|
|
|
obj {
|
|
|
solved = false;
|
|
|
nam = 'tower_level_3_table';
|
|
|
act = function(s)
|
|
|
if s.solved then
|
|
|
return translate_now("tower_locale", 'tower_level_3_table_decor') .. ' ' .. translate_now("tower_locale", 'tower_level_3_table_decor_solved');
|
|
|
else
|
|
|
walkin('tower_level_3_table_in');
|
|
|
end;
|
|
|
end;
|
|
|
};
|
|
|
obj {
|
|
|
nam = '#tower_3_door';
|
|
|
dsc = function(s)
|
|
|
if _'level_3_up':disabled() then
|
|
|
return translate_now("tower_locale", 'tower_level_3_door_dsc_locked');
|
|
|
else
|
|
|
return translate_now("tower_locale", 'tower_level_3_door_dsc_open');
|
|
|
end;
|
|
|
end;
|
|
|
act = function(s)
|
|
|
if _'level_3_up':disabled() then
|
|
|
return translate_now("tower_locale", 'tower_level_3_door_act_locked');
|
|
|
else
|
|
|
return translate_now("tower_locale", 'tower_level_3_door_act_open');
|
|
|
end;
|
|
|
end;
|
|
|
}: with {
|
|
|
obj {
|
|
|
nam = '#stairwell';
|
|
|
act = translate("tower_locale", 'tower_level_1_stairwell');
|
|
|
}
|
|
|
};
|
|
|
}
|
|
|
|
|
|
room {
|
|
|
nam = 'tower_level_3_table_in';
|
|
|
nam = 'tower_level_3_table_in';
|
|
|
pic = function(s)
|
|
|
local p = 'images/table/table_reff.png';
|
|
|
if _'#figures':disabled() then
|
|
@@ -1176,398 +1179,398 @@ room {
|
|
|
|
|
|
return p;
|
|
|
end;
|
|
|
theme = 'tower';
|
|
|
nofollow = true;
|
|
|
disp = translate("tower_locale", 'tower_level_3_disp');
|
|
|
decor = function(s)
|
|
|
theme = 'tower';
|
|
|
nofollow = true;
|
|
|
disp = translate("tower_locale", 'tower_level_3_disp');
|
|
|
decor = function(s)
|
|
|
return translate_now("tower_locale", 'tower_level_3_table_decor') .. ' ' .. translate_now("tower_locale", 'tower_level_3_table_decor_unsolved');
|
|
|
end;
|
|
|
way = {
|
|
|
path {translate("common_locale", 'back'), 'tower_level_3'};
|
|
|
};
|
|
|
way = {
|
|
|
path {translate("common_locale", 'back'), 'tower_level_3'};
|
|
|
};
|
|
|
}:with {
|
|
|
obj {
|
|
|
nam = '#figures';
|
|
|
dsc = translate("tower_locale", 'tower_level_3_table_in_figures_dsc');
|
|
|
act = function(s)
|
|
|
take('figure_wolf');
|
|
|
take('figure_tiger');
|
|
|
take('figure_lion');
|
|
|
take('figure_knight');
|
|
|
take('figure_tower');
|
|
|
s:disable();
|
|
|
return translate_now("tower_locale", 'tower_level_3_table_in_figures_act');
|
|
|
end;
|
|
|
};
|
|
|
obj {
|
|
|
item = false;
|
|
|
target = 'figure_wolf';
|
|
|
nam = '#north_west';
|
|
|
dsc = function(s)
|
|
|
if s.item then
|
|
|
obj {
|
|
|
nam = '#figures';
|
|
|
dsc = translate("tower_locale", 'tower_level_3_table_in_figures_dsc');
|
|
|
act = function(s)
|
|
|
take('figure_wolf');
|
|
|
take('figure_tiger');
|
|
|
take('figure_lion');
|
|
|
take('figure_knight');
|
|
|
take('figure_tower');
|
|
|
s:disable();
|
|
|
return translate_now("tower_locale", 'tower_level_3_table_in_figures_act');
|
|
|
end;
|
|
|
};
|
|
|
obj {
|
|
|
item = false;
|
|
|
target = 'figure_wolf';
|
|
|
nam = '#north_west';
|
|
|
dsc = function(s)
|
|
|
if s.item then
|
|
|
return translate_now("tower_locale", 'tower_level_3_table_deepening_dsc_full', {
|
|
|
location='NW',
|
|
|
item=s.item.disp2
|
|
|
});
|
|
|
else
|
|
|
return translate_now("tower_locale", 'tower_level_3_table_deepening_dsc_empty', {
|
|
|
else
|
|
|
return translate_now("tower_locale", 'tower_level_3_table_deepening_dsc_empty', {
|
|
|
location='NW'
|
|
|
});
|
|
|
end;
|
|
|
end;
|
|
|
act = function(s)
|
|
|
if s.item then
|
|
|
local t = s.item;
|
|
|
take(s.item);
|
|
|
s.item = false;
|
|
|
end;
|
|
|
end;
|
|
|
act = function(s)
|
|
|
if s.item then
|
|
|
local t = s.item;
|
|
|
take(s.item);
|
|
|
s.item = false;
|
|
|
return translate_now("tower_locale", 'tower_level_3_table_deepening_act_full', {
|
|
|
item=t.disp3
|
|
|
});
|
|
|
else
|
|
|
return translate_now("tower_locale", 'tower_level_3_table_deepening_act_empty');
|
|
|
end;
|
|
|
end;
|
|
|
used = function(s, o)
|
|
|
if s.item then
|
|
|
else
|
|
|
return translate_now("tower_locale", 'tower_level_3_table_deepening_act_empty');
|
|
|
end;
|
|
|
end;
|
|
|
used = function(s, o)
|
|
|
if s.item then
|
|
|
return translate_now("tower_locale", 'tower_level_3_table_deepening_used_full', {
|
|
|
item=s.item.disp2
|
|
|
});
|
|
|
elseif o^'figure_wolf' or o^'figure_lion' or o^'figure_tower' or o^'figure_knight' or o^'figure_tiger' then
|
|
|
s.item = o;
|
|
|
elseif o^'figure_wolf' or o^'figure_lion' or o^'figure_tower' or o^'figure_knight' or o^'figure_tiger' then
|
|
|
s.item = o;
|
|
|
p(translate_now("tower_locale", 'tower_level_3_table_deepening_used_fit', {
|
|
|
item=o.disp3
|
|
|
}));
|
|
|
remove(o, pl);
|
|
|
local niches = {
|
|
|
_('#north_west');
|
|
|
_('#north_east');
|
|
|
_('#middle');
|
|
|
_('#south_west');
|
|
|
_('#south_east');
|
|
|
};
|
|
|
remove(o, pl);
|
|
|
local niches = {
|
|
|
_('#north_west');
|
|
|
_('#north_east');
|
|
|
_('#middle');
|
|
|
_('#south_west');
|
|
|
_('#south_east');
|
|
|
};
|
|
|
|
|
|
for i = 1, #niches do
|
|
|
if not niches[i].item or niches[i].item.nam ~= niches[i].target then
|
|
|
return;
|
|
|
end;
|
|
|
end;
|
|
|
for i = 1, #niches do
|
|
|
if not niches[i].item or niches[i].item.nam ~= niches[i].target then
|
|
|
return;
|
|
|
end;
|
|
|
end;
|
|
|
|
|
|
_('tower_level_3_table').solved = true;
|
|
|
walkout();
|
|
|
_('level_3_up'):enable();
|
|
|
p(translate_now("tower_locale", 'tower_level_3_table_deepening_used_open'));
|
|
|
_('tower_level_3_table').solved = true;
|
|
|
walkout();
|
|
|
_('level_3_up'):enable();
|
|
|
p(translate_now("tower_locale", 'tower_level_3_table_deepening_used_open'));
|
|
|
else
|
|
|
return false;
|
|
|
end;
|
|
|
end;
|
|
|
};
|
|
|
obj {
|
|
|
item = false;
|
|
|
target = 'figure_lion';
|
|
|
nam = '#north_east';
|
|
|
dsc = function(s)
|
|
|
if s.item then
|
|
|
end;
|
|
|
end;
|
|
|
};
|
|
|
obj {
|
|
|
item = false;
|
|
|
target = 'figure_lion';
|
|
|
nam = '#north_east';
|
|
|
dsc = function(s)
|
|
|
if s.item then
|
|
|
return translate_now("tower_locale", 'tower_level_3_table_deepening_dsc_full', {
|
|
|
location='NE',
|
|
|
item=s.item.disp2
|
|
|
});
|
|
|
else
|
|
|
return translate_now("tower_locale", 'tower_level_3_table_deepening_dsc_empty', {
|
|
|
else
|
|
|
return translate_now("tower_locale", 'tower_level_3_table_deepening_dsc_empty', {
|
|
|
location='NE'
|
|
|
});
|
|
|
end;
|
|
|
end;
|
|
|
act = function(s)
|
|
|
if s.item then
|
|
|
local t = s.item;
|
|
|
take(s.item);
|
|
|
s.item = false;
|
|
|
end;
|
|
|
end;
|
|
|
act = function(s)
|
|
|
if s.item then
|
|
|
local t = s.item;
|
|
|
take(s.item);
|
|
|
s.item = false;
|
|
|
return translate_now("tower_locale", 'tower_level_3_table_deepening_act_full', {
|
|
|
item=t.disp3
|
|
|
});
|
|
|
else
|
|
|
return translate_now("tower_locale", 'tower_level_3_table_deepening_act_empty');
|
|
|
end;
|
|
|
end;
|
|
|
used = function(s, o)
|
|
|
if s.item then
|
|
|
else
|
|
|
return translate_now("tower_locale", 'tower_level_3_table_deepening_act_empty');
|
|
|
end;
|
|
|
end;
|
|
|
used = function(s, o)
|
|
|
if s.item then
|
|
|
return translate_now("tower_locale", 'tower_level_3_table_deepening_used_full', {
|
|
|
item=s.item.disp2
|
|
|
});
|
|
|
elseif o^'figure_wolf' or o^'figure_lion' or o^'figure_tower' or o^'figure_knight' or o^'figure_tiger' then
|
|
|
s.item = o;
|
|
|
elseif o^'figure_wolf' or o^'figure_lion' or o^'figure_tower' or o^'figure_knight' or o^'figure_tiger' then
|
|
|
s.item = o;
|
|
|
p(translate_now("tower_locale", 'tower_level_3_table_deepening_used_fit', {
|
|
|
item=o.disp3
|
|
|
}));
|
|
|
remove(o, pl);
|
|
|
local niches = {
|
|
|
_('#north_west');
|
|
|
_('#north_east');
|
|
|
_('#middle');
|
|
|
_('#south_west');
|
|
|
_('#south_east');
|
|
|
};
|
|
|
remove(o, pl);
|
|
|
local niches = {
|
|
|
_('#north_west');
|
|
|
_('#north_east');
|
|
|
_('#middle');
|
|
|
_('#south_west');
|
|
|
_('#south_east');
|
|
|
};
|
|
|
|
|
|
for i = 1, #niches do
|
|
|
if not niches[i].item or niches[i].item.nam ~= niches[i].target then
|
|
|
return;
|
|
|
end;
|
|
|
end;
|
|
|
for i = 1, #niches do
|
|
|
if not niches[i].item or niches[i].item.nam ~= niches[i].target then
|
|
|
return;
|
|
|
end;
|
|
|
end;
|
|
|
|
|
|
_('tower_level_3_table').solved = true;
|
|
|
walkout();
|
|
|
_('level_3_up'):enable();
|
|
|
p(translate_now("tower_locale", 'tower_level_3_table_deepening_used_open'));
|
|
|
_('tower_level_3_table').solved = true;
|
|
|
walkout();
|
|
|
_('level_3_up'):enable();
|
|
|
p(translate_now("tower_locale", 'tower_level_3_table_deepening_used_open'));
|
|
|
else
|
|
|
return false;
|
|
|
end;
|
|
|
end;
|
|
|
};
|
|
|
obj {
|
|
|
item = false;
|
|
|
target = 'figure_tower';
|
|
|
nam = '#middle';
|
|
|
dsc = function(s)
|
|
|
if s.item then
|
|
|
end;
|
|
|
end;
|
|
|
};
|
|
|
obj {
|
|
|
item = false;
|
|
|
target = 'figure_tower';
|
|
|
nam = '#middle';
|
|
|
dsc = function(s)
|
|
|
if s.item then
|
|
|
return translate_now("tower_locale", 'tower_level_3_table_middle_deepening_dsc_full', {
|
|
|
item=s.item.disp2
|
|
|
});
|
|
|
else
|
|
|
return translate_now("tower_locale", 'tower_level_3_table_middle_deepening_dsc_empty');
|
|
|
end;
|
|
|
end;
|
|
|
act = function(s)
|
|
|
if s.item then
|
|
|
local t = s.item;
|
|
|
take(s.item);
|
|
|
s.item = false;
|
|
|
else
|
|
|
return translate_now("tower_locale", 'tower_level_3_table_middle_deepening_dsc_empty');
|
|
|
end;
|
|
|
end;
|
|
|
act = function(s)
|
|
|
if s.item then
|
|
|
local t = s.item;
|
|
|
take(s.item);
|
|
|
s.item = false;
|
|
|
return translate_now("tower_locale", 'tower_level_3_table_deepening_act_full', {
|
|
|
item=t.disp3
|
|
|
});
|
|
|
else
|
|
|
return translate_now("tower_locale", 'tower_level_3_table_deepening_act_empty');
|
|
|
end;
|
|
|
end;
|
|
|
used = function(s, o)
|
|
|
if s.item then
|
|
|
else
|
|
|
return translate_now("tower_locale", 'tower_level_3_table_deepening_act_empty');
|
|
|
end;
|
|
|
end;
|
|
|
used = function(s, o)
|
|
|
if s.item then
|
|
|
return translate_now("tower_locale", 'tower_level_3_table_deepening_used_full', {
|
|
|
item=s.item.disp2
|
|
|
});
|
|
|
elseif o^'figure_wolf' or o^'figure_lion' or o^'figure_tower' or o^'figure_knight' or o^'figure_tiger' then
|
|
|
s.item = o;
|
|
|
elseif o^'figure_wolf' or o^'figure_lion' or o^'figure_tower' or o^'figure_knight' or o^'figure_tiger' then
|
|
|
s.item = o;
|
|
|
p(translate_now("tower_locale", 'tower_level_3_table_deepening_used_fit', {
|
|
|
item=o.disp3
|
|
|
}));
|
|
|
remove(o, pl);
|
|
|
local niches = {
|
|
|
_('#north_west');
|
|
|
_('#north_east');
|
|
|
_('#middle');
|
|
|
_('#south_west');
|
|
|
_('#south_east');
|
|
|
};
|
|
|
remove(o, pl);
|
|
|
local niches = {
|
|
|
_('#north_west');
|
|
|
_('#north_east');
|
|
|
_('#middle');
|
|
|
_('#south_west');
|
|
|
_('#south_east');
|
|
|
};
|
|
|
|
|
|
for i = 1, #niches do
|
|
|
if not niches[i].item or niches[i].item.nam ~= niches[i].target then
|
|
|
return;
|
|
|
end;
|
|
|
end;
|
|
|
for i = 1, #niches do
|
|
|
if not niches[i].item or niches[i].item.nam ~= niches[i].target then
|
|
|
return;
|
|
|
end;
|
|
|
end;
|
|
|
|
|
|
_('tower_level_3_table').solved = true;
|
|
|
walkout();
|
|
|
_('level_3_up'):enable();
|
|
|
p(translate_now("tower_locale", 'tower_level_3_table_deepening_used_open'));
|
|
|
_('tower_level_3_table').solved = true;
|
|
|
walkout();
|
|
|
_('level_3_up'):enable();
|
|
|
p(translate_now("tower_locale", 'tower_level_3_table_deepening_used_open'));
|
|
|
else
|
|
|
return false;
|
|
|
end;
|
|
|
end;
|
|
|
};
|
|
|
obj {
|
|
|
item = false;
|
|
|
target = 'figure_knight';
|
|
|
nam = '#south_west';
|
|
|
dsc = function(s)
|
|
|
if s.item then
|
|
|
end;
|
|
|
end;
|
|
|
};
|
|
|
obj {
|
|
|
item = false;
|
|
|
target = 'figure_knight';
|
|
|
nam = '#south_west';
|
|
|
dsc = function(s)
|
|
|
if s.item then
|
|
|
return translate_now("tower_locale", 'tower_level_3_table_deepening_dsc_full', {
|
|
|
location='SW',
|
|
|
item=s.item.disp2
|
|
|
});
|
|
|
else
|
|
|
return translate_now("tower_locale", 'tower_level_3_table_deepening_dsc_empty', {
|
|
|
else
|
|
|
return translate_now("tower_locale", 'tower_level_3_table_deepening_dsc_empty', {
|
|
|
location='SW'
|
|
|
});
|
|
|
end;
|
|
|
end;
|
|
|
act = function(s)
|
|
|
if s.item then
|
|
|
local t = s.item;
|
|
|
take(s.item);
|
|
|
s.item = false;
|
|
|
end;
|
|
|
end;
|
|
|
act = function(s)
|
|
|
if s.item then
|
|
|
local t = s.item;
|
|
|
take(s.item);
|
|
|
s.item = false;
|
|
|
return translate_now("tower_locale", 'tower_level_3_table_deepening_act_full', {
|
|
|
item=t.disp3
|
|
|
});
|
|
|
else
|
|
|
return translate_now("tower_locale", 'tower_level_3_table_deepening_act_empty');
|
|
|
end;
|
|
|
end;
|
|
|
used = function(s, o)
|
|
|
if s.item then
|
|
|
else
|
|
|
return translate_now("tower_locale", 'tower_level_3_table_deepening_act_empty');
|
|
|
end;
|
|
|
end;
|
|
|
used = function(s, o)
|
|
|
if s.item then
|
|
|
return translate_now("tower_locale", 'tower_level_3_table_deepening_used_full', {
|
|
|
item=s.item.disp2
|
|
|
});
|
|
|
elseif o^'figure_wolf' or o^'figure_lion' or o^'figure_tower' or o^'figure_knight' or o^'figure_tiger' then
|
|
|
s.item = o;
|
|
|
elseif o^'figure_wolf' or o^'figure_lion' or o^'figure_tower' or o^'figure_knight' or o^'figure_tiger' then
|
|
|
s.item = o;
|
|
|
p(translate_now("tower_locale", 'tower_level_3_table_deepening_used_fit', {
|
|
|
item=o.disp3
|
|
|
}));
|
|
|
remove(o, pl);
|
|
|
local niches = {
|
|
|
_('#north_west');
|
|
|
_('#north_east');
|
|
|
_('#middle');
|
|
|
_('#south_west');
|
|
|
_('#south_east');
|
|
|
};
|
|
|
remove(o, pl);
|
|
|
local niches = {
|
|
|
_('#north_west');
|
|
|
_('#north_east');
|
|
|
_('#middle');
|
|
|
_('#south_west');
|
|
|
_('#south_east');
|
|
|
};
|
|
|
|
|
|
for i = 1, #niches do
|
|
|
if not niches[i].item or niches[i].item.nam ~= niches[i].target then
|
|
|
return;
|
|
|
end;
|
|
|
end;
|
|
|
for i = 1, #niches do
|
|
|
if not niches[i].item or niches[i].item.nam ~= niches[i].target then
|
|
|
return;
|
|
|
end;
|
|
|
end;
|
|
|
|
|
|
_('tower_level_3_table').solved = true;
|
|
|
walkout();
|
|
|
_('level_3_up'):enable();
|
|
|
p(translate_now("tower_locale", 'tower_level_3_table_deepening_used_open'));
|
|
|
_('tower_level_3_table').solved = true;
|
|
|
walkout();
|
|
|
_('level_3_up'):enable();
|
|
|
p(translate_now("tower_locale", 'tower_level_3_table_deepening_used_open'));
|
|
|
else
|
|
|
return false;
|
|
|
end;
|
|
|
end;
|
|
|
};
|
|
|
obj {
|
|
|
item = false;
|
|
|
target = 'figure_tiger';
|
|
|
nam = '#south_east';
|
|
|
dsc = function(s)
|
|
|
if s.item then
|
|
|
end;
|
|
|
end;
|
|
|
};
|
|
|
obj {
|
|
|
item = false;
|
|
|
target = 'figure_tiger';
|
|
|
nam = '#south_east';
|
|
|
dsc = function(s)
|
|
|
if s.item then
|
|
|
return translate_now("tower_locale", 'tower_level_3_table_deepening_dsc_full', {
|
|
|
location='SE',
|
|
|
item=s.item.disp2
|
|
|
});
|
|
|
else
|
|
|
return translate_now("tower_locale", 'tower_level_3_table_deepening_dsc_empty', {
|
|
|
else
|
|
|
return translate_now("tower_locale", 'tower_level_3_table_deepening_dsc_empty', {
|
|
|
location='SE'
|
|
|
});
|
|
|
end;
|
|
|
end;
|
|
|
act = function(s)
|
|
|
if s.item then
|
|
|
local t = s.item;
|
|
|
take(s.item);
|
|
|
s.item = false;
|
|
|
end;
|
|
|
end;
|
|
|
act = function(s)
|
|
|
if s.item then
|
|
|
local t = s.item;
|
|
|
take(s.item);
|
|
|
s.item = false;
|
|
|
return translate_now("tower_locale", 'tower_level_3_table_deepening_act_full', {
|
|
|
item=t.disp3
|
|
|
});
|
|
|
else
|
|
|
return translate_now("tower_locale", 'tower_level_3_table_deepening_act_empty');
|
|
|
end;
|
|
|
end;
|
|
|
used = function(s, o)
|
|
|
if s.item then
|
|
|
else
|
|
|
return translate_now("tower_locale", 'tower_level_3_table_deepening_act_empty');
|
|
|
end;
|
|
|
end;
|
|
|
used = function(s, o)
|
|
|
if s.item then
|
|
|
return translate_now("tower_locale", 'tower_level_3_table_deepening_used_full', {
|
|
|
item=s.item.disp2
|
|
|
});
|
|
|
elseif o^'figure_wolf' or o^'figure_lion' or o^'figure_tower' or o^'figure_knight' or o^'figure_tiger' then
|
|
|
s.item = o;
|
|
|
elseif o^'figure_wolf' or o^'figure_lion' or o^'figure_tower' or o^'figure_knight' or o^'figure_tiger' then
|
|
|
s.item = o;
|
|
|
p(translate_now("tower_locale", 'tower_level_3_table_deepening_used_fit', {
|
|
|
item=o.disp3
|
|
|
}));
|
|
|
remove(o, pl);
|
|
|
local niches = {
|
|
|
_('#north_west');
|
|
|
_('#north_east');
|
|
|
_('#middle');
|
|
|
_('#south_west');
|
|
|
_('#south_east');
|
|
|
};
|
|
|
remove(o, pl);
|
|
|
local niches = {
|
|
|
_('#north_west');
|
|
|
_('#north_east');
|
|
|
_('#middle');
|
|
|
_('#south_west');
|
|
|
_('#south_east');
|
|
|
};
|
|
|
|
|
|
for i = 1, #niches do
|
|
|
if not niches[i].item or niches[i].item.nam ~= niches[i].target then
|
|
|
return;
|
|
|
end;
|
|
|
end;
|
|
|
for i = 1, #niches do
|
|
|
if not niches[i].item or niches[i].item.nam ~= niches[i].target then
|
|
|
return;
|
|
|
end;
|
|
|
end;
|
|
|
|
|
|
_('tower_level_3_table').solved = true;
|
|
|
walkout();
|
|
|
_('level_3_up'):enable();
|
|
|
p(translate_now("tower_locale", 'tower_level_3_table_deepening_used_open'));
|
|
|
_('tower_level_3_table').solved = true;
|
|
|
walkout();
|
|
|
_('level_3_up'):enable();
|
|
|
p(translate_now("tower_locale", 'tower_level_3_table_deepening_used_open'));
|
|
|
else
|
|
|
return false;
|
|
|
end;
|
|
|
end;
|
|
|
};
|
|
|
obj {
|
|
|
nam = '#hint';
|
|
|
act = translate("tower_locale", 'tower_level_3_hint');
|
|
|
}
|
|
|
end;
|
|
|
end;
|
|
|
};
|
|
|
obj {
|
|
|
nam = '#hint';
|
|
|
act = translate("tower_locale", 'tower_level_3_hint');
|
|
|
}
|
|
|
}
|
|
|
|
|
|
obj {
|
|
|
nam = 'figure_wolf';
|
|
|
disp = translate("tower_locale", 'figure_wolf_disp');
|
|
|
disp2 = translate("tower_locale", 'figure_wolf_disp2');
|
|
|
disp3 = translate("tower_locale", 'figure_wolf_disp3');
|
|
|
inv = function(s)
|
|
|
nam = 'figure_wolf';
|
|
|
disp = translate("tower_locale", 'figure_wolf_disp');
|
|
|
disp2 = translate("tower_locale", 'figure_wolf_disp2');
|
|
|
disp3 = translate("tower_locale", 'figure_wolf_disp3');
|
|
|
inv = function(s)
|
|
|
return translate_now("tower_locale", 'figure_wolf_inv') .. ' ' .. translate_now("tower_locale", 'figure_common_inv');
|
|
|
end;
|
|
|
}
|
|
|
|
|
|
obj {
|
|
|
nam = 'figure_tiger';
|
|
|
disp = translate("tower_locale", 'figure_tiger_disp');
|
|
|
disp2 = translate("tower_locale", 'figure_tiger_disp2');
|
|
|
disp3 = translate("tower_locale", 'figure_tiger_disp3');
|
|
|
inv = function(s)
|
|
|
nam = 'figure_tiger';
|
|
|
disp = translate("tower_locale", 'figure_tiger_disp');
|
|
|
disp2 = translate("tower_locale", 'figure_tiger_disp2');
|
|
|
disp3 = translate("tower_locale", 'figure_tiger_disp3');
|
|
|
inv = function(s)
|
|
|
return translate_now("tower_locale", 'figure_tiger_inv') .. ' ' .. translate_now("tower_locale", 'figure_common_inv');
|
|
|
end;
|
|
|
}
|
|
|
|
|
|
obj {
|
|
|
nam = 'figure_lion';
|
|
|
nam = 'figure_lion';
|
|
|
disp = translate("tower_locale", 'figure_lion_disp');
|
|
|
disp2 = translate("tower_locale", 'figure_lion_disp2');
|
|
|
disp3 = translate("tower_locale", 'figure_lion_disp3');
|
|
|
disp2 = translate("tower_locale", 'figure_lion_disp2');
|
|
|
disp3 = translate("tower_locale", 'figure_lion_disp3');
|
|
|
inv = function(s)
|
|
|
return translate_now("tower_locale", 'figure_lion_inv') .. ' ' .. translate_now("tower_locale", 'figure_common_inv');
|
|
|
end;
|
|
|
}
|
|
|
|
|
|
obj {
|
|
|
nam = 'figure_knight';
|
|
|
nam = 'figure_knight';
|
|
|
disp = translate("tower_locale", 'figure_knight_disp');
|
|
|
disp2 = translate("tower_locale", 'figure_knight_disp2');
|
|
|
disp3 = translate("tower_locale", 'figure_knight_disp3');
|
|
|
disp2 = translate("tower_locale", 'figure_knight_disp2');
|
|
|
disp3 = translate("tower_locale", 'figure_knight_disp3');
|
|
|
inv = function(s)
|
|
|
return translate_now("tower_locale", 'figure_knight_inv') .. ' ' .. translate_now("tower_locale", 'figure_common_inv');
|
|
|
end;
|
|
|
}
|
|
|
|
|
|
obj {
|
|
|
nam = 'figure_tower';
|
|
|
nam = 'figure_tower';
|
|
|
disp = translate("tower_locale", 'figure_tower_disp');
|
|
|
disp2 = translate("tower_locale", 'figure_tower_disp2');
|
|
|
disp3 = translate("tower_locale", 'figure_tower_disp3');
|
|
|
disp2 = translate("tower_locale", 'figure_tower_disp2');
|
|
|
disp3 = translate("tower_locale", 'figure_tower_disp3');
|
|
|
inv = function(s)
|
|
|
return translate_now("tower_locale", 'figure_tower_inv') .. ' ' .. translate_now("tower_locale", 'figure_common_inv');
|
|
|
end;
|
|
|
}
|
|
|
|
|
|
room {
|
|
|
nam = 'tower_level_4';
|
|
|
theme = 'tower';
|
|
|
disp = translate("tower_locale", 'tower_level_4_disp');
|
|
|
pic = 'images/tower_level_4.png';
|
|
|
decor = translate("tower_locale", 'tower_level_4_decor');
|
|
|
nam = 'tower_level_4';
|
|
|
theme = 'tower';
|
|
|
disp = translate("tower_locale", 'tower_level_4_disp');
|
|
|
pic = 'images/tower_level_4.png';
|
|
|
decor = translate("tower_locale", 'tower_level_4_decor');
|
|
|
enter = function(s)
|
|
|
if tower_accept_level < 2 then
|
|
|
tower_accept_level = 2;
|
|
@@ -1575,83 +1578,83 @@ room {
|
|
|
|
|
|
snd.music('sound/bgm_tower.ogg');
|
|
|
end;
|
|
|
way = {
|
|
|
path {translate("tower_locale", 'transition_downstairs'), "tower_level_3"};
|
|
|
path {"level_4_next_room", translate("tower_locale", 'transition_room'), "tower_level_4_room_2"}:disable();
|
|
|
};
|
|
|
way = {
|
|
|
path {translate("tower_locale", 'transition_downstairs'), "tower_level_3"};
|
|
|
path {"level_4_next_room", translate("tower_locale", 'transition_room'), "tower_level_4_room_2"}:disable();
|
|
|
};
|
|
|
}: with {
|
|
|
'tower_walls',
|
|
|
obj {
|
|
|
nam = '#bed';
|
|
|
act = translate("tower_locale", 'tower_level_4_bed');
|
|
|
};
|
|
|
obj {
|
|
|
nam = '#table';
|
|
|
act = translate("tower_locale", 'tower_level_4_table');
|
|
|
};
|
|
|
obj {
|
|
|
nam = '#candelabra';
|
|
|
state = 0;
|
|
|
act = function(s)
|
|
|
if candles_solved then
|
|
|
if not candle_taken then
|
|
|
s.state = 1;
|
|
|
take('candle');
|
|
|
candle_taken = true;
|
|
|
return translate_now("tower_locale", 'tower_candelabra_candle_taken');
|
|
|
else
|
|
|
if s.state == 0 then
|
|
|
return translate_now("tower_locale", 'tower_level_4_chandelier_act');
|
|
|
else
|
|
|
return translate_now("tower_locale", 'tower_level_4_chandelier_act') .. ' ' .. translate_now("tower_locale", 'tower_candelabra_candle_missing');
|
|
|
end;
|
|
|
end;
|
|
|
else
|
|
|
walkin('tower_candelabra');
|
|
|
end;
|
|
|
end;
|
|
|
};
|
|
|
obj {
|
|
|
nam = '#tower_4_door';
|
|
|
dsc = function(s)
|
|
|
if _'level_4_next_room':disabled() then
|
|
|
'tower_walls',
|
|
|
obj {
|
|
|
nam = '#bed';
|
|
|
act = translate("tower_locale", 'tower_level_4_bed');
|
|
|
};
|
|
|
obj {
|
|
|
nam = '#table';
|
|
|
act = translate("tower_locale", 'tower_level_4_table');
|
|
|
};
|
|
|
obj {
|
|
|
nam = '#candelabra';
|
|
|
state = 0;
|
|
|
act = function(s)
|
|
|
if candles_solved then
|
|
|
if not candle_taken then
|
|
|
s.state = 1;
|
|
|
take('candle');
|
|
|
candle_taken = true;
|
|
|
return translate_now("tower_locale", 'tower_candelabra_candle_taken');
|
|
|
else
|
|
|
if s.state == 0 then
|
|
|
return translate_now("tower_locale", 'tower_level_4_chandelier_act');
|
|
|
else
|
|
|
return translate_now("tower_locale", 'tower_level_4_chandelier_act') .. ' ' .. translate_now("tower_locale", 'tower_candelabra_candle_missing');
|
|
|
end;
|
|
|
end;
|
|
|
else
|
|
|
walkin('tower_candelabra');
|
|
|
end;
|
|
|
end;
|
|
|
};
|
|
|
obj {
|
|
|
nam = '#tower_4_door';
|
|
|
dsc = function(s)
|
|
|
if _'level_4_next_room':disabled() then
|
|
|
return translate_now("tower_locale", 'tower_level_4_door_dsc_locked');
|
|
|
else
|
|
|
else
|
|
|
return translate_now("tower_locale", 'tower_level_4_door_dsc_open');
|
|
|
end;
|
|
|
end;
|
|
|
act = function(s)
|
|
|
if _'level_4_next_room':disabled() then
|
|
|
end;
|
|
|
end;
|
|
|
act = function(s)
|
|
|
if _'level_4_next_room':disabled() then
|
|
|
return translate_now("tower_locale", 'tower_level_4_door_act_locked');
|
|
|
else
|
|
|
else
|
|
|
return translate_now("tower_locale", 'tower_level_4_door_act_open');
|
|
|
end;
|
|
|
end;
|
|
|
};
|
|
|
end;
|
|
|
end;
|
|
|
};
|
|
|
}
|
|
|
|
|
|
local candles_offsets = {
|
|
|
{28, 35, 30, 40, -2, -5, 36, 105, -1, -70},
|
|
|
{28, 36, 30, 42, -2, -6, 36, 117, -1, -81},
|
|
|
{28, 36, 30, 44, -2, -5, 36, 128, -1, -92},
|
|
|
{28, 39, 30, 42, -2, -3, 36, 69, -1, -30},
|
|
|
{28, 36, 30, 39, -2, -3, 36, 128, -1, -92},
|
|
|
{28, 36, 30, 39, -2, -3, 36, 117, -1, -81},
|
|
|
{28, 35, 30, 38, -2, -3, 36, 127, -1, -70}
|
|
|
{28, 35, 30, 40, -2, -5, 36, 105, -1, -70},
|
|
|
{28, 36, 30, 42, -2, -6, 36, 117, -1, -81},
|
|
|
{28, 36, 30, 44, -2, -5, 36, 128, -1, -92},
|
|
|
{28, 39, 30, 42, -2, -3, 36, 69, -1, -30},
|
|
|
{28, 36, 30, 39, -2, -3, 36, 128, -1, -92},
|
|
|
{28, 36, 30, 39, -2, -3, 36, 117, -1, -81},
|
|
|
{28, 35, 30, 38, -2, -3, 36, 127, -1, -70}
|
|
|
}
|
|
|
|
|
|
function candle(title, note, index, note_name, dx, dy)
|
|
|
return obj {
|
|
|
return obj {
|
|
|
_start = false;
|
|
|
_flame = false;
|
|
|
_blow = false;
|
|
|
_state = 0;
|
|
|
_timeout = 0;
|
|
|
nam = 'candle_' .. note;
|
|
|
dsc = function(s)
|
|
|
nam = 'candle_' .. note;
|
|
|
dsc = function(s)
|
|
|
return '{' .. translate_now("tower_locale", title) .. '}^';
|
|
|
end;
|
|
|
lit = false;
|
|
|
lit = false;
|
|
|
draw = function(s, dst, put_out)
|
|
|
if s._state == 0 then -- no flame
|
|
|
return
|
|
@@ -1725,114 +1728,117 @@ function candle(title, note, index, note
|
|
|
s._timeout = 0;
|
|
|
end;
|
|
|
end;
|
|
|
act = function(s)
|
|
|
act = function(s)
|
|
|
stop_sound();
|
|
|
sounds[note_name]:play();
|
|
|
sounds[note_name]:play();
|
|
|
p(translate_now("tower_locale", 'tower_level_4_candle_act_lit', {
|
|
|
note=translate_now("note_locale", note_name)
|
|
|
}));
|
|
|
s.lit = true;
|
|
|
s.lit = true;
|
|
|
s._state = 1;
|
|
|
s._timeout = 0;
|
|
|
</i>
|
|
|
|
|
|
--s:restore();
|
|
|
s:disable();
|
|
|
s:disable();
|
|
|
|
|
|
if here().notestack[here().playindex] ~= index then
|
|
|
_('tower_candelabra').timerstate = 1;
|
|
|
here().playindex = 1;
|
|
|
if here().notestack[here().playindex] ~= index then
|
|
|
_('tower_candelabra').timerstate = 1;
|
|
|
here().playindex = 1;
|
|
|
|
|
|
_'candle_c':blow();
|
|
|
_'candle_d':blow();
|
|
|
_'candle_e':blow();
|
|
|
_'candle_f':blow();
|
|
|
_'candle_g':blow();
|
|
|
_'candle_a':blow();
|
|
|
_'candle_b':blow();
|
|
|
_'candle_c':blow();
|
|
|
_'candle_d':blow();
|
|
|
_'candle_e':blow();
|
|
|
_'candle_f':blow();
|
|
|
_'candle_g':blow();
|
|
|
_'candle_a':blow();
|
|
|
_'candle_b':blow();
|
|
|
|
|
|
pn(translate_now("tower_locale", 'tower_level_4_candle_act_blow'));
|
|
|
|
|
|
local candelabra = _'tower_candelabra';
|
|
|
local candelabra = _'tower_candelabra';
|
|
|
|
|
|
p(translate_now("tower_locale", 'tower_level_4_candle_act_sequence'));
|
|
|
for i = 1, 6 do
|
|
|
pr(translate_now("note_locale", candelabra.notesequence[i]) .. ', ');
|
|
|
end;
|
|
|
for i = 1, 6 do
|
|
|
pr(translate_now("note_locale", candelabra.notesequence[i]) .. ', ');
|
|
|
end;
|
|
|
|
|
|
pr(translate_now("note_locale", candelabra.notesequence[7]) .. '. ');
|
|
|
else
|
|
|
here().playindex = here().playindex + 1;
|
|
|
if here().playindex > 7 then
|
|
|
candles_solved = true;
|
|
|
_('level_4_next_room'):enable();
|
|
|
_('tower_candelabra').timerstate = 4;
|
|
|
pr(translate_now("note_locale", candelabra.notesequence[7]) .. '. ');
|
|
|
else
|
|
|
here().playindex = here().playindex + 1;
|
|
|
if here().playindex > 7 then
|
|
|
candles_solved = true;
|
|
|
_('level_4_next_room'):enable();
|
|
|
_('tower_candelabra').timerstate = 4;
|
|
|
|
|
|
p(translate_now("tower_locale", 'tower_level_4_candle_act_open'));
|
|
|
|
|
|
local ns = {
|
|
|
gusts[rnd(#gusts)];
|
|
|
'open_door';
|
|
|
};
|
|
|
stop_sound();
|
|
|
play_sound(ns, 600);
|
|
|
local ns = {
|
|
|
gusts[rnd(#gusts)];
|
|
|
'open_door';
|
|
|
};
|
|
|
stop_sound();
|
|
|
play_sound(ns, 600);
|
|
|
|
|
|
walk('tower_level_4');
|
|
|
end;
|
|
|
end;
|
|
|
end;
|
|
|
blow = function(s)
|
|
|
s:enable();
|
|
|
s.lit = false;
|
|
|
end;
|
|
|
};
|
|
|
walk('tower_level_4');
|
|
|
end;
|
|
|
end;
|
|
|
end;
|
|
|
blow = function(s)
|
|
|
s:enable();
|
|
|
s.lit = false;
|
|
|
end;
|
|
|
};
|
|
|
end;
|
|
|
|
|
|
room {
|
|
|
notes = {
|
|
|
'note_c',
|
|
|
'note_d',
|
|
|
'note_e',
|
|
|
'note_f',
|
|
|
'note_g',
|
|
|
'note_a',
|
|
|
'note_b',
|
|
|
};
|
|
|
text = '';
|
|
|
notestack = {};
|
|
|
notesequence = {};
|
|
|
playindex = 1;
|
|
|
timerstate = 3;
|
|
|
nam = 'tower_candelabra';
|
|
|
disp = translate("tower_locale", 'tower_level_4_disp');
|
|
|
theme = 'tower';
|
|
|
nofollow = true;
|
|
|
dsc = translate("tower_locale", 'tower_candelabra_dsc');
|
|
|
'note_c',
|
|
|
'note_d',
|
|
|
'note_e',
|
|
|
'note_f',
|
|
|
'note_g',
|
|
|
'note_a',
|
|
|
'note_b',
|
|
|
};
|
|
|
text = '';
|
|
|
notestack = {};
|
|
|
notesequence = {};
|
|
|
playindex = 1;
|
|
|
timerstate = 3;
|
|
|
nam = 'tower_candelabra';
|
|
|
disp = translate("tower_locale", 'tower_level_4_disp');
|
|
|
theme = 'tower';
|
|
|
nofollow = true;
|
|
|
dsc = translate("tower_locale", 'tower_candelabra_dsc');
|
|
|
__pic = false;
|
|
|
_pic = false;
|
|
|
_put_out = false;
|
|
|
pic = function(s)
|
|
|
themeInit = function(s)
|
|
|
load_sounds('note_c', 'note_d', 'note_e', 'note_f', 'note_g', 'note_a', 'note_b', 'wind_gust_1', 'wind_gust_2', 'wind_gust_3', 'open_door');
|
|
|
end;
|
|
|
pic = function(s)
|
|
|
return s._pic;
|
|
|
end;
|
|
|
timer = function(s)
|
|
|
if s.timerstate == 1 then
|
|
|
s.timerstate = 6;
|
|
|
sounds[gusts[rnd(#gusts)]]:play();
|
|
|
elseif s.timerstate == 2 then
|
|
|
s.timerstate = 3;
|
|
|
stop_sound();
|
|
|
play_sound(s.notesequence, 600, false);
|
|
|
elseif s.timerstate == 4 then
|
|
|
s.timerstate = 5;
|
|
|
sounds[gusts[rnd(#gusts)]]:play();
|
|
|
elseif s.timerstate == 5 then
|
|
|
s.timerstate = 3;
|
|
|
sounds['open_door']:play();
|
|
|
elseif s.timerstate == 3 then
|
|
|
elseif s.timerstate < 66 then
|
|
|
s.timerstate = s.timerstate + 1;
|
|
|
else
|
|
|
s.timerstate = 2
|
|
|
end;
|
|
|
timer = function(s)
|
|
|
if s.timerstate == 1 then
|
|
|
s.timerstate = 6;
|
|
|
sounds[gusts[rnd(#gusts)]]:play();
|
|
|
elseif s.timerstate == 2 then
|
|
|
s.timerstate = 3;
|
|
|
stop_sound();
|
|
|
play_sound(s.notesequence, 600, false);
|
|
|
elseif s.timerstate == 4 then
|
|
|
s.timerstate = 5;
|
|
|
sounds[gusts[rnd(#gusts)]]:play();
|
|
|
elseif s.timerstate == 5 then
|
|
|
s.timerstate = 3;
|
|
|
sounds['open_door']:play();
|
|
|
elseif s.timerstate == 3 then
|
|
|
elseif s.timerstate < 66 then
|
|
|
s.timerstate = s.timerstate + 1;
|
|
|
else
|
|
|
s.timerstate = 2
|
|
|
end;
|
|
|
|
|
|
s.__pic:copy(s._pic, 0, 0);
|
|
|
local put_out = s._put_out;
|
|
@@ -1840,54 +1846,54 @@ room {
|
|
|
s._put_out = c:draw(s._pic, put_out) or s._put_out;
|
|
|
end;
|
|
|
|
|
|
return false;
|
|
|
end;
|
|
|
return false;
|
|
|
end;
|
|
|
initnotes = function(s)
|
|
|
if #s.notestack == 0 then
|
|
|
local ns = {1,2,3,4,5,6,7};
|
|
|
local ns = {1,2,3,4,5,6,7};
|
|
|
|
|
|
for i = 1, 7 do
|
|
|
local idx = rnd(#ns);
|
|
|
table.insert(s.notestack, ns[idx]);
|
|
|
table.insert(s.notesequence, s.notes[ns[idx]]);
|
|
|
ns[idx] = ns[8 - i];
|
|
|
ns[8 - i] = nil;
|
|
|
end;
|
|
|
end;
|
|
|
for i = 1, 7 do
|
|
|
local idx = rnd(#ns);
|
|
|
table.insert(s.notestack, ns[idx]);
|
|
|
table.insert(s.notesequence, s.notes[ns[idx]]);
|
|
|
ns[idx] = ns[8 - i];
|
|
|
ns[8 - i] = nil;
|
|
|
end;
|
|
|
end;
|
|
|
|
|
|
end;
|
|
|
enter = function(s)
|
|
|
enter = function(s)
|
|
|
snd.music('sound/amb_tower.ogg');
|
|
|
s:initnotes();
|
|
|
s:initnotes();
|
|
|
|
|
|
if #s.notesequence == 0 then
|
|
|
s.notesequence = {false, false, false};
|
|
|
for i = 1, 7 do
|
|
|
table.insert(s.notesequence, s.notes[s.notestack[i]][2]);
|
|
|
end;
|
|
|
end;
|
|
|
stop_sound();
|
|
|
play_sound(table.copy(s.notesequence), 600);
|
|
|
if #s.notesequence == 0 then
|
|
|
s.notesequence = {false, false, false};
|
|
|
for i = 1, 7 do
|
|
|
table.insert(s.notesequence, s.notes[s.notestack[i]][2]);
|
|
|
end;
|
|
|
end;
|
|
|
stop_sound();
|
|
|
play_sound(table.copy(s.notesequence), 600);
|
|
|
|
|
|
p(translate_now("tower_locale", 'tower_candelabra_enter'));
|
|
|
for i = 1, 6 do
|
|
|
for i = 1, 6 do
|
|
|
pr(translate_now("note_locale", s.notesequence[i]) .. ', ');
|
|
|
end;
|
|
|
|
|
|
pr(translate_now("note_locale", s.notesequence[7]) .. '. ');
|
|
|
end;
|
|
|
obj = {
|
|
|
candle('tower_candle_1', 'c', 1, 'note_c', 57, 70);
|
|
|
candle('tower_candle_2', 'd', 2, 'note_d', 83, 81);
|
|
|
candle('tower_candle_3', 'e', 3, 'note_e', 106, 92);
|
|
|
candle('tower_candle_4', 'f', 4, 'note_f', 143, 30);
|
|
|
candle('tower_candle_5', 'g', 5, 'note_g', 176, 92);
|
|
|
candle('tower_candle_6', 'a', 6, 'note_a', 201, 81);
|
|
|
candle('tower_candle_7', 'b', 7, 'note_b', 226, 70);
|
|
|
};
|
|
|
way = {
|
|
|
path {translate("common_locale", 'back'), 'tower_level_4'};
|
|
|
};
|
|
|
end;
|
|
|
obj = {
|
|
|
candle('tower_candle_1', 'c', 1, 'note_c', 57, 70);
|
|
|
candle('tower_candle_2', 'd', 2, 'note_d', 83, 81);
|
|
|
candle('tower_candle_3', 'e', 3, 'note_e', 106, 92);
|
|
|
candle('tower_candle_4', 'f', 4, 'note_f', 143, 30);
|
|
|
candle('tower_candle_5', 'g', 5, 'note_g', 176, 92);
|
|
|
candle('tower_candle_6', 'a', 6, 'note_a', 201, 81);
|
|
|
candle('tower_candle_7', 'b', 7, 'note_b', 226, 70);
|
|
|
};
|
|
|
way = {
|
|
|
path {translate("common_locale", 'back'), 'tower_level_4'};
|
|
|
};
|
|
|
themeInit = function(s)
|
|
|
timer:set(25);
|
|
|
|
|
@@ -1906,104 +1912,107 @@ room {
|
|
|
c:restore();
|
|
|
end;
|
|
|
end;
|
|
|
themeDispose = function(s)
|
|
|
D {'candle_1_fire'};
|
|
|
D {'candle_2_fire'};
|
|
|
D {'candle_3_fire'};
|
|
|
D {'candle_4_fire'};
|
|
|
D {'candle_5_fire'};
|
|
|
D {'candle_6_fire'};
|
|
|
D {'candle_7_fire'};
|
|
|
end;
|
|
|
themeDispose = function(s)
|
|
|
D {'candle_1_fire'};
|
|
|
D {'candle_2_fire'};
|
|
|
D {'candle_3_fire'};
|
|
|
D {'candle_4_fire'};
|
|
|
D {'candle_5_fire'};
|
|
|
D {'candle_6_fire'};
|
|
|
D {'candle_7_fire'};
|
|
|
end;
|
|
|
}
|
|
|
|
|
|
room {
|
|
|
nam = 'tower_level_4_room_2';
|
|
|
disp = translate("tower_locale", 'tower_level_4_room_2_disp');
|
|
|
theme = 'tower';
|
|
|
pic = function(s)
|
|
|
if power_on then
|
|
|
return 'images/tower_level_4_room_2_light.png';
|
|
|
else
|
|
|
return 'images/tower_level_4_room_2_dark.png';
|
|
|
end;
|
|
|
end;
|
|
|
nam = 'tower_level_4_room_2';
|
|
|
disp = translate("tower_locale", 'tower_level_4_room_2_disp');
|
|
|
theme = 'tower';
|
|
|
pic = function(s)
|
|
|
if power_on then
|
|
|
return 'images/tower_level_4_room_2_light.png';
|
|
|
else
|
|
|
return 'images/tower_level_4_room_2_dark.png';
|
|
|
end;
|
|
|
end;
|
|
|
enter = function(s)
|
|
|
instead.autosave();
|
|
|
end;
|
|
|
decor = translate("tower_locale", 'tower_level_4_room_2_decor');
|
|
|
way = {
|
|
|
path { translate("tower_locale", 'transition_door'), 'tower_level_4' };
|
|
|
path { translate("tower_locale", 'transition_downstairs'), 'tower_level_3_room_2' };
|
|
|
};
|
|
|
decor = translate("tower_locale", 'tower_level_4_room_2_decor');
|
|
|
way = {
|
|
|
path { translate("tower_locale", 'transition_door'), 'tower_level_4' };
|
|
|
path { translate("tower_locale", 'transition_downstairs'), 'tower_level_3_room_2' };
|
|
|
};
|
|
|
themeInit = function(s)
|
|
|
load_sounds('long_beep', 'short_beep', 'pc_startup');
|
|
|
end;
|
|
|
}: with {
|
|
|
obj {
|
|
|
nam = '#ladder';
|
|
|
act = translate("tower_locale", 'tower_level_4_room_2_ladder');
|
|
|
};
|
|
|
obj {
|
|
|
nam = '#servers';
|
|
|
act = function(s)
|
|
|
if power_on then
|
|
|
return translate_now("tower_locale", 'tower_level_4_room_2_servers_powered');
|
|
|
else
|
|
|
return translate_now("tower_locale", 'tower_level_4_room_2_servers');
|
|
|
end;
|
|
|
end;
|
|
|
};
|
|
|
obj {
|
|
|
nam = '#table';
|
|
|
act = translate("tower_locale", 'tower_level_4_room_2_table');
|
|
|
};
|
|
|
obj {
|
|
|
nam = '#armchair';
|
|
|
act = translate("tower_locale", 'tower_level_4_room_2_armchair');
|
|
|
};
|
|
|
obj {
|
|
|
assembled = true;
|
|
|
nam = '#computer';
|
|
|
act = function(s)
|
|
|
if s.assembled then
|
|
|
if power_on then
|
|
|
return _('system_unit'):check();
|
|
|
else
|
|
|
return translate_now("tower_locale", 'tower_level_4_room_2_computer_act');
|
|
|
end;
|
|
|
else
|
|
|
walkin('system_unit');
|
|
|
end;
|
|
|
end;
|
|
|
used = function(s, o)
|
|
|
if o^'tool_box' then
|
|
|
s.assembled = not s.assembled;
|
|
|
obj {
|
|
|
nam = '#ladder';
|
|
|
act = translate("tower_locale", 'tower_level_4_room_2_ladder');
|
|
|
};
|
|
|
obj {
|
|
|
nam = '#servers';
|
|
|
act = function(s)
|
|
|
if power_on then
|
|
|
return translate_now("tower_locale", 'tower_level_4_room_2_servers_powered');
|
|
|
else
|
|
|
return translate_now("tower_locale", 'tower_level_4_room_2_servers');
|
|
|
end;
|
|
|
end;
|
|
|
};
|
|
|
obj {
|
|
|
nam = '#table';
|
|
|
act = translate("tower_locale", 'tower_level_4_room_2_table');
|
|
|
};
|
|
|
obj {
|
|
|
nam = '#armchair';
|
|
|
act = translate("tower_locale", 'tower_level_4_room_2_armchair');
|
|
|
};
|
|
|
obj {
|
|
|
assembled = true;
|
|
|
nam = '#computer';
|
|
|
act = function(s)
|
|
|
if s.assembled then
|
|
|
if power_on then
|
|
|
return _('system_unit'):check();
|
|
|
else
|
|
|
return translate_now("tower_locale", 'tower_level_4_room_2_computer_act');
|
|
|
end;
|
|
|
else
|
|
|
walkin('system_unit');
|
|
|
end;
|
|
|
end;
|
|
|
used = function(s, o)
|
|
|
if o^'tool_box' then
|
|
|
s.assembled = not s.assembled;
|
|
|
|
|
|
if s.assembled then
|
|
|
return translate_now("tower_locale", 'tower_level_4_room_2_computer_used_assemble');
|
|
|
else
|
|
|
return translate_now("tower_locale", 'tower_level_4_room_2_computer_used_disassemble');
|
|
|
end;
|
|
|
end;
|
|
|
end;
|
|
|
|
|
|
return false;
|
|
|
end;
|
|
|
};
|
|
|
obj {
|
|
|
nam = '#monitor';
|
|
|
act = translate("tower_locale", 'tower_level_4_room_2_monitor');
|
|
|
};
|
|
|
obj {
|
|
|
nam = '#manual';
|
|
|
act = function(s)
|
|
|
walkin('terminal_manual');
|
|
|
end;
|
|
|
};
|
|
|
end;
|
|
|
};
|
|
|
obj {
|
|
|
nam = '#monitor';
|
|
|
act = translate("tower_locale", 'tower_level_4_room_2_monitor');
|
|
|
};
|
|
|
obj {
|
|
|
nam = '#manual';
|
|
|
act = function(s)
|
|
|
walkin('terminal_manual');
|
|
|
end;
|
|
|
};
|
|
|
}
|
|
|
|
|
|
declare {
|
|
|
sound_index = 1;
|
|
|
sound_data = {};
|
|
|
sound_speed = 600;
|
|
|
sound_last = 0;
|
|
|
sound_index = 1;
|
|
|
sound_data = {};
|
|
|
sound_speed = 600;
|
|
|
sound_last = 0;
|
|
|
|
|
|
animation_index = 1;
|
|
|
animation_data = false;
|
|
@@ -2071,7 +2080,7 @@ function animation_tick()
|
|
|
end;
|
|
|
local frame_data = nil;
|
|
|
if animation_item.frame_data then
|
|
|
frame_data = scale_frame_data(animation_item.frame_data)
|
|
|
frame_data = scale_frame_data(animation_item.frame_data, animation_item.w, animation_item.h)
|
|
|
end;
|
|
|
D {
|
|
|
'anim_frames',
|
|
@@ -2125,6 +2134,9 @@ function animation_set(animation, sync)
|
|
|
{type="anim", image, x, y, w, h, frames, delay, loop} -- show animation with `delay` ms between frames, repeat it `repeat` times
|
|
|
{type="reset", reset: int} -- reset the animation from `reset` item to run it again
|
|
|
]]
|
|
|
if instead.tiny then
|
|
|
return;
|
|
|
end;
|
|
|
animation_data = animation;
|
|
|
animation_index = 1;
|
|
|
if sync then
|
|
@@ -2138,65 +2150,65 @@ end;
|
|
|
|
|
|
function sound_tick()
|
|
|
if #sound_data > 0 then
|
|
|
if sound_last + sound_speed <= instead.ticks() then
|
|
|
sound_last = instead.ticks();
|
|
|
if sound_index > #sound_data then
|
|
|
sound_data = {};
|
|
|
return false;
|
|
|
end;
|
|
|
if sound_last + sound_speed <= instead.ticks() then
|
|
|
sound_last = instead.ticks();
|
|
|
if sound_index > #sound_data then
|
|
|
sound_data = {};
|
|
|
return false;
|
|
|
end;
|
|
|
|
|
|
if sound_data[sound_index] then
|
|
|
sounds[sound_data[sound_index]]:play();
|
|
|
end;
|
|
|
if sound_data[sound_index] then
|
|
|
sounds[sound_data[sound_index]]:play();
|
|
|
end;
|
|
|
|
|
|
sound_index = sound_index + 1;
|
|
|
end;
|
|
|
end;
|
|
|
sound_index = sound_index + 1;
|
|
|
end;
|
|
|
end;
|
|
|
end;
|
|
|
|
|
|
function play_sound(data, speed, immediate)
|
|
|
timer:set(25);
|
|
|
sound_index = 1;
|
|
|
sound_data = data;
|
|
|
sound_speed = speed;
|
|
|
if #sound_data > 0 then
|
|
|
sound_last = instead.ticks();
|
|
|
if immediate then
|
|
|
if sound_data[sound_index] then
|
|
|
sounds[sound_data[sound_index]]:play();
|
|
|
end;
|
|
|
sound_index = sound_index + 1;
|
|
|
end;
|
|
|
end;
|
|
|
sound_index = 1;
|
|
|
sound_data = data;
|
|
|
sound_speed = speed;
|
|
|
if #sound_data > 0 then
|
|
|
sound_last = instead.ticks();
|
|
|
if immediate then
|
|
|
if sound_data[sound_index] then
|
|
|
sounds[sound_data[sound_index]]:play();
|
|
|
end;
|
|
|
sound_index = sound_index + 1;
|
|
|
end;
|
|
|
end;
|
|
|
end;
|
|
|
|
|
|
function stop_sound()
|
|
|
sound_data = {};
|
|
|
sound_index = 1;
|
|
|
sound_data = {};
|
|
|
sound_index = 1;
|
|
|
end;
|
|
|
|
|
|
function game:timer()
|
|
|
sound_tick();
|
|
|
sound_tick();
|
|
|
animation_tick();
|
|
|
return false;
|
|
|
return false;
|
|
|
end;
|
|
|
|
|
|
room {
|
|
|
{
|
|
|
data = false;
|
|
|
sound_index = 1;
|
|
|
};
|
|
|
pic = function(s)
|
|
|
local pic = 'images/terminal_parts/pc_base.png';
|
|
|
{
|
|
|
data = false;
|
|
|
sound_index = 1;
|
|
|
};
|
|
|
pic = function(s)
|
|
|
local pic = 'images/terminal_parts/pc_base.png';
|
|
|
|
|
|
local motherboard = lookup('#motherboard', _'system_unit');
|
|
|
local cpu = lookup('#cpu', _'system_unit');
|
|
|
local ram = lookup('#ram', _'system_unit');
|
|
|
local slot1 = lookup('#slot1', _'system_unit');
|
|
|
local slot2 = lookup('#slot2', _'system_unit');
|
|
|
local slot3 = lookup('#slot3', _'system_unit');
|
|
|
local slot4 = lookup('#slot4', _'system_unit');
|
|
|
local slots = {slot1, slot2, slot3, slot4};
|
|
|
local cpu = lookup('#cpu', _'system_unit');
|
|
|
local ram = lookup('#ram', _'system_unit');
|
|
|
local slot1 = lookup('#slot1', _'system_unit');
|
|
|
local slot2 = lookup('#slot2', _'system_unit');
|
|
|
local slot3 = lookup('#slot3', _'system_unit');
|
|
|
local slot4 = lookup('#slot4', _'system_unit');
|
|
|
local slots = {slot1, slot2, slot3, slot4};
|
|
|
|
|
|
if motherboard.device then
|
|
|
pic = pic .. ';images/terminal_parts/motherboard' .. tostring(motherboard.device.slots) .. '.png@26,4'
|
|
@@ -2238,164 +2250,164 @@ room {
|
|
|
end;
|
|
|
|
|
|
return pic;
|
|
|
end;
|
|
|
theme = 'tower';
|
|
|
nam = 'system_unit';
|
|
|
nofollow = true;
|
|
|
disp = translate("tower_locale", 'system_unit_disp');
|
|
|
decor = translate("tower_locale", 'system_unit_decor');
|
|
|
enter = function(s)
|
|
|
local motherboard = lookup('#motherboard', _'system_unit');
|
|
|
local cpu = lookup('#cpu', _'system_unit');
|
|
|
local ram = lookup('#ram', _'system_unit');
|
|
|
local slot1 = lookup('#slot1', _'system_unit');
|
|
|
local slot2 = lookup('#slot2', _'system_unit');
|
|
|
local slot3 = lookup('#slot3', _'system_unit');
|
|
|
local slot4 = lookup('#slot4', _'system_unit');
|
|
|
local slots = {slot1, slot2, slot3, slot4};
|
|
|
end;
|
|
|
theme = 'tower';
|
|
|
nam = 'system_unit';
|
|
|
nofollow = true;
|
|
|
disp = translate("tower_locale", 'system_unit_disp');
|
|
|
decor = translate("tower_locale", 'system_unit_decor');
|
|
|
enter = function(s)
|
|
|
local motherboard = lookup('#motherboard', _'system_unit');
|
|
|
local cpu = lookup('#cpu', _'system_unit');
|
|
|
local ram = lookup('#ram', _'system_unit');
|
|
|
local slot1 = lookup('#slot1', _'system_unit');
|
|
|
local slot2 = lookup('#slot2', _'system_unit');
|
|
|
local slot3 = lookup('#slot3', _'system_unit');
|
|
|
local slot4 = lookup('#slot4', _'system_unit');
|
|
|
local slots = {slot1, slot2, slot3, slot4};
|
|
|
|
|
|
local min = 1;
|
|
|
if motherboard.device then
|
|
|
min = motherboard.device.slots + 1;
|
|
|
cpu:enable();
|
|
|
ram:enable();
|
|
|
else
|
|
|
cpu:disable();
|
|
|
ram:disable();
|
|
|
end;
|
|
|
local min = 1;
|
|
|
if motherboard.device then
|
|
|
min = motherboard.device.slots + 1;
|
|
|
cpu:enable();
|
|
|
ram:enable();
|
|
|
else
|
|
|
cpu:disable();
|
|
|
ram:disable();
|
|
|
end;
|
|
|
|
|
|
for i = 1, min - 1 do
|
|
|
slots[i]:enable();
|
|
|
end;
|
|
|
for i = min, #slots do
|
|
|
slots[i]:disable();
|
|
|
end;
|
|
|
end;
|
|
|
check = function(s, from_solarscale)
|
|
|
local motherboard = lookup('#motherboard', _'system_unit');
|
|
|
local cpu = lookup('#cpu', _'system_unit');
|
|
|
local ram = lookup('#ram', _'system_unit');
|
|
|
local slot1 = lookup('#slot1', _'system_unit');
|
|
|
local slot2 = lookup('#slot2', _'system_unit');
|
|
|
local slot3 = lookup('#slot3', _'system_unit');
|
|
|
local slot4 = lookup('#slot4', _'system_unit');
|
|
|
local slots = {slot1, slot2, slot3, slot4};
|
|
|
stop_sound();
|
|
|
sounds["pc_startup"]:play();
|
|
|
for i = 1, min - 1 do
|
|
|
slots[i]:enable();
|
|
|
end;
|
|
|
for i = min, #slots do
|
|
|
slots[i]:disable();
|
|
|
end;
|
|
|
end;
|
|
|
check = function(s, from_solarscale)
|
|
|
local motherboard = lookup('#motherboard', _'system_unit');
|
|
|
local cpu = lookup('#cpu', _'system_unit');
|
|
|
local ram = lookup('#ram', _'system_unit');
|
|
|
local slot1 = lookup('#slot1', _'system_unit');
|
|
|
local slot2 = lookup('#slot2', _'system_unit');
|
|
|
local slot3 = lookup('#slot3', _'system_unit');
|
|
|
local slot4 = lookup('#slot4', _'system_unit');
|
|
|
local slots = {slot1, slot2, slot3, slot4};
|
|
|
stop_sound();
|
|
|
sounds["pc_startup"]:play(7);
|
|
|
|
|
|
if not motherboard.device or not motherboard.device.status then
|
|
|
pc_status = 'fail';
|
|
|
if from_solarscale then
|
|
|
if not motherboard.device or not motherboard.device.status then
|
|
|
pc_status = 'fail';
|
|
|
if from_solarscale then
|
|
|
p(translate_now("tower_locale", 'system_unit_check_fail'));
|
|
|
p(translate_now("tower_locale", 'system_unit_check_no_sound'));
|
|
|
return 'motherboard';
|
|
|
else
|
|
|
return 'motherboard';
|
|
|
else
|
|
|
p(translate_now("tower_locale", 'system_unit_check_turn_on'));
|
|
|
p(translate_now("tower_locale", 'system_unit_check_fail'));
|
|
|
p(translate_now("tower_locale", 'system_unit_check_no_sound'));
|
|
|
return;
|
|
|
end;
|
|
|
end;
|
|
|
return;
|
|
|
end;
|
|
|
end;
|
|
|
|
|
|
local cpu_valid = false;
|
|
|
if cpu.device and cpu.device.status then
|
|
|
if motherboard.device.cpu == 'CAX' then
|
|
|
cpu_valid = motherboard.device.cpu == cpu.device.slot;
|
|
|
elseif motherboard.device.cpu == 'CVX' then
|
|
|
cpu_valid = cpu.device.slot == 'CVX' or cpu.device.slot == 'CAX';
|
|
|
elseif motherboard.device.cpu == 'CRX' then
|
|
|
cpu_valid = cpu.device.slot ~= 'CXX';
|
|
|
end;
|
|
|
end;
|
|
|
local cpu_valid = false;
|
|
|
if cpu.device and cpu.device.status then
|
|
|
if motherboard.device.cpu == 'CAX' then
|
|
|
cpu_valid = motherboard.device.cpu == cpu.device.slot;
|
|
|
elseif motherboard.device.cpu == 'CVX' then
|
|
|
cpu_valid = cpu.device.slot == 'CVX' or cpu.device.slot == 'CAX';
|
|
|
elseif motherboard.device.cpu == 'CRX' then
|
|
|
cpu_valid = cpu.device.slot ~= 'CXX';
|
|
|
end;
|
|
|
end;
|
|
|
|
|
|
if not cpu_valid then
|
|
|
play_sound({false, false, false, false, 'long_beep', false, 'short_beep', 'short_beep'}, 300);
|
|
|
pc_status = 'fail';
|
|
|
if from_solarscale then
|
|
|
if not cpu_valid then
|
|
|
play_sound({false, false, false, false, 'long_beep', false, 'short_beep', 'short_beep'}, 300);
|
|
|
pc_status = 'fail';
|
|
|
if from_solarscale then
|
|
|
p(translate_now("tower_locale", 'system_unit_check_fail'));
|
|
|
p(translate_now("tower_locale", 'system_unit_check_1_long_2_short'));
|
|
|
return "cpu";
|
|
|
else
|
|
|
return "cpu";
|
|
|
else
|
|
|
p(translate_now("tower_locale", 'system_unit_check_turn_on'));
|
|
|
p(translate_now("tower_locale", 'system_unit_check_fail'));
|
|
|
p(translate_now("tower_locale", 'system_unit_check_1_long_2_short'));
|
|
|
return;
|
|
|
end
|
|
|
end;
|
|
|
return;
|
|
|
end
|
|
|
end;
|
|
|
|
|
|
local ram_valid = false;
|
|
|
if ram.device and ram.device.status then
|
|
|
if motherboard.device.ram == 'RKT' then
|
|
|
ram_valid = ram.device.slot == 'RKT';
|
|
|
elseif motherboard.device.ram == 'RST' then
|
|
|
ram_valid = ram.device.slot == 'RKT' or ram.device.slot == 'RST';
|
|
|
elseif motherboard.device.ram == 'RDT' then
|
|
|
ram_valid = true;
|
|
|
end;
|
|
|
end;
|
|
|
local ram_valid = false;
|
|
|
if ram.device and ram.device.status then
|
|
|
if motherboard.device.ram == 'RKT' then
|
|
|
ram_valid = ram.device.slot == 'RKT';
|
|
|
elseif motherboard.device.ram == 'RST' then
|
|
|
ram_valid = ram.device.slot == 'RKT' or ram.device.slot == 'RST';
|
|
|
elseif motherboard.device.ram == 'RDT' then
|
|
|
ram_valid = true;
|
|
|
end;
|
|
|
end;
|
|
|
|
|
|
if not ram_valid then
|
|
|
play_sound({false, false, false, false, 'short_beep', 'long_beep', false, 'long_beep'}, 300);
|
|
|
pc_status = 'fail';
|
|
|
if from_solarscale then
|
|
|
if not ram_valid then
|
|
|
play_sound({false, false, false, false, 'short_beep', 'long_beep', false, 'long_beep'}, 300);
|
|
|
pc_status = 'fail';
|
|
|
if from_solarscale then
|
|
|
p(translate_now("tower_locale", 'system_unit_check_fail'));
|
|
|
p(translate_now("tower_locale", 'system_unit_check_1_short_2_long'));
|
|
|
return "ram";
|
|
|
else
|
|
|
return "ram";
|
|
|
else
|
|
|
p(translate_now("tower_locale", 'system_unit_check_turn_on'));
|
|
|
p(translate_now("tower_locale", 'system_unit_check_fail'));
|
|
|
p(translate_now("tower_locale", 'system_unit_check_1_short_2_long'));
|
|
|
return;
|
|
|
end;
|
|
|
end;
|
|
|
return;
|
|
|
end;
|
|
|
end;
|
|
|
|
|
|
-- Now we need to find video, keyboard and network
|
|
|
local video;
|
|
|
local keyboard;
|
|
|
local network;
|
|
|
for i = 1, motherboard.device.slots do
|
|
|
if slots[i].device then
|
|
|
if slots[i].device.ptype == 'video' then
|
|
|
video = slots[i].device;
|
|
|
elseif slots[i].device.ptype == 'keyboard' then
|
|
|
keyboard = slots[i].device;
|
|
|
elseif slots[i].device.ptype == 'network' then
|
|
|
network = slots[i].device;
|
|
|
end;
|
|
|
end;
|
|
|
end;
|
|
|
-- Now we need to find video, keyboard and network
|
|
|
local video;
|
|
|
local keyboard;
|
|
|
local network;
|
|
|
for i = 1, motherboard.device.slots do
|
|
|
if slots[i].device then
|
|
|
if slots[i].device.ptype == 'video' then
|
|
|
video = slots[i].device;
|
|
|
elseif slots[i].device.ptype == 'keyboard' then
|
|
|
keyboard = slots[i].device;
|
|
|
elseif slots[i].device.ptype == 'network' then
|
|
|
network = slots[i].device;
|
|
|
end;
|
|
|
end;
|
|
|
end;
|
|
|
|
|
|
if not video or not video.status then
|
|
|
play_sound({false, false, false, false, 'long_beep', false, 'short_beep', 'long_beep'}, 300);
|
|
|
pc_status = 'fail';
|
|
|
if from_solarscale then
|
|
|
if not video or not video.status then
|
|
|
play_sound({false, false, false, false, 'long_beep', false, 'short_beep', 'long_beep'}, 300);
|
|
|
pc_status = 'fail';
|
|
|
if from_solarscale then
|
|
|
p(translate_now("tower_locale", 'system_unit_check_fail'));
|
|
|
p(translate_now("tower_locale", 'system_unit_check_1_long_1_short_1_long'));
|
|
|
return "video";
|
|
|
else
|
|
|
return "video";
|
|
|
else
|
|
|
p(translate_now("tower_locale", 'system_unit_check_turn_on'));
|
|
|
p(translate_now("tower_locale", 'system_unit_check_fail'));
|
|
|
p(translate_now("tower_locale", 'system_unit_check_1_long_1_short_1_long'));
|
|
|
return;
|
|
|
end;
|
|
|
end;
|
|
|
return;
|
|
|
end;
|
|
|
end;
|
|
|
|
|
|
if not keyboard or not keyboard.status then
|
|
|
play_sound({false, false, false, false, 'long_beep', false, 'long_beep', false, 'long_beep'}, 300);
|
|
|
pc_status = 'fail';
|
|
|
if from_solarscale then
|
|
|
p(translate_now("tower_locale", 'system_unit_check_fail'));
|
|
|
if not keyboard or not keyboard.status then
|
|
|
play_sound({false, false, false, false, 'long_beep', false, 'long_beep', false, 'long_beep'}, 300);
|
|
|
pc_status = 'fail';
|
|
|
if from_solarscale then
|
|
|
p(translate_now("tower_locale", 'system_unit_check_fail'));
|
|
|
p(translate_now("tower_locale", 'system_unit_check_3_long'));
|
|
|
return "keyboard";
|
|
|
else
|
|
|
return "keyboard";
|
|
|
else
|
|
|
p(translate_now("tower_locale", 'system_unit_check_turn_on'));
|
|
|
p(translate_now("tower_locale", 'system_unit_check_fail'));
|
|
|
p(translate_now("tower_locale", 'system_unit_check_3_long'));
|
|
|
return;
|
|
|
end;
|
|
|
end;
|
|
|
_('terminal_boot').network = (network and network.status);
|
|
|
_('terminal_boot').graphical = (video.nam == 'gva-rx4');
|
|
|
return;
|
|
|
end;
|
|
|
end;
|
|
|
_('terminal_boot').network = (network and network.status);
|
|
|
_('terminal_boot').graphical = (video.nam == 'gva-rx4');
|
|
|
|
|
|
pc_status = 'ok';
|
|
|
|
|
@@ -2407,720 +2419,721 @@ room {
|
|
|
end;
|
|
|
end;
|
|
|
|
|
|
if not from_solarscale then
|
|
|
walkin('terminal_boot');
|
|
|
end;
|
|
|
end;
|
|
|
way = {
|
|
|
path {translate("common_locale", 'back'), 'tower_level_4_room_2'}
|
|
|
}
|
|
|
if not from_solarscale then
|
|
|
walkin('terminal_boot');
|
|
|
end;
|
|
|
end;
|
|
|
way = {
|
|
|
path {translate("common_locale", 'back'), 'tower_level_4_room_2'}
|
|
|
}
|
|
|
}:with {
|
|
|
obj {
|
|
|
nam = '#motherboard';
|
|
|
device = _'cvx-rst-i3sb';
|
|
|
dsc = function(s)
|
|
|
if s.device then
|
|
|
return '{' .. translate_now("parts_locale", 'motherboard') .. ': ' .. s.device.name .. '}^';
|
|
|
else
|
|
|
return '{' .. translate_now("parts_locale", 'motherboard') .. ': ' .. translate_now("parts_locale", 'component_not_set') .. '}^';
|
|
|
end;
|
|
|
end;
|
|
|
act = function(s)
|
|
|
local cpu= lookup('#cpu', _'system_unit');
|
|
|
local ram = lookup('#ram', _'system_unit');
|
|
|
local slot1 = lookup('#slot1', _'system_unit');
|
|
|
local slot2 = lookup('#slot2', _'system_unit');
|
|
|
local slot3 = lookup('#slot3', _'system_unit');
|
|
|
local slot4 = lookup('#slot4', _'system_unit');
|
|
|
obj {
|
|
|
nam = '#motherboard';
|
|
|
device = _'cvx-rst-i3sb';
|
|
|
dsc = function(s)
|
|
|
if s.device then
|
|
|
return '{' .. translate_now("parts_locale", 'motherboard') .. ': ' .. s.device.name .. '}^';
|
|
|
else
|
|
|
return '{' .. translate_now("parts_locale", 'motherboard') .. ': ' .. translate_now("parts_locale", 'component_not_set') .. '}^';
|
|
|
end;
|
|
|
end;
|
|
|
act = function(s)
|
|
|
local cpu= lookup('#cpu', _'system_unit');
|
|
|
local ram = lookup('#ram', _'system_unit');
|
|
|
local slot1 = lookup('#slot1', _'system_unit');
|
|
|
local slot2 = lookup('#slot2', _'system_unit');
|
|
|
local slot3 = lookup('#slot3', _'system_unit');
|
|
|
local slot4 = lookup('#slot4', _'system_unit');
|
|
|
|
|
|
if cpu.device or ram.device or slot1.device or slot2.device or slot3.device or slot4.device then
|
|
|
return translate_now("parts_locale", 'motherboard_not_taken');
|
|
|
end;
|
|
|
if cpu.device or ram.device or slot1.device or slot2.device or slot3.device or slot4.device then
|
|
|
return translate_now("parts_locale", 'motherboard_not_taken');
|
|
|
end;
|
|
|
|
|
|
if s.device then
|
|
|
if s.device then
|
|
|
local msg = std.call(_(s.device), 'tak');
|
|
|
take(s.device);
|
|
|
s.device = false;
|
|
|
take(s.device);
|
|
|
s.device = false;
|
|
|
|
|
|
cpu:disable();
|
|
|
ram:disable();
|
|
|
slot1:disable();
|
|
|
slot2:disable();
|
|
|
slot3:disable();
|
|
|
slot4:disable();
|
|
|
cpu:disable();
|
|
|
ram:disable();
|
|
|
slot1:disable();
|
|
|
slot2:disable();
|
|
|
slot3:disable();
|
|
|
slot4:disable();
|
|
|
pc_status = 'fail';
|
|
|
return msg;
|
|
|
end;
|
|
|
end;
|
|
|
return msg;
|
|
|
end;
|
|
|
end;
|
|
|
|
|
|
used = function(s, o)
|
|
|
if o.part and o.ptype == 'motherboard' then
|
|
|
local cpu = lookup('#cpu', _'system_unit');
|
|
|
local ram = lookup('#ram', _'system_unit');
|
|
|
local slot1 = lookup('#slot1', _'system_unit');
|
|
|
local slot2 = lookup('#slot2', _'system_unit');
|
|
|
local slot3 = lookup('#slot3', _'system_unit');
|
|
|
local slot4 = lookup('#slot4', _'system_unit');
|
|
|
local slots = { slot1, slot2, slot3, slot4 };
|
|
|
used = function(s, o)
|
|
|
if o.part and o.ptype == 'motherboard' then
|
|
|
local cpu = lookup('#cpu', _'system_unit');
|
|
|
local ram = lookup('#ram', _'system_unit');
|
|
|
local slot1 = lookup('#slot1', _'system_unit');
|
|
|
local slot2 = lookup('#slot2', _'system_unit');
|
|
|
local slot3 = lookup('#slot3', _'system_unit');
|
|
|
local slot4 = lookup('#slot4', _'system_unit');
|
|
|
local slots = { slot1, slot2, slot3, slot4 };
|
|
|
|
|
|
if cpu.device or ram.device or slot1.device or slot2.device or slot3.device or slot4.device then
|
|
|
return translate_now("parts_locale", 'motherboard_not_taken');
|
|
|
end;
|
|
|
if cpu.device or ram.device or slot1.device or slot2.device or slot3.device or slot4.device then
|
|
|
return translate_now("parts_locale", 'motherboard_not_taken');
|
|
|
end;
|
|
|
|
|
|
if s.device then
|
|
|
return translate_now("parts_locale", 'motherboard_needs_removal');
|
|
|
end;
|
|
|
if s.device then
|
|
|
return translate_now("parts_locale", 'motherboard_needs_removal');
|
|
|
end;
|
|
|
|
|
|
cpu:enable();
|
|
|
ram:enable();
|
|
|
cpu:enable();
|
|
|
ram:enable();
|
|
|
|
|
|
for i = 1, o.slots do
|
|
|
slots[i]:enable();
|
|
|
end;
|
|
|
for i = 1, o.slots do
|
|
|
slots[i]:enable();
|
|
|
end;
|
|
|
|
|
|
remove(o, pl);
|
|
|
s.device = o;
|
|
|
remove(o, pl);
|
|
|
s.device = o;
|
|
|
pc_status = 'fail';
|
|
|
return translate_now("parts_locale", 'motherboard_installed');
|
|
|
end;
|
|
|
return translate_now("parts_locale", 'motherboard_installed');
|
|
|
end;
|
|
|
|
|
|
return false;
|
|
|
end;
|
|
|
};
|
|
|
obj {
|
|
|
nam = '#cpu';
|
|
|
device = _'mcpu70-cvx-7mhz';
|
|
|
dsc = function(s)
|
|
|
if s.device then
|
|
|
return '{' .. translate_now("parts_locale", 'cpu') .. ': ' .. s.device.name .. '}^';
|
|
|
else
|
|
|
return '{' .. translate_now("parts_locale", 'cpu') .. ': ' .. translate_now("parts_locale", 'component_not_set') .. '}^';
|
|
|
end;
|
|
|
end;
|
|
|
act = function(s)
|
|
|
if s.device then
|
|
|
end;
|
|
|
};
|
|
|
obj {
|
|
|
nam = '#cpu';
|
|
|
device = _'mcpu70-cvx-7mhz';
|
|
|
dsc = function(s)
|
|
|
if s.device then
|
|
|
return '{' .. translate_now("parts_locale", 'cpu') .. ': ' .. s.device.name .. '}^';
|
|
|
else
|
|
|
return '{' .. translate_now("parts_locale", 'cpu') .. ': ' .. translate_now("parts_locale", 'component_not_set') .. '}^';
|
|
|
end;
|
|
|
end;
|
|
|
act = function(s)
|
|
|
if s.device then
|
|
|
local msg = std.call(_(s.device), 'tak');
|
|
|
take(s.device);
|
|
|
s.device = false;
|
|
|
take(s.device);
|
|
|
s.device = false;
|
|
|
pc_status = 'fail';
|
|
|
return msg;
|
|
|
end;
|
|
|
end;
|
|
|
used = function(s, o)
|
|
|
local motherboard = lookup('#motherboard', _'system_unit');
|
|
|
if o.part and o.ptype == 'cpu' and motherboard.device then
|
|
|
if s.device then
|
|
|
return translate_now("parts_locale", 'cpu_needs_removal');
|
|
|
end;
|
|
|
return msg;
|
|
|
end;
|
|
|
end;
|
|
|
used = function(s, o)
|
|
|
local motherboard = lookup('#motherboard', _'system_unit');
|
|
|
if o.part and o.ptype == 'cpu' and motherboard.device then
|
|
|
if s.device then
|
|
|
return translate_now("parts_locale", 'cpu_needs_removal');
|
|
|
end;
|
|
|
|
|
|
motherboard = motherboard.device;
|
|
|
motherboard = motherboard.device;
|
|
|
|
|
|
if (motherboard.cpu == 'CVX' and (o.slot == 'CRX' or o.slot == 'CXX')) or
|
|
|
(motherboard.cpu == 'CRX' and o.slot == 'CXX') or
|
|
|
(motherboard.cpu == 'CAX' and o.slot ~= 'CAX')
|
|
|
then
|
|
|
return translate_now("parts_locale", 'cpu_not_fit');
|
|
|
end;
|
|
|
if (motherboard.cpu == 'CVX' and (o.slot == 'CRX' or o.slot == 'CXX')) or
|
|
|
(motherboard.cpu == 'CRX' and o.slot == 'CXX') or
|
|
|
(motherboard.cpu == 'CAX' and o.slot ~= 'CAX')
|
|
|
then
|
|
|
return translate_now("parts_locale", 'cpu_not_fit');
|
|
|
end;
|
|
|
|
|
|
remove(o, pl);
|
|
|
s.device = o;
|
|
|
remove(o, pl);
|
|
|
s.device = o;
|
|
|
if lookup('#ram', _'system_unit').device then
|
|
|
pc_status = '';
|
|
|
else
|
|
|
pc_status = 'fail';
|
|
|
end;
|
|
|
return translate_now("parts_locale", 'cpu_installed');
|
|
|
end;
|
|
|
return translate_now("parts_locale", 'cpu_installed');
|
|
|
end;
|
|
|
return false;
|
|
|
end;
|
|
|
};
|
|
|
obj {
|
|
|
nam = '#ram';
|
|
|
device = _'rst-m16-16mb';
|
|
|
dsc = function(s)
|
|
|
if s.device then
|
|
|
return '{' .. translate_now("parts_locale", 'ram') .. ': ' .. s.device.name .. '}^';
|
|
|
else
|
|
|
return '{' .. translate_now("parts_locale", 'ram') .. ': ' .. translate_now("parts_locale", 'component_not_set') .. '}^';
|
|
|
end;
|
|
|
end;
|
|
|
act = function(s)
|
|
|
if s.device then
|
|
|
end;
|
|
|
};
|
|
|
obj {
|
|
|
nam = '#ram';
|
|
|
device = _'rst-m16-16mb';
|
|
|
dsc = function(s)
|
|
|
if s.device then
|
|
|
return '{' .. translate_now("parts_locale", 'ram') .. ': ' .. s.device.name .. '}^';
|
|
|
else
|
|
|
return '{' .. translate_now("parts_locale", 'ram') .. ': ' .. translate_now("parts_locale", 'component_not_set') .. '}^';
|
|
|
end;
|
|
|
end;
|
|
|
act = function(s)
|
|
|
if s.device then
|
|
|
local msg = std.call(_(s.device), 'tak');
|
|
|
take(s.device);
|
|
|
s.device = false;
|
|
|
take(s.device);
|
|
|
s.device = false;
|
|
|
pc_status = 'fail';
|
|
|
return msg;
|
|
|
end;
|
|
|
end;
|
|
|
used = function(s, o)
|
|
|
local motherboard = lookup('#motherboard', _'system_unit');
|
|
|
if o.part and o.ptype == 'ram' and motherboard.device then
|
|
|
if s.device then
|
|
|
return translate_now("parts_locale", 'ram_needs_removal');
|
|
|
end;
|
|
|
return msg;
|
|
|
end;
|
|
|
end;
|
|
|
used = function(s, o)
|
|
|
local motherboard = lookup('#motherboard', _'system_unit');
|
|
|
if o.part and o.ptype == 'ram' and motherboard.device then
|
|
|
if s.device then
|
|
|
return translate_now("parts_locale", 'ram_needs_removal');
|
|
|
end;
|
|
|
|
|
|
motherboard = motherboard.device;
|
|
|
motherboard = motherboard.device;
|
|
|
|
|
|
if (motherboard.ram == 'RST' and o.slot == 'RDT') or
|
|
|
(motherboard.ram == 'RKT' and o.slot ~= 'RKT')
|
|
|
then
|
|
|
return translate_now("parts_locale", 'ram_not_fit');
|
|
|
end;
|
|
|
if (motherboard.ram == 'RST' and o.slot == 'RDT') or
|
|
|
(motherboard.ram == 'RKT' and o.slot ~= 'RKT')
|
|
|
then
|
|
|
return translate_now("parts_locale", 'ram_not_fit');
|
|
|
end;
|
|
|
|
|
|
remove(o, pl);
|
|
|
s.device = o;
|
|
|
remove(o, pl);
|
|
|
s.device = o;
|
|
|
if lookup('#cpu', _'system_unit').device then
|
|
|
pc_status = '';
|
|
|
else
|
|
|
pc_status = 'fail';
|
|
|
end;
|
|
|
return translate_now("parts_locale", 'ram_installed');
|
|
|
end;
|
|
|
return translate_now("parts_locale", 'ram_installed');
|
|
|
end;
|
|
|
return false;
|
|
|
end;
|
|
|
};
|
|
|
obj {
|
|
|
nam = '#slot1';
|
|
|
device = _'tva-rx1';
|
|
|
dsc = function(s)
|
|
|
if s.device then
|
|
|
return '{' .. translate_now("parts_locale", 'slot') .. ': ' .. s.device.name .. '}^';
|
|
|
else
|
|
|
return '{' .. translate_now("parts_locale", 'slot') .. ': ' .. translate_now("parts_locale", 'component_not_set') .. '}^';
|
|
|
end;
|
|
|
end;
|
|
|
act = function(s)
|
|
|
if s.device then
|
|
|
end;
|
|
|
};
|
|
|
obj {
|
|
|
nam = '#slot1';
|
|
|
device = _'tva-rx1';
|
|
|
dsc = function(s)
|
|
|
if s.device then
|
|
|
return '{' .. translate_now("parts_locale", 'slot') .. ': ' .. s.device.name .. '}^';
|
|
|
else
|
|
|
return '{' .. translate_now("parts_locale", 'slot') .. ': ' .. translate_now("parts_locale", 'component_not_set') .. '}^';
|
|
|
end;
|
|
|
end;
|
|
|
act = function(s)
|
|
|
if s.device then
|
|
|
local msg = std.call(_(s.device), 'tak');
|
|
|
take(s.device);
|
|
|
s.device = false;
|
|
|
take(s.device);
|
|
|
s.device = false;
|
|
|
pc_status = '';
|
|
|
return msg;
|
|
|
end;
|
|
|
end;
|
|
|
used = function(s, o)
|
|
|
local motherboard = lookup('#motherboard', _'system_unit');
|
|
|
if o.part and (o.ptype == 'video' or o.ptype == 'network' or o.ptype == 'keyboard') and motherboard.device then
|
|
|
if s.device then
|
|
|
return translate_now("parts_locale", 'device_needs_removal');
|
|
|
end;
|
|
|
return msg;
|
|
|
end;
|
|
|
end;
|
|
|
used = function(s, o)
|
|
|
local motherboard = lookup('#motherboard', _'system_unit');
|
|
|
if o.part and (o.ptype == 'video' or o.ptype == 'network' or o.ptype == 'keyboard') and motherboard.device then
|
|
|
if s.device then
|
|
|
return translate_now("parts_locale", 'device_needs_removal');
|
|
|
end;
|
|
|
|
|
|
remove(o, pl);
|
|
|
s.device = o;
|
|
|
remove(o, pl);
|
|
|
s.device = o;
|
|
|
pc_status = '';
|
|
|
return translate_now("parts_locale", 'device_installed');
|
|
|
end;
|
|
|
return translate_now("parts_locale", 'device_installed');
|
|
|
end;
|
|
|
return false;
|
|
|
end;
|
|
|
};
|
|
|
obj {
|
|
|
nam = '#slot2';
|
|
|
device = _'kbc-s';
|
|
|
dsc = function(s)
|
|
|
if s.device then
|
|
|
return '{' .. translate_now("parts_locale", 'slot') .. ': ' .. s.device.name .. '}^';
|
|
|
else
|
|
|
return '{' .. translate_now("parts_locale", 'slot') .. ': ' .. translate_now("parts_locale", 'component_not_set') .. '}^';
|
|
|
end;
|
|
|
end;
|
|
|
act = function(s)
|
|
|
if s.device then
|
|
|
end;
|
|
|
};
|
|
|
obj {
|
|
|
nam = '#slot2';
|
|
|
device = _'kbc-s';
|
|
|
dsc = function(s)
|
|
|
if s.device then
|
|
|
return '{' .. translate_now("parts_locale", 'slot') .. ': ' .. s.device.name .. '}^';
|
|
|
else
|
|
|
return '{' .. translate_now("parts_locale", 'slot') .. ': ' .. translate_now("parts_locale", 'component_not_set') .. '}^';
|
|
|
end;
|
|
|
end;
|
|
|
act = function(s)
|
|
|
if s.device then
|
|
|
local msg = std.call(_(s.device), 'tak');
|
|
|
take(s.device);
|
|
|
s.device = false;
|
|
|
take(s.device);
|
|
|
s.device = false;
|
|
|
pc_status = '';
|
|
|
return msg;
|
|
|
end;
|
|
|
end;
|
|
|
used = function(s, o)
|
|
|
local motherboard = lookup('#motherboard', _'system_unit');
|
|
|
if o.part and (o.ptype == 'video' or o.ptype == 'network' or o.ptype == 'keyboard') and motherboard.device then
|
|
|
if s.device then
|
|
|
return translate_now("parts_locale", 'device_needs_removal');
|
|
|
end;
|
|
|
return msg;
|
|
|
end;
|
|
|
end;
|
|
|
used = function(s, o)
|
|
|
local motherboard = lookup('#motherboard', _'system_unit');
|
|
|
if o.part and (o.ptype == 'video' or o.ptype == 'network' or o.ptype == 'keyboard') and motherboard.device then
|
|
|
if s.device then
|
|
|
return translate_now("parts_locale", 'device_needs_removal');
|
|
|
end;
|
|
|
|
|
|
remove(o, pl);
|
|
|
s.device = o;
|
|
|
remove(o, pl);
|
|
|
s.device = o;
|
|
|
pc_status = '';
|
|
|
return translate_now("parts_locale", 'device_installed');
|
|
|
end;
|
|
|
return translate_now("parts_locale", 'device_installed');
|
|
|
end;
|
|
|
return false;
|
|
|
end;
|
|
|
};
|
|
|
obj {
|
|
|
nam = '#slot3';
|
|
|
device = _'fna-100-10mbs_1';
|
|
|
dsc = function(s)
|
|
|
if s.device then
|
|
|
return '{' .. translate_now("parts_locale", 'slot') .. ': ' .. s.device.name .. '}^';
|
|
|
else
|
|
|
return '{' .. translate_now("parts_locale", 'slot') .. ': ' .. translate_now("parts_locale", 'component_not_set') .. '}^';
|
|
|
end;
|
|
|
end;
|
|
|
act = function(s)
|
|
|
if s.device then
|
|
|
end;
|
|
|
};
|
|
|
obj {
|
|
|
nam = '#slot3';
|
|
|
device = _'fna-100-10mbs_1';
|
|
|
dsc = function(s)
|
|
|
if s.device then
|
|
|
return '{' .. translate_now("parts_locale", 'slot') .. ': ' .. s.device.name .. '}^';
|
|
|
else
|
|
|
return '{' .. translate_now("parts_locale", 'slot') .. ': ' .. translate_now("parts_locale", 'component_not_set') .. '}^';
|
|
|
end;
|
|
|
end;
|
|
|
act = function(s)
|
|
|
if s.device then
|
|
|
local msg = std.call(_(s.device), 'tak');
|
|
|
take(s.device);
|
|
|
s.device = false;
|
|
|
take(s.device);
|
|
|
s.device = false;
|
|
|
pc_status = '';
|
|
|
return msg;
|
|
|
end;
|
|
|
end;
|
|
|
used = function(s, o)
|
|
|
local motherboard = lookup('#motherboard', _'system_unit');
|
|
|
if o.part and (o.ptype == 'video' or o.ptype == 'network' or o.ptype == 'keyboard') and motherboard.device then
|
|
|
if s.device then
|
|
|
return translate_now("parts_locale", 'device_needs_removal');
|
|
|
end;
|
|
|
return msg;
|
|
|
end;
|
|
|
end;
|
|
|
used = function(s, o)
|
|
|
local motherboard = lookup('#motherboard', _'system_unit');
|
|
|
if o.part and (o.ptype == 'video' or o.ptype == 'network' or o.ptype == 'keyboard') and motherboard.device then
|
|
|
if s.device then
|
|
|
return translate_now("parts_locale", 'device_needs_removal');
|
|
|
end;
|
|
|
|
|
|
remove(o, pl);
|
|
|
s.device = o;
|
|
|
remove(o, pl);
|
|
|
s.device = o;
|
|
|
pc_status = '';
|
|
|
return translate_now("parts_locale", 'device_installed');
|
|
|
end;
|
|
|
return translate_now("parts_locale", 'device_installed');
|
|
|
end;
|
|
|
return false;
|
|
|
end;
|
|
|
};
|
|
|
obj {
|
|
|
nam = '#slot4';
|
|
|
device = false;
|
|
|
dsc = function(s)
|
|
|
if s.device then
|
|
|
return '{' .. translate_now("parts_locale", 'slot') .. ': ' .. s.device.name .. '}^';
|
|
|
else
|
|
|
return '{' .. translate_now("parts_locale", 'slot') .. ': ' .. translate_now("parts_locale", 'component_not_set') .. '}^';
|
|
|
end;
|
|
|
end;
|
|
|
act = function(s)
|
|
|
if s.device then
|
|
|
end;
|
|
|
};
|
|
|
obj {
|
|
|
nam = '#slot4';
|
|
|
device = false;
|
|
|
dsc = function(s)
|
|
|
if s.device then
|
|
|
return '{' .. translate_now("parts_locale", 'slot') .. ': ' .. s.device.name .. '}^';
|
|
|
else
|
|
|
return '{' .. translate_now("parts_locale", 'slot') .. ': ' .. translate_now("parts_locale", 'component_not_set') .. '}^';
|
|
|
end;
|
|
|
end;
|
|
|
act = function(s)
|
|
|
if s.device then
|
|
|
local msg = std.call(_(s.device), 'tak');
|
|
|
take(s.device);
|
|
|
s.device = false;
|
|
|
take(s.device);
|
|
|
s.device = false;
|
|
|
pc_status = '';
|
|
|
return msg;
|
|
|
end;
|
|
|
end;
|
|
|
used = function(s, o)
|
|
|
local motherboard = lookup('#motherboard', _'system_unit');
|
|
|
if o.part and (o.ptype == 'video' or o.ptype == 'network' or o.ptype == 'keyboard') and motherboard.device then
|
|
|
if s.device then
|
|
|
return translate_now("parts_locale", 'device_needs_removal');
|
|
|
end;
|
|
|
return msg;
|
|
|
end;
|
|
|
end;
|
|
|
used = function(s, o)
|
|
|
local motherboard = lookup('#motherboard', _'system_unit');
|
|
|
if o.part and (o.ptype == 'video' or o.ptype == 'network' or o.ptype == 'keyboard') and motherboard.device then
|
|
|
if s.device then
|
|
|
return translate_now("parts_locale", 'device_needs_removal');
|
|
|
end;
|
|
|
|
|
|
remove(o, pl);
|
|
|
s.device = o;
|
|
|
remove(o, pl);
|
|
|
s.device = o;
|
|
|
pc_status = '';
|
|
|
return translate_now("parts_locale", 'device_installed');
|
|
|
end;
|
|
|
return translate_now("parts_locale", 'device_installed');
|
|
|
end;
|
|
|
return false;
|
|
|
end;
|
|
|
};
|
|
|
end;
|
|
|
};
|
|
|
}
|
|
|
|
|
|
room {
|
|
|
light = false;
|
|
|
nam = 'tower_level_3_room_2';
|
|
|
disp = translate("tower_locale", 'tower_level_3_room_2_disp');
|
|
|
theme = 'tower';
|
|
|
pic = function(s)
|
|
|
if power_on then
|
|
|
return 'images/tower_level_3_room_2_power.png';
|
|
|
elseif s.light then
|
|
|
return 'images/tower_level_3_room_2_light.png';
|
|
|
else
|
|
|
return 'images/tower_level_3_room_2_dark.png';
|
|
|
end;
|
|
|
end;
|
|
|
decor = function(s)
|
|
|
if s.light then
|
|
|
return translate_now("tower_locale", 'tower_level_3_room_2_decor_lit');
|
|
|
else
|
|
|
return translate_now("tower_locale", 'tower_level_3_room_2_decor_dark');
|
|
|
end;
|
|
|
end;
|
|
|
way = {
|
|
|
path {translate("tower_locale", 'transition_upstairs'), 'tower_level_4_room_2'};
|
|
|
path {'level_3_main_room', translate("tower_locale", 'transition_study'), 'tower_level_3'}:disable();
|
|
|
path {'level_3_room_2_down', translate("tower_locale", 'transition_downstairs'), 'tower_level_2_room_2'}:disable();
|
|
|
};
|
|
|
light = false;
|
|
|
nam = 'tower_level_3_room_2';
|
|
|
disp = translate("tower_locale", 'tower_level_3_room_2_disp');
|
|
|
theme = 'tower';
|
|
|
pic = function(s)
|
|
|
if power_on then
|
|
|
return 'images/tower_level_3_room_2_power.png';
|
|
|
elseif s.light then
|
|
|
return 'images/tower_level_3_room_2_light.png';
|
|
|
else
|
|
|
return 'images/tower_level_3_room_2_dark.png';
|
|
|
end;
|
|
|
end;
|
|
|
decor = function(s)
|
|
|
if s.light then
|
|
|
return translate_now("tower_locale", 'tower_level_3_room_2_decor_lit');
|
|
|
else
|
|
|
return translate_now("tower_locale", 'tower_level_3_room_2_decor_dark');
|
|
|
end;
|
|
|
end;
|
|
|
way = {
|
|
|
path {translate("tower_locale", 'transition_upstairs'), 'tower_level_4_room_2'};
|
|
|
path {'level_3_main_room', translate("tower_locale", 'transition_study'), 'tower_level_3'}:disable();
|
|
|
path {'level_3_room_2_down', translate("tower_locale", 'transition_downstairs'), 'tower_level_2_room_2'}:disable();
|
|
|
};
|
|
|
}:with {
|
|
|
obj {
|
|
|
nam = '#ladder';
|
|
|
act = translate("tower_locale", 'tower_level_3_room_2_ladder_up');
|
|
|
};
|
|
|
obj {
|
|
|
nam = '#ladder_down';
|
|
|
act = translate("tower_locale", 'tower_level_3_room_2_ladder_down');
|
|
|
};
|
|
|
obj {
|
|
|
nam = '#floor';
|
|
|
act = translate("tower_locale", 'tower_level_3_room_2_floor');
|
|
|
};
|
|
|
obj {
|
|
|
nam = '#walls';
|
|
|
act = translate("tower_locale", 'tower_level_3_room_2_walls');
|
|
|
};
|
|
|
obj {
|
|
|
nam = '#ceiling';
|
|
|
act = function(s)
|
|
|
if power_on then
|
|
|
return translate_now("tower_locale", 'tower_level_3_room_2_ceiling_power');
|
|
|
else
|
|
|
return translate_now("tower_locale", 'tower_level_3_room_2_ceiling');
|
|
|
end;
|
|
|
end;
|
|
|
};
|
|
|
obj {
|
|
|
nam = '#darkness';
|
|
|
used = function(s, o)
|
|
|
if o^'potion_light' then
|
|
|
remove('potion_light', pl);
|
|
|
here().light = true;
|
|
|
_'#door':enable();
|
|
|
_'#shelves':enable();
|
|
|
_'level_3_room_2_down':enable()
|
|
|
s:disable();
|
|
|
return translate_now("tower_locale", 'potion_light_inv_used');
|
|
|
elseif o^'candle' then
|
|
|
return translate_now("tower_locale", 'tower_level_3_room_2_darkness_used_candle');
|
|
|
end;
|
|
|
return false;
|
|
|
end;
|
|
|
act = translate("tower_locale", 'tower_level_3_room_2_darkness');
|
|
|
};
|
|
|
obj {
|
|
|
nam = '#door';
|
|
|
dsc = function(s)
|
|
|
if _ 'level_3_main_room':disabled() then
|
|
|
return translate_now("tower_locale", 'tower_level_3_room_2_door_dsc_closed');
|
|
|
else
|
|
|
return translate_now("tower_locale", 'tower_level_3_room_2_door_dsc_opened');
|
|
|
end;
|
|
|
end;
|
|
|
act = function(s)
|
|
|
if _ 'level_3_main_room':disabled() then
|
|
|
_ 'level_3_main_room':enable();
|
|
|
_('level_3_next_room', 'tower_level_3'):enable();
|
|
|
_('level_3_room_2_door', 'tower_level_3'):enable();
|
|
|
return translate_now("tower_locale", 'tower_level_3_room_2_door_act_open');
|
|
|
else
|
|
|
return translate_now("tower_locale", 'tower_level_3_room_2_door_act_opened');
|
|
|
end;
|
|
|
end;
|
|
|
}:disable();
|
|
|
obj {
|
|
|
state = 0;
|
|
|
nam = '#shelves';
|
|
|
act = function(s)
|
|
|
if not here().light then
|
|
|
return translate_now("tower_locale", 'tower_level_3_room_2_darkness');
|
|
|
elseif s.state == 0 then
|
|
|
s.state = 1;
|
|
|
take('tool_box');
|
|
|
take('emerald');
|
|
|
_'part_box':enable();
|
|
|
return translate_now("tower_locale", 'tower_level_3_room_2_shelves_act_first');
|
|
|
else
|
|
|
return translate_now("tower_locale", 'tower_level_3_room_2_shelves_act_second');
|
|
|
end;
|
|
|
end;
|
|
|
};
|
|
|
'part_box';
|
|
|
obj {
|
|
|
nam = '#ladder';
|
|
|
act = translate("tower_locale", 'tower_level_3_room_2_ladder_up');
|
|
|
};
|
|
|
obj {
|
|
|
nam = '#ladder_down';
|
|
|
act = translate("tower_locale", 'tower_level_3_room_2_ladder_down');
|
|
|
};
|
|
|
obj {
|
|
|
nam = '#floor';
|
|
|
act = translate("tower_locale", 'tower_level_3_room_2_floor');
|
|
|
};
|
|
|
obj {
|
|
|
nam = '#walls';
|
|
|
act = translate("tower_locale", 'tower_level_3_room_2_walls');
|
|
|
};
|
|
|
obj {
|
|
|
nam = '#ceiling';
|
|
|
act = function(s)
|
|
|
if power_on then
|
|
|
return translate_now("tower_locale", 'tower_level_3_room_2_ceiling_power');
|
|
|
else
|
|
|
return translate_now("tower_locale", 'tower_level_3_room_2_ceiling');
|
|
|
end;
|
|
|
end;
|
|
|
};
|
|
|
obj {
|
|
|
nam = '#darkness';
|
|
|
used = function(s, o)
|
|
|
if o^'potion_light' then
|
|
|
remove('potion_light', pl);
|
|
|
here().light = true;
|
|
|
_'#door':enable();
|
|
|
_'#shelves':enable();
|
|
|
_'level_3_room_2_down':enable()
|
|
|
s:disable();
|
|
|
return translate_now("tower_locale", 'potion_light_inv_used');
|
|
|
elseif o^'candle' then
|
|
|
return translate_now("tower_locale", 'tower_level_3_room_2_darkness_used_candle');
|
|
|
end;
|
|
|
return false;
|
|
|
end;
|
|
|
act = translate("tower_locale", 'tower_level_3_room_2_darkness');
|
|
|
};
|
|
|
obj {
|
|
|
nam = '#door';
|
|
|
dsc = function(s)
|
|
|
if _ 'level_3_main_room':disabled() then
|
|
|
return translate_now("tower_locale", 'tower_level_3_room_2_door_dsc_closed');
|
|
|
else
|
|
|
return translate_now("tower_locale", 'tower_level_3_room_2_door_dsc_opened');
|
|
|
end;
|
|
|
end;
|
|
|
act = function(s)
|
|
|
if _ 'level_3_main_room':disabled() then
|
|
|
_ 'level_3_main_room':enable();
|
|
|
_('level_3_next_room', 'tower_level_3'):enable();
|
|
|
_('level_3_room_2_door', 'tower_level_3'):enable();
|
|
|
return translate_now("tower_locale", 'tower_level_3_room_2_door_act_open');
|
|
|
else
|
|
|
return translate_now("tower_locale", 'tower_level_3_room_2_door_act_opened');
|
|
|
end;
|
|
|
end;
|
|
|
}:disable();
|
|
|
obj {
|
|
|
state = 0;
|
|
|
nam = '#shelves';
|
|
|
act = function(s)
|
|
|
if not here().light then
|
|
|
return translate_now("tower_locale", 'tower_level_3_room_2_darkness');
|
|
|
elseif s.state == 0 then
|
|
|
s.state = 1;
|
|
|
take('tool_box');
|
|
|
take('emerald');
|
|
|
_'part_box':enable();
|
|
|
return translate_now("tower_locale", 'tower_level_3_room_2_shelves_act_first');
|
|
|
else
|
|
|
return translate_now("tower_locale", 'tower_level_3_room_2_shelves_act_second');
|
|
|
end;
|
|
|
end;
|
|
|
};
|
|
|
'part_box';
|
|
|
}
|
|
|
|
|
|
room {
|
|
|
nam = 'tower_level_2_room_2';
|
|
|
theme = 'tower';
|
|
|
pic = function(s)
|
|
|
if power_on then
|
|
|
return 'images/tower_level_2_room_2_light.png';
|
|
|
else
|
|
|
return 'images/tower_level_2_room_2_dark.png';
|
|
|
end;
|
|
|
end;
|
|
|
disp = translate("tower_locale", 'tower_level_2_room_2_disp');
|
|
|
onenter = function(s)
|
|
|
if have('protection_suit', pl) then
|
|
|
put('protection_suit', 'tower_level_2_airlock_cabinet');
|
|
|
remove('protection_suit', pl);
|
|
|
return translate_now("tower_locale", 'tower_level_2_remove_suit');
|
|
|
end;
|
|
|
end;
|
|
|
decor = function(s)
|
|
|
nam = 'tower_level_2_room_2';
|
|
|
theme = 'tower';
|
|
|
pic = function(s)
|
|
|
if power_on then
|
|
|
return 'images/tower_level_2_room_2_light.png';
|
|
|
else
|
|
|
return 'images/tower_level_2_room_2_dark.png';
|
|
|
end;
|
|
|
end;
|
|
|
disp = translate("tower_locale", 'tower_level_2_room_2_disp');
|
|
|
onenter = function(s)
|
|
|
if have('protection_suit', pl) then
|
|
|
put('protection_suit', 'tower_level_2_airlock_cabinet');
|
|
|
remove('protection_suit', pl);
|
|
|
return translate_now("tower_locale", 'tower_level_2_remove_suit');
|
|
|
end;
|
|
|
end;
|
|
|
decor = function(s)
|
|
|
p(translate_now("tower_locale", 'tower_level_2_room_2_decor'));
|
|
|
if power_on then
|
|
|
p(translate_now("tower_locale", 'tower_level_2_room_2_decor_power'));
|
|
|
else
|
|
|
p(translate_now("tower_locale", 'tower_level_2_room_2_decor_nopower'));
|
|
|
end;
|
|
|
end;
|
|
|
way = {
|
|
|
path {translate("tower_locale", 'transition_upstairs'), 'tower_level_3_room_2'};
|
|
|
path {translate("tower_locale", 'transition_airlock'), 'tower_level_2_airlock'};
|
|
|
path {'level_2_main_room', translate("tower_locale", 'transition_lab'), 'tower_level_2'}:disable();
|
|
|
path {translate("tower_locale", 'transition_downstairs'), 'tower_level_1_room_2'};
|
|
|
}
|
|
|
if power_on then
|
|
|
p(translate_now("tower_locale", 'tower_level_2_room_2_decor_power'));
|
|
|
else
|
|
|
p(translate_now("tower_locale", 'tower_level_2_room_2_decor_nopower'));
|
|
|
end;
|
|
|
end;
|
|
|
way = {
|
|
|
path {translate("tower_locale", 'transition_upstairs'), 'tower_level_3_room_2'};
|
|
|
path {translate("tower_locale", 'transition_airlock'), 'tower_level_2_airlock'};
|
|
|
path {'level_2_main_room', translate("tower_locale", 'transition_lab'), 'tower_level_2'}:disable();
|
|
|
path {translate("tower_locale", 'transition_downstairs'), 'tower_level_1_room_2'};
|
|
|
}
|
|
|
}:with {
|
|
|
'tower_walls';
|
|
|
obj {
|
|
|
nam = '#floor';
|
|
|
act = translate("tower_locale", 'tower_level_2_room_2_floor');
|
|
|
};
|
|
|
obj {
|
|
|
nam = '#ceiling';
|
|
|
act = translate("tower_locale", 'tower_level_2_room_2_ceiling');
|
|
|
};
|
|
|
obj {
|
|
|
nam = '#lamps';
|
|
|
act = translate("tower_locale", 'tower_level_2_room_2_lamps');
|
|
|
};
|
|
|
obj {
|
|
|
nam = '#emergency_lamps';
|
|
|
act = translate("tower_locale", 'tower_level_2_room_2_emergency_lamps');
|
|
|
};
|
|
|
obj {
|
|
|
nam = '#reactor_door';
|
|
|
dsc = translate("tower_locale", 'tower_level_2_room_2_reactor_door_dsc');
|
|
|
act = translate("tower_locale", 'tower_level_2_room_2_reactor_door_act');
|
|
|
};
|
|
|
obj {
|
|
|
nam = '#control_panel';
|
|
|
dsc = translate("tower_locale", 'tower_level_2_room_2_control_panel_dsc');
|
|
|
act = function(s)
|
|
|
walkin('reactor_control_panel');
|
|
|
end;
|
|
|
};
|
|
|
obj {
|
|
|
nam = '#next_door';
|
|
|
dsc = function(s)
|
|
|
if _'level_2_main_room':disabled() then
|
|
|
return translate_now("tower_locale", 'tower_level_2_room_2_next_door_dsc_closed');
|
|
|
else
|
|
|
return translate_now("tower_locale", 'tower_level_2_room_2_next_door_dsc_open');
|
|
|
end;
|
|
|
end;
|
|
|
act = function(s)
|
|
|
if _'level_2_main_room':disabled() then
|
|
|
_'level_2_main_room':enable();
|
|
|
_'level_2_next_room':enable();
|
|
|
return translate_now("tower_locale", 'tower_level_2_room_2_next_door_act_closed');
|
|
|
else
|
|
|
return translate_now("tower_locale", 'tower_level_2_room_2_next_door_act_open');
|
|
|
end;
|
|
|
end;
|
|
|
}
|
|
|
'tower_walls';
|
|
|
obj {
|
|
|
nam = '#floor';
|
|
|
act = translate("tower_locale", 'tower_level_2_room_2_floor');
|
|
|
};
|
|
|
obj {
|
|
|
nam = '#ceiling';
|
|
|
act = translate("tower_locale", 'tower_level_2_room_2_ceiling');
|
|
|
};
|
|
|
obj {
|
|
|
nam = '#lamps';
|
|
|
act = translate("tower_locale", 'tower_level_2_room_2_lamps');
|
|
|
};
|
|
|
obj {
|
|
|
nam = '#emergency_lamps';
|
|
|
act = translate("tower_locale", 'tower_level_2_room_2_emergency_lamps');
|
|
|
};
|
|
|
obj {
|
|
|
nam = '#reactor_door';
|
|
|
dsc = translate("tower_locale", 'tower_level_2_room_2_reactor_door_dsc');
|
|
|
act = translate("tower_locale", 'tower_level_2_room_2_reactor_door_act');
|
|
|
};
|
|
|
obj {
|
|
|
nam = '#control_panel';
|
|
|
dsc = translate("tower_locale", 'tower_level_2_room_2_control_panel_dsc');
|
|
|
act = function(s)
|
|
|
walkin('reactor_control_panel');
|
|
|
end;
|
|
|
};
|
|
|
obj {
|
|
|
nam = '#next_door';
|
|
|
dsc = function(s)
|
|
|
if _'level_2_main_room':disabled() then
|
|
|
return translate_now("tower_locale", 'tower_level_2_room_2_next_door_dsc_closed');
|
|
|
else
|
|
|
return translate_now("tower_locale", 'tower_level_2_room_2_next_door_dsc_open');
|
|
|
end;
|
|
|
end;
|
|
|
act = function(s)
|
|
|
if _'level_2_main_room':disabled() then
|
|
|
_'level_2_main_room':enable();
|
|
|
_'level_2_next_room':enable();
|
|
|
return translate_now("tower_locale", 'tower_level_2_room_2_next_door_act_closed');
|
|
|
else
|
|
|
return translate_now("tower_locale", 'tower_level_2_room_2_next_door_act_open');
|
|
|
end;
|
|
|
end;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
dlg {
|
|
|
theme = 'tower';
|
|
|
nam = 'reactor_control_panel';
|
|
|
disp = translate("tower_locale", 'reactor_control_panel_disp');
|
|
|
pic = function(s)
|
|
|
if power_on then
|
|
|
return 'images/tower_level_2_room_2_light.png';
|
|
|
else
|
|
|
return 'images/tower_level_2_room_2_dark.png';
|
|
|
end;
|
|
|
end;
|
|
|
enter = translate("tower_locale", 'reactor_control_panel_enter');
|
|
|
phr = {
|
|
|
{always=true, translate("tower_locale", 'reactor_control_panel_diagnostic'), function(s)
|
|
|
pn(translate_now("tower_locale", 'reactor_control_panel_diagnostic_resp_1'));
|
|
|
pn(translate_now("tower_locale", 'reactor_control_panel_diagnostic_resp_2'));
|
|
|
pn(translate_now("tower_locale", 'reactor_control_panel_diagnostic_resp_3'));
|
|
|
pn(translate_now("tower_locale", 'reactor_control_panel_diagnostic_resp_4'));
|
|
|
if rods_raised then
|
|
|
pn(translate_now("tower_locale", 'reactor_control_panel_diagnostic_resp_performance') .. ' 0%');
|
|
|
pn(translate_now("tower_locale", 'reactor_control_panel_diagnostic_resp_rods_up'));
|
|
|
elseif rods_enriched then
|
|
|
theme = 'tower';
|
|
|
nam = 'reactor_control_panel';
|
|
|
disp = translate("tower_locale", 'reactor_control_panel_disp');
|
|
|
pic = function(s)
|
|
|
if power_on then
|
|
|
return 'images/tower_level_2_room_2_light.png';
|
|
|
else
|
|
|
return 'images/tower_level_2_room_2_dark.png';
|
|
|
end;
|
|
|
end;
|
|
|
enter = translate("tower_locale", 'reactor_control_panel_enter');
|
|
|
phr = {
|
|
|
{always=true, translate("tower_locale", 'reactor_control_panel_diagnostic'), function(s)
|
|
|
pn(translate_now("tower_locale", 'reactor_control_panel_diagnostic_resp_1'));
|
|
|
pn(translate_now("tower_locale", 'reactor_control_panel_diagnostic_resp_2'));
|
|
|
pn(translate_now("tower_locale", 'reactor_control_panel_diagnostic_resp_3'));
|
|
|
pn(translate_now("tower_locale", 'reactor_control_panel_diagnostic_resp_4'));
|
|
|
if rods_raised then
|
|
|
pn(translate_now("tower_locale", 'reactor_control_panel_diagnostic_resp_performance') .. ' 0%');
|
|
|
pn(translate_now("tower_locale", 'reactor_control_panel_diagnostic_resp_rods_up'));
|
|
|
elseif rods_enriched then
|
|
|
pn(translate_now("tower_locale", 'reactor_control_panel_diagnostic_resp_performance') .. ' 101%');
|
|
|
pn(translate_now("tower_locale", 'reactor_control_panel_diagnostic_resp_rods_ok'));
|
|
|
else
|
|
|
pn(translate_now("tower_locale", 'reactor_control_panel_diagnostic_resp_performance') .. ' 1%');
|
|
|
pn(translate_now("tower_locale", 'reactor_control_panel_diagnostic_resp_rods_bad'));
|
|
|
end;
|
|
|
end;};
|
|
|
{cond=function(s) return not rods_raised; end; always=true; translate("tower_locale", 'reactor_control_panel_raise_rods'), function(s)
|
|
|
rods_raised = true;
|
|
|
power_on = false;
|
|
|
return translate_now("tower_locale", 'reactor_control_panel_rods_response')
|
|
|
end;};
|
|
|
{cond=function(s) return rods_raised; end; always=true; translate("tower_locale", 'reactor_control_panel_lower_rods'), function(s)
|
|
|
rods_raised = false;
|
|
|
pr(translate_now("tower_locale", 'reactor_control_panel_rods_response'));
|
|
|
if rods_enriched then
|
|
|
power_on = true;
|
|
|
end;
|
|
|
end;};
|
|
|
{translate("tower_locale", 'reactor_control_panel_leave'), function(s)
|
|
|
walkout();
|
|
|
end;};
|
|
|
};
|
|
|
pn(translate_now("tower_locale", 'reactor_control_panel_diagnostic_resp_rods_ok'));
|
|
|
else
|
|
|
pn(translate_now("tower_locale", 'reactor_control_panel_diagnostic_resp_performance') .. ' 1%');
|
|
|
pn(translate_now("tower_locale", 'reactor_control_panel_diagnostic_resp_rods_bad'));
|
|
|
end;
|
|
|
end;};
|
|
|
{cond=function(s) return not rods_raised; end; always=true; translate("tower_locale", 'reactor_control_panel_raise_rods'), function(s)
|
|
|
rods_raised = true;
|
|
|
power_on = false;
|
|
|
return translate_now("tower_locale", 'reactor_control_panel_rods_response')
|
|
|
end;};
|
|
|
{cond=function(s) return rods_raised; end; always=true; translate("tower_locale", 'reactor_control_panel_lower_rods'), function(s)
|
|
|
rods_raised = false;
|
|
|
pr(translate_now("tower_locale", 'reactor_control_panel_rods_response'));
|
|
|
if rods_enriched then
|
|
|
power_on = true;
|
|
|
end;
|
|
|
end;};
|
|
|
{translate("tower_locale", 'reactor_control_panel_leave'), function(s)
|
|
|
walkout();
|
|
|
end;};
|
|
|
};
|
|
|
}
|
|
|
|
|
|
room {
|
|
|
theme = 'tower';
|
|
|
nam = 'tower_level_2_airlock';
|
|
|
pic = function(s)
|
|
|
if power_on then
|
|
|
return 'images/tower_level_2_room_2_light.png';
|
|
|
else
|
|
|
return 'images/tower_level_2_room_2_dark.png';
|
|
|
end;
|
|
|
end;
|
|
|
disp = translate("tower_locale", 'tower_level_2_airlock_disp');
|
|
|
decor = translate("tower_locale", 'tower_level_2_airlock_decor');
|
|
|
way = {
|
|
|
path {translate("tower_locale", 'transition_control'), 'tower_level_2_room_2'};
|
|
|
path {translate("tower_locale", 'transition_reactor'), 'tower_level_2_reactor'};
|
|
|
};
|
|
|
theme = 'tower';
|
|
|
nam = 'tower_level_2_airlock';
|
|
|
pic = function(s)
|
|
|
if power_on then
|
|
|
return 'images/tower_level_2_room_2_light.png';
|
|
|
else
|
|
|
return 'images/tower_level_2_room_2_dark.png';
|
|
|
end;
|
|
|
end;
|
|
|
disp = translate("tower_locale", 'tower_level_2_airlock_disp');
|
|
|
decor = translate("tower_locale", 'tower_level_2_airlock_decor');
|
|
|
way = {
|
|
|
path {translate("tower_locale", 'transition_control'), 'tower_level_2_room_2'};
|
|
|
path {translate("tower_locale", 'transition_reactor'), 'tower_level_2_reactor'};
|
|
|
};
|
|
|
}: with {
|
|
|
obj {
|
|
|
nam = '#walls';
|
|
|
act = translate("tower_locale", 'tower_level_2_airlock_walls');
|
|
|
};
|
|
|
obj {
|
|
|
nam = '#ceiling';
|
|
|
act = translate("tower_locale", 'tower_level_2_airlock_ceiling');
|
|
|
};
|
|
|
obj {
|
|
|
nam = '#lamp';
|
|
|
act = translate("tower_locale", 'tower_level_2_airlock_lamp');
|
|
|
};
|
|
|
obj {
|
|
|
nam = 'tower_level_2_airlock_cabinet';
|
|
|
dsc = translate("tower_locale", 'tower_level_2_airlock_locker_dsc');
|
|
|
act = translate("tower_locale", 'tower_level_2_airlock_locker_act');
|
|
|
used = function(s, o)
|
|
|
if o^'protection_suit' then
|
|
|
put('protection_suit', 'tower_level_2_airlock_cabinet');
|
|
|
remove('protection_suit', pl);
|
|
|
return translate_now("tower_locale", 'tower_level_2_remove_suit');
|
|
|
end;
|
|
|
obj {
|
|
|
nam = '#walls';
|
|
|
act = translate("tower_locale", 'tower_level_2_airlock_walls');
|
|
|
};
|
|
|
obj {
|
|
|
nam = '#ceiling';
|
|
|
act = translate("tower_locale", 'tower_level_2_airlock_ceiling');
|
|
|
};
|
|
|
obj {
|
|
|
nam = '#lamp';
|
|
|
act = translate("tower_locale", 'tower_level_2_airlock_lamp');
|
|
|
};
|
|
|
obj {
|
|
|
nam = 'tower_level_2_airlock_cabinet';
|
|
|
dsc = translate("tower_locale", 'tower_level_2_airlock_locker_dsc');
|
|
|
act = translate("tower_locale", 'tower_level_2_airlock_locker_act');
|
|
|
used = function(s, o)
|
|
|
if o^'protection_suit' then
|
|
|
put('protection_suit', 'tower_level_2_airlock_cabinet');
|
|
|
remove('protection_suit', pl);
|
|
|
return translate_now("tower_locale", 'tower_level_2_remove_suit');
|
|
|
end;
|
|
|
|
|
|
return false;
|
|
|
end;
|
|
|
}:with {
|
|
|
obj {
|
|
|
nam = 'protection_suit';
|
|
|
disp = translate("tower_locale", 'protection_suit_disp');
|
|
|
dsc = translate("tower_locale", 'protection_suit_dsc');
|
|
|
tak = translate("tower_locale", 'protection_suit_tak');
|
|
|
inv = function(s)
|
|
|
if here()^'tower_level_2_reactor' then
|
|
|
return translate_now("tower_locale", 'protection_suit_inv_not_here');
|
|
|
else
|
|
|
put('protection_suit', here());
|
|
|
remove('protection_suit', pl)
|
|
|
return translate_now("tower_locale", 'protection_suit_inv_remove');
|
|
|
end;
|
|
|
end;
|
|
|
};
|
|
|
};
|
|
|
end;
|
|
|
}:with {
|
|
|
obj {
|
|
|
nam = 'protection_suit';
|
|
|
disp = translate("tower_locale", 'protection_suit_disp');
|
|
|
dsc = translate("tower_locale", 'protection_suit_dsc');
|
|
|
tak = translate("tower_locale", 'protection_suit_tak');
|
|
|
inv = function(s)
|
|
|
if here()^'tower_level_2_reactor' then
|
|
|
return translate_now("tower_locale", 'protection_suit_inv_not_here');
|
|
|
else
|
|
|
put('protection_suit', here());
|
|
|
remove('protection_suit', pl)
|
|
|
return translate_now("tower_locale", 'protection_suit_inv_remove');
|
|
|
end;
|
|
|
end;
|
|
|
};
|
|
|
};
|
|
|
}
|
|
|
|
|
|
room {
|
|
|
theme = 'tower';
|
|
|
nam = 'tower_level_2_reactor';
|
|
|
theme = 'tower';
|
|
|
pic = function(s)
|
|
|
if rods_raised then
|
|
|
if not rods_enriched then
|
|
|
return 'images/tower_level_2_reactor_rods_up.png';
|
|
|
end;
|
|
|
|
|
|
return 'images/tower_level_2_reactor_rods_enriched.png';
|
|
|
elseif power_on then
|
|
|
return 'images/tower_level_2_reactor_on.png';
|
|
|
else
|
|
|
return 'images/tower_level_2_reactor_off.png';
|
|
|
end;
|
|
|
end;
|
|
|
nofollow = function(s)
|
|
|
if here():from()^'tower_level_2_airlock' then
|
|
|
return translate_now("solarscale_locale", 'follow_refuse') .. ' ' ..translate_now("solarscale_locale", 'follow_refuse_reactor');
|
|
|
else
|
|
|
return true;
|
|
|
end;
|
|
|
end;
|
|
|
disp = translate("tower_locale", 'tower_level_2_reactor_disp');
|
|
|
onenter = function(s)
|
|
|
if not have('protection_suit', pl) then
|
|
|
if solarscale_with_me then
|
|
|
theme = 'tower';
|
|
|
nam = 'tower_level_2_reactor';
|
|
|
theme = 'tower';
|
|
|
pic = function(s)
|
|
|
if rods_raised then
|
|
|
if not rods_enriched then
|
|
|
return 'images/tower_level_2_reactor_rods_up.png';
|
|
|
end;
|
|
|
|
|
|
return 'images/tower_level_2_reactor_rods_enriched.png';
|
|
|
elseif power_on then
|
|
|
return 'images/tower_level_2_reactor_on.png';
|
|
|
else
|
|
|
return 'images/tower_level_2_reactor_off.png';
|
|
|
end;
|
|
|
end;
|
|
|
nofollow = function(s)
|
|
|
if here():from()^'tower_level_2_airlock' then
|
|
|
return translate_now("solarscale_locale", 'follow_refuse') .. ' ' ..translate_now("solarscale_locale", 'follow_refuse_reactor');
|
|
|
else
|
|
|
return true;
|
|
|
end;
|
|
|
end;
|
|
|
disp = translate("tower_locale", 'tower_level_2_reactor_disp');
|
|
|
onenter = function(s)
|
|
|
if not have('protection_suit', pl) then
|
|
|
if solarscale_with_me then
|
|
|
p(translate_now("tower_locale", 'tower_level_2_reactor_enter_solarscale'));
|
|
|
return false;
|
|
|
else
|
|
|
return false;
|
|
|
else
|
|
|
if not irradiated then
|
|
|
load_sounds('irradiated');
|
|
|
sounds['irradiated']:play();
|
|
|
end;
|
|
|
irradiated = true;
|
|
|
return translate_now("tower_locale", 'tower_level_2_reactor_enter_alone');
|
|
|
end;
|
|
|
end;
|
|
|
end;
|
|
|
way = {
|
|
|
path {translate("tower_locale", 'transition_airlock'), 'tower_level_2_airlock'};
|
|
|
};
|
|
|
irradiated = true;
|
|
|
return translate_now("tower_locale", 'tower_level_2_reactor_enter_alone');
|
|
|
end;
|
|
|
end;
|
|
|
end;
|
|
|
way = {
|
|
|
path {translate("tower_locale", 'transition_airlock'), 'tower_level_2_airlock'};
|
|
|
};
|
|
|
}: with {
|
|
|
obj {
|
|
|
nam = '#reactor_rods';
|
|
|
dsc = function(s)
|
|
|
if rods_raised then
|
|
|
return translate_now("tower_locale", 'tower_level_2_reactor_rods_dsc_raised');
|
|
|
else
|
|
|
return translate_now("tower_locale", 'tower_level_2_reactor_rods_dsc_lowered');
|
|
|
end;
|
|
|
end;
|
|
|
act = function(s)
|
|
|
if rods_raised then
|
|
|
return translate_now("tower_locale", 'tower_level_2_reactor_rods_act_raised');
|
|
|
else
|
|
|
return translate_now("tower_locale", 'tower_level_2_reactor_rods_act_lowered');
|
|
|
end;
|
|
|
end;
|
|
|
used = function(s, o)
|
|
|
if o^'potion_enrichment' and rods_raised then
|
|
|
remove('potion_enrichment', pl);
|
|
|
rods_enriched = true;
|
|
|
return translate_now("tower_locale", 'tower_level_2_reactor_rods_used');
|
|
|
else
|
|
|
return false;
|
|
|
end;
|
|
|
end;
|
|
|
}
|
|
|
obj {
|
|
|
nam = '#reactor_rods';
|
|
|
dsc = function(s)
|
|
|
if rods_raised then
|
|
|
return translate_now("tower_locale", 'tower_level_2_reactor_rods_dsc_raised');
|
|
|
else
|
|
|
return translate_now("tower_locale", 'tower_level_2_reactor_rods_dsc_lowered');
|
|
|
end;
|
|
|
end;
|
|
|
act = function(s)
|
|
|
if rods_raised then
|
|
|
return translate_now("tower_locale", 'tower_level_2_reactor_rods_act_raised');
|
|
|
else
|
|
|
return translate_now("tower_locale", 'tower_level_2_reactor_rods_act_lowered');
|
|
|
end;
|
|
|
end;
|
|
|
used = function(s, o)
|
|
|
if o^'potion_enrichment' and rods_raised then
|
|
|
remove('potion_enrichment', pl);
|
|
|
rods_enriched = true;
|
|
|
return translate_now("tower_locale", 'tower_level_2_reactor_rods_used');
|
|
|
else
|
|
|
return false;
|
|
|
end;
|
|
|
end;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
room {
|
|
|
theme = 'tower';
|
|
|
nam = 'tower_level_1_room_2';
|
|
|
disp = translate("tower_locale", 'tower_level_1_room_2_disp');
|
|
|
pic = 'images/tower_level_1_room_2.png';
|
|
|
decor = translate("tower_locale", 'tower_level_1_room_2_decor');
|
|
|
way = {
|
|
|
path {translate("tower_locale", 'transition_upstairs'), 'tower_level_2_room_2'};
|
|
|
path {'level_1_main_room', translate("tower_locale", 'transition_dining_room'), 'tower_level_1'}:disable();
|
|
|
};
|
|
|
theme = 'tower';
|
|
|
nam = 'tower_level_1_room_2';
|
|
|
disp = translate("tower_locale", 'tower_level_1_room_2_disp');
|
|
|
pic = 'images/tower_level_1_room_2.png';
|
|
|
decor = translate("tower_locale", 'tower_level_1_room_2_decor');
|
|
|
way = {
|
|
|
path {translate("tower_locale", 'transition_upstairs'), 'tower_level_2_room_2'};
|
|
|
path {'level_1_main_room', translate("tower_locale", 'transition_dining_room'), 'tower_level_1'}:disable();
|
|
|
};
|
|
|
}: with {
|
|
|
obj {
|
|
|
nam = '#kitchen_sink';
|
|
|
act = translate("tower_locale", 'tower_level_1_room_2_kitchen_sink');
|
|
|
used = function(s, o)
|
|
|
if o ^ 'kettle' then
|
|
|
if o.state == 0 then
|
|
|
o.state = 1;
|
|
|
return translate_now("tower_locale", 'tower_level_1_room_2_kitchen_sink_used_water');
|
|
|
else
|
|
|
return translate_now("tower_locale", 'tower_level_1_room_2_kitchen_sink_used_full');
|
|
|
end;
|
|
|
obj {
|
|
|
nam = '#kitchen_sink';
|
|
|
act = translate("tower_locale", 'tower_level_1_room_2_kitchen_sink');
|
|
|
used = function(s, o)
|
|
|
if o ^ 'kettle' then
|
|
|
if o.state == 0 then
|
|
|
o.state = 1;
|
|
|
return translate_now("tower_locale", 'tower_level_1_room_2_kitchen_sink_used_water');
|
|
|
else
|
|
|
return translate_now("tower_locale", 'tower_level_1_room_2_kitchen_sink_used_full');
|
|
|
end;
|
|
|
else
|
|
|
return false;
|
|
|
end;
|
|
|
end;
|
|
|
};
|
|
|
obj {
|
|
|
nam = '#tabletop';
|
|
|
act = translate("tower_locale", 'tower_level_1_room_2_tabletop');
|
|
|
end;
|
|
|
end;
|
|
|
};
|
|
|
obj {
|
|
|
nam = '#tabletop';
|
|
|
act = translate("tower_locale", 'tower_level_1_room_2_tabletop');
|
|
|
used = function(s, o)
|
|
|
if o^'cups' then
|
|
|
remove('cups', me());
|
|
@@ -3130,12 +3143,12 @@ room {
|
|
|
|
|
|
return false;
|
|
|
end;
|
|
|
};
|
|
|
obj {
|
|
|
state = 0;
|
|
|
nam = '#cabinets1';
|
|
|
act = function(s)
|
|
|
if solarscale_with_me and s.state == 0 then
|
|
|
};
|
|
|
obj {
|
|
|
state = 0;
|
|
|
nam = '#cabinets1';
|
|
|
act = function(s)
|
|
|
if solarscale_with_me and s.state == 0 then
|
|
|
if not _'solarscale_ally'.tea_asked then
|
|
|
_'solarscale_ally'.tea_found = true;
|
|
|
return translate_now("tower_locale", 'tower_level_1_room_2_cabinets1_act_tea_ask');
|
|
@@ -3145,645 +3158,247 @@ room {
|
|
|
take('teapot');
|
|
|
return translate_now("tower_locale", 'tower_level_1_room_2_cabinets1_act_tea_and_teapot');
|
|
|
end;
|
|
|
end;
|
|
|
|
|
|
return translate_now("tower_locale", 'tower_level_1_room_2_cabinets_act_empty');
|
|
|
end;
|
|
|
};
|
|
|
obj {
|
|
|
state = 0;
|
|
|
nam = '#cabinets2';
|
|
|
act = function(s)
|
|
|
if s.state < 3 then
|
|
|
if s.state == 0 then
|
|
|
s.state = 1;
|
|
|
take('password_note');
|
|
|
return translate_now("tower_locale", 'tower_level_1_room_2_cabinets2_act_note');
|
|
|
elseif _'solarscale_ally'.tea_asked then
|
|
|
if s.state == 1 then
|
|
|
s.state = 2;
|
|
|
end;
|
|
|
|
|
|
return translate_now("tower_locale", 'tower_level_1_room_2_cabinets_act_empty');
|
|
|
end;
|
|
|
};
|
|
|
obj {
|
|
|
state = 0;
|
|
|
nam = '#cabinets2';
|
|
|
act = function(s)
|
|
|
if s.state < 3 then
|
|
|
if s.state == 0 then
|
|
|
s.state = 1;
|
|
|
take('password_note');
|
|
|
return translate_now("tower_locale", 'tower_level_1_room_2_cabinets2_act_note');
|
|
|
elseif _'solarscale_ally'.tea_asked then
|
|
|
if s.state == 1 then
|
|
|
s.state = 2;
|
|
|
take('cups');
|
|
|
return translate_now("tower_locale", 'tower_level_1_room_2_cabinets2_act_cups');
|
|
|
end;
|
|
|
end;
|
|
|
end;
|
|
|
return translate_now("tower_locale", 'tower_level_1_room_2_cabinets_act_empty');
|
|
|
end;
|
|
|
};
|
|
|
obj {
|
|
|
nam = '#fridge';
|
|
|
act = translate("tower_locale", 'tower_level_1_room_2_fridge');
|
|
|
};
|
|
|
obj {
|
|
|
nam = '#stove';
|
|
|
act = translate("tower_locale", 'tower_level_1_room_2_stove_act');
|
|
|
used = function(s, o)
|
|
|
if o ^ 'kettle' then
|
|
|
if power_on then
|
|
|
if o.state == 0 then
|
|
|
return translate_now("tower_locale", 'kettle_boil_empty');
|
|
|
elseif o.state == 2 then
|
|
|
return translate_now("tower_locale", 'tower_level_1_room_2_stove_used_hot');
|
|
|
else
|
|
|
o.state = 2;
|
|
|
return translate_now("tower_locale", 'tower_level_1_room_2_stove_used_teapot');
|
|
|
end;
|
|
|
else
|
|
|
return translate_now("tower_locale", 'tower_level_1_room_2_stove_used_power');
|
|
|
end;
|
|
|
return translate_now("tower_locale", 'tower_level_1_room_2_cabinets2_act_cups');
|
|
|
end;
|
|
|
end;
|
|
|
end;
|
|
|
return translate_now("tower_locale", 'tower_level_1_room_2_cabinets_act_empty');
|
|
|
end;
|
|
|
};
|
|
|
obj {
|
|
|
nam = '#fridge';
|
|
|
act = translate("tower_locale", 'tower_level_1_room_2_fridge');
|
|
|
};
|
|
|
obj {
|
|
|
nam = '#stove';
|
|
|
act = translate("tower_locale", 'tower_level_1_room_2_stove_act');
|
|
|
used = function(s, o)
|
|
|
if o ^ 'kettle' then
|
|
|
if power_on then
|
|
|
if o.state == 0 then
|
|
|
return translate_now("tower_locale", 'kettle_boil_empty');
|
|
|
elseif o.state == 2 then
|
|
|
return translate_now("tower_locale", 'tower_level_1_room_2_stove_used_hot');
|
|
|
else
|
|
|
o.state = 2;
|
|
|
return translate_now("tower_locale", 'tower_level_1_room_2_stove_used_teapot');
|
|
|
end;
|
|
|
else
|
|
|
return translate_now("tower_locale", 'tower_level_1_room_2_stove_used_power');
|
|
|
end;
|
|
|
else
|
|
|
return false;
|
|
|
end;
|
|
|
end;
|
|
|
};
|
|
|
obj {
|
|
|
nam = 'silver_fork';
|
|
|
disp = translate("tower_locale", 'silver_fork_disp');
|
|
|
disp2 = translate("tower_locale", 'silver_fork_disp2');
|
|
|
disp3 = translate("tower_locale", 'silver_fork_disp3');
|
|
|
inv = translate("tower_locale", 'silver_fork_inv');
|
|
|
dsc = translate("tower_locale", 'silver_fork_dsc');
|
|
|
tak = translate("tower_locale", 'silver_fork_tak');
|
|
|
};
|
|
|
obj {
|
|
|
state = 0;
|
|
|
nam = '#door';
|
|
|
dsc = translate("tower_locale", 'tower_level_1_room_2_door_dsc');
|
|
|
act = function(s)
|
|
|
if s.state == 0 then
|
|
|
return translate_now("tower_locale", 'tower_level_1_room_2_door_act_locked');
|
|
|
else
|
|
|
return translate_now("tower_locale", 'tower_level_1_room_2_door_act_open');
|
|
|
end;
|
|
|
end;
|
|
|
used = function(s, o)
|
|
|
if o^'kitchen_key' then
|
|
|
s.state = 1;
|
|
|
remove('kitchen_key', pl);
|
|
|
_'level_1_main_room':enable();
|
|
|
_'level_1_next_room':enable();
|
|
|
return translate_now("tower_locale", 'tower_level_1_room_2_door_used');
|
|
|
end;
|
|
|
end;
|
|
|
};
|
|
|
obj {
|
|
|
nam = 'silver_fork';
|
|
|
disp = translate("tower_locale", 'silver_fork_disp');
|
|
|
disp2 = translate("tower_locale", 'silver_fork_disp2');
|
|
|
disp3 = translate("tower_locale", 'silver_fork_disp3');
|
|
|
inv = translate("tower_locale", 'silver_fork_inv');
|
|
|
dsc = translate("tower_locale", 'silver_fork_dsc');
|
|
|
tak = translate("tower_locale", 'silver_fork_tak');
|
|
|
};
|
|
|
obj {
|
|
|
state = 0;
|
|
|
nam = '#door';
|
|
|
dsc = translate("tower_locale", 'tower_level_1_room_2_door_dsc');
|
|
|
act = function(s)
|
|
|
if s.state == 0 then
|
|
|
return translate_now("tower_locale", 'tower_level_1_room_2_door_act_locked');
|
|
|
else
|
|
|
return translate_now("tower_locale", 'tower_level_1_room_2_door_act_open');
|
|
|
end;
|
|
|
end;
|
|
|
used = function(s, o)
|
|
|
if o^'kitchen_key' then
|
|
|
s.state = 1;
|
|
|
remove('kitchen_key', pl);
|
|
|
_'level_1_main_room':enable();
|
|
|
_'level_1_next_room':enable();
|
|
|
return translate_now("tower_locale", 'tower_level_1_room_2_door_used');
|
|
|
else
|
|
|
return false;
|
|
|
end;
|
|
|
end;
|
|
|
};
|
|
|
obj {
|
|
|
key_taken = false;
|
|
|
nam = '#hook';
|
|
|
dsc = function(s)
|
|
|
if s.key_taken then
|
|
|
return translate_now("tower_locale", 'tower_level_1_room_2_hook_dsc_empty');
|
|
|
else
|
|
|
return translate_now("tower_locale", 'tower_level_1_room_2_hook_dsc_key');
|
|
|
end;
|
|
|
end;
|
|
|
act = function(s)
|
|
|
if s.key_taken then
|
|
|
return translate_now("tower_locale", 'tower_level_1_room_2_hook_act_empty');
|
|
|
else
|
|
|
take('kitchen_key');
|
|
|
s.key_taken = true;
|
|
|
return translate_now("tower_locale", 'tower_level_1_room_2_hook_act_key');
|
|
|
end;
|
|
|
end;
|
|
|
};
|
|
|
end;
|
|
|
end;
|
|
|
};
|
|
|
obj {
|
|
|
key_taken = false;
|
|
|
nam = '#hook';
|
|
|
dsc = function(s)
|
|
|
if s.key_taken then
|
|
|
return translate_now("tower_locale", 'tower_level_1_room_2_hook_dsc_empty');
|
|
|
else
|
|
|
return translate_now("tower_locale", 'tower_level_1_room_2_hook_dsc_key');
|
|
|
end;
|
|
|
end;
|
|
|
act = function(s)
|
|
|
if s.key_taken then
|
|
|
return translate_now("tower_locale", 'tower_level_1_room_2_hook_act_empty');
|
|
|
else
|
|
|
take('kitchen_key');
|
|
|
s.key_taken = true;
|
|
|
return translate_now("tower_locale", 'tower_level_1_room_2_hook_act_key');
|
|
|
end;
|
|
|
end;
|
|
|
};
|
|
|
'kettle';
|
|
|
}
|
|
|
|
|
|
obj {
|
|
|
nam = 'kitchen_key';
|
|
|
disp = translate("tower_locale", 'kitchen_key_disp');
|
|
|
disp2 = translate("tower_locale", 'kitchen_key_disp2');
|
|
|
disp3 = translate("tower_locale", 'kitchen_key_disp3');
|
|
|
inv = translate("tower_locale", 'kitchen_key_inv');
|
|
|
nam = 'kitchen_key';
|
|
|
disp = translate("tower_locale", 'kitchen_key_disp');
|
|
|
disp2 = translate("tower_locale", 'kitchen_key_disp2');
|
|
|
disp3 = translate("tower_locale", 'kitchen_key_disp3');
|
|
|
inv = translate("tower_locale", 'kitchen_key_inv');
|
|
|
};
|
|
|
|
|
|
obj {
|
|
|
nam = 'part_box';
|
|
|
disp = translate("tower_locale", 'part_box_disp');
|
|
|
disp2 = translate("tower_locale", 'part_box_disp2');
|
|
|
disp3 = translate("tower_locale", 'part_box_disp3');
|
|
|
inv = function(s)
|
|
|
walkin('part_box_inside');
|
|
|
end;
|
|
|
used = function(s, o)
|
|
|
if o.part then
|
|
|
remove(o, pl);
|
|
|
put(o, 'part_box_inside');
|
|
|
return translate_now("tower_locale", 'part_box_used');
|
|
|
end;
|
|
|
nam = 'part_box';
|
|
|
disp = translate("tower_locale", 'part_box_disp');
|
|
|
disp2 = translate("tower_locale", 'part_box_disp2');
|
|
|
disp3 = translate("tower_locale", 'part_box_disp3');
|
|
|
inv = function(s)
|
|
|
walkin('part_box_inside');
|
|
|
end;
|
|
|
used = function(s, o)
|
|
|
if o.part then
|
|
|
remove(o, pl);
|
|
|
put(o, 'part_box_inside');
|
|
|
return translate_now("tower_locale", 'part_box_used');
|
|
|
end;
|
|
|
|
|
|
return false;
|
|
|
end;
|
|
|
dsc = translate("tower_locale", 'part_box_dsc');
|
|
|
tak = translate("tower_locale", 'part_box_tak');
|
|
|
end;
|
|
|
dsc = translate("tower_locale", 'part_box_dsc');
|
|
|
tak = translate("tower_locale", 'part_box_tak');
|
|
|
}:disable();
|
|
|
|
|
|
room {
|
|
|
nam = 'part_box_inside';
|
|
|
theme = 'tower';
|
|
|
nofollow = true;
|
|
|
pic = function(s)
|
|
|
nam = 'part_box_inside';
|
|
|
theme = 'tower';
|
|
|
nofollow = true;
|
|
|
pic = function(s)
|
|
|
if from() then
|
|
|
return std.call(from(), 'pic');
|
|
|
else
|
|
|
return
|
|
|
end;
|
|
|
end;
|
|
|
disp = translate("tower_locale", 'part_box_disp');
|
|
|
dsc = translate("tower_locale", 'part_box_inside_dsc');
|
|
|
way = {
|
|
|
path {translate("common_locale", 'back'), function(s) return here():from() end;};
|
|
|
}
|
|
|
end;
|
|
|
disp = translate("tower_locale", 'part_box_disp');
|
|
|
dsc = translate("tower_locale", 'part_box_inside_dsc');
|
|
|
way = {
|
|
|
path {translate("common_locale", 'back'), function(s) return here():from() end;};
|
|
|
}
|
|
|
}:with {
|
|
|
'cax-rkt-i2sb',
|
|
|
'cax-rkt-i3sb',
|
|
|
'cax-rst-i2sb',
|
|
|
'cax-rst-i3sb',
|
|
|
'cvx-rst-i2sb',
|
|
|
'cvx-rst-i4sb',
|
|
|
'cvx-rdt-i2sb',
|
|
|
'crx-rst-i3sb',
|
|
|
'crx-rdt-i2sb',
|
|
|
'crx-rdt-i3sb',
|
|
|
|
|
|
'cpu20-cax-2mhz',
|
|
|
'cpu40-cax-4mhz',
|
|
|
'mcpu50-cvx-5mhz',
|
|
|
'mcpu70-cvx-7mhz_2',
|
|
|
'rcpu100-crx-10mhz',
|
|
|
'rcpu200-crx-20mhz',
|
|
|
'xcpu100-cxx-100mhz',
|
|
|
|
|
|
'rkt-m20-2mb',
|
|
|
'rkt-m40-4mb',
|
|
|
'rst-m8-8mb',
|
|
|
'rst-m16-16mb_2',
|
|
|
'rdt-m32-32mb',
|
|
|
'rdt-m64-64mb',
|
|
|
|
|
|
'tva-rx2',
|
|
|
'gva-rx2',
|
|
|
'gva-rx4',
|
|
|
|
|
|
'fna-200-20mbs',
|
|
|
'fna-100-10mbs_2',
|
|
|
'fna-50-5mbs',
|
|
|
|
|
|
'kbc-s_2',
|
|
|
'kbc-r',
|
|
|
'kbc-p'
|
|
|
}
|
|
|
'cax-rkt-i2sb',
|
|
|
'cax-rkt-i3sb',
|
|
|
'cax-rst-i2sb',
|
|
|
'cax-rst-i3sb',
|
|
|
'cvx-rst-i2sb',
|
|
|
'cvx-rst-i4sb',
|
|
|
'cvx-rdt-i2sb',
|
|
|
'crx-rst-i3sb',
|
|
|
'crx-rdt-i2sb',
|
|
|
'crx-rdt-i3sb',
|
|
|
|
|
|
room {
|
|
|
nam = 'terminal_manual';
|
|
|
theme = 'tower';
|
|
|
pic = function(s)
|
|
|
if power_on then
|
|
|
return 'images/tower_level_4_room_2_light.png';
|
|
|
else
|
|
|
return 'images/tower_level_4_room_2_dark.png';
|
|
|
end;
|
|
|
end;
|
|
|
nofollow = true;
|
|
|
disp = translate("tower_locale", 'terminal_manual_disp');
|
|
|
dsc = translate("tower_locale", 'terminal_manual_dsc');
|
|
|
way = {
|
|
|
path {translate("common_locale", 'back'), 'tower_level_4_room_2'};
|
|
|
}
|
|
|
}
|
|
|
'cpu20-cax-2mhz',
|
|
|
'cpu40-cax-4mhz',
|
|
|
'mcpu50-cvx-5mhz',
|
|
|
'mcpu70-cvx-7mhz_2',
|
|
|
'rcpu100-crx-10mhz',
|
|
|
'rcpu200-crx-20mhz',
|
|
|
'xcpu100-cxx-100mhz',
|
|
|
|
|
|
room {
|
|
|
nam = 'service_manual';
|
|
|
theme = 'tower';
|
|
|
nofollow = true;
|
|
|
disp = translate("tower_locale", 'service_manual_disp');
|
|
|
pic = function(s)
|
|
|
if power_on then
|
|
|
return 'images/tower_level_4_room_2_light.png';
|
|
|
else
|
|
|
return 'images/tower_level_4_room_2_dark.png';
|
|
|
end;
|
|
|
end;
|
|
|
dsc = translate("tower_locale", 'service_manual_dsc');
|
|
|
way = {
|
|
|
path {translate("common_locale", 'back'), 'terminal_manual'};
|
|
|
}
|
|
|
}
|
|
|
'rkt-m20-2mb',
|
|
|
'rkt-m40-4mb',
|
|
|
'rst-m8-8mb',
|
|
|
'rst-m16-16mb_2',
|
|
|
'rdt-m32-32mb',
|
|
|
'rdt-m64-64mb',
|
|
|
|
|
|
room {
|
|
|
nam = 'troubleshooting_manual';
|
|
|
theme = 'tower';
|
|
|
nofollow = true;
|
|
|
pic = function(s)
|
|
|
if power_on then
|
|
|
return 'images/tower_level_4_room_2_light.png';
|
|
|
else
|
|
|
return 'images/tower_level_4_room_2_dark.png';
|
|
|
end;
|
|
|
end;
|
|
|
disp = translate("tower_locale", 'troubleshooting_manual_disp');
|
|
|
dsc = translate("tower_locale", 'troubleshooting_manual_dsc');
|
|
|
way = {
|
|
|
path {translate("common_locale", 'back'), 'terminal_manual'};
|
|
|
}
|
|
|
'tva-rx2',
|
|
|
'gva-rx2',
|
|
|
'gva-rx4',
|
|
|
|
|
|
'fna-200-20mbs',
|
|
|
'fna-100-10mbs_2',
|
|
|
'fna-50-5mbs',
|
|
|
|
|
|
'kbc-s_2',
|
|
|
'kbc-r',
|
|
|
'kbc-p'
|
|
|
}
|
|
|
|
|
|
room {
|
|
|
{
|
|
|
ticks = 0;
|
|
|
ram = 0;
|
|
|
};
|
|
|
nam = 'terminal_boot';
|
|
|
disp = '';
|
|
|
nosave = true;
|
|
|
noautosave = true;
|
|
|
nofollow = true;
|
|
|
noinv = true;
|
|
|
nofading = true;
|
|
|
network = false;
|
|
|
graphical = false;
|
|
|
theme = 'terminal';
|
|
|
themeInit = function(s)
|
|
|
timer:set(25);
|
|
|
|
|
|
local scale = diretheme.get_scale();
|
|
|
local width, height = diretheme.get_scaled_screen();
|
|
|
|
|
|
local rc = 0;
|
|
|
if s.graphical then
|
|
|
local animx = math.max(math.floor((width - 640) / 2) + 20, 20) * scale;
|
|
|
local animy = math.max(height - 734, 26) * scale;
|
|
|
|
|
|
if height < 540 then
|
|
|
animy = animy - 19 * scale;
|
|
|
end;
|
|
|
D {'logo', 'img', get_sprite('images/terminal/pc_anim.png'), x = animx, y = animy, w=64 * scale, h=64 * scale, frames = 24, z = 1, delay=175, speed=175, animated=true, background=true, process=function(d)
|
|
|
if d.frame_nr == 8 and rc < 2 then
|
|
|
d.frame_nr = 0;
|
|
|
rc = rc + 1;
|
|
|
elseif d.frame_nr == 9 then
|
|
|
rc = 0;
|
|
|
end;
|
|
|
end};
|
|
|
end;
|
|
|
|
|
|
local x = math.floor((width - 800) / 2);
|
|
|
|
|
|
local y = height - 193;
|
|
|
if y < 564 then
|
|
|
y = 564;
|
|
|
end;
|
|
|
|
|
|
local top = height - 193;
|
|
|
if height < 540 then
|
|
|
top = top + 20;
|
|
|
nam = 'terminal_manual';
|
|
|
theme = 'tower';
|
|
|
pic = function(s)
|
|
|
if power_on then
|
|
|
return 'images/tower_level_4_room_2_light.png';
|
|
|
else
|
|
|
return 'images/tower_level_4_room_2_dark.png';
|
|
|
end;
|
|
|
|
|
|
local delta = math.ceil((y - top) / 8) * scale;
|
|
|
top = top * scale;
|
|
|
|
|
|
DS {'keyboard', 'img', 'images/terminal/keyboard.png', x = x - 116, y = y, w=1036, h=191, z=0, speed=25, process=function(d)
|
|
|
if s.network and s.ticks >= 128 and delta > 0 then
|
|
|
d.y = d.y - delta;
|
|
|
delta = delta - scale;
|
|
|
if d.y < top then
|
|
|
d.y = top;
|
|
|
delta = 0;
|
|
|
end;
|
|
|
else
|
|
|
return true;
|
|
|
end;
|
|
|
end};
|
|
|
end;
|
|
|
onenter = function(s)
|
|
|
s.ticks = 0;
|
|
|
s.ram = 0;
|
|
|
local d = getscreen(s.graphical);
|
|
|
d:drop_all();
|
|
|
|
|
|
stop_sound();
|
|
|
end;
|
|
|
onexit = function(s)
|
|
|
D {'logo'};
|
|
|
D {'keyboard'};
|
|
|
D {'terminal_screen'};
|
|
|
end;
|
|
|
timer = function(s)
|
|
|
if s.ticks ~= 33 then
|
|
|
s.ticks = s.ticks + 1;
|
|
|
else
|
|
|
local ram = lookup('#ram', _'system_unit').device;
|
|
|
|
|
|
s.ram = s.ram + ram.size * 16;
|
|
|
if s.ram > ram.size * 1024 then
|
|
|
s.ram = ram.size * 1024;
|
|
|
s.ticks = s.ticks + 1;
|
|
|
end;
|
|
|
end;
|
|
|
if s.network then
|
|
|
if s.ticks == 128 then
|
|
|
D {'logo'};
|
|
|
end;
|
|
|
if s.ticks >= 156 then
|
|
|
walk('terminal');
|
|
|
end;
|
|
|
else
|
|
|
if s.ticks >= 300 then
|
|
|
walk('tower_level_4_room_2');
|
|
|
return;
|
|
|
end;
|
|
|
if s.ticks > 112 then
|
|
|
return false;
|
|
|
end;
|
|
|
end;
|
|
|
|
|
|
s:makescreen();
|
|
|
|
|
|
return false;
|
|
|
end;
|
|
|
dsc = '';
|
|
|
txt = {};
|
|
|
makescreen = function(s)
|
|
|
local d = getscreen(s.graphical and s.ticks < 128);
|
|
|
if s.ticks < 128 then
|
|
|
local motherboard = lookup('#motherboard', _'system_unit').device;
|
|
|
local cpu = lookup('#cpu', _'system_unit').device;
|
|
|
local ram = lookup('#ram', _'system_unit').device;
|
|
|
|
|
|
if s.ticks == 1 then
|
|
|
d:insert_line('TOWER BIOS 1.0');
|
|
|
end;
|
|
|
|
|
|
if s.ticks == 8 then
|
|
|
d:insert_line(translate_now("terminal_locale", 'motherboard') .. ' : ' .. motherboard.name);
|
|
|
end;
|
|
|
|
|
|
if s.ticks == 16 then
|
|
|
d:insert_line(translate_now("terminal_locale", 'cpu') .. ' : ' .. cpu.name .. ' @ ' .. cpu.speed .. '.0' .. translate_now("terminal_locale", 'mhz'));
|
|
|
end;
|
|
|
|
|
|
if s.ticks == 24 then
|
|
|
d:insert_line(translate_now("terminal_locale", 'ram') .. ' : '.. ram.name);
|
|
|
end;
|
|
|
|
|
|
if s.ticks == 32 then
|
|
|
d:insert_line(tostring(s.ram) .. translate_now("terminal_locale", 'kilobytes'))
|
|
|
end;
|
|
|
|
|
|
if s.ticks == 33 then
|
|
|
d:replace_line(tostring(s.ram) .. translate_now("terminal_locale", 'kilobytes'))
|
|
|
end;
|
|
|
|
|
|
if s.ticks == 34 then
|
|
|
d:replace_line(tostring(s.ram) .. translate_now("terminal_locale", 'kilobytes'));
|
|
|
end;
|
|
|
|
|
|
if s.ticks == 40 then
|
|
|
d:replace_line(tostring(s.ram) .. translate_now("terminal_locale", 'kilobytes') .. ' OK');
|
|
|
d:insert_line(' ');
|
|
|
end;
|
|
|
|
|
|
if s.ticks == 48 then
|
|
|
d:insert_line(translate_now("terminal_locale", 'keyboard') .. ' : ');
|
|
|
end;
|
|
|
|
|
|
if s.ticks == 56 then
|
|
|
d:replace_line(translate_now("terminal_locale", 'keyboard') .. ' : OK')
|
|
|
end;
|
|
|
|
|
|
if s.ticks == 64 then
|
|
|
d:insert_line(translate_now("terminal_locale", 'disk') .. ' : ');
|
|
|
end;
|
|
|
|
|
|
if s.ticks == 72 then
|
|
|
d:replace_line(translate_now("terminal_locale", 'disk') .. ' : ' .. translate_now("terminal_locale", 'missing'));
|
|
|
end;
|
|
|
|
|
|
if s.ticks == 80 then
|
|
|
d:insert_line(translate_now("terminal_locale", 'network') .. ' : ');
|
|
|
end;
|
|
|
|
|
|
if s.ticks == 88 then
|
|
|
if s.network then
|
|
|
d:replace_line(translate_now("terminal_locale", 'network') .. ' : OK');
|
|
|
else
|
|
|
d:replace_line(translate_now("terminal_locale", 'network') .. ' : ' .. translate_now("terminal_locale", 'missing'));
|
|
|
end;
|
|
|
d:insert_line(' ');
|
|
|
end;
|
|
|
|
|
|
if s.ticks == 104 then
|
|
|
d:insert_line(translate_now("terminal_locale", 'boot_from'));
|
|
|
end;
|
|
|
|
|
|
if s.network then
|
|
|
if s.ticks == 112 then
|
|
|
d:replace_line(translate_now("terminal_locale", 'boot_from') .. ' ' .. translate_now("terminal_locale", 'network_2'));
|
|
|
end;
|
|
|
|
|
|
if s.ticks == 120 then
|
|
|
d:replace_line(translate_now("terminal_locale", 'boot_from') .. ' ' .. translate_now("terminal_locale", 'network_2') .. '...');
|
|
|
end;
|
|
|
else
|
|
|
if s.ticks == 112 then
|
|
|
d:replace_line(translate_now("terminal_locale", 'boot_from') .. ' ' .. translate_now("terminal_locale", 'no_device'));
|
|
|
end;
|
|
|
end;
|
|
|
elseif s.ticks == 128 then
|
|
|
d:drop_all();
|
|
|
d:insert_line(translate_now("terminal_locale", 'tower_os_line_1'));
|
|
|
d:insert_line(' ');
|
|
|
else
|
|
|
if s.ticks == 136 then
|
|
|
d:insert_line(translate_now("terminal_locale", 'tower_os_line_2'));
|
|
|
d:insert_line(' ');
|
|
|
end;
|
|
|
|
|
|
if s.ticks == 144 then
|
|
|
d:insert_line(translate_now("terminal_locale", 'tower_os_line_3'));
|
|
|
d:insert_line(' ');
|
|
|
end;
|
|
|
end;
|
|
|
end;
|
|
|
end;
|
|
|
nofollow = true;
|
|
|
disp = translate("tower_locale", 'terminal_manual_disp');
|
|
|
dsc = translate("tower_locale", 'terminal_manual_dsc');
|
|
|
way = {
|
|
|
path {translate("common_locale", 'back'), 'tower_level_4_room_2'};
|
|
|
}
|
|
|
}
|
|
|
|
|
|
room {
|
|
|
{
|
|
|
ticks = 0;
|
|
|
ram = 0;
|
|
|
};
|
|
|
nam = 'terminal_boot_failure';
|
|
|
theme = 'terminal';
|
|
|
disp = '';
|
|
|
noinv = true;
|
|
|
nofading = true;
|
|
|
nofollow = true;
|
|
|
graphical = false;
|
|
|
nosave = true;
|
|
|
noautosave = true;
|
|
|
themeInit = function(s)
|
|
|
timer:set(25);
|
|
|
|
|
|
local scale = diretheme.get_scale();
|
|
|
local width, height = diretheme.get_scaled_screen();
|
|
|
|
|
|
local rc = 0;
|
|
|
if s.graphical then
|
|
|
local animx = math.max(math.floor((width - 640) / 2) + 20, 20) * scale;
|
|
|
local animy = math.max(height - 734, 26) * scale;
|
|
|
|
|
|
if height < 540 then
|
|
|
animy = animy - 19 * scale;
|
|
|
end;
|
|
|
D {'logo', 'img', get_sprite('images/terminal/pc_anim.png'), x = animx, y = animy, w=64 * scale, h=64 * scale, frames = 24, z = 1, delay = 175, speed = 175, animated=true, background=true, process=function(d)
|
|
|
if d.frame_nr == 8 and rc < 2 then
|
|
|
d.frame_nr = 0;
|
|
|
rc = rc + 1;
|
|
|
elseif d.frame_nr == 9 then
|
|
|
rc = 0;
|
|
|
end;
|
|
|
end};
|
|
|
end;
|
|
|
|
|
|
local x = math.floor((width - 800) / 2);
|
|
|
|
|
|
local y = height - 193;
|
|
|
if height < 540 then
|
|
|
y = y + 20;
|
|
|
nam = 'service_manual';
|
|
|
theme = 'tower';
|
|
|
nofollow = true;
|
|
|
disp = translate("tower_locale", 'service_manual_disp');
|
|
|
pic = function(s)
|
|
|
if power_on then
|
|
|
return 'images/tower_level_4_room_2_light.png';
|
|
|
else
|
|
|
return 'images/tower_level_4_room_2_dark.png';
|
|
|
end;
|
|
|
|
|
|
DS {'keyboard', 'img', 'images/terminal/keyboard.png', x = x - 116, y = y, w=1036, h=191, z=0};
|
|
|
end;
|
|
|
onenter = function(s)
|
|
|
s.graphical = _('terminal_boot').graphical;
|
|
|
s.ticks = 0;
|
|
|
s.ram = 0;
|
|
|
local d = getscreen(s.graphical);
|
|
|
d:drop_all();
|
|
|
|
|
|
stop_sound();
|
|
|
end;
|
|
|
onexit = function(s)
|
|
|
enableSmoke('images/endings/tower_ruin.png');
|
|
|
|
|
|
D {'terminal_screen'};
|
|
|
D {'keyboard'};
|
|
|
D {'logo'};
|
|
|
end;
|
|
|
timer = function(s)
|
|
|
if s.ticks ~= 33 then
|
|
|
s.ticks = s.ticks + 1;
|
|
|
else
|
|
|
local ram = lookup('#ram', _'system_unit').device;
|
|
|
|
|
|
s.ram = s.ram + ram.size * 16;
|
|
|
if s.ram > ram.size * 1024 then
|
|
|
s.ram = ram.size * 1024;
|
|
|
s.ticks = s.ticks + 1;
|
|
|
end;
|
|
|
end;
|
|
|
|
|
|
if s.ticks == 128 then
|
|
|
D {'logo'};
|
|
|
end;
|
|
|
if s.ticks >= 200 then
|
|
|
walk('ending_formatted');
|
|
|
return;
|
|
|
end;
|
|
|
end;
|
|
|
dsc = translate("tower_locale", 'service_manual_dsc');
|
|
|
way = {
|
|
|
path {translate("common_locale", 'back'), 'terminal_manual'};
|
|
|
}
|
|
|
}
|
|
|
|
|
|
s:makescreen();
|
|
|
|
|
|
return false;
|
|
|
end;
|
|
|
dsc = '';
|
|
|
txt = '';
|
|
|
makescreen = function(s)
|
|
|
local d = getscreen(s.graphical and s.ticks < 128);
|
|
|
if s.ticks < 128 then
|
|
|
local motherboard = lookup('#motherboard', _'system_unit').device;
|
|
|
local cpu = lookup('#cpu', _'system_unit').device;
|
|
|
local ram = lookup('#ram', _'system_unit').device;
|
|
|
|
|
|
if s.ticks == 1 then
|
|
|
d:insert_line('TOWER BIOS 1.0');
|
|
|
end;
|
|
|
|
|
|
if s.ticks == 8 then
|
|
|
d:insert_line(translate_now("terminal_locale", 'motherboard') .. ' : ' .. motherboard.name);
|
|
|
end;
|
|
|
|
|
|
if s.ticks == 16 then
|
|
|
d:insert_line(translate_now("terminal_locale", 'cpu') .. ' : ' .. cpu.name .. ' @ ' .. cpu.speed .. '.0' .. translate_now("terminal_locale", 'mhz'));
|
|
|
end;
|
|
|
|
|
|
if s.ticks == 24 then
|
|
|
d:insert_line(translate_now("terminal_locale", 'ram') .. ' : '.. ram.name);
|
|
|
end;
|
|
|
|
|
|
if s.ticks == 32 then
|
|
|
d:insert_line(tostring(s.ram) .. translate_now("terminal_locale", 'kilobytes'))
|
|
|
end;
|
|
|
|
|
|
if s.ticks == 33 then
|
|
|
d:replace_line(tostring(s.ram) .. translate_now("terminal_locale", 'kilobytes'))
|
|
|
end;
|
|
|
|
|
|
if s.ticks == 34 then
|
|
|
d:replace_line(tostring(s.ram) .. translate_now("terminal_locale", 'kilobytes'));
|
|
|
end;
|
|
|
|
|
|
if s.ticks == 40 then
|
|
|
d:replace_line(tostring(s.ram) .. translate_now("terminal_locale", 'kilobytes') .. ' OK');
|
|
|
d:insert_line(' ');
|
|
|
end;
|
|
|
|
|
|
if s.ticks == 48 then
|
|
|
d:insert_line(translate_now("terminal_locale", 'keyboard') .. ' : ');
|
|
|
end;
|
|
|
|
|
|
if s.ticks == 56 then
|
|
|
d:replace_line(translate_now("terminal_locale", 'keyboard') .. ' : OK')
|
|
|
end;
|
|
|
|
|
|
if s.ticks == 64 then
|
|
|
d:insert_line(translate_now("terminal_locale", 'disk') .. ' : ');
|
|
|
end;
|
|
|
|
|
|
if s.ticks == 72 then
|
|
|
d:replace_line(translate_now("terminal_locale", 'disk') .. ' : ' .. translate_now("terminal_locale", 'missing'));
|
|
|
end;
|
|
|
|
|
|
if s.ticks == 80 then
|
|
|
d:insert_line(translate_now("terminal_locale", 'network') .. ' : ');
|
|
|
end;
|
|
|
|
|
|
if s.ticks == 88 then
|
|
|
if s.network then
|
|
|
d:replace_line(translate_now("terminal_locale", 'network') .. ' : OK');
|
|
|
else
|
|
|
d:replace_line(translate_now("terminal_locale", 'network') .. ' : ' .. translate_now("terminal_locale", 'missing'));
|
|
|
end;
|
|
|
d:insert_line(' ');
|
|
|
end;
|
|
|
|
|
|
if s.ticks == 104 then
|
|
|
d:insert_line(translate_now("terminal_locale", 'boot_from'));
|
|
|
end;
|
|
|
|
|
|
|
|
|
if s.ticks == 112 then
|
|
|
d:replace_line(translate_now("terminal_locale", 'boot_from') .. ' ' .. translate_now("terminal_locale", 'network_2'));
|
|
|
end;
|
|
|
|
|
|
if s.ticks == 120 then
|
|
|
d:replace_line(translate_now("terminal_locale", 'boot_from') .. ' ' .. translate_now("terminal_locale", 'network_2') .. '...');
|
|
|
end;
|
|
|
else
|
|
|
-- pr [[No bootable medium found]];
|
|
|
d:drop_all();
|
|
|
d:insert_line(translate_now("terminal_locale", 'no_bootable_medium_found'));
|
|
|
end;
|
|
|
end;
|
|
|
room {
|
|
|
nam = 'troubleshooting_manual';
|
|
|
theme = 'tower';
|
|
|
nofollow = true;
|
|
|
pic = function(s)
|
|
|
if power_on then
|
|
|
return 'images/tower_level_4_room_2_light.png';
|
|
|
else
|
|
|
return 'images/tower_level_4_room_2_dark.png';
|
|
|
end;
|
|
|
end;
|
|
|
disp = translate("tower_locale", 'troubleshooting_manual_disp');
|
|
|
dsc = translate("tower_locale", 'troubleshooting_manual_dsc');
|
|
|
way = {
|
|
|
path {translate("common_locale", 'back'), 'terminal_manual'};
|
|
|
}
|
|
|
}
|