diff options
Diffstat (limited to 'Items.c4d/Sensors.c4d/CardReader.c4d')
14 files changed, 361 insertions, 0 deletions
diff --git a/Items.c4d/Sensors.c4d/CardReader.c4d/DefCore.txt b/Items.c4d/Sensors.c4d/CardReader.c4d/DefCore.txt new file mode 100644 index 0000000..c202c8f --- /dev/null +++ b/Items.c4d/Sensors.c4d/CardReader.c4d/DefCore.txt @@ -0,0 +1,20 @@ +[DefCore]
+id=CR7I
+Name=Card Reader
+Version=4,9,5
+Category=C4D_Object|C4D_SelectMaterial|C4D_SelectKnowledge|C4D_SelectHomebase
+Width=10
+Height=5
+Offset=-5,-2
+Mass=10
+Value=5
+Components=METL=1;
+Picture=0,5,64,64
+Vertices=1
+VertexFriction=100
+Grab=2
+Collectible=1
+MaxUserSelect=10
+Rebuy=1
+NoPushEnter=1
+ColorByOwner=1
diff --git a/Items.c4d/Sensors.c4d/CardReader.c4d/Graphics.png b/Items.c4d/Sensors.c4d/CardReader.c4d/Graphics.png Binary files differnew file mode 100644 index 0000000..0fea303 --- /dev/null +++ b/Items.c4d/Sensors.c4d/CardReader.c4d/Graphics.png diff --git a/Items.c4d/Sensors.c4d/CardReader.c4d/GraphicsCard.png b/Items.c4d/Sensors.c4d/CardReader.c4d/GraphicsCard.png Binary files differnew file mode 100644 index 0000000..9e67d34 --- /dev/null +++ b/Items.c4d/Sensors.c4d/CardReader.c4d/GraphicsCard.png diff --git a/Items.c4d/Sensors.c4d/CardReader.c4d/Keycard.c4d/DefCore.txt b/Items.c4d/Sensors.c4d/CardReader.c4d/Keycard.c4d/DefCore.txt new file mode 100644 index 0000000..c626851 --- /dev/null +++ b/Items.c4d/Sensors.c4d/CardReader.c4d/Keycard.c4d/DefCore.txt @@ -0,0 +1,21 @@ +[DefCore]
+id=KC7I
+Name=Keycard
+Version=4,9,5
+Category=C4D_Object|C4D_SelectMaterial|C4D_SelectKnowledge|C4D_SelectHomebase
+MaxUserSelect=10
+Width=8
+Height=5
+Offset=-4,-3
+Value=10
+Mass=10
+Components=METL=1;
+Picture=0,5,64,48
+Vertices=2
+VertexX=-4,4
+VertexY=0,0
+VertexFriction=60,60
+Rebuy=1
+Collectible=1
+Rotate=1
+ColorByOwner=1
diff --git a/Items.c4d/Sensors.c4d/CardReader.c4d/Keycard.c4d/Graphics.png b/Items.c4d/Sensors.c4d/CardReader.c4d/Keycard.c4d/Graphics.png Binary files differnew file mode 100644 index 0000000..2d9c553 --- /dev/null +++ b/Items.c4d/Sensors.c4d/CardReader.c4d/Keycard.c4d/Graphics.png diff --git a/Items.c4d/Sensors.c4d/CardReader.c4d/Keycard.c4d/Names.txt b/Items.c4d/Sensors.c4d/CardReader.c4d/Keycard.c4d/Names.txt new file mode 100644 index 0000000..ea9589e --- /dev/null +++ b/Items.c4d/Sensors.c4d/CardReader.c4d/Keycard.c4d/Names.txt @@ -0,0 +1,2 @@ +DE:Schlüsselkarte
+US:Key card
\ No newline at end of file diff --git a/Items.c4d/Sensors.c4d/CardReader.c4d/Keycard.c4d/Overlay.png b/Items.c4d/Sensors.c4d/CardReader.c4d/Keycard.c4d/Overlay.png Binary files differnew file mode 100644 index 0000000..acdeab5 --- /dev/null +++ b/Items.c4d/Sensors.c4d/CardReader.c4d/Keycard.c4d/Overlay.png diff --git a/Items.c4d/Sensors.c4d/CardReader.c4d/Keycard.c4d/Script.c b/Items.c4d/Sensors.c4d/CardReader.c4d/Keycard.c4d/Script.c new file mode 100644 index 0000000..bd604c3 --- /dev/null +++ b/Items.c4d/Sensors.c4d/CardReader.c4d/Keycard.c4d/Script.c @@ -0,0 +1,109 @@ +#strict 2
+
+local readers;
+local color;
+
+func Initialize()
+{
+ readers = [];
+ ResetColor();
+}
+
+func ResetColor()
+{
+ SetColor(RGB(255, 255, 255));
+}
+
+func OnOwnerChanged()
+{
+ SetColorDw(color);
+}
+
+func HasReader(object reader)
+{
+ return GetIndexOf(reader, readers) != -1;
+}
+
+func CleanRemovedReaders()
+{
+ ArrayEraseItem(readers, 0, true);
+}
+
+func AddReader(object reader)
+{
+ if(!HasReader(reader))
+ {
+ readers[GetLength(readers)] = reader;
+ CleanRemovedReaders();
+ if(GetLength(readers) == 1)
+ {
+ SetColor(reader->GetColor());
+ }
+ }
+ return true;
+}
+
+func RemoveReader(object reader)
+{
+ ArrayEraseItem(readers, reader);
+ CleanRemovedReaders();
+ if(color == reader->GetColor())
+ {
+ if(GetLength(readers) > 0)
+ {
+ SetColor(readers[0]->GetColor());
+ }
+ else
+ {
+ ResetColor();
+ }
+ }
+ return true;
+}
+
+func SetColor(int newColor)
+{
+ color = newColor;
+ SetColorDw(newColor);
+}
+
+func Selection()
+{
+ if(GetLength(readers))
+ {
+ var first = true, descList = "";
+ for(var reader in readers)
+ {
+ if(reader)
+ {
+ Contained()->CreateSelectMark()->MarkObject(reader, 35);
+ var desc = reader->GetDescription() || "";
+ if(!first)
+ {
+ descList = Format("%s, ", descList);
+ }
+ descList = Format("%s<c %x>·</c> %s", descList, reader->GetColor(), desc);
+ first = false;
+ }
+ }
+ if(descList != "")
+ {
+ PlayerMessage(GetOwner(Contained()), "%s: %s", Contained(), SN7I->TargetText(), descList);
+ }
+ }
+}
+
+func Entrance(object container)
+{
+ if(GetOCF(container) & OCF_CrewMember)
+ {
+ Selection();
+ }
+}
+
+func GetColor()
+{
+ return color;
+}
+
+func IsAnvilProduct() { return true; }
diff --git a/Items.c4d/Sensors.c4d/CardReader.c4d/Names.txt b/Items.c4d/Sensors.c4d/CardReader.c4d/Names.txt new file mode 100644 index 0000000..971f587 --- /dev/null +++ b/Items.c4d/Sensors.c4d/CardReader.c4d/Names.txt @@ -0,0 +1,2 @@ +DE:Kartenleser
+US:Card reader
diff --git a/Items.c4d/Sensors.c4d/CardReader.c4d/Overlay.png b/Items.c4d/Sensors.c4d/CardReader.c4d/Overlay.png Binary files differnew file mode 100644 index 0000000..0112730 --- /dev/null +++ b/Items.c4d/Sensors.c4d/CardReader.c4d/Overlay.png diff --git a/Items.c4d/Sensors.c4d/CardReader.c4d/OverlayCard.png b/Items.c4d/Sensors.c4d/CardReader.c4d/OverlayCard.png Binary files differnew file mode 100644 index 0000000..3e3205f --- /dev/null +++ b/Items.c4d/Sensors.c4d/CardReader.c4d/OverlayCard.png diff --git a/Items.c4d/Sensors.c4d/CardReader.c4d/Script.c b/Items.c4d/Sensors.c4d/CardReader.c4d/Script.c new file mode 100644 index 0000000..bdf4d62 --- /dev/null +++ b/Items.c4d/Sensors.c4d/CardReader.c4d/Script.c @@ -0,0 +1,193 @@ +#strict 2
+#include SN7I
+
+local color, controllingCard;
+
+func Init()
+{
+ SetColor(HSL(Random(255), 255, 127));
+ var card = CreateContents(KC7I);
+ card->AddReader(this);
+ Collection2(card);
+}
+
+func SetColor(int newColor)
+{
+ color = newColor;
+ SetColorDw(color);
+}
+
+func GetColor() { return color; }
+
+func OnOwnerChanged()
+{
+ SetColorDw(color);
+}
+
+func Triggers() { return [["$RightCard$"], ["$WrongCard$"]];}
+
+func ControlThrow(object caller)
+{
+ var card, success;
+ if(card = FindCard(caller, success))
+ {
+ if(!controllingCard)
+ {
+ ShowSuccess(success);
+ Trigger(!success, caller);
+ }
+ else
+ {
+ PlayerMessage(GetController(caller), "$CardLoaded$", this);
+ }
+ }
+ else if(controllingCard)
+ {
+ GetCard(0, caller);
+ }
+ return ClearCom(caller);
+}
+
+func ControlThrowDouble() { return ControlThrow(...); }
+
+func ShowSuccess(bool success)
+{
+ if(!success)
+ {
+ Sound("Error");
+ CreateParticle("PSpark", -5, -1, 0, 0, 50, RGB(192, 0, 0));
+ }
+ else
+ {
+ CreateParticle("PSpark", -5, -1, 0, 0, 50, RGB(0, 192, 0));
+ }
+}
+
+func Setup(object caller, int& menuIndex)
+{
+ if(controllingCard && Contained(controllingCard) == this)
+ {
+ AddMenuItem("$GetCard$", "GetCard", KC7I, caller, 0, caller, 0, C4MN_Add_ForceNoDesc | C4MN_Add_ImgObject, controllingCard);
+ ++menuIndex;
+ var success, card = FindCard(caller, success);
+ if(card && !card->HasReader(this))
+ {
+ selectCaller = caller;
+ AddMenuItem("$AddReader$", "AddReader", KC7I, caller, 0, card, 0, C4MN_Add_ForceNoDesc | C4MN_Add_ImgObject, card);
+ ++menuIndex;
+ }
+ if(ObjectCount2(Find_ID(KC7I), Find_Func("HasReader", this), Find_Exclude(controllingCard)))
+ {
+ AddMenuItem("$RemoveReader$", "RemoveReader", KC7I, caller, 0, caller, 0, C4MN_Add_ForceNoDesc | C4MN_Add_ImgObject, controllingCard);
+ ++menuIndex;
+ }
+ }
+ else
+ {
+ var success;
+ FindCard(caller, success);
+ if(success)
+ {
+ AddMenuItem("$LoadCard$", "LoadCard", KC7I, caller, 0, caller, 0, C4MN_Add_ForceNoDesc | C4MN_Add_ImgColor, RGB(255, 255, 255));
+ ++menuIndex;
+ }
+ }
+ return true;
+}
+
+func GetCard(id id, object caller)
+{
+ if(controllingCard)
+ {
+ Exit(controllingCard);
+ caller->Collect(controllingCard);
+ }
+}
+
+func LoadCard(id id, object caller)
+{
+ var success;
+ var card = FindCard(caller, success);
+ if(success)
+ {
+ Enter(this, card);
+ }
+ _Setup(caller);
+ SelectMenuItem(2, caller);
+}
+
+func AddReader(id id, object card)
+{
+ card->AddReader(this);
+}
+
+func RemoveReader(id id, object caller)
+{
+ if(controllingCard)
+ {
+ controllingCard->RemoveReader(this);
+ GetCard(id, caller);
+ }
+}
+
+func FindCard(object container, bool& success)
+{
+ var card;
+ success = false;
+ for(var i = 0; i < ContentsCount(0, container); ++i)
+ {
+ var content = Contents(i, container);
+ if(GetID(content) == KC7I)
+ {
+ if(content->HasReader(this))
+ {
+ card = content;
+ success = true;
+ break;
+ }
+ else if(!card)
+ {
+ card = content;
+ }
+ }
+ }
+ return card;
+}
+
+func Collection2(object obj)
+{
+ if(!controllingCard && obj->GetID() == KC7I && obj->HasReader(this))
+ {
+ controllingCard = obj;
+ SetGraphics("Card", this, GetID(), GFX_Overlay, GFXOV_MODE_Base);
+ SetClrModulation(obj->GetColor(), this, GFX_Overlay);
+ }
+}
+
+func ContentsDestruction(object obj) { return Ejection(obj); }
+
+func Ejection(object obj)
+{
+ if(obj == controllingCard)
+ {
+ SetGraphics(0, this, 0, GFX_Overlay);
+ controllingCard = 0;
+ }
+}
+
+func SetupCondition(object caller)
+{
+ if(controllingCard)
+ {
+ return true;
+ }
+
+ var success;
+ FindCard(caller, success);
+ return success;
+}
+
+func CalcDefValue()
+{
+ return Value(GetID()) + GetValue(0, KC7I);
+}
diff --git a/Items.c4d/Sensors.c4d/CardReader.c4d/StringTblDE.txt b/Items.c4d/Sensors.c4d/CardReader.c4d/StringTblDE.txt new file mode 100644 index 0000000..07d8964 --- /dev/null +++ b/Items.c4d/Sensors.c4d/CardReader.c4d/StringTblDE.txt @@ -0,0 +1,7 @@ +RightCard=Richtige Karte
+WrongCard=Falsche Karte
+GetCard=Karte herausnehmen
+AddReader=Leser in die Karte schreiben
+RemoveReader=Leser aus Karte löschen
+LoadCard=Karte hineinstecken
+CardLoaded=Es steckt bereits eine Karte!
diff --git a/Items.c4d/Sensors.c4d/CardReader.c4d/StringTblUS.txt b/Items.c4d/Sensors.c4d/CardReader.c4d/StringTblUS.txt new file mode 100644 index 0000000..84c5a17 --- /dev/null +++ b/Items.c4d/Sensors.c4d/CardReader.c4d/StringTblUS.txt @@ -0,0 +1,7 @@ +RightCard=Right card
+WrongCard=Wrong card
+GetCard=Take card
+AddReader=Add reader to card
+RemoveReader=Remove reader from card
+LoadCard=Put card in
+CardLoaded=There is already a card inserted
|
