extends KinematicBody2D var velocity = Vector2.ZERO var is_moving = false var is_holding_shard = true var has_respawned = false var first_lead = true onready var death_particles = $DeathSplatter onready var sprite = $Sprite onready var anims = $AnimationPlayer onready var raycast = $RayCast2D onready var respawn_raycast = $RespawnRaycast onready var shard_position = $Position2D onready var start_position = position onready var blink_timer = $BlinkTimer onready var text_anim = $TextAnim onready var cop_detector = $CopDetector const shard = preload("res://objects/collectibles/shard.tscn") const BloodSpray := preload("res://objects/environment/blood/blood_spray.tscn") #DIALOGUE const here_take_this = preload("res://audio/sounds/msx_here_take_this.wav") const come_here = preload("res://audio/sounds/msx_come_here.ogg") const help_me = preload("res://audio/sounds/msx_help_me_get_outta_here.ogg") const fuck = preload("res://audio/sounds/msx_fuck.ogg") const fucking_cop = preload("res://audio/sounds/msx_fucking_cop.ogg") const goddammit = preload("res://audio/sounds/msx_goddammit.ogg") const motherfucker = preload("res://audio/sounds/msx_motherfucker.ogg") const shit = preload("res://audio/sounds/msx_shit.ogg") func _ready(): raycast.add_exception($Hitbox) blink_timer.start(rand_range(5.0,7.0)) func _physics_process(delta): if is_moving: velocity.x = -50 #Stop when see something if raycast.is_colliding(): #stop behind sg velocity.x = 0 if respawn_raycast.is_colliding(): #start moving again after respawning when seeing sg if raycast.get_collider() != null: if raycast.get_collider().is_in_group("player_hitbox"): if first_lead == true: Audio.play_sound(help_me,Audio.ac_voice) text_anim.play("help me") first_lead = false is_moving = true velocity.y += 128 * delta velocity = move_and_slide_with_snap(velocity, Vector2.DOWN, Vector2.UP, true) #Anims if velocity.x == 0: if !anims.get_current_animation() == "give" && !anims.get_current_animation() == "respawn" && !anims.get_current_animation() == "blink" && !anims.get_current_animation() == "come here" && !anims.get_current_animation() == "help me": anims.play("idle") else: anims.play("walk") #Stop at the end of path and give shard if position.x <= 80: is_moving = false velocity.x = 0 if is_holding_shard: anims.play("give") #Cop detector if cop_detector.is_colliding(): print(cop_detector.get_collider()) func spawn_shard(): Audio.play_sound(here_take_this,Audio.ac_voice) var ShardInstance = shard.instance() ShardInstance.global_position = Vector2(shard_position.global_position.x,shard_position.global_position.y) ShardInstance.number = 1 get_owner().add_child(ShardInstance) is_holding_shard = false func switch_action(): Audio.play_sound(come_here,Audio.ac_voice) anims.play("come here") func spray_blood(): for i in 16: var spray = BloodSpray.instance() spray.pause_mode = PAUSE_MODE_PROCESS Physics2DServer.set_active(true) spray.global_position = global_position spray.velocity = Vector2(randf() * 80.0, 0.0).rotated(randf() * TAU) spray.stains_player = false get_parent().add_child(spray) func die(): #Create particles remove_child(death_particles) get_parent().add_child(death_particles) death_particles.global_position = global_position death_particles.emitting = true spray_blood() Audio.play_sound(Audio.a_msx_die,Audio.ac_die) is_moving = false velocity.x = 0 position = start_position anims.play("respawn") has_respawned = true func _on_BlinkTimer_timeout(): anims.play("blink") blink_timer.start(rand_range(5.0,7.0))