//which save-game is the basis map.file = "sell_clothing.sve" // scenario.short_description = "Make & Sell Textiles" scenario.author = "Severous (scripting by Dwachs & Freca)" scenario.version = "0.3" //to easily adjust difficulty local trawler_target1 = 6 local trawler_target2 =12 local endyear=1940 // text on the info of the scenariowindow function get_info_text(pl) { return @"Du sollst mindestens eine Palette Texilien bis spätestens " +endyear +" nach Salisbury liefern." +"Um das dafür nötige Kapital zu bekommen, hast du ein Abkommen mit dem Besitzer der Konservenfabrik in Coventry. Er stellt dir 500.000 zur Verfügung wenn du seinen Betrieb ordentlich ans Laufen zu bringen." +"So lange du nicht pleite gehst , hast du fast völlig freie Hand." +"Die Einschränkungen und Anforderungen die der Fabrikbesitzer vorgibt, werden dir nach und nach mitgeteilt." +"Dummerweise gibt es keine Frachtflugzeuge." } // text on the rulepage of the scenariowindow, only descriptive function get_rule_text(pl) { local text = @"Ausser folgenden Einschränkungen kannst du alles bauen und alle Industrien verbinden..

Du hast bis Ende 1939 Zeit." if (persistent.stage <= 2) text += @"-- Waren dürfen nur mit Schiffen über das Meer bei Coventry transportiert werden.

Keine Brücken oder Tunnel über das Wasser.


" return text } //text on the goalpage of the scenariowindow, depends on actual stage function get_goal_text(pl) { local text = "" if (persistent.stage == 0) { text = @" Stufe 1:

Bring 1000 Fisch ins Lager der Konservernfabrik und beschäftige mindestens " +trawler_target1 +"Trawler." +"Da die Fischereibehörde besorgt um die Fischgründe ist, sind Tunnel und Brücken verboten.

" +"Das Ganze sollte bis spätestens Ende 1930 erledigt sein." +"Trigger:wenn " +trawler_target1 +" Trawler die etwas bei der Konservenfabrik abgeliefert haben, 1000 Fisch im Lager" } if (persistent.stage == 1) { text = @" Stufe 2:

Der Fisch damit die Konservenproduktion anlaufen kann ist da. Produziere nun bei London etwas Stahl. Um den Transport nach Coventry musst du dich erst in der nächsten Stufe kümmern. Du solltest jedenfalls eine Menge Geld dafür vorhalten... Trigger:Stahl im Stahlwerk produziert " } if (persistent.stage ==2) { text = @" Stufe 3:

Der Fabrikbesitzer ist so begeistert von deiner bisherigen Arbeit, daß er dir höhere Ziele setzt:" +"Beschäftige " +trawler_target2 +" Trawler." +"Liefere Stahl in die Konservernfabrik und dann Konserven in den Supermarkt in Coventry." +"Leider wird dir kein Rabatt beim Kauf des Stahlschiffes eingeräumt und du musst den vollen Preis bezahlen." +"Der viele Fisch im Lager fängt an zu stinken! Deinem Chef gefällt das überhaupt nicht und er droht dir mit Kündigung falls mehr als 15000 Fische rumliegen." +"Um also die " +trawler_target2 +" Trawler zu beschäftigen gibt es nur eine Lösung: Schaff soviel Stahl ran wie nur möglich!" +"Trigger:Konserven im Supermarkt angekommen" +trawler_target2 +" Trawler" } if (persistent.stage ==3) { text = @" Stufe 4:

Es ist an der Zeit die Vorbereitungen für die Lieferung nach Salisbury zu beginnen. Produziere Textilien in Coventry.

Die Fischereibehörde hat genügend Daten gesammelt und erlaubt den Bau von Brücken oder Tunneln bei Coventry. Trigger: Textilien hergestellt. " } if (persistent.stage ==4) { text = @" Stufe 5:

Der Konservenproduzent will seinen Marktanteil erhöhen und fordert dich auf jetzt auch Fischkonserven nach London zu liefern. ??Vermutlich hast du Schulden. Solange du aber jeden Monat einen hübschen Profit machst, ist das kein Problem.?? Trigger: Konserven im Supermarkt in London " } if (persistent.stage == 5){ text = @" Stufe 6:

Dein Auftraggeber ist völlig begeistert und du kannst dich auf die letzten Vorbereitungen konzentrieren: Liefere Textilien nach Salisbury. Trigger: Irgendwas in Salisbury in der Shoppingmall angekommen. " } if (persistent.stage == 6){ text = @" // Stufe 6:

Du hast gewonnen! " } return text } // text on the resultpage of the scenariowindow // can be the reason for lose or a comment on the last stage and what is still missing for the next stage // depends on the result of "is_scenario_completed(pl)", <0 is indicator for lose // if game is not lost, text depends on actual stage //has to cover all possible returncodes form "is_scenario_completed(pl)" function get_result_text(pl) { local percentage = is_scenario_completed(pl) if (percentage == -10) { // time out return @"Kündigung!

You were not able to employ and keep running enough trawlers. The seaman's lobby finally could convince your bosses to replace you by one of the fisherman's friends." } if (percentage == -11) { // over supply of fish cannery return @"Kündigung!

Dein Chef ist im wahrsten Sinne des Wortes stinksauer. Der letzte Trawler brachte das Lager und das Fass zum Überlaufen. " } if (percentage == -19) { return @"Kündigung!

Das dauerte viel zu lange.... " } switch(persistent.stage) { case 0: local trawler =get_trawler_count() local fische = fish_cannery_fish_slot.storage[0] return @""+trawler +" Trawler und " +fische + " Fische. Reicht noch nicht!" case 1: return @"Die Fischerei läuft an. Gut gemacht!

Im Stahlwerk wird noch nicht gearbeitet" case 2: return @"Der Stahl stapelt sich und die Hochöfen glühen.

" + get_trawler_count() +" Trawler sind unterwegs und " +get_goods_at_coventry_supermarket() + " Waren in Coventry" //freca case 3: return @"Die Bevölkerung on Coventry reisst dem Supermarkt die Fischkonserven aus den Händen. Und mit den 20 Trawlern ist der Nachschub gesichert.

Leider ist im Ausgangslager der Textilfabrik noch gähnende Leere" case 4: return @"Der erste Stoffballen liegt in der Abholhalle. Ob die Erlaubnis jetzt Brücken bauen zu dürfen noch etwas bringt?

Die Regale im Supermarkt in London sind noch leer" case 5: return @"Die Londoner scheinen die Fischdosen zu lieben. Vielleicht solltest du noch Chips verkaufen.

Es ist noch nichts in Salisbury angekommen." case 6: return @"Gewonnen!" } return "You did not achieve anything. Absolutely." } //heart of the whole scenario //calulates "stage" and returns the percentage of completion of the scenario //first part checks for serveral lose-conditions //second parts checks the trigger for finishing the actual stage, sets the number for the next stage and returns % function is_scenario_completed(pl) { local time = get_time() // check for oversupply local fish_in_storage = fish_cannery_fish_slot.storage[0] //if (fish_cannery_fish_slot.storage[0] > fish_cannery_fish_slot.max_storage) return -11 if (fish_in_storage > 14910) return -11 //fabrik nimm nichts an, wenn es über 15000 geht // check for trawlers local trawlers = get_trawler_count() if (persistent.stage == 1 && trawlers < trawler_target1) return -10 if (persistent.stage == 2 && trawlers < trawler_target1) return -10 if (persistent.stage > 2 && trawlers < trawler_target2) return -10 //check for delivered textiles local sold_textiles = 0 //textile_factory_output.slot.delivered[0] if (persistent.stage < 5 && sold_textiles >0) return -12 //test // local stahl = steel_factory_output_slot.storage[0] // if (stahl >0) print("stahl: "+stahl) if (time.year >= endyear) return -19 switch(persistent.stage) { case 0: if (time.year > 1930) return -10 // lost at stage 0 if (trawlers >= trawler_target1 && fish_in_storage >1000) { persistent.stage ++; gui.open_info_win() } return min(10, trawlers) case 1: local stahl = steel_factory_steel_slot.storage[0] if (stahl > 0) { persistent.stage ++; gui.open_info_win() } return 20 case 2: local received = get_goods_at_coventry_supermarket() if (received > 0 && trawlers >=trawler_target2) { persistent.stage ++; gui.open_info_win() } return 40 //freca case 3: local build = textile_factory_textile_slot.storage[0] if (build > 0) { // bridge & tunnel allowed set_rule_bridge_coventry_sound( 0 /* allow */ ) persistent.stage ++; gui.open_info_win() } return 60 case 4: if (get_goods_at_london_supermarket() >0) { persistent.stage++ gui.open_info_win() } return 75 case 5: if (get_goods_at_salisbury_shoppingmall() >0) { persistent.stage++ gui.open_info_win() } return 95 case 6: return 99 default: return 97 } } //dwachs, das zeug hier kann doch auch nach oben, oder? //initialize several things fish_cannery_fish_slot <- {} coventry_supermarket_input <- {} london_supermarket_input <- {} textile_factory_output <- {} steel_factory_output <- {} steel_factory_input <- {} steel_factory_steel_slot <-{} textile_factory_textile_slot <-{} player <- {} salisbury_shoppingmall_input <-{} player <- {} //function to count trawlers, only for this scenario function get_trawler_count() { local trawlers = 0 local fish_catg = good_desc_x("fish").catg_index local list = convoy_list_x() foreach(cnv in list) { if (cnv.waytype == wt_water) { if (cnv.goods_catg_index.find( fish_catg) != null && cnv.transported_goods.reduce(max)>0) { trawlers++ } } } return trawlers } //function to check if there is something to sell, //can be abstracted???? function get_goods_at_coventry_supermarket() { local received = 0; foreach(slot in coventry_supermarket_input) { received += slot.received[0] } return received } function get_goods_at_london_supermarket() { local received = 0; foreach(slot in london_supermarket_input) { received += slot.received[0] } return received } function get_goods_at_salisbury_shoppingmall() { local received = 0 foreach(slot in salisbury_shoppingmall_input) { received += slot.received[0] } return received } //called only when scenario is started function start() { persistent.stage <- 0 set_rule_bridge_coventry_sound( 1 /* forbid */ ) resume_game() //gui.open_info_win() } //called when game is loaded function resume_game() { // init factory accessors fish_cannery_fish_slot = factory_x(1600, 21).input.fish coventry_supermarket_input = factory_x(1621, 8).input london_supermarket_input = factory_x(740,79).input salisbury_shoppingmall_input = factory_x(11,58).input textile_factory_output = factory_x(1609,9).output textile_factory_textile_slot = factory_x(1609,9).output.textile steel_factory_output = factory_x(850,56).output steel_factory_steel_slot = factory_x(850,56).output.Stahl steel_factory_input = factory_x(850,56).input /* foreach( name,slot in textile_factory_output) { print("outname:" + name+":") print("storage:"+slot.storage[0]+":") } */ /* foreach( name,slot in steel_factory_output) { print("outname:" + name+":") print("storage:"+slot.storage[0]+":") print("delivered:"+slot.delivered[0]) } */ // print("Stoffe im Lager:"+textile_factory_textile_slot.storage[0]) // print("Fischname"+fish_cannery_fish_slot[0]) if ( !("stage" in persistent)) { persistent.stage <- 0 } //print(factory_x(1600,21).input.fish.storage[0]) //print("asd") //player <- {} //player= player_x(0) //print("player.cash 0 "+player.cash[0]) //print("player.cash 1 "+player.cash[1]) } // no bridge across any of these tiles local coventry_sound = [ {x=1536, y=127}, {x=1536, y=97}, {x=1548, y=97}, {x=1548, y=47}, {x=1585, y=47}, {x=1585, y=20}, {x=1598, y=20}, {x=1598, y=0} ] local err_no_bridge = "The fish industry does not allow to interfere with its enterprises in Coventry sound." function set_rule_bridge_coventry_sound(forbid) { if(forbid ==1) for(local i=0; i