You can read and reply to posts and download all mods without registering.
We're an independent and non-profit fan-site. Find out more about us here.
I prefer worm piles to not be destructible at all
allowing the player to wrench them to death is the definition of boring
keeping them indestructable preserves worm ammo counts for new players whom have no idea about any proliferator worm gun thing until much later.
class SomaDrain extends RootPsi { function ActivatePsi() { base.ActivatePsi(); doDrain(); DeactivatePsi(); } function doDrain() { local mod, drain, heal; local obj = ShockGame.GetDistantSelectedObj(); if (obj && Link.AnyExist("StimSensor", obj, "DrainStim")) { drain = GetData("Data1"); mod = GetData("PsiStat") - GetData("Data3"); if (mod > 0) { drain += mod * GetData("Data2"); } heal = scp.Clamp(drain, 0, Property.Get(obj, "HitPoints")); ActReact.Stimulate(obj, "DrainStim", drain, "Player"); ShockGame.HealObj("Player", heal); createFX(obj); } } function createFX(obj) { local fx = scp.CreateAt("Soma Drain FX", obj); if (Property.Possessed(obj, "Creature")) { local lnk = Link.Create("ParticleAttachement", fx, obj); LinkTools.LinkSetData(lnk, "Type", 2); LinkTools.LinkSetData(lnk, "Joint", 3); } }}
function OnFrobWorldBegin() { if (!IsDataSet("HackTimeOrig")) { SetData("HackTimeOrig", GetProperty("HackTime")); } SetProperty("HackTime", GetData("HackTimeOrig") * (ShockGame.HasTrait("Player", eTrait.kTraitSecurity) ? 2 : 1));}
3b. The security countdown displaying on top of the hacking window is a nearly unavoidable issue in RSD, as I reimplemented the hacking minigame in a custom overlay, but custom overlays display behind native overlays. I tried a bunch of elaborate hack fixes to address this by disabling and re-enabling the windows when certain conditions were met, but it led to buggy alarm behavior so I ultimately gave up on it.
if (ShockGame.OverlayOn(kOverlayAlarm)) { ShockGame.OverlayChange(kOverlayAlarm, kOverlayModeOff);}
if (ShockGame.IsAlarmActive()) { ShockGame.OverlayChange(kOverlayAlarm, kOverlayModeOn);}