From 6e8be3b03ea9ed68f4d76f42256c9745e7088d02 Mon Sep 17 00:00:00 2001 From: Michael Lutz Date: Sun, 3 Jan 2021 22:04:54 +0100 Subject: [PATCH 01/27] Fix #8067: [OSX] Calculate title bar height instead of assuming a fixed value. --- src/video/cocoa/cocoa_v.mm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/video/cocoa/cocoa_v.mm b/src/video/cocoa/cocoa_v.mm index c7c5a308eb..81715ff926 100644 --- a/src/video/cocoa/cocoa_v.mm +++ b/src/video/cocoa/cocoa_v.mm @@ -569,7 +569,8 @@ bool WindowQuartzSubdriver::SetVideoMode(int width, int height, int bpp) [ this->window setContentSize:contentRect.size ]; /* Ensure frame height - title bar height >= view height */ - contentRect.size.height = Clamp(height, 0, (int)[ this->window frame ].size.height - 22 /* 22 is the height of title bar of window*/); + float content_height = [ this->window contentRectForFrameRect:[ this->window frame ] ].size.height; + contentRect.size.height = Clamp(height, 0, (int)content_height); if (this->cocoaview != nil) { height = (int)contentRect.size.height; From 979b4af6cae925e7426ab9e4b4c5bdc9084545fd Mon Sep 17 00:00:00 2001 From: Michael Lutz Date: Sun, 3 Jan 2021 22:14:03 +0100 Subject: [PATCH 02/27] Revert 4ce53cb8: [OSX] Delayed fullscreen switch is not needed anymore. The fix for #8067 solves the real issue, making this workaround unneeded. --- src/video/cocoa/cocoa_v.h | 1 - src/video/cocoa/cocoa_v.mm | 4 +--- src/video/cocoa/event.mm | 6 ------ 3 files changed, 1 insertion(+), 10 deletions(-) diff --git a/src/video/cocoa/cocoa_v.h b/src/video/cocoa/cocoa_v.h index f3e484b01b..f5d1756407 100644 --- a/src/video/cocoa/cocoa_v.h +++ b/src/video/cocoa/cocoa_v.h @@ -18,7 +18,6 @@ extern bool _cocoa_video_started; class VideoDriver_Cocoa : public VideoDriver { private: - bool fullscreen_on_mainloop; ///< Switch to fullscreen once the main loop is running? Dimension orig_res; ///< Saved window size for non-fullscreen mode. public: diff --git a/src/video/cocoa/cocoa_v.mm b/src/video/cocoa/cocoa_v.mm index 81715ff926..eae1acbc99 100644 --- a/src/video/cocoa/cocoa_v.mm +++ b/src/video/cocoa/cocoa_v.mm @@ -156,6 +156,7 @@ static void QZ_UpdateVideoModes() static CocoaSubdriver *QZ_CreateSubdriver(int width, int height, int bpp, bool fullscreen, bool fallback) { CocoaSubdriver *ret = QZ_CreateWindowQuartzSubdriver(width, height, bpp); + if (ret != nullptr && fullscreen) ret->ToggleFullscreen(fullscreen); if (ret != nullptr) return ret; if (!fallback) return nullptr; @@ -209,9 +210,6 @@ const char *VideoDriver_Cocoa::Start(const StringList &parm) return "The cocoa quartz subdriver only supports 8 and 32 bpp."; } - /* Defer fullscreen toggle until the main loop is running, - * as otherwise a grey bar will be stuck on top of the window. */ - this->fullscreen_on_mainloop = _fullscreen; _cocoa_subdriver = QZ_CreateSubdriver(width, height, bpp, _fullscreen, true); if (_cocoa_subdriver == NULL) { Stop(); diff --git a/src/video/cocoa/event.mm b/src/video/cocoa/event.mm index 642149858d..8a43945f5d 100644 --- a/src/video/cocoa/event.mm +++ b/src/video/cocoa/event.mm @@ -652,12 +652,6 @@ void VideoDriver_Cocoa::GameLoop() while (QZ_PollEvent()) {} - /* If we do that right after window creation, a grey bar will be left at the top. */ - if (this->fullscreen_on_mainloop) { - this->fullscreen_on_mainloop = false; - _cocoa_subdriver->ToggleFullscreen(true); - } - if (_exit_game) { /* Restore saved resolution if in fullscreen mode. */ if (_cocoa_subdriver->IsFullscreen()) _cur_resolution = this->orig_res; From eeb88e87d8c7b62e0bac94ede44cceee987b8d09 Mon Sep 17 00:00:00 2001 From: Matt Kimber Date: Sat, 2 Jan 2021 22:39:30 +0000 Subject: [PATCH 03/27] Codechange: improve performance for complex vehicle chains by resolving sprites less often --- src/vehicle.cpp | 35 +++++++++++++++++++++++++++++++++++ src/vehicle_base.h | 43 +++++++++++++++++++++++++++++++++++++++---- 2 files changed, 74 insertions(+), 4 deletions(-) diff --git a/src/vehicle.cpp b/src/vehicle.cpp index e014944a9f..8dead6ceea 100644 --- a/src/vehicle.cpp +++ b/src/vehicle.cpp @@ -1091,6 +1091,23 @@ static void DoDrawVehicle(const Vehicle *v) if (to != TO_INVALID && (IsTransparencySet(to) || IsInvisibilitySet(to))) return; } + /* + * If the vehicle sprite was not updated despite further viewport changes, we need + * to update it before drawing. + * + * I'm not keen on casting to mutable - it's the approach JGR uses in JGRPP but I + * wonder if there's a cleaner option (even though we can only take the decision + * whether to update once we already know the vehicle is going to appear in a + * viewport) + */ + if (v->rstate.sprite_has_viewport_changes) { + Vehicle* v_mutable = const_cast(v); + VehicleSpriteSeq seq; + v_mutable->GetImage(v_mutable->direction, EIT_ON_MAP, &seq); + v_mutable->sprite_seq = seq; + v_mutable->rstate.sprite_has_viewport_changes = false; + } + StartSpriteCombine(); for (uint i = 0; i < v->sprite_seq.count; ++i) { PaletteID pal2 = v->sprite_seq.seq[i].pal; @@ -1139,6 +1156,7 @@ void ViewportAddVehicles(DrawPixelInfo *dpi) const Vehicle *v = _vehicle_viewport_hash[x + y]; // already masked & 0xFFF while (v != nullptr) { + if (!(v->vehstatus & VS_HIDDEN) && l <= v->coord.right && t <= v->coord.bottom && @@ -1146,6 +1164,23 @@ void ViewportAddVehicles(DrawPixelInfo *dpi) b >= v->coord.top) { DoDrawVehicle(v); } + else { + /* + * Indicate that this vehicle was considered for rendering in a viewport, + * and we therefore need to update sprites more frequently in case a callback + * will change the bounding box to one which will cause the sprite to be + * displayed. + * + * This reduces the chances of flicker when sprites enter the screen, if they + * are part of a newgrf vehicle set which changes bounding boxes within a + * single vehicle direction. + * + * TODO: is there a cleaner solution than casting to a mutable type? + */ + Vehicle* v_mutable = const_cast(v); + v_mutable->rstate.is_viewport_candidate = true; + } + v = v->hash_viewport_next; } diff --git a/src/vehicle_base.h b/src/vehicle_base.h index 019c94a29a..8ef316df17 100644 --- a/src/vehicle_base.h +++ b/src/vehicle_base.h @@ -124,6 +124,13 @@ struct VehicleCache { byte cached_vis_effect; ///< Visual effect to show (see #VisualEffect) }; +/** Values for controlling how a vehicle's sprites are refreshed */ +struct VehicleSpriteRefreshState { + Direction last_direction; ///< Last direction we obtained sprites for + bool is_viewport_candidate; ///< The vehicle has been in the hash for a shown viewport recently + bool sprite_has_viewport_changes; ///< There have been viewport changes since the sprite was last updated +}; + /** Sprite sequence for a vehicle part. */ struct VehicleSpriteSeq { PalSpriteID seq[4]; @@ -327,6 +334,8 @@ public: NewGRFCache grf_cache; ///< Cache of often used calculated NewGRF values VehicleCache vcache; ///< Cache of often used vehicle values. + VehicleSpriteRefreshState rstate; ///< Values relating to whether sprites should be refreshed, see #VehicleSpriteRefreshState + Vehicle(VehicleType type = VEH_INVALID); void PreDestructor(); @@ -1169,16 +1178,42 @@ struct SpecializedVehicle : public Vehicle { */ inline void UpdateViewport(bool force_update, bool update_delta) { + bool sprite_has_changed = false; + /* Skip updating sprites on dedicated servers without screen */ if (_network_dedicated) return; /* Explicitly choose method to call to prevent vtable dereference - * it gives ~3% runtime improvements in games with many vehicles */ if (update_delta) ((T *)this)->T::UpdateDeltaXY(); - VehicleSpriteSeq seq; - ((T *)this)->T::GetImage(this->direction, EIT_ON_MAP, &seq); - if (force_update || this->sprite_seq != seq) { - this->sprite_seq = seq; + + /* + * Only check for a new sprite sequence if the vehicle direction + * has changed since we last checked it, assuming that otherwise + * there won't be enough change in bounding box or offsets to need + * to resolve a new sprite. + */ + if (this->direction != this->rstate.last_direction || this->rstate.is_viewport_candidate) { + VehicleSpriteSeq seq; + + ((T*)this)->T::GetImage(this->direction, EIT_ON_MAP, &seq); + if (this->sprite_seq != seq) { + sprite_has_changed = true; + this->sprite_seq = seq; + } + + this->rstate.last_direction = this->direction; + this->rstate.is_viewport_candidate = false; + this->rstate.sprite_has_viewport_changes = false; + } else { + /* + * Changes could still be relevant when we render the vehicle even if + * they don't alter the bounding box + */ + this->rstate.sprite_has_viewport_changes = true; + } + + if (force_update || sprite_has_changed) { this->Vehicle::UpdateViewport(true); } } From 9b28b15e677e0de64fde270f4223daeb401cfcac Mon Sep 17 00:00:00 2001 From: Matt Kimber Date: Sun, 3 Jan 2021 13:32:58 +0000 Subject: [PATCH 04/27] Codechange: create MutableSpriteCache to remove the need to cast Vehicle to a mutable type in render methods --- src/aircraft_cmd.cpp | 16 +++++++-------- src/articulated_vehicles.cpp | 2 +- src/disaster_vehicle.cpp | 4 ++-- src/effectvehicle.cpp | 36 +++++++++++++++++----------------- src/roadveh_cmd.cpp | 2 +- src/saveload/oldloader_sl.cpp | 6 +++--- src/saveload/vehicle_sl.cpp | 12 ++++++------ src/ship_cmd.cpp | 2 +- src/train_cmd.cpp | 6 +++--- src/vehicle.cpp | 28 +++++++++++--------------- src/vehicle_base.h | 37 +++++++++++++++++++---------------- 11 files changed, 74 insertions(+), 77 deletions(-) diff --git a/src/aircraft_cmd.cpp b/src/aircraft_cmd.cpp index 447615e3b2..c381fae977 100644 --- a/src/aircraft_cmd.cpp +++ b/src/aircraft_cmd.cpp @@ -341,8 +341,8 @@ CommandCost CmdBuildAircraft(TileIndex tile, DoCommandFlag flags, const Engine * v->date_of_last_service = _date; v->build_year = u->build_year = _cur_year; - v->sprite_seq.Set(SPR_IMG_QUERY); - u->sprite_seq.Set(SPR_IMG_QUERY); + v->sprite_cache.sprite_seq.Set(SPR_IMG_QUERY); + u->sprite_cache.sprite_seq.Set(SPR_IMG_QUERY); v->random_bits = VehicleRandomBits(); u->random_bits = VehicleRandomBits(); @@ -374,7 +374,7 @@ CommandCost CmdBuildAircraft(TileIndex tile, DoCommandFlag flags, const Engine * w->vehstatus = VS_HIDDEN | VS_UNCLICKABLE; w->spritenum = 0xFF; w->subtype = AIR_ROTOR; - w->sprite_seq.Set(SPR_ROTOR_STOPPED); + w->sprite_cache.sprite_seq.Set(SPR_ROTOR_STOPPED); w->random_bits = VehicleRandomBits(); /* Use rotor's air.state to store the rotor animation frame */ w->state = HRS_ROTOR_STOPPED; @@ -497,7 +497,7 @@ static void HelicopterTickHandler(Aircraft *v) if (spd == 0) { u->state = HRS_ROTOR_STOPPED; GetRotorImage(v, EIT_ON_MAP, &seq); - if (u->sprite_seq == seq) return; + if (u->sprite_cache.sprite_seq == seq) return; } else if (tick >= spd) { u->tick_counter = 0; u->state++; @@ -507,7 +507,7 @@ static void HelicopterTickHandler(Aircraft *v) return; } - u->sprite_seq = seq; + u->sprite_cache.sprite_seq = seq; u->UpdatePositionAndViewport(); } @@ -528,7 +528,7 @@ void SetAircraftPosition(Aircraft *v, int x, int y, int z) v->UpdatePosition(); v->UpdateViewport(true, false); if (v->subtype == AIR_HELICOPTER) { - GetRotorImage(v, EIT_ON_MAP, &v->Next()->Next()->sprite_seq); + GetRotorImage(v, EIT_ON_MAP, &v->Next()->Next()->sprite_cache.sprite_seq); } Aircraft *u = v->Next(); @@ -540,7 +540,7 @@ void SetAircraftPosition(Aircraft *v, int x, int y, int z) safe_y = Clamp(u->y_pos, 0, MapMaxY() * TILE_SIZE); u->z_pos = GetSlopePixelZ(safe_x, safe_y); - u->sprite_seq.CopyWithoutPalette(v->sprite_seq); // the shadow is never coloured + u->sprite_cache.sprite_seq.CopyWithoutPalette(v->sprite_cache.sprite_seq); // the shadow is never coloured u->UpdatePositionAndViewport(); @@ -1278,7 +1278,7 @@ void Aircraft::MarkDirty() this->colourmap = PAL_NONE; this->UpdateViewport(true, false); if (this->subtype == AIR_HELICOPTER) { - GetRotorImage(this, EIT_ON_MAP, &this->Next()->Next()->sprite_seq); + GetRotorImage(this, EIT_ON_MAP, &this->Next()->Next()->sprite_cache.sprite_seq); } } diff --git a/src/articulated_vehicles.cpp b/src/articulated_vehicles.cpp index 4f42c6955c..bdca9a5070 100644 --- a/src/articulated_vehicles.cpp +++ b/src/articulated_vehicles.cpp @@ -439,7 +439,7 @@ void AddArticulatedParts(Vehicle *first) v->max_age = 0; v->engine_type = engine_type; v->value = 0; - v->sprite_seq.Set(SPR_IMG_QUERY); + v->sprite_cache.sprite_seq.Set(SPR_IMG_QUERY); v->random_bits = VehicleRandomBits(); if (flip_image) v->spritenum++; diff --git a/src/disaster_vehicle.cpp b/src/disaster_vehicle.cpp index 1244f99aba..a6059b2440 100644 --- a/src/disaster_vehicle.cpp +++ b/src/disaster_vehicle.cpp @@ -110,7 +110,7 @@ void DisasterVehicle::UpdateImage() { SpriteID img = this->image_override; if (img == 0) img = _disaster_images[this->subtype][this->direction]; - this->sprite_seq.Set(img); + this->sprite_cache.sprite_seq.Set(img); } /** @@ -498,7 +498,7 @@ static bool DisasterTick_Helicopter_Rotors(DisasterVehicle *v) v->tick_counter++; if (HasBit(v->tick_counter, 0)) return true; - SpriteID &cur_image = v->sprite_seq.seq[0].sprite; + SpriteID &cur_image = v->sprite_cache.sprite_seq.seq[0].sprite; if (++cur_image > SPR_ROTOR_MOVING_3) cur_image = SPR_ROTOR_MOVING_1; v->UpdatePositionAndViewport(); diff --git a/src/effectvehicle.cpp b/src/effectvehicle.cpp index 82054acc66..d92999a66b 100644 --- a/src/effectvehicle.cpp +++ b/src/effectvehicle.cpp @@ -28,8 +28,8 @@ */ static bool IncrementSprite(EffectVehicle *v, SpriteID last) { - if (v->sprite_seq.seq[0].sprite != last) { - v->sprite_seq.seq[0].sprite++; + if (v->sprite_cache.sprite_seq.seq[0].sprite != last) { + v->sprite_cache.sprite_seq.seq[0].sprite++; return true; } else { return false; @@ -39,7 +39,7 @@ static bool IncrementSprite(EffectVehicle *v, SpriteID last) static void ChimneySmokeInit(EffectVehicle *v) { uint32 r = Random(); - v->sprite_seq.Set(SPR_CHIMNEY_SMOKE_0 + GB(r, 0, 3)); + v->sprite_cache.sprite_seq.Set(SPR_CHIMNEY_SMOKE_0 + GB(r, 0, 3)); v->progress = GB(r, 16, 3); } @@ -55,7 +55,7 @@ static bool ChimneySmokeTick(EffectVehicle *v) } if (!IncrementSprite(v, SPR_CHIMNEY_SMOKE_7)) { - v->sprite_seq.Set(SPR_CHIMNEY_SMOKE_0); + v->sprite_cache.sprite_seq.Set(SPR_CHIMNEY_SMOKE_0); } v->progress = 7; v->UpdatePositionAndViewport(); @@ -66,7 +66,7 @@ static bool ChimneySmokeTick(EffectVehicle *v) static void SteamSmokeInit(EffectVehicle *v) { - v->sprite_seq.Set(SPR_STEAM_SMOKE_0); + v->sprite_cache.sprite_seq.Set(SPR_STEAM_SMOKE_0); v->progress = 12; } @@ -96,7 +96,7 @@ static bool SteamSmokeTick(EffectVehicle *v) static void DieselSmokeInit(EffectVehicle *v) { - v->sprite_seq.Set(SPR_DIESEL_SMOKE_0); + v->sprite_cache.sprite_seq.Set(SPR_DIESEL_SMOKE_0); v->progress = 0; } @@ -120,7 +120,7 @@ static bool DieselSmokeTick(EffectVehicle *v) static void ElectricSparkInit(EffectVehicle *v) { - v->sprite_seq.Set(SPR_ELECTRIC_SPARK_0); + v->sprite_cache.sprite_seq.Set(SPR_ELECTRIC_SPARK_0); v->progress = 1; } @@ -143,7 +143,7 @@ static bool ElectricSparkTick(EffectVehicle *v) static void SmokeInit(EffectVehicle *v) { - v->sprite_seq.Set(SPR_SMOKE_0); + v->sprite_cache.sprite_seq.Set(SPR_SMOKE_0); v->progress = 12; } @@ -173,7 +173,7 @@ static bool SmokeTick(EffectVehicle *v) static void ExplosionLargeInit(EffectVehicle *v) { - v->sprite_seq.Set(SPR_EXPLOSION_LARGE_0); + v->sprite_cache.sprite_seq.Set(SPR_EXPLOSION_LARGE_0); v->progress = 0; } @@ -193,7 +193,7 @@ static bool ExplosionLargeTick(EffectVehicle *v) static void BreakdownSmokeInit(EffectVehicle *v) { - v->sprite_seq.Set(SPR_BREAKDOWN_SMOKE_0); + v->sprite_cache.sprite_seq.Set(SPR_BREAKDOWN_SMOKE_0); v->progress = 0; } @@ -202,7 +202,7 @@ static bool BreakdownSmokeTick(EffectVehicle *v) v->progress++; if ((v->progress & 7) == 0) { if (!IncrementSprite(v, SPR_BREAKDOWN_SMOKE_3)) { - v->sprite_seq.Set(SPR_BREAKDOWN_SMOKE_0); + v->sprite_cache.sprite_seq.Set(SPR_BREAKDOWN_SMOKE_0); } v->UpdatePositionAndViewport(); } @@ -218,7 +218,7 @@ static bool BreakdownSmokeTick(EffectVehicle *v) static void ExplosionSmallInit(EffectVehicle *v) { - v->sprite_seq.Set(SPR_EXPLOSION_SMALL_0); + v->sprite_cache.sprite_seq.Set(SPR_EXPLOSION_SMALL_0); v->progress = 0; } @@ -238,7 +238,7 @@ static bool ExplosionSmallTick(EffectVehicle *v) static void BulldozerInit(EffectVehicle *v) { - v->sprite_seq.Set(SPR_BULLDOZER_NE); + v->sprite_cache.sprite_seq.Set(SPR_BULLDOZER_NE); v->progress = 0; v->animation_state = 0; v->animation_substate = 0; @@ -289,7 +289,7 @@ static bool BulldozerTick(EffectVehicle *v) if ((v->progress & 7) == 0) { const BulldozerMovement *b = &_bulldozer_movement[v->animation_state]; - v->sprite_seq.Set(SPR_BULLDOZER_NE + b->image); + v->sprite_cache.sprite_seq.Set(SPR_BULLDOZER_NE + b->image); v->x_pos += _inc_by_dir[b->direction].x; v->y_pos += _inc_by_dir[b->direction].y; @@ -311,7 +311,7 @@ static bool BulldozerTick(EffectVehicle *v) static void BubbleInit(EffectVehicle *v) { - v->sprite_seq.Set(SPR_BUBBLE_GENERATE_0); + v->sprite_cache.sprite_seq.Set(SPR_BUBBLE_GENERATE_0); v->spritenum = 0; v->progress = 0; } @@ -474,8 +474,8 @@ static bool BubbleTick(EffectVehicle *v) if ((v->progress & 3) != 0) return true; if (v->spritenum == 0) { - v->sprite_seq.seq[0].sprite++; - if (v->sprite_seq.seq[0].sprite < SPR_BUBBLE_GENERATE_3) { + v->sprite_cache.sprite_seq.seq[0].sprite++; + if (v->sprite_cache.sprite_seq.seq[0].sprite < SPR_BUBBLE_GENERATE_3) { v->UpdatePositionAndViewport(); return true; } @@ -520,7 +520,7 @@ static bool BubbleTick(EffectVehicle *v) v->x_pos += b->x; v->y_pos += b->y; v->z_pos += b->z; - v->sprite_seq.Set(SPR_BUBBLE_0 + b->image); + v->sprite_cache.sprite_seq.Set(SPR_BUBBLE_0 + b->image); v->UpdatePositionAndViewport(); diff --git a/src/roadveh_cmd.cpp b/src/roadveh_cmd.cpp index 0e490fbc21..68b81ad0d5 100644 --- a/src/roadveh_cmd.cpp +++ b/src/roadveh_cmd.cpp @@ -301,7 +301,7 @@ CommandCost CmdBuildRoadVehicle(TileIndex tile, DoCommandFlag flags, const Engin v->date_of_last_service = _date; v->build_year = _cur_year; - v->sprite_seq.Set(SPR_IMG_QUERY); + v->sprite_cache.sprite_seq.Set(SPR_IMG_QUERY); v->random_bits = VehicleRandomBits(); v->SetFrontEngine(); diff --git a/src/saveload/oldloader_sl.cpp b/src/saveload/oldloader_sl.cpp index fa76857311..ff4e6191e9 100644 --- a/src/saveload/oldloader_sl.cpp +++ b/src/saveload/oldloader_sl.cpp @@ -1153,7 +1153,7 @@ static const OldChunks vehicle_chunk[] = { OCL_SVAR( OC_UINT8, Vehicle, owner ), OCL_SVAR( OC_TILE, Vehicle, tile ), - OCL_SVAR( OC_FILE_U16 | OC_VAR_U32, Vehicle, sprite_seq.seq[0].sprite ), + OCL_SVAR( OC_FILE_U16 | OC_VAR_U32, Vehicle, sprite_cache.sprite_seq.seq[0].sprite ), OCL_NULL( 8 ), ///< Vehicle sprite box, calculated automatically @@ -1246,7 +1246,7 @@ bool LoadOldVehicle(LoadgameState *ls, int num) if (v == nullptr) continue; v->refit_cap = v->cargo_cap; - SpriteID sprite = v->sprite_seq.seq[0].sprite; + SpriteID sprite = v->sprite_cache.sprite_seq.seq[0].sprite; /* no need to override other sprites */ if (IsInsideMM(sprite, 1460, 1465)) { sprite += 580; // aircraft smoke puff @@ -1257,7 +1257,7 @@ bool LoadOldVehicle(LoadgameState *ls, int num) } else if (IsInsideMM(sprite, 2516, 2539)) { sprite += 1385; // rotor or disaster-related vehicles } - v->sprite_seq.seq[0].sprite = sprite; + v->sprite_cache.sprite_seq.seq[0].sprite = sprite; switch (v->type) { case VEH_TRAIN: { diff --git a/src/saveload/vehicle_sl.cpp b/src/saveload/vehicle_sl.cpp index 321ad53a69..6715eb97de 100644 --- a/src/saveload/vehicle_sl.cpp +++ b/src/saveload/vehicle_sl.cpp @@ -445,21 +445,21 @@ void AfterLoadVehicles(bool part_of_load) case VEH_ROAD: case VEH_TRAIN: case VEH_SHIP: - v->GetImage(v->direction, EIT_ON_MAP, &v->sprite_seq); + v->GetImage(v->direction, EIT_ON_MAP, &v->sprite_cache.sprite_seq); break; case VEH_AIRCRAFT: if (Aircraft::From(v)->IsNormalAircraft()) { - v->GetImage(v->direction, EIT_ON_MAP, &v->sprite_seq); + v->GetImage(v->direction, EIT_ON_MAP, &v->sprite_cache.sprite_seq); /* The plane's shadow will have the same image as the plane, but no colour */ Vehicle *shadow = v->Next(); - shadow->sprite_seq.CopyWithoutPalette(v->sprite_seq); + shadow->sprite_cache.sprite_seq.CopyWithoutPalette(v->sprite_cache.sprite_seq); /* In the case of a helicopter we will update the rotor sprites */ if (v->subtype == AIR_HELICOPTER) { Vehicle *rotor = shadow->Next(); - GetRotorImage(Aircraft::From(v), EIT_ON_MAP, &rotor->sprite_seq); + GetRotorImage(Aircraft::From(v), EIT_ON_MAP, &rotor->sprite_cache.sprite_seq); } UpdateAircraftCache(Aircraft::From(v), true); @@ -808,7 +808,7 @@ const SaveLoad *GetVehicleDescription(VehicleType vt) SLE_CONDVAR(Vehicle, z_pos, SLE_FILE_U8 | SLE_VAR_I32, SL_MIN_VERSION, SLV_164), SLE_CONDVAR(Vehicle, z_pos, SLE_INT32, SLV_164, SL_MAX_VERSION), - SLE_VAR(Vehicle, sprite_seq.seq[0].sprite, SLE_FILE_U16 | SLE_VAR_U32), + SLE_VAR(Vehicle, sprite_cache.sprite_seq.seq[0].sprite, SLE_FILE_U16 | SLE_VAR_U32), SLE_CONDNULL(5, SL_MIN_VERSION, SLV_59), SLE_VAR(Vehicle, progress, SLE_UINT8), SLE_VAR(Vehicle, vehstatus, SLE_UINT8), @@ -848,7 +848,7 @@ const SaveLoad *GetVehicleDescription(VehicleType vt) SLE_CONDVAR(Vehicle, current_order.dest, SLE_FILE_U8 | SLE_VAR_U16, SL_MIN_VERSION, SLV_5), SLE_CONDVAR(Vehicle, current_order.dest, SLE_UINT16, SLV_5, SL_MAX_VERSION), - SLE_VAR(Vehicle, sprite_seq.seq[0].sprite, SLE_FILE_U16 | SLE_VAR_U32), + SLE_VAR(Vehicle, sprite_cache.sprite_seq.seq[0].sprite, SLE_FILE_U16 | SLE_VAR_U32), SLE_CONDVAR(Vehicle, age, SLE_FILE_U16 | SLE_VAR_I32, SL_MIN_VERSION, SLV_31), SLE_CONDVAR(Vehicle, age, SLE_INT32, SLV_31, SL_MAX_VERSION), SLE_VAR(Vehicle, tick_counter, SLE_UINT8), diff --git a/src/ship_cmd.cpp b/src/ship_cmd.cpp index 28e6be4f34..f507724700 100644 --- a/src/ship_cmd.cpp +++ b/src/ship_cmd.cpp @@ -864,7 +864,7 @@ CommandCost CmdBuildShip(TileIndex tile, DoCommandFlag flags, const Engine *e, u v->SetServiceInterval(Company::Get(_current_company)->settings.vehicle.servint_ships); v->date_of_last_service = _date; v->build_year = _cur_year; - v->sprite_seq.Set(SPR_IMG_QUERY); + v->sprite_cache.sprite_seq.Set(SPR_IMG_QUERY); v->random_bits = VehicleRandomBits(); v->UpdateCache(); diff --git a/src/train_cmd.cpp b/src/train_cmd.cpp index 71fec8cfbe..0c4a25eef4 100644 --- a/src/train_cmd.cpp +++ b/src/train_cmd.cpp @@ -624,7 +624,7 @@ static CommandCost CmdBuildRailWagon(TileIndex tile, DoCommandFlag flags, const v->date_of_last_service = _date; v->build_year = _cur_year; - v->sprite_seq.Set(SPR_IMG_QUERY); + v->sprite_cache.sprite_seq.Set(SPR_IMG_QUERY); v->random_bits = VehicleRandomBits(); v->group_id = DEFAULT_GROUP; @@ -690,7 +690,7 @@ static void AddRearEngineToMultiheadedTrain(Train *v) u->engine_type = v->engine_type; u->date_of_last_service = v->date_of_last_service; u->build_year = v->build_year; - u->sprite_seq.Set(SPR_IMG_QUERY); + u->sprite_cache.sprite_seq.Set(SPR_IMG_QUERY); u->random_bits = VehicleRandomBits(); v->SetMultiheaded(); u->SetMultiheaded(); @@ -756,7 +756,7 @@ CommandCost CmdBuildRailVehicle(TileIndex tile, DoCommandFlag flags, const Engin v->SetServiceInterval(Company::Get(_current_company)->settings.vehicle.servint_trains); v->date_of_last_service = _date; v->build_year = _cur_year; - v->sprite_seq.Set(SPR_IMG_QUERY); + v->sprite_cache.sprite_seq.Set(SPR_IMG_QUERY); v->random_bits = VehicleRandomBits(); if (e->flags & ENGINE_EXCLUSIVE_PREVIEW) SetBit(v->vehicle_flags, VF_BUILT_AS_PROTOTYPE); diff --git a/src/vehicle.cpp b/src/vehicle.cpp index 8dead6ceea..89cabe20d1 100644 --- a/src/vehicle.cpp +++ b/src/vehicle.cpp @@ -1094,25 +1094,19 @@ static void DoDrawVehicle(const Vehicle *v) /* * If the vehicle sprite was not updated despite further viewport changes, we need * to update it before drawing. - * - * I'm not keen on casting to mutable - it's the approach JGR uses in JGRPP but I - * wonder if there's a cleaner option (even though we can only take the decision - * whether to update once we already know the vehicle is going to appear in a - * viewport) */ - if (v->rstate.sprite_has_viewport_changes) { - Vehicle* v_mutable = const_cast(v); + if (v->sprite_cache.sprite_has_viewport_changes) { VehicleSpriteSeq seq; - v_mutable->GetImage(v_mutable->direction, EIT_ON_MAP, &seq); - v_mutable->sprite_seq = seq; - v_mutable->rstate.sprite_has_viewport_changes = false; + v->GetImage(v->direction, EIT_ON_MAP, &seq); + v->sprite_cache.sprite_seq = seq; + v->sprite_cache.sprite_has_viewport_changes = false; } StartSpriteCombine(); - for (uint i = 0; i < v->sprite_seq.count; ++i) { - PaletteID pal2 = v->sprite_seq.seq[i].pal; + for (uint i = 0; i < v->sprite_cache.sprite_seq.count; ++i) { + PaletteID pal2 = v->sprite_cache.sprite_seq.seq[i].pal; if (!pal2 || (v->vehstatus & VS_CRASHED)) pal2 = pal; - AddSortableSpriteToDraw(v->sprite_seq.seq[i].sprite, pal2, v->x_pos + v->x_offs, v->y_pos + v->y_offs, + AddSortableSpriteToDraw(v->sprite_cache.sprite_seq.seq[i].sprite, pal2, v->x_pos + v->x_offs, v->y_pos + v->y_offs, v->x_extent, v->y_extent, v->z_extent, v->z_pos, shadowed, v->x_bb_offs, v->y_bb_offs); } EndSpriteCombine(); @@ -1175,10 +1169,10 @@ void ViewportAddVehicles(DrawPixelInfo *dpi) * are part of a newgrf vehicle set which changes bounding boxes within a * single vehicle direction. * - * TODO: is there a cleaner solution than casting to a mutable type? + * TODO: this will consider too many false positives, use the bounding box + * information or something which better narrows down the candidates. */ - Vehicle* v_mutable = const_cast(v); - v_mutable->rstate.is_viewport_candidate = true; + v->sprite_cache.is_viewport_candidate = true; } v = v->hash_viewport_next; @@ -1605,7 +1599,7 @@ void Vehicle::UpdatePosition() void Vehicle::UpdateViewport(bool dirty) { Rect new_coord; - this->sprite_seq.GetBounds(&new_coord); + this->sprite_cache.sprite_seq.GetBounds(&new_coord); Point pt = RemapCoords(this->x_pos + this->x_offs, this->y_pos + this->y_offs, this->z_pos); new_coord.left += pt.x; diff --git a/src/vehicle_base.h b/src/vehicle_base.h index 8ef316df17..d6a02cc0c7 100644 --- a/src/vehicle_base.h +++ b/src/vehicle_base.h @@ -124,13 +124,6 @@ struct VehicleCache { byte cached_vis_effect; ///< Visual effect to show (see #VisualEffect) }; -/** Values for controlling how a vehicle's sprites are refreshed */ -struct VehicleSpriteRefreshState { - Direction last_direction; ///< Last direction we obtained sprites for - bool is_viewport_candidate; ///< The vehicle has been in the hash for a shown viewport recently - bool sprite_has_viewport_changes; ///< There have been viewport changes since the sprite was last updated -}; - /** Sprite sequence for a vehicle part. */ struct VehicleSpriteSeq { PalSpriteID seq[4]; @@ -188,6 +181,17 @@ struct VehicleSpriteSeq { void Draw(int x, int y, PaletteID default_pal, bool force_pal) const; }; +/** + * Cache for vehicle sprites and values relating to whether they should be updated before drawing, + * or calculating the viewport. + */ +struct MutableSpriteCache { + Direction last_direction; ///< Last direction we obtained sprites for + mutable bool is_viewport_candidate; ///< The vehicle has been in the hash for a shown viewport recently + mutable bool sprite_has_viewport_changes; ///< There have been viewport changes since the sprite was last updated + mutable VehicleSpriteSeq sprite_seq; ///< Vehicle appearance. +}; + /** A vehicle pool for a little over 1 million vehicles. */ typedef Pool VehiclePool; extern VehiclePool _vehicle_pool; @@ -282,7 +286,6 @@ public: * 0xff == reserved for another custom sprite */ byte spritenum; - VehicleSpriteSeq sprite_seq; ///< Vehicle appearance. byte x_extent; ///< x-extent of vehicle bounding box byte y_extent; ///< y-extent of vehicle bounding box byte z_extent; ///< z-extent of vehicle bounding box @@ -334,7 +337,7 @@ public: NewGRFCache grf_cache; ///< Cache of often used calculated NewGRF values VehicleCache vcache; ///< Cache of often used vehicle values. - VehicleSpriteRefreshState rstate; ///< Values relating to whether sprites should be refreshed, see #VehicleSpriteRefreshState + MutableSpriteCache sprite_cache; ///< Cache of sprites and values related to recalculating them, see #MutableSpriteCache Vehicle(VehicleType type = VEH_INVALID); @@ -1044,7 +1047,7 @@ struct SpecializedVehicle : public Vehicle { */ inline SpecializedVehicle() : Vehicle(Type) { - this->sprite_seq.count = 1; + this->sprite_cache.sprite_seq.count = 1; } /** @@ -1193,24 +1196,24 @@ struct SpecializedVehicle : public Vehicle { * there won't be enough change in bounding box or offsets to need * to resolve a new sprite. */ - if (this->direction != this->rstate.last_direction || this->rstate.is_viewport_candidate) { + if (this->direction != this->sprite_cache.last_direction || this->sprite_cache.is_viewport_candidate) { VehicleSpriteSeq seq; ((T*)this)->T::GetImage(this->direction, EIT_ON_MAP, &seq); - if (this->sprite_seq != seq) { + if (this->sprite_cache.sprite_seq != seq) { sprite_has_changed = true; - this->sprite_seq = seq; + this->sprite_cache.sprite_seq = seq; } - this->rstate.last_direction = this->direction; - this->rstate.is_viewport_candidate = false; - this->rstate.sprite_has_viewport_changes = false; + this->sprite_cache.last_direction = this->direction; + this->sprite_cache.is_viewport_candidate = false; + this->sprite_cache.sprite_has_viewport_changes = false; } else { /* * Changes could still be relevant when we render the vehicle even if * they don't alter the bounding box */ - this->rstate.sprite_has_viewport_changes = true; + this->sprite_cache.sprite_has_viewport_changes = true; } if (force_update || sprite_has_changed) { From 5728f9c7d09327ddc11c779b951688ea32b4b725 Mon Sep 17 00:00:00 2001 From: Matt Kimber Date: Sun, 3 Jan 2021 14:02:53 +0000 Subject: [PATCH 05/27] Codechange: consider vehicle co-ordinates when identifying viewport candidate as using only the hash generates false positives --- src/vehicle.cpp | 22 ++++++++++++++-------- src/vehicle_base.h | 10 +++++----- 2 files changed, 19 insertions(+), 13 deletions(-) diff --git a/src/vehicle.cpp b/src/vehicle.cpp index 89cabe20d1..e358421186 100644 --- a/src/vehicle.cpp +++ b/src/vehicle.cpp @@ -1124,11 +1124,15 @@ void ViewportAddVehicles(DrawPixelInfo *dpi) const int t = dpi->top; const int b = dpi->top + dpi->height; + /* Border size of MAX_VEHICLE_PIXEL_xy */ + const int xb = MAX_VEHICLE_PIXEL_X * ZOOM_LVL_BASE; + const int yb = MAX_VEHICLE_PIXEL_Y * ZOOM_LVL_BASE; + /* The hash area to scan */ int xl, xu, yl, yu; - if (dpi->width + (MAX_VEHICLE_PIXEL_X * ZOOM_LVL_BASE) < GEN_HASHX_SIZE) { - xl = GEN_HASHX(l - MAX_VEHICLE_PIXEL_X * ZOOM_LVL_BASE); + if (dpi->width + xb < GEN_HASHX_SIZE) { + xl = GEN_HASHX(l - xb); xu = GEN_HASHX(r); } else { /* scan whole hash row */ @@ -1136,8 +1140,8 @@ void ViewportAddVehicles(DrawPixelInfo *dpi) xu = GEN_HASHX_MASK; } - if (dpi->height + (MAX_VEHICLE_PIXEL_Y * ZOOM_LVL_BASE) < GEN_HASHY_SIZE) { - yl = GEN_HASHY(t - MAX_VEHICLE_PIXEL_Y * ZOOM_LVL_BASE); + if (dpi->height + yb < GEN_HASHY_SIZE) { + yl = GEN_HASHY(t - yb); yu = GEN_HASHY(b); } else { /* scan whole column */ @@ -1158,9 +1162,14 @@ void ViewportAddVehicles(DrawPixelInfo *dpi) b >= v->coord.top) { DoDrawVehicle(v); } - else { + else if (l <= v->coord.right + xb && + t <= v->coord.bottom + yb && + r >= v->coord.left - xb && + b >= v->coord.top - yb) + { /* * Indicate that this vehicle was considered for rendering in a viewport, + * is within the bounds where a sprite could be valid for rendering * and we therefore need to update sprites more frequently in case a callback * will change the bounding box to one which will cause the sprite to be * displayed. @@ -1168,9 +1177,6 @@ void ViewportAddVehicles(DrawPixelInfo *dpi) * This reduces the chances of flicker when sprites enter the screen, if they * are part of a newgrf vehicle set which changes bounding boxes within a * single vehicle direction. - * - * TODO: this will consider too many false positives, use the bounding box - * information or something which better narrows down the candidates. */ v->sprite_cache.is_viewport_candidate = true; } diff --git a/src/vehicle_base.h b/src/vehicle_base.h index d6a02cc0c7..24facfb3e4 100644 --- a/src/vehicle_base.h +++ b/src/vehicle_base.h @@ -186,10 +186,10 @@ struct VehicleSpriteSeq { * or calculating the viewport. */ struct MutableSpriteCache { - Direction last_direction; ///< Last direction we obtained sprites for - mutable bool is_viewport_candidate; ///< The vehicle has been in the hash for a shown viewport recently - mutable bool sprite_has_viewport_changes; ///< There have been viewport changes since the sprite was last updated - mutable VehicleSpriteSeq sprite_seq; ///< Vehicle appearance. + Direction last_direction; ///< Last direction we obtained sprites for + bool is_viewport_candidate; ///< The vehicle has been in the hash for a shown viewport recently + bool sprite_has_viewport_changes; ///< There have been viewport changes since the sprite was last updated + VehicleSpriteSeq sprite_seq; ///< Vehicle appearance. }; /** A vehicle pool for a little over 1 million vehicles. */ @@ -337,7 +337,7 @@ public: NewGRFCache grf_cache; ///< Cache of often used calculated NewGRF values VehicleCache vcache; ///< Cache of often used vehicle values. - MutableSpriteCache sprite_cache; ///< Cache of sprites and values related to recalculating them, see #MutableSpriteCache + mutable MutableSpriteCache sprite_cache; ///< Cache of sprites and values related to recalculating them, see #MutableSpriteCache Vehicle(VehicleType type = VEH_INVALID); From 619d714923b0f8119afc9d3e1402fb1feeecb586 Mon Sep 17 00:00:00 2001 From: Charles Pigott Date: Sun, 27 Dec 2020 17:07:48 +0000 Subject: [PATCH 06/27] Fix #8437: Planes landing at non-rectangular airports could be drawn at the wrong height Only the rotated intercontinental airport, don't get excited --- src/aircraft_cmd.cpp | 28 +++++++++++++++++++--------- 1 file changed, 19 insertions(+), 9 deletions(-) diff --git a/src/aircraft_cmd.cpp b/src/aircraft_cmd.cpp index c381fae977..10bdeddf49 100644 --- a/src/aircraft_cmd.cpp +++ b/src/aircraft_cmd.cpp @@ -1092,6 +1092,19 @@ static bool AircraftController(Aircraft *v) z = GetAircraftFlightLevel(v); } + /* NewGRF airports (like a rotated intercontinental from OpenGFX+Airports) can be non-rectangular + * and their primary (north-most) tile does not have to be part of the airport. + * As such, the height of the primary tile can be different from the rest of the airport. + * Given we are landing/breaking, and as such are not a helicopter, we know that there has to be a hangar. + * We also know that the airport itself has to be completely flat (otherwise it is not a valid airport). + * Therefore, use the height of this hangar to calculate our z-value. */ + int airport_z = v->z_pos; + if ((amd.flag & (AMED_LAND | AMED_BRAKE)) && st != nullptr) { + assert(st->airport.HasHangar()); + TileIndex hangar_tile = st->airport.GetHangarTile(0); + airport_z = TilePixelHeight(hangar_tile) + 1; // To avoid clashing with the shadow + } + if (amd.flag & AMED_LAND) { if (st->airport.tile == INVALID_TILE) { /* Airport has been removed, abort the landing procedure */ @@ -1103,27 +1116,24 @@ static bool AircraftController(Aircraft *v) continue; } - int curz = GetSlopePixelZ(x + amd.x, y + amd.y) + 1; - /* We're not flying below our destination, right? */ - assert(curz <= z); + assert(airport_z <= z); int t = max(1U, dist - 4); - int delta = z - curz; + int delta = z - airport_z; /* Only start lowering when we're sufficiently close for a 1:1 glide */ if (delta >= t) { - z -= CeilDiv(z - curz, t); + z -= CeilDiv(z - airport_z, t); } - if (z < curz) z = curz; + if (z < airport_z) z = airport_z; } /* We've landed. Decrease speed when we're reaching end of runway. */ if (amd.flag & AMED_BRAKE) { - int curz = GetSlopePixelZ(x, y) + 1; - if (z > curz) { + if (z > airport_z) { z--; - } else if (z < curz) { + } else if (z < airport_z) { z++; } From e21302f4811ec62a6d6abfa89ad34afba4a3ab4a Mon Sep 17 00:00:00 2001 From: Charles Pigott Date: Mon, 28 Dec 2020 10:26:57 +0000 Subject: [PATCH 07/27] Fix #8437: Crash when using certain heliports with rotated airports --- src/aircraft_cmd.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/aircraft_cmd.cpp b/src/aircraft_cmd.cpp index 10bdeddf49..e03bf1bdf3 100644 --- a/src/aircraft_cmd.cpp +++ b/src/aircraft_cmd.cpp @@ -949,7 +949,14 @@ static bool AircraftController(Aircraft *v) return false; } - /* Vehicle is now at the airport. */ + /* Vehicle is now at the airport. + * Helicopter has arrived at the target landing pad, so the current position is also where it should land. + * Except for Oilrigs which are special due to being a 1x1 station, and helicopters land outside it. */ + if (st->airport.type != AT_OILRIG) { + x = v->x_pos; + y = v->y_pos; + tile = TileVirtXY(x, y); + } v->tile = tile; /* Find altitude of landing position. */ From c017a3662a1e11be5ec4ea88c916488a1e8a2bca Mon Sep 17 00:00:00 2001 From: gooball <67861995+UnsuspiciousGooball@users.noreply.github.com> Date: Tue, 5 Jan 2021 11:45:07 +0100 Subject: [PATCH 08/27] Change: converting town-owned road types now require town rating (#8457) --- src/road_cmd.cpp | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/road_cmd.cpp b/src/road_cmd.cpp index d0104cb99a..79048b9b59 100644 --- a/src/road_cmd.cpp +++ b/src/road_cmd.cpp @@ -2388,6 +2388,17 @@ CommandCost CmdConvertRoad(TileIndex tile, DoCommandFlag flags, uint32 p1, uint3 } } + /* Base the ability to replace town roads and bridges on the town's + * acceptance of destructive actions. */ + if (owner == OWNER_TOWN) { + Town *t = ClosestTownFromTile(tile, _settings_game.economy.dist_local_authority); + CommandCost ret = CheckforTownRating(DC_NONE, t, tt == MP_TUNNELBRIDGE ? TUNNELBRIDGE_REMOVE : ROAD_REMOVE); + if (ret.Failed()) { + error = ret; + continue; + } + } + /* Vehicle on the tile when not converting normal <-> powered * Tunnels and bridges have special check later */ if (tt != MP_TUNNELBRIDGE) { From bb28ff7226938f0882b67e2cffa0126ae26a5b5d Mon Sep 17 00:00:00 2001 From: Patric Stout Date: Tue, 5 Jan 2021 12:36:57 +0100 Subject: [PATCH 09/27] Codechange: DC_NO_RAIL_OVERLAP is a remnant of the OldAI. (#8496) The OldAI was removed in 2009. Pretty sure we can remove this flag now too. --- src/command_type.h | 2 +- src/rail_cmd.cpp | 8 ++------ 2 files changed, 3 insertions(+), 7 deletions(-) diff --git a/src/command_type.h b/src/command_type.h index 0620b96b63..2419d7b312 100644 --- a/src/command_type.h +++ b/src/command_type.h @@ -349,7 +349,7 @@ enum DoCommandFlag { DC_AUTO = 0x002, ///< don't allow building on structures DC_QUERY_COST = 0x004, ///< query cost only, don't build. DC_NO_WATER = 0x008, ///< don't allow building on water - DC_NO_RAIL_OVERLAP = 0x010, ///< don't allow overlap of rails (used in buildrail) + // 0x010 is unused DC_NO_TEST_TOWN_RATING = 0x020, ///< town rating does not disallow you from building DC_BANKRUPT = 0x040, ///< company bankrupts, skip money check, skip vehicle on tile check in some cases DC_AUTOREPLACE = 0x080, ///< autoreplace/autorenew is in progress, this shall disable vehicle limits when building, and ignore certain restrictions when undoing things (like vehicle attach callback) diff --git a/src/rail_cmd.cpp b/src/rail_cmd.cpp index a714415326..34ad07d520 100644 --- a/src/rail_cmd.cpp +++ b/src/rail_cmd.cpp @@ -263,12 +263,8 @@ static CommandCost CheckTrackCombination(TileIndex tile, TrackBits to_build, uin } /* Let's see if we may build this */ - if ((flags & DC_NO_RAIL_OVERLAP) || HasSignals(tile)) { - /* If we are not allowed to overlap (flag is on for ai companies or we have - * signals on the tile), check that */ - if (future != TRACK_BIT_HORZ && future != TRACK_BIT_VERT) { - return_cmd_error((flags & DC_NO_RAIL_OVERLAP) ? STR_ERROR_IMPOSSIBLE_TRACK_COMBINATION : STR_ERROR_MUST_REMOVE_SIGNALS_FIRST); - } + if (HasSignals(tile) && future != TRACK_BIT_HORZ && future != TRACK_BIT_VERT) { + return_cmd_error(STR_ERROR_MUST_REMOVE_SIGNALS_FIRST); } /* Normally, we may overlap and any combination is valid */ return CommandCost(); From f2fa2a14d730f0f8603d043f0271728d4d827c37 Mon Sep 17 00:00:00 2001 From: Patric Stout Date: Tue, 5 Jan 2021 19:00:05 +0100 Subject: [PATCH 10/27] Fix: allow input of numbers greater than INT32_MAX for GiveMoney (#8499) Based on patch by JGR. --- src/main_gui.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main_gui.cpp b/src/main_gui.cpp index 5877fb9387..f99cceaf19 100644 --- a/src/main_gui.cpp +++ b/src/main_gui.cpp @@ -73,7 +73,7 @@ void HandleOnEditText(const char *str) case 3: { // Give money, you can only give money in excess of loan const Company *c = Company::GetIfValid(_local_company); if (c == nullptr) break; - Money money = min(c->money - c->current_loan, (Money)(atoi(str) / _currency->rate)); + Money money = min(c->money - c->current_loan, (Money)(strtoull(str, nullptr, 10) / _currency->rate)); uint32 money_c = Clamp(ClampToI32(money), 0, 20000000); // Clamp between 20 million and 0 From 0fd2108f7ffe53faac468e82879e46c830df4038 Mon Sep 17 00:00:00 2001 From: translators Date: Tue, 5 Jan 2021 18:27:57 +0000 Subject: [PATCH 11/27] Update: Translations from eints persian: 24 changes by alisaffari97 --- src/lang/unfinished/persian.txt | 29 ++++++++++++++++++++++++----- 1 file changed, 24 insertions(+), 5 deletions(-) diff --git a/src/lang/unfinished/persian.txt b/src/lang/unfinished/persian.txt index 06632f810c..58ccc03949 100644 --- a/src/lang/unfinished/persian.txt +++ b/src/lang/unfinished/persian.txt @@ -225,6 +225,7 @@ STR_TOOLTIP_FILTER_CRITERIA :{BLACK}انتخ STR_BUTTON_SORT_BY :{BLACK}مرتب کردن بر اساس STR_BUTTON_LOCATION :{BLACK}مختصات STR_BUTTON_RENAME :{BLACK}نام گزاری +STR_BUTTON_CATCHMENT :{BLACK}تحت پوشش STR_TOOLTIP_CLOSE_WINDOW :{BLACK}بستن پنجره STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS :{BLACK}عنوان پنجره - پرای جابجا کردن پنجره این قسمت را بکشید. @@ -299,6 +300,7 @@ STR_SORT_BY_CARGO_CAPACITY :ظرفیت مح STR_SORT_BY_RANGE :بازه STR_SORT_BY_POPULATION :جمعیت STR_SORT_BY_RATING :نرخ +STR_SORT_BY_AVERAGE_PROFIT_LAST_YEAR :میانگین سود سال گذشته # Group by options for vehicle list @@ -461,6 +463,7 @@ STR_ABOUT_MENU_SEPARATOR : STR_ABOUT_MENU_TOGGLE_CONSOLE :باز و بسته کردن کنسول STR_ABOUT_MENU_AI_DEBUG :خطایابی هوش مصنوعی STR_ABOUT_MENU_SCREENSHOT :تصویر از بازی +STR_ABOUT_MENU_SHOW_FRAMERATE :نمایش دادن frame rate STR_ABOUT_MENU_ABOUT_OPENTTD :'OpenTTD' درباره STR_ABOUT_MENU_SPRITE_ALIGNER :تراز کردن تصویر گرافیکی STR_ABOUT_MENU_TOGGLE_BOUNDING_BOXES :باز/بسته کردن محدوده جعبه ها @@ -1459,6 +1462,7 @@ STR_INTRO_TOOLTIP_SUB_TROPICAL_LANDSCAPE :{BLACK}انتخ STR_INTRO_TOOLTIP_TOYLAND_LANDSCAPE :{BLACK}انتخاب «سرزمین اسباب بازی‌ها» برای سبک بازی STR_INTRO_TOOLTIP_GAME_OPTIONS :{BLACK}نشان دادن تنظیمات بازی +STR_INTRO_TOOLTIP_HIGHSCORE :{BLACK}نمایش جدول بالاترین امتیازات STR_INTRO_TOOLTIP_NEWGRF_SETTINGS :{BLACK}نمایش تنظیمات NewGRF STR_INTRO_TOOLTIP_ONLINE_CONTENT :{BLACK}بررسی وجود مجموعه ها و به روز رسانی های جدید در اینترنت STR_INTRO_TOOLTIP_SCRIPT_SETTINGS :{BLACK}نمایش تنظیمات هوش مصنوعی و اسکریپت های بازی @@ -1468,6 +1472,7 @@ STR_INTRO_TRANSLATION :{BLACK}این # Quit window STR_QUIT_CAPTION :{WHITE}خروج +STR_QUIT_ARE_YOU_SURE_YOU_WANT_TO_EXIT_OPENTTD :{YELLOW}آیا مطمئن هستی که میخواهی از OpenTTD خارج شوی؟ STR_QUIT_YES :{BLACK}بله STR_QUIT_NO :{BLACK}خیر @@ -2362,6 +2367,8 @@ STR_ABOUT_VERSION :{BLACK}OpenTTD STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-{STRING} The OpenTTD team # Framerate display window +STR_FRAMERATE_MEMORYUSE :{WHITE}حافظه +STR_FRAMERATE_MS_BAD :{RED}{DECIMAL} ms ############ Leave those lines in this order!! ############ End of leave-in-this-order ############ Leave those lines in this order!! @@ -2702,7 +2709,7 @@ STR_GOALS_COMPANY_TITLE :{BLACK}اهدا STR_GOALS_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}روی هدف کلیک کنید تا نمای اصلی را به مرکز صنایع/شهر/قطعه ببرد. Ctrl+Click یک نمای جدید از محل صنایع/شهر قطعه باز می کند # Goal question window -STR_GOAL_QUESTION_CAPTION_QUESTION :سوال +STR_GOAL_QUESTION_CAPTION_QUESTION :{BLACK}سوال ############ Start of Goal Question button list STR_GOAL_QUESTION_BUTTON_CANCEL :لغو @@ -2736,6 +2743,7 @@ STR_SUBSIDIES_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}روی # Story book window STR_STORY_BOOK_SPECTATOR_CAPTION :{WHITE}کتابچه راهنمای عمومی +STR_STORY_BOOK_SPECTATOR :کتاب داستان جهانی STR_STORY_BOOK_INVALID_GOAL_REF :{RED}رجوع به هدف نامعتبر # Station list window @@ -2765,6 +2773,7 @@ STR_STATION_VIEW_SUPPLY_RATINGS_TITLE :{BLACK}تولی STR_STATION_VIEW_CARGO_SUPPLY_RATING :{WHITE}{STRING}: {YELLOW}{COMMA} / {STRING} ({COMMA}%) STR_STATION_VIEW_GROUP :{BLACK}همگروه با +STR_STATION_VIEW_WAITING_STATION :ایستگاه: منتظر است STR_STATION_VIEW_FROM :{YELLOW}{CARGO_SHORT} از {STATION} STR_STATION_VIEW_VIA :{YELLOW}{CARGO_SHORT} ازطریق {STATION} STR_STATION_VIEW_TO :{YELLOW}{CARGO_SHORT} به {STATION} @@ -2924,6 +2933,7 @@ STR_BUY_VEHICLE_ROAD_VEHICLE_CAPTION :ماشین ها ############ range for vehicle availability starts STR_BUY_VEHICLE_TRAIN_ALL_CAPTION :وسایل ریل خط آهن +STR_BUY_VEHICLE_SHIP_CAPTION :کشتی های جدید STR_BUY_VEHICLE_AIRCRAFT_CAPTION :هواپیمای جدید ############ range for vehicle availability ends @@ -2938,6 +2948,7 @@ STR_BUY_VEHICLE_AIRCRAFT_LIST_TOOLTIP :{BLACK}لیست STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_BUTTON :{BLACK}ساخت وسیله نقلیه STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_VEHICLE_BUTTON :{BLACK}خرید وسیله نقلیه +STR_BUY_VEHICLE_SHIP_BUY_VEHICLE_BUTTON :{BLACK}خرید کشتی STR_BUY_VEHICLE_AIRCRAFT_BUY_VEHICLE_BUTTON :{BLACK}خرید هواپیما @@ -3041,6 +3052,7 @@ STR_REPLACE_VEHICLE_AVAILABLE_VEHICLES_TOOLTIP :{BLACK} ستو STR_REPLACE_HELP_STOP_BUTTON :{BLACK}برای توقف جایگزین کردن برای نوع انتخاب شده در سمت چپ کلیک کنید +STR_REPLACE_ENGINES :موتور ها STR_REPLACE_ELRAIL_VEHICLES :وسایل نقلیه ریلی برقی @@ -3227,9 +3239,11 @@ STR_TIMETABLE_CLEAR_TIME :{BLACK}پاک # AI debug window STR_AI_DEBUG :{WHITE}رفع اشکالات کد هوش مصنوعی STR_AI_DEBUG_NAME_TOOLTIP :{BLACK}نام کد +STR_AI_DEBUG_SETTINGS :{BLACK}تنظیمات STR_AI_DEBUG_RELOAD :{BLACK}بازگشایی مجدد هوش مصنوعی STR_AI_DEBUG_RELOAD_TOOLTIP :{BLACK}از بین بردن هوش مصنوعی. بازگشایی اسکریپت. و شروع مجدد هوش مصنوعی STR_AI_DEBUG_BREAK_STR_ON_OFF_TOOLTIP :{BLACK}فعالسازی/غیر فعال سازی توقف هنگامی که هوش مصنوعی گزارشی با متن توقف تولید می کند +STR_AI_DEBUG_CONTINUE :{BLACK}ادامه STR_AI_GAME_SCRIPT :{BLACK}کدبازی STR_AI_GAME_SCRIPT_TOOLTIP :{BLACK}دیدن گزارش های کد بازی @@ -3243,6 +3257,10 @@ STR_AI_CONFIG_HUMAN_PLAYER :بازیکن آ STR_AI_CONFIG_RANDOM_AI :انتخاب هوش مصنوعی به صورت اتفاقی STR_AI_CONFIG_NONE :(هیچکدام) +STR_AI_CONFIG_MOVE_UP :حرکت به بالا +STR_AI_CONFIG_MOVE_UP_TOOLTIP :{BLACK}حرکت دادن AI انتخاب شده به سمت بالا در لیست +STR_AI_CONFIG_MOVE_DOWN :{BLACK}حرکت به پایین +STR_AI_CONFIG_MOVE_DOWN_TOOLTIP :{BLACK}حرکت دادن AI انتخاب شده به سمت پایین در لیست STR_AI_CONFIG_GAMESCRIPT :{SILVER}کدبازی STR_AI_CONFIG_AI :{SILVER}هوشهای مصنوعی @@ -3316,6 +3334,7 @@ STR_ERROR_HEIGHTMAP_TOO_LARGE :{WHITE}تصوی # Soundset messages # Screenshot related messages +STR_WARNING_SCREENSHOT_SIZE_CAPTION :{WHITE}اسکرین شات بزرگ STR_MESSAGE_SCREENSHOT_SUCCESSFULLY :{WHITE}تصویر با موفقیت در {STRING} ذخیره شد STR_ERROR_SCREENSHOT_FAILED :{WHITE}تصویر از بازی ذخیره نشد @@ -3677,10 +3696,10 @@ STR_INDUSTRY_NAME_SUGAR_MINE :معدن شکر ##id 0x6000 STR_SV_EMPTY : STR_SV_UNNAMED :بی نام -STR_SV_TRAIN_NAME :قطار {COMMA} -STR_SV_ROAD_VEHICLE_NAME :خودرو جاده ای {COMMA} -STR_SV_SHIP_NAME :کشتی {COMMA} -STR_SV_AIRCRAFT_NAME :هواپیما {COMMA} +STR_SV_TRAIN_NAME :قطار #{COMMA} +STR_SV_ROAD_VEHICLE_NAME :خودرو جاده ای #{COMMA} +STR_SV_SHIP_NAME :کشتی #{COMMA} +STR_SV_AIRCRAFT_NAME :هواپیما #{COMMA} STR_SV_STNAME :{STRING} STR_SV_STNAME_NORTH :{STRING} شمال From dff7ee8e1c68199a0dc105e82e588ac097543645 Mon Sep 17 00:00:00 2001 From: Patric Stout Date: Tue, 5 Jan 2021 21:39:23 +0100 Subject: [PATCH 12/27] Fix #7611: keeps news about accidents around after vehicle is cleaned up (#8497) When a vehicle is cleaned up, all news that points to the news is also removed. This was a bit evil, as it would also remove any news related to crashed, acting like the crash never happened. This left players a bit in the dark what was going on exactly. --- src/aircraft_cmd.cpp | 2 +- src/disaster_vehicle.cpp | 6 +++--- src/news_func.h | 4 ++-- src/roadveh_cmd.cpp | 8 ++------ src/train_cmd.cpp | 2 +- src/water_cmd.cpp | 2 +- 6 files changed, 10 insertions(+), 14 deletions(-) diff --git a/src/aircraft_cmd.cpp b/src/aircraft_cmd.cpp index e03bf1bdf3..63252f5a3a 100644 --- a/src/aircraft_cmd.cpp +++ b/src/aircraft_cmd.cpp @@ -1333,7 +1333,7 @@ static void CrashAirplane(Aircraft *v) AI::NewEvent(v->owner, new ScriptEventVehicleCrashed(v->index, v->tile, st == nullptr ? ScriptEventVehicleCrashed::CRASH_AIRCRAFT_NO_AIRPORT : ScriptEventVehicleCrashed::CRASH_PLANE_LANDING)); Game::NewEvent(new ScriptEventVehicleCrashed(v->index, v->tile, st == nullptr ? ScriptEventVehicleCrashed::CRASH_AIRCRAFT_NO_AIRPORT : ScriptEventVehicleCrashed::CRASH_PLANE_LANDING)); - AddVehicleNewsItem(newsitem, NT_ACCIDENT, v->index, st != nullptr ? st->index : INVALID_STATION); + AddTileNewsItem(newsitem, NT_ACCIDENT, v->tile, nullptr, st != nullptr ? st->index : INVALID_STATION); ModifyStationRatingAround(v->tile, v->owner, -160, 30); if (_settings_client.sound.disaster) SndPlayVehicleFx(SND_12_EXPLOSION, v); diff --git a/src/disaster_vehicle.cpp b/src/disaster_vehicle.cpp index a6059b2440..12217bb612 100644 --- a/src/disaster_vehicle.cpp +++ b/src/disaster_vehicle.cpp @@ -243,7 +243,7 @@ static bool DisasterTick_Zeppeliner(DisasterVehicle *v) v->age = 0; SetDParam(0, GetStationIndex(v->tile)); - AddVehicleNewsItem(STR_NEWS_DISASTER_ZEPPELIN, NT_ACCIDENT, v->index); // Delete the news, when the zeppelin is gone + AddTileNewsItem(STR_NEWS_DISASTER_ZEPPELIN, NT_ACCIDENT, v->tile); AI::NewEvent(GetTileOwner(v->tile), new ScriptEventDisasterZeppelinerCrashed(GetStationIndex(v->tile))); } } @@ -377,7 +377,7 @@ static bool DisasterTick_Ufo(DisasterVehicle *v) if (u->crashed_ctr == 0) { u->Crash(); - AddVehicleNewsItem(STR_NEWS_DISASTER_SMALL_UFO, NT_ACCIDENT, u->index); // delete the news, when the roadvehicle is gone + AddTileNewsItem(STR_NEWS_DISASTER_SMALL_UFO, NT_ACCIDENT, u->tile); AI::NewEvent(u->owner, new ScriptEventVehicleCrashed(u->index, u->tile, ScriptEventVehicleCrashed::CRASH_RV_UFO)); Game::NewEvent(new ScriptEventVehicleCrashed(u->index, u->tile, ScriptEventVehicleCrashed::CRASH_RV_UFO)); @@ -456,7 +456,7 @@ static bool DisasterTick_Aircraft(DisasterVehicle *v, uint16 image_override, boo DestructIndustry(i); SetDParam(0, i->town->index); - AddIndustryNewsItem(news_message, NT_ACCIDENT, i->index); // delete the news, when the industry closes + AddTileNewsItem(news_message, NT_ACCIDENT, v->dest_tile); if (_settings_client.sound.disaster) SndPlayTileFx(SND_12_EXPLOSION, i->location.tile); } } else if (v->current_order.GetDestination() == 0) { diff --git a/src/news_func.h b/src/news_func.h index 352193f1ed..2131c8a749 100644 --- a/src/news_func.h +++ b/src/news_func.h @@ -42,9 +42,9 @@ static inline void AddVehicleAdviceNewsItem(StringID string, VehicleID vehicle) AddNewsItem(string, NT_ADVICE, NF_INCOLOUR | NF_SMALL | NF_VEHICLE_PARAM0, NR_VEHICLE, vehicle); } -static inline void AddTileNewsItem(StringID string, NewsType type, TileIndex tile, void *free_data = nullptr) +static inline void AddTileNewsItem(StringID string, NewsType type, TileIndex tile, void *free_data = nullptr, StationID station = INVALID_STATION) { - AddNewsItem(string, type, NF_NO_TRANSPARENT | NF_SHADE | NF_THIN, NR_TILE, tile, NR_NONE, UINT32_MAX, free_data); + AddNewsItem(string, type, NF_NO_TRANSPARENT | NF_SHADE | NF_THIN, NR_TILE, tile, station == INVALID_STATION ? NR_NONE : NR_STATION, station, free_data); } static inline void AddIndustryNewsItem(StringID string, NewsType type, IndustryID industry) diff --git a/src/roadveh_cmd.cpp b/src/roadveh_cmd.cpp index 68b81ad0d5..14fa8d79d8 100644 --- a/src/roadveh_cmd.cpp +++ b/src/roadveh_cmd.cpp @@ -552,12 +552,8 @@ static void RoadVehCrash(RoadVehicle *v) Game::NewEvent(new ScriptEventVehicleCrashed(v->index, v->tile, ScriptEventVehicleCrashed::CRASH_RV_LEVEL_CROSSING)); SetDParam(0, pass); - AddVehicleNewsItem( - (pass == 1) ? - STR_NEWS_ROAD_VEHICLE_CRASH_DRIVER : STR_NEWS_ROAD_VEHICLE_CRASH, - NT_ACCIDENT, - v->index - ); + StringID newsitem = (pass == 1) ? STR_NEWS_ROAD_VEHICLE_CRASH_DRIVER : STR_NEWS_ROAD_VEHICLE_CRASH; + AddTileNewsItem(newsitem, NT_ACCIDENT, v->tile); ModifyStationRatingAround(v->tile, v->owner, -160, 22); if (_settings_client.sound.disaster) SndPlayVehicleFx(SND_12_EXPLOSION, v); diff --git a/src/train_cmd.cpp b/src/train_cmd.cpp index 0c4a25eef4..ae9cb45de3 100644 --- a/src/train_cmd.cpp +++ b/src/train_cmd.cpp @@ -3052,7 +3052,7 @@ static bool CheckTrainCollision(Train *v) if (tcc.num == 0) return false; SetDParam(0, tcc.num); - AddVehicleNewsItem(STR_NEWS_TRAIN_CRASH, NT_ACCIDENT, v->index); + AddTileNewsItem(STR_NEWS_TRAIN_CRASH, NT_ACCIDENT, v->tile); ModifyStationRatingAround(v->tile, v->owner, -160, 30); if (_settings_client.sound.disaster) SndPlayVehicleFx(SND_13_BIG_CRASH, v); diff --git a/src/water_cmd.cpp b/src/water_cmd.cpp index 5e37c16dd7..6a3b730657 100644 --- a/src/water_cmd.cpp +++ b/src/water_cmd.cpp @@ -977,7 +977,7 @@ static void FloodVehicle(Vehicle *v) AI::NewEvent(v->owner, new ScriptEventVehicleCrashed(v->index, v->tile, ScriptEventVehicleCrashed::CRASH_FLOODED)); Game::NewEvent(new ScriptEventVehicleCrashed(v->index, v->tile, ScriptEventVehicleCrashed::CRASH_FLOODED)); SetDParam(0, pass); - AddVehicleNewsItem(STR_NEWS_DISASTER_FLOOD_VEHICLE, NT_ACCIDENT, v->index); + AddTileNewsItem(STR_NEWS_DISASTER_FLOOD_VEHICLE, NT_ACCIDENT, v->tile); CreateEffectVehicleRel(v, 4, 4, 8, EV_EXPLOSION_LARGE); if (_settings_client.sound.disaster) SndPlayVehicleFx(SND_12_EXPLOSION, v); } From fc474b02fa17f8a8922b7043268e9b6a933b2ce8 Mon Sep 17 00:00:00 2001 From: Patric Stout Date: Tue, 5 Jan 2021 16:40:37 +0100 Subject: [PATCH 13/27] Fix: change all Company planes on paint, not only the first that needs changing Otherwise it can take a few OnPaint() calls before all planes are set correctly when switching companies. --- src/company_gui.cpp | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/src/company_gui.cpp b/src/company_gui.cpp index e0bafda877..f55c801d4f 100644 --- a/src/company_gui.cpp +++ b/src/company_gui.cpp @@ -2294,7 +2294,7 @@ struct CompanyWindow : Window if (plane != wi->shown_plane) { wi->SetDisplayedPlane(plane); this->InvalidateData(); - return; + reinit = true; } /* Build HQ button handling. */ @@ -2302,8 +2302,7 @@ struct CompanyWindow : Window wi = this->GetWidget(WID_C_SELECT_VIEW_BUILD_HQ); if (plane != wi->shown_plane) { wi->SetDisplayedPlane(plane); - this->SetDirty(); - return; + reinit = true; } this->SetWidgetDisabledState(WID_C_VIEW_HQ, c->location_of_HQ == INVALID_TILE); @@ -2313,8 +2312,7 @@ struct CompanyWindow : Window wi = this->GetWidget(WID_C_SELECT_RELOCATE); if (plane != wi->shown_plane) { wi->SetDisplayedPlane(plane); - this->SetDirty(); - return; + reinit = true; } /* Owners of company */ From a3f0ee3b63399d3e634a7ee3e01e7a12a84b915b Mon Sep 17 00:00:00 2001 From: Patric Stout Date: Tue, 5 Jan 2021 16:49:37 +0100 Subject: [PATCH 14/27] Codechange: fix alignment of Company GUI Code acted as if WWT_TEXT starts a scope; it does not. --- src/company_gui.cpp | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/src/company_gui.cpp b/src/company_gui.cpp index f55c801d4f..e7bba81112 100644 --- a/src/company_gui.cpp +++ b/src/company_gui.cpp @@ -2184,19 +2184,19 @@ static const NWidgetPart _nested_company_widgets[] = { EndContainer(), EndContainer(), NWidget(WWT_TEXT, COLOUR_GREY, WID_C_DESC_COMPANY_VALUE), SetDataTip(STR_COMPANY_VIEW_COMPANY_VALUE, STR_NULL), SetFill(1, 0), - NWidget(NWID_VERTICAL), SetPIP(4, 2, 4), - NWidget(NWID_HORIZONTAL), SetPIP(0, 4, 0), - NWidget(NWID_VERTICAL), - NWidget(WWT_TEXT, COLOUR_GREY, WID_C_DESC_INFRASTRUCTURE), SetDataTip(STR_COMPANY_VIEW_INFRASTRUCTURE, STR_NULL), - NWidget(NWID_SPACER), SetFill(0, 1), - EndContainer(), - NWidget(WWT_EMPTY, INVALID_COLOUR, WID_C_DESC_INFRASTRUCTURE_COUNTS), SetMinimalTextLines(5, 0), SetFill(1, 0), - NWidget(NWID_VERTICAL), - NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_C_VIEW_INFRASTRUCTURE), SetDataTip(STR_COMPANY_VIEW_INFRASTRUCTURE_BUTTON, STR_COMPANY_VIEW_INFRASTRUCTURE_TOOLTIP), - NWidget(NWID_SPACER), SetFill(0, 1), SetMinimalSize(90, 0), - EndContainer(), + NWidget(NWID_VERTICAL), SetPIP(4, 2, 4), + NWidget(NWID_HORIZONTAL), SetPIP(0, 4, 0), + NWidget(NWID_VERTICAL), + NWidget(WWT_TEXT, COLOUR_GREY, WID_C_DESC_INFRASTRUCTURE), SetDataTip(STR_COMPANY_VIEW_INFRASTRUCTURE, STR_NULL), + NWidget(NWID_SPACER), SetFill(0, 1), + EndContainer(), + NWidget(WWT_EMPTY, INVALID_COLOUR, WID_C_DESC_INFRASTRUCTURE_COUNTS), SetMinimalTextLines(5, 0), SetFill(1, 0), + NWidget(NWID_VERTICAL), + NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_C_VIEW_INFRASTRUCTURE), SetDataTip(STR_COMPANY_VIEW_INFRASTRUCTURE_BUTTON, STR_COMPANY_VIEW_INFRASTRUCTURE_TOOLTIP), + NWidget(NWID_SPACER), SetFill(0, 1), SetMinimalSize(90, 0), EndContainer(), EndContainer(), + EndContainer(), NWidget(NWID_HORIZONTAL), NWidget(NWID_SELECTION, INVALID_COLOUR, WID_C_SELECT_DESC_OWNERS), NWidget(NWID_VERTICAL), SetPIP(5, 5, 4), From d6e15d4943936a89d275354ee59d0e3b7c6a2018 Mon Sep 17 00:00:00 2001 From: Patric Stout Date: Tue, 5 Jan 2021 17:11:24 +0100 Subject: [PATCH 15/27] Fix: make the "password" button the same size as the other buttons in Company window Currently password-lock icon + button was the same size, but this looks really weird. Now they are in sync, even with other fonts and languages. --- src/company_gui.cpp | 35 +++++++++++++++++++++++++---------- 1 file changed, 25 insertions(+), 10 deletions(-) diff --git a/src/company_gui.cpp b/src/company_gui.cpp index e7bba81112..bfcda0e6db 100644 --- a/src/company_gui.cpp +++ b/src/company_gui.cpp @@ -2173,12 +2173,12 @@ static const NWidgetPart _nested_company_widgets[] = { EndContainer(), NWidget(NWID_VERTICAL), SetPIP(4, 2, 4), NWidget(NWID_SELECTION, INVALID_COLOUR, WID_C_SELECT_VIEW_BUILD_HQ), - NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_C_VIEW_HQ), SetFill(1, 0), SetDataTip(STR_COMPANY_VIEW_VIEW_HQ_BUTTON, STR_COMPANY_VIEW_VIEW_HQ_TOOLTIP), - NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_C_BUILD_HQ), SetFill(1, 0), SetDataTip(STR_COMPANY_VIEW_BUILD_HQ_BUTTON, STR_COMPANY_VIEW_BUILD_HQ_TOOLTIP), + NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_C_VIEW_HQ), SetDataTip(STR_COMPANY_VIEW_VIEW_HQ_BUTTON, STR_COMPANY_VIEW_VIEW_HQ_TOOLTIP), + NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_C_BUILD_HQ), SetDataTip(STR_COMPANY_VIEW_BUILD_HQ_BUTTON, STR_COMPANY_VIEW_BUILD_HQ_TOOLTIP), EndContainer(), NWidget(NWID_SELECTION, INVALID_COLOUR, WID_C_SELECT_RELOCATE), - NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_C_RELOCATE_HQ), SetFill(1, 0), SetDataTip(STR_COMPANY_VIEW_RELOCATE_HQ, STR_COMPANY_VIEW_RELOCATE_COMPANY_HEADQUARTERS), - NWidget(NWID_SPACER), SetMinimalSize(90, 0), + NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_C_RELOCATE_HQ), SetDataTip(STR_COMPANY_VIEW_RELOCATE_HQ, STR_COMPANY_VIEW_RELOCATE_COMPANY_HEADQUARTERS), + NWidget(NWID_SPACER), EndContainer(), NWidget(NWID_SPACER), SetFill(0, 1), EndContainer(), @@ -2193,7 +2193,7 @@ static const NWidgetPart _nested_company_widgets[] = { NWidget(WWT_EMPTY, INVALID_COLOUR, WID_C_DESC_INFRASTRUCTURE_COUNTS), SetMinimalTextLines(5, 0), SetFill(1, 0), NWidget(NWID_VERTICAL), NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_C_VIEW_INFRASTRUCTURE), SetDataTip(STR_COMPANY_VIEW_INFRASTRUCTURE_BUTTON, STR_COMPANY_VIEW_INFRASTRUCTURE_TOOLTIP), - NWidget(NWID_SPACER), SetFill(0, 1), SetMinimalSize(90, 0), + NWidget(NWID_SPACER), EndContainer(), EndContainer(), EndContainer(), @@ -2204,14 +2204,14 @@ static const NWidgetPart _nested_company_widgets[] = { NWidget(NWID_SPACER), SetFill(0, 1), EndContainer(), EndContainer(), + /* Multi player buttons. */ NWidget(NWID_VERTICAL), SetPIP(4, 2, 4), - NWidget(NWID_SPACER), SetMinimalSize(90, 0), SetFill(0, 1), - /* Multi player buttons. */ - NWidget(NWID_HORIZONTAL), + NWidget(NWID_SPACER), SetFill(0, 1), + NWidget(NWID_HORIZONTAL), SetPIP(0, 4, 0), NWidget(WWT_EMPTY, COLOUR_GREY, WID_C_HAS_PASSWORD), NWidget(NWID_SELECTION, INVALID_COLOUR, WID_C_SELECT_MULTIPLAYER), - NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_C_COMPANY_PASSWORD), SetFill(1, 0), SetDataTip(STR_COMPANY_VIEW_PASSWORD, STR_COMPANY_VIEW_PASSWORD_TOOLTIP), - NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_C_COMPANY_JOIN), SetFill(1, 0), SetDataTip(STR_COMPANY_VIEW_JOIN, STR_COMPANY_VIEW_JOIN_TOOLTIP), + NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_C_COMPANY_PASSWORD), SetDataTip(STR_COMPANY_VIEW_PASSWORD, STR_COMPANY_VIEW_PASSWORD_TOOLTIP), + NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_C_COMPANY_JOIN), SetDataTip(STR_COMPANY_VIEW_JOIN, STR_COMPANY_VIEW_JOIN_TOOLTIP), EndContainer(), EndContainer(), EndContainer(), @@ -2398,6 +2398,21 @@ struct CompanyWindow : Window break; } + case WID_C_VIEW_HQ: + case WID_C_BUILD_HQ: + case WID_C_RELOCATE_HQ: + case WID_C_VIEW_INFRASTRUCTURE: + case WID_C_COMPANY_PASSWORD: + case WID_C_COMPANY_JOIN: + size->width = max(size->width, GetStringBoundingBox(STR_COMPANY_VIEW_VIEW_HQ_BUTTON).width); + size->width = max(size->width, GetStringBoundingBox(STR_COMPANY_VIEW_BUILD_HQ_BUTTON).width); + size->width = max(size->width, GetStringBoundingBox(STR_COMPANY_VIEW_RELOCATE_HQ).width); + size->width = max(size->width, GetStringBoundingBox(STR_COMPANY_VIEW_INFRASTRUCTURE_BUTTON).width); + size->width = max(size->width, GetStringBoundingBox(STR_COMPANY_VIEW_PASSWORD).width); + size->width = max(size->width, GetStringBoundingBox(STR_COMPANY_VIEW_JOIN).width); + break; + + case WID_C_HAS_PASSWORD: *size = maxdim(*size, GetSpriteSize(SPR_LOCK)); break; From 62cdadb58207b28dfdf1ab4ceb46278c2561f079 Mon Sep 17 00:00:00 2001 From: Patric Stout Date: Tue, 5 Jan 2021 18:06:48 +0100 Subject: [PATCH 16/27] Change: move "give money" from client-list to company window This is a much better location for this button, as you send money from one company to another company, not from player to player. This is based on work done by JGRPP in: https://github.com/JGRennison/OpenTTD-patches/commit/f82054339124cc6b89c5f4f9dac2d9da62f0108b and surrounding commits, which took the work from estys: https://www.tt-forums.net/viewtopic.php?p=1183311#p1183311 We did modify it to fix several bugs and clean up the code while here anyway. The callback was removed, as it meant a modified client could prevent anyone from seeing money was transfered. The message is now generated in the command itself, making that impossible. --- src/command_func.h | 1 - src/company_cmd.cpp | 48 +++++++++++++++++++++++++++++++++ src/company_gui.cpp | 31 ++++++++++++++++++++- src/gui.h | 1 - src/lang/english.txt | 10 +++---- src/main_gui.cpp | 47 -------------------------------- src/misc_cmd.cpp | 35 ------------------------ src/misc_gui.cpp | 15 +++++------ src/network/network.cpp | 2 +- src/network/network_client.cpp | 6 +---- src/network/network_command.cpp | 2 +- src/network/network_gui.cpp | 15 +---------- src/network/network_gui.h | 1 - src/network/network_server.cpp | 3 --- src/widgets/company_widget.h | 3 +++ 15 files changed, 96 insertions(+), 124 deletions(-) diff --git a/src/command_func.h b/src/command_func.h index 7a0a77e8d8..d6425dee16 100644 --- a/src/command_func.h +++ b/src/command_func.h @@ -96,7 +96,6 @@ CommandCallback CcBuildIndustry; CommandCallback CcPlaySound_EXPLOSION; CommandCallback CcPlaceSign; CommandCallback CcTerraform; -CommandCallback CcGiveMoney; /* rail_gui.cpp */ CommandCallback CcPlaySound_SPLAT_RAIL; diff --git a/src/company_cmd.cpp b/src/company_cmd.cpp index c871b64c97..1ecdaf89a0 100644 --- a/src/company_cmd.cpp +++ b/src/company_cmd.cpp @@ -11,6 +11,7 @@ #include "company_base.h" #include "company_func.h" #include "company_gui.h" +#include "core/backup_type.hpp" #include "town.h" #include "news_func.h" #include "cmd_helper.h" @@ -1179,3 +1180,50 @@ uint32 CompanyInfrastructure::GetTramTotal() const } return total; } + +/** + * Transfer funds (money) from one company to another. + * To prevent abuse in multiplayer games you can only send money to other + * companies if you have paid off your loan (either explicitly, or implicitly + * given the fact that you have more money than loan). + * @param tile unused + * @param flags operation to perform + * @param p1 the amount of money to transfer; max 20.000.000 + * @param p2 the company to transfer the money to + * @param text unused + * @return the cost of this operation or an error + */ +CommandCost CmdGiveMoney(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text) +{ + if (!_settings_game.economy.give_money) return CMD_ERROR; + + const Company *c = Company::Get(_current_company); + CommandCost amount(EXPENSES_OTHER, min((Money)p1, (Money)20000000LL)); + CompanyID dest_company = (CompanyID)p2; + + /* You can only transfer funds that is in excess of your loan */ + if (c->money - c->current_loan < amount.GetCost() || amount.GetCost() < 0) return_cmd_error(STR_ERROR_INSUFFICIENT_FUNDS); + if (!Company::IsValidID(dest_company)) return CMD_ERROR; + + if (flags & DC_EXEC) { + /* Add money to company */ + Backup cur_company(_current_company, dest_company, FILE_LINE); + SubtractMoneyFromCompany(CommandCost(EXPENSES_OTHER, -amount.GetCost())); + cur_company.Restore(); + + if (_networking) { + char dest_company_name[MAX_LENGTH_COMPANY_NAME_CHARS * MAX_CHAR_LENGTH]; + SetDParam(0, dest_company); + GetString(dest_company_name, STR_COMPANY_NAME, lastof(dest_company_name)); + + char from_company_name[MAX_LENGTH_COMPANY_NAME_CHARS * MAX_CHAR_LENGTH]; + SetDParam(0, _current_company); + GetString(from_company_name, STR_COMPANY_NAME, lastof(from_company_name)); + + NetworkTextMessage(NETWORK_ACTION_GIVE_MONEY, GetDrawStringCompanyColour(_current_company), false, from_company_name, dest_company_name, amount.GetCost()); + } + } + + /* Subtract money from local-company */ + return amount; +} diff --git a/src/company_gui.cpp b/src/company_gui.cpp index bfcda0e6db..7102c7662a 100644 --- a/src/company_gui.cpp +++ b/src/company_gui.cpp @@ -8,6 +8,7 @@ /** @file company_gui.cpp %Company related GUIs. */ #include "stdafx.h" +#include "currency.h" #include "error.h" #include "gui.h" #include "window_gui.h" @@ -2207,6 +2208,12 @@ static const NWidgetPart _nested_company_widgets[] = { /* Multi player buttons. */ NWidget(NWID_VERTICAL), SetPIP(4, 2, 4), NWidget(NWID_SPACER), SetFill(0, 1), + NWidget(NWID_HORIZONTAL), SetPIP(0, 4, 0), + NWidget(NWID_SPACER), SetFill(1, 0), + NWidget(NWID_SELECTION, INVALID_COLOUR, WID_C_SELECT_GIVE_MONEY), + NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_C_GIVE_MONEY), SetDataTip(STR_COMPANY_VIEW_GIVE_MONEY_BUTTON, STR_COMPANY_VIEW_GIVE_MONEY_TOOLTIP), + EndContainer(), + EndContainer(), NWidget(NWID_HORIZONTAL), SetPIP(0, 4, 0), NWidget(WWT_EMPTY, COLOUR_GREY, WID_C_HAS_PASSWORD), NWidget(NWID_SELECTION, INVALID_COLOUR, WID_C_SELECT_MULTIPLAYER), @@ -2329,6 +2336,14 @@ struct CompanyWindow : Window reinit = true; } + /* Enable/disable 'Give money' button. */ + plane = ((local || _local_company == COMPANY_SPECTATOR || !_settings_game.economy.give_money) ? SZSP_NONE : 0); + wi = this->GetWidget(WID_C_SELECT_GIVE_MONEY); + if (plane != wi->shown_plane) { + wi->SetDisplayedPlane(plane); + reinit = true; + } + /* Multiplayer buttons. */ plane = ((!_networking) ? (int)SZSP_NONE : (int)(local ? CWP_MP_C_PWD : CWP_MP_C_JOIN)); wi = this->GetWidget(WID_C_SELECT_MULTIPLAYER); @@ -2402,17 +2417,18 @@ struct CompanyWindow : Window case WID_C_BUILD_HQ: case WID_C_RELOCATE_HQ: case WID_C_VIEW_INFRASTRUCTURE: + case WID_C_GIVE_MONEY: case WID_C_COMPANY_PASSWORD: case WID_C_COMPANY_JOIN: size->width = max(size->width, GetStringBoundingBox(STR_COMPANY_VIEW_VIEW_HQ_BUTTON).width); size->width = max(size->width, GetStringBoundingBox(STR_COMPANY_VIEW_BUILD_HQ_BUTTON).width); size->width = max(size->width, GetStringBoundingBox(STR_COMPANY_VIEW_RELOCATE_HQ).width); size->width = max(size->width, GetStringBoundingBox(STR_COMPANY_VIEW_INFRASTRUCTURE_BUTTON).width); + size->width = max(size->width, GetStringBoundingBox(STR_COMPANY_VIEW_GIVE_MONEY_BUTTON).width); size->width = max(size->width, GetStringBoundingBox(STR_COMPANY_VIEW_PASSWORD).width); size->width = max(size->width, GetStringBoundingBox(STR_COMPANY_VIEW_JOIN).width); break; - case WID_C_HAS_PASSWORD: *size = maxdim(*size, GetSpriteSize(SPR_LOCK)); break; @@ -2607,6 +2623,11 @@ struct CompanyWindow : Window ShowCompanyInfrastructure((CompanyID)this->window_number); break; + case WID_C_GIVE_MONEY: + this->query_widget = WID_C_GIVE_MONEY; + ShowQueryString(STR_EMPTY, STR_COMPANY_VIEW_GIVE_MONEY_QUERY_CAPTION, 30, this, CS_NUMERAL, QSF_NONE); + break; + case WID_C_BUY_SHARE: DoCommandP(0, this->window_number, 0, CMD_BUY_SHARE_IN_COMPANY | CMD_MSG(STR_ERROR_CAN_T_BUY_25_SHARE_IN_THIS)); break; @@ -2663,6 +2684,14 @@ struct CompanyWindow : Window switch (this->query_widget) { default: NOT_REACHED(); + case WID_C_GIVE_MONEY: { + Money money = (Money)(strtoull(str, nullptr, 10) / _currency->rate); + uint32 money_c = Clamp(ClampToI32(money), 0, 20000000); // Clamp between 20 million and 0 + + DoCommandP(0, money_c, this->window_number, CMD_GIVE_MONEY | CMD_MSG(STR_ERROR_CAN_T_GIVE_MONEY)); + break; + } + case WID_C_PRESIDENT_NAME: DoCommandP(0, 0, 0, CMD_RENAME_PRESIDENT | CMD_MSG(STR_ERROR_CAN_T_CHANGE_PRESIDENT), nullptr, str); break; diff --git a/src/gui.h b/src/gui.h index 943f6a14a4..4eb2fb7f66 100644 --- a/src/gui.h +++ b/src/gui.h @@ -20,7 +20,6 @@ struct Window; /* main_gui.cpp */ -void HandleOnEditText(const char *str); void InitializeGUI(); /* settings_gui.cpp */ diff --git a/src/lang/english.txt b/src/lang/english.txt index 1751e360f0..8d8a128717 100644 --- a/src/lang/english.txt +++ b/src/lang/english.txt @@ -2122,7 +2122,6 @@ STR_NETWORK_COMPANY_LIST_NEW_COMPANY :New company # Network client list STR_NETWORK_CLIENTLIST_KICK :Kick STR_NETWORK_CLIENTLIST_BAN :Ban -STR_NETWORK_CLIENTLIST_GIVE_MONEY :Give money STR_NETWORK_CLIENTLIST_SPEAK_TO_ALL :Speak to all STR_NETWORK_CLIENTLIST_SPEAK_TO_COMPANY :Speak to company STR_NETWORK_CLIENTLIST_SPEAK_TO_CLIENT :Private message @@ -2131,8 +2130,6 @@ STR_NETWORK_SERVER :Server STR_NETWORK_CLIENT :Client STR_NETWORK_SPECTATORS :Spectators -STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}Enter the amount of money you want to give - # Network set password STR_COMPANY_PASSWORD_CANCEL :{BLACK}Do not save the entered password STR_COMPANY_PASSWORD_OK :{BLACK}Give the company the new password @@ -2235,8 +2232,7 @@ STR_NETWORK_MESSAGE_CLIENT_COMPANY_SPECTATE :*** {RAW_STRING STR_NETWORK_MESSAGE_CLIENT_COMPANY_NEW :*** {RAW_STRING} has started a new company (#{2:NUM}) STR_NETWORK_MESSAGE_CLIENT_LEFT :*** {RAW_STRING} has left the game ({2:STRING}) STR_NETWORK_MESSAGE_NAME_CHANGE :*** {RAW_STRING} has changed his/her name to {RAW_STRING} -STR_NETWORK_MESSAGE_GIVE_MONEY :*** {RAW_STRING} gave your company {2:CURRENCY_LONG} -STR_NETWORK_MESSAGE_GAVE_MONEY_AWAY :*** You gave {1:RAW_STRING} {2:CURRENCY_LONG} +STR_NETWORK_MESSAGE_GIVE_MONEY :*** {RAW_STRING} gave {2:CURRENCY_LONG} to {1:RAW_STRING} STR_NETWORK_MESSAGE_SERVER_SHUTDOWN :{WHITE}The server closed the session STR_NETWORK_MESSAGE_SERVER_REBOOT :{WHITE}The server is restarting...{}Please wait... STR_NETWORK_MESSAGE_KICKED :*** {RAW_STRING} was kicked. Reason: ({RAW_STRING}) @@ -3377,6 +3373,8 @@ STR_COMPANY_VIEW_RELOCATE_HQ :{BLACK}Relocate STR_COMPANY_VIEW_RELOCATE_COMPANY_HEADQUARTERS :{BLACK}Rebuild company headquarters elsewhere for 1% cost of company value. Shift+Click shows estimated cost without relocating HQ STR_COMPANY_VIEW_INFRASTRUCTURE_BUTTON :{BLACK}Details STR_COMPANY_VIEW_INFRASTRUCTURE_TOOLTIP :{BLACK}View detailed infrastructure counts +STR_COMPANY_VIEW_GIVE_MONEY_BUTTON :{BLACK}Give money +STR_COMPANY_VIEW_GIVE_MONEY_TOOLTIP :{BLACK}Give money to this company STR_COMPANY_VIEW_NEW_FACE_BUTTON :{BLACK}New Face STR_COMPANY_VIEW_NEW_FACE_TOOLTIP :{BLACK}Select new face for manager @@ -3394,6 +3392,7 @@ STR_COMPANY_VIEW_SELL_SHARE_TOOLTIP :{BLACK}Sell 25% STR_COMPANY_VIEW_COMPANY_NAME_QUERY_CAPTION :Company Name STR_COMPANY_VIEW_PRESIDENT_S_NAME_QUERY_CAPTION :Manager's Name +STR_COMPANY_VIEW_GIVE_MONEY_QUERY_CAPTION :Enter the amount of money you want to give STR_BUY_COMPANY_MESSAGE :{WHITE}We are looking for a transport company to take-over our company.{}{}Do you want to purchase {COMPANY} for {CURRENCY_LONG}? @@ -4345,6 +4344,7 @@ STR_ERROR_LOAN_ALREADY_REPAYED :{WHITE}... no l STR_ERROR_CURRENCY_REQUIRED :{WHITE}... {CURRENCY_LONG} required STR_ERROR_CAN_T_REPAY_LOAN :{WHITE}Can't repay loan... STR_ERROR_INSUFFICIENT_FUNDS :{WHITE}Can't give away money that is loaned from the bank... +STR_ERROR_CAN_T_GIVE_MONEY :{WHITE}Can't give away money to this company... STR_ERROR_CAN_T_BUY_COMPANY :{WHITE}Can't buy company... STR_ERROR_CAN_T_BUILD_COMPANY_HEADQUARTERS :{WHITE}Can't build company headquarters... STR_ERROR_CAN_T_BUY_25_SHARE_IN_THIS :{WHITE}Can't buy 25% share in this company... diff --git a/src/main_gui.cpp b/src/main_gui.cpp index f99cceaf19..a1d37d0f13 100644 --- a/src/main_gui.cpp +++ b/src/main_gui.cpp @@ -48,45 +48,6 @@ #include "safeguards.h" -static int _rename_id = 1; -static int _rename_what = -1; - -void CcGiveMoney(const CommandCost &result, TileIndex tile, uint32 p1, uint32 p2, uint32 cmd) -{ - if (result.Failed() || !_settings_game.economy.give_money) return; - - /* Inform the company of the action of one of its clients (controllers). */ - char msg[64]; - SetDParam(0, p2); - GetString(msg, STR_COMPANY_NAME, lastof(msg)); - - if (!_network_server) { - NetworkClientSendChat(NETWORK_ACTION_GIVE_MONEY, DESTTYPE_TEAM, p2, msg, p1); - } else { - NetworkServerSendChat(NETWORK_ACTION_GIVE_MONEY, DESTTYPE_TEAM, p2, msg, CLIENT_ID_SERVER, p1); - } -} - -void HandleOnEditText(const char *str) -{ - switch (_rename_what) { - case 3: { // Give money, you can only give money in excess of loan - const Company *c = Company::GetIfValid(_local_company); - if (c == nullptr) break; - Money money = min(c->money - c->current_loan, (Money)(strtoull(str, nullptr, 10) / _currency->rate)); - - uint32 money_c = Clamp(ClampToI32(money), 0, 20000000); // Clamp between 20 million and 0 - - /* Give 'id' the money, and subtract it from ourself */ - DoCommandP(0, money_c, _rename_id, CMD_GIVE_MONEY | CMD_MSG(STR_ERROR_INSUFFICIENT_FUNDS), CcGiveMoney, str); - break; - } - default: NOT_REACHED(); - } - - _rename_id = _rename_what = -1; -} - /** * This code is shared for the majority of the pushbuttons. * Handles e.g. the pressing of a button (to build things), playing of click sound and sets certain parameters @@ -120,14 +81,6 @@ void CcPlaySound_EXPLOSION(const CommandCost &result, TileIndex tile, uint32 p1, if (result.Succeeded() && _settings_client.sound.confirm) SndPlayTileFx(SND_12_EXPLOSION, tile); } -void ShowNetworkGiveMoneyWindow(CompanyID company) -{ - _rename_id = company; - _rename_what = 3; - ShowQueryString(STR_EMPTY, STR_NETWORK_GIVE_MONEY_CAPTION, 30, nullptr, CS_NUMERAL, QSF_NONE); -} - - /** * Zooms a viewport in a window in or out. * @param how Zooming direction. diff --git a/src/misc_cmd.cpp b/src/misc_cmd.cpp index c1c81535a8..42f800351f 100644 --- a/src/misc_cmd.cpp +++ b/src/misc_cmd.cpp @@ -236,38 +236,3 @@ CommandCost CmdChangeBankBalance(TileIndex tile, DoCommandFlag flags, uint32 p1, CommandCost zero_cost(expenses_type, 0); return zero_cost; } - -/** - * Transfer funds (money) from one company to another. - * To prevent abuse in multiplayer games you can only send money to other - * companies if you have paid off your loan (either explicitly, or implicitly - * given the fact that you have more money than loan). - * @param tile unused - * @param flags operation to perform - * @param p1 the amount of money to transfer; max 20.000.000 - * @param p2 the company to transfer the money to - * @param text unused - * @return the cost of this operation or an error - */ -CommandCost CmdGiveMoney(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text) -{ - if (!_settings_game.economy.give_money) return CMD_ERROR; - - const Company *c = Company::Get(_current_company); - CommandCost amount(EXPENSES_OTHER, min((Money)p1, (Money)20000000LL)); - CompanyID dest_company = (CompanyID)p2; - - /* You can only transfer funds that is in excess of your loan */ - if (c->money - c->current_loan < amount.GetCost() || amount.GetCost() < 0) return CMD_ERROR; - if (!_networking || !Company::IsValidID(dest_company)) return CMD_ERROR; - - if (flags & DC_EXEC) { - /* Add money to company */ - Backup cur_company(_current_company, dest_company, FILE_LINE); - SubtractMoneyFromCompany(CommandCost(EXPENSES_OTHER, -amount.GetCost())); - cur_company.Restore(); - } - - /* Subtract money from local-company */ - return amount; -} diff --git a/src/misc_gui.cpp b/src/misc_gui.cpp index 17a460bf55..c78bd05efb 100644 --- a/src/misc_gui.cpp +++ b/src/misc_gui.cpp @@ -1047,13 +1047,9 @@ struct QueryStringWindow : public Window void OnOk() { if (this->editbox.orig == nullptr || strcmp(this->editbox.text.buf, this->editbox.orig) != 0) { - /* If the parent is nullptr, the editbox is handled by general function - * HandleOnEditText */ - if (this->parent != nullptr) { - this->parent->OnQueryTextFinished(this->editbox.text.buf); - } else { - HandleOnEditText(this->editbox.text.buf); - } + assert(this->parent != nullptr); + + this->parent->OnQueryTextFinished(this->editbox.text.buf); this->editbox.handled = true; } } @@ -1113,13 +1109,14 @@ static WindowDesc _query_string_desc( * @param str StringID for the text shown in the textbox * @param caption StringID of text shown in caption of querywindow * @param maxsize maximum size in bytes or characters (including terminating '\0') depending on flags - * @param parent pointer to a Window that will handle the events (ok/cancel) of this - * window. If nullptr, results are handled by global function HandleOnEditText + * @param parent pointer to a Window that will handle the events (ok/cancel) of this window. * @param afilter filters out unwanted character input * @param flags various flags, @see QueryStringFlags */ void ShowQueryString(StringID str, StringID caption, uint maxsize, Window *parent, CharSetFilter afilter, QueryStringFlags flags) { + assert(parent != nullptr); + DeleteWindowByClass(WC_QUERY_STRING); new QueryStringWindow(str, caption, ((flags & QSF_LEN_IN_CHARS) ? MAX_CHAR_LENGTH : 1) * maxsize, maxsize, &_query_string_desc, parent, afilter, flags); } diff --git a/src/network/network.cpp b/src/network/network.cpp index 907f158420..1d5563c3d9 100644 --- a/src/network/network.cpp +++ b/src/network/network.cpp @@ -245,7 +245,7 @@ void NetworkTextMessage(NetworkAction action, TextColour colour, bool self_send, break; case NETWORK_ACTION_LEAVE: strid = STR_NETWORK_MESSAGE_CLIENT_LEFT; break; case NETWORK_ACTION_NAME_CHANGE: strid = STR_NETWORK_MESSAGE_NAME_CHANGE; break; - case NETWORK_ACTION_GIVE_MONEY: strid = self_send ? STR_NETWORK_MESSAGE_GAVE_MONEY_AWAY : STR_NETWORK_MESSAGE_GIVE_MONEY; break; + case NETWORK_ACTION_GIVE_MONEY: strid = STR_NETWORK_MESSAGE_GIVE_MONEY; break; case NETWORK_ACTION_CHAT_COMPANY: strid = self_send ? STR_NETWORK_CHAT_TO_COMPANY : STR_NETWORK_CHAT_COMPANY; break; case NETWORK_ACTION_CHAT_CLIENT: strid = self_send ? STR_NETWORK_CHAT_TO_CLIENT : STR_NETWORK_CHAT_CLIENT; break; case NETWORK_ACTION_KICKED: strid = STR_NETWORK_MESSAGE_KICKED; break; diff --git a/src/network/network_client.cpp b/src/network/network_client.cpp index e083e6c1a4..343f71eb79 100644 --- a/src/network/network_client.cpp +++ b/src/network/network_client.cpp @@ -1000,11 +1000,7 @@ NetworkRecvStatus ClientNetworkGameSocketHandler::Receive_SERVER_CHAT(Packet *p) ci = NetworkClientInfo::GetByClientID(_network_own_client_id); break; - /* For speaking to company or giving money, we need the company-name */ - case NETWORK_ACTION_GIVE_MONEY: - if (!Company::IsValidID(ci_to->client_playas)) return NETWORK_RECV_STATUS_OKAY; - FALLTHROUGH; - + /* For speaking to company, we need the company-name */ case NETWORK_ACTION_CHAT_COMPANY: { StringID str = Company::IsValidID(ci_to->client_playas) ? STR_COMPANY_NAME : STR_NETWORK_SPECTATORS; SetDParam(0, ci_to->client_playas); diff --git a/src/network/network_command.cpp b/src/network/network_command.cpp index 5d36a39b96..a63ff95ab5 100644 --- a/src/network/network_command.cpp +++ b/src/network/network_command.cpp @@ -39,7 +39,7 @@ static CommandCallback * const _callback_table[] = { /* 0x11 */ CcTerraform, /* 0x12 */ CcAI, /* 0x13 */ CcCloneVehicle, - /* 0x14 */ CcGiveMoney, + /* 0x14 */ nullptr, /* 0x15 */ CcCreateGroup, /* 0x16 */ CcFoundRandomTown, /* 0x17 */ CcRoadStop, diff --git a/src/network/network_gui.cpp b/src/network/network_gui.cpp index cd57e9af9f..13e6fbe8f1 100644 --- a/src/network/network_gui.cpp +++ b/src/network/network_gui.cpp @@ -1632,8 +1632,7 @@ NetworkCompanyInfo *GetLobbyCompanyInfo(CompanyID company) } /* The window below gives information about the connected clients - * and also makes able to give money to them, kick them (if server) - * and stuff like that. */ + * and also makes able to kick them (if server) and stuff like that. */ extern void DrawCompanyIcon(CompanyID cid, int x, int y); @@ -1665,11 +1664,6 @@ static void ClientList_Ban(const NetworkClientInfo *ci) NetworkServerKickOrBanIP(ci->client_id, true, nullptr); } -static void ClientList_GiveMoney(const NetworkClientInfo *ci) -{ - ShowNetworkGiveMoneyWindow(ci->client_playas); -} - static void ClientList_SpeakToClient(const NetworkClientInfo *ci) { ShowNetworkChatQueryWindow(DESTTYPE_CLIENT, ci->client_id); @@ -1726,13 +1720,6 @@ struct NetworkClientListPopupWindow : Window { } this->AddAction(STR_NETWORK_CLIENTLIST_SPEAK_TO_ALL, &ClientList_SpeakToAll); - if (_network_own_client_id != ci->client_id) { - /* We are no spectator and the company we want to give money to is no spectator and money gifts are allowed. */ - if (Company::IsValidID(_local_company) && Company::IsValidID(ci->client_playas) && _settings_game.economy.give_money) { - this->AddAction(STR_NETWORK_CLIENTLIST_GIVE_MONEY, &ClientList_GiveMoney); - } - } - /* A server can kick clients (but not himself). */ if (_network_server && _network_own_client_id != ci->client_id) { this->AddAction(STR_NETWORK_CLIENTLIST_KICK, &ClientList_Kick); diff --git a/src/network/network_gui.h b/src/network/network_gui.h index b9439599b5..5124955626 100644 --- a/src/network/network_gui.h +++ b/src/network/network_gui.h @@ -16,7 +16,6 @@ #include "network_type.h" void ShowNetworkNeedPassword(NetworkPasswordType npt); -void ShowNetworkGiveMoneyWindow(CompanyID company); void ShowNetworkChatQueryWindow(DestType type, int dest); void ShowJoinStatusWindow(); void ShowNetworkGameWindow(); diff --git a/src/network/network_server.cpp b/src/network/network_server.cpp index 1454991a8c..067ffd09d3 100644 --- a/src/network/network_server.cpp +++ b/src/network/network_server.cpp @@ -1382,9 +1382,6 @@ NetworkRecvStatus ServerNetworkGameSocketHandler::Receive_CLIENT_CHAT(Packet *p) NetworkClientInfo *ci = this->GetInfo(); switch (action) { - case NETWORK_ACTION_GIVE_MONEY: - if (!Company::IsValidID(ci->client_playas)) break; - FALLTHROUGH; case NETWORK_ACTION_CHAT: case NETWORK_ACTION_CHAT_CLIENT: case NETWORK_ACTION_CHAT_COMPANY: diff --git a/src/widgets/company_widget.h b/src/widgets/company_widget.h index 2fb2234d41..29164896d6 100644 --- a/src/widgets/company_widget.h +++ b/src/widgets/company_widget.h @@ -46,6 +46,9 @@ enum CompanyWidgets { WID_C_VIEW_INFRASTRUCTURE, ///< Panel about infrastructure. + WID_C_SELECT_GIVE_MONEY, ///< Selection widget for the give money button. + WID_C_GIVE_MONEY, ///< Button to give money. + WID_C_HAS_PASSWORD, ///< Has company password lock. WID_C_SELECT_MULTIPLAYER, ///< Multiplayer selection panel. WID_C_COMPANY_PASSWORD, ///< Button to set company password. From c3faec4e9a220aacab6f6332e466a38665bb9842 Mon Sep 17 00:00:00 2001 From: translators Date: Wed, 6 Jan 2021 18:27:36 +0000 Subject: [PATCH 17/27] Update: Translations from eints polish: 7 changes by yazalo --- src/lang/afrikaans.txt | 5 ----- src/lang/arabic_egypt.txt | 5 ----- src/lang/basque.txt | 5 ----- src/lang/belarusian.txt | 5 ----- src/lang/brazilian_portuguese.txt | 5 ----- src/lang/bulgarian.txt | 5 ----- src/lang/catalan.txt | 5 ----- src/lang/croatian.txt | 5 ----- src/lang/czech.txt | 5 ----- src/lang/danish.txt | 5 ----- src/lang/dutch.txt | 5 ----- src/lang/english_AU.txt | 5 ----- src/lang/english_US.txt | 5 ----- src/lang/esperanto.txt | 5 ----- src/lang/estonian.txt | 5 ----- src/lang/faroese.txt | 5 ----- src/lang/finnish.txt | 5 ----- src/lang/french.txt | 5 ----- src/lang/gaelic.txt | 5 ----- src/lang/galician.txt | 5 ----- src/lang/german.txt | 5 ----- src/lang/greek.txt | 5 ----- src/lang/hebrew.txt | 5 ----- src/lang/hungarian.txt | 5 ----- src/lang/icelandic.txt | 5 ----- src/lang/indonesian.txt | 5 ----- src/lang/irish.txt | 5 ----- src/lang/italian.txt | 5 ----- src/lang/japanese.txt | 5 ----- src/lang/korean.txt | 5 ----- src/lang/latin.txt | 5 ----- src/lang/latvian.txt | 5 ----- src/lang/lithuanian.txt | 5 ----- src/lang/luxembourgish.txt | 5 ----- src/lang/malay.txt | 5 ----- src/lang/norwegian_bokmal.txt | 5 ----- src/lang/norwegian_nynorsk.txt | 5 ----- src/lang/polish.txt | 19 +++++++------------ src/lang/portuguese.txt | 5 ----- src/lang/romanian.txt | 5 ----- src/lang/russian.txt | 5 ----- src/lang/serbian.txt | 5 ----- src/lang/simplified_chinese.txt | 5 ----- src/lang/slovak.txt | 5 ----- src/lang/slovenian.txt | 5 ----- src/lang/spanish.txt | 5 ----- src/lang/spanish_MX.txt | 5 ----- src/lang/swedish.txt | 5 ----- src/lang/tamil.txt | 5 ----- src/lang/thai.txt | 5 ----- src/lang/traditional_chinese.txt | 5 ----- src/lang/turkish.txt | 5 ----- src/lang/ukrainian.txt | 5 ----- src/lang/unfinished/chuvash.txt | 1 - src/lang/unfinished/frisian.txt | 2 -- src/lang/unfinished/ido.txt | 1 - src/lang/unfinished/macedonian.txt | 1 - src/lang/unfinished/maltese.txt | 1 - src/lang/unfinished/marathi.txt | 1 - src/lang/unfinished/persian.txt | 5 ----- src/lang/unfinished/urdu.txt | 5 ----- src/lang/vietnamese.txt | 5 ----- src/lang/welsh.txt | 5 ----- 63 files changed, 7 insertions(+), 299 deletions(-) diff --git a/src/lang/afrikaans.txt b/src/lang/afrikaans.txt index a9c4fa4ce9..43c4accfec 100644 --- a/src/lang/afrikaans.txt +++ b/src/lang/afrikaans.txt @@ -2089,7 +2089,6 @@ STR_NETWORK_COMPANY_LIST_NEW_COMPANY :Nuwe maatskapy # Network client list STR_NETWORK_CLIENTLIST_KICK :Skop STR_NETWORK_CLIENTLIST_BAN :Verbod -STR_NETWORK_CLIENTLIST_GIVE_MONEY :Gee geld STR_NETWORK_CLIENTLIST_SPEAK_TO_ALL :Praat met almal STR_NETWORK_CLIENTLIST_SPEAK_TO_COMPANY :Praat met maatskappy STR_NETWORK_CLIENTLIST_SPEAK_TO_CLIENT :Privaate boodskap @@ -2098,8 +2097,6 @@ STR_NETWORK_SERVER :Verskaffer STR_NETWORK_CLIENT :Klient STR_NETWORK_SPECTATORS :Aanskouers -STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}Sleutel die bedrag geld in wat u wil gee - # Network set password STR_COMPANY_PASSWORD_CANCEL :{BLACK}Moenie die ingesleutelde wagwoord bewaar nie STR_COMPANY_PASSWORD_OK :{BLACK}Gee die maatskappy die nuwe wagwoord @@ -2200,8 +2197,6 @@ STR_NETWORK_MESSAGE_CLIENT_COMPANY_SPECTATE :*** {STRING} he STR_NETWORK_MESSAGE_CLIENT_COMPANY_NEW :*** {STRING} het 'n nuwe maatskappy gestig (#{2:NUM}) STR_NETWORK_MESSAGE_CLIENT_LEFT :*** {STRING} het die spel verlaat ({2:STRING}) STR_NETWORK_MESSAGE_NAME_CHANGE :*** {STRING} het sy/haar naam verander na {STRING} -STR_NETWORK_MESSAGE_GIVE_MONEY :*** {STRING} het jou besigheid {2:CURRENCY_LONG} gegee -STR_NETWORK_MESSAGE_GAVE_MONEY_AWAY :*** Jy het {1:STRING} {2:CURRENCY_LONG} gegee STR_NETWORK_MESSAGE_SERVER_SHUTDOWN :{WHITE}Die verskaffer het die sessie toegemaak STR_NETWORK_MESSAGE_SERVER_REBOOT :{WHITE}Die verskaffer is besig om te weerbegin...{}Wag asb... STR_NETWORK_MESSAGE_KICKED :*** {STRING} is geskop. Rede: ({STRING}) diff --git a/src/lang/arabic_egypt.txt b/src/lang/arabic_egypt.txt index 994889e0c2..4ea95acbb0 100644 --- a/src/lang/arabic_egypt.txt +++ b/src/lang/arabic_egypt.txt @@ -1717,7 +1717,6 @@ STR_NETWORK_COMPANY_LIST_NEW_COMPANY :شركة جدي # Network client list STR_NETWORK_CLIENTLIST_KICK :اطرد STR_NETWORK_CLIENTLIST_BAN :بان -STR_NETWORK_CLIENTLIST_GIVE_MONEY :اعط اموال STR_NETWORK_CLIENTLIST_SPEAK_TO_ALL :تحدث مع الكل STR_NETWORK_CLIENTLIST_SPEAK_TO_COMPANY :تحدث لشركة STR_NETWORK_CLIENTLIST_SPEAK_TO_CLIENT :رسالة خاصة @@ -1726,8 +1725,6 @@ STR_NETWORK_SERVER :خادم STR_NETWORK_CLIENT :عميل STR_NETWORK_SPECTATORS :المشاهدين -STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}ادخل رقم المبلغ الذى تود إعطائه - # Network set password STR_COMPANY_PASSWORD_CANCEL :{BLACK}لا تحفظ كلمة المرور المدخلة STR_COMPANY_PASSWORD_OK :{BLACK}اعط الشركة كلمة المرور الجديدة @@ -1817,8 +1814,6 @@ STR_NETWORK_MESSAGE_CLIENT_COMPANY_SPECTATE :*** {STRING} ا STR_NETWORK_MESSAGE_CLIENT_COMPANY_NEW :*** {STRING} قد بدأ شركة جديدة: (#{2:NUM}) STR_NETWORK_MESSAGE_CLIENT_LEFT :*** {STRING} قد غادر اللعبة : - {2:STRING}- STR_NETWORK_MESSAGE_NAME_CHANGE :*** {STRING} قد غير اسمه / اسمها الى {STRING} -STR_NETWORK_MESSAGE_GIVE_MONEY :*** {STRING} اعطى شركتك : {2:CURRENCY_LONG} -STR_NETWORK_MESSAGE_GAVE_MONEY_AWAY :*** انت اعطيت {1:STRING} {2:CURRENCY_LONG} STR_NETWORK_MESSAGE_SERVER_SHUTDOWN :{WHITE}اقفل الخادم الجلسة STR_NETWORK_MESSAGE_SERVER_REBOOT :{WHITE}يتم بدأ الخادم من جديد ...{} الرجاء الأنتظار diff --git a/src/lang/basque.txt b/src/lang/basque.txt index b797613a96..0152d1ea47 100644 --- a/src/lang/basque.txt +++ b/src/lang/basque.txt @@ -1959,7 +1959,6 @@ STR_NETWORK_COMPANY_LIST_NEW_COMPANY :Konpainia berri # Network client list STR_NETWORK_CLIENTLIST_KICK :Kanporatu STR_NETWORK_CLIENTLIST_BAN :Debekatu -STR_NETWORK_CLIENTLIST_GIVE_MONEY :Dirua eman STR_NETWORK_CLIENTLIST_SPEAK_TO_ALL :Guztiei hitz egin STR_NETWORK_CLIENTLIST_SPEAK_TO_COMPANY :Konpainiari hitz egin STR_NETWORK_CLIENTLIST_SPEAK_TO_CLIENT :Mezu pribatua @@ -1968,8 +1967,6 @@ STR_NETWORK_SERVER :Zerbitzaria STR_NETWORK_CLIENT :Bezeroa STR_NETWORK_SPECTATORS :Ikusleak -STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}Eman nahi duzun diru kantitatea ezarri - # Network set password STR_COMPANY_PASSWORD_CANCEL :{BLACK}Ez gorde sartutako pasahitza STR_COMPANY_PASSWORD_OK :{BLACK}Konpainiari pasahitz berria ezarri @@ -2069,8 +2066,6 @@ STR_NETWORK_MESSAGE_CLIENT_COMPANY_SPECTATE :*** {STRING} ik STR_NETWORK_MESSAGE_CLIENT_COMPANY_NEW :*** {STRING} konpainia berria sortu du (#{2:NUM}) STR_NETWORK_MESSAGE_CLIENT_LEFT :*** {STRING} jokoa utzi du ({2:STRING}) STR_NETWORK_MESSAGE_NAME_CHANGE :*** {STRING}-k bere izena {STRING}-ra aldatu du -STR_NETWORK_MESSAGE_GIVE_MONEY :*** {STRING} zure empresa eman {2:CURRENCY_LONG} -STR_NETWORK_MESSAGE_GAVE_MONEY_AWAY :*** Zuk eman diozu {1:STRING} {2:CURRENCY_LONG} STR_NETWORK_MESSAGE_SERVER_SHUTDOWN :{WHITE}Zebitzariak saioa itxi du STR_NETWORK_MESSAGE_SERVER_REBOOT :{WHITE}Zerbitzaria berriro hasten ari da...{}Mesedez itxaron... diff --git a/src/lang/belarusian.txt b/src/lang/belarusian.txt index 6f5bda851a..a7bc7a2dda 100644 --- a/src/lang/belarusian.txt +++ b/src/lang/belarusian.txt @@ -2399,7 +2399,6 @@ STR_NETWORK_COMPANY_LIST_NEW_COMPANY :Новая ка # Network client list STR_NETWORK_CLIENTLIST_KICK :Выкінуць гульца STR_NETWORK_CLIENTLIST_BAN :Бан -STR_NETWORK_CLIENTLIST_GIVE_MONEY :Передаць грошай STR_NETWORK_CLIENTLIST_SPEAK_TO_ALL :Пагутарыць з усімі STR_NETWORK_CLIENTLIST_SPEAK_TO_COMPANY :Пагутарыць з кампаніяй STR_NETWORK_CLIENTLIST_SPEAK_TO_CLIENT :Прыватнае паведамленьне @@ -2408,8 +2407,6 @@ STR_NETWORK_SERVER :Сэрвэр STR_NETWORK_CLIENT :Кліент STR_NETWORK_SPECTATORS :Назіральнікі -STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}Увядзіце суму грошай, якую вы хочаце перадаць - # Network set password STR_COMPANY_PASSWORD_CANCEL :{BLACK}Не захоўваць уведзены пароль STR_COMPANY_PASSWORD_OK :{BLACK}Даць кампаніі новы пароль @@ -2510,8 +2507,6 @@ STR_NETWORK_MESSAGE_CLIENT_COMPANY_SPECTATE :*** {STRING} д STR_NETWORK_MESSAGE_CLIENT_COMPANY_NEW :*** {STRING} распачаў новую кампанію (#{2:NUM}) STR_NETWORK_MESSAGE_CLIENT_LEFT :*** {STRING} выйшаў з гульні ({2:STRING}) STR_NETWORK_MESSAGE_NAME_CHANGE :*** {STRING} зьмяніў сваё імя на {STRING} -STR_NETWORK_MESSAGE_GIVE_MONEY :*** {STRING} перадаў вашай кампаніі {2:CURRENCY_LONG} -STR_NETWORK_MESSAGE_GAVE_MONEY_AWAY :*** Вы перадалі {1:STRING} {2:CURRENCY_LONG} STR_NETWORK_MESSAGE_SERVER_SHUTDOWN :{WHITE}Гэты сэрвэр закрыў сэсію STR_NETWORK_MESSAGE_SERVER_REBOOT :{WHITE}Гэты сэрвэр перазапускаецца...{}Пачакайце, калі ласка diff --git a/src/lang/brazilian_portuguese.txt b/src/lang/brazilian_portuguese.txt index d75203968f..5799dcaf74 100644 --- a/src/lang/brazilian_portuguese.txt +++ b/src/lang/brazilian_portuguese.txt @@ -2099,7 +2099,6 @@ STR_NETWORK_COMPANY_LIST_NEW_COMPANY :Nova Companhia # Network client list STR_NETWORK_CLIENTLIST_KICK :Banir STR_NETWORK_CLIENTLIST_BAN :Banir -STR_NETWORK_CLIENTLIST_GIVE_MONEY :Dar dinheiro STR_NETWORK_CLIENTLIST_SPEAK_TO_ALL :Falar com todos STR_NETWORK_CLIENTLIST_SPEAK_TO_COMPANY :Falar com a empresa STR_NETWORK_CLIENTLIST_SPEAK_TO_CLIENT :Mensagem privada @@ -2108,8 +2107,6 @@ STR_NETWORK_SERVER :Servidor STR_NETWORK_CLIENT :Cliente STR_NETWORK_SPECTATORS :Espectadores -STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}Entre a quantia a ser dada - # Network set password STR_COMPANY_PASSWORD_CANCEL :{BLACK}Não salvar a senha digitada STR_COMPANY_PASSWORD_OK :{BLACK}Dar à empresa uma nova senha @@ -2210,8 +2207,6 @@ STR_NETWORK_MESSAGE_CLIENT_COMPANY_SPECTATE :*** {STRING} es STR_NETWORK_MESSAGE_CLIENT_COMPANY_NEW :*** {STRING} abriu uma nova companhia (#{2:NUM}) STR_NETWORK_MESSAGE_CLIENT_LEFT :*** {STRING} saiu do jogo ({2:STRING}) STR_NETWORK_MESSAGE_NAME_CHANGE :*** {STRING} mudou seu nome para {STRING} -STR_NETWORK_MESSAGE_GIVE_MONEY :*** {STRING} deu à sua companhia{2:CURRENCY_LONG} -STR_NETWORK_MESSAGE_GAVE_MONEY_AWAY :*** Você deu a {1:STRING} {2:CURRENCY_LONG} STR_NETWORK_MESSAGE_SERVER_SHUTDOWN :{WHITE}O servidor fechou a sessão STR_NETWORK_MESSAGE_SERVER_REBOOT :{WHITE}O servidor está reiniciando...{}Aguarde... STR_NETWORK_MESSAGE_KICKED :*** {STRING} foi kickado. Motivo: ({STRING}) diff --git a/src/lang/bulgarian.txt b/src/lang/bulgarian.txt index 752df0fb91..2108ee7d4d 100644 --- a/src/lang/bulgarian.txt +++ b/src/lang/bulgarian.txt @@ -2009,7 +2009,6 @@ STR_NETWORK_COMPANY_LIST_NEW_COMPANY :Нова фир # Network client list STR_NETWORK_CLIENTLIST_KICK :Изгони STR_NETWORK_CLIENTLIST_BAN :Бан -STR_NETWORK_CLIENTLIST_GIVE_MONEY :Дай пари STR_NETWORK_CLIENTLIST_SPEAK_TO_ALL :Кажи на всички STR_NETWORK_CLIENTLIST_SPEAK_TO_COMPANY :Кажи на компания STR_NETWORK_CLIENTLIST_SPEAK_TO_CLIENT :Лично съобщение @@ -2018,8 +2017,6 @@ STR_NETWORK_SERVER :Сървър STR_NETWORK_CLIENT :Клиент STR_NETWORK_SPECTATORS :Наблюдатели -STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}Въведете количеството пари, което искате да дадете - # Network set password STR_COMPANY_PASSWORD_CANCEL :{BLACK}Незапазвай паролата STR_COMPANY_PASSWORD_OK :{BLACK}Дай на компанията новата парола @@ -2119,8 +2116,6 @@ STR_NETWORK_MESSAGE_CLIENT_COMPANY_SPECTATE :*** {STRING} с STR_NETWORK_MESSAGE_CLIENT_COMPANY_NEW :*** {STRING} създаде нова компания (#{2:NUM}) STR_NETWORK_MESSAGE_CLIENT_LEFT :*** {STRING} напусна играта ({2:STRING}) STR_NETWORK_MESSAGE_NAME_CHANGE :*** {STRING} си промени името на {STRING} -STR_NETWORK_MESSAGE_GIVE_MONEY :*** {STRING} изпрати {2:CURRENCY_LONG} на твоята компания -STR_NETWORK_MESSAGE_GAVE_MONEY_AWAY :*** Ти даде {2:CURRENCY_LONG} на {1:STRING} STR_NETWORK_MESSAGE_SERVER_SHUTDOWN :{WHITE}Сървърът прекъсна сесията STR_NETWORK_MESSAGE_SERVER_REBOOT :{WHITE}Сървърът се рестартира...{}Моля изчакайте... diff --git a/src/lang/catalan.txt b/src/lang/catalan.txt index 87556f135f..d1b839de8d 100644 --- a/src/lang/catalan.txt +++ b/src/lang/catalan.txt @@ -2123,7 +2123,6 @@ STR_NETWORK_COMPANY_LIST_NEW_COMPANY :Nova companyia # Network client list STR_NETWORK_CLIENTLIST_KICK :Breu STR_NETWORK_CLIENTLIST_BAN :Prohibit -STR_NETWORK_CLIENTLIST_GIVE_MONEY :Entrega diners STR_NETWORK_CLIENTLIST_SPEAK_TO_ALL :Parla a tothom STR_NETWORK_CLIENTLIST_SPEAK_TO_COMPANY :Parla amb la companyia STR_NETWORK_CLIENTLIST_SPEAK_TO_CLIENT :Missatge Privat @@ -2132,8 +2131,6 @@ STR_NETWORK_SERVER :Servidor STR_NETWORK_CLIENT :Client STR_NETWORK_SPECTATORS :Espectadors -STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}Introdueix la quantitat de diners que vols donar - # Network set password STR_COMPANY_PASSWORD_CANCEL :{BLACK}No desis la nova contrasenya. STR_COMPANY_PASSWORD_OK :{BLACK}Estableix aquesta nova contrasenya per a la companyia. @@ -2236,8 +2233,6 @@ STR_NETWORK_MESSAGE_CLIENT_COMPANY_SPECTATE :*** {STRING} s' STR_NETWORK_MESSAGE_CLIENT_COMPANY_NEW :*** {STRING} ha començat una nova companyia (#{2:NUM}) STR_NETWORK_MESSAGE_CLIENT_LEFT :*** {STRING} ha deixat la partida ({2:STRING}) STR_NETWORK_MESSAGE_NAME_CHANGE :*** {STRING} ha canviat el seu nom a {STRING} -STR_NETWORK_MESSAGE_GIVE_MONEY :*** {STRING} ha donat a la teva companyia {2:CURRENCY_LONG} -STR_NETWORK_MESSAGE_GAVE_MONEY_AWAY :*** Has donat {1:STRING} {2:CURRENCY_LONG} STR_NETWORK_MESSAGE_SERVER_SHUTDOWN :{WHITE}El servidor ha tancat la sessió STR_NETWORK_MESSAGE_SERVER_REBOOT :{WHITE}El servidor està reiniciant...{}Espera un moment... STR_NETWORK_MESSAGE_KICKED :*** S'ha expulsat {STRING}. Motiu: {STRING} diff --git a/src/lang/croatian.txt b/src/lang/croatian.txt index 40c5fd0aed..513f38f747 100644 --- a/src/lang/croatian.txt +++ b/src/lang/croatian.txt @@ -2194,7 +2194,6 @@ STR_NETWORK_COMPANY_LIST_NEW_COMPANY :Nova tvrtka # Network client list STR_NETWORK_CLIENTLIST_KICK :Izbaci STR_NETWORK_CLIENTLIST_BAN :Zabrana -STR_NETWORK_CLIENTLIST_GIVE_MONEY :Daj novac STR_NETWORK_CLIENTLIST_SPEAK_TO_ALL :Razgovaraj sa svima STR_NETWORK_CLIENTLIST_SPEAK_TO_COMPANY :Razgovaraj s tvrtkom STR_NETWORK_CLIENTLIST_SPEAK_TO_CLIENT :Privatna poruka @@ -2203,8 +2202,6 @@ STR_NETWORK_SERVER :Poslužitelj STR_NETWORK_CLIENT :Klijent STR_NETWORK_SPECTATORS :Promatrači -STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}Unesite iznos novca koji želite dati - # Network set password STR_COMPANY_PASSWORD_CANCEL :{BLACK}Nemoj spremiti upisanu zaporku STR_COMPANY_PASSWORD_OK :{BLACK}Daj tvrtci novu zaporku @@ -2305,8 +2302,6 @@ STR_NETWORK_MESSAGE_CLIENT_COMPANY_SPECTATE :*** {STRING} se STR_NETWORK_MESSAGE_CLIENT_COMPANY_NEW :*** {STRING} je osnovao novu tvrtku (#{2:NUM}) STR_NETWORK_MESSAGE_CLIENT_LEFT :*** {STRING} je izašao iz igre ({2:STRING}) STR_NETWORK_MESSAGE_NAME_CHANGE :*** {STRING} je promijenio/la ime u {STRING} -STR_NETWORK_MESSAGE_GIVE_MONEY :*** {STRING} je dao vašoj tvrtki {2:CURRENCY_LONG} -STR_NETWORK_MESSAGE_GAVE_MONEY_AWAY :*** Dao si {1:STRING} {2:CURRENCY_LONG} STR_NETWORK_MESSAGE_SERVER_SHUTDOWN :{WHITE}Poslužitelj je zatvorio sesiju STR_NETWORK_MESSAGE_SERVER_REBOOT :{WHITE}Poslužitelj se ponovno pokreće...{}Molimo pričekajte... STR_NETWORK_MESSAGE_KICKED :*** {STRING} je izbačen. Razlog: ({STRING}) diff --git a/src/lang/czech.txt b/src/lang/czech.txt index 0e753b1801..f47ab5584e 100644 --- a/src/lang/czech.txt +++ b/src/lang/czech.txt @@ -2185,7 +2185,6 @@ STR_NETWORK_COMPANY_LIST_NEW_COMPANY :Nová společno # Network client list STR_NETWORK_CLIENTLIST_KICK :Vyhodit STR_NETWORK_CLIENTLIST_BAN :Ban -STR_NETWORK_CLIENTLIST_GIVE_MONEY :Darovat peníze STR_NETWORK_CLIENTLIST_SPEAK_TO_ALL :Napsat všem STR_NETWORK_CLIENTLIST_SPEAK_TO_COMPANY :Napsat společnosti STR_NETWORK_CLIENTLIST_SPEAK_TO_CLIENT :Soukromá zpráva @@ -2194,8 +2193,6 @@ STR_NETWORK_SERVER :Server STR_NETWORK_CLIENT :Klient STR_NETWORK_SPECTATORS :Pozorovatelé -STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}Napiš částku, kterou chceš poskytnout - # Network set password STR_COMPANY_PASSWORD_CANCEL :{BLACK}Neukládat zadané heslo STR_COMPANY_PASSWORD_OK :{BLACK}Změnit heslo společnosti @@ -2296,8 +2293,6 @@ STR_NETWORK_MESSAGE_CLIENT_COMPANY_SPECTATE :*** {STRING} se STR_NETWORK_MESSAGE_CLIENT_COMPANY_NEW :*** {STRING} zakládá novou společnost (č. {2:NUM}) STR_NETWORK_MESSAGE_CLIENT_LEFT :*** {STRING} opouští hru ({2:STRING}) STR_NETWORK_MESSAGE_NAME_CHANGE :*** {STRING} si mění jméno na {STRING} -STR_NETWORK_MESSAGE_GIVE_MONEY :*** {STRING} poslal(a) tvé společnosti {2:CURRENCY_LONG} -STR_NETWORK_MESSAGE_GAVE_MONEY_AWAY :*** Dal(a) jsi {1:STRING} {2:CURRENCY_LONG} STR_NETWORK_MESSAGE_SERVER_SHUTDOWN :{WHITE}Server ukončil relaci STR_NETWORK_MESSAGE_SERVER_REBOOT :{WHITE}Server se restartuje...{}Počkejte prosím... STR_NETWORK_MESSAGE_KICKED :*** {STRING} byl vyhozen. Důvod: ({STRING}) diff --git a/src/lang/danish.txt b/src/lang/danish.txt index f6507f02bb..411062ecbb 100644 --- a/src/lang/danish.txt +++ b/src/lang/danish.txt @@ -2098,7 +2098,6 @@ STR_NETWORK_COMPANY_LIST_NEW_COMPANY :Nyt firma # Network client list STR_NETWORK_CLIENTLIST_KICK :Smid ud STR_NETWORK_CLIENTLIST_BAN :Ban (Forvis spiller) -STR_NETWORK_CLIENTLIST_GIVE_MONEY :Giv penge STR_NETWORK_CLIENTLIST_SPEAK_TO_ALL :Tal til alle STR_NETWORK_CLIENTLIST_SPEAK_TO_COMPANY :Tal til selskab STR_NETWORK_CLIENTLIST_SPEAK_TO_CLIENT :Privat besked @@ -2107,8 +2106,6 @@ STR_NETWORK_SERVER :Server STR_NETWORK_CLIENT :Klient STR_NETWORK_SPECTATORS :Tilskuere -STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}Skriv beløbet du vil give - # Network set password STR_COMPANY_PASSWORD_CANCEL :{BLACK}Gem ikke den indtastede adgangskode STR_COMPANY_PASSWORD_OK :{BLACK}Giv firmaet den nye adgangskode @@ -2209,8 +2206,6 @@ STR_NETWORK_MESSAGE_CLIENT_COMPANY_SPECTATE :*** {STRING} ha STR_NETWORK_MESSAGE_CLIENT_COMPANY_NEW :*** {STRING} har startet et nyt selskab (#{2:NUM}) STR_NETWORK_MESSAGE_CLIENT_LEFT :*** {STRING} har forladt spillet ({2:STRING}) STR_NETWORK_MESSAGE_NAME_CHANGE :*** {STRING} har ændret sit navn til {STRING} -STR_NETWORK_MESSAGE_GIVE_MONEY :*** {STRING} gav dit selskab {2:CURRENCY_LONG} -STR_NETWORK_MESSAGE_GAVE_MONEY_AWAY :*** Du gav {1:STRING} {2:CURRENCY_LONG} STR_NETWORK_MESSAGE_SERVER_SHUTDOWN :{WHITE}Serveren har lukket ned for dette spil STR_NETWORK_MESSAGE_SERVER_REBOOT :{WHITE}Serveren genstarter...{}Vent venligst... STR_NETWORK_MESSAGE_KICKED :*** {STRING} blev sparket ud. Grund: ({STRING}) diff --git a/src/lang/dutch.txt b/src/lang/dutch.txt index d911f68383..a64fc7ef6e 100644 --- a/src/lang/dutch.txt +++ b/src/lang/dutch.txt @@ -2098,7 +2098,6 @@ STR_NETWORK_COMPANY_LIST_NEW_COMPANY :Nieuw bedrijf # Network client list STR_NETWORK_CLIENTLIST_KICK :Uit het spel schoppen STR_NETWORK_CLIENTLIST_BAN :Verbannen -STR_NETWORK_CLIENTLIST_GIVE_MONEY :Geld geven STR_NETWORK_CLIENTLIST_SPEAK_TO_ALL :Met iedereen praten STR_NETWORK_CLIENTLIST_SPEAK_TO_COMPANY :Met bedrijf praten STR_NETWORK_CLIENTLIST_SPEAK_TO_CLIENT :Privébericht @@ -2107,8 +2106,6 @@ STR_NETWORK_SERVER :Server STR_NETWORK_CLIENT :Speler STR_NETWORK_SPECTATORS :Toeschouwers -STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}Voer de hoeveelheid geld die je wilt geven in - # Network set password STR_COMPANY_PASSWORD_CANCEL :{BLACK}Ingevoerd wachtwoord niet opslaan STR_COMPANY_PASSWORD_OK :{BLACK}Bedrijf het nieuwe wachtwoord geven @@ -2209,8 +2206,6 @@ STR_NETWORK_MESSAGE_CLIENT_COMPANY_SPECTATE :*** {STRING} ki STR_NETWORK_MESSAGE_CLIENT_COMPANY_NEW :*** {STRING} heeft een nieuw bedrijf opgericht (nr. {2:NUM}) STR_NETWORK_MESSAGE_CLIENT_LEFT :*** {STRING} heeft het spel verlaten ({2:STRING}) STR_NETWORK_MESSAGE_NAME_CHANGE :*** {STRING} heeft zijn/haar naam gewijzigd naar {STRING} -STR_NETWORK_MESSAGE_GIVE_MONEY :*** {STRING} gaf je bedrijf {2:CURRENCY_LONG} -STR_NETWORK_MESSAGE_GAVE_MONEY_AWAY :*** Je gaf {2:CURRENCY_LONG} aan {1:STRING} STR_NETWORK_MESSAGE_SERVER_SHUTDOWN :{WHITE}De server heeft de sessie gesloten STR_NETWORK_MESSAGE_SERVER_REBOOT :{WHITE}De server wordt opnieuw gestart...{}Wacht alstublieft... STR_NETWORK_MESSAGE_KICKED :*** {STRING} is eruit geschopt. Reden: ({STRING}) diff --git a/src/lang/english_AU.txt b/src/lang/english_AU.txt index e1fab3f29e..4eadc29207 100644 --- a/src/lang/english_AU.txt +++ b/src/lang/english_AU.txt @@ -2017,7 +2017,6 @@ STR_NETWORK_COMPANY_LIST_NEW_COMPANY :New company # Network client list STR_NETWORK_CLIENTLIST_KICK :Kick STR_NETWORK_CLIENTLIST_BAN :Ban -STR_NETWORK_CLIENTLIST_GIVE_MONEY :Give money STR_NETWORK_CLIENTLIST_SPEAK_TO_ALL :Speak to all STR_NETWORK_CLIENTLIST_SPEAK_TO_COMPANY :Speak to company STR_NETWORK_CLIENTLIST_SPEAK_TO_CLIENT :Private message @@ -2026,8 +2025,6 @@ STR_NETWORK_SERVER :Server STR_NETWORK_CLIENT :Client STR_NETWORK_SPECTATORS :Spectators -STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}Enter the amount of money you want to give - # Network set password STR_COMPANY_PASSWORD_CANCEL :{BLACK}Do not save the entered password STR_COMPANY_PASSWORD_OK :{BLACK}Give the company the new password @@ -2127,8 +2124,6 @@ STR_NETWORK_MESSAGE_CLIENT_COMPANY_SPECTATE :*** {STRING} ha STR_NETWORK_MESSAGE_CLIENT_COMPANY_NEW :*** {STRING} has started a new company (#{2:NUM}) STR_NETWORK_MESSAGE_CLIENT_LEFT :*** {STRING} has left the game ({2:STRING}) STR_NETWORK_MESSAGE_NAME_CHANGE :*** {STRING} has changed his/her name to {STRING} -STR_NETWORK_MESSAGE_GIVE_MONEY :*** {STRING} gave your company {2:CURRENCY_LONG} -STR_NETWORK_MESSAGE_GAVE_MONEY_AWAY :*** You gave {1:STRING} {2:CURRENCY_LONG} STR_NETWORK_MESSAGE_SERVER_SHUTDOWN :{WHITE}The server closed the session STR_NETWORK_MESSAGE_SERVER_REBOOT :{WHITE}The server is restarting...{}Please wait... diff --git a/src/lang/english_US.txt b/src/lang/english_US.txt index 013088aace..37a5a41736 100644 --- a/src/lang/english_US.txt +++ b/src/lang/english_US.txt @@ -2096,7 +2096,6 @@ STR_NETWORK_COMPANY_LIST_NEW_COMPANY :New company # Network client list STR_NETWORK_CLIENTLIST_KICK :Kick STR_NETWORK_CLIENTLIST_BAN :Ban -STR_NETWORK_CLIENTLIST_GIVE_MONEY :Give money STR_NETWORK_CLIENTLIST_SPEAK_TO_ALL :Speak to all STR_NETWORK_CLIENTLIST_SPEAK_TO_COMPANY :Speak to company STR_NETWORK_CLIENTLIST_SPEAK_TO_CLIENT :Private message @@ -2105,8 +2104,6 @@ STR_NETWORK_SERVER :Server STR_NETWORK_CLIENT :Client STR_NETWORK_SPECTATORS :Spectators -STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}Enter the amount of money you want to give - # Network set password STR_COMPANY_PASSWORD_CANCEL :{BLACK}Do not save the entered password STR_COMPANY_PASSWORD_OK :{BLACK}Give the company the new password @@ -2206,8 +2203,6 @@ STR_NETWORK_MESSAGE_CLIENT_COMPANY_SPECTATE :*** {STRING} ha STR_NETWORK_MESSAGE_CLIENT_COMPANY_NEW :*** {STRING} has started a new company (#{2:NUM}) STR_NETWORK_MESSAGE_CLIENT_LEFT :*** {STRING} has left the game ({2:STRING}) STR_NETWORK_MESSAGE_NAME_CHANGE :*** {STRING} has changed his/her name to {STRING} -STR_NETWORK_MESSAGE_GIVE_MONEY :*** {STRING} gave your company {2:CURRENCY_LONG} -STR_NETWORK_MESSAGE_GAVE_MONEY_AWAY :*** You gave {1:STRING} {2:CURRENCY_LONG} STR_NETWORK_MESSAGE_SERVER_SHUTDOWN :{WHITE}The server closed the session STR_NETWORK_MESSAGE_SERVER_REBOOT :{WHITE}The server is restarting...{}Please wait... diff --git a/src/lang/esperanto.txt b/src/lang/esperanto.txt index c68684eca6..ac98e7f459 100644 --- a/src/lang/esperanto.txt +++ b/src/lang/esperanto.txt @@ -1697,7 +1697,6 @@ STR_NETWORK_COMPANY_LIST_NEW_COMPANY :Nova kompanio # Network client list STR_NETWORK_CLIENTLIST_KICK :Forbatu STR_NETWORK_CLIENTLIST_BAN :Bari -STR_NETWORK_CLIENTLIST_GIVE_MONEY :Donu monon STR_NETWORK_CLIENTLIST_SPEAK_TO_ALL :Parolu al ĉiuj STR_NETWORK_CLIENTLIST_SPEAK_TO_COMPANY :Parolu al kompanio STR_NETWORK_CLIENTLIST_SPEAK_TO_CLIENT :Privata mesaĝo @@ -1706,8 +1705,6 @@ STR_NETWORK_SERVER :Servilo STR_NETWORK_CLIENT :Kliento STR_NETWORK_SPECTATORS :Spektantoj -STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}Tajpu kiom da mono vi volas doni - # Network set password STR_COMPANY_PASSWORD_CANCEL :{BLACK}Ne konservu la pasvorton. STR_COMPANY_PASSWORD_OK :{BLACK}Donu la novan pasvorton al la kompanio. @@ -1795,8 +1792,6 @@ STR_NETWORK_MESSAGE_CLIENT_COMPANY_SPECTATE :*** {STRING} i STR_NETWORK_MESSAGE_CLIENT_COMPANY_NEW :*** {STRING} ekis novan kompanion (#{2:NUM}) STR_NETWORK_MESSAGE_CLIENT_LEFT :*** {STRING} ĉesis la ludon ({2:STRING}) STR_NETWORK_MESSAGE_NAME_CHANGE :*** {STRING} ŝanĝis sian nomon al {STRING} -STR_NETWORK_MESSAGE_GIVE_MONEY :*** {STRING} donis al via kompanio {2:CURRENCY_LONG} -STR_NETWORK_MESSAGE_GAVE_MONEY_AWAY :*** Vi donis {1:STRING} {2:CURRENCY_LONG} STR_NETWORK_MESSAGE_SERVER_SHUTDOWN :{WHITE}La servilo fermis la seancon STR_NETWORK_MESSAGE_SERVER_REBOOT :{WHITE}La servilo restartiĝas...{}Bonvolu atendi... diff --git a/src/lang/estonian.txt b/src/lang/estonian.txt index aa7277c7ba..37913382ec 100644 --- a/src/lang/estonian.txt +++ b/src/lang/estonian.txt @@ -2113,7 +2113,6 @@ STR_NETWORK_COMPANY_LIST_NEW_COMPANY :Uus ettevõte # Network client list STR_NETWORK_CLIENTLIST_KICK :Viska välja STR_NETWORK_CLIENTLIST_BAN :Bänn -STR_NETWORK_CLIENTLIST_GIVE_MONEY :Anna raha STR_NETWORK_CLIENTLIST_SPEAK_TO_ALL :Räägi kõigiga STR_NETWORK_CLIENTLIST_SPEAK_TO_COMPANY :Räägi ettevõttega STR_NETWORK_CLIENTLIST_SPEAK_TO_CLIENT :Privaatne sõnum @@ -2122,8 +2121,6 @@ STR_NETWORK_SERVER :Server STR_NETWORK_CLIENT :Klient STR_NETWORK_SPECTATORS :Vaatlejad -STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}Sisesta summa mida anda - # Network set password STR_COMPANY_PASSWORD_CANCEL :{BLACK}Sisestatud salasõna ei salvestata STR_COMPANY_PASSWORD_OK :{BLACK}Määra ettevõtte uus salasõna @@ -2224,8 +2221,6 @@ STR_NETWORK_MESSAGE_CLIENT_COMPANY_SPECTATE :*** {STRING} li STR_NETWORK_MESSAGE_CLIENT_COMPANY_NEW :*** {STRING} alustas uue ettevõtte (#{2:NUM}) STR_NETWORK_MESSAGE_CLIENT_LEFT :*** {STRING} lahkus mängust ({2:STRING}) STR_NETWORK_MESSAGE_NAME_CHANGE :*** {STRING} uus nimi on {STRING} -STR_NETWORK_MESSAGE_GIVE_MONEY :*** {STRING} andis su ettevõttele {2:CURRENCY_LONG} -STR_NETWORK_MESSAGE_GAVE_MONEY_AWAY :*** Sa andsid {1:STRING} {2:CURRENCY_LONG} STR_NETWORK_MESSAGE_SERVER_SHUTDOWN :{WHITE}Server sulges sessiooni STR_NETWORK_MESSAGE_SERVER_REBOOT :{WHITE}Server restardib...{}Palun oota... diff --git a/src/lang/faroese.txt b/src/lang/faroese.txt index f439165102..4f7ef37286 100644 --- a/src/lang/faroese.txt +++ b/src/lang/faroese.txt @@ -1865,7 +1865,6 @@ STR_NETWORK_COMPANY_LIST_NEW_COMPANY :Nýggja fyritø # Network client list STR_NETWORK_CLIENTLIST_KICK :Sparka STR_NETWORK_CLIENTLIST_BAN :Bannað -STR_NETWORK_CLIENTLIST_GIVE_MONEY :Gev pening STR_NETWORK_CLIENTLIST_SPEAK_TO_ALL :Tosa við øll STR_NETWORK_CLIENTLIST_SPEAK_TO_COMPANY :Tosa við fyritøku STR_NETWORK_CLIENTLIST_SPEAK_TO_CLIENT :Persónligt boð @@ -1874,8 +1873,6 @@ STR_NETWORK_SERVER :Servari STR_NETWORK_CLIENT :Klient STR_NETWORK_SPECTATORS :Eygleiðarar -STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}Skriva nøgdina av peningi tú vil geva - # Network set password STR_COMPANY_PASSWORD_CANCEL :{BLACK}Goym ikki skrivaða loyniorðið STR_COMPANY_PASSWORD_OK :{BLACK}Gev fyritøkuni tað nýggja loyniorðið @@ -1975,8 +1972,6 @@ STR_NETWORK_MESSAGE_CLIENT_COMPANY_SPECTATE :*** {STRING} er STR_NETWORK_MESSAGE_CLIENT_COMPANY_NEW :*** {STRING} hevur stovnað eina nýggja fyritøku (#{2:NUM}) STR_NETWORK_MESSAGE_CLIENT_LEFT :*** {STRING} er farin úr spælinum ({2:STRING}) STR_NETWORK_MESSAGE_NAME_CHANGE :*** {STRING} hevur broytt sítt navn til {STRING} -STR_NETWORK_MESSAGE_GIVE_MONEY :*** {STRING} handaði tínari fyritøku {2:CURRENCY_LONG} -STR_NETWORK_MESSAGE_GAVE_MONEY_AWAY :*** Tú handaði {1:STRING} {2:CURRENCY_LONG} STR_NETWORK_MESSAGE_SERVER_SHUTDOWN :{WHITE}Servarin endaði setuna STR_NETWORK_MESSAGE_SERVER_REBOOT :{WHITE}Servarin endurbyrjar...{}Vinarliga bíða... diff --git a/src/lang/finnish.txt b/src/lang/finnish.txt index 550c182a17..58a6ba7051 100644 --- a/src/lang/finnish.txt +++ b/src/lang/finnish.txt @@ -2122,7 +2122,6 @@ STR_NETWORK_COMPANY_LIST_NEW_COMPANY :Uusi yhtiö # Network client list STR_NETWORK_CLIENTLIST_KICK :Potkaise STR_NETWORK_CLIENTLIST_BAN :Kiellä -STR_NETWORK_CLIENTLIST_GIVE_MONEY :Anna rahaa STR_NETWORK_CLIENTLIST_SPEAK_TO_ALL :Puhu kaikille STR_NETWORK_CLIENTLIST_SPEAK_TO_COMPANY :Puhu yhtiölle STR_NETWORK_CLIENTLIST_SPEAK_TO_CLIENT :Yksityinen viesti @@ -2131,8 +2130,6 @@ STR_NETWORK_SERVER :Palvelin STR_NETWORK_CLIENT :Pelaaja STR_NETWORK_SPECTATORS :Katsojat -STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}Syötä rahamäärä, jonka haluat antaa - # Network set password STR_COMPANY_PASSWORD_CANCEL :{BLACK}Älä tallenna syötettyä salasanaa STR_COMPANY_PASSWORD_OK :{BLACK}Anna yhtiölle uusi salasana @@ -2235,8 +2232,6 @@ STR_NETWORK_MESSAGE_CLIENT_COMPANY_SPECTATE :*** {STRING} on STR_NETWORK_MESSAGE_CLIENT_COMPANY_NEW :*** {STRING} on aloittanut uuden yhtiön (nro {2:NUM}) STR_NETWORK_MESSAGE_CLIENT_LEFT :*** {STRING} on poistunut pelistä ({2:STRING}) STR_NETWORK_MESSAGE_NAME_CHANGE :*** {STRING} on muuttanut nimekseen {STRING} -STR_NETWORK_MESSAGE_GIVE_MONEY :*** {STRING} antoi yhtiöllesi {2:CURRENCY_LONG} -STR_NETWORK_MESSAGE_GAVE_MONEY_AWAY :*** Annoit yhtiölle {1:STRING} {2:CURRENCY_LONG} STR_NETWORK_MESSAGE_SERVER_SHUTDOWN :{WHITE}Palvelin sulki istunnon STR_NETWORK_MESSAGE_SERVER_REBOOT :{WHITE}Palvelin käynnistyy uudelleen...{}Odota, ole hyvä... STR_NETWORK_MESSAGE_KICKED :{STRING} potkaistiin ulos. Syy: ({STRING}) diff --git a/src/lang/french.txt b/src/lang/french.txt index 1bfde7e102..3ebccb2a0a 100644 --- a/src/lang/french.txt +++ b/src/lang/french.txt @@ -2123,7 +2123,6 @@ STR_NETWORK_COMPANY_LIST_NEW_COMPANY :Nouvelle compag # Network client list STR_NETWORK_CLIENTLIST_KICK :Exclure STR_NETWORK_CLIENTLIST_BAN :Bannir -STR_NETWORK_CLIENTLIST_GIVE_MONEY :Donner de l'argent STR_NETWORK_CLIENTLIST_SPEAK_TO_ALL :Parler à tous STR_NETWORK_CLIENTLIST_SPEAK_TO_COMPANY :Parler à la compagnie STR_NETWORK_CLIENTLIST_SPEAK_TO_CLIENT :Message privé @@ -2132,8 +2131,6 @@ STR_NETWORK_SERVER :Serveur STR_NETWORK_CLIENT :Client STR_NETWORK_SPECTATORS :Spectateurs -STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}Entrer le montant que vous voulez donner - # Network set password STR_COMPANY_PASSWORD_CANCEL :{BLACK}Ne pas sauver le mot de passe entré STR_COMPANY_PASSWORD_OK :{BLACK}Donner un nouveau mot de passe à la compagnie @@ -2236,8 +2233,6 @@ STR_NETWORK_MESSAGE_CLIENT_COMPANY_SPECTATE :*** {STRING} a STR_NETWORK_MESSAGE_CLIENT_COMPANY_NEW :*** {STRING} a lancé une nouvelle compagnie (n°{NBSP}{2:NUM}) STR_NETWORK_MESSAGE_CLIENT_LEFT :*** {STRING} a quitté la partie ({2:STRING}) STR_NETWORK_MESSAGE_NAME_CHANGE :*** {STRING} a changé son nom en {STRING} -STR_NETWORK_MESSAGE_GIVE_MONEY :*** {STRING} a donné {2:CURRENCY_LONG} à votre compagnie -STR_NETWORK_MESSAGE_GAVE_MONEY_AWAY :*** Vous avez donné {2:CURRENCY_LONG} à {1:STRING} STR_NETWORK_MESSAGE_SERVER_SHUTDOWN :{WHITE}Le serveur a fermé la session STR_NETWORK_MESSAGE_SERVER_REBOOT :{WHITE}Le serveur redémarre...{}Veuillez patienter... STR_NETWORK_MESSAGE_KICKED :*** {STRING} a été exclu. Raison{NBSP}: ({STRING}) diff --git a/src/lang/gaelic.txt b/src/lang/gaelic.txt index 8c80c59532..43d9729597 100644 --- a/src/lang/gaelic.txt +++ b/src/lang/gaelic.txt @@ -2254,7 +2254,6 @@ STR_NETWORK_COMPANY_LIST_NEW_COMPANY :Companaidh ùr # Network client list STR_NETWORK_CLIENTLIST_KICK :Thoir a bhròg dha STR_NETWORK_CLIENTLIST_BAN :Toirmisg -STR_NETWORK_CLIENTLIST_GIVE_MONEY :Thoir airgead dha STR_NETWORK_CLIENTLIST_SPEAK_TO_ALL :Bruidhinn ris a h-uile duine STR_NETWORK_CLIENTLIST_SPEAK_TO_COMPANY :Bruidhinn ris a' chompanaidh STR_NETWORK_CLIENTLIST_SPEAK_TO_CLIENT :Teachdaireachd phrìobhaideach @@ -2263,8 +2262,6 @@ STR_NETWORK_SERVER :Frithealaiche STR_NETWORK_CLIENT :Cliant STR_NETWORK_SPECTATORS :Amharcaichean -STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}Cuir a-steach na tha thu airson toirt seachad - # Network set password STR_COMPANY_PASSWORD_CANCEL :{BLACK}Na sàbhail am facal-faire air a chur a-steach STR_COMPANY_PASSWORD_OK :{BLACK}Thoir am facal-faire ùr dhan chompanaidh @@ -2364,8 +2361,6 @@ STR_NETWORK_MESSAGE_CLIENT_COMPANY_SPECTATE :*** Ghabh {STRI STR_NETWORK_MESSAGE_CLIENT_COMPANY_NEW :*** Stèidhich {STRING} companaidh ùr ({2:NUM}) STR_NETWORK_MESSAGE_CLIENT_LEFT :*** Dh'fhalbh {STRING} an geama ({2:STRING}) STR_NETWORK_MESSAGE_NAME_CHANGE :*** Dh'atharraich {0:STRING} (a h-)ainm gu {1:STRING} -STR_NETWORK_MESSAGE_GIVE_MONEY :*** Thug {STRING} {2:CURRENCY_LONG} dhan chompanaidh agad -STR_NETWORK_MESSAGE_GAVE_MONEY_AWAY :*** Thug thu {2:CURRENCY_LONG} dha {1:STRING} STR_NETWORK_MESSAGE_SERVER_SHUTDOWN :{WHITE}Dhùin am frithealaiche an seisean STR_NETWORK_MESSAGE_SERVER_REBOOT :{WHITE}Tha am frithealaiche ag ath-thòiseachadh...{}Fuirich greis... diff --git a/src/lang/galician.txt b/src/lang/galician.txt index 9f56b15eb0..386eb4ab8c 100644 --- a/src/lang/galician.txt +++ b/src/lang/galician.txt @@ -2091,7 +2091,6 @@ STR_NETWORK_COMPANY_LIST_NEW_COMPANY :Nova compañía # Network client list STR_NETWORK_CLIENTLIST_KICK :Chimpar STR_NETWORK_CLIENTLIST_BAN :Bloquear -STR_NETWORK_CLIENTLIST_GIVE_MONEY :Dar cartos STR_NETWORK_CLIENTLIST_SPEAK_TO_ALL :Falar a todos STR_NETWORK_CLIENTLIST_SPEAK_TO_COMPANY :Falar con compañía STR_NETWORK_CLIENTLIST_SPEAK_TO_CLIENT :Mensaxe privada @@ -2100,8 +2099,6 @@ STR_NETWORK_SERVER :Servidor STR_NETWORK_CLIENT :Cliente STR_NETWORK_SPECTATORS :Espectadores -STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}Introduce a cantidade de cartos que queres dar - # Network set password STR_COMPANY_PASSWORD_CANCEL :{BLACK}Non grava-lo contrasinal introducido STR_COMPANY_PASSWORD_OK :{BLACK}Asignar á compañía o novo contrasinal @@ -2201,8 +2198,6 @@ STR_NETWORK_MESSAGE_CLIENT_COMPANY_SPECTATE :*** {STRING} un STR_NETWORK_MESSAGE_CLIENT_COMPANY_NEW :*** {STRING} comezou unha nova compañía (#{2:NUM}) STR_NETWORK_MESSAGE_CLIENT_LEFT :*** {STRING} saiu da partida ({2:STRING}) STR_NETWORK_MESSAGE_NAME_CHANGE :*** {STRING} cambiou o seu nome a {STRING} -STR_NETWORK_MESSAGE_GIVE_MONEY :*** {STRING} deu á túa companía {2:CURRENCY_LONG} -STR_NETWORK_MESSAGE_GAVE_MONEY_AWAY :*** Diches a {1:STRING} {2:CURRENCY_LONG} STR_NETWORK_MESSAGE_SERVER_SHUTDOWN :{WHITE}O servidor pechou a sesión STR_NETWORK_MESSAGE_SERVER_REBOOT :{WHITE}O servidor estase a reiniciar...{}Agarda por favor... diff --git a/src/lang/german.txt b/src/lang/german.txt index 1264a9c6e5..78218be1e4 100644 --- a/src/lang/german.txt +++ b/src/lang/german.txt @@ -2121,7 +2121,6 @@ STR_NETWORK_COMPANY_LIST_NEW_COMPANY :Neue Firma # Network client list STR_NETWORK_CLIENTLIST_KICK :Hinauswerfen STR_NETWORK_CLIENTLIST_BAN :Sperren -STR_NETWORK_CLIENTLIST_GIVE_MONEY :Geld schenken STR_NETWORK_CLIENTLIST_SPEAK_TO_ALL :Mit allen sprechen STR_NETWORK_CLIENTLIST_SPEAK_TO_COMPANY :Mit Firma sprechen STR_NETWORK_CLIENTLIST_SPEAK_TO_CLIENT :Private Nachricht @@ -2130,8 +2129,6 @@ STR_NETWORK_SERVER :Server STR_NETWORK_CLIENT :Teilnehmer STR_NETWORK_SPECTATORS :Zuschauer -STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}Wieviel Geld soll übergeben werden? - # Network set password STR_COMPANY_PASSWORD_CANCEL :{BLACK}Eingegebenes Passwort nicht speichern STR_COMPANY_PASSWORD_OK :{BLACK}Der Firma ein Passwort zuweisen @@ -2233,8 +2230,6 @@ STR_NETWORK_MESSAGE_CLIENT_COMPANY_SPECTATE :*** {STRING} is STR_NETWORK_MESSAGE_CLIENT_COMPANY_NEW :*** {STRING} hat eine neue Firma gegründet (#{2:NUM}) STR_NETWORK_MESSAGE_CLIENT_LEFT :*** {STRING} hat das Spiel verlassen ({2:STRING}) STR_NETWORK_MESSAGE_NAME_CHANGE :*** {STRING} hat seinen/ihren Namen in {STRING} geändert -STR_NETWORK_MESSAGE_GIVE_MONEY :*** {STRING} gab der eigenen Firma {2:CURRENCY_LONG} -STR_NETWORK_MESSAGE_GAVE_MONEY_AWAY :*** Die eigene Firma übergab {1:STRING} {2:CURRENCY_LONG} STR_NETWORK_MESSAGE_SERVER_SHUTDOWN :{WHITE}Der Server hat das Spiel beendet STR_NETWORK_MESSAGE_SERVER_REBOOT :{WHITE}Der Server startet neu...{}Bitte warten... STR_NETWORK_MESSAGE_KICKED :*** {STRING} wurde vom Server hinausgeworfen. Grund: ({STRING}) diff --git a/src/lang/greek.txt b/src/lang/greek.txt index 9ac448efc1..6fd9000a21 100644 --- a/src/lang/greek.txt +++ b/src/lang/greek.txt @@ -2184,7 +2184,6 @@ STR_NETWORK_COMPANY_LIST_NEW_COMPANY :Νέα εται # Network client list STR_NETWORK_CLIENTLIST_KICK :Εκδίωξη STR_NETWORK_CLIENTLIST_BAN :Απαγόρευση -STR_NETWORK_CLIENTLIST_GIVE_MONEY :Δώστε χρήματα STR_NETWORK_CLIENTLIST_SPEAK_TO_ALL :Μιλήστε σε όλους STR_NETWORK_CLIENTLIST_SPEAK_TO_COMPANY :Μιλήστε στην εταιρεία STR_NETWORK_CLIENTLIST_SPEAK_TO_CLIENT :Προσωπικό μήνυμα @@ -2193,8 +2192,6 @@ STR_NETWORK_SERVER :Διακομι STR_NETWORK_CLIENT :Πελάτης STR_NETWORK_SPECTATORS :Θεατές -STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}Εισάγετε το πόσο των χρημάτων που θέλετε να δώσετε - # Network set password STR_COMPANY_PASSWORD_CANCEL :{BLACK}Να μην αποθηκευτεί ο κωδικός STR_COMPANY_PASSWORD_OK :{BLACK}Δώστε στην εταιρεία νέο κωδικό @@ -2294,8 +2291,6 @@ STR_NETWORK_MESSAGE_CLIENT_COMPANY_SPECTATE :*** {STRING} σ STR_NETWORK_MESSAGE_CLIENT_COMPANY_NEW :*** {STRING} ξεκίνησε μια νέα εταιρία (#{2:NUM}) STR_NETWORK_MESSAGE_CLIENT_LEFT :*** {STRING} αποχώρησε από το παιχνίδι ({2:STRING}) STR_NETWORK_MESSAGE_NAME_CHANGE :*** {STRING} άλλαξαν το όνομά τους σε {STRING} -STR_NETWORK_MESSAGE_GIVE_MONEY :*** {STRING} έδωσαν στην εταιρία σας {2:CURRENCY_LONG} -STR_NETWORK_MESSAGE_GAVE_MONEY_AWAY :*** Δώσατε {1:STRING} {2:CURRENCY_LONG} STR_NETWORK_MESSAGE_SERVER_SHUTDOWN :{WHITE}Ο διακομιστής έκλεισε την συνεδρία STR_NETWORK_MESSAGE_SERVER_REBOOT :{WHITE}Ο διακομιστής επανεκκινεί...{}Παρακαλώ περιμένετε... diff --git a/src/lang/hebrew.txt b/src/lang/hebrew.txt index 4bffa240bc..7915708bc8 100644 --- a/src/lang/hebrew.txt +++ b/src/lang/hebrew.txt @@ -2068,7 +2068,6 @@ STR_NETWORK_COMPANY_LIST_NEW_COMPANY :חברה חדש # Network client list STR_NETWORK_CLIENTLIST_KICK :בעט STR_NETWORK_CLIENTLIST_BAN :חסימה -STR_NETWORK_CLIENTLIST_GIVE_MONEY :נתן כסף STR_NETWORK_CLIENTLIST_SPEAK_TO_ALL :דבר לכולם STR_NETWORK_CLIENTLIST_SPEAK_TO_COMPANY :דבר לחברה STR_NETWORK_CLIENTLIST_SPEAK_TO_CLIENT :הודעה פרטית @@ -2077,8 +2076,6 @@ STR_NETWORK_SERVER :שרת STR_NETWORK_CLIENT :לקוח STR_NETWORK_SPECTATORS :צופים -STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}הכנס סכום כסף שברצונך לתת - # Network set password STR_COMPANY_PASSWORD_CANCEL :{BLACK}בטל שמירת הסיסמה החדשה STR_COMPANY_PASSWORD_OK :{BLACK}שמור את הסיסמה החדשה @@ -2178,8 +2175,6 @@ STR_NETWORK_MESSAGE_CLIENT_COMPANY_SPECTATE :.הצטרף ל STR_NETWORK_MESSAGE_CLIENT_COMPANY_NEW :{2:NUM} הקים חברה חדשה {NBSP}{0:STRING} *** STR_NETWORK_MESSAGE_CLIENT_LEFT :({2:STRING}) עזב את המשחק {NBSP}{0:STRING} *** STR_NETWORK_MESSAGE_NAME_CHANGE :{STRING} שינה את שמו ל {STRING} *** -STR_NETWORK_MESSAGE_GIVE_MONEY :{2:CURRENCY_LONG} נתן לחברתך {NBSP}{0:STRING} *** -STR_NETWORK_MESSAGE_GAVE_MONEY_AWAY :{2:CURRENCY_LONG} {1:STRING} נתת ל *** STR_NETWORK_MESSAGE_SERVER_SHUTDOWN :{WHITE}השרת סגר את המשחק STR_NETWORK_MESSAGE_SERVER_REBOOT :{WHITE}השרת מופעל מחדש...{}אנא המתן... diff --git a/src/lang/hungarian.txt b/src/lang/hungarian.txt index c82cf92de3..2454d63bef 100644 --- a/src/lang/hungarian.txt +++ b/src/lang/hungarian.txt @@ -2162,7 +2162,6 @@ STR_NETWORK_COMPANY_LIST_NEW_COMPANY :Új vállalat # Network client list STR_NETWORK_CLIENTLIST_KICK :Kirúgás STR_NETWORK_CLIENTLIST_BAN :Kitiltás -STR_NETWORK_CLIENTLIST_GIVE_MONEY :Pénz adományozása STR_NETWORK_CLIENTLIST_SPEAK_TO_ALL :Üzenet mindenkinek STR_NETWORK_CLIENTLIST_SPEAK_TO_COMPANY :Üzenet a vállalatnak STR_NETWORK_CLIENTLIST_SPEAK_TO_CLIENT :Privát üzenet @@ -2171,8 +2170,6 @@ STR_NETWORK_SERVER :Szerver STR_NETWORK_CLIENT :Kliens STR_NETWORK_SPECTATORS :Megfigyelők -STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}Add meg a küldeni kívánt pénz mennyiségét - # Network set password STR_COMPANY_PASSWORD_CANCEL :{BLACK}Ne mentsd el a megadott jelszót STR_COMPANY_PASSWORD_OK :{BLACK}Add meg az új vállalati jelszót @@ -2273,8 +2270,6 @@ STR_NETWORK_MESSAGE_CLIENT_COMPANY_SPECTATE :*** {STRING} cs STR_NETWORK_MESSAGE_CLIENT_COMPANY_NEW :*** {STRING} új vállalatot alapított (#{2:NUM}) STR_NETWORK_MESSAGE_CLIENT_LEFT :*** {STRING} kilépett a játékból ({2:STRING}) STR_NETWORK_MESSAGE_NAME_CHANGE :*** {STRING} nevet változtatott. Új neve: {STRING} -STR_NETWORK_MESSAGE_GIVE_MONEY :*** {STRING} a következő összeget utalta vállalatodnak: {2:CURRENCY_LONG} -STR_NETWORK_MESSAGE_GAVE_MONEY_AWAY :*** {1:STRING} vállalatnak sikeresen átutaltál {2:CURRENCY_LONG}-t STR_NETWORK_MESSAGE_SERVER_SHUTDOWN :{WHITE}A szerver leállította a játékot STR_NETWORK_MESSAGE_SERVER_REBOOT :{WHITE}A szerver újraindul...{}Türelem... STR_NETWORK_MESSAGE_KICKED :*** {STRING} ki lett rúgva. Oka: ({STRING}) diff --git a/src/lang/icelandic.txt b/src/lang/icelandic.txt index 2e7afccf83..a9be3cce62 100644 --- a/src/lang/icelandic.txt +++ b/src/lang/icelandic.txt @@ -1901,7 +1901,6 @@ STR_NETWORK_COMPANY_LIST_NEW_COMPANY :Nýtt fyrirtæk # Network client list STR_NETWORK_CLIENTLIST_KICK :Sparka STR_NETWORK_CLIENTLIST_BAN :Banna -STR_NETWORK_CLIENTLIST_GIVE_MONEY :Gefa pening STR_NETWORK_CLIENTLIST_SPEAK_TO_ALL :Tala við alla STR_NETWORK_CLIENTLIST_SPEAK_TO_COMPANY :Tala við fyrirtæki STR_NETWORK_CLIENTLIST_SPEAK_TO_CLIENT :Einkaskilaboð @@ -1910,8 +1909,6 @@ STR_NETWORK_SERVER :Þjónn STR_NETWORK_CLIENT :Notandi STR_NETWORK_SPECTATORS :Áhorfendur -STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}Sláðu inn peningaupphæð sem þú vilt láta af hendi rakna - # Network set password STR_COMPANY_PASSWORD_CANCEL :{BLACK}Ekki vista innslegið lykilorð STR_COMPANY_PASSWORD_OK :{BLACK}Læsa fyrirtækinu með nýja lykilorðinu @@ -2011,8 +2008,6 @@ STR_NETWORK_MESSAGE_CLIENT_COMPANY_SPECTATE :*** {STRING} ho STR_NETWORK_MESSAGE_CLIENT_COMPANY_NEW :*** {STRING} stofnaði nýtt fyrirtæki (#{2:NUM}) STR_NETWORK_MESSAGE_CLIENT_LEFT :*** {STRING} yfirgefur leikinn ({2:STRING}) STR_NETWORK_MESSAGE_NAME_CHANGE :*** {STRING} heitir nú {STRING} -STR_NETWORK_MESSAGE_GIVE_MONEY :*** {STRING} sendi þér {2:CURRENCY_LONG} -STR_NETWORK_MESSAGE_GAVE_MONEY_AWAY :*** Þú gafst {1:STRING} {2:CURRENCY_LONG} STR_NETWORK_MESSAGE_SERVER_SHUTDOWN :{WHITE}Þjónninn sleit tengingunni STR_NETWORK_MESSAGE_SERVER_REBOOT :{WHITE}Verið er að endurræsa þjóninn...{}Vinsamlega bíðið... diff --git a/src/lang/indonesian.txt b/src/lang/indonesian.txt index 48ef414720..ee1c81d1da 100644 --- a/src/lang/indonesian.txt +++ b/src/lang/indonesian.txt @@ -2098,7 +2098,6 @@ STR_NETWORK_COMPANY_LIST_NEW_COMPANY :Buat Perusahaan # Network client list STR_NETWORK_CLIENTLIST_KICK :Usir STR_NETWORK_CLIENTLIST_BAN :Larangan -STR_NETWORK_CLIENTLIST_GIVE_MONEY :Kirim uang STR_NETWORK_CLIENTLIST_SPEAK_TO_ALL :Bicara ke semua STR_NETWORK_CLIENTLIST_SPEAK_TO_COMPANY :Bicara ke perusahaan STR_NETWORK_CLIENTLIST_SPEAK_TO_CLIENT :Pesan pribadi @@ -2107,8 +2106,6 @@ STR_NETWORK_SERVER :Server STR_NETWORK_CLIENT :Klien STR_NETWORK_SPECTATORS :Penonton -STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}Masukkan jumlah uang yang akan diberikan - # Network set password STR_COMPANY_PASSWORD_CANCEL :{BLACK}Jangan simpan kata sandi yang telah dimasukkan STR_COMPANY_PASSWORD_OK :{BLACK}Berikan perusahaan kata sandi baru @@ -2209,8 +2206,6 @@ STR_NETWORK_MESSAGE_CLIENT_COMPANY_SPECTATE :*** {STRING} be STR_NETWORK_MESSAGE_CLIENT_COMPANY_NEW :*** {STRING} mulai mendirikan perusahaan (#{2:NUM}) STR_NETWORK_MESSAGE_CLIENT_LEFT :*** {STRING} meninggalkan permainan ({2:STRING}) STR_NETWORK_MESSAGE_NAME_CHANGE :*** {STRING} telah mengganti namanya menjadi {STRING} -STR_NETWORK_MESSAGE_GIVE_MONEY :*** {STRING} telah memberi perusahaanmu {2:CURRENCY_LONG} -STR_NETWORK_MESSAGE_GAVE_MONEY_AWAY :*** Anda telah memberi {1:STRING} {2:CURRENCY_LONG} STR_NETWORK_MESSAGE_SERVER_SHUTDOWN :{WHITE}Server menutup sesi STR_NETWORK_MESSAGE_SERVER_REBOOT :{WHITE}Server memulai ulang...{}Tunggulah... STR_NETWORK_MESSAGE_KICKED :*** {STRING} telah dikeluarkan. Alasan: ({STRING}) diff --git a/src/lang/irish.txt b/src/lang/irish.txt index 4af615635c..6f5d91e820 100644 --- a/src/lang/irish.txt +++ b/src/lang/irish.txt @@ -2042,7 +2042,6 @@ STR_NETWORK_COMPANY_LIST_NEW_COMPANY :Cuideachta nua # Network client list STR_NETWORK_CLIENTLIST_KICK :Ciceáil STR_NETWORK_CLIENTLIST_BAN :Toirmisc -STR_NETWORK_CLIENTLIST_GIVE_MONEY :Tabhair airgead STR_NETWORK_CLIENTLIST_SPEAK_TO_ALL :Labhair le cách STR_NETWORK_CLIENTLIST_SPEAK_TO_COMPANY :Labhair le cuideachta STR_NETWORK_CLIENTLIST_SPEAK_TO_CLIENT :Teacht. phríobháideach @@ -2051,8 +2050,6 @@ STR_NETWORK_SERVER :Freastalaí STR_NETWORK_CLIENT :Cliant STR_NETWORK_SPECTATORS :Féachadóirí -STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}Iontráil an méid airgid is mian leat a thabhairt - # Network set password STR_COMPANY_PASSWORD_CANCEL :{BLACK}Ná sábháil an pasfhocal a iontráladh STR_COMPANY_PASSWORD_OK :{BLACK}Tabhair an pasfhocal nua don chuideachta @@ -2152,8 +2149,6 @@ STR_NETWORK_MESSAGE_CLIENT_COMPANY_SPECTATE :*** Tá {STRING STR_NETWORK_MESSAGE_CLIENT_COMPANY_NEW :*** Thosaigh {STRING} cuideachta nua (#{2:NUM}) STR_NETWORK_MESSAGE_CLIENT_LEFT :*** D'fhág {STRING} an cluiche ({2:STRING}) STR_NETWORK_MESSAGE_NAME_CHANGE :*** D'athraigh {STRING} a (h)ainm go {STRING} -STR_NETWORK_MESSAGE_GIVE_MONEY :*** Thug {STRING} {2:CURRENCY_LONG} dod' chuideachta -STR_NETWORK_MESSAGE_GAVE_MONEY_AWAY :*** Thug tú {2:CURRENCY_LONG} do {1:STRING} STR_NETWORK_MESSAGE_SERVER_SHUTDOWN :{WHITE}Dhún an freastalaí an seisiún STR_NETWORK_MESSAGE_SERVER_REBOOT :{WHITE}Tá an freastalaí á atosú...{}Fan go fóill... diff --git a/src/lang/italian.txt b/src/lang/italian.txt index 0f22a045ad..4940019e8c 100644 --- a/src/lang/italian.txt +++ b/src/lang/italian.txt @@ -2122,7 +2122,6 @@ STR_NETWORK_COMPANY_LIST_NEW_COMPANY :Nuova compagnia # Network client list STR_NETWORK_CLIENTLIST_KICK :Espelli STR_NETWORK_CLIENTLIST_BAN :Bandisci -STR_NETWORK_CLIENTLIST_GIVE_MONEY :Dona denaro STR_NETWORK_CLIENTLIST_SPEAK_TO_ALL :Parla a tutti STR_NETWORK_CLIENTLIST_SPEAK_TO_COMPANY :Parla alla compagnia STR_NETWORK_CLIENTLIST_SPEAK_TO_CLIENT :Messaggio privato @@ -2131,8 +2130,6 @@ STR_NETWORK_SERVER :Server STR_NETWORK_CLIENT :Client STR_NETWORK_SPECTATORS :Spettatori -STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}Inserire la quantità di denaro da donare - # Network set password STR_COMPANY_PASSWORD_CANCEL :{BLACK}Non salvare la password inserita STR_COMPANY_PASSWORD_OK :{BLACK}Assegna la nuova password alla compagnia @@ -2233,8 +2230,6 @@ STR_NETWORK_MESSAGE_CLIENT_COMPANY_SPECTATE :*** {STRING} è STR_NETWORK_MESSAGE_CLIENT_COMPANY_NEW :*** {STRING} ha avviato una nuova compagnia (#{2:NUM}) STR_NETWORK_MESSAGE_CLIENT_LEFT :*** {STRING} ha abbandonato la partita ({2:STRING}) STR_NETWORK_MESSAGE_NAME_CHANGE :*** {STRING} ha cambiato nome in {STRING} -STR_NETWORK_MESSAGE_GIVE_MONEY :*** {STRING} ha donato alla tua compagnia {2:CURRENCY_LONG} -STR_NETWORK_MESSAGE_GAVE_MONEY_AWAY :*** Hai donato {2:CURRENCY_LONG} a {1:STRING} STR_NETWORK_MESSAGE_SERVER_SHUTDOWN :{WHITE}Il server ha chiuso la sessione STR_NETWORK_MESSAGE_SERVER_REBOOT :{WHITE}Il server si sta riavviando...{}Attendere prego... STR_NETWORK_MESSAGE_KICKED :*** {STRING} è stato espulso. Motivo: ({STRING}) diff --git a/src/lang/japanese.txt b/src/lang/japanese.txt index af48a6e6e2..50ef3dec80 100644 --- a/src/lang/japanese.txt +++ b/src/lang/japanese.txt @@ -2042,7 +2042,6 @@ STR_NETWORK_COMPANY_LIST_NEW_COMPANY :新会社 # Network client list STR_NETWORK_CLIENTLIST_KICK :追放 STR_NETWORK_CLIENTLIST_BAN :参入禁止 -STR_NETWORK_CLIENTLIST_GIVE_MONEY :送金 STR_NETWORK_CLIENTLIST_SPEAK_TO_ALL :全員へ発言 STR_NETWORK_CLIENTLIST_SPEAK_TO_COMPANY :チームへ発言 STR_NETWORK_CLIENTLIST_SPEAK_TO_CLIENT :個人的なメッセージ @@ -2051,8 +2050,6 @@ STR_NETWORK_SERVER :サーバー STR_NETWORK_CLIENT :クライアント STR_NETWORK_SPECTATORS :観覧者 -STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}送りたい金額を入力 - # Network set password STR_COMPANY_PASSWORD_CANCEL :{BLACK}入力したパスワードを保存しない STR_COMPANY_PASSWORD_OK :{BLACK}会社パスワードを変更 @@ -2152,8 +2149,6 @@ STR_NETWORK_MESSAGE_CLIENT_COMPANY_SPECTATE :*** {STRING} STR_NETWORK_MESSAGE_CLIENT_COMPANY_NEW :*** {STRING} が新会社 (#{2:NUM}) を設立しました STR_NETWORK_MESSAGE_CLIENT_LEFT :*** {STRING} が退出しました({2:STRING}) STR_NETWORK_MESSAGE_NAME_CHANGE :*** {STRING} は名前を {STRING} に変更しました -STR_NETWORK_MESSAGE_GIVE_MONEY :*** {STRING} が {2:CURRENCY_LONG} を送金してくれました -STR_NETWORK_MESSAGE_GAVE_MONEY_AWAY :*** {1:STRING} に {2:CURRENCY_LONG} を送金しました STR_NETWORK_MESSAGE_SERVER_SHUTDOWN :{WHITE}サーバがセッションを終了しました STR_NETWORK_MESSAGE_SERVER_REBOOT :{WHITE}このサーバーは再起動中です…{}しばらくお待ちください… diff --git a/src/lang/korean.txt b/src/lang/korean.txt index 329eb8b47c..bf2542eb4a 100644 --- a/src/lang/korean.txt +++ b/src/lang/korean.txt @@ -2123,7 +2123,6 @@ STR_NETWORK_COMPANY_LIST_NEW_COMPANY :새 회사 # Network client list STR_NETWORK_CLIENTLIST_KICK :추방 STR_NETWORK_CLIENTLIST_BAN :차단 -STR_NETWORK_CLIENTLIST_GIVE_MONEY :돈 보내기 STR_NETWORK_CLIENTLIST_SPEAK_TO_ALL :모두에게 말하기 STR_NETWORK_CLIENTLIST_SPEAK_TO_COMPANY :이 회사에게 말하기 STR_NETWORK_CLIENTLIST_SPEAK_TO_CLIENT :귓속말하기 @@ -2132,8 +2131,6 @@ STR_NETWORK_SERVER :서버 STR_NETWORK_CLIENT :접속자 STR_NETWORK_SPECTATORS :관전자 -STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}송금하고 싶은 양을 입력하세요 - # Network set password STR_COMPANY_PASSWORD_CANCEL :{BLACK}입력한 비밀번호는 저장하지 않기 STR_COMPANY_PASSWORD_OK :{BLACK}이 회사에 새 비밀번호 부여 @@ -2236,8 +2233,6 @@ STR_NETWORK_MESSAGE_CLIENT_COMPANY_SPECTATE :*** {STRING} STR_NETWORK_MESSAGE_CLIENT_COMPANY_NEW :*** {STRING} 님이 새로운 회사({2:NUM}번)를 창설하셨습니다 STR_NETWORK_MESSAGE_CLIENT_LEFT :*** {STRING} 님이 퇴장하셨습니다 (사유: {2:STRING}) STR_NETWORK_MESSAGE_NAME_CHANGE :*** {STRING} 님의 이름이 {STRING}(으)로 바뀌었습니다 -STR_NETWORK_MESSAGE_GIVE_MONEY :*** {STRING} 님이 당신에게 {2:CURRENCY_LONG}만큼의 돈을 보내셨습니다 -STR_NETWORK_MESSAGE_GAVE_MONEY_AWAY :*** {1:STRING} 님에게 {2:CURRENCY_LONG}만큼의 돈을 보냈습니다 STR_NETWORK_MESSAGE_SERVER_SHUTDOWN :{WHITE}서버가 게임을 종료하였습니다 STR_NETWORK_MESSAGE_SERVER_REBOOT :{WHITE}서버가 재시작되고 있습니다...{}기다려주세요... STR_NETWORK_MESSAGE_KICKED :*** {STRING} - 서버에서 강제로 추방되었습니다. 사유: ({STRING}) diff --git a/src/lang/latin.txt b/src/lang/latin.txt index cec72a7fd1..e15aa32863 100644 --- a/src/lang/latin.txt +++ b/src/lang/latin.txt @@ -2262,7 +2262,6 @@ STR_NETWORK_COMPANY_LIST_NEW_COMPANY :Societas Nova # Network client list STR_NETWORK_CLIENTLIST_KICK :Dimittere STR_NETWORK_CLIENTLIST_BAN :Expellere -STR_NETWORK_CLIENTLIST_GIVE_MONEY :Dare pecuniam STR_NETWORK_CLIENTLIST_SPEAK_TO_ALL :Ad omnes loqui STR_NETWORK_CLIENTLIST_SPEAK_TO_COMPANY :Ad societatem loqui STR_NETWORK_CLIENTLIST_SPEAK_TO_CLIENT :Ad clientem loqui @@ -2271,8 +2270,6 @@ STR_NETWORK_SERVER :Servatrum STR_NETWORK_CLIENT :Cliens STR_NETWORK_SPECTATORS :Spectatores -STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}Inscribe quantitatem pecuniae dandam - # Network set password STR_COMPANY_PASSWORD_CANCEL :{BLACK}Relinquere tesseram inscriptam STR_COMPANY_PASSWORD_OK :{BLACK}Dare novam tesseram societati @@ -2372,8 +2369,6 @@ STR_NETWORK_MESSAGE_CLIENT_COMPANY_SPECTATE :*** {STRING} sp STR_NETWORK_MESSAGE_CLIENT_COMPANY_NEW :*** {STRING} novam societatem incipit (#{2:NUM}) STR_NETWORK_MESSAGE_CLIENT_LEFT :*** {STRING} ludum disiungit ({2:STRING}) STR_NETWORK_MESSAGE_NAME_CHANGE :*** {STRING} nomen suum mutat ad {STRING} -STR_NETWORK_MESSAGE_GIVE_MONEY :*** {STRING} tuae societati largitur {2:CURRENCY_LONG} -STR_NETWORK_MESSAGE_GAVE_MONEY_AWAY :*** Largiris {1:STRING} {2:CURRENCY_LONG} STR_NETWORK_MESSAGE_SERVER_SHUTDOWN :{WHITE}Servatrum iam clausum est STR_NETWORK_MESSAGE_SERVER_REBOOT :{WHITE}Servatrum resumit...{}Maneas... diff --git a/src/lang/latvian.txt b/src/lang/latvian.txt index dac079fae8..6b0493db9b 100644 --- a/src/lang/latvian.txt +++ b/src/lang/latvian.txt @@ -2126,7 +2126,6 @@ STR_NETWORK_COMPANY_LIST_NEW_COMPANY :Jauns uzņēmum # Network client list STR_NETWORK_CLIENTLIST_KICK :Izmest STR_NETWORK_CLIENTLIST_BAN :Aizliegt -STR_NETWORK_CLIENTLIST_GIVE_MONEY :Iedot naudu STR_NETWORK_CLIENTLIST_SPEAK_TO_ALL :Runāt ar visiem STR_NETWORK_CLIENTLIST_SPEAK_TO_COMPANY :Runāt ar uzņēmumu STR_NETWORK_CLIENTLIST_SPEAK_TO_CLIENT :Privāts ziņojums @@ -2135,8 +2134,6 @@ STR_NETWORK_SERVER :Serveris STR_NETWORK_CLIENT :Spēlētājs STR_NETWORK_SPECTATORS :Novērotāji -STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}Ievadiet cik daudz naudas vēlaties dot - # Network set password STR_COMPANY_PASSWORD_CANCEL :{BLACK}Nesaglabāt ievadīto paroli STR_COMPANY_PASSWORD_OK :{BLACK}Piešķirt uzņēmumam jaunu paroli @@ -2239,8 +2236,6 @@ STR_NETWORK_MESSAGE_CLIENT_COMPANY_SPECTATE :*** {STRING} ir STR_NETWORK_MESSAGE_CLIENT_COMPANY_NEW :*** {STRING} ir nodibinājis jaunu uzņēmumu (#{2:NUM}) STR_NETWORK_MESSAGE_CLIENT_LEFT :*** {STRING} ir pametis spēli ({2:STRING}) STR_NETWORK_MESSAGE_NAME_CHANGE :*** {STRING} ir nomainījis savu nosaukumu uz {STRING} -STR_NETWORK_MESSAGE_GIVE_MONEY :*** {STRING} iedeva jūsu uzņēmumam {2:CURRENCY_LONG} -STR_NETWORK_MESSAGE_GAVE_MONEY_AWAY :*** Jūs iedevāt {1:STRING} {2:CURRENCY_LONG} STR_NETWORK_MESSAGE_SERVER_SHUTDOWN :{WHITE}Serveris beidza sesiju STR_NETWORK_MESSAGE_SERVER_REBOOT :{WHITE}Serveris pārstartējas...{}Lūdzu uzgaidiet... STR_NETWORK_MESSAGE_KICKED :*** {STRING} tika izmests. Iemesls: ({STRING}) diff --git a/src/lang/lithuanian.txt b/src/lang/lithuanian.txt index 2306e5740b..4fb6ac9f47 100644 --- a/src/lang/lithuanian.txt +++ b/src/lang/lithuanian.txt @@ -2271,7 +2271,6 @@ STR_NETWORK_COMPANY_LIST_NEW_COMPANY :Nauja įmonė # Network client list STR_NETWORK_CLIENTLIST_KICK :Išmesti (Kick) STR_NETWORK_CLIENTLIST_BAN :Užblokuoti -STR_NETWORK_CLIENTLIST_GIVE_MONEY :Duoti pinigų STR_NETWORK_CLIENTLIST_SPEAK_TO_ALL :Sakyti visiems STR_NETWORK_CLIENTLIST_SPEAK_TO_COMPANY :Sakyti kompanijai STR_NETWORK_CLIENTLIST_SPEAK_TO_CLIENT :Privati žinutė @@ -2280,8 +2279,6 @@ STR_NETWORK_SERVER :Serveris STR_NETWORK_CLIENT :Žaidėjas STR_NETWORK_SPECTATORS :Stebėtojai -STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}Įveskite kiekį pinigų, kurį norite gauti - # Network set password STR_COMPANY_PASSWORD_CANCEL :{BLACK}Neišsaugotas įvestas slaptažodis STR_COMPANY_PASSWORD_OK :{BLACK}Suteiktas kompanijai naujas slaptažodis @@ -2381,8 +2378,6 @@ STR_NETWORK_MESSAGE_CLIENT_COMPANY_SPECTATE :*** {STRING} pr STR_NETWORK_MESSAGE_CLIENT_COMPANY_NEW :*** {STRING} pradėjo naują kompaniją (#{2:NUM}) STR_NETWORK_MESSAGE_CLIENT_LEFT :*** {STRING} paliko žaidimą ({2:STRING}) STR_NETWORK_MESSAGE_NAME_CHANGE :*** {STRING} pasikeitė vardą į {STRING} -STR_NETWORK_MESSAGE_GIVE_MONEY :*** {STRING} turi savo kompaniją {2:CURRENCY_LONG} -STR_NETWORK_MESSAGE_GAVE_MONEY_AWAY :*** Jūs gavote {1:STRING} {2:CURRENCY_LONG} STR_NETWORK_MESSAGE_SERVER_SHUTDOWN :{WHITE}Serveris užsidarė STR_NETWORK_MESSAGE_SERVER_REBOOT :{WHITE}Serveris persikrauna...{}Prašau palaukti... diff --git a/src/lang/luxembourgish.txt b/src/lang/luxembourgish.txt index 3a346d6fc5..23b78a77d9 100644 --- a/src/lang/luxembourgish.txt +++ b/src/lang/luxembourgish.txt @@ -2097,7 +2097,6 @@ STR_NETWORK_COMPANY_LIST_NEW_COMPANY :Nei Firma # Network client list STR_NETWORK_CLIENTLIST_KICK :Kicken STR_NETWORK_CLIENTLIST_BAN :Bannen -STR_NETWORK_CLIENTLIST_GIVE_MONEY :Sue ginn STR_NETWORK_CLIENTLIST_SPEAK_TO_ALL :Mat alle schwetzen STR_NETWORK_CLIENTLIST_SPEAK_TO_COMPANY :Mat der Firma schwetzen STR_NETWORK_CLIENTLIST_SPEAK_TO_CLIENT :Privatmessage @@ -2106,8 +2105,6 @@ STR_NETWORK_SERVER :Server STR_NETWORK_CLIENT :Spiller STR_NETWORK_SPECTATORS :Zuschauer -STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}Gëff de Betrag un deens du wëlls ginn - # Network set password STR_COMPANY_PASSWORD_CANCEL :{BLACK}Späicher d'Passwuert net STR_COMPANY_PASSWORD_OK :{BLACK}Benotz daat neit Passwuert fir d'Firma @@ -2208,8 +2205,6 @@ STR_NETWORK_MESSAGE_CLIENT_COMPANY_SPECTATE :*** {STRING} as STR_NETWORK_MESSAGE_CLIENT_COMPANY_NEW :*** {STRING} huet eng nei Firma gegrënnt (#{2:NUM}) STR_NETWORK_MESSAGE_CLIENT_LEFT :*** {STRING} huet d'Spill verlooss ({2:STRING}) STR_NETWORK_MESSAGE_NAME_CHANGE :*** {STRING} huet säin Numm op {STRING} gewiesselt -STR_NETWORK_MESSAGE_GIVE_MONEY :*** {STRING} huet ärer Firma {2:CURRENCY_LONG} ginn -STR_NETWORK_MESSAGE_GAVE_MONEY_AWAY :*** Du hues dem {1:STRING} {2:CURRENCY_LONG} ginn STR_NETWORK_MESSAGE_SERVER_SHUTDOWN :{WHITE}De Server huet d'Sessioun zougemaach STR_NETWORK_MESSAGE_SERVER_REBOOT :{WHITE}De Server gëtt nei gestart...{}W.e.g. waarden... STR_NETWORK_MESSAGE_KICKED :*** {STRING} gouf gekickt. Grond: ({STRING}) diff --git a/src/lang/malay.txt b/src/lang/malay.txt index deb046b043..0494addb0f 100644 --- a/src/lang/malay.txt +++ b/src/lang/malay.txt @@ -1801,7 +1801,6 @@ STR_NETWORK_COMPANY_LIST_NEW_COMPANY :Syarikat baru # Network client list STR_NETWORK_CLIENTLIST_KICK :Tendang STR_NETWORK_CLIENTLIST_BAN :Larang -STR_NETWORK_CLIENTLIST_GIVE_MONEY :Beri wang STR_NETWORK_CLIENTLIST_SPEAK_TO_ALL :Cakap kepada semua STR_NETWORK_CLIENTLIST_SPEAK_TO_COMPANY :Cakap kepada syarikat STR_NETWORK_CLIENTLIST_SPEAK_TO_CLIENT :Pesanan peribadi @@ -1810,8 +1809,6 @@ STR_NETWORK_SERVER :Pelayan STR_NETWORK_CLIENT :Klien STR_NETWORK_SPECTATORS :Penyaksi -STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}Masukkan jumlah wang anda hendak memberikan - # Network set password STR_COMPANY_PASSWORD_CANCEL :{BLACK}Jangan simpan kata laluan ini STR_COMPANY_PASSWORD_OK :{BLACK}Berikan syarikat kata laluan yang baru @@ -1911,8 +1908,6 @@ STR_NETWORK_MESSAGE_CLIENT_COMPANY_SPECTATE :*** {STRING} te STR_NETWORK_MESSAGE_CLIENT_COMPANY_NEW :*** {STRING} telah menubuhkan syarikat baru (#{2:NUM}) STR_NETWORK_MESSAGE_CLIENT_LEFT :*** {STRING} sudah meninggalkan permainan ini ({2:STRING}) STR_NETWORK_MESSAGE_NAME_CHANGE :*** {STRING} telah menukar namanya kepada {STRING} -STR_NETWORK_MESSAGE_GIVE_MONEY :*** {STRING} telah memberi syarikat anda {2:CURRENCY_LONG} -STR_NETWORK_MESSAGE_GAVE_MONEY_AWAY :*** Anda memberi {1:STRING} {2:CURRENCY_LONG} STR_NETWORK_MESSAGE_SERVER_SHUTDOWN :{WHITE}Pelayan telah menutup sesi ini STR_NETWORK_MESSAGE_SERVER_REBOOT :{WHITE}Pelayan sedang dimulakan semula...{}Harap bersabar... diff --git a/src/lang/norwegian_bokmal.txt b/src/lang/norwegian_bokmal.txt index 28c9a6c888..ea52a9a721 100644 --- a/src/lang/norwegian_bokmal.txt +++ b/src/lang/norwegian_bokmal.txt @@ -2100,7 +2100,6 @@ STR_NETWORK_COMPANY_LIST_NEW_COMPANY :Nytt firma # Network client list STR_NETWORK_CLIENTLIST_KICK :Kast ut STR_NETWORK_CLIENTLIST_BAN :Bannlys -STR_NETWORK_CLIENTLIST_GIVE_MONEY :Gi penger STR_NETWORK_CLIENTLIST_SPEAK_TO_ALL :Snakk til alle STR_NETWORK_CLIENTLIST_SPEAK_TO_COMPANY :Snakk til firma STR_NETWORK_CLIENTLIST_SPEAK_TO_CLIENT :Privat melding @@ -2109,8 +2108,6 @@ STR_NETWORK_SERVER :Tjener STR_NETWORK_CLIENT :Klient STR_NETWORK_SPECTATORS :Tilskuere -STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}Skriv inn hvor mye penger du ønsker å gi - # Network set password STR_COMPANY_PASSWORD_CANCEL :{BLACK}Ikke lagre passordet STR_COMPANY_PASSWORD_OK :{BLACK}Gi firmaet det nye passordet @@ -2211,8 +2208,6 @@ STR_NETWORK_MESSAGE_CLIENT_COMPANY_SPECTATE :*** {STRING} ha STR_NETWORK_MESSAGE_CLIENT_COMPANY_NEW :*** {STRING} har startet et nytt firma (nr. {2:NUM}) STR_NETWORK_MESSAGE_CLIENT_LEFT :*** {STRING} har forlatt spillet ({2:STRING}) STR_NETWORK_MESSAGE_NAME_CHANGE :*** {STRING} har forandret sitt navn til {STRING} -STR_NETWORK_MESSAGE_GIVE_MONEY :*** {STRING} ga {2:CURRENCY_LONG} til ditt firma -STR_NETWORK_MESSAGE_GAVE_MONEY_AWAY :*** Du ga {2:CURRENCY_LONG} til {1:STRING} STR_NETWORK_MESSAGE_SERVER_SHUTDOWN :{WHITE}Tjeneren avsluttet spillet STR_NETWORK_MESSAGE_SERVER_REBOOT :{WHITE}Tjeneren starter på nytt...{}Vennligst vent... diff --git a/src/lang/norwegian_nynorsk.txt b/src/lang/norwegian_nynorsk.txt index 67dece30cd..2ae8d0499d 100644 --- a/src/lang/norwegian_nynorsk.txt +++ b/src/lang/norwegian_nynorsk.txt @@ -1966,7 +1966,6 @@ STR_NETWORK_COMPANY_LIST_NEW_COMPANY :Nytt firma # Network client list STR_NETWORK_CLIENTLIST_KICK :Kast ut STR_NETWORK_CLIENTLIST_BAN :Svartelist -STR_NETWORK_CLIENTLIST_GIVE_MONEY :Gje pengar STR_NETWORK_CLIENTLIST_SPEAK_TO_ALL :Snakk til alle STR_NETWORK_CLIENTLIST_SPEAK_TO_COMPANY :Snakk til firma STR_NETWORK_CLIENTLIST_SPEAK_TO_CLIENT :Privat melding @@ -1975,8 +1974,6 @@ STR_NETWORK_SERVER :Tenar STR_NETWORK_CLIENT :Klient STR_NETWORK_SPECTATORS :Tilskodarar -STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}Skriv inn kor mykje pengar du ønskar å gje - # Network set password STR_COMPANY_PASSWORD_CANCEL :{BLACK}Ikkje lagre passordet STR_COMPANY_PASSWORD_OK :{BLACK}Gje firmaet det nye passordet @@ -2076,8 +2073,6 @@ STR_NETWORK_MESSAGE_CLIENT_COMPANY_SPECTATE :*** {STRING} ha STR_NETWORK_MESSAGE_CLIENT_COMPANY_NEW :*** {STRING} har starta eit nytt firma (#{2:NUM}) STR_NETWORK_MESSAGE_CLIENT_LEFT :*** {STRING} har forlatt spelet ({2:STRING}) STR_NETWORK_MESSAGE_NAME_CHANGE :*** {STRING} har endra namnet sitt til {STRING} -STR_NETWORK_MESSAGE_GIVE_MONEY :*** {STRING} gav firmaet ditt {2:CURRENCY_LONG} -STR_NETWORK_MESSAGE_GAVE_MONEY_AWAY :*** Du gav {1:STRING} {2:CURRENCY_LONG} STR_NETWORK_MESSAGE_SERVER_SHUTDOWN :{WHITE}Tenaren avslutta spelet STR_NETWORK_MESSAGE_SERVER_REBOOT :{WHITE}Tenaren startar om att...{}Vær venleg og vent... diff --git a/src/lang/polish.txt b/src/lang/polish.txt index 97609d63b0..34f25584ea 100644 --- a/src/lang/polish.txt +++ b/src/lang/polish.txt @@ -2502,7 +2502,6 @@ STR_NETWORK_COMPANY_LIST_NEW_COMPANY :Nowa firma # Network client list STR_NETWORK_CLIENTLIST_KICK :Wyrzuć STR_NETWORK_CLIENTLIST_BAN :Banuj -STR_NETWORK_CLIENTLIST_GIVE_MONEY :Przekazanie pieniędzy STR_NETWORK_CLIENTLIST_SPEAK_TO_ALL :Mów do wszystkich STR_NETWORK_CLIENTLIST_SPEAK_TO_COMPANY :Mów do firmy STR_NETWORK_CLIENTLIST_SPEAK_TO_CLIENT :Prywatna wiadomość @@ -2511,8 +2510,6 @@ STR_NETWORK_SERVER :Serwer STR_NETWORK_CLIENT :Klient STR_NETWORK_SPECTATORS :Widzowie -STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}Wprowadź ilość pieniędzy, które chcesz przekazać - # Network set password STR_COMPANY_PASSWORD_CANCEL :{BLACK}Nie zapisuj podanego hasła STR_COMPANY_PASSWORD_OK :{BLACK}Nadaj firmie nowe hasło @@ -2615,8 +2612,6 @@ STR_NETWORK_MESSAGE_CLIENT_COMPANY_SPECTATE :*** {STRING} do STR_NETWORK_MESSAGE_CLIENT_COMPANY_NEW :*** {STRING} założył nową firmę (#{2:NUM}) STR_NETWORK_MESSAGE_CLIENT_LEFT :*** {STRING} opuścił grę ({2:STRING}) STR_NETWORK_MESSAGE_NAME_CHANGE :*** {STRING} zmienił/zmieniła swoje imię na {STRING} -STR_NETWORK_MESSAGE_GIVE_MONEY :*** {STRING} dał/dała twojemu przedsiębiorstwu {2:CURRENCY_LONG} -STR_NETWORK_MESSAGE_GAVE_MONEY_AWAY :*** Dałeś {1:STRING} {2:CURRENCY_LONG} STR_NETWORK_MESSAGE_SERVER_SHUTDOWN :{WHITE}Serwer zamknął sesję STR_NETWORK_MESSAGE_SERVER_REBOOT :{WHITE}Restart serwera...{}Proszę czekać... STR_NETWORK_MESSAGE_KICKED :*** {STRING} został wyrzucony. Powód: ({STRING}) @@ -3051,23 +3046,23 @@ STR_LAI_RAIL_DESCRIPTION_TRACK :{G=m}Tor kolejo STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_SIGNALS :Tor kolejowy z semaforam blokowymi STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRESIGNALS :Tor kolejowy z semaforami wejściowymi STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXITSIGNALS :Tor kolejowy z semaforem wyjściowym -STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBOSIGNALS :Tor kolejowy z semaforami złożonymi (combo) +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBOSIGNALS :Tor kolejowy z semaforami złożonymi STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PBSSIGNALS :Tor kolejowy z semaforami trasy STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NOENTRYSIGNALS :Tor kolejowy z jednokierunkowymi semaforami trasy STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_PRESIGNALS :Tor kolejowy z semaforami blokowymi i semaforami wejścia STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_EXITSIGNALS :Tor kolejowy z semaforami blokowymi i semaforami wyjścia -STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_COMBOSIGNALS :Tor kolejowy z semaforami blokowymi i semaforami złożonymi (combo) +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_COMBOSIGNALS :Tor kolejowy z semaforami blokowymi i semaforami złożonymi STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_PBSSIGNALS :Tor kolejowy z semaforami blokowymi i semaforami trasy STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_NOENTRYSIGNALS :Tor kolejowy z semaforami blokowymi i jednokierunkowymi semaforami trasy STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_EXITSIGNALS :Tor kolejowy z semaforami wejścia i wyjścia -STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_COMBOSIGNALS :Tor kolejowy z semaforami wejścia i semaforami złożonymi (combo) +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_COMBOSIGNALS :Tor kolejowy z semaforami wejścia i semaforami złożonymi STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_PBSSIGNALS :Tor kolejowy z semaforami wejścia i semaforami trasy STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_NOENTRYSIGNALS :Tor kolejowy z semaforami wejścia i jednokierunkowymi semaforami trasy -STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_COMBOSIGNALS :Tor kolejowy z semaforami wyjścia i semaforami złożonymi (combo) +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_COMBOSIGNALS :Tor kolejowy z semaforami wyjścia i semaforami złożonymi STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_PBSSIGNALS :Tor kolejowy z semaforami wyjścia i semaforami trasy STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_NOENTRYSIGNALS :Tor kolejowy z semaforami wyjścia i jednokierunkowymi semaforami trasy -STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBO_PBSSIGNALS :Tor kolejowy z semaforami złożonymi (combo) i semaforami trasy -STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBO_NOENTRYSIGNALS :Tor kolejowy z semaforami złożonymi (combo) i jednokierunkowymi semaforami trasy +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBO_PBSSIGNALS :Tor kolejowy z semaforami złożonymi i semaforami trasy +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBO_NOENTRYSIGNALS :Tor kolejowy z semaforami złożonymi i jednokierunkowymi semaforami trasy STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PBS_NOENTRYSIGNALS :Tor kolejowy z semaforami trasy i jednokierunkowymi semaforami trasy STR_LAI_RAIL_DESCRIPTION_TRAIN_DEPOT :{G=f}Warsztaty kolejowe @@ -3450,7 +3445,7 @@ STR_NEWGRF_BROKEN :{WHITE}Zachowan STR_NEWGRF_BROKEN_POWERED_WAGON :{WHITE}Zmieniony stan wagonu silnikowego '{1:ENGINE}', gdy był poza halą warsztatów STR_NEWGRF_BROKEN_VEHICLE_LENGTH :{WHITE}Zmiana długości pojazdu '{1:ENGINE}' , który nie jest zatrzymany w hali STR_NEWGRF_BROKEN_CAPACITY :{WHITE}Zmieniono ładowność pojazdu na '{1:ENGINE}', kiedy nie był w hali warsztatów lub w trakcie przebudowy -STR_BROKEN_VEHICLE_LENGTH :{WHITE}Pociąg '{VEHICLE}' należący do '{COMPANY}' ma niepoprawną długość. Prawdopodobnie spowodowane jest to problemami z NewGRF'ami. Gra może się odsychronizować lub się zawiesić +STR_BROKEN_VEHICLE_LENGTH :{WHITE}Pociąg '{VEHICLE}' należący do '{COMPANY}' ma niepoprawną długość. Prawdopodobnie spowodowane jest to problemami z NewGRF'ami. Gra może się odsychronizować lub zawiesić STR_NEWGRF_BUGGY :{WHITE}NewGRF '{0:STRING}' dostarcza niepoprawnych danych STR_NEWGRF_BUGGY_ARTICULATED_CARGO :{WHITE}Informacje o ładunku/naprawie dla '{1:ENGINE}' różnią się od listy zakupu po zbudowaniu. Może to spowodować, że autoodnowienie/-zamiana nie wykona remontu poprawnie diff --git a/src/lang/portuguese.txt b/src/lang/portuguese.txt index 85cf7fdaf3..a6da1ac2ae 100644 --- a/src/lang/portuguese.txt +++ b/src/lang/portuguese.txt @@ -2086,7 +2086,6 @@ STR_NETWORK_COMPANY_LIST_NEW_COMPANY :Nova empresa # Network client list STR_NETWORK_CLIENTLIST_KICK :Expulsar STR_NETWORK_CLIENTLIST_BAN :Banir -STR_NETWORK_CLIENTLIST_GIVE_MONEY :Dar dinheiro STR_NETWORK_CLIENTLIST_SPEAK_TO_ALL :Falar com todos STR_NETWORK_CLIENTLIST_SPEAK_TO_COMPANY :Falar com a empresa STR_NETWORK_CLIENTLIST_SPEAK_TO_CLIENT :Mensagem privada @@ -2095,8 +2094,6 @@ STR_NETWORK_SERVER :Servidor STR_NETWORK_CLIENT :Cliente STR_NETWORK_SPECTATORS :Espectadores -STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}Insira a quantidade de dinheiro que pretende dar - # Network set password STR_COMPANY_PASSWORD_CANCEL :{BLACK}Não gravar a palavra-chave introduzida STR_COMPANY_PASSWORD_OK :{BLACK}Atribuir nova palavra-chave à empresa @@ -2196,8 +2193,6 @@ STR_NETWORK_MESSAGE_CLIENT_COMPANY_SPECTATE :*** {STRING} en STR_NETWORK_MESSAGE_CLIENT_COMPANY_NEW :*** {STRING} iniciou uma nova empresa (#{2:NUM}) STR_NETWORK_MESSAGE_CLIENT_LEFT :*** {STRING} deixou o jogo ({2:STRING}) STR_NETWORK_MESSAGE_NAME_CHANGE :*** {STRING} mudou o seu nome para {STRING} -STR_NETWORK_MESSAGE_GIVE_MONEY :*** {STRING} deu à sua empresa {2:CURRENCY_LONG} -STR_NETWORK_MESSAGE_GAVE_MONEY_AWAY :*** Deu {1:STRING} {2:CURRENCY_LONG} STR_NETWORK_MESSAGE_SERVER_SHUTDOWN :{WHITE}O servidor fechou a sessão STR_NETWORK_MESSAGE_SERVER_REBOOT :{WHITE}O servidor está a reiniciar...{}Por favor espere... diff --git a/src/lang/romanian.txt b/src/lang/romanian.txt index 4a421d0d2d..7351f34497 100644 --- a/src/lang/romanian.txt +++ b/src/lang/romanian.txt @@ -2035,7 +2035,6 @@ STR_NETWORK_COMPANY_LIST_NEW_COMPANY :Companie nouă # Network client list STR_NETWORK_CLIENTLIST_KICK :Dă afară STR_NETWORK_CLIENTLIST_BAN :Interzice acces -STR_NETWORK_CLIENTLIST_GIVE_MONEY :Donează bani STR_NETWORK_CLIENTLIST_SPEAK_TO_ALL :Vorbeşte către toţi STR_NETWORK_CLIENTLIST_SPEAK_TO_COMPANY :Vorbeşte către companie STR_NETWORK_CLIENTLIST_SPEAK_TO_CLIENT :Mesaj privat @@ -2044,8 +2043,6 @@ STR_NETWORK_SERVER :Server STR_NETWORK_CLIENT :Client STR_NETWORK_SPECTATORS :Spectatori -STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}Introduceţi suma pe care o oferiţi - # Network set password STR_COMPANY_PASSWORD_CANCEL :{BLACK}Parola introdusă nu se va salva STR_COMPANY_PASSWORD_OK :{BLACK}Schimbarea parolei pentru companie @@ -2145,8 +2142,6 @@ STR_NETWORK_MESSAGE_CLIENT_COMPANY_SPECTATE :*** {STRING} a STR_NETWORK_MESSAGE_CLIENT_COMPANY_NEW :*** {STRING} a început o companie nouă (#{2:NUM}) STR_NETWORK_MESSAGE_CLIENT_LEFT :*** {STRING} a ieşit din joc ({2:STRING}) STR_NETWORK_MESSAGE_NAME_CHANGE :*** {STRING} şi-a schimbat numele în {STRING} -STR_NETWORK_MESSAGE_GIVE_MONEY :*** {STRING} a dat companiei tale {2:CURRENCY_LONG} -STR_NETWORK_MESSAGE_GAVE_MONEY_AWAY :*** Ai dat {1:STRING} {2:CURRENCY_LONG} STR_NETWORK_MESSAGE_SERVER_SHUTDOWN :{WHITE}Serverul a închis conexiunea STR_NETWORK_MESSAGE_SERVER_REBOOT :{WHITE}Serverul este repornit...{}Vă rugăm aşteptaţi... diff --git a/src/lang/russian.txt b/src/lang/russian.txt index 3be3a6762f..c8d9f1cbd3 100644 --- a/src/lang/russian.txt +++ b/src/lang/russian.txt @@ -2274,7 +2274,6 @@ STR_NETWORK_COMPANY_LIST_NEW_COMPANY :Новая ко # Network client list STR_NETWORK_CLIENTLIST_KICK :Отключить STR_NETWORK_CLIENTLIST_BAN :Бан -STR_NETWORK_CLIENTLIST_GIVE_MONEY :Передать деньги STR_NETWORK_CLIENTLIST_SPEAK_TO_ALL :Сказать всем STR_NETWORK_CLIENTLIST_SPEAK_TO_COMPANY :Говорить с компанией STR_NETWORK_CLIENTLIST_SPEAK_TO_CLIENT :Личное сообщение @@ -2283,8 +2282,6 @@ STR_NETWORK_SERVER :Сервер STR_NETWORK_CLIENT :Клиент STR_NETWORK_SPECTATORS :Наблюдатели -STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}Введите сумму денег, которую вы хотите передать - # Network set password STR_COMPANY_PASSWORD_CANCEL :{BLACK}Не сохранять пароль STR_COMPANY_PASSWORD_OK :{BLACK}Задать новый пароль компании @@ -2387,8 +2384,6 @@ STR_NETWORK_MESSAGE_CLIENT_COMPANY_SPECTATE :*** {STRING} п STR_NETWORK_MESSAGE_CLIENT_COMPANY_NEW :*** {STRING} основал новую компанию (#{2:NUM}) STR_NETWORK_MESSAGE_CLIENT_LEFT :*** {STRING} покинул игру ({2:STRING}) STR_NETWORK_MESSAGE_NAME_CHANGE :*** {STRING} изменил имя на {STRING} -STR_NETWORK_MESSAGE_GIVE_MONEY :*** {STRING} передал вашей компании {2:CURRENCY_LONG} -STR_NETWORK_MESSAGE_GAVE_MONEY_AWAY :*** Вы передали {1:STRING} {2:CURRENCY_LONG} STR_NETWORK_MESSAGE_SERVER_SHUTDOWN :{WHITE}Сервер закрыл сессию STR_NETWORK_MESSAGE_SERVER_REBOOT :{WHITE}Сервер перезапускается...{}Пожалуйста, подождите... STR_NETWORK_MESSAGE_KICKED :*** {STRING} был исключён из игры. Причина: ({STRING}) diff --git a/src/lang/serbian.txt b/src/lang/serbian.txt index b2946c3a81..91ab5a559e 100644 --- a/src/lang/serbian.txt +++ b/src/lang/serbian.txt @@ -2249,7 +2249,6 @@ STR_NETWORK_COMPANY_LIST_NEW_COMPANY :Novo preduzeće # Network client list STR_NETWORK_CLIENTLIST_KICK :Izbaci STR_NETWORK_CLIENTLIST_BAN :Zabrani pristup -STR_NETWORK_CLIENTLIST_GIVE_MONEY :Daj novac STR_NETWORK_CLIENTLIST_SPEAK_TO_ALL :Razgovaraj sa svima STR_NETWORK_CLIENTLIST_SPEAK_TO_COMPANY :Razgovaraj sa ekipom STR_NETWORK_CLIENTLIST_SPEAK_TO_CLIENT :Privatna poruka @@ -2258,8 +2257,6 @@ STR_NETWORK_SERVER :Server STR_NETWORK_CLIENT :Igrač STR_NETWORK_SPECTATORS :Posmatrači -STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}Unesite svotu novca koju želite dati - # Network set password STR_COMPANY_PASSWORD_CANCEL :{BLACK}Otkaži unetu lozinku STR_COMPANY_PASSWORD_OK :{BLACK}Postavi preduzeću novu lozinku @@ -2359,8 +2356,6 @@ STR_NETWORK_MESSAGE_CLIENT_COMPANY_SPECTATE :*** {STRING} se STR_NETWORK_MESSAGE_CLIENT_COMPANY_NEW :*** {STRING} je osnovao novo preduzeće (#{2:NUM}) STR_NETWORK_MESSAGE_CLIENT_LEFT :*** {STRING} je napustio partiju ({2:STRING}) STR_NETWORK_MESSAGE_NAME_CHANGE :*** {STRING} je promenio/la ime u {STRING} -STR_NETWORK_MESSAGE_GIVE_MONEY :*** {STRING} je dao vašem preduzeću {2:CURRENCY_LONG} -STR_NETWORK_MESSAGE_GAVE_MONEY_AWAY :*** Dali ste {1:STRING} {2:CURRENCY_LONG} STR_NETWORK_MESSAGE_SERVER_SHUTDOWN :{WHITE}Server je zatvorio sesiju STR_NETWORK_MESSAGE_SERVER_REBOOT :{WHITE}Server se ponovo pokreće...{}Molimo sačekajte... diff --git a/src/lang/simplified_chinese.txt b/src/lang/simplified_chinese.txt index f86d4a1633..ae28ed2b79 100644 --- a/src/lang/simplified_chinese.txt +++ b/src/lang/simplified_chinese.txt @@ -2098,7 +2098,6 @@ STR_NETWORK_COMPANY_LIST_NEW_COMPANY :新公司 # Network client list STR_NETWORK_CLIENTLIST_KICK :踢出 STR_NETWORK_CLIENTLIST_BAN :禁止 -STR_NETWORK_CLIENTLIST_GIVE_MONEY :送钱 STR_NETWORK_CLIENTLIST_SPEAK_TO_ALL :向全体人广播 STR_NETWORK_CLIENTLIST_SPEAK_TO_COMPANY :向本公司广播 STR_NETWORK_CLIENTLIST_SPEAK_TO_CLIENT :私聊 @@ -2107,8 +2106,6 @@ STR_NETWORK_SERVER :服务器 STR_NETWORK_CLIENT :客户端 STR_NETWORK_SPECTATORS :旁观者 -STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}请输入您想赠与的资金数 - # Network set password STR_COMPANY_PASSWORD_CANCEL :{BLACK}不保存所输入的密码 STR_COMPANY_PASSWORD_OK :{BLACK}为公司设置新密码 @@ -2209,8 +2206,6 @@ STR_NETWORK_MESSAGE_CLIENT_COMPANY_SPECTATE :*** {STRING} STR_NETWORK_MESSAGE_CLIENT_COMPANY_NEW :*** {STRING} 成立了新公司 (#{2:NUM}) STR_NETWORK_MESSAGE_CLIENT_LEFT :*** {STRING} 已离开游戏 ({2:STRING}) STR_NETWORK_MESSAGE_NAME_CHANGE :*** {STRING} 已更改姓名为 {STRING} -STR_NETWORK_MESSAGE_GIVE_MONEY :*** {STRING} 送给您的公司 {2:CURRENCY_LONG} -STR_NETWORK_MESSAGE_GAVE_MONEY_AWAY :*** 您送了 {2:CURRENCY_LONG} 给 {1:STRING} STR_NETWORK_MESSAGE_SERVER_SHUTDOWN :{WHITE}服务器关闭了进程 STR_NETWORK_MESSAGE_SERVER_REBOOT :{WHITE}服务器正在重新启动。{}请等待…… STR_NETWORK_MESSAGE_KICKED :*** {STRING} 被踢出服务器。原因:({STRING}) diff --git a/src/lang/slovak.txt b/src/lang/slovak.txt index 2bf66cc612..48bc3ab7aa 100644 --- a/src/lang/slovak.txt +++ b/src/lang/slovak.txt @@ -2190,7 +2190,6 @@ STR_NETWORK_COMPANY_LIST_NEW_COMPANY :Nová spoločno # Network client list STR_NETWORK_CLIENTLIST_KICK :Vyhodit STR_NETWORK_CLIENTLIST_BAN :Ban -STR_NETWORK_CLIENTLIST_GIVE_MONEY :Previesť peniaze STR_NETWORK_CLIENTLIST_SPEAK_TO_ALL :Napísať správu všetkým STR_NETWORK_CLIENTLIST_SPEAK_TO_COMPANY :Napísať spoločnosti správu STR_NETWORK_CLIENTLIST_SPEAK_TO_CLIENT :Súkromná správa @@ -2199,8 +2198,6 @@ STR_NETWORK_SERVER :Server STR_NETWORK_CLIENT :Klient STR_NETWORK_SPECTATORS :Pozorovatelia -STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}Vložte čiastku ktorú chcete dať - # Network set password STR_COMPANY_PASSWORD_CANCEL :{BLACK}Neukladať zadané heslo STR_COMPANY_PASSWORD_OK :{BLACK}Nastaviť spoločnosti nové heslo @@ -2303,8 +2300,6 @@ STR_NETWORK_MESSAGE_CLIENT_COMPANY_SPECTATE :*** {STRING} sa STR_NETWORK_MESSAGE_CLIENT_COMPANY_NEW :*** {STRING} založil novú spoločnosť (č. {2:NUM}) STR_NETWORK_MESSAGE_CLIENT_LEFT :*** {STRING} opustil hru ({2:STRING}) STR_NETWORK_MESSAGE_NAME_CHANGE :*** {STRING} zmenil/-a svoje meno na {STRING} -STR_NETWORK_MESSAGE_GIVE_MONEY :*** {STRING} dal ti spoločnosť {2:CURRENCY_LONG} -STR_NETWORK_MESSAGE_GAVE_MONEY_AWAY :*** Dal si {1:STRING} {2:CURRENCY_LONG} STR_NETWORK_MESSAGE_SERVER_SHUTDOWN :{WHITE}Server ukoncil relaciu STR_NETWORK_MESSAGE_SERVER_REBOOT :{WHITE}Server sa reštartuje...{}Čakajte prosím... STR_NETWORK_MESSAGE_KICKED :*** Hráč {STRING} bol vyhodený. Dôvod: ({STRING}) diff --git a/src/lang/slovenian.txt b/src/lang/slovenian.txt index 173c03e63a..f1396d8717 100644 --- a/src/lang/slovenian.txt +++ b/src/lang/slovenian.txt @@ -2198,7 +2198,6 @@ STR_NETWORK_COMPANY_LIST_NEW_COMPANY :Novo podjetje # Network client list STR_NETWORK_CLIENTLIST_KICK :Brcni STR_NETWORK_CLIENTLIST_BAN :Blokiraj -STR_NETWORK_CLIENTLIST_GIVE_MONEY :Daj denar STR_NETWORK_CLIENTLIST_SPEAK_TO_ALL :Pogovor vsem STR_NETWORK_CLIENTLIST_SPEAK_TO_COMPANY :Pogovor podjetju STR_NETWORK_CLIENTLIST_SPEAK_TO_CLIENT :Zasebno sporočilo @@ -2207,8 +2206,6 @@ STR_NETWORK_SERVER :Strežnik STR_NETWORK_CLIENT :Gost STR_NETWORK_SPECTATORS :Gledalci -STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}Vpiši znesek denarja za darovanje - # Network set password STR_COMPANY_PASSWORD_CANCEL :{BLACK}Ne shrani vnešenega gesla STR_COMPANY_PASSWORD_OK :{BLACK}Dodeli družbi novo geslo @@ -2308,8 +2305,6 @@ STR_NETWORK_MESSAGE_CLIENT_COMPANY_SPECTATE :*** {STRING} se STR_NETWORK_MESSAGE_CLIENT_COMPANY_NEW :*** {STRING} na novo ustvarja podjetje (#{2:NUM}) STR_NETWORK_MESSAGE_CLIENT_LEFT :*** {STRING} odstopa od igre ({2:STRING}) STR_NETWORK_MESSAGE_NAME_CHANGE :*** {STRING} je opravil/a spremembo imena v {STRING} -STR_NETWORK_MESSAGE_GIVE_MONEY :*** {STRING} je podarilo tvojemu podjetju {2:CURRENCY_LONG} -STR_NETWORK_MESSAGE_GAVE_MONEY_AWAY :*** Podjetju {1:STRING} je bil podarjen znesek {2:CURRENCY_LONG} STR_NETWORK_MESSAGE_SERVER_SHUTDOWN :{WHITE}Strežnik je zaprl sejo STR_NETWORK_MESSAGE_SERVER_REBOOT :{WHITE}Strežnik se zaganja...{}Prosim počakaj... diff --git a/src/lang/spanish.txt b/src/lang/spanish.txt index fe540d34be..1838c52fba 100644 --- a/src/lang/spanish.txt +++ b/src/lang/spanish.txt @@ -2099,7 +2099,6 @@ STR_NETWORK_COMPANY_LIST_NEW_COMPANY :Nueva empresa # Network client list STR_NETWORK_CLIENTLIST_KICK :Expulsar STR_NETWORK_CLIENTLIST_BAN :Banear -STR_NETWORK_CLIENTLIST_GIVE_MONEY :Dar dinero STR_NETWORK_CLIENTLIST_SPEAK_TO_ALL :Hablar a todos STR_NETWORK_CLIENTLIST_SPEAK_TO_COMPANY :Hablar a empresa STR_NETWORK_CLIENTLIST_SPEAK_TO_CLIENT :Mensaje privado @@ -2108,8 +2107,6 @@ STR_NETWORK_SERVER :Servidor STR_NETWORK_CLIENT :Cliente STR_NETWORK_SPECTATORS :Espectadores -STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}Introduce la cantidad de dinero que deseas dar - # Network set password STR_COMPANY_PASSWORD_CANCEL :{BLACK}No guardar la contraseña introducida STR_COMPANY_PASSWORD_OK :{BLACK}Asignar a la empresa una nueva contraseña @@ -2210,8 +2207,6 @@ STR_NETWORK_MESSAGE_CLIENT_COMPANY_SPECTATE :*** {STRING} se STR_NETWORK_MESSAGE_CLIENT_COMPANY_NEW :*** {STRING} ha creado una nueva empresa (#{2:NUM}) STR_NETWORK_MESSAGE_CLIENT_LEFT :*** {STRING} ha abandonado el juego ({2:STRING}) STR_NETWORK_MESSAGE_NAME_CHANGE :*** {STRING} ha cambiado su nombre a {STRING} -STR_NETWORK_MESSAGE_GIVE_MONEY :*** {STRING} da a tu empresa {2:CURRENCY_LONG} -STR_NETWORK_MESSAGE_GAVE_MONEY_AWAY :*** Entregas a la empresa {1:STRING} {2:CURRENCY_LONG} STR_NETWORK_MESSAGE_SERVER_SHUTDOWN :{WHITE}El servidor ha cerrado la sesión STR_NETWORK_MESSAGE_SERVER_REBOOT :{WHITE}Se está reiniciando el servidor...{}Espere por favor... STR_NETWORK_MESSAGE_KICKED :*** {STRING} ha sido expulsado. Razón: ({STRING}) diff --git a/src/lang/spanish_MX.txt b/src/lang/spanish_MX.txt index bdde20683d..518c49b05d 100644 --- a/src/lang/spanish_MX.txt +++ b/src/lang/spanish_MX.txt @@ -2123,7 +2123,6 @@ STR_NETWORK_COMPANY_LIST_NEW_COMPANY :Nueva empresa # Network client list STR_NETWORK_CLIENTLIST_KICK :Expulsar STR_NETWORK_CLIENTLIST_BAN :Prohibir acceso -STR_NETWORK_CLIENTLIST_GIVE_MONEY :Dar dinero STR_NETWORK_CLIENTLIST_SPEAK_TO_ALL :Hablar a todos STR_NETWORK_CLIENTLIST_SPEAK_TO_COMPANY :Hablar a una empresa STR_NETWORK_CLIENTLIST_SPEAK_TO_CLIENT :Mensaje privado @@ -2132,8 +2131,6 @@ STR_NETWORK_SERVER :Servidor STR_NETWORK_CLIENT :Cliente STR_NETWORK_SPECTATORS :Espectadores -STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}Introducir la cantidad de dinero a dar - # Network set password STR_COMPANY_PASSWORD_CANCEL :{BLACK}No guardar la contraseña introducida STR_COMPANY_PASSWORD_OK :{BLACK}Asignar a la empresa la nueva contraseña @@ -2236,8 +2233,6 @@ STR_NETWORK_MESSAGE_CLIENT_COMPANY_SPECTATE :*** {STRING} se STR_NETWORK_MESSAGE_CLIENT_COMPANY_NEW :*** {STRING} creó una nueva empresa (#{2:NUM}) STR_NETWORK_MESSAGE_CLIENT_LEFT :*** {STRING} salió de la partida ({2:STRING}) STR_NETWORK_MESSAGE_NAME_CHANGE :*** {STRING} cambió su nombre a {STRING} -STR_NETWORK_MESSAGE_GIVE_MONEY :*** {STRING} le dio a tu empresa {2:CURRENCY_LONG} -STR_NETWORK_MESSAGE_GAVE_MONEY_AWAY :*** {2:CURRENCY_LONG} cedidos a la empresa {1:STRING} STR_NETWORK_MESSAGE_SERVER_SHUTDOWN :{WHITE}El servidor ha cerrado la sesión STR_NETWORK_MESSAGE_SERVER_REBOOT :{WHITE}Se está reiniciando el servidor...{}Espera por favor... STR_NETWORK_MESSAGE_KICKED :*** {STRING} ha sido expulsado. Razón: ({STRING}) diff --git a/src/lang/swedish.txt b/src/lang/swedish.txt index 53cdf9bc20..b384abd8bb 100644 --- a/src/lang/swedish.txt +++ b/src/lang/swedish.txt @@ -2098,7 +2098,6 @@ STR_NETWORK_COMPANY_LIST_NEW_COMPANY :Nytt företag # Network client list STR_NETWORK_CLIENTLIST_KICK :Kasta ut STR_NETWORK_CLIENTLIST_BAN :Bannlys -STR_NETWORK_CLIENTLIST_GIVE_MONEY :Ge pengar STR_NETWORK_CLIENTLIST_SPEAK_TO_ALL :Prata med alla STR_NETWORK_CLIENTLIST_SPEAK_TO_COMPANY :Prata med alla i företaget STR_NETWORK_CLIENTLIST_SPEAK_TO_CLIENT :Privat meddelande @@ -2107,8 +2106,6 @@ STR_NETWORK_SERVER :Server STR_NETWORK_CLIENT :Klient STR_NETWORK_SPECTATORS :Åskådare -STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}Skriv in mängd pengar som du vill ge - # Network set password STR_COMPANY_PASSWORD_CANCEL :{BLACK}Spara inte det inmatade lösenordet STR_COMPANY_PASSWORD_OK :{BLACK}Ge företaget det nya lösenordet @@ -2209,8 +2206,6 @@ STR_NETWORK_MESSAGE_CLIENT_COMPANY_SPECTATE :*** {STRING} ha STR_NETWORK_MESSAGE_CLIENT_COMPANY_NEW :*** {STRING} har startat ett nytt företag (#{2:NUM}) STR_NETWORK_MESSAGE_CLIENT_LEFT :*** {STRING} har lämnat spelet ({2:STRING}) STR_NETWORK_MESSAGE_NAME_CHANGE :*** {STRING} har ändrat hans/hennes namn till {STRING} -STR_NETWORK_MESSAGE_GIVE_MONEY :*** {STRING} gav ditt företag {2:CURRENCY_LONG} -STR_NETWORK_MESSAGE_GAVE_MONEY_AWAY :*** You gave {1:STRING} {2:CURRENCY_LONG} STR_NETWORK_MESSAGE_SERVER_SHUTDOWN :{WHITE}Servern avslutade sessionen STR_NETWORK_MESSAGE_SERVER_REBOOT :{WHITE}Servern startar om...{}Var vänlig vänta... STR_NETWORK_MESSAGE_KICKED :*** {STRING} kastades ut. Orsak: ({STRING}) diff --git a/src/lang/tamil.txt b/src/lang/tamil.txt index 054bf168cc..dffb4c20ae 100644 --- a/src/lang/tamil.txt +++ b/src/lang/tamil.txt @@ -1879,7 +1879,6 @@ STR_NETWORK_COMPANY_LIST_NEW_COMPANY :புதிய # Network client list STR_NETWORK_CLIENTLIST_KICK :உதை STR_NETWORK_CLIENTLIST_BAN :அனுமதிக்காதே -STR_NETWORK_CLIENTLIST_GIVE_MONEY :பணம் தா STR_NETWORK_CLIENTLIST_SPEAK_TO_ALL :அனைவருடனும் பேசு STR_NETWORK_CLIENTLIST_SPEAK_TO_COMPANY :நிறுவனத்திடம் பேசு STR_NETWORK_CLIENTLIST_SPEAK_TO_CLIENT :இரகசிய தகவல் @@ -1888,8 +1887,6 @@ STR_NETWORK_SERVER :சர்வர STR_NETWORK_CLIENT :Client STR_NETWORK_SPECTATORS :கவனிப்பவர்கள் -STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}கொடுக்கப்படும் பணத்தின் அளவினை இடவும் - # Network set password STR_COMPANY_PASSWORD_CANCEL :{BLACK}கடவுச்சொல்லினை நினைவில் வைத்திருக்காதே STR_COMPANY_PASSWORD_OK :{BLACK}நிற்வனத்திற்கு புதிய கடவுச்சொல்லினை கொடுக்கவும் @@ -1986,8 +1983,6 @@ STR_NETWORK_MESSAGE_CLIENT_COMPANY_SPECTATE :*** {STRING} STR_NETWORK_MESSAGE_CLIENT_COMPANY_NEW :*** {STRING} புதிய நிறுவனம் (#{2:NUM})வை துவக்கி உள்ளார் STR_NETWORK_MESSAGE_CLIENT_LEFT :*** {STRING} ஆட்டத்தை விட்டு வெளியேரினார் ({2:STRING}) STR_NETWORK_MESSAGE_NAME_CHANGE :*** {STRING} அவரது/அவளது பெயரினை {STRING} என்று மாற்றினார் -STR_NETWORK_MESSAGE_GIVE_MONEY :*** {STRING} தங்கள் நிறுவனத்திற்கு {2:CURRENCY_LONG} கொடுத்தார் -STR_NETWORK_MESSAGE_GAVE_MONEY_AWAY :*** நீங்கள் கொடுத்தீற்கள் {1:STRING} {2:CURRENCY_LONG} STR_NETWORK_MESSAGE_SERVER_SHUTDOWN :{WHITE}சர்வர் ஆட்டத்தினை முடித்தது STR_NETWORK_MESSAGE_SERVER_REBOOT :{WHITE}சர்வர் மீண்டும் தொடங்குகிறது...{}சற்று பொறுக்கவும்... STR_NETWORK_MESSAGE_KICKED :*** {STRING} வெளியேற்றப்பட்டார். காரணம்: ({STRING}) diff --git a/src/lang/thai.txt b/src/lang/thai.txt index a8ce919b21..32d342e5e4 100644 --- a/src/lang/thai.txt +++ b/src/lang/thai.txt @@ -1991,7 +1991,6 @@ STR_NETWORK_COMPANY_LIST_NEW_COMPANY :บริษั # Network client list STR_NETWORK_CLIENTLIST_KICK :เตะ STR_NETWORK_CLIENTLIST_BAN :แบน -STR_NETWORK_CLIENTLIST_GIVE_MONEY :ให้เงิน STR_NETWORK_CLIENTLIST_SPEAK_TO_ALL :พูดกับผู้เล่นทั้งหมด STR_NETWORK_CLIENTLIST_SPEAK_TO_COMPANY :พูดกับผู้เล่นในบริษัทเดียวกัน STR_NETWORK_CLIENTLIST_SPEAK_TO_CLIENT :ข้อความส่วนตัว @@ -2000,8 +1999,6 @@ STR_NETWORK_SERVER :เซิฟเ STR_NETWORK_CLIENT :ลูกข่าย STR_NETWORK_SPECTATORS :ผู้ชม -STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}กรอกจำนวนเงินที่ต้องการจะให้ - # Network set password STR_COMPANY_PASSWORD_CANCEL :{BLACK}ไม่ทำการเก็บพาสเวิร์ดที่กรอกไว้แล้ว STR_COMPANY_PASSWORD_OK :{BLACK}ตั้งพาสเวิร์ดของบริษัทใหม่ @@ -2101,8 +2098,6 @@ STR_NETWORK_MESSAGE_CLIENT_COMPANY_SPECTATE :*** {STRING} STR_NETWORK_MESSAGE_CLIENT_COMPANY_NEW :*** {STRING} ได้ทำการสร้างบริษัทใหม่ (#{2:NUM}) STR_NETWORK_MESSAGE_CLIENT_LEFT :*** {STRING} ได้ออกจากเกม ({2:STRING}) STR_NETWORK_MESSAGE_NAME_CHANGE :*** {STRING} ได้ทำการเปลี่ยนชื่อเป็น {STRING} -STR_NETWORK_MESSAGE_GIVE_MONEY :*** {STRING} ยกบริษัทให้คุณ {2:CURRENCY_LONG} -STR_NETWORK_MESSAGE_GAVE_MONEY_AWAY :*** คุณให้ {1:STRING} {2:CURRENCY_LONG} STR_NETWORK_MESSAGE_SERVER_SHUTDOWN :{WHITE}เซิฟเวอร์ปืดเซสซั่นนี้ STR_NETWORK_MESSAGE_SERVER_REBOOT :{WHITE}เซิฟเวอร์กำลังทำการเริ่มต้นใหม่...{}กรุณารอซักครู่... diff --git a/src/lang/traditional_chinese.txt b/src/lang/traditional_chinese.txt index ca027ef8e7..8bf827a12a 100644 --- a/src/lang/traditional_chinese.txt +++ b/src/lang/traditional_chinese.txt @@ -2045,7 +2045,6 @@ STR_NETWORK_COMPANY_LIST_NEW_COMPANY :新公司 # Network client list STR_NETWORK_CLIENTLIST_KICK :踢除 STR_NETWORK_CLIENTLIST_BAN :封鎖 -STR_NETWORK_CLIENTLIST_GIVE_MONEY :給錢 STR_NETWORK_CLIENTLIST_SPEAK_TO_ALL :對全員說話 STR_NETWORK_CLIENTLIST_SPEAK_TO_COMPANY :對公司說話 STR_NETWORK_CLIENTLIST_SPEAK_TO_CLIENT :私人訊息 @@ -2054,8 +2053,6 @@ STR_NETWORK_SERVER :伺服器 STR_NETWORK_CLIENT :用戶端 STR_NETWORK_SPECTATORS :旁觀者 -STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}請輸入你要付出多少資金 - # Network set password STR_COMPANY_PASSWORD_CANCEL :{BLACK}不要儲存所輸入的密碼 STR_COMPANY_PASSWORD_OK :{BLACK}為公司設定新的密碼 @@ -2155,8 +2152,6 @@ STR_NETWORK_MESSAGE_CLIENT_COMPANY_SPECTATE :*** {STRING} STR_NETWORK_MESSAGE_CLIENT_COMPANY_NEW :*** {STRING} 已建立新公司 (#{2:NUM}) STR_NETWORK_MESSAGE_CLIENT_LEFT :*** {STRING} 已離開遊戲 ({2:STRING}) STR_NETWORK_MESSAGE_NAME_CHANGE :*** {STRING} 已修改其名稱為 {STRING} -STR_NETWORK_MESSAGE_GIVE_MONEY :*** {STRING} 付給你的公司 {2:CURRENCY_LONG} -STR_NETWORK_MESSAGE_GAVE_MONEY_AWAY :*** 你付給 {1:STRING} {2:CURRENCY_LONG} STR_NETWORK_MESSAGE_SERVER_SHUTDOWN :{WHITE}伺服器關閉連線 STR_NETWORK_MESSAGE_SERVER_REBOOT :{WHITE}伺服器重新啟動中...{}請稍候... diff --git a/src/lang/turkish.txt b/src/lang/turkish.txt index 7068415d1d..007316a9da 100644 --- a/src/lang/turkish.txt +++ b/src/lang/turkish.txt @@ -2099,7 +2099,6 @@ STR_NETWORK_COMPANY_LIST_NEW_COMPANY :Yeni şirket # Network client list STR_NETWORK_CLIENTLIST_KICK :At STR_NETWORK_CLIENTLIST_BAN :Yasakla -STR_NETWORK_CLIENTLIST_GIVE_MONEY :Para ver STR_NETWORK_CLIENTLIST_SPEAK_TO_ALL :Herkesle konuş STR_NETWORK_CLIENTLIST_SPEAK_TO_COMPANY :Şirketle konuş STR_NETWORK_CLIENTLIST_SPEAK_TO_CLIENT :Özel mesaj @@ -2108,8 +2107,6 @@ STR_NETWORK_SERVER :Sunucu STR_NETWORK_CLIENT :İstemci STR_NETWORK_SPECTATORS :İzleyiciler -STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}Vermek istediğiniz para miktarını girin - # Network set password STR_COMPANY_PASSWORD_CANCEL :{BLACK}Girilen parolayı kaydetme STR_COMPANY_PASSWORD_OK :{BLACK}Yeni parolayı şirkete ver @@ -2210,8 +2207,6 @@ STR_NETWORK_MESSAGE_CLIENT_COMPANY_SPECTATE :*** {STRING} g STR_NETWORK_MESSAGE_CLIENT_COMPANY_NEW :*** {STRING} yeni bir şirket kurdu (#{2:NUM}) STR_NETWORK_MESSAGE_CLIENT_LEFT :*** {STRING} oyunu terketti ({2:STRING}) STR_NETWORK_MESSAGE_NAME_CHANGE :*** {STRING} adını {STRING} olarak değiştirdi -STR_NETWORK_MESSAGE_GIVE_MONEY :*** {STRING} şirketinize {2:CURRENCY_LONG} verdi -STR_NETWORK_MESSAGE_GAVE_MONEY_AWAY :*** {1:STRING} oyuncusuna {2:CURRENCY_LONG} verdiniz STR_NETWORK_MESSAGE_SERVER_SHUTDOWN :{WHITE}Sunucu kapandı STR_NETWORK_MESSAGE_SERVER_REBOOT :{WHITE}Sunucu baştan başlatılıyor...{}Lütfen bekleyin... STR_NETWORK_MESSAGE_KICKED :*** {STRING} atıldı. Sebep: ({STRING}) diff --git a/src/lang/ukrainian.txt b/src/lang/ukrainian.txt index ee6148fa31..db5fc2a282 100644 --- a/src/lang/ukrainian.txt +++ b/src/lang/ukrainian.txt @@ -2226,7 +2226,6 @@ STR_NETWORK_COMPANY_LIST_NEW_COMPANY :Нова ком # Network client list STR_NETWORK_CLIENTLIST_KICK :Відключити гравця STR_NETWORK_CLIENTLIST_BAN :Бан -STR_NETWORK_CLIENTLIST_GIVE_MONEY :Дати грошей STR_NETWORK_CLIENTLIST_SPEAK_TO_ALL :Повідомлення всім STR_NETWORK_CLIENTLIST_SPEAK_TO_COMPANY :Повідомлення компанії STR_NETWORK_CLIENTLIST_SPEAK_TO_CLIENT :Приватне повідомлення @@ -2235,8 +2234,6 @@ STR_NETWORK_SERVER :Сервер STR_NETWORK_CLIENT :Клієнт STR_NETWORK_SPECTATORS :Спостерігачі -STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}Введіть суму грошей, яку Ви хочете віддати - # Network set password STR_COMPANY_PASSWORD_CANCEL :{BLACK}Не запам'ятовувати введений пароль STR_COMPANY_PASSWORD_OK :{BLACK}Дати компанії новий пароль @@ -2337,8 +2334,6 @@ STR_NETWORK_MESSAGE_CLIENT_COMPANY_SPECTATE :*** {STRING} с STR_NETWORK_MESSAGE_CLIENT_COMPANY_NEW :*** {STRING} заснував нову компанію (№{2:NUM}) STR_NETWORK_MESSAGE_CLIENT_LEFT :*** {STRING} покинув гру ({2:STRING}) STR_NETWORK_MESSAGE_NAME_CHANGE :*** {STRING} змінив(-ла) своє ім'я на {STRING} -STR_NETWORK_MESSAGE_GIVE_MONEY :*** {STRING} дав Вашій компанії {2:CURRENCY_LONG} -STR_NETWORK_MESSAGE_GAVE_MONEY_AWAY :*** Ви дали {1:STRING} {2:CURRENCY_LONG} STR_NETWORK_MESSAGE_SERVER_SHUTDOWN :{WHITE}Сервер закрив сеанс STR_NETWORK_MESSAGE_SERVER_REBOOT :{WHITE}Перезавантаження сервера...{}Зачекайте... STR_NETWORK_MESSAGE_KICKED :*** {STRING} відключено. Причина: ({STRING}) diff --git a/src/lang/unfinished/chuvash.txt b/src/lang/unfinished/chuvash.txt index 63cdc1e619..71e04a7fa3 100644 --- a/src/lang/unfinished/chuvash.txt +++ b/src/lang/unfinished/chuvash.txt @@ -787,7 +787,6 @@ STR_NETWORK_START_SERVER_SET_PASSWORD :{BLACK}Вырн # Network client list - # Network set password # Network company info join/password diff --git a/src/lang/unfinished/frisian.txt b/src/lang/unfinished/frisian.txt index 3d1ab11f82..303881a9e3 100644 --- a/src/lang/unfinished/frisian.txt +++ b/src/lang/unfinished/frisian.txt @@ -1943,7 +1943,6 @@ STR_NETWORK_COMPANY_LIST_NEW_COMPANY :{WHITE}Nei Bedr # Network client list STR_NETWORK_CLIENTLIST_KICK :Skoppe -STR_NETWORK_CLIENTLIST_GIVE_MONEY :Jouw jild STR_NETWORK_CLIENTLIST_SPEAK_TO_ALL :Tsjin elkenien prate STR_NETWORK_CLIENTLIST_SPEAK_TO_COMPANY :Praat mei bedriuw STR_NETWORK_CLIENTLIST_SPEAK_TO_CLIENT :Priveeberjocht @@ -1952,7 +1951,6 @@ STR_NETWORK_SERVER :Tsjinner STR_NETWORK_CLIENT :Kliïnt STR_NETWORK_SPECTATORS :Taskôgers - # Network set password STR_COMPANY_PASSWORD_OK :{BLACK}Jou it bedriuw it nije wachtwurd STR_COMPANY_PASSWORD_CAPTION :{WHITE}Bedriuwswachtwurd diff --git a/src/lang/unfinished/ido.txt b/src/lang/unfinished/ido.txt index 5c5abad31e..15d02f916b 100644 --- a/src/lang/unfinished/ido.txt +++ b/src/lang/unfinished/ido.txt @@ -636,7 +636,6 @@ STR_NETWORK_SERVER_LIST_MAP_SIZE_SHORT :{BLACK}{COMMA}x # Network client list - # Network set password # Network company info join/password diff --git a/src/lang/unfinished/macedonian.txt b/src/lang/unfinished/macedonian.txt index 2c6c95aeba..41f2383c47 100644 --- a/src/lang/unfinished/macedonian.txt +++ b/src/lang/unfinished/macedonian.txt @@ -994,7 +994,6 @@ STR_NETWORK_SERVER_LIST_MAP_SIZE_SHORT :{BLACK}{COMMA}x # Network client list - # Network set password # Network company info join/password diff --git a/src/lang/unfinished/maltese.txt b/src/lang/unfinished/maltese.txt index e3a726a5e5..e450ac6948 100644 --- a/src/lang/unfinished/maltese.txt +++ b/src/lang/unfinished/maltese.txt @@ -564,7 +564,6 @@ STR_NETWORK_CONNECTING_DOWNLOADING_2 :{BLACK}{BYTES} # Network client list - # Network set password # Network company info join/password diff --git a/src/lang/unfinished/marathi.txt b/src/lang/unfinished/marathi.txt index c07f94220f..59b6e34179 100644 --- a/src/lang/unfinished/marathi.txt +++ b/src/lang/unfinished/marathi.txt @@ -961,7 +961,6 @@ STR_NETWORK_CONNECTING_DOWNLOADING_2 :{BLACK}{BYTES} # Network client list - # Network set password # Network company info join/password diff --git a/src/lang/unfinished/persian.txt b/src/lang/unfinished/persian.txt index 58ccc03949..a86ed9bc2e 100644 --- a/src/lang/unfinished/persian.txt +++ b/src/lang/unfinished/persian.txt @@ -1761,7 +1761,6 @@ STR_NETWORK_COMPANY_LIST_NEW_COMPANY :{WHITE}شرکت # Network client list STR_NETWORK_CLIENTLIST_KICK :اخراج STR_NETWORK_CLIENTLIST_BAN :قدغن کردن -STR_NETWORK_CLIENTLIST_GIVE_MONEY :پول دادن STR_NETWORK_CLIENTLIST_SPEAK_TO_ALL :گفتگو با همه STR_NETWORK_CLIENTLIST_SPEAK_TO_COMPANY :گفتگو با شرکت STR_NETWORK_CLIENTLIST_SPEAK_TO_CLIENT :پیام خصوصی @@ -1770,8 +1769,6 @@ STR_NETWORK_SERVER :سرویس ده STR_NETWORK_CLIENT :سرویس گیرنده STR_NETWORK_SPECTATORS :تماشاگران -STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}مقدار پولی که می خواهید دریافت نمایید را وارد کنید - # Network set password STR_COMPANY_PASSWORD_CANCEL :{BLACK}رمز وارد شده را به خاطر نسپار STR_COMPANY_PASSWORD_OK :{BLACK}دادن رمز جدید به شرکت @@ -1871,8 +1868,6 @@ STR_NETWORK_MESSAGE_CLIENT_COMPANY_SPECTATE :*** {STRING} ب STR_NETWORK_MESSAGE_CLIENT_COMPANY_NEW :*** {STRING} یک شرکت جدید آغاز کرد (#{2:NUM}) STR_NETWORK_MESSAGE_CLIENT_LEFT :*** {STRING} از بازی بیرون رفت ({2:STRING}) STR_NETWORK_MESSAGE_NAME_CHANGE :*** {STRING} نامش را به {STRING} تغییر داد -STR_NETWORK_MESSAGE_GIVE_MONEY :*** {STRING} به شرکت شما {2:CURRENCY_LONG} پول داد -STR_NETWORK_MESSAGE_GAVE_MONEY_AWAY :*** شما {1:STRING}به شرکت {2:CURRENCY_LONG} دادید STR_NETWORK_MESSAGE_SERVER_SHUTDOWN :{WHITE}سرویس دهنده جلسه را تعطیل کرد STR_NETWORK_MESSAGE_SERVER_REBOOT :{WHITE}راه اندازی مجدد سرویس دهنده...{}لطفا صبر کنید... diff --git a/src/lang/unfinished/urdu.txt b/src/lang/unfinished/urdu.txt index 7e66b0a44f..fd2adab21f 100644 --- a/src/lang/unfinished/urdu.txt +++ b/src/lang/unfinished/urdu.txt @@ -1649,7 +1649,6 @@ STR_NETWORK_COMPANY_LIST_NEW_COMPANY :{WHITE}نئی # Network client list STR_NETWORK_CLIENTLIST_KICK :ٹھڈا STR_NETWORK_CLIENTLIST_BAN :پابندی -STR_NETWORK_CLIENTLIST_GIVE_MONEY :پیسے دئیں STR_NETWORK_CLIENTLIST_SPEAK_TO_ALL :سب سے بات کریں STR_NETWORK_CLIENTLIST_SPEAK_TO_COMPANY :کمپنی سے بات کریں STR_NETWORK_CLIENTLIST_SPEAK_TO_CLIENT :پرائیویٹ پیغام @@ -1658,8 +1657,6 @@ STR_NETWORK_SERVER :سرور STR_NETWORK_CLIENT :کلائینٹ STR_NETWORK_SPECTATORS :ناظرین -STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}بتائیں آپ کتنے پیسے بھیجنا چاہتے ہیں - # Network set password STR_COMPANY_PASSWORD_CANCEL :{BLACK}بتایا گیا پاس ورڈ محفوظ نہ کریں STR_COMPANY_PASSWORD_OK :{BLACK}کمپنی کا نیا پاس ورڈ رکھیں @@ -1759,8 +1756,6 @@ STR_NETWORK_MESSAGE_CLIENT_COMPANY_SPECTATE :*** {STRING} ن STR_NETWORK_MESSAGE_CLIENT_COMPANY_NEW :*** {STRING} نے نئی کمپنی شروع کی ہے (#{2:NUM}) STR_NETWORK_MESSAGE_CLIENT_LEFT :*** {STRING} نے کھیل چھوڑ دیا ہے ({2:STRING}) STR_NETWORK_MESSAGE_NAME_CHANGE :*** {STRING} نے اپنا نام بدل کر {STRING} رکھ لیا ہے -STR_NETWORK_MESSAGE_GIVE_MONEY :*** {STRING} نے آپ کی کمپنی کو {2:CURRENCY_LONG} دئیے ہیں -STR_NETWORK_MESSAGE_GAVE_MONEY_AWAY :*** آپ نے {1:STRING} کو {2:CURRENCY_LONG} دئیے ہیں STR_NETWORK_MESSAGE_SERVER_SHUTDOWN :{WHITE}سرور نے سیشن بند کر دیا STR_NETWORK_MESSAGE_SERVER_REBOOT :{WHITE}سرور دوبارہ سے سٹارٹ ہو رہا ہے - - -{}برائے مہربانی انتظار فرمائیے ۔ ۔ ۔ diff --git a/src/lang/vietnamese.txt b/src/lang/vietnamese.txt index 7f48503dee..5eb17c191e 100644 --- a/src/lang/vietnamese.txt +++ b/src/lang/vietnamese.txt @@ -2100,7 +2100,6 @@ STR_NETWORK_COMPANY_LIST_NEW_COMPANY :Công ty mới # Network client list STR_NETWORK_CLIENTLIST_KICK :Đá STR_NETWORK_CLIENTLIST_BAN :Cấm -STR_NETWORK_CLIENTLIST_GIVE_MONEY :Cho tiền STR_NETWORK_CLIENTLIST_SPEAK_TO_ALL :Nói với tất cả STR_NETWORK_CLIENTLIST_SPEAK_TO_COMPANY :Nói cho công ty STR_NETWORK_CLIENTLIST_SPEAK_TO_CLIENT :Thông điệp riêng @@ -2109,8 +2108,6 @@ STR_NETWORK_SERVER :Server STR_NETWORK_CLIENT :Máy trạm STR_NETWORK_SPECTATORS :Người xem -STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}Nhập số tiền muốn cho đi - # Network set password STR_COMPANY_PASSWORD_CANCEL :{BLACK}Không được ghi mật khẩu đã nhập STR_COMPANY_PASSWORD_OK :{BLACK}Nhập mật khẩu mới cho công ty @@ -2211,8 +2208,6 @@ STR_NETWORK_MESSAGE_CLIENT_COMPANY_SPECTATE :*** {STRING} v STR_NETWORK_MESSAGE_CLIENT_COMPANY_NEW :*** {STRING} khai trương công ty mới (#{2:NUM}) STR_NETWORK_MESSAGE_CLIENT_LEFT :*** {STRING} rời bỏ ván chơi ({2:STRING}) STR_NETWORK_MESSAGE_NAME_CHANGE :*** {STRING} đổi tên thành {STRING} -STR_NETWORK_MESSAGE_GIVE_MONEY :*** {STRING} tặng công ty bạn {2:CURRENCY_LONG} -STR_NETWORK_MESSAGE_GAVE_MONEY_AWAY :*** Bạn cho {1:STRING} {2:CURRENCY_LONG} STR_NETWORK_MESSAGE_SERVER_SHUTDOWN :{WHITE}Server kết thúc phiên STR_NETWORK_MESSAGE_SERVER_REBOOT :{WHITE}Server khởi động lại...{}Xin chờ... STR_NETWORK_MESSAGE_KICKED :*** {STRING} đã bị đá khỏi ván chơi. Lý do: ({STRING}) diff --git a/src/lang/welsh.txt b/src/lang/welsh.txt index 46bd053623..4b0ce7a64d 100644 --- a/src/lang/welsh.txt +++ b/src/lang/welsh.txt @@ -2050,7 +2050,6 @@ STR_NETWORK_COMPANY_LIST_NEW_COMPANY :Cwmni newydd # Network client list STR_NETWORK_CLIENTLIST_KICK :Cicio STR_NETWORK_CLIENTLIST_BAN :Gwahardd -STR_NETWORK_CLIENTLIST_GIVE_MONEY :Rhoi arian STR_NETWORK_CLIENTLIST_SPEAK_TO_ALL :Siarad â phawb STR_NETWORK_CLIENTLIST_SPEAK_TO_COMPANY :Siarad a'r cwmni STR_NETWORK_CLIENTLIST_SPEAK_TO_CLIENT :Neges breifat @@ -2059,8 +2058,6 @@ STR_NETWORK_SERVER :Gweinydd STR_NETWORK_CLIENT :Gwestai STR_NETWORK_SPECTATORS :Gwylwyr -STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}Nodwch faint o arian yr hoffech chi ei roi - # Network set password STR_COMPANY_PASSWORD_CANCEL :{BLACK}Peidio cadw'r cyfrinair a roddwyd STR_COMPANY_PASSWORD_OK :{BLACK}Rhoi'r cyfrinair newydd i'r cwmni @@ -2160,8 +2157,6 @@ STR_NETWORK_MESSAGE_CLIENT_COMPANY_SPECTATE :*** Mae {STRING STR_NETWORK_MESSAGE_CLIENT_COMPANY_NEW :*** Mae {STRING} wedi dechrau cwmni newydd (#{2:NUM}) STR_NETWORK_MESSAGE_CLIENT_LEFT :*** Mae {STRING} wedi gadael y gêm ({2:STRING}) STR_NETWORK_MESSAGE_NAME_CHANGE :*** Mae {STRING} wedi newid ei (h)enw i {STRING} -STR_NETWORK_MESSAGE_GIVE_MONEY :*** Rhoddodd {STRING} {2:CURRENCY_LONG} i'ch cwmni -STR_NETWORK_MESSAGE_GAVE_MONEY_AWAY :*** Fe roddoch chi {2:CURRENCY_LONG} {1:STRING} STR_NETWORK_MESSAGE_SERVER_SHUTDOWN :{WHITE}Fe gaewyd y sesiwn gan y gweinydd STR_NETWORK_MESSAGE_SERVER_REBOOT :{WHITE}Mae'r gweinydd yn ailgychwyn...{}Arhoswch... From 64eddaeb499e7ad17275b34634ceaaff64c84728 Mon Sep 17 00:00:00 2001 From: Didac Perez Parera Date: Sat, 26 Dec 2020 16:10:21 -0800 Subject: [PATCH 18/27] Feature: Make maximum length of town bridges depend on population. --- src/town_cmd.cpp | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/town_cmd.cpp b/src/town_cmd.cpp index 8928ffdbf9..f3dbe7ae4b 100644 --- a/src/town_cmd.cpp +++ b/src/town_cmd.cpp @@ -1159,10 +1159,15 @@ static bool GrowTownWithBridge(const Town *t, const TileIndex tile, const DiagDi const int delta = TileOffsByDiagDir(bridge_dir); + /* To prevent really small towns from building disproportionately + * long bridges, make the max a function of its population. */ + int base_bridge_length = 4; + int max_bridge_length = t->cache.population / 1000 + base_bridge_length; + if (slope == SLOPE_FLAT) { /* Bridges starting on flat tiles are only allowed when crossing rivers, rails or one-way roads. */ do { - if (bridge_length++ >= 4) { + if (bridge_length++ >= base_bridge_length) { /* Allow to cross rivers, not big lakes, nor large amounts of rails or one-way roads. */ return false; } @@ -1170,8 +1175,8 @@ static bool GrowTownWithBridge(const Town *t, const TileIndex tile, const DiagDi } while (IsValidTile(bridge_tile) && ((IsWaterTile(bridge_tile) && !IsSea(bridge_tile)) || IsPlainRailTile(bridge_tile) || (IsNormalRoadTile(bridge_tile) && GetDisallowedRoadDirections(bridge_tile) != DRD_NONE))); } else { do { - if (bridge_length++ >= 11) { - /* Max 11 tile long bridges */ + if (bridge_length++ >= max_bridge_length) { + /* Ensure the bridge is not longer than the max allowed length. */ return false; } bridge_tile += delta; From a4e34e824c481a7d3390c2739146192ac827533e Mon Sep 17 00:00:00 2001 From: Patric Stout Date: Wed, 6 Jan 2021 14:20:33 +0100 Subject: [PATCH 19/27] Change: towns can now bridge 4 rails (up from 3) Having 4 rails is a pretty common design, and towns now couldn't bridge out of this common design. --- src/town_cmd.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/town_cmd.cpp b/src/town_cmd.cpp index f3dbe7ae4b..d7ab29a662 100644 --- a/src/town_cmd.cpp +++ b/src/town_cmd.cpp @@ -1161,7 +1161,7 @@ static bool GrowTownWithBridge(const Town *t, const TileIndex tile, const DiagDi /* To prevent really small towns from building disproportionately * long bridges, make the max a function of its population. */ - int base_bridge_length = 4; + int base_bridge_length = 5; int max_bridge_length = t->cache.population / 1000 + base_bridge_length; if (slope == SLOPE_FLAT) { From 28c13ec90fbdc55d27d31652d31a48198b5d2492 Mon Sep 17 00:00:00 2001 From: Patric Stout Date: Wed, 6 Jan 2021 22:37:57 +0100 Subject: [PATCH 20/27] Fix #8168: allow relocating of HQ partial over existing HQ (#8510) Just in case you want to move it SLIGHTLY to the right. --- regression/regression/main.nut | 2 +- src/object_cmd.cpp | 9 ++++++++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/regression/regression/main.nut b/regression/regression/main.nut index 0434524d2c..5eb65b08f1 100644 --- a/regression/regression/main.nut +++ b/regression/regression/main.nut @@ -426,7 +426,7 @@ function Regression::Company() print(" GetCompanyHQ(): " + AICompany.GetCompanyHQ(AICompany.COMPANY_SELF)); print(" BuildCompanyHQ(): " + AICompany.BuildCompanyHQ(AIMap.GetTileIndex(129, 129))); print(" GetCompanyHQ(): " + AICompany.GetCompanyHQ(AICompany.COMPANY_SELF)); - print(" BuildCompanyHQ(): " + AICompany.BuildCompanyHQ(AIMap.GetTileIndex(129, 128))); + print(" BuildCompanyHQ(): " + AICompany.BuildCompanyHQ(AIMap.GetTileIndex(239, 76))); print(" GetLastErrorString(): " + AIError.GetLastErrorString()); print(" GetAutoRenewStatus(); " + AICompany.GetAutoRenewStatus(AICompany.COMPANY_SELF)); print(" SetAutoRenewStatus(true); " + AICompany.SetAutoRenewStatus(true)); diff --git a/src/object_cmd.cpp b/src/object_cmd.cpp index 3fb61d647e..479f3b0d10 100644 --- a/src/object_cmd.cpp +++ b/src/object_cmd.cpp @@ -248,7 +248,14 @@ CommandCost CmdBuildObject(TileIndex tile, DoCommandFlag flags, uint32 p1, uint3 } else { if (!allow_ground) return_cmd_error(STR_ERROR_MUST_BE_BUILT_ON_WATER); /* For non-water tiles, we'll have to clear it before building. */ - cost.AddCost(DoCommand(t, 0, 0, flags & ~DC_EXEC, CMD_LANDSCAPE_CLEAR)); + + /* When relocating HQ, allow it to be relocated (partial) on itself. */ + if (!(type == OBJECT_HQ && + IsTileType(t, MP_OBJECT) && + IsTileOwner(t, _current_company) && + IsObjectType(t, OBJECT_HQ))) { + cost.AddCost(DoCommand(t, 0, 0, flags & ~DC_EXEC, CMD_LANDSCAPE_CLEAR)); + } } } From c7609e767fa87fbd77f7f3f4bdbc748f2b5e5ffb Mon Sep 17 00:00:00 2001 From: Patric Stout Date: Thu, 7 Jan 2021 08:01:23 +0100 Subject: [PATCH 21/27] Fix #7604: prevent houses to wander too far from town center when rebuilding (#8507) When a multi-tile house is rebuild, it always used the most northern tile to build the new house. This can very easily lead to houses wandering off in the north-ish direction (either NW or NE). To prevent this, pick the tile closest to town center when rebuilding on a multi-tile house. This still means a house can be build away from a road, but it is no longer wandering around finding another town to call home. --- src/town_cmd.cpp | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/src/town_cmd.cpp b/src/town_cmd.cpp index d7ab29a662..ea13ff061a 100644 --- a/src/town_cmd.cpp +++ b/src/town_cmd.cpp @@ -626,7 +626,28 @@ static void TileLoop_Town(TileIndex tile) ClearTownHouse(t, tile); /* Rebuild with another house? */ - if (GB(r, 24, 8) >= 12) BuildTownHouse(t, tile); + if (GB(r, 24, 8) >= 12) { + /* If we are multi-tile houses, make sure to replace the house + * closest to city center. If we do not do this, houses tend to + * wander away from roads and other houses. */ + if (hs->building_flags & BUILDING_HAS_2_TILES) { + /* House tiles are always the most north tile. Move the new + * house to the south if we are north of the city center. */ + TileIndexDiffC grid_pos = TileIndexToTileIndexDiffC(t->xy, tile); + int x = Clamp(grid_pos.x, 0, 1); + int y = Clamp(grid_pos.y, 0, 1); + + if (hs->building_flags & TILE_SIZE_2x2) { + tile = TILE_ADDXY(tile, x, y); + } else if (hs->building_flags & TILE_SIZE_1x2) { + tile = TILE_ADDXY(tile, 0, y); + } else if (hs->building_flags & TILE_SIZE_2x1) { + tile = TILE_ADDXY(tile, x, 0); + } + } + + BuildTownHouse(t, tile); + } } cur_company.Restore(); From 1b675e7075d1c2375cc8da5a928fb6b7be6317d5 Mon Sep 17 00:00:00 2001 From: Patric Stout Date: Thu, 7 Jan 2021 08:01:46 +0100 Subject: [PATCH 22/27] Fix #8068: always allow removal of tram track if that generates money (#8509) Even if you are completely broke, generating money should always be allowed. --- src/road_cmd.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/road_cmd.cpp b/src/road_cmd.cpp index 79048b9b59..c94beb0b16 100644 --- a/src/road_cmd.cpp +++ b/src/road_cmd.cpp @@ -1109,7 +1109,8 @@ CommandCost CmdRemoveLongRoad(TileIndex start_tile, DoCommandFlag flags, uint32 p2 ^= IsInsideMM(p2 & 3, 1, 3) ? 3 : 0; } - Money money = GetAvailableMoneyForCommand(); + Money money_available = GetAvailableMoneyForCommand(); + Money money_spent = 0; TileIndex tile = start_tile; CommandCost last_error = CMD_ERROR; bool had_success = false; @@ -1126,8 +1127,8 @@ CommandCost CmdRemoveLongRoad(TileIndex start_tile, DoCommandFlag flags, uint32 CommandCost ret = RemoveRoad(tile, flags & ~DC_EXEC, bits, rtt, true); if (ret.Succeeded()) { if (flags & DC_EXEC) { - money -= ret.GetCost(); - if (money < 0) { + money_spent += ret.GetCost(); + if (money_spent > 0 && money_spent > money_available) { _additional_cash_required = DoCommand(start_tile, end_tile, p2, flags & ~DC_EXEC, CMD_REMOVE_LONG_ROAD).GetCost(); return cost; } From a3a792837220390735b44536762b0127f05b7a63 Mon Sep 17 00:00:00 2001 From: Kuhnovic <68320206+Kuhnovic@users.noreply.github.com> Date: Thu, 7 Jan 2021 10:17:05 +0100 Subject: [PATCH 23/27] Feature: option to auto remove signals when in the way during rail construction (#8274) --- src/lang/english.txt | 2 ++ src/rail_cmd.cpp | 26 ++++++++++++++++++++------ src/rail_gui.cpp | 10 ++++++---- src/settings_gui.cpp | 1 + src/settings_type.h | 1 + src/table/settings.ini | 8 ++++++++ 6 files changed, 38 insertions(+), 10 deletions(-) diff --git a/src/lang/english.txt b/src/lang/english.txt index 8d8a128717..c92d03cb62 100644 --- a/src/lang/english.txt +++ b/src/lang/english.txt @@ -1451,6 +1451,8 @@ STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS :Keep building t STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS_HELPTEXT :Keep the building tools for bridges, tunnels, etc. open after use STR_CONFIG_SETTING_EXPENSES_LAYOUT :Group expenses in company finance window: {STRING2} STR_CONFIG_SETTING_EXPENSES_LAYOUT_HELPTEXT :Define the layout for the company expenses window +STR_CONFIG_SETTING_AUTO_REMOVE_SIGNALS :Automatically remove signals during rail construction: {STRING2} +STR_CONFIG_SETTING_AUTO_REMOVE_SIGNALS_HELPTEXT :Automatically remove signals during rail construction if the signals are in the way. Note that this can potentially lead to train crashes. STR_CONFIG_SETTING_SOUND_TICKER :News ticker: {STRING2} STR_CONFIG_SETTING_SOUND_TICKER_HELPTEXT :Play sound for summarised news messages diff --git a/src/rail_cmd.cpp b/src/rail_cmd.cpp index 34ad07d520..8af7871fca 100644 --- a/src/rail_cmd.cpp +++ b/src/rail_cmd.cpp @@ -262,10 +262,6 @@ static CommandCost CheckTrackCombination(TileIndex tile, TrackBits to_build, uin return_cmd_error(STR_ERROR_ALREADY_BUILT); } - /* Let's see if we may build this */ - if (HasSignals(tile) && future != TRACK_BIT_HORZ && future != TRACK_BIT_VERT) { - return_cmd_error(STR_ERROR_MUST_REMOVE_SIGNALS_FIRST); - } /* Normally, we may overlap and any combination is valid */ return CommandCost(); } @@ -432,7 +428,9 @@ static inline bool ValParamTrackOrientation(Track track) * @param tile tile to build on * @param flags operation to perform * @param p1 railtype of being built piece (normal, mono, maglev) - * @param p2 rail track to build + * @param p2 various bitstuffed elements + * - (bit 0- 2) - track-orientation, valid values: 0-5 (@see Track) + * - (bit 3) - 0 = error on signal in the way, 1 = auto remove signals when in the way * @param text unused * @return the cost of this operation or an error */ @@ -440,6 +438,7 @@ CommandCost CmdBuildSingleRail(TileIndex tile, DoCommandFlag flags, uint32 p1, u { RailType railtype = Extract(p1); Track track = Extract(p2); + bool auto_remove_signals = HasBit(p2, 3); CommandCost cost(EXPENSES_CONSTRUCTION); if (!ValParamRailtype(railtype) || !ValParamTrackOrientation(track)) return CMD_ERROR; @@ -460,6 +459,19 @@ CommandCost CmdBuildSingleRail(TileIndex tile, DoCommandFlag flags, uint32 p1, u if (ret.Succeeded()) ret = EnsureNoTrainOnTrack(tile, track); if (ret.Failed()) return ret; + if (HasSignals(tile) && TracksOverlap(GetTrackBits(tile) | TrackToTrackBits(track))) { + /* If adding the new track causes any overlap, all signals must be removed first */ + if (!auto_remove_signals) return_cmd_error(STR_ERROR_MUST_REMOVE_SIGNALS_FIRST); + + for (Track track_it = TRACK_BEGIN; track_it < TRACK_END; track_it++) { + if (HasTrack(tile, track_it) && HasSignalOnTrack(tile, track_it)) { + CommandCost ret_remove_signals = DoCommand(tile, track_it, 0, flags, CMD_REMOVE_SIGNALS); + if (ret_remove_signals.Failed()) return ret_remove_signals; + cost.AddCost(ret_remove_signals); + } + } + } + ret = CheckRailSlope(tileh, trackbit, GetTrackBits(tile), tile); if (ret.Failed()) return ret; cost.AddCost(ret); @@ -868,6 +880,7 @@ static CommandCost ValidateAutoDrag(Trackdir *trackdir, TileIndex start, TileInd * - p2 = (bit 6-8) - track-orientation, valid values: 0-5 (Track enum) * - p2 = (bit 9) - 0 = build, 1 = remove tracks * - p2 = (bit 10) - 0 = build up to an obstacle, 1 = fail if an obstacle is found (used for AIs). + * - p2 = (bit 11) - 0 = error on signal in the way, 1 = auto remove signals when in the way * @param text unused * @return the cost of this operation or an error */ @@ -876,6 +889,7 @@ static CommandCost CmdRailTrackHelper(TileIndex tile, DoCommandFlag flags, uint3 CommandCost total_cost(EXPENSES_CONSTRUCTION); Track track = Extract(p2); bool remove = HasBit(p2, 9); + bool auto_remove_signals = HasBit(p2, 11); RailType railtype = Extract(p2); if ((!remove && !ValParamRailtype(railtype)) || !ValParamTrackOrientation(track)) return CMD_ERROR; @@ -889,7 +903,7 @@ static CommandCost CmdRailTrackHelper(TileIndex tile, DoCommandFlag flags, uint3 bool had_success = false; CommandCost last_error = CMD_ERROR; for (;;) { - CommandCost ret = DoCommand(tile, remove ? 0 : railtype, TrackdirToTrack(trackdir), flags, remove ? CMD_REMOVE_SINGLE_RAIL : CMD_BUILD_SINGLE_RAIL); + CommandCost ret = DoCommand(tile, remove ? 0 : railtype, TrackdirToTrack(trackdir) | (auto_remove_signals << 3), flags, remove ? CMD_REMOVE_SINGLE_RAIL : CMD_BUILD_SINGLE_RAIL); if (ret.Failed()) { last_error = ret; diff --git a/src/rail_gui.cpp b/src/rail_gui.cpp index 788189dccf..7529efcec9 100644 --- a/src/rail_gui.cpp +++ b/src/rail_gui.cpp @@ -91,7 +91,7 @@ void CcPlaySound_SPLAT_RAIL(const CommandCost &result, TileIndex tile, uint32 p1 static void GenericPlaceRail(TileIndex tile, int cmd) { - DoCommandP(tile, _cur_railtype, cmd, + DoCommandP(tile, _cur_railtype, cmd | (_settings_client.gui.auto_remove_signals << 3), _remove_button_clicked ? CMD_REMOVE_SINGLE_RAIL | CMD_MSG(STR_ERROR_CAN_T_REMOVE_RAILROAD_TRACK) : CMD_BUILD_SINGLE_RAIL | CMD_MSG(STR_ERROR_CAN_T_BUILD_RAILROAD_TRACK), @@ -107,10 +107,11 @@ static void GenericPlaceRail(TileIndex tile, int cmd) */ static void PlaceExtraDepotRail(TileIndex tile, DiagDirection dir, Track track) { - if (GetRailTileType(tile) != RAIL_TILE_NORMAL) return; + if (GetRailTileType(tile) == RAIL_TILE_DEPOT) return; + if (GetRailTileType(tile) == RAIL_TILE_SIGNALS && !_settings_client.gui.auto_remove_signals) return; if ((GetTrackBits(tile) & DiagdirReachesTracks(dir)) == 0) return; - DoCommandP(tile, _cur_railtype, track, CMD_BUILD_SINGLE_RAIL); + DoCommandP(tile, _cur_railtype, track | (_settings_client.gui.auto_remove_signals << 3), CMD_BUILD_SINGLE_RAIL); } /** Additional pieces of track to add at the entrance of a depot. */ @@ -350,7 +351,8 @@ static void BuildRailClick_Remove(Window *w) static void DoRailroadTrack(int mode) { - DoCommandP(TileVirtXY(_thd.selstart.x, _thd.selstart.y), TileVirtXY(_thd.selend.x, _thd.selend.y), _cur_railtype | (mode << 6), + uint32 p2 = _cur_railtype | (mode << 6) | (_settings_client.gui.auto_remove_signals << 11); + DoCommandP(TileVirtXY(_thd.selstart.x, _thd.selstart.y), TileVirtXY(_thd.selend.x, _thd.selend.y), p2, _remove_button_clicked ? CMD_REMOVE_RAILROAD_TRACK | CMD_MSG(STR_ERROR_CAN_T_REMOVE_RAILROAD_TRACK) : CMD_BUILD_RAILROAD_TRACK | CMD_MSG(STR_ERROR_CAN_T_BUILD_RAILROAD_TRACK), diff --git a/src/settings_gui.cpp b/src/settings_gui.cpp index 77be428c9d..751cf1a7df 100644 --- a/src/settings_gui.cpp +++ b/src/settings_gui.cpp @@ -1599,6 +1599,7 @@ static SettingsContainer &GetSettingsTree() company->Add(new SettingEntry("gui.default_signal_type")); company->Add(new SettingEntry("gui.cycle_signal_types")); company->Add(new SettingEntry("gui.drag_signals_fixed_distance")); + company->Add(new SettingEntry("gui.auto_remove_signals")); company->Add(new SettingEntry("gui.new_nonstop")); company->Add(new SettingEntry("gui.stop_location")); company->Add(new SettingEntry("gui.starting_colour")); diff --git a/src/settings_type.h b/src/settings_type.h index 5729a50bea..219888a73b 100644 --- a/src/settings_type.h +++ b/src/settings_type.h @@ -147,6 +147,7 @@ struct GUISettings { uint8 osk_activation; ///< Mouse gesture to trigger the OSK. byte starting_colour; ///< default color scheme for the company to start a new game with bool show_newgrf_name; ///< Show the name of the NewGRF in the build vehicle window + bool auto_remove_signals; ///< automatically remove signals when in the way during rail construction uint16 console_backlog_timeout; ///< the minimum amount of time items should be in the console backlog before they will be removed in ~3 seconds granularity. uint16 console_backlog_length; ///< the minimum amount of items in the console backlog before items will be removed. diff --git a/src/table/settings.ini b/src/table/settings.ini index 517f2fb44d..97c892b0bf 100644 --- a/src/table/settings.ini +++ b/src/table/settings.ini @@ -2858,6 +2858,14 @@ str = STR_CONFIG_SETTING_COMPANY_STARTING_COLOUR strhelp = STR_CONFIG_SETTING_COMPANY_STARTING_COLOUR_HELPTEXT strval = STR_COLOUR_DARK_BLUE +[SDTC_BOOL] +var = gui.auto_remove_signals +flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC +def = false +str = STR_CONFIG_SETTING_AUTO_REMOVE_SIGNALS +strhelp = STR_CONFIG_SETTING_AUTO_REMOVE_SIGNALS_HELPTEXT +cat = SC_ADVANCED + [SDTC_BOOL] var = gui.prefer_teamchat flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC From c988b4d62ba08ee6a5efa44e0fa10da59dff4ae8 Mon Sep 17 00:00:00 2001 From: Patric Stout Date: Thu, 7 Jan 2021 10:32:24 +0100 Subject: [PATCH 24/27] Fix #8332: aborting group drag&drop could cause crashes with vehicle drag&drop (#8511) The selected group was not reset when drag&drop was aborted. When after that vehicle drag&drop was successful, group drag&drop code was still executed, causing weird behaviour or even crashes. --- src/group_gui.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/group_gui.cpp b/src/group_gui.cpp index 1210087957..8ef6a2a1bc 100644 --- a/src/group_gui.cpp +++ b/src/group_gui.cpp @@ -981,6 +981,7 @@ public: /* abort drag & drop */ this->vehicle_sel = INVALID_VEHICLE; this->DirtyHighlightedGroupWidget(); + this->group_sel = INVALID_GROUP; this->group_over = INVALID_GROUP; this->SetWidgetDirty(WID_GL_LIST_VEHICLE); } From f84a466ca516136de218bc599bbfaf8c909829f4 Mon Sep 17 00:00:00 2001 From: SamuXarick <43006711+SamuXarick@users.noreply.github.com> Date: Thu, 7 Jan 2021 09:35:09 +0000 Subject: [PATCH 25/27] Fix #7945: Add cost of clearing the sloped tile when placing a dock (#7947) --- regression/regression/result.txt | 4 ++-- src/station_cmd.cpp | 4 +++- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/regression/regression/result.txt b/regression/regression/result.txt index 52d957faf9..2153cdaade 100644 --- a/regression/regression/result.txt +++ b/regression/regression/result.txt @@ -7327,7 +7327,7 @@ ERROR: IsEnd() is invalid as Begin() is never called IsBuoyTile(): true IsLockTile(): true IsCanalTile(): true - GetBankBalance(): 1999965070 + GetBankBalance(): 1999965040 --AIWaypointList(BUOY)-- Count(): 1 @@ -7346,7 +7346,7 @@ ERROR: IsEnd() is invalid as Begin() is never called IsBuoyTile(): false IsLockTile(): false IsCanalTile(): false - GetBankBalance(): 1999959675 + GetBankBalance(): 1999959645 BuildWaterDepot(): true BuildDock(): true diff --git a/src/station_cmd.cpp b/src/station_cmd.cpp index 735edd06f6..d06178fc40 100644 --- a/src/station_cmd.cpp +++ b/src/station_cmd.cpp @@ -2535,8 +2535,10 @@ CommandCost CmdBuildDock(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 if (IsBridgeAbove(tile)) return_cmd_error(STR_ERROR_MUST_DEMOLISH_BRIDGE_FIRST); + CommandCost cost(EXPENSES_CONSTRUCTION, _price[PR_BUILD_STATION_DOCK]); ret = DoCommand(tile, 0, 0, flags, CMD_LANDSCAPE_CLEAR); if (ret.Failed()) return ret; + cost.AddCost(ret); TileIndex tile_cur = tile + TileOffsByDiagDir(direction); @@ -2591,7 +2593,7 @@ CommandCost CmdBuildDock(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 st->AfterStationTileSetChange(true, STATION_DOCK); } - return CommandCost(EXPENSES_CONSTRUCTION, _price[PR_BUILD_STATION_DOCK]); + return cost; } void RemoveDockingTile(TileIndex t) From 51e22515a8ee974aa309bf98a6b36013b2879fc5 Mon Sep 17 00:00:00 2001 From: translators Date: Thu, 7 Jan 2021 18:28:27 +0000 Subject: [PATCH 26/27] Update: Translations from eints spanish (mexican): 5 changes by absay korean: 5 changes by telk5093 finnish: 5 changes by hpiirai latvian: 14 changes by lexuslatvia spanish: 23 changes by SeveralCircles, 10 changes by Luis45ccs polish: 5 changes by yazalo --- src/lang/finnish.txt | 5 +++++ src/lang/korean.txt | 5 +++++ src/lang/latvian.txt | 18 ++++++++++++++---- src/lang/polish.txt | 5 +++++ src/lang/spanish.txt | 33 +++++++++++++++++++++++++++++++++ src/lang/spanish_MX.txt | 5 +++++ 6 files changed, 67 insertions(+), 4 deletions(-) diff --git a/src/lang/finnish.txt b/src/lang/finnish.txt index 58a6ba7051..28d260b5a5 100644 --- a/src/lang/finnish.txt +++ b/src/lang/finnish.txt @@ -2232,6 +2232,7 @@ STR_NETWORK_MESSAGE_CLIENT_COMPANY_SPECTATE :*** {STRING} on STR_NETWORK_MESSAGE_CLIENT_COMPANY_NEW :*** {STRING} on aloittanut uuden yhtiön (nro {2:NUM}) STR_NETWORK_MESSAGE_CLIENT_LEFT :*** {STRING} on poistunut pelistä ({2:STRING}) STR_NETWORK_MESSAGE_NAME_CHANGE :*** {STRING} on muuttanut nimekseen {STRING} +STR_NETWORK_MESSAGE_GIVE_MONEY :*** {STRING} antoi {2:CURRENCY_LONG} yhtiölle {1:STRING} STR_NETWORK_MESSAGE_SERVER_SHUTDOWN :{WHITE}Palvelin sulki istunnon STR_NETWORK_MESSAGE_SERVER_REBOOT :{WHITE}Palvelin käynnistyy uudelleen...{}Odota, ole hyvä... STR_NETWORK_MESSAGE_KICKED :{STRING} potkaistiin ulos. Syy: ({STRING}) @@ -3372,6 +3373,8 @@ STR_COMPANY_VIEW_RELOCATE_HQ :{BLACK}Siirrä STR_COMPANY_VIEW_RELOCATE_COMPANY_HEADQUARTERS :{BLACK}Rakenna yhtiön päärakennus muualle, kustannus 1{NBSP}% yhtiön arvosta. Shift+Klik näyttää kustannusarvion sijoittamatta päärakennusta uudelleen STR_COMPANY_VIEW_INFRASTRUCTURE_BUTTON :{BLACK}Yksityiskohdat STR_COMPANY_VIEW_INFRASTRUCTURE_TOOLTIP :{BLACK}Näytä tarkka infrastruktuurin määrä +STR_COMPANY_VIEW_GIVE_MONEY_BUTTON :{BLACK}Anna rahaa +STR_COMPANY_VIEW_GIVE_MONEY_TOOLTIP :{BLACK}Anna rahaa tälle yhtiölle STR_COMPANY_VIEW_NEW_FACE_BUTTON :{BLACK}Uudet kasvot STR_COMPANY_VIEW_NEW_FACE_TOOLTIP :{BLACK}Valitse uudet kasvot pääjohtajalle @@ -3389,6 +3392,7 @@ STR_COMPANY_VIEW_SELL_SHARE_TOOLTIP :{BLACK}Myy 25{N STR_COMPANY_VIEW_COMPANY_NAME_QUERY_CAPTION :Yhtiön nimi STR_COMPANY_VIEW_PRESIDENT_S_NAME_QUERY_CAPTION :Pääjohtajan nimi +STR_COMPANY_VIEW_GIVE_MONEY_QUERY_CAPTION :Syötä annettava rahamäärä STR_BUY_COMPANY_MESSAGE :{WHITE}Etsimme kuljetusyhtiötä, joka ottaisi haltuunsa yhtiömme{}{}Haluatko ostaa yhtiön {COMPANY} hintaan {CURRENCY_LONG}? @@ -4340,6 +4344,7 @@ STR_ERROR_LOAN_ALREADY_REPAYED :{WHITE}... ei l STR_ERROR_CURRENCY_REQUIRED :{WHITE}... tarvitaan {CURRENCY_LONG}. STR_ERROR_CAN_T_REPAY_LOAN :{WHITE}Lainaa ei voi lyhentää... STR_ERROR_INSUFFICIENT_FUNDS :{WHITE}Pankista lainattua rahaa ei voi antaa pois... +STR_ERROR_CAN_T_GIVE_MONEY :{WHITE}Tälle yhtiölle ei voi antaa rahaa… STR_ERROR_CAN_T_BUY_COMPANY :{WHITE}Yhtiötä ei voi ostaa... STR_ERROR_CAN_T_BUILD_COMPANY_HEADQUARTERS :{WHITE}Yhtiön päärakennusta ei voi rakentaa... STR_ERROR_CAN_T_BUY_25_SHARE_IN_THIS :{WHITE}Tästä yhtiöstä ei voi ostaa 25{NBSP}%:n osuutta... diff --git a/src/lang/korean.txt b/src/lang/korean.txt index bf2542eb4a..e8ac288947 100644 --- a/src/lang/korean.txt +++ b/src/lang/korean.txt @@ -2233,6 +2233,7 @@ STR_NETWORK_MESSAGE_CLIENT_COMPANY_SPECTATE :*** {STRING} STR_NETWORK_MESSAGE_CLIENT_COMPANY_NEW :*** {STRING} 님이 새로운 회사({2:NUM}번)를 창설하셨습니다 STR_NETWORK_MESSAGE_CLIENT_LEFT :*** {STRING} 님이 퇴장하셨습니다 (사유: {2:STRING}) STR_NETWORK_MESSAGE_NAME_CHANGE :*** {STRING} 님의 이름이 {STRING}(으)로 바뀌었습니다 +STR_NETWORK_MESSAGE_GIVE_MONEY :*** {0:STRING} 님이 {1:STRING}에게 {2:CURRENCY_LONG}만큼의 돈을 보내셨습니다 STR_NETWORK_MESSAGE_SERVER_SHUTDOWN :{WHITE}서버가 게임을 종료하였습니다 STR_NETWORK_MESSAGE_SERVER_REBOOT :{WHITE}서버가 재시작되고 있습니다...{}기다려주세요... STR_NETWORK_MESSAGE_KICKED :*** {STRING} - 서버에서 강제로 추방되었습니다. 사유: ({STRING}) @@ -3373,6 +3374,8 @@ STR_COMPANY_VIEW_RELOCATE_HQ :{BLACK}본사 STR_COMPANY_VIEW_RELOCATE_COMPANY_HEADQUARTERS :{BLACK}회사가치의 1% 가격을 들여 본사를 다른 위치로 옮깁니다. SHIFT+클릭을 사용하면 예상 비용을 볼 수 있습니다 STR_COMPANY_VIEW_INFRASTRUCTURE_BUTTON :{BLACK}상세정보 STR_COMPANY_VIEW_INFRASTRUCTURE_TOOLTIP :{BLACK}기반시설 상세정보 창을 엽니다 +STR_COMPANY_VIEW_GIVE_MONEY_BUTTON :{BLACK}돈 보내기 +STR_COMPANY_VIEW_GIVE_MONEY_TOOLTIP :{BLACK}이 회사에 돈을 보냅니다 STR_COMPANY_VIEW_NEW_FACE_BUTTON :{BLACK}새 얼굴 STR_COMPANY_VIEW_NEW_FACE_TOOLTIP :{BLACK}사장의 얼굴을 선택합니다 @@ -3390,6 +3393,7 @@ STR_COMPANY_VIEW_SELL_SHARE_TOOLTIP :{BLACK}이 회 STR_COMPANY_VIEW_COMPANY_NAME_QUERY_CAPTION :회사 이름 STR_COMPANY_VIEW_PRESIDENT_S_NAME_QUERY_CAPTION :사장 이름 +STR_COMPANY_VIEW_GIVE_MONEY_QUERY_CAPTION :보내고자 하는 돈의 액수를 입력하세요 STR_BUY_COMPANY_MESSAGE :{WHITE}저희 회사를 거두어주실 운송 회사를 찾고있습니다.{}{}저희 {COMPANY} 회사를 {CURRENCY_LONG}의 가격으로 인수합병하시겠습니까? @@ -4341,6 +4345,7 @@ STR_ERROR_LOAN_ALREADY_REPAYED :{WHITE}... 값 STR_ERROR_CURRENCY_REQUIRED :{WHITE}... {CURRENCY_LONG} 만큼의 돈이 필요합니다 STR_ERROR_CAN_T_REPAY_LOAN :{WHITE}대출금을 갚을 수 없습니다... STR_ERROR_INSUFFICIENT_FUNDS :{WHITE}은행에서 빌린 돈은 송금할 수 없습니다... +STR_ERROR_CAN_T_GIVE_MONEY :{WHITE}이 회사에 돈을 보낼 수 없습니다... STR_ERROR_CAN_T_BUY_COMPANY :{WHITE}회사를 인수할 수 없습니다... STR_ERROR_CAN_T_BUILD_COMPANY_HEADQUARTERS :{WHITE}본사를 건설할 수 없습니다... STR_ERROR_CAN_T_BUY_25_SHARE_IN_THIS :{WHITE}이 회사 지분의 25%를 매입할 수 없습니다... diff --git a/src/lang/latvian.txt b/src/lang/latvian.txt index 6b0493db9b..1c2ca1e87d 100644 --- a/src/lang/latvian.txt +++ b/src/lang/latvian.txt @@ -2548,6 +2548,12 @@ STR_TREES_RANDOM_TYPE :{BLACK}Nejauši STR_TREES_RANDOM_TYPE_TOOLTIP :{BLACK}Izvietot nejaušus kokus. Shift pārslēdz būve/rādīt izmaksu tāmi STR_TREES_RANDOM_TREES_BUTTON :{BLACK}Nejauši koki STR_TREES_RANDOM_TREES_TOOLTIP :{BLACK}Stādīt nejaušus kokus visā ainavā +STR_TREES_MODE_NORMAL_BUTTON :{BLACK}Normāls +STR_TREES_MODE_NORMAL_TOOLTIP :{BLACK}Stādiet atsevišķus kokus, velkot pāri ainavai. +STR_TREES_MODE_FOREST_SM_BUTTON :{BLACK}Birze +STR_TREES_MODE_FOREST_SM_TOOLTIP :{BLACK}Stādiet mazus mežus, velkot pāri ainavai. +STR_TREES_MODE_FOREST_LG_BUTTON :{BLACK}Mežs +STR_TREES_MODE_FOREST_LG_TOOLTIP :{BLACK}Stādiet lielos mežus, velkot pāri ainavai. # Land generation window (SE) STR_TERRAFORM_TOOLBAR_LAND_GENERATION_CAPTION :{WHITE}Zemes radīšana @@ -3181,10 +3187,10 @@ STR_GOALS_COMPANY_TITLE :{BLACK}Uzņēmu STR_GOALS_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Klikšķināt uz mērķa, lai centrētu galveno skatu uz ražotni/pilsētu/lauciņu. Ctrl+klikšķis atver jaunu skatvietu uz ražotni/pilsētu/lauciņu # Goal question window -STR_GOAL_QUESTION_CAPTION_QUESTION :Jautājums -STR_GOAL_QUESTION_CAPTION_INFORMATION :Informācija -STR_GOAL_QUESTION_CAPTION_WARNING :Brīdinājums -STR_GOAL_QUESTION_CAPTION_ERROR :Kļūda +STR_GOAL_QUESTION_CAPTION_QUESTION :{BLACK}Jautājums +STR_GOAL_QUESTION_CAPTION_INFORMATION :{BLACK}Informācija +STR_GOAL_QUESTION_CAPTION_WARNING :{BLACK}Brīdinājums +STR_GOAL_QUESTION_CAPTION_ERROR :{YELLOW}Kļūda ############ Start of Goal Question button list STR_GOAL_QUESTION_BUTTON_CANCEL :Atcelt @@ -3376,6 +3382,8 @@ STR_COMPANY_VIEW_RELOCATE_HQ :{BLACK}Pārviet STR_COMPANY_VIEW_RELOCATE_COMPANY_HEADQUARTERS :{BLACK}Pārcelt uzņēmuma centrālo biroju uz citu vietu samaksājot 1% no uzņēmuma vērtības. Shift+klikšķis parāda izmaksu novērtējumu, nemainot biroja atrašanās vietu STR_COMPANY_VIEW_INFRASTRUCTURE_BUTTON :{BLACK}Sīkāk STR_COMPANY_VIEW_INFRASTRUCTURE_TOOLTIP :{BLACK}Skatīt detalizētāku infrastruktūras uzskaiti +STR_COMPANY_VIEW_GIVE_MONEY_BUTTON :{BLACK}Iedot naudu +STR_COMPANY_VIEW_GIVE_MONEY_TOOLTIP :{BLACK}Iedot naudu šai kompānijai STR_COMPANY_VIEW_NEW_FACE_BUTTON :{BLACK}Jauna seja STR_COMPANY_VIEW_NEW_FACE_TOOLTIP :{BLACK}Izvēlēties jaunu seju vadītājam @@ -3393,6 +3401,7 @@ STR_COMPANY_VIEW_SELL_SHARE_TOOLTIP :{BLACK}Pārdot STR_COMPANY_VIEW_COMPANY_NAME_QUERY_CAPTION :Uzņēmuma nosaukums STR_COMPANY_VIEW_PRESIDENT_S_NAME_QUERY_CAPTION :Vadītāja vārds +STR_COMPANY_VIEW_GIVE_MONEY_QUERY_CAPTION :Ievadiet naudas daudzumu, kuru vēlaties atdot STR_BUY_COMPANY_MESSAGE :{WHITE}Mēs meklējam transporta uzņēmumu, kurš vēlētos pārņemt mūsējo.{}{}Vai Jūs vēlaties pirkt {COMPANY} par {CURRENCY_LONG}? @@ -4345,6 +4354,7 @@ STR_ERROR_LOAN_ALREADY_REPAYED :{WHITE}... nav STR_ERROR_CURRENCY_REQUIRED :{WHITE}...{CURRENCY_LONG} nepieciešams STR_ERROR_CAN_T_REPAY_LOAN :{WHITE}Nevar atmaksāt aizdevumu... STR_ERROR_INSUFFICIENT_FUNDS :{WHITE}Bankas aizdoto naudu nevar dot projām... +STR_ERROR_CAN_T_GIVE_MONEY :{WHITE}Nav iespējams atdot naudu šai kompānijai... STR_ERROR_CAN_T_BUY_COMPANY :{WHITE}Nevar nopirkt uzņēmumu... STR_ERROR_CAN_T_BUILD_COMPANY_HEADQUARTERS :{WHITE}Nevar uzbūvēt uzņēmuma biroju... STR_ERROR_CAN_T_BUY_25_SHARE_IN_THIS :{WHITE}Nevar nopirkt 25% daļu šajā uzņēmumā... diff --git a/src/lang/polish.txt b/src/lang/polish.txt index 34f25584ea..b1b1eaad2e 100644 --- a/src/lang/polish.txt +++ b/src/lang/polish.txt @@ -2612,6 +2612,7 @@ STR_NETWORK_MESSAGE_CLIENT_COMPANY_SPECTATE :*** {STRING} do STR_NETWORK_MESSAGE_CLIENT_COMPANY_NEW :*** {STRING} założył nową firmę (#{2:NUM}) STR_NETWORK_MESSAGE_CLIENT_LEFT :*** {STRING} opuścił grę ({2:STRING}) STR_NETWORK_MESSAGE_NAME_CHANGE :*** {STRING} zmienił/zmieniła swoje imię na {STRING} +STR_NETWORK_MESSAGE_GIVE_MONEY :*** Firma {STRING} przekazała firmie {1:STRING} {2:CURRENCY_LONG} STR_NETWORK_MESSAGE_SERVER_SHUTDOWN :{WHITE}Serwer zamknął sesję STR_NETWORK_MESSAGE_SERVER_REBOOT :{WHITE}Restart serwera...{}Proszę czekać... STR_NETWORK_MESSAGE_KICKED :*** {STRING} został wyrzucony. Powód: ({STRING}) @@ -3752,6 +3753,8 @@ STR_COMPANY_VIEW_RELOCATE_HQ :{BLACK}Przenie STR_COMPANY_VIEW_RELOCATE_COMPANY_HEADQUARTERS :{BLACK}Zbuduj siedzibę główną w innym miejscu za cenę 1% wartości firmy. Shift+klik pokazuje szacunkowy koszt bez przenoszenia siedziby STR_COMPANY_VIEW_INFRASTRUCTURE_BUTTON :{BLACK}Szczegóły STR_COMPANY_VIEW_INFRASTRUCTURE_TOOLTIP :{BLACK}Zobacz szczegółowe wartości infrastruktury +STR_COMPANY_VIEW_GIVE_MONEY_BUTTON :{BLACK}Przekaż pieniądze +STR_COMPANY_VIEW_GIVE_MONEY_TOOLTIP :{BLACK}Przekaż część pieniędzy tej firmie STR_COMPANY_VIEW_NEW_FACE_BUTTON :{BLACK}Nowa twarz STR_COMPANY_VIEW_NEW_FACE_TOOLTIP :{BLACK}Wybierz nową twarz prezesa @@ -3769,6 +3772,7 @@ STR_COMPANY_VIEW_SELL_SHARE_TOOLTIP :{BLACK}Sprzedaj STR_COMPANY_VIEW_COMPANY_NAME_QUERY_CAPTION :Nazwa firmy STR_COMPANY_VIEW_PRESIDENT_S_NAME_QUERY_CAPTION :Nazwisko prezesa +STR_COMPANY_VIEW_GIVE_MONEY_QUERY_CAPTION :Wpisz kwotę, jaką chcesz przekazać STR_BUY_COMPANY_MESSAGE :{WHITE}Szukamy firmy transportowej, która przejęłaby naszą firmę.{}{}Chcesz zakupić {COMPANY} za {CURRENCY_LONG}? @@ -4726,6 +4730,7 @@ STR_ERROR_LOAN_ALREADY_REPAYED :{WHITE}... poż STR_ERROR_CURRENCY_REQUIRED :{WHITE}...{CURRENCY_LONG} wymagane STR_ERROR_CAN_T_REPAY_LOAN :{WHITE}Nie można zwrócić pożyczki... STR_ERROR_INSUFFICIENT_FUNDS :{WHITE}Nie możesz wydać pieniędzy, które są pożyczone z banku... +STR_ERROR_CAN_T_GIVE_MONEY :{WHITE}Nie możesz przekazać pieniędzy tej firmie... STR_ERROR_CAN_T_BUY_COMPANY :{WHITE}Nie można kupić firmy... STR_ERROR_CAN_T_BUILD_COMPANY_HEADQUARTERS :{WHITE}Nie można zbudować siedziby firmy... STR_ERROR_CAN_T_BUY_25_SHARE_IN_THIS :{WHITE}Nie można kupić 25% udziałów w tej firmie... diff --git a/src/lang/spanish.txt b/src/lang/spanish.txt index 1838c52fba..61bd0375b5 100644 --- a/src/lang/spanish.txt +++ b/src/lang/spanish.txt @@ -315,8 +315,15 @@ STR_SORT_BY_CARGO_CAPACITY :Capacidad de ca STR_SORT_BY_RANGE :Alcance STR_SORT_BY_POPULATION :Población STR_SORT_BY_RATING :Calificación +STR_SORT_BY_NUM_VEHICLES :Número de automóviles +STR_SORT_BY_TOTAL_PROFIT_LAST_YEAR :Beneficios total del último año +STR_SORT_BY_TOTAL_PROFIT_THIS_YEAR :Beneficio total este año +STR_SORT_BY_AVERAGE_PROFIT_LAST_YEAR :Beneficios medio el año pasado +STR_SORT_BY_AVERAGE_PROFIT_THIS_YEAR :Beneficios medio este año # Group by options for vehicle list +STR_GROUP_BY_NONE :Ninguna +STR_GROUP_BY_SHARED_ORDERS :Órdenes compartidas # Tooltips for the main toolbar STR_TOOLBAR_TOOLTIP_PAUSE_GAME :{BLACK}Pausar juego @@ -773,6 +780,7 @@ STR_SMALLMAP_TOOLTIP_ENABLE_ALL_CARGOS :{BLACK}Muestra STR_STATUSBAR_TOOLTIP_SHOW_LAST_NEWS :{BLACK}Mostrar último mensaje/noticia STR_STATUSBAR_COMPANY_NAME :{SILVER}- - {COMPANY} - - STR_STATUSBAR_PAUSED :{YELLOW}* * PAUSADO * * +STR_STATUSBAR_PAUSED_LINK_GRAPH :{ORANGE} * * EN PAUSA (esperando la actualización del gráfico de vínculos) * * STR_STATUSBAR_AUTOSAVE :{RED}AUTOGUARDADO STR_STATUSBAR_SAVING_GAME :{RED}* * GUARDANDO JUEGO * * @@ -1556,6 +1564,10 @@ STR_CONFIG_SETTING_ENDING_YEAR :Año de clasifi STR_CONFIG_SETTING_ENDING_YEAR_HELPTEXT :Año en el que finaliza el juego para establecer la clasificación. Al final de este año se guarda la puntuación de las empresas y se muestra la pantalla de las puntuaciones más altas, aunque se puede continuar jugando la partida.{}Si este año es posterior al año de comienzo, la pantalla de puntuaciones más altas no se mostrará nunca. STR_CONFIG_SETTING_ENDING_YEAR_VALUE :{NUM} STR_CONFIG_SETTING_ENDING_YEAR_ZERO :Nunca +STR_CONFIG_SETTING_ECONOMY_TYPE :Tipo de economía: {STRING} +STR_CONFIG_SETTING_ECONOMY_TYPE_HELPTEXT :La economía fluida hace que los cambios de producción sean más frecuentes y en pasos más pequeños. La economía congelada detiene los cambios de producción y los cierres de industrias. Esta configuración puede no tener efecto si los tipos de industria los proporciona un NewGRF. +STR_CONFIG_SETTING_ECONOMY_TYPE_SMOOTH :Suave +STR_CONFIG_SETTING_ECONOMY_TYPE_FROZEN :Congelado STR_CONFIG_SETTING_ALLOW_SHARES :Permitir comprar acciones de otras empresas: {STRING} STR_CONFIG_SETTING_ALLOW_SHARES_HELPTEXT :Cuando se activa, permite comprar y vender acciones de empresas. Las acciones de una empresa solamente estarán disponibles cuando la empresa cumpla una edad determinada STR_CONFIG_SETTING_MIN_YEARS_FOR_SHARES :Edad mínima de una empresa para comerciar con sus acciones: {STRING} @@ -1607,6 +1619,9 @@ STR_CONFIG_SETTING_TOWN_CARGOGENMODE_BITCOUNT :Lineal STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT :Crecimiento de árboles durante el juego: {STRING} STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_HELPTEXT :Controla la aparición aleatoria de árboles durante la partida. Esto puede afectar a industrias que dependen del crecimiento de árboles, como los aserraderos +STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_NO_SPREAD :Crecer, pero no extienda {RED}(rompe al aserradero) +STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_SPREAD_ALL :Crece y difunde por todas partes +STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_NO_GROWTH_NO_SPREAD :No crezcas, no te extiendas {RED}(rompe el aserradero) STR_CONFIG_SETTING_TOOLBAR_POS :Posición de la barra de herramientas principal: {STRING} STR_CONFIG_SETTING_TOOLBAR_POS_HELPTEXT :Posicionamiento horizontal de la barra de herramientas principal en la parte superior de la pantalla @@ -1673,6 +1688,7 @@ STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_HELPTEXT :Cada vez que se STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_IMPERIAL :Imperial (mph) STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_METRIC :Métrico (km/h) STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_SI :SI (m/s) +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_GAMEUNITS :Unidades de juego (fichas/día) STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER :Unidades de potencia de vehículos: {STRING} STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_HELPTEXT :Cada vez que se muestra la potencia de un vehículo en la interfaz de usuario, se emplean las unidades seleccionadas @@ -1968,6 +1984,10 @@ STR_NETWORK_SERVER_LIST_JOIN_GAME :{BLACK}Unirme a STR_NETWORK_SERVER_LIST_REFRESH :{BLACK}Recargar servidor STR_NETWORK_SERVER_LIST_REFRESH_TOOLTIP :{BLACK}Recargar información del servidor +STR_NETWORK_SERVER_LIST_SEARCH_SERVER_INTERNET :Buscar en línea +STR_NETWORK_SERVER_LIST_SEARCH_SERVER_INTERNET_TOOLTIP :{BLACK} Buscar servidores públicos en Internet +STR_NETWORK_SERVER_LIST_SEARCH_SERVER_LAN :{BLACK}Buscar en LAN +STR_NETWORK_SERVER_LIST_SEARCH_SERVER_LAN_TOOLTIP :{BLACK}Buscar en LAN para los servidores STR_NETWORK_SERVER_LIST_ADD_SERVER :{BLACK}Añadir servidor STR_NETWORK_SERVER_LIST_ADD_SERVER_TOOLTIP :{BLACK}Añade el servidor a una lista que siempre será comprobada para buscar juegos en marcha STR_NETWORK_SERVER_LIST_START_SERVER :{BLACK}Comenzar servidor @@ -2193,11 +2213,13 @@ STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_1 :Juego todavía STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_2 :Juego todavía pausado ({STRING}, {STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_3 :Juego todavía pausado ({STRING}, {STRING}, {STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_4 :Juego todavía pausado ({STRING}, {STRING}, {STRING}, {STRING}) +STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_5 :Juego todavia pausado ({STRING}, {STRING}, {STRING}, {STRING}, {STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_UNPAUSED :Juego reanudado ({STRING}) STR_NETWORK_SERVER_MESSAGE_GAME_REASON_NOT_ENOUGH_PLAYERS :número de jugadores STR_NETWORK_SERVER_MESSAGE_GAME_REASON_CONNECTING_CLIENTS :clientes conectándose STR_NETWORK_SERVER_MESSAGE_GAME_REASON_MANUAL :manual STR_NETWORK_SERVER_MESSAGE_GAME_REASON_GAME_SCRIPT :script de juego +STR_NETWORK_SERVER_MESSAGE_GAME_REASON_LINK_GRAPH :Esperando por actualizacion del link graph ############ End of leave-in-this-order STR_NETWORK_MESSAGE_CLIENT_LEAVING :abandonando STR_NETWORK_MESSAGE_CLIENT_JOINED :*** {STRING} se ha unido al juego @@ -2519,6 +2541,12 @@ STR_TREES_RANDOM_TYPE :{BLACK}Tipo ale STR_TREES_RANDOM_TYPE_TOOLTIP :{BLACK}Colocar distintos árboles al azar. Mayús permite mostrar una estimación del precio STR_TREES_RANDOM_TREES_BUTTON :{BLACK}Árboles al azar STR_TREES_RANDOM_TREES_TOOLTIP :{BLACK}Planta árboles al azar sobre el terreno +STR_TREES_MODE_NORMAL_BUTTON :{BLACK}Normal +STR_TREES_MODE_NORMAL_TOOLTIP :{BLACK} Plantar árboles solteros por arrastrando sobre el paisaje. +STR_TREES_MODE_FOREST_SM_BUTTON :{BLACK}Falta +STR_TREES_MODE_FOREST_SM_TOOLTIP :{BLACK}Plante pequeños bosques arrastrándolo por el paisaje. +STR_TREES_MODE_FOREST_LG_BUTTON :{BLACK}Bosque +STR_TREES_MODE_FOREST_LG_TOOLTIP :{BLACK}Plantar bosques grandes por arrastrando sobre el paisaje. # Land generation window (SE) STR_TERRAFORM_TOOLBAR_LAND_GENERATION_CAPTION :{WHITE}Generación de terrenos @@ -3341,6 +3369,7 @@ STR_COMPANY_VIEW_RELOCATE_HQ :{BLACK}Reubicar STR_COMPANY_VIEW_RELOCATE_COMPANY_HEADQUARTERS :{BLACK}Reubica la sede de la empresa a cualquier otro lugar, con el coste del 1% del valor total de la empresa. Mayús+Clic muestra una estimación del precio sin mover la sede STR_COMPANY_VIEW_INFRASTRUCTURE_BUTTON :{BLACK}Detalles STR_COMPANY_VIEW_INFRASTRUCTURE_TOOLTIP :{BLACK}Ver informe detallado de infraestructura +STR_COMPANY_VIEW_GIVE_MONEY_BUTTON :{BLACK}Dar dinero STR_COMPANY_VIEW_NEW_FACE_BUTTON :{BLACK}Nueva Cara STR_COMPANY_VIEW_NEW_FACE_TOOLTIP :{BLACK}Selecciona nueva cara para el presidente @@ -3358,6 +3387,7 @@ STR_COMPANY_VIEW_SELL_SHARE_TOOLTIP :{BLACK}Vender 2 STR_COMPANY_VIEW_COMPANY_NAME_QUERY_CAPTION :Nombre Empresa STR_COMPANY_VIEW_PRESIDENT_S_NAME_QUERY_CAPTION :Nombre del Presidente +STR_COMPANY_VIEW_GIVE_MONEY_QUERY_CAPTION :Entrar el cantidad de dinero que quieres dar STR_BUY_COMPANY_MESSAGE :{WHITE}Estamos buscando una empresa de transportes para adquirir la nuestra{}{}¿Desea comprar {COMPANY} por {CURRENCY_LONG}? @@ -4228,6 +4258,7 @@ STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :La partida guar STR_GAME_SAVELOAD_ERROR_FILE_NOT_READABLE :Archivo no legible STR_GAME_SAVELOAD_ERROR_FILE_NOT_WRITEABLE :No se puede escribir en el archivo STR_GAME_SAVELOAD_ERROR_DATA_INTEGRITY_CHECK_FAILED :Comprobación de integridad de los datos fallida +STR_GAME_SAVELOAD_ERROR_PATCHPACK :La partida guardada ha sido realizada cona una versión modificada.. STR_GAME_SAVELOAD_NOT_AVAILABLE : STR_WARNING_LOADGAME_REMOVED_TRAMS :{WHITE}El juego se ha guardado en una versión sin soporte para tranvías. Todos los tranvías han sido eliminados @@ -4308,6 +4339,7 @@ STR_ERROR_LOAN_ALREADY_REPAYED :{WHITE}... no h STR_ERROR_CURRENCY_REQUIRED :{WHITE}... {CURRENCY_LONG} requerido STR_ERROR_CAN_T_REPAY_LOAN :{WHITE}No es posible pagar préstamo... STR_ERROR_INSUFFICIENT_FUNDS :{WHITE}No se puede dar dinero que ha sido prestado de un banco... +STR_ERROR_CAN_T_GIVE_MONEY :{WHITE}No se puede dar dinero a este empresa... STR_ERROR_CAN_T_BUY_COMPANY :{WHITE}No se puede comprar la empresa... STR_ERROR_CAN_T_BUILD_COMPANY_HEADQUARTERS :{WHITE}No puede construirse la sede de la empresa... STR_ERROR_CAN_T_BUY_25_SHARE_IN_THIS :{WHITE}No se puede comprar el 25% de acciones... @@ -5020,6 +5052,7 @@ STR_FORMAT_BUOY_NAME :Boya {TOWN} STR_FORMAT_BUOY_NAME_SERIAL :Boya {TOWN} #{COMMA} STR_FORMAT_COMPANY_NUM :(Empresa {COMMA}) STR_FORMAT_GROUP_NAME :Grupo {COMMA} +STR_FORMAT_GROUP_VEHICLE_NAME :{GROUP} #{COMMA} STR_FORMAT_INDUSTRY_NAME :{TOWN}, {STRING} STR_FORMAT_WAYPOINT_NAME :Punto de ruta {TOWN} STR_FORMAT_WAYPOINT_NAME_SERIAL :Punto de ruta {TOWN} #{COMMA} diff --git a/src/lang/spanish_MX.txt b/src/lang/spanish_MX.txt index 518c49b05d..c76c2f2bbb 100644 --- a/src/lang/spanish_MX.txt +++ b/src/lang/spanish_MX.txt @@ -2233,6 +2233,7 @@ STR_NETWORK_MESSAGE_CLIENT_COMPANY_SPECTATE :*** {STRING} se STR_NETWORK_MESSAGE_CLIENT_COMPANY_NEW :*** {STRING} creó una nueva empresa (#{2:NUM}) STR_NETWORK_MESSAGE_CLIENT_LEFT :*** {STRING} salió de la partida ({2:STRING}) STR_NETWORK_MESSAGE_NAME_CHANGE :*** {STRING} cambió su nombre a {STRING} +STR_NETWORK_MESSAGE_GIVE_MONEY :*** {STRING} le transfirió {2:CURRENCY_LONG} a {1:STRING} STR_NETWORK_MESSAGE_SERVER_SHUTDOWN :{WHITE}El servidor ha cerrado la sesión STR_NETWORK_MESSAGE_SERVER_REBOOT :{WHITE}Se está reiniciando el servidor...{}Espera por favor... STR_NETWORK_MESSAGE_KICKED :*** {STRING} ha sido expulsado. Razón: ({STRING}) @@ -3373,6 +3374,8 @@ STR_COMPANY_VIEW_RELOCATE_HQ :{BLACK}Reubicar STR_COMPANY_VIEW_RELOCATE_COMPANY_HEADQUARTERS :{BLACK}Reubicar la sede de la empresa a cualquier otro lugar con el costo del 1% del valor total de la empresa. Mayús+Clic muestra una estimación del precio sin mover la sede STR_COMPANY_VIEW_INFRASTRUCTURE_BUTTON :{BLACK}Detalles STR_COMPANY_VIEW_INFRASTRUCTURE_TOOLTIP :{BLACK}Ver informe detallado de infraestructura +STR_COMPANY_VIEW_GIVE_MONEY_BUTTON :{BLACK}Transferir capital +STR_COMPANY_VIEW_GIVE_MONEY_TOOLTIP :{BLACK}Transferir capital a esta empresa STR_COMPANY_VIEW_NEW_FACE_BUTTON :{BLACK}Nueva cara STR_COMPANY_VIEW_NEW_FACE_TOOLTIP :{BLACK}Elegir nueva cara para el presidente @@ -3390,6 +3393,7 @@ STR_COMPANY_VIEW_SELL_SHARE_TOOLTIP :{BLACK}Vender 2 STR_COMPANY_VIEW_COMPANY_NAME_QUERY_CAPTION :Nombre de la empresa STR_COMPANY_VIEW_PRESIDENT_S_NAME_QUERY_CAPTION :Nombre del presidente +STR_COMPANY_VIEW_GIVE_MONEY_QUERY_CAPTION :Cantidad de dinero a transferir STR_BUY_COMPANY_MESSAGE :{WHITE}Buscamos una empresa de transportes que quiera adquirir la nuestra.{}{}¿Comprar {COMPANY} por {CURRENCY_LONG}? @@ -4341,6 +4345,7 @@ STR_ERROR_LOAN_ALREADY_REPAYED :{WHITE}... no h STR_ERROR_CURRENCY_REQUIRED :{WHITE}... se requieren {CURRENCY_LONG} STR_ERROR_CAN_T_REPAY_LOAN :{WHITE}No se puede pagar préstamo... STR_ERROR_INSUFFICIENT_FUNDS :{WHITE}No se puede regalar dinero que fue prestado de un banco... +STR_ERROR_CAN_T_GIVE_MONEY :{WHITE}No se puede transferir capital a esta empresa... STR_ERROR_CAN_T_BUY_COMPANY :{WHITE}No se puede comprar la empresa... STR_ERROR_CAN_T_BUILD_COMPANY_HEADQUARTERS :{WHITE}No se puede construir la sede de la empresa... STR_ERROR_CAN_T_BUY_25_SHARE_IN_THIS :{WHITE}No se puede comprar el 25% de acciones... From 725d793be16636ef7f7c3d4a479f0d2523a5d83c Mon Sep 17 00:00:00 2001 From: Patric Stout Date: Thu, 7 Jan 2021 19:58:04 +0100 Subject: [PATCH 27/27] Fix: don't allow cloning vehicles if cloning orders is failing (#8515) Before this fix, any failing clone order was silently ignored and you as user would never know till you checked the order list. Evil. --- src/vehicle_cmd.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/vehicle_cmd.cpp b/src/vehicle_cmd.cpp index bb1574d4f9..7e1d3a8633 100644 --- a/src/vehicle_cmd.cpp +++ b/src/vehicle_cmd.cpp @@ -978,7 +978,12 @@ CommandCost CmdCloneVehicle(TileIndex tile, DoCommandFlag flags, uint32 p1, uint * the vehicle refitted before doing this, otherwise the moved * cargo types might not match (passenger vs non-passenger) */ - DoCommand(0, w_front->index | (p2 & 1 ? CO_SHARE : CO_COPY) << 30, v_front->index, flags, CMD_CLONE_ORDER); + CommandCost result = DoCommand(0, w_front->index | (p2 & 1 ? CO_SHARE : CO_COPY) << 30, v_front->index, flags, CMD_CLONE_ORDER); + if (result.Failed()) { + /* The vehicle has already been bought, so now it must be sold again. */ + DoCommand(w_front->tile, w_front->index | 1 << 20, 0, flags, GetCmdSellVeh(w_front)); + return result; + } /* Now clone the vehicle's name, if it has one. */ if (!v_front->name.empty()) CloneVehicleName(v_front, w_front);