Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- BulldozerPlayer.spawn = function (self, optional_position, optional_rotation, is_initial_spawn, ammo_melee, ammo_ranged, healthkit, potion, grenade)
- local profile_index = self.profile_index
- local profile_index_original = self.profile_index
- profile_index = 3
- local profile = SPProfiles[profile_index]
- fassert(profile, "[SpawnManager] Trying to spawn with profile %q that doesn't exist in %q.", profile_index, "SPProfiles")
- local nav_world = Managers.state.entity:system("ai_system"):nav_world()
- local difficulty_manager = Managers.state.difficulty
- local difficulty_settings = difficulty_manager.get_difficulty_settings(difficulty_manager)
- local player_health = difficulty_settings.max_hp
- local player_wounds = difficulty_settings.wounds
- if self.spawn_position then
- optional_position = self.spawn_position:unbox()
- self.spawn_position = nil
- end
- if self.spawn_rotation then
- optional_rotation = self.spawn_rotation:unbox()
- self.spawn_rotation = nil
- end
- local character_state_class_list = {
- PlayerCharacterStateDead,
- PlayerCharacterStateInteracting,
- PlayerCharacterStateInspecting,
- PlayerCharacterStateJumping,
- PlayerCharacterStateClimbingLadder,
- PlayerCharacterStateLeavingLadderTop,
- PlayerCharacterStateEnterLadderTop,
- PlayerCharacterStateFalling,
- PlayerCharacterStateKnockedDown,
- PlayerCharacterStatePouncedDown,
- PlayerCharacterStateStanding,
- PlayerCharacterStateWalking,
- PlayerCharacterStateDodging,
- PlayerCharacterStateLedgeHanging,
- PlayerCharacterStateLeaveLedgeHangingPullUp,
- PlayerCharacterStateLeaveLedgeHangingFalling,
- PlayerCharacterStateCatapulted,
- PlayerCharacterStateStunned,
- PlayerCharacterStateUsingTransport,
- PlayerCharacterStateGrabbedByPackMaster,
- PlayerCharacterStateWaitingForAssistedRespawn,
- PLayerCharacterStateOverchargeExploding
- }
- local initial_inventory = self._get_initial_inventory(self, healthkit, potion, grenade)
- local extension_init_data = {
- input_system = {
- player = self
- },
- character_state_machine_system = {
- start_state = "standing",
- character_state_class_list = character_state_class_list,
- player = self,
- nav_world = nav_world
- },
- health_system = {
- health = player_health,
- player = self
- },
- status_system = {
- wounds = player_wounds,
- profile_id = profile_index_original,
- player = self
- },
- hit_reaction_system = {
- is_husk = false,
- hit_reaction_template = "player"
- },
- death_system = {
- death_reaction_template = "player",
- is_husk = false
- },
- inventory_system = {
- profile = profile,
- initial_inventory = initial_inventory,
- player = self,
- ammo_percent = {
- slot_melee = ammo_melee,
- slot_ranged = ammo_ranged
- }
- },
- attachment_system = {
- profile = profile,
- player = self
- },
- locomotion_system = {
- player = self
- },
- camera_system = {
- player = self
- },
- first_person_system = {
- profile = profile
- },
- dialogue_context_system = {
- profile = profile
- },
- dialogue_system = {
- local_player = true,
- faction = "player",
- wwise_voice_switch_group = "character",
- profile = profile,
- wwise_voice_switch_value = profile.character_vo
- },
- whereabouts_system = {
- nav_world = nav_world
- },
- aim_system = {
- is_husk = false,
- template = "player"
- },
- buff_system = {
- is_husk = false
- },
- statistics_system = {
- template = "player",
- statistics_id = self.telemetry_id(self)
- },
- ai_slot_system = {
- profile_index = profile_index
- }
- }
- local unit_template_name = nil
- local unit_name = profile.base_units.third_person
- local spawn_data = {
- unit_template_name = unit_template_name,
- unit_name = unit_name,
- extension_init_data = extension_init_data
- }
- local spawn_manager = Managers.state.spawn
- local unit = spawn_manager.spawn_unit(spawn_manager, spawn_data, optional_position, optional_rotation)
- local player_manager = Managers.player
- Unit.set_data(unit, "unit_name", profile.unit_name)
- local world = spawn_manager.world
- LevelHelper:set_flow_parameter(world, "local_player_profile_name", profile.display_name)
- Unit.set_data(unit, "sound_character", profile.sound_character)
- Unit.create_actor(unit, "human_collision", false)
- local is_player_unit = true
- player_manager.assign_unit_ownership(player_manager, unit, self, is_player_unit)
- Managers.state.event:trigger("level_start_local_player_spawned", is_initial_spawn)
- if GameSettingsDevelopment.use_telemetry then
- local peer_type = (self.is_server and "host") or "client"
- self._add_spawn_telemetry(self, peer_type)
- end
- Managers.state.event:trigger("camera_teleported")
- return unit
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement