53 lines
1005 B
C#
53 lines
1005 B
C#
![]() |
using Godot;
|
||
|
using System.Collections;
|
||
|
using System.Collections.Generic;
|
||
|
using Godot.Collections;
|
||
|
|
||
|
namespace Rokojori
|
||
|
{
|
||
|
[GlobalClass,Tool]
|
||
|
public partial class Shooter:Action
|
||
|
{
|
||
|
[Export]
|
||
|
public Node pigContainer;
|
||
|
|
||
|
[Export]
|
||
|
public float startChance = 10;
|
||
|
|
||
|
[Export]
|
||
|
public float endChance = 80;
|
||
|
|
||
|
[Export]
|
||
|
public float duration = 60;
|
||
|
|
||
|
[Export]
|
||
|
public Node3D bulletsContainer;
|
||
|
|
||
|
protected override void _OnTrigger()
|
||
|
{
|
||
|
var random = GodotRandom.Get();
|
||
|
var edr = Unique<EatDaRichGame>.Get();
|
||
|
|
||
|
var chance = MathX.MapClamped( edr.secondsPlaying, 0, duration, startChance, endChance );
|
||
|
|
||
|
if ( ! random.Chance( chance ) )
|
||
|
{
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
var pigContainers = pigContainer.GetDirectChildren<Node>();
|
||
|
var selected = GodotRandom.Get().From( pigContainers );
|
||
|
|
||
|
if ( selected == null )
|
||
|
{
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
var pig = selected.Get<Pig>();
|
||
|
|
||
|
pig.Shoot( bulletsContainer );
|
||
|
|
||
|
}
|
||
|
|
||
|
}
|
||
|
}
|