/*
* class chapter_01
*
*
* Can NOT be used in network game !
*/
class tutorial.chapter_05 extends basic_chapter
{
chapter_name = "Bus networks"
startcash = 500000 // pl=0 startcash; 0=no reset
load = 0
goal_lod1 = 90
goal_lod2 = 40
// Step 1
c_city1 = coord(20,112)
name_city1 = "Westminster"
c1_lima = coord(10,101)
c1_limb = coord(32,123)
st1_c = coord3d(27,105,0)
stop1 = coord(26,107)
vh1_nr = 5
// Step 2
c_city2 = coord(36,27)
name_city2 = "Rio de Abajo"
c2_lima = coord(31,26)
c2_limb = coord(45,37)
st2_c = coord3d(30,30,0)
stop2 = coord(32,31)
vh2_nr = 2
function start_chapter() //Inicia solo una vez por capitulo
{
return 0
}
function set_goal_text(text){
switch (this.step) {
case 1:
local st1_halt = tile_x(st1_c.x, st1_c.y, 0).get_halt()
text.st1_nam = ""+st1_halt.get_name()+" ("+st1_c.tostring()+") "
text.city1 = c_city1.href(""+name_city1 +" ("+c_city1.tostring()+")")+""
text.stop = stop1.href("("+stop1.tostring()+")")+""
text.goal_lod1 = goal_lod1
break
case 2:
local st2_halt = tile_x(st2_c.x, st2_c.y, 0).get_halt()
text.st2_nam = ""+st2_halt.get_name()+" ("+st2_c.tostring()+") "
text.city2 = c_city2.href(""+name_city2 +" ("+c_city2.tostring()+")")+""
text.stop = stop2.href("("+stop2.tostring()+")")+""
text.goal_lod2 = goal_lod2
break
case 3:
break
}
text.lod = load
return text
}
function is_chapter_completed(pl) {
local percentage=0
switch (this.step) {
case 1:
rules.clear()
set_all_rules(pl)
if (!correct_cov)
return 0
if (pot0==0){
local tile = tile_x(stop1.x, stop1.y, 0)
local buld = tile.find_object(mo_building)
if(buld){
local halt = tile.get_halt()
if(halt)
pot0 = 1
}
}
else if (pot0==1 && pot1==0){
local tile = tile_x(stop1.x, stop1.y, 0)
local buld = tile.find_object(mo_building)
if(buld){
local halt = tile.get_halt()
if(halt){
if(halt.get_owner().nr==1)
pot1 = 1
}
else
backward_pot(0)
}
else
backward_pot(0)
}
else if (pot1==1 && pot2==0){
local wt = wt_road
local good = 0 //Passengers
local pass = cov_pax(my_tile(stop1), wt, good)
load = pass
if(pass>goal_lod1 && current_cov == 32){
load = 0
reset_pot()
this.next_step()
}
}
return 5
break;
case 2:
rules.clear()
set_all_rules(pl)
if (!correct_cov)
return 0
if (pot0==0){
local tile = tile_x(stop2.x, stop2.y, 0)
local buld = tile.find_object(mo_building)
if(buld){
local halt = tile.get_halt()
if(halt)
pot0 = 1
}
}
else if (pot0==1 && pot1==0){
local tile = tile_x(stop2.x, stop2.y, 0)
local buld = tile.find_object(mo_building)
if(buld){
local halt = tile.get_halt()
if(halt){
if(halt.get_owner().nr==1)
pot1 = 1
}
else
backward_pot(0)
}
else
backward_pot(0)
}
else {
local wt = wt_road
local good = 0 //Passengers
local pass = cov_pax(my_tile(stop2), wt, good)
load = pass
if(pass>goal_lod2 && current_cov == 34){
reset_pot()
this.next_step()
}
}
return 50
break;
case 3:
this.step=1
persistent.step=1
persistent.status.step = 1
reset_pot()
reset_glsw()
reset_stop_flag()
persistent.point = null
reset_tmpsw()
return 100
break;
}
percentage=(this.step-1)+1
return percentage
}
function is_work_allowed_here(pl, tool_id, pos) {
local result=null // null is equivalent to 'allowed'
local t = tile_x(pos.x, pos.y, pos.z)
local way = t.find_object(mo_way)
switch (this.step) {
case 1:
if (tool_id==4096)
return null
if ((pos.x>=c1_lima.x)&&(pos.y>=c1_lima.y)&&(pos.x<=c1_limb.x)&&(pos.y<=c1_limb.y)){
if (way){
if(pot0==0){
if(tool_id==4115){
if(pos.x==stop1.x && pos.y==stop1.y)
return null
else
return translate("Coloque la parada aqui:")+ " ("+stop1.tostring()+")."
}
else
return translate("Accion no permitida ") + tool_id + " ("+pos.tostring()+")."
}
else if(pot0==1 && pot1==0){
if(tool_id==4128){
if(pos.x==stop1.x && pos.y==stop1.y)
return null
else
return translate("Haga clic sobre la parada ")+ " ("+stop1.tostring()+")."
}
else
return translate("Accion no permitida ") + tool_id + " ("+pos.tostring()+")."
}
else {
if ((tool_id==4110)||(tool_id==4115)||(tool_id==4117)||(tool_id==4097)||(tool_id==4108)||(tool_id==4109))
return null
else
return translate("Accion no permitida ") + tool_id + " ("+pos.tostring()+")."
}
}
else if(tool_id==4110 && pot1==1)
return null
else
return translate("Solo puede usar esta herramienta en una carretera.")
}
else
return translate("Solo puede usar esta herramienta en la ciudad ")+name_city1.tostring()+" ("+c_city1.tostring()+")."
break;
case 2:
if (tool_id==4096)
return null
if ((pos.x>=c2_lima.x)&&(pos.y>=c2_lima.y)&&(pos.x<=c2_limb.x)&&(pos.y<=c2_limb.y)){
if (way){
if(pot0==0){
if(tool_id==4115){
if(pos.x==stop2.x && pos.y==stop2.y)
return null
else
return translate("Coloque la parada aqui:")+ " ("+stop2.tostring()+")."
}
else
return translate("Accion no permitida ")+" ("+pos.tostring()+")."
}
else if(pot0==1 && pot1==0){
if(tool_id==4128){
if(pos.x==stop2.x && pos.y==stop2.y)
return null
else
return translate("Haga clic sobre la parada ")+ " ("+stop2.tostring()+")."
}
else
return translate("Accion no permitida ")+" ("+pos.tostring()+")."
}
else {
if ((tool_id==4110)||(tool_id==4115)||(tool_id==4117)||(tool_id==4097)||(tool_id==4108)||(tool_id==4109))
return null
else
return translate("Accion no permitida ")+" ("+pos.tostring()+")."
}
}
else if(tool_id==4110 && pot1==1)
return null
else
return translate("Solo puede usar esta herramienta en una carretera.")
}
else
return translate("Solo puede usar esta herramienta en la ciudad ")+name_city2.tostring()+" ("+c_city2.tostring()+")."
break;
}
if (tool_id==4096)
return null
return tool_id
}
function is_schedule_allowed(pl, schedule) {
local result=null // null is equivalent to 'allowed'
return result
}
function is_convoy_allowed(pl, convoy, depot)
{
local result=null // null is equivalent to 'allowed'
//Check load type
local good_nr = 0 //Passengers
local good = convoy.get_goods_catg_index()
for(local j=0;j= (curr_nr + vh1_nr )){
return format(translate("Solo puede usar [%d] vehiculos."),vh1_nr)
}
if (current_cov==curr_nr){
cov_save[current_cov]=convoy
id_save[current_cov]=convoy.id
gcov_nr++
persistent.gcov_nr = gcov_nr
}
else if (current_cov==(curr_nr + 1)){
cov_save[current_cov]=convoy
id_save[current_cov]=convoy.id
gcov_nr++
persistent.gcov_nr = gcov_nr
}
else if (current_cov==(curr_nr + 2)){
cov_save[current_cov]=convoy
id_save[current_cov]=convoy.id
gcov_nr++
persistent.gcov_nr = gcov_nr
}
else if (current_cov==(curr_nr + 3)){
cov_save[current_cov]=convoy
id_save[current_cov]=convoy.id
gcov_nr++
persistent.gcov_nr = gcov_nr
}
else if (current_cov==(curr_nr + 4)){
cov_save[current_cov]=convoy
id_save[current_cov]=convoy.id
gcov_nr++
persistent.gcov_nr = gcov_nr
}
return result
}
if (this.step == 2){
local curr_nr = 32
if (current_cov >= (curr_nr + vh2_nr )){
return format(translate("Solo puede usar [%d] vehiculos."),vh2_nr)
}
if (current_cov==curr_nr){
cov_save[current_cov]=convoy
id_save[current_cov]=convoy.id
gcov_nr++
persistent.gcov_nr = gcov_nr
}
else if (current_cov==(curr_nr + 1)){
cov_save[current_cov]=convoy
id_save[current_cov]=convoy.id
gcov_nr++
persistent.gcov_nr = gcov_nr
}
return result
}
}
return result = translate("It is not allowed to start vehicles.")
}
function set_all_rules(pl)
{
local forbid = [tool_remove_wayobj, tool_build_way, tool_build_bridge, tool_build_tunnel,tool_build_station,
tool_remove_way, tool_build_depot, tool_build_roadsign, tool_build_wayobj]
foreach(wt in all_waytypes)
if (wt != wt_road) {
foreach (tool_id in forbid)
rules.forbid_way_tool(pl, tool_id, wt )
}
// tool "climate zones" = 4135
local forbid = [4134,4135, tool_lower_land, tool_raise_land, tool_setslope, tool_build_roadsign,
tool_restoreslope, tool_plant_tree, tool_set_marker, tool_stop_mover, tool_buy_house, tool_build_wayobj,
tool_remove_wayobj, tool_build_tunnel, tool_build_transformer, tool_build_bridge, tool_build_way,tool_remove_way]
foreach (tool_id in forbid)
rules.forbid_tool(pl, tool_id)
}
} // END of class
// END OF FILE