// Function from file: magic.dm public override dynamic on_hit(Ent_Static target = null, double?blocked = null, dynamic hit_zone = null) { dynamic _default = null; int teleammount = 0; Ent_Static teleloc = null; Ent_Dynamic stuff = null; EffectSystem_SmokeSpread smoke = null; _default = base.on_hit(target, blocked, (object)(hit_zone)); teleammount = 0; teleloc = target; if (!(target is Tile)) { teleloc = target.loc; } foreach (dynamic _a in Lang13.Enumerate(teleloc, typeof(Ent_Dynamic))) { stuff = _a; if (!Lang13.Bool(stuff.anchored) && stuff.loc != null) { teleammount++; GlobalFuncs.do_teleport(stuff, stuff, 10); smoke = new EffectSystem_SmokeSpread(); smoke.set_up(Num13.MaxInt(Num13.Floor(4 - teleammount), 0), stuff.loc); smoke.start(); } } return(_default); }
// Function from file: experimentor.dm public void throwSmoke(Ent_Static where = null) { EffectSystem_SmokeSpread smoke = null; smoke = new EffectSystem_SmokeSpread(); smoke.set_up(0, where); smoke.start(); return; }
// Function from file: shuffle.dm public override bool start( ) { ByTable moblocs = null; ByTable mobs = null; Mob_Living_Carbon_Human H = null; Mob_Living_Carbon_Human H2 = null; Mob_Living_Carbon_Human H3 = null; EffectSystem_SmokeSpread smoke = null; moblocs = new ByTable(); mobs = new ByTable(); foreach (dynamic _a in Lang13.Enumerate(GlobalVars.living_mob_list, typeof(Mob_Living_Carbon_Human))) { H = _a; if (H.z != 1) { continue; } moblocs.Add(H.loc); mobs.Add(H); } if (!(mobs != null)) { return(false); } GlobalFuncs.shuffle(moblocs); GlobalFuncs.shuffle(mobs); foreach (dynamic _b in Lang13.Enumerate(mobs, typeof(Mob_Living_Carbon_Human))) { H2 = _b; if (!(moblocs != null)) { break; } GlobalFuncs.do_teleport(H2, moblocs[moblocs.len]); moblocs.len -= 1; } foreach (dynamic _c in Lang13.Enumerate(GlobalVars.living_mob_list, typeof(Mob_Living_Carbon_Human))) { H3 = _c; smoke = new EffectSystem_SmokeSpread(); smoke.set_up(0, H3.loc); smoke.start(); } return(false); }
// Function from file: wand.dm public override void zap_self(dynamic user = null) { EffectSystem_SmokeSpread smoke = null; GlobalFuncs.do_teleport(user, user, 10); smoke = new EffectSystem_SmokeSpread(); smoke.set_up(3, user.loc); smoke.start(); this.charges--; base.zap_self((object)(user)); return; }
// Function from file: shuffle.dm public override bool start( ) { ByTable mobs = null; Mob_Living_Carbon_Human H = null; Obj_Effect_ProcHolder_Spell_Targeted_MindTransfer swapper = null; dynamic H2 = null; Mob_Living_Carbon_Human H3 = null; EffectSystem_SmokeSpread smoke = null; mobs = new ByTable(); foreach (dynamic _a in Lang13.Enumerate(GlobalVars.living_mob_list, typeof(Mob_Living_Carbon_Human))) { H = _a; if (!(H.stat != 0) || !(H.mind != null) || GlobalVars.ticker.mode.wizards.Contains(H.mind) || GlobalVars.ticker.mode.apprentices.Contains(H.mind)) { continue; } mobs.Add(H); } if (!(mobs != null)) { return(false); } GlobalFuncs.shuffle(mobs); swapper = new Obj_Effect_ProcHolder_Spell_Targeted_MindTransfer(); while (mobs.len > 1) { H2 = Rand13.PickFromTable(mobs); mobs.Remove(H2); swapper.cast(new ByTable(new object [] { H2 }), mobs[mobs.len], 1); mobs.Remove(mobs[mobs.len]); } foreach (dynamic _b in Lang13.Enumerate(GlobalVars.living_mob_list, typeof(Mob_Living_Carbon_Human))) { H3 = _b; smoke = new EffectSystem_SmokeSpread(); smoke.set_up(0, H3.loc); smoke.start(); } return(false); }
// Function from file: hivebot.dm public Obj_Structure_HivebotBeacon(dynamic loc = null) : base((object)(loc)) { EffectSystem_SmokeSpread smoke = null; // Warning: Super call was HERE! If anything above HERE is needed by the super call, it might break!; smoke = new EffectSystem_SmokeSpread(); smoke.set_up(2, this.loc); smoke.start(); this.visible_message("<span class='boldannounce'>The " + this + " warps in!</span>"); GlobalFuncs.playsound(this.loc, "sound/effects/EMPulse.ogg", 25, 1); Task13.Schedule(Rand13.Int(10, 600), (Task13.Closure)(() => { this.warpbots(); return; })); return; }
// Function from file: effects_explosion.dm public override void start( ) { EffectSystem_ExplParticles P = null; EffectSystem_SmokeSpread S = null; new Obj_Effect_Explosion(this.location); P = new EffectSystem_ExplParticles(); P.set_up(10, 0, this.location); P.start(); Task13.Schedule(5, (Task13.Closure)(() => { S = new EffectSystem_SmokeSpread(); S.set_up(2, this.location); S.start(); return; })); return; }
// Function from file: step_triggers.dm public override bool Trigger(Ent_Dynamic A = null) { Tile dest = null; EffectSystem_SparkSpread s = null; EffectSystem_SparkSpread s2 = null; EffectSystem_SmokeSpread s3 = null; EffectSystem_SmokeSpread s4 = null; dest = Map13.GetTile(this.locationx, this.locationy, this.z); A.Move(dest); if (this.entersparks) { s = new EffectSystem_SparkSpread(); s.set_up(4, 1, this); s.start(); } if (this.exitsparks) { s2 = new EffectSystem_SparkSpread(); s2.set_up(4, 1, dest); s2.start(); } if (this.entersmoke) { s3 = new EffectSystem_SmokeSpread(); s3.set_up(4, 1, this, 0); s3.start(); } if (this.exitsmoke) { s4 = new EffectSystem_SmokeSpread(); s4.set_up(4, 1, dest, 0); s4.start(); } this.uses--; if (this.uses == 0) { GlobalFuncs.qdel(this); } return(false); }
// Function from file: curseditems.dm public override bool start( ) { string item_set = null; ByTable wearslots = null; ByTable loadout = null; bool? ruins_spaceworthiness = null; bool? ruins_wizard_loadout = null; Mob_Living_Carbon_Human H = null; ByTable slots = null; int? i = null; dynamic J = null; dynamic I = null; Mob_Living_Carbon_Human H2 = null; EffectSystem_SmokeSpread smoke = null; item_set = Rand13.Pick(new object [] { "wizardmimic", "swords", "bigfatdoobie", "boxing", "voicemodulators", "catgirls2015" }); wearslots = new ByTable(new object [] { 13, 12, 11, 2, 5, 10, 8 }); loadout = new ByTable(); ruins_spaceworthiness = null; ruins_wizard_loadout = null; loadout.len = 7; switch ((string)(item_set)) { case "wizardmimic": loadout = new ByTable(new object [] { typeof(Obj_Item_Clothing_Suit_Wizrobe), typeof(Obj_Item_Clothing_Shoes_Sandal), typeof(Obj_Item_Clothing_Head_Wizard) }); ruins_spaceworthiness = true; break; case "swords": loadout[5] = typeof(Obj_Item_Weapon_Katana_Cursed); break; case "bigfatdoobie": loadout[4] = typeof(Obj_Item_Clothing_Mask_Cigarette_Rollie_Trippy); ruins_spaceworthiness = true; break; case "boxing": loadout[4] = typeof(Obj_Item_Clothing_Mask_Luchador); loadout[6] = typeof(Obj_Item_Clothing_Gloves_Boxing); ruins_spaceworthiness = true; break; case "voicemodulators": loadout[4] = typeof(Obj_Item_Clothing_Mask_Gas_Voice); break; case "catgirls2015": loadout[3] = typeof(Obj_Item_Clothing_Head_Kitty); ruins_spaceworthiness = true; ruins_wizard_loadout = true; break; } foreach (dynamic _b in Lang13.Enumerate(GlobalVars.living_mob_list, typeof(Mob_Living_Carbon_Human))) { H = _b; if (ruins_spaceworthiness == true && (H.z != 1 || H.loc is Tile_Space)) { continue; } if (ruins_wizard_loadout == true && H.mind != null && (GlobalVars.ticker.mode.wizards.Contains(H.mind) || GlobalVars.ticker.mode.apprentices.Contains(H.mind))) { continue; } if (item_set == "catgirls2015") { H.gender = GlobalVars.FEMALE; } slots = new ByTable(new object [] { H.wear_suit, H.shoes, H.head, H.wear_mask, H.r_hand, H.gloves, H.ears }); i = null; i = 1; while ((i ?? 0) <= loadout.len) { if (Lang13.Bool(loadout[i])) { J = loadout[i]; I = Lang13.Call(J); H.unEquip(slots[i]); H.equip_to_slot_or_del(I, Convert.ToInt32(wearslots[i])); I.flags |= 2; I.name = "cursed " + I.name; } i++; } } foreach (dynamic _c in Lang13.Enumerate(GlobalVars.living_mob_list, typeof(Mob_Living_Carbon_Human))) { H2 = _c; smoke = new EffectSystem_SmokeSpread(); smoke.set_up(0, H2.loc); smoke.start(); } return(false); }
// Function from file: experimentor.dm public void experiment(double?exp = null, dynamic exp_on = null) { dynamic chosenchem = null; dynamic criticalReaction = null; Mob_Living m = null; dynamic target = null; dynamic throwing = null; dynamic T = null; Obj_Effect_Decal_Cleanable_Greenglow reagentdecal = null; string savedName = null; dynamic newPath = null; dynamic CG = null; Reagents R = null; EffectSystem_SmokeSpread_Chem smoke = null; Reagents R2 = null; EffectSystem_SmokeSpread_Chem smoke2 = null; Obj_Item_Weapon_ReagentContainers_Food_Drinks_Coffee C = null; dynamic start = null; dynamic M = null; dynamic MT = null; Obj_Item_Projectile_Magic_Fireball FB = null; GasMixture env = null; double transfer_moles = 0; GasMixture removed = null; double? heat_capacity = null; Mob_Living m2 = null; Obj_Machinery_Vending_Coffee C2 = null; Reagents R3 = null; EffectSystem_SmokeSpread_Chem smoke3 = null; GasMixture env2 = null; double transfer_moles2 = 0; GasMixture removed2 = null; double? heat_capacity2 = null; EffectSystem_SmokeSpread smoke4 = null; dynamic material = null; Ent_Dynamic AM = null; ByTable throwAt = null; Ent_Dynamic AM2 = null; int? counter = null; Ent_Dynamic cast = null; dynamic a = null; dynamic b = null; dynamic R4 = null; int globalMalf = 0; Mob_Living m3 = null; ByTable reqs = null; dynamic T2 = null; this.recentlyExperimented = true; this.icon_state = "h_lathe_wloop"; criticalReaction = Lang13.FindIn(exp_on, (this.critical_items != null ? GlobalVars.TRUE : GlobalVars.FALSE)); if (exp == 1) { this.visible_message("" + this + " prods at " + exp_on + " with mechanical arms."); if (Rand13.PercentChance(35) && Lang13.Bool(criticalReaction)) { this.visible_message("" + exp_on + " is gripped in just the right way, enhancing its focus."); this.badThingCoeff++; } if (Rand13.PercentChance(((int)(20 - this.badThingCoeff)))) { this.visible_message("<span class='danger'>" + this + " malfunctions and destroys " + exp_on + ", lashing its arms out at nearby people!</span>"); foreach (dynamic _a in Lang13.Enumerate(Map13.FetchInViewExcludeThis(this, 1), typeof(Mob_Living))) { m = _a; m.apply_damage(15, "brute", Rand13.Pick(new object [] { "head", "chest", "groin" })); this.investigate_log("Experimentor dealt minor brute to " + m + ".", "experimentor"); } this.ejectItem(GlobalVars.TRUE); } if (Rand13.PercentChance(((int)(35 - this.badThingCoeff)))) { this.visible_message("<span class='warning'>" + this + " malfunctions!</span>"); exp = 6; } if (Rand13.PercentChance(((int)(50 - this.badThingCoeff)))) { this.visible_message("<span class='danger'>" + this + " malfunctions, throwing the " + exp_on + "!</span>"); target = Lang13.FindIn(typeof(Mob_Living), Map13.FetchInViewExcludeThis(this, 7)); if (Lang13.Bool(target)) { throwing = this.loaded_item; this.investigate_log("Experimentor has thrown " + this.loaded_item + " at " + target, "experimentor"); this.ejectItem(); if (Lang13.Bool(throwing)) { ((Ent_Dynamic)throwing).throw_at(target, 10, 1); } } } } if (exp == 2) { this.visible_message("<span class='danger'>" + this + " reflects radioactive rays at " + exp_on + "!</span>"); if (Rand13.PercentChance(35) && Lang13.Bool(criticalReaction)) { this.visible_message("" + exp_on + " has activated an unknown subroutine!"); this.cloneMode = GlobalVars.TRUE; this.cloneCount = this.badThingCoeff; this.investigate_log("Experimentor has made a clone of " + exp_on, "experimentor"); this.ejectItem(); } if (Rand13.PercentChance(((int)(20 - this.badThingCoeff)))) { this.visible_message("<span class='danger'>" + this + " malfunctions, melting " + exp_on + " and leaking radiation!</span>"); GlobalFuncs.radiation_pulse(GlobalFuncs.get_turf(this), 1, 1, 25, true); this.ejectItem(GlobalVars.TRUE); } if (Rand13.PercentChance(((int)(35 - this.badThingCoeff)))) { this.visible_message("<span class='warning'>" + this + " malfunctions, spewing toxic waste!</span>"); foreach (dynamic _b in Lang13.Enumerate(Map13.FetchInViewExcludeThis(this, 1))) { T = _b; if (!T.density) { if (Rand13.PercentChance(95)) { reagentdecal = new Obj_Effect_Decal_Cleanable_Greenglow(T); reagentdecal.reagents.add_reagent("radium", 7); } } } } if (Rand13.PercentChance(((int)(50 - this.badThingCoeff)))) { savedName = "" + exp_on; this.ejectItem(GlobalVars.TRUE); newPath = this.pickWeighted(this.valid_items); this.loaded_item = Lang13.Call(newPath, this); this.visible_message("<span class='warning'>" + this + " malfunctions, transforming " + savedName + " into " + this.loaded_item + "!</span>"); this.investigate_log("Experimentor has transformed " + savedName + " into " + this.loaded_item, "experimentor"); if (this.loaded_item is Obj_Item_Weapon_Grenade_ChemGrenade) { CG = this.loaded_item; ((Obj_Item_Weapon_Grenade)CG).prime(); } this.ejectItem(); } } if (exp == 3) { this.visible_message("<span class='warning'>" + this + " fills its chamber with gas, " + exp_on + " included.</span>"); if (Rand13.PercentChance(35) && Lang13.Bool(criticalReaction)) { this.visible_message("" + exp_on + " achieves the perfect mix!"); new Obj_Item_Stack_Sheet_Mineral_Plasma(GlobalFuncs.get_turf(Rand13.PickFromTable(Map13.FetchInViewExcludeThis(this, 1)))); } if (Rand13.PercentChance(((int)(20 - this.badThingCoeff)))) { this.visible_message("<span class='danger'>" + this + " destroys " + exp_on + ", leaking dangerous gas!</span>"); chosenchem = Rand13.Pick(new object [] { "carbon", "radium", "toxin", "condensedcapsaicin", "mushroomhallucinogen", "space_drugs", "ethanol", "beepskysmash" }); R = new Reagents(50); R.my_atom = this; R.add_reagent(chosenchem, 50); this.investigate_log("Experimentor has released " + chosenchem + " smoke.", "experimentor"); smoke = new EffectSystem_SmokeSpread_Chem(); smoke.set_up(R, 0, this); GlobalFuncs.playsound(this.loc, "sound/effects/smoke.ogg", 50, 1, -3); smoke.start(); GlobalFuncs.qdel(R); this.ejectItem(GlobalVars.TRUE); } if (Rand13.PercentChance(((int)(20 - this.badThingCoeff)))) { this.visible_message("<span class='danger'>" + this + "'s chemical chamber has sprung a leak!</span>"); chosenchem = Rand13.Pick(new object [] { "mutationtoxin", "nanomachines", "sacid" }); R2 = new Reagents(50); R2.my_atom = this; R2.add_reagent(chosenchem, 50); smoke2 = new EffectSystem_SmokeSpread_Chem(); smoke2.set_up(R2, 0, this); GlobalFuncs.playsound(this.loc, "sound/effects/smoke.ogg", 50, 1, -3); smoke2.start(); GlobalFuncs.qdel(R2); this.ejectItem(GlobalVars.TRUE); this.warn_admins(Task13.User, "" + chosenchem + " smoke"); this.investigate_log("Experimentor has released <font color='red'>" + chosenchem + "</font> smoke!", "experimentor"); } if (Rand13.PercentChance(((int)(35 - this.badThingCoeff)))) { this.visible_message("" + this + " malfunctions, spewing harmless gas."); this.throwSmoke(this.loc); } if (Rand13.PercentChance(((int)(50 - this.badThingCoeff)))) { this.visible_message("<span class='warning'>" + this + " melts " + exp_on + ", ionizing the air around it!</span>"); GlobalFuncs.empulse(this.loc, 4, 6); this.investigate_log("Experimentor has generated an Electromagnetic Pulse.", "experimentor"); this.ejectItem(GlobalVars.TRUE); } } if (exp == 4) { this.visible_message("" + this + " raises " + exp_on + "'s temperature."); if (Rand13.PercentChance(35) && Lang13.Bool(criticalReaction)) { this.visible_message("<span class='warning'>" + this + "'s emergency coolant system gives off a small ding!</span>"); GlobalFuncs.playsound(this.loc, "sound/machines/ding.ogg", 50, 1); C = new Obj_Item_Weapon_ReagentContainers_Food_Drinks_Coffee(GlobalFuncs.get_turf(Rand13.PickFromTable(Map13.FetchInViewExcludeThis(this, 1)))); chosenchem = Rand13.Pick(new object [] { "plasma", "capsaicin", "ethanol" }); C.reagents.remove_any(25); C.reagents.add_reagent(chosenchem, 50); C.name = "Cup of Suspicious Liquid"; C.desc = "It has a large hazard symbol printed on the side in fading ink."; this.investigate_log("Experimentor has made a cup of " + chosenchem + " coffee.", "experimentor"); } if (Rand13.PercentChance(((int)(20 - this.badThingCoeff)))) { start = GlobalFuncs.get_turf(this); M = Lang13.FindIn(typeof(Mob_Living), Map13.FetchInView(3, this)); MT = GlobalFuncs.get_turf(M); if (Lang13.Bool(MT)) { this.visible_message("<span class='danger'>" + this + " dangerously overheats, launching a flaming fuel orb!</span>"); this.investigate_log("Experimentor has launched a <font color='red'>fireball</font> at " + M + "!", "experimentor"); FB = new Obj_Item_Projectile_Magic_Fireball(start); FB.original = MT; FB.current = start; FB.yo = Convert.ToDouble(MT.y - start.y); FB.xo = Convert.ToDouble(MT.x - start.x); FB.fire(); } } if (Rand13.PercentChance(((int)(35 - this.badThingCoeff)))) { this.visible_message("<span class='danger'>" + this + " malfunctions, melting " + exp_on + " and releasing a burst of flame!</span>"); GlobalFuncs.explosion(this.loc, -1, 0, 0, 0, 0, null, 2); this.investigate_log("Experimentor started a fire.", "experimentor"); this.ejectItem(GlobalVars.TRUE); } if (Rand13.PercentChance(((int)(50 - this.badThingCoeff)))) { this.visible_message("<span class='warning'>" + this + " malfunctions, melting " + exp_on + " and leaking hot air!</span>"); env = this.loc.return_air(); transfer_moles = env.total_moles() * 0.25; removed = env.remove(transfer_moles); if (removed != null) { heat_capacity = removed.heat_capacity(); if (heat_capacity == 0 || heat_capacity == null) { heat_capacity = 1; } removed.temperature = Num13.MinInt(Convert.ToInt32((removed.temperature * heat_capacity + 100000) / heat_capacity), 1000); } env.merge(removed); this.air_update_turf(); this.investigate_log("Experimentor has released hot air.", "experimentor"); this.ejectItem(GlobalVars.TRUE); } if (Rand13.PercentChance(((int)(50 - this.badThingCoeff)))) { this.visible_message("<span class='warning'>" + this + " malfunctions, activating its emergency coolant systems!</span>"); this.throwSmoke(this.loc); foreach (dynamic _c in Lang13.Enumerate(Map13.FetchInViewExcludeThis(this, 1), typeof(Mob_Living))) { m2 = _c; m2.apply_damage(5, "burn", Rand13.Pick(new object [] { "head", "chest", "groin" })); this.investigate_log("Experimentor has dealt minor burn damage to " + m2, "experimentor"); } this.ejectItem(); } } if (exp == 5) { this.visible_message("" + this + " lowers " + exp_on + "'s temperature."); if (Rand13.PercentChance(35) && Lang13.Bool(criticalReaction)) { this.visible_message("<span class='warning'>" + this + "'s emergency coolant system gives off a small ding!</span>"); C2 = new Obj_Machinery_Vending_Coffee(GlobalFuncs.get_turf(Rand13.PickFromTable(Map13.FetchInViewExcludeThis(this, 1)))); GlobalFuncs.playsound(this.loc, "sound/machines/ding.ogg", 50, 1); chosenchem = Rand13.Pick(new object [] { "uranium", "frostoil", "ephedrine" }); C2.reagents.remove_any(25); C2.reagents.add_reagent(chosenchem, 50); C2.name = "Cup of Suspicious Liquid"; C2.desc = "It has a large hazard symbol printed on the side in fading ink."; this.investigate_log("Experimentor has made a cup of " + chosenchem + " coffee.", "experimentor"); } if (Rand13.PercentChance(((int)(20 - this.badThingCoeff)))) { this.visible_message("<span class='danger'>" + this + " malfunctions, shattering " + exp_on + " and releasing a dangerous cloud of coolant!</span>"); R3 = new Reagents(50); R3.my_atom = this; R3.add_reagent("frostoil", 50); this.investigate_log("Experimentor has released frostoil gas.", "experimentor"); smoke3 = new EffectSystem_SmokeSpread_Chem(); smoke3.set_up(R3, 0, this); GlobalFuncs.playsound(this.loc, "sound/effects/smoke.ogg", 50, 1, -3); smoke3.start(); GlobalFuncs.qdel(R3); this.ejectItem(GlobalVars.TRUE); } if (Rand13.PercentChance(((int)(35 - this.badThingCoeff)))) { this.visible_message("<span class='warning'>" + this + " malfunctions, shattering " + exp_on + " and leaking cold air!</span>"); env2 = this.loc.return_air(); transfer_moles2 = env2.total_moles() * 0.25; removed2 = env2.remove(transfer_moles2); if (removed2 != null) { heat_capacity2 = removed2.heat_capacity(); if (heat_capacity2 == 0 || heat_capacity2 == null) { heat_capacity2 = 1; } removed2.temperature = (removed2.temperature * heat_capacity2 - 75000) / heat_capacity2; } env2.merge(removed2); this.air_update_turf(); this.investigate_log("Experimentor has released cold air.", "experimentor"); this.ejectItem(GlobalVars.TRUE); } if (Rand13.PercentChance(((int)(50 - this.badThingCoeff)))) { this.visible_message("<span class='warning'>" + this + " malfunctions, releasing a flurry of chilly air as " + exp_on + " pops out!</span>"); smoke4 = new EffectSystem_SmokeSpread(); smoke4.set_up(0, this.loc); smoke4.start(); this.ejectItem(); } } if (exp == 6) { this.visible_message("<span class='warning'>" + exp_on + " activates the crushing mechanism, " + exp_on + " is destroyed!</span>"); if (Rand13.PercentChance(35) && Lang13.Bool(criticalReaction)) { this.visible_message("<span class='warning'>" + this + "'s crushing mechanism slowly and smoothly descends, flattening the " + exp_on + "!</span>"); new Obj_Item_Stack_Sheet_Plasteel(GlobalFuncs.get_turf(Rand13.PickFromTable(Map13.FetchInViewExcludeThis(this, 1)))); } if (this.linked_console.linked_lathe != null) { foreach (dynamic _d in Lang13.Enumerate(exp_on.materials)) { material = _d; ((MaterialContainer)((dynamic)this.linked_console.linked_lathe).materials).insert_amount(Num13.MinInt(Convert.ToInt32(((dynamic)this.linked_console.linked_lathe).materials.max_amount - ((dynamic)this.linked_console.linked_lathe).materials.total_amount), Convert.ToInt32(exp_on.materials[material])), material); } } if (Rand13.PercentChance(((int)(20 - this.badThingCoeff)))) { this.visible_message("<span class='danger'>" + this + "'s crusher goes way too many levels too high, crushing right through space-time!</span>"); GlobalFuncs.playsound(this.loc, "sound/effects/supermatter.ogg", 50, 1, -3); this.investigate_log("Experimentor has triggered the 'throw things' reaction.", "experimentor"); foreach (dynamic _e in Lang13.Enumerate(Map13.FetchInViewExcludeThis(this, 7), typeof(Ent_Dynamic))) { AM = _e; if (!Lang13.Bool(AM.anchored)) { AM.throw_at_fast(this, 10, 1); } } } if (Rand13.PercentChance(((int)(35 - this.badThingCoeff)))) { this.visible_message("<span class='danger'>" + this + "'s crusher goes one level too high, crushing right into space-time!</span>"); GlobalFuncs.playsound(this.loc, "sound/effects/supermatter.ogg", 50, 1, -3); this.investigate_log("Experimentor has triggered the 'minor throw things' reaction.", "experimentor"); throwAt = new ByTable(); foreach (dynamic _f in Lang13.Enumerate(Map13.FetchInViewExcludeThis(this, 7), typeof(Ent_Dynamic))) { AM2 = _f; if (!Lang13.Bool(AM2.anchored)) { throwAt.Add(AM2); } } counter = null; counter = 1; while ((counter ?? 0) < throwAt.len) { cast = throwAt[counter]; cast.throw_at_fast(Rand13.PickFromTable(throwAt), 10, 1); counter++; } } this.ejectItem(GlobalVars.TRUE); } if (exp == 8) { a = Rand13.Pick(new object [] { "rumbles", "shakes", "vibrates", "shudders" }); b = Rand13.Pick(new object [] { "crushes", "spins", "viscerates", "smashes", "insults" }); this.visible_message("<span class='warning'>" + exp_on + " " + a + ", and " + b + ", the experiment was a failure.</span>"); } if (exp == 7) { this.visible_message("" + this + " scans the " + exp_on + ", revealing its true nature!"); GlobalFuncs.playsound(this.loc, "sound/effects/supermatter.ogg", 50, 3, -1); R4 = this.loaded_item; R4.reveal(); this.investigate_log("Experimentor has revealed a relic with <span class='danger'>" + R4.realProc + "</span> effect.", "experimentor"); this.ejectItem(); } if (Rand13.PercentChance(((int)(20 - this.badThingCoeff)))) { globalMalf = Rand13.Int(1, 100); if (globalMalf < 15) { this.visible_message("<span class='warning'>" + this + "'s onboard detection system has malfunctioned!</span>"); this.item_reactions["" + exp_on.type] = Rand13.Pick(new object [] { 1, 2, 3, 4, 5, 6 }); this.ejectItem(); } if (globalMalf > 16 && globalMalf < 35) { this.visible_message("<span class='warning'>" + this + " melts " + exp_on + ", ian-izing the air around it!</span>"); this.throwSmoke(this.loc); if (Lang13.Bool(this.trackedIan)) { this.throwSmoke(this.trackedIan.loc); this.trackedIan.loc = this.loc; this.investigate_log("Experimentor has stolen Ian!", "experimentor"); } else { new Mob_Living_SimpleAnimal_Pet_Dog_Corgi(this.loc); this.investigate_log("Experimentor has spawned a new corgi.", "experimentor"); } this.ejectItem(GlobalVars.TRUE); } if (globalMalf > 36 && globalMalf < 50) { this.visible_message("<span class='warning'>" + this + " improves " + exp_on + ", drawing the life essence of those nearby!</span>"); foreach (dynamic _g in Lang13.Enumerate(Map13.FetchInView(this, 4), typeof(Mob_Living))) { m3 = _g; m3.WriteMsg("<span class='danger'>You feel your flesh being torn from you, mists of blood drifting to " + this + "!</span>"); m3.apply_damage(50, "brute", "chest"); this.investigate_log("Experimentor has taken 50 brute a blood sacrifice from " + m3, "experimentor"); } reqs = this.ConvertReqString2List(exp_on.origin_tech); foreach (dynamic _h in Lang13.Enumerate(reqs)) { T2 = _h; reqs[T2] = reqs[T2] + 1; } exp_on.origin_tech = String13.MakeUrlParams(reqs); this.investigate_log("Experimentor has set the origin tech of " + exp_on + " to " + exp_on.origin_tech, "experimentor"); } if (globalMalf > 51 && globalMalf < 75) { this.visible_message("<span class='warning'>" + this + " encounters a run-time error!</span>"); this.throwSmoke(this.loc); if (Lang13.Bool(this.trackedRuntime)) { this.throwSmoke(this.trackedRuntime.loc); this.trackedRuntime.loc = this.loc; this.investigate_log("Experimentor has stolen Runtime!", "experimentor"); } else { new Mob_Living_SimpleAnimal_Pet_Cat(this.loc); this.investigate_log("Experimentor failed to steal runtime, and instead spawned a new cat.", "experimentor"); } this.ejectItem(GlobalVars.TRUE); } if (globalMalf > 76) { this.visible_message("<span class='warning'>" + this + " begins to smoke and hiss, shaking violently!</span>"); this.f_use_power(500000); this.investigate_log("Experimentor has drained power from its APC", "experimentor"); } } Task13.Schedule(((int)(this.resetTime)), (Task13.Closure)(() => { this.icon_state = "h_lathe"; this.recentlyExperimented = false; return; })); return; }
// Function from file: spell.dm public void after_cast(dynamic targets = null) { Ent_Static target = null; Ent_Static location = null; EffectSystem_SparkSpread sparks = null; EffectSystem_SmokeSpread smoke = null; EffectSystem_SmokeSpread_Bad smoke2 = null; EffectSystem_SmokeSpread_Sleeping smoke3 = null; foreach (dynamic _a in Lang13.Enumerate(targets, typeof(Ent_Static))) { target = _a; location = null; if (target is Mob_Living) { location = target.loc; } else if (target is Tile) { location = target; } if (target is Mob_Living && Lang13.Bool(this.message)) { ((dynamic)target).WriteMsg("" + this.message); } if (this.sparks_spread) { sparks = new EffectSystem_SparkSpread(); sparks.set_up(this.sparks_amt, 0, location); sparks.start(); } if (this.smoke_spread != 0) { if (this.smoke_spread == 1) { smoke = new EffectSystem_SmokeSpread(); smoke.set_up(this.smoke_amt, location); smoke.start(); } else if (this.smoke_spread == 2) { smoke2 = new EffectSystem_SmokeSpread_Bad(); smoke2.set_up(this.smoke_amt, location); smoke2.start(); } else if (this.smoke_spread == 3) { smoke3 = new EffectSystem_SmokeSpread_Sleeping(); smoke3.set_up(this.smoke_amt, location); smoke3.start(); } } } return; }
// Function from file: scrolls.dm public void teleportscroll(Mob user = null) { dynamic A = null; Base_Data thearea = null; EffectSystem_SmokeSpread smoke = null; ByTable L = null; dynamic T = null; bool clear = false; Obj O = null; ByTable tempL = null; dynamic attempt = null; bool success = false; A = Interface13.Input(user, "Area to jump to", "BOOYEA", A, GlobalVars.teleportlocs, InputType.Any); thearea = GlobalVars.teleportlocs[A]; if (!(user != null) || user.stat != 0 || user.restrained() || this.uses <= 0) { return; } if (!(user == this.loc || Map13.GetDistance(this, user) <= 1 && this.loc is Tile)) { return; } smoke = new EffectSystem_SmokeSpread(); smoke.set_up(2, user.loc); smoke.attach(user); smoke.start(); L = new ByTable(); foreach (dynamic _b in Lang13.Enumerate(GlobalFuncs.get_area_turfs(thearea.type))) { T = _b; if (!T.density) { clear = true; foreach (dynamic _a in Lang13.Enumerate(T, typeof(Obj))) { O = _a; if (O.density) { clear = false; break; } } if (clear) { L.Add(T); } } } if (!(L.len != 0)) { user.WriteMsg("The spell matrix was unable to locate a suitable teleport destination for an unknown reason. Sorry."); return; } if (user != null && user.buckled != null) { user.buckled.unbuckle_mob(); } tempL = L.Copy(); attempt = null; success = false; while (tempL.len != 0) { attempt = Rand13.PickFromTable(tempL); user.Move(attempt); if (GlobalFuncs.get_turf(user) == attempt) { success = true; break; } else { tempL.Remove(attempt); } } if (!success) { user.loc = Rand13.PickFromTable(L); } smoke.start(); this.uses -= 1; return; }