2010-11-28 16:38:05 +00:00
|
|
|
// King size javelin hurts more.
|
|
|
|
#appendto Javelin
|
|
|
|
|
|
|
|
local king_size;
|
|
|
|
|
|
|
|
public func MakeKingSize() { king_size = true; SetMeshMaterial("KingJavelin", 0); }
|
|
|
|
public func MakeNormalSize() { king_size = false; SetMeshMaterial("javelin", 0); }
|
|
|
|
public func Departure() { MakeNormalSize(); }
|
|
|
|
|
|
|
|
protected func JavelinStrength()
|
|
|
|
{
|
|
|
|
if (king_size)
|
|
|
|
return 21;
|
|
|
|
return 14;
|
|
|
|
}
|
|
|
|
|
|
|
|
public func DoThrow(object clonk, int angle)
|
|
|
|
{
|
|
|
|
var javelin=TakeObject();
|
2010-11-28 20:06:24 +00:00
|
|
|
if (king_size)
|
|
|
|
javelin->MakeKingSize();
|
2014-10-04 07:21:58 +00:00
|
|
|
|
2010-11-28 16:38:05 +00:00
|
|
|
// The clonk can convert some, indicated by div in percentages, of its own kinetic energy to change the momenta of the javelin, a miracle.
|
|
|
|
var div = 60; // 40% is converted to the direction of the throwing angle.
|
|
|
|
var xdir = clonk->GetXDir(1000);
|
|
|
|
var ydir = clonk->GetYDir(1000);
|
2010-12-13 01:17:21 +00:00
|
|
|
var speed = clonk.ThrowSpeed * 21 + (100 - div) * Sqrt(xdir**2 + ydir**2) / 100;
|
2010-11-28 16:38:05 +00:00
|
|
|
var jav_x = div * xdir / 100 + Sin(angle, speed);
|
|
|
|
var jav_y = div * ydir / 100 - Cos(angle, speed);
|
|
|
|
|
|
|
|
javelin->SetXDir(jav_x, 1000);
|
|
|
|
javelin->SetYDir(jav_y, 1000);
|
|
|
|
|
|
|
|
SetController(clonk->GetController());
|
|
|
|
javelin->AddEffect("Flight",javelin,1,1,javelin,nil);
|
|
|
|
javelin->AddEffect("HitCheck",javelin,1,1,nil,nil,clonk);
|
|
|
|
|
2011-10-12 21:09:22 +00:00
|
|
|
Sound("ThrowJavelin?");
|
2010-11-28 16:38:05 +00:00
|
|
|
|
2015-03-23 19:30:15 +00:00
|
|
|
aiming = -1;
|
2010-11-28 16:38:05 +00:00
|
|
|
clonk->UpdateAttach();
|
2010-12-13 01:17:21 +00:00
|
|
|
}
|