forked from Mirrors/openclonk
club buffed, try it!
parent
51f7855782
commit
85d9146ad0
|
@ -73,7 +73,7 @@ public func FinishedAiming(object clonk, int angle)
|
||||||
|
|
||||||
// since the Clonk internal callback is only once, we cannot use it
|
// since the Clonk internal callback is only once, we cannot use it
|
||||||
// ..
|
// ..
|
||||||
AddEffect("DuringClubShoot", clonk, 1, 1, this, nil, angle);
|
AddEffect("DuringClubShootControl", clonk, 1, 1, this, nil, angle);
|
||||||
|
|
||||||
// aaaand, a cooldown
|
// aaaand, a cooldown
|
||||||
AddEffect("ClubWeaponCooldown", clonk, 1, 5, this);
|
AddEffect("ClubWeaponCooldown", clonk, 1, 5, this);
|
||||||
|
@ -98,19 +98,28 @@ public func DuringShoot(object clonk, int angle)
|
||||||
// DoStrike(clonk, angle);
|
// DoStrike(clonk, angle);
|
||||||
}
|
}
|
||||||
|
|
||||||
func FxDuringClubShootStart(target, effect_number, temp, p1)
|
func FxDuringClubShootControlStart(target, effect_number, temp, p1)
|
||||||
{
|
{
|
||||||
if(temp) return;
|
if(temp) return;
|
||||||
EffectVar(0, target, effect_number)=p1;
|
EffectVar(0, target, effect_number)=p1;
|
||||||
}
|
}
|
||||||
|
|
||||||
func FxDuringClubShootTimer(target, effect_number, effect_time)
|
func FxDuringClubShootControlTimer(target, effect_number, effect_time)
|
||||||
{
|
{
|
||||||
if(effect_time > 16) return -1;
|
if(effect_time > 16) return -1;
|
||||||
if(!this) return -1;
|
if(!this) return -1;
|
||||||
this->DoStrike(target, EffectVar(0, target, effect_number));
|
this->DoStrike(target, EffectVar(0, target, effect_number));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// you are not going to be hit by objects you fling away
|
||||||
|
func FxDuringClubShootControlQueryCatchBlow(object target, int num, object obj)
|
||||||
|
{
|
||||||
|
DoStrike();
|
||||||
|
var en=Format("CannotBeHitTwiceBy%d", this->ObjectNumber());
|
||||||
|
if(GetEffect(en, obj)) return true;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
func DoStrike(clonk, angle)
|
func DoStrike(clonk, angle)
|
||||||
{
|
{
|
||||||
var x=Sin(angle, 7);
|
var x=Sin(angle, 7);
|
||||||
|
@ -127,7 +136,7 @@ func DoStrike(clonk, angle)
|
||||||
{
|
{
|
||||||
var damage=5*1000;
|
var damage=5*1000;
|
||||||
var f=ApplyShieldFactor(clonk, obj, damage);
|
var f=ApplyShieldFactor(clonk, obj, damage);
|
||||||
ApplyWeaponBash(obj, 200, angle);
|
ApplyWeaponBash(obj, 400, angle);
|
||||||
obj->DoEnergy(-damage, true, FX_Call_EngGetPunched, clonk->GetOwner());
|
obj->DoEnergy(-damage, true, FX_Call_EngGetPunched, clonk->GetOwner());
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -135,10 +144,10 @@ func DoStrike(clonk, angle)
|
||||||
var div=100;
|
var div=100;
|
||||||
if(obj->GetContact(-1)) div*=10;
|
if(obj->GetContact(-1)) div*=10;
|
||||||
|
|
||||||
// mass factor
|
// mass/size factor
|
||||||
var fac1=10000/Max(2, obj->GetMass());
|
var fac1=10000/Max(2, obj->GetMass());
|
||||||
var fac2=BoundBy(10-Abs(obj->GetDefCoreVal("Width", "DefCore")-obj->GetDefCoreVal("Height", "DefCore")), 1, 10);
|
var fac2=BoundBy(10-Abs(obj->GetDefCoreVal("Width", "DefCore")-obj->GetDefCoreVal("Height", "DefCore")), 1, 10);
|
||||||
var speed=(2000 * fac1 * fac2) / 10 / 1000;
|
var speed=(3000 * fac1 * fac2) / 10 / 1000;
|
||||||
obj->SetXDir((obj->GetXDir(100) + Sin(angle, speed)) / 2, div);
|
obj->SetXDir((obj->GetXDir(100) + Sin(angle, speed)) / 2, div);
|
||||||
obj->SetYDir((obj->GetYDir(100) - Cos(angle, speed)) / 2, div);
|
obj->SetYDir((obj->GetYDir(100) - Cos(angle, speed)) / 2, div);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue