func Initialize() { // Setup testing environment: one object for context, a second object at the context object, one object at 0,0 var ctx = CreateObject(Dummy, 100, 100, NO_OWNER); ctx->SetName("ctx"); var at_origin = CreateObject(Dummy, 0, 0, NO_OWNER); at_origin->SetName("at_origin"); var at_object = CreateObject(Dummy, ctx->GetX(), ctx->GetY(), NO_OWNER); at_object->SetName("at_object"); TEST("object context Find_Distance"); EXPECT_EQ(at_object, ctx->FindObject(Find_Exclude(ctx), Find_Distance(1))); TEST("global context Find_Distance"); EXPECT_EQ(at_origin, FindObject(Find_Exclude(ctx), Find_Distance(1, at_origin->GetX(), at_origin->GetY()))); EXPECT_EQ(at_object, FindObject(Find_Exclude(ctx), Find_Distance(1, at_object->GetX(), at_object->GetY()))); TEST("object context Find_InRect"); EXPECT_EQ(at_object, ctx->FindObject(Find_Exclude(ctx), Find_InRect(0, 0, 1, 1))); EXPECT_EQ(at_origin, ctx->FindObject(Find_Exclude(ctx), Find_InRect(-ctx->GetX(), -ctx->GetY(), 1, 1))); TEST("global context Find_InRect"); EXPECT_EQ(at_origin, FindObject(Find_Exclude(ctx), Find_InRect(at_origin->GetX(), at_origin->GetY(), 1, 1))); EXPECT_EQ(at_object, FindObject(Find_Exclude(ctx), Find_InRect(at_object->GetX(), at_object->GetY(), 1, 1))); TEST("object context Sort_Distance"); EXPECT_EQ(at_object, ctx->FindObject(Find_Exclude(ctx), Sort_Distance() )); EXPECT_EQ(at_origin, ctx->FindObject(Find_Exclude(ctx), Sort_Reverse(Sort_Distance()))); TEST("global context Sort_Distance"); EXPECT_EQ(at_object, FindObject(Find_Exclude(ctx), Sort_Distance(at_object->GetX(), at_object->GetY()) )); EXPECT_EQ(at_origin, FindObject(Find_Exclude(ctx), Sort_Distance(at_origin->GetX(), at_origin->GetY()) )); EXPECT_EQ(at_object, FindObject(Find_Exclude(ctx), Sort_Reverse(Sort_Distance(at_origin->GetX(), at_origin->GetY())))); END_TEST(); GameOver(); }
func FxPyritHammeringTimer(object c, proplist fx, int time) { if (!fx.hat) { // Pyit has a red hat! fx.hat = c->AttachMesh(Hat, "skeleton_head", "main", Trans_Translate(5500, 0, 0)); } if (FrameCounter() < this.anim_continue_frame || c.has_sequence) return FX_OK; this.anim = 0; if (!fx.catapult) if (!(fx.catapult = c->FindObject(Find_ID(Catapult), Sort_Distance()))) return FX_OK; if ((!Random(20) && GetPlayerCount()) || this.was_walk_interrupted) { // Move between two places (only if players are joined so Pyrit stays in place for object saving) var new_pos = [fx.catapult->GetX()-24, fx.catapult->GetX()+26][c->GetX() < fx.catapult->GetX()]; c->SetCommand("MoveTo", nil, new_pos, fx.catapult->GetY()); this.anim_continue_frame = FrameCounter() + 50; this.was_walk_interrupted = false; }
func GDOControl(pwget) { var cmp; if(cmp = FindObject(Find_Distance(1000),Find_ID(STWA),Sort_Distance())) { if(cmp.password == pwget) { Switch(); return(1); } else { Message("Falsches Passwort zur öffnung entfangen:|<c 00ff00>%v</c>",target,pwget); Sound("Error"); return(1); } } return(1); }
func Choose() { aTrans[GetLength(aTrans)] = FindObject2(Find_ID(ASTE),Find_Distance(100,GetX(User)-GetX(),GetY(User)-GetY()),Sort_Distance()); CallMessageBoard(0,false,"Bitte geben Sie eine passende Beschreibung ein:",GetOwner(User)); }