/* * 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