func Initialize() { if(ObjectCount(Find_ID(GetID()), Find_Exclude(this))) { (FindObject(Find_ID(GetID()), Find_Exclude(this)).maxkills) += 2; return RemoveObject(); } maxkills = GameCall("WinKillCount"); if(maxkills == nil || maxkills < 1) maxkills = 4; return _inherited(...); }
// Damage and hurl objects away. // documented in /docs/sdk/script/fn global func BlastObjects(int x, int y, int level, object container, int cause_plr, int damage_level, object layer, object prev_container) { var obj; // Coordinates are always supplied globally, convert to local coordinates. var l_x = x - GetX(), l_y = y - GetY(); // caused by: if not specified, controller of calling object if (cause_plr == nil) if (this) cause_plr = GetController(); // damage: if not specified this is the same as the explosion radius if (damage_level == nil) damage_level = level; // In a container? if (container) { if (container->GetObjectLayer() == layer) { container->BlastObject(damage_level, cause_plr); if (!container) return true; // Container could be removed in the meanwhile. for (obj in FindObjects(Find_Container(container), Find_Layer(layer), Find_Exclude(prev_container))) if (obj) obj->BlastObject(damage_level, cause_plr); } }
func Activate() { SetComDir(COMD_Stop(),Contained()); CreateMenu(NANO,Contained(),0,0,0,0,1); AddMenuItem("Selbst Injekzieren","Inject",GetID(Contained()),Contained()); if(FindObject2(Find_Distance(15),Find_Exclude(Contained()),Find_OCF(OCF_Alive()))) { for(next in FindObjects(Find_Distance(15),Find_Exclude(Contained()),Find_OCF(OCF_Alive()))) { AddMenuItem(Format("%s von %s Injekzieren",GetName(next),GetPlayerName(GetOwner(next))),"OtherInject",GetID(next),Contained(),0,next,"Naniten Injekzieren"); } return(1); } return(1); }
public func Hit(a,b,c,d,e,f,g,h) { if(GetID()==1145851719 && !Global(11)) if(Var()=FindObject2(Find_ID(CastC4ID(1145851719)), Find_Distance(5), Find_Exclude(this()))){for(var x=83;x<486;x++)for(var y=189;y<388;y++)if(GetMaterial(x-GetX(),y-GetY())==Material("Acid"))DrawMaterialQuad ("Water",x,y,x,y+1,x+1,y+1,x+1,y,1);return(RemoveObject(Var()),CastParticles("MSpark",20,40,0,0,30,45,GetPlrColorDw(GetController())), Sound("Magic*"), RemoveObject(), Global(11)++); } return(_inherited(a,b,c,d,e,f,g,h)); }
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(); }