1
0
This repository has been archived on 2025-06-02. You can view files and clone it, but cannot push or open issues or pull requests.
extremely-intense-mathematics/godot/scripts/rule_enforcement_device.gd

56 lines
1.6 KiB
GDScript3
Raw Permalink Normal View History

2025-03-21 17:24:21 -04:00
extends Node3D
static var FUSE_SOUND:AudioStream = preload("res://assets/sounds/fuse.ogg")
static var EXPLOSION_SOUND:AudioStream = preload("res://assets/sounds/explode.wav")
static var JITTER_AMOUNT:int = 10
static var ENFORCEMENT_DEVICE_JITTER_AMOUNT:float = 0.005
2025-03-21 17:24:21 -04:00
var grow_explosion:bool = false
var original_position:Vector3
2025-03-21 17:24:21 -04:00
func reset_rule_enforcement_device() -> void:
'''
Start the fuse sound
'''
2025-03-21 17:24:21 -04:00
%SOUNDS.stream = FUSE_SOUND
%SOUNDS.volume_db = -10
%SOUNDS.play()
visible = true
%EXPLOSION.visible = false
grow_explosion = false
%EXPLOSION.scale = Vector3(0.355,0.355,0.355)
func explode() -> void:
'''
Make the rule enforcement device go boom
'''
%SOUNDS.stream = EXPLOSION_SOUND
%SOUNDS.volume_db = 0
%SOUNDS.play()
grow_explosion = true
%EXPLOSION.visible = true
func _ready() -> void:
original_position = position
2025-03-21 17:24:21 -04:00
reset_rule_enforcement_device()
func _process(_delta: float) -> void:
%TIME_LEFT.text = ("%.02f" % GLOBALVARS.seconds_left).replace(".",":")
position = original_position + Vector3(
randf_range(-ENFORCEMENT_DEVICE_JITTER_AMOUNT,ENFORCEMENT_DEVICE_JITTER_AMOUNT),
randf_range(-ENFORCEMENT_DEVICE_JITTER_AMOUNT,ENFORCEMENT_DEVICE_JITTER_AMOUNT),
randf_range(-ENFORCEMENT_DEVICE_JITTER_AMOUNT,ENFORCEMENT_DEVICE_JITTER_AMOUNT)
)
2025-03-21 17:24:21 -04:00
if grow_explosion and %EXPLOSION.scale < Vector3(3,3,3):
%EXPLOSION.scale += Vector3(0.25,0.25,0.25)
%EXPLOSION.rotation_degrees += Vector3(
randf_range(-JITTER_AMOUNT,JITTER_AMOUNT),
randf_range(-JITTER_AMOUNT,JITTER_AMOUNT),
randf_range(-JITTER_AMOUNT,JITTER_AMOUNT)
)
2025-03-21 17:24:21 -04:00
elif grow_explosion:
%EXPLOSION.visible = false
visible = false