Download-Beschreibung
– Stellt die Kompatibilität zu Emergency 4 Deluxe sicher. Installiert zu dem Zweck einige Dateien, die von EM4 nicht direkt benötigt werden
– SuperVisor-Videos können in Mods ersetzt werden
– Anhängerlogik hinzugefügt
– Mehrere ExitPoints möglich, nächst gelegener wird angefahren
– Separate ExitPoints pro Fahrzeugtyp möglich
– Lichter von SuperStructs werden geupdatet (mitbewegt)
– Eigene Decals im Mod möglich
– Fahrzeug, welches wegen Einsatzfahrzeug stoppt, wartet nun länger
– Anzeige für verbleibende Verletzte kann auf beliebigen Counter geändert werden
– Absturz bei Childeditierung behoben
– Partikelchilds von Objekten die gerade per Physik bewegt werden, werden nun korrekt mitbewegt
– GTF mit weniger als 4 Schlauchanschlüssen sollte im MP keinen Absturz mehr erzeugen
– Tastenbelegung über XML-Datei (Specs/keys.xml) frei umbelegbar; Datei wird bei Modwechsel neu geladen
– Quasi beliebige Events per Script zur Eventliste hinzufügbar und auch als abgeschlossen/fehlgeschlagen markierbar
– Per Startparameter kann direkt ein Mod gestartet werden, sowohl im Game als auch Editor (-game -mod ModName oder -editor -mod ModName)
– Beim Start des FP/MP wird je nach Modus ein Script ausgeführt, wenn vorhanden (mod:Scripts/Game/Mission/fp_freeplay.script, mod:Scripts/Game/Mission/fp_challenge.script, mod:Scripts/Game/Mission/mp_freeplay.script, mod:Scripts/Game/Mission/mp_challenge.script)
– In der e4mod.info-Datei eines Mods kann die minimale Version von EM4 eingestellt werden, die nötig ist, um den Mod zu spielen
– Anzeige der EM4-Versionsnummer im Hauptmenü
– Dialoge, welche per Script erzeugt wurden, werden nun bei Pause, im Hauptmenü usw, ausgeblendet
– FGRR (Kran) hebt nicht mehr das FMB an, wenn es sich in dem Bereich eines Wracks befindet
– Skinnen nun wieder so einfach wie in EM3 (Textur ersetzen genügt; Es ist nicht mehr nötig die v3o zu bearbeiten)
– Beim Texturimport im Editor erscheint eine Fehlermeldung, wenn das Format nicht stimmt
– Dicke des Wasserstrahls von TLF, LPF und FLB per Script pro Fahrzeug veränderbar
– Per Script Fahrzeugtüren öffnen/schliessen über den Namen der Tür möglich
– Im Prototypeditor gibts neben den “Browse”-Buttons für die Modelle nun noch einen “Edit”-Button. Dieser entpackt das Modellfile automatisch und öffnet es dann zum Editieren im Wordpad.
– ALT+1 bis 6 selektiert die entsprechende Gruppe ohne die Kamera darauf zu zentrieren
– Defaultbesatzungen mit mehr als einer Einheit pro Typ werden nun korrekt angezeigt
– Kleinere Optimierungen der Ladezeit und Performance
– Events, welche sofort fehlschlagen, sollten nun seltener/gar nicht mehr auftreten
– Editierung von einigen Objekten mit Physik korrigiert
– Gasflaschen im Tutorial sind nicht mehr beschiesbar
– Darstellung des Bloomeffektes verbessert
– Einige neue Funktionen im Editor (Editierung für die Sprachsteuerung; Staubwolken von Fahrzeugen in virtuellen Objekten; 2 neue Liquids)
– Problem mit der Kamera in Zusammenhang mit Liquids behoben
– Fehler in der Object-Overview beim Anklicken von Partikel-Effekten behoben
– Absturz bei Pfadeditierung behoben
– Absturz im Zusammenhang mit Speicherkorruption wird nun erkannt und behoben
Scripting:
– Neue Funktionen
void Camera::StartCamShake(float duration_, float strength_, bool localOnly_ = true);
float FireObject::GetEnergy() const;
void FireObject::SetEnergy(float energy_);
int Game::GetNumInjuredPersonNotOnTransport(bool ignoreDead_ = false);
void Game::SetNavigatorCounter(const char* counter_);
const Game::char* GetNavigatorCounter();
bool Game::ExistsPickableAnimal();
bool Game::GetGameString(const char *name_, char *buffer_, int maxcount_);
bool Game::IsHomicideEventRunning();
int Game::GetMaxParkingSpace();
void Game::SetMaxParkingSpace(int space_);
float Game::GetGlobalEventFrequencyFactor();
void Game::SetGlobalEventFrequencyFactor(float factor_);
float Game::GetTimeActivePlayerSwitchMP();
void Game::SetTimeActivePlayerSwitchMP(float time_);
int Game::ShowEvent(const char* Text_, Vector Position_); // returns ID of the event
bool Game::SetEventFinished(int eventID_, bool succesful_, int reward_);
bool Game::IsPositionAcceptable(Vector Position_);
bool GameObject::IsCommandable() const;
void GameObject::PauseParticleEffect();
void GameObject::ResumeParticleEffect();
void GameObject::PauseParticleEffectChild(const char *name_);
GameObjectList GameObject::GetObjectsWithNameInRange(float radius_, const char* name_, int filter_ = ACTOR_OBJECT | ACTOR_PERSON | ACTOR_VEHICLE | ACTOR_HOUSE | ACTOR_OPEN_HOUSE);
Vector GameObject::GetChildPosition(const char* name_) const;
void GameObject::SetEffect(const char* effect_, const char* params_);
void GameObject::PushActionShoot(ActionInsertMode Mode_, int TargetID_);
void GameObject::PushActionUsePath(ActionInsertMode Mode_, const char *Path_, float Speed_ = 0.f, bool forward_ = true);
void GameObject::PushActionUsePath(ActionInsertMode Mode_, Path *Path_, bool Forward_, float Speed_ = 0.f, bool forceUseRF_ = false);
void GameObject::PushActionScoutArea(ActionInsertMode Mode_);
void GameObject::PushActionCheckVictim(ActionInsertMode Mode_, Person *Person_, float WaitTime_);
void GameObject::AttachSound(int soundRef_);
void GameObject::UnattachSound(int soundRef_);
bool Input::LShiftPressed();
bool Input::RShiftPressed();
bool Input::LCtrlPressed();
bool Input::RCtrlPressed();
void ScriptInterface::HideMouseCursor(bool hide_);
int OpenHouse::GetChildID(int groupID_) const;
void OpenHouse::UpdateOpenCloseState();
bool Person::IsInSight(int TargetID_) const;
void Person::Carried(bool carried_, bool hide_, GameObject *carrier_ = NULL);
void Person::SetSpreadAngle(float angle_);
void Person::SetSightAngle(float angle_);
bool Person::IsCarWithPrefixInRange(float radius, const char* prefix, int &id);
bool Person::GetDisableGangsterSymbol();
void Person::SetDisableGangsterSymbol(bool disable_);
void Person::SetDogPerceptionRange(float range_);
float Person::GetDogPerceptionRange();
void Person::SetUpgradeLevel(int level_);
int Person::GetUpgradeLevel() const;
bool Person::IsVictim() const;
void Vehicle::SetMaxEnergy(float energy_);
void Vehicle::PlayAnimOpenDoor(const char *name_, float time_, GameObject *Caller_=NULL);
void Vehicle::PlayAnimCloseDoor(const char *name_, float time_, GameObject *Caller_=NULL);
int Vehicle::GetNumUsedConnectors() const;
bool Vehicle::RemoveTrainWaggon(GameObject *waggon_);
int Vehicle::GetNumTrainWaggons();
void Vehicle::SetWaterStreamStartWidth(float width_);
float Vehicle::GetWaterStreamStartWidth() const;
void Vehicle::SetWaterStreamEndWidth(float width_);
float Vehicle::GetWaterStreamEndWidth() const;
void Weather::SetHail(bool hail_);
bool Weather::GetHail();
-Neue Konstanten
RESTRICT2_CANBEPICKEDUP in CommandRestriction2
EQUIP_DUMMYRIFLE in EquipmentType
PLACEMENT_ALIGNED_CORNERS_FLOOR in FloorPlacement
BEHAVIOUR_CIVILIAN_ZOMBIE in PersonBehaviour
Bekannte Probleme:
– Die Datei mit der Tastenbelegung (Specs/keys.xml) wird nach Änderungen untersucht, wenn ihr MP spielen wollt. Änderungen an der Datei verhindern also die Teilnahme am MP!