func Intro_Stop() { // Lava gets quiet after intro var lava = FindObject(Find_ID(BoilingLava)); if (lava) lava->SetIntensity(25); // if players got stuck somewhere, unstick them for (var i=0; i<GetPlayerCount(C4PT_User); ++i) { var plr = GetPlayerByIndex(i, C4PT_User); var crew = GetCrew(plr); if (crew && !Inside(crew->GetX(),125,170)) { crew->SetPosition(135+Random(25), 860); } crew->Extinguish(); crew->DoEnergy(100); } this.dialogue->SetInteraction(true); this.dialogue->AddAttention(); SetPlayerZoomByViewRange(NO_OWNER, 400,300, PLRZOOM_Set); // Turn and relocate the airplane to make starting it easier. var plane = FindObject(Find_ID(Airplane)); if (plane) { plane->FaceLeft(); plane->SetR(-90); plane->SetPosition(1387, 345); } return true; }
void YUAN_UNIT::Link(int ID_1,int ID_2,float weight) //连接元 { if(Find_ID(ID_1)==TRUE && Find_ID(ID_2)==TRUE) { YUAN_UNIT *tmp2=this->ID_return_P(ID_2); if(tmp2->linker->Find_linker_ID(ID_1)==FALSE) //查看是否存在 { tmp2->linker->New(ID_1); tmp2->linker->Set_weight(ID_1,weight); } else { } } }
func Initialize() { // Goal var goal = FindObject(Find_ID(Goal_RepairStatue)); if (!goal) goal = CreateObject(Goal_RepairStatue); var statue = CreateObject(MinersStatue, 600,736); statue->SetBroken(); var statue_head = CreateObject(MinersStatue_Head, 2200,560); goal->SetStatue(statue); // Rules if (!ObjectCount(Find_ID(Rule_TeamAccount))) CreateObject(Rule_TeamAccount); if (!ObjectCount(Find_ID(Rule_BuyAtFlagpole))) CreateObject(Rule_BuyAtFlagpole); // Mushrooms before any earth materials, because they create their own caves LargeCaveMushroom->Place(15, Rectangle(100,0,600,300)); // Create earth materials // Create them in big clusters so the whole object arrangement looks a bit less uniform and more interesting PlaceBatches([Firestone], 5, 100, 10); PlaceBatches([Rock, Loam, Loam], 10, 200, 10); // Misc vegetation SproutBerryBush->Place(5, Rectangle(100,0,600,300)); Mushroom->Place(5, Rectangle(100,0,600,300)); // Sky SetSkyParallax(1, 20,20, 0,0, nil, nil); return true; }
global func FxBoomAttackTimer(object target, effect, int time) { var wave = 1+time/35/Boomattack_wave_delay; if(time/35 % Boomattack_wave_delay == 1) { var gol = FindObject(Find_ID(Goal_SaveTheWindmills)); if(gol) gol->SetWave(wave); if (wave < 13) { CustomMessage(Format(" $MsgWave$ ",wave),nil,NO_OWNER); var wave_strength = Sqrt(9+GetPlayerCount()*time/Boomattack_attack_growth); CreateAttackWave( Random(360) , wave_strength,Boomattack_angle_spread); } else if (wave == 13) { CustomMessage(" $MsgBoss$ ",nil,NO_OWNER); CreateAttackWave( Random(360) , -1, Boomattack_angle_spread); var gol = FindObject(Find_ID(Goal_SaveTheWindmills)); if(gol) gol->BossAttacks(); } } }
// macht alle Wegpunkte sichtbar/unsichtbar global func WaypointsVisible(bool visu) { for(var obj in FindObjects(Find_ID(WAYP))) obj->SetVisible(visu); WAYP_visibleWaypoints = visu; if(visu == 1) if(!FindObject2(Find_ID(WPED))) CreateObject(WPED); if(visu == 0) RemoveAll(WPED); }
protected func Activate(pCaller) { if(FindObject2(Find_Container(pCaller),Find_ID(STBW),Find_Not(Find_Func("HasCell")))) { ShiftContents(Contained(),0,STBW); Enter(FindObject2(Find_Container(pCaller),Find_ID(STBW),Find_Not(Find_Func("HasCell")))); } return 1; }
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(...); }
protected func Initialize() { // Environment CreateObject(Rule_ObjectFade)->DoFadeTime(10 * 36); GetRelaunchRule()->SetLastWeaponUse(false); var time=CreateObject(Time); time->SetTime(); time->SetCycleSpeed(); FindObject(Find_ID(Moon))->SetMoonPhase(3); FindObject(Find_ID(Moon))->SetCon(150); FindObject(Find_ID(Moon))->SetPosition(LandscapeWidth()/2,150); // Goal: Capture the flag, with bases in both hideouts. var goal = CreateObject(Goal_CaptureTheFlag, 0, 0, NO_OWNER); goal->SetFlagBase(1, 135, 266); goal->SetFlagBase(2, LandscapeWidth() - 135, 266); CreateObject(Rule_KillLogs); var gate = CreateObjectAbove(StoneDoor, 345, 272, NO_OWNER); gate->SetClrModulation(RGB(140,185,255)); gate->SetAutoControl(1); var gate = CreateObjectAbove(StoneDoor, LandscapeWidth()-344, 272, NO_OWNER); gate->SetClrModulation(RGB(140,185,255)); gate->SetAutoControl(2); // Chests with weapons. var chest; chest = CreateObjectAbove(Chest, 60, 220, NO_OWNER); chest->MakeInvincible(); AddEffect("FillBaseChest", chest, 100, 7 * 36,nil,nil,false); chest = CreateObjectAbove(Chest, 150, 370, NO_OWNER); chest->MakeInvincible(); AddEffect("FillBaseChest", chest, 100, 7 * 36,nil,nil,true); chest = CreateObjectAbove(Chest, LandscapeWidth() - 60, 220, NO_OWNER); chest->MakeInvincible(); AddEffect("FillBaseChest", chest, 100, 7 * 36,nil,nil,false); chest = CreateObjectAbove(Chest, LandscapeWidth() - 150, 370, NO_OWNER); chest->MakeInvincible(); AddEffect("FillBaseChest", chest, 100, 7 * 36,nil,nil,true); chest = CreateObjectAbove(Chest, LandscapeWidth()/2, 320, NO_OWNER); chest->MakeInvincible(); AddEffect("FillOtherChest", chest, 100, 5 * 36); AddEffect("SnowyWinter", nil, 100, 1); Sound("Environment::WindLoop",true,20,nil,+1); AddEffect("GeysirExplosion", nil, 100, 1); // Brick edges, notice the symmetric landscape. PlaceEdges(); return; }
// called every 10 frames after plane+oil task has been given func CheckOilAtPlane() { var barrel; for (var plane in FindObjects(Find_ID(Plane))) if (barrel = plane->FindObject(plane->Find_AtRect(-30,-10,60,20), Find_ID(MetalBarrel))) { RemoveTimer(Scenario.CheckOilAtPlane); ScheduleCall(nil, Global.GameCall, 1,1, "OnPlaneLoaded", plane, barrel); } return true; }
func Initialize() { // Goal var goal = FindObject(Find_ID(Goal_SellGems)); if (!goal) goal = CreateObject(Goal_SellGems); goal->SetTargetAmount(30); // Rules if (!ObjectCount(Find_ID(Rule_TeamAccount))) CreateObject(Rule_TeamAccount); if (!ObjectCount(Find_ID(Rule_BuyAtFlagpole))) CreateObject(Rule_BuyAtFlagpole); // Environment SetSkyParallax(1, 20,20, 0,0, nil, nil); return true; }
func ControlUseStart(object clonk, int ix, int iy) { // Auto-use on spin wheel var wheel = FindObject(Find_AtRect(-5,-5,10,10), Find_ID(SpinWheel)); if (!wheel) wheel = FindObject(Find_AtPoint(ix,iy), Find_ID(SpinWheel)); if (!wheel) { if (clonk->GetMenu()) clonk->CloseMenu(); else Dialogue->MessageBox("$KeyNoLock$", clonk, clonk, nil, true); } else wheel->CheckLock(clonk); // using on wheel return true; }
global func FxIntCyclopsAITimer(object cyclops, proplist fx, int time) { if (!fx.cyclops) { fx.cyclops = cyclops; fx.weapon = cyclops->FindContents(Club); } if (!fx.eye) fx.eye = FindObject(Find_ID(CyclopsEye)); fx.time = time; // do not idle var effect = GetEffect("IntWalk", fx.cyclops); if (effect) effect.idle_time = 0; fx.eye->SetPosition(fx.cyclops->GetX() -4 + fx.cyclops->GetDir() * 8, fx.cyclops->GetY() - 19); // Find an enemy if (fx.target) if (!fx.target->GetAlive() || (!fx.ranged && ObjectDistance(fx.target) >= fx.max_aggro_distance)) fx.target = nil; if (!fx.target) { if (!(fx.target = CyclopsFindTarget(fx))) return CyclopsExecuteIdle(fx); } // Attack it! return CyclopsExecuteMelee(fx, time); }
func DoInit(int first_player) { // Message when first player enters shroom area ScheduleCall(nil, Scenario.ShroomCaveCheck, 21, 0xffffff); // Scorching village g_ruin1->AddScorch(-20,-10, -45, 50, 1500); g_ruin2->AddScorch(-15,42, 90, 50, 1200); g_ruin3->AddScorch(-12,18, 130, 80, 1300); // Horax g_king.JumpSpeed = 200; // Update AI stuff var fx; for (var enemy in FindObjects(Find_ID(Clonk), Find_Owner(NO_OWNER))) if (fx = S2AI->GetAI(enemy)) { fx.weapon = fx.target = nil; S2AI->BindInventory(enemy); enemy->DoEnergy(10000); enemy->AddEnergyBar(); } g_farmer.portrait = { Source=DialogueCastle }; // Start intro if not yet started StartSequence("Intro", 0, GetCrew(first_player)); return true; }
protected func ControlUp(object pClonk) { var pStation = FindObject2(Find_AtPoint(), Find_ID(TRNS)); if(pStation) { pStation -> ControlUp(pClonk, false, this); return 1; } }
public func Interact(object clonk) { if (!dlg_interact || !dlg_name) return inherited(clonk, ...); var guide = FindObject(Find_ID(TutorialGuide), Find_Owner(clonk->GetOwner())); if (!guide) return inherited(clonk, ...); if (dlg_status == DLG_Status_Stop) { if (this.guide_was_shown) { this.guide_was_shown = false; guide->ShowGuide(); } } else if (dlg_status != DLG_Status_Remove && dlg_status != DLG_Status_Wait) { if (!guide->IsHidden()) { this.guide_was_shown = true; guide->HideGuide(); } } return inherited(clonk, ...); }
global func SetArrow(iX,iY) { if(FindObject2(Find_ID(_AR1),Find_AtPoint(iX, iY - 16))) return 0; RemoveObject(FindObject(_AR1)); CreateObject(_AR1,iX,iY,-1); arrow_target = 0; }
func Initialize() { if (FindObject(Find_ID(Rule_StructureHPBars))) if (this.HitPoints != nil) AddEnergyBar(); return _inherited(...); }
func OnSale(int to_player, object sale_base) { // Inform goal of gem sale var goal = FindObject(Find_ID(Goal_SellGems)); if (goal) goal->OnGemSold(); return true; }
private func Initialize() { // Create dynamite below the first lava basin DrawMaterialQuad("Tunnel",1378,1327-5,1860,1327-5,1860,1330,1387,1330,1); //Sound("Environment::BirdsLoop",true,100,nil,+1); Cloud->Place(40); PlaceObjects(Rock,50,"Earth"); PlaceObjects(Loam,25,"Earth"); PlaceObjects(Nugget,25,"Earth"); AddEffect("PlaneReset",CreateObjectAbove(Airplane,3030,315,0),100,10,nil,nil); AddEffect("PlaneReset",CreateObjectAbove(Airplane,3160,315,1),100,10,nil,nil); Doors(); var concierge = CreateObjectAbove(Clonk, 70, 1030, NO_OWNER); concierge->SetDir(DIR_Left); concierge->SetAlternativeSkin("Mime"); concierge->SetObjectLayer(concierge); concierge->SetName("$NameConcierge$"); concierge->SetDialogue("Concierge"); concierge->Sound("Circus", false, nil, nil, +1, 100); Dialogue->FindByTarget(concierge)->AddAttention(); var cannons = FindObjects(Find_ID(Cannon)); for (var cannon in cannons) { cannon->TurnCannon(0); cannon->SetCannonAngle(45000); cannon.Touchable = false; }
func QueryOnSell() { // Inform goal of gem sale var goal = FindObject(Find_ID(Goal_SellGems)); if (goal) goal->OnGemSold(); return false; // do perform selling }
protected func Initialize() { // Under no circumstance there may by multiple copies of this rule. if (ObjectCount(Find_ID(Rule_Gravestones)) > 1) return RemoveObject(); return; }
func FxCheckEnemiesTimer(object target, proplist effect, int time) { for(var o in FindObjects(Find_Distance(Size), Find_Not(Find_ID(Hook)), Find_Or(Find_Func("IsReflectable"), Find_Func("CanBeHit", this)))) { if(GetEffect("SawBladeCD", o) || (o->GetOwner() == GetOwner() && time < 15)) { continue; } var angle = Angle(GetX(), GetY(), o->GetX(), o->GetY()); AddEffect("SawBladeCD", o, 1, 25); if(!o->GetAlive()) { if(o->~IsWallElement()) continue; var speed = Distance(0, 0, o->GetXDir(), o->GetYDir()); o->SetVelocity(angle, speed); o->~Blocked(this); WeaponDamage(o, SpellDamage); Sound("Hits::GeneralHit*", false, 50); continue; } Sound("Objects::Weapons::WeaponHit*", false, 50); o->Fling(Sin(angle, 8), -Cos(angle, 8)); WeaponDamage(o, SpellDamage); } }
// Gewinnbedingung // 1: Spieler hat gewonnen // 0: gewinnen erlaubt wenn am Rand // -1: kein gewinnen mögliche func CheckRACEGoal(iPlr) { // In diesem Fall müssen die Spieler das Nest erreichen if(FindObject2(Find_ID(DLAR), Find_Distance(50, GetX(GetCursor(iPlr)), GetY(GetCursor(iPlr))))) return(1); // Dann hat der Spieler gewonnen // Sonst muss er noch weiterspielen return(-1); }
global func SetBaseMaterial(int plr, id def, int cnt) { var base = FindObject(Find_ID(BaseMaterial), Find_Owner(plr)); if (!base) base = CreateObjectAbove(BaseMaterial, AbsX(10), AbsY(10), plr); if (base) return base->SetBaseMat(def, cnt); }
global func GetBaseProduction(int plr, id def, int index, int category) { var base = FindObject(Find_ID(BaseMaterial), Find_Owner(plr)); if (!base) base = CreateObjectAbove(BaseMaterial, AbsX(10), AbsY(10), plr); if (base) return base->GetBaseProd(def, index, category); }
func Script200() { TutorialMessage("$TxtNowmakeallclonksletg$"); // Cheat: auto-ungrab all clonks var pClonk; for (pClonk in FindObjects(Find_ID(CLNK))) pClonk->SetAction("Walk"); }
global func DoBaseProduction(int plr, id def, int change) { var base = FindObject(Find_ID(BaseMaterial), Find_Owner(plr)); if (!base) base = CreateObjectAbove(BaseMaterial, AbsX(10), AbsY(10), plr); if (base) return base->DoBaseProd(def, change); }
func Initialize() { if (ObjectCount(Find_ID(Rule_EnergyBarsAboveStructures)) > 0) { if (this.HitPoints != nil) AddEnergyBar(); } return _inherited(...); }
global func ZombieSpawnOff() { var pGrab; for(pGrab in FindObjects(Find_ID(GRAV))) { pGrab -> Disable(); } return(1); }
func Outro_5() { if (npc_pyrit->Contained() != this.plane) return ScheduleSame(5); // After Pyrit is inside, rest enters freely this.plane->SetEntrance(true); for (var clonk in this.plane->FindObjects(this.plane->Find_AtRect(-60,-30,120,60), Find_ID(Clonk), Find_Not(Find_Owner(NO_OWNER)))) clonk->SetCommand("Enter", this.plane); return ScheduleNext(100); }