File: Script.c

package info (click to toggle)
openclonk 8.1-2
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 169,500 kB
  • sloc: cpp: 180,478; ansic: 108,988; xml: 31,371; python: 1,223; php: 767; makefile: 139; sh: 101; javascript: 34
file content (95 lines) | stat: -rw-r--r-- 1,805 bytes parent folder | download | duplicates (5)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
/**
	Helmet
	Protective head armor.
	
	@author: pluto, Clonkonaut
*/

#include Library_Wearable

/*-- Engine Callbacks --*/

func Hit()
{
	Sound("Hits::Materials::Metal::DullMetalHit?");
}

/*-- Usage --*/

public func ControlUse(object clonk)
{
	if (IsWorn())
		TakeOff();
	else
		PutOn(clonk);

	return true;
}

// Helmet effect: 20% less damage
func OnDamage(int damage, int cause, int by_player)
{
	// Do nothing on energy gained
	if (damage > 0) return damage;
	// Doesn't protect against all damage
	if (cause == FX_Call_EngBlast || cause == FX_Call_EngFire || cause == FX_Call_EngAsphyxiation || cause == FX_Call_EngCorrosion)
		return damage;

	return damage - (damage*20/100);
}

/*-- Production --*/

public func IsWeapon() { return true; }
public func IsArmoryProduct() { return true; }

/*-- Display --*/

public func GetWearPlace()
{
	return WEARABLE_Head;
}

public func GetWearBone()
{
	return "Main";
}

public func GetWearTransform()
{
	return Trans_Mul(Trans_Rotate(90, 0, 0, 1), Trans_Translate(0, -300));
}

public func GetCarryMode(object clonk, bool secondary)
{
	if (IsWorn() || display_disabled)
		return CARRY_None;
	return CARRY_BothHands;
}

public func GetCarryPhase(object clonk)
{
	return 550;
}

public func GetCarryBone(object clonk, bool secondary)
{
	return "Main";
}

public func GetCarryTransform(object clonk, bool secondary, bool no_hand, bool on_back)
{
	return Trans_Mul(Trans_Rotate(80, 0, 0, 1), Trans_Rotate(-90, 0, 1), Trans_Rotate(-45, 0, 0, 1), Trans_Translate(-1000, 4000));
}

func Definition(def)
{
	SetProperty("PictureTransformation", Trans_Mul(Trans_Rotate(45, 0, 1), Trans_Rotate(10, 0, 0, 1)),def);
}

/*-- Properties --*/

local Name = "$Name$";
local Description = "$Description$";
local Collectible = true;
local Components = {Wood = 1, Metal = 1};