Compare commits

..

No commits in common. "56f3f899099b52d5d7f7cd62f15754ad6f9f42a7" and "73ff7da0ca070333383311244d4eaf82087d694a" have entirely different histories.

54 changed files with 39 additions and 278 deletions

View File

@ -141,21 +141,13 @@ def fetch_and_cut_song(tape, ffmpeg_version):
sys.exit()
def assemble_png_images(tapes, outfile: str, resize=None):
img_names = [f"./source/images/{tape['identifier']}.png" for tape in tapes]
def assemble_png_image(tapes, icons=False):
if icons:
img_names = [f"./source/images/{tape['identifier']}_icon.png" for tape in tapes]
else:
img_names = [f"./source/images/{tape['identifier']}.png" for tape in tapes]
images = [Image.open(x) for x in img_names]
if resize is not None:
for i, (im, tape) in enumerate(zip(images, tapes)):
im.thumbnail((128, 82), Image.ANTIALIAS)
if resize == (64, 41) and tape["icon_resize"] == "blur":
im.thumbnail(resize, Image.ANTIALIAS)
else:
im.thumbnail(resize, Image.NEAREST)
images[i] = im
widths, heights = zip(*(i.size for i in images))
columns = int((len(images))**0.5)
@ -171,7 +163,10 @@ def assemble_png_images(tapes, outfile: str, resize=None):
y_offset = max(heights) * math.floor(i / columns)
new_im.paste(im, (x_offset, y_offset))
new_im.save(f"./build/{outfile}.png")
if icons:
new_im.save("./build/icons.png")
else:
new_im.save("./build/covers.png")
def prepare_music(data):
@ -201,13 +196,12 @@ def prepare_music(data):
def prepare_images(data, config):
logging.info(f"assembling covers and icons into png files")
assemble_png_images(data, "covers")
assemble_png_images(data, "icons", resize=(64, 41))
assemble_png_images(data, "sprites", resize=(33, 21))
assemble_png_image(data)
assemble_png_image(data, icons=True)
logging.info(f"copying other images")
shutil.copy("./source/images/players_icons.png", "./build/players_icons.png")
shutil.copy("./source/images/players_sprites.png", "./build/players_sprites.png")
shutil.copy("./source/images/boombox.png", "./build/boombox.png")
shutil.copy("./source/images/boombox_icon.png", "./build/boombox_icon.png")
shutil.copy("./source/images/PreviewImage.png", "./build/PreviewImage.png")

View File

@ -3,12 +3,10 @@
<contentpackage name="{{ config['name'] }}" path="Mods/{{ config['name'] }}/filelist.xml" corepackage="false" gameversion="0.15.12.0" {% if config['slug'] == "Sunken Tapes" %}steamworkshopid="2616577901"{% endif %}>
<Item file="Mods/{{ config['name'] }}/{{ config['slug'] }}.xml" />
<UIStyle file="Mods/{{ config['name'] }}/{{ config['slug'] }}_style.xml" />
<None file="Mods/{{ config['name'] }}/PreviewImage.png" />
<None file="Mods/{{ config['name'] }}/icons.png" />
<None file="Mods/{{ config['name'] }}/covers.png" />
<None file="Mods/{{ config['name'] }}/sprites.png" />
<None file="Mods/{{ config['name'] }}/players_icons.png" />
<None file="Mods/{{ config['name'] }}/players_sprites.png" />{% for tape in tapes %}
<None file="Mods/{{ config['name'] }}/boombox.png" />
<None file="Mods/{{ config['name'] }}/boombox_icon.png" />{% for tape in tapes %}
<None file="Mods/{{ config['name'] }}/music/{{ tape["identifier"] }}.ogg" />
<None file="Mods/{{ config['name'] }}/music/{{ tape["identifier"] }}-walkman.ogg" />{% endfor %}
<None file="Mods/{{ config['name'] }}/sound_effects/boombox_insert_cassette.ogg" />

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 53 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 96 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.9 KiB

View File

@ -1,19 +0,0 @@
from PIL import Image
from pathlib import Path
print(dir(Image))
size = 33, 21
#size = 64, 41
size_intermediate = 128, 82
for infile in Path('./').glob("*.png"):
if "icon" not in str(infile) and "sprite" not in str(infile):
try:
outfile = infile.with_name(infile.name.replace(".png", "_sprite.png"))
im = Image.open(infile)
im.thumbnail(size_intermediate, Image.ANTIALIAS)
im.thumbnail(size, Image.NEAREST)
im.save(outfile, "PNG")
except IOError:
print(f"cannot create thumbnail for {infile}")

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.5 KiB

Binary file not shown.

Binary file not shown.

View File

@ -71,7 +71,6 @@
<PingCircle texture="Content/Items/Command/pingCircle.png" origin="0.5,0.5" />
<Radiation texture="Content/UI/noise.png" sourcerect="0,0,512,512" />
<RadiationAnimSpriteSheet columns="8" rows="2" texture="Content/Map/radiationborder.png"/>
<YouAreHereCircle texture="Content/UI/UIAtlasGeneral.png" sourcerect="214,11,11,11" />
<UIGlowCircular texture="Content/UI/UIAtlasGeneral.png" sourcerect="177,637,170,170" origin="0.5,0.5" tile="false" compress="false" />
<UIGlowSolidCircular texture="Content/UI/UIAtlasGeneral.png" sourcerect="508,898,121,120" origin="0.5,0.5" tile="false" compress="false" />
<UIThermalGlow texture="Content/UI/UIAtlasGeneral.png" sourcerect="631,894,128,128" origin="0.5,0.5" tile="false" compress="false" />´
@ -194,7 +193,8 @@
<LargeFont file="Content/Fonts/NotoSans/NotoSans-ExtraBold.ttf" size="22"/>
-->
<TitleText color="255,255,255,255" hovercolor="255,255,255,255" selectedcolor="255,255,255,255" pressedcolor="255,255,255,255">
<Sprite texture="Mods/IntoTheAbyss/ita_titletext.png" sourcerect="0,520,1024,328" tile="false" maintainaspectratio="true"/>
<Sprite texture="Mods/IntoTheAbyss/ita_titletext.png" sourcerect="0,520,1024,328" tile="false" maintainaspectratio="true">
</Sprite>
</TitleText>
{% for tape in tapes %}
<{{ config['slug'] }}_cover_{{ tape.identifier }} color="255,255,255,255" textcolor="0,0,0,255">
@ -1533,8 +1533,5 @@
<Sprite name="RandomizeButton.Hover" texture="Content/UI/UIAtlasGeneral.png" state="Hover" sourcerect="436,772,46,46" tile="false" origin="0.5,0.5" slice="439,775,479,815" minborderscale="1" />
<Sprite name="RandomizeButton.Pressed" texture="Content/UI/UIAtlasGeneral.png" state="Pressed" sourcerect="486,772,46,46" tile="false" origin="0.5,0.5" slice="489,775,529,815" minborderscale="1" />
</RandomizeButton>
<EyeButton color="169,212,187,255" hovercolor="220,220,220,255" selectedcolor="255,255,255,255" pressedcolor="100,100,100,255" disabledcolor="125,125,125,125">
<Sprite name="EyeButton" texture="Content/UI/MainIconsAtlas.png" sourcerect="149,285,86,48" tile="false" maintainaspectratio="true" origin="0.5,0.5" />
</EyeButton>
</style>
</Override>
</Override>

View File

@ -70,7 +70,6 @@
<UIGlow texture="Content/UI/InnerGlow.png" sourcerect="0,0,512,384" slice="128,128,384,256" />
<PingCircle texture="Content/Items/Command/pingCircle.png" origin="0.5,0.5" />
<Radiation texture="Content/UI/noise.png" sourcerect="0,0,512,512" />
<YouAreHereCircle texture="Content/UI/UIAtlasGeneral.png" sourcerect="214,11,11,11" />
<RadiationAnimSpriteSheet columns="8" rows="2" texture="Content/Map/radiationborder.png"/>
<UIGlowCircular texture="Content/UI/UIAtlasGeneral.png" sourcerect="177,637,170,170" origin="0.5,0.5" tile="false" compress="false" />
<UIGlowSolidCircular texture="Content/UI/UIAtlasGeneral.png" sourcerect="508,898,121,120" origin="0.5,0.5" tile="false" compress="false" />
@ -1532,9 +1531,5 @@
<Sprite name="RandomizeButton.Hover" texture="Content/UI/UIAtlasGeneral.png" state="Hover" sourcerect="436,772,46,46" tile="false" origin="0.5,0.5" slice="439,775,479,815" minborderscale="1" />
<Sprite name="RandomizeButton.Pressed" texture="Content/UI/UIAtlasGeneral.png" state="Pressed" sourcerect="486,772,46,46" tile="false" origin="0.5,0.5" slice="489,775,529,815" minborderscale="1" />
</RandomizeButton>
<EyeButton color="169,212,187,255" hovercolor="220,220,220,255" selectedcolor="255,255,255,255" pressedcolor="100,100,100,255" disabledcolor="125,125,125,125">
<Sprite name="EyeButton" texture="Content/UI/MainIconsAtlas.png" sourcerect="149,285,86,48" tile="false" maintainaspectratio="true" origin="0.5,0.5" />
</EyeButton>
</style>
</Override>

View File

@ -24,12 +24,12 @@
<RequiredItem identifier="fpgacircuit" />
</Fabricate>
<Upgrade gameversion="0.9.2.0" scale="0.5" />
<InventoryIcon texture="Mods/{{ config['name'] }}/players_icons.png" sourcerect="0,0,64,42" origin="0.5,0.5" />
<Sprite texture="Mods/{{ config['name'] }}/players_sprites.png" sourcerect="0,0,117,76" depth="0.55" origin="0.5,0.5" />
<Body width="117" height="76" />
<InventoryIcon texture="Mods/{{ config['name'] }}/boombox_icon.png" sourcerect="0,0,64,64" origin="0.5,0.5" />
<Sprite texture="Mods/{{ config['name'] }}/boombox.png" sourcerect="0,0,100,60" depth="0.55" origin="0.5,0.5" />
<Body width="100" height="60" />
<LightComponent LightColor="0.0,0.85,0.0,0.7" range="4" powerconsumption="0" blinkfrequency="0" IsOn="false" canbeselected="false">
</LightComponent>
<CustomInterface canbeselected="true" drawhudwhenequipped="true" allowuioverlap="true" msg="Equip to control">
<CustomInterface canbeselected="true" drawhudwhenequipped="true" allowuioverlap="true">
<GuiFrame relativesize="0.10,0.07" anchor="CenterLeft" pivot="BottomLeft" relativeoffset="0.006,-0.05" style="ItemUI" />
<TickBox text="Play">
<StatusEffect type="OnUse" targettype="This" IsOn="true">
@ -43,7 +43,7 @@
</StatusEffect>
</TickBox>
</CustomInterface>
<Holdable slots="RightHand,LeftHand" aimable="false" holdpos="5,-65" holdangle="0" aimpos="5,32" handle1="0,32" handle2="0,32" swingamount="25,7" swingspeed="0.5" swingwhenusing="true" msg="ItemMsgPickupSelect">
<Holdable slots="RightHand,LeftHand" aimable="false" holdpos="5,-65" holdangle="0" aimpos="5,30" handle1="0,30" handle2="0,30" swingamount="25,7" swingspeed="0.5" swingwhenusing="true" msg="ItemMsgPickupSelect">
<StatusEffect type="OnBroken" target="This">
<Remove />
</StatusEffect>
@ -57,15 +57,15 @@
</ItemContainer>
</Item>
<Item name="Walkman BARO Brown" cargocontaineridentifier="metalcrate" identifier="{% if config['slug'] != "sunken_tapes" %}{{ config["slug"] }}-{% endif %}walkman-brown" category="Equipment" Tags="smallitem,walkman,sunken-tapes-player" scale="0.5" description="" price="350" impactsoundtag="impact_metal_light" isshootable="true" HideConditionBar="true">
<Item name="Walkman" cargocontaineridentifier="metalcrate" identifier="{% if config['slug'] != "sunken_tapes" %}{{ config["slug"] }}-{% endif %}walkman" category="Equipment" Tags="smallitem,walkman,sunken-tapes-player" scale="0.5" description="" price="450" impactsoundtag="impact_metal_light" isshootable="true" HideConditionBar="true">
<PreferredContainer primary="abandonedcrewcab" spawnprobability="0.1"/>
<PreferredContainer primary="outpostcrewcabinet" spawnprobability="0.1"/>
<Price baseprice="300" soldeverywhere="false">
<Price baseprice="450" soldeverywhere="false">
<Price locationtype="outpost" multiplier="1" minavailable="1" />
<Price locationtype="city" multiplier="0.7" minavailable="1"/>
<Price locationtype="research" multiplier="1.1" sold="false"/>
<Price locationtype="military" multiplier="1.1" sold="false"/>
<Price locationtype="mine" multiplier="1.1" sold="false"/>
<Price locationtype="research" multiplier="1.5" sold="false"/>
<Price locationtype="military" multiplier="1.5" sold="false"/>
<Price locationtype="mine" multiplier="1.5" sold="false"/>
</Price>
<Deconstruct time="20">
</Deconstruct>
@ -78,12 +78,12 @@
<RequiredItem identifier="fpgacircuit" />
</Fabricate>
<Upgrade gameversion="0.9.2.0" scale="0.5" />
<InventoryIcon texture="Mods/{{ config['name'] }}/players_icons.png" sourcerect="64,0,64,40" origin="0.5,0.5" />
<Sprite texture="Mods/{{ config['name'] }}/players_sprites.png" sourcerect="117,0,51,33" depth="0.55" origin="0.5,0.5" />
<Body width="51" height="33" />
<LightComponent LightColor="0.0,0.0,0.0,0.0" range="1" powerconsumption="0" blinkfrequency="0" IsOn="false" canbeselected="false">
<InventoryIcon texture="Mods/{{ config['name'] }}/boombox_icon.png" sourcerect="0,0,64,64" origin="0.5,0.5" />
<Sprite texture="Mods/{{ config['name'] }}/boombox.png" sourcerect="0,0,100,60" depth="0.55" origin="0.5,0.5" />
<Body width="100" height="60" />
<LightComponent LightColor="0.0,0.85,0.0,0.7" range="4" powerconsumption="0" blinkfrequency="0" IsOn="false" canbeselected="false">
</LightComponent>
<CustomInterface canbeselected="true" drawhudwhenequipped="true" allowuioverlap="true" msg="Equip to control">
<CustomInterface canbeselected="true" drawhudwhenequipped="true" allowuioverlap="true">
<GuiFrame relativesize="0.10,0.07" anchor="CenterLeft" pivot="BottomLeft" relativeoffset="0.006,-0.05" style="ItemUI" />
<TickBox text="Play">
<StatusEffect type="OnUse" targettype="This" IsOn="true">
@ -97,174 +97,12 @@
</StatusEffect>
</TickBox>
</CustomInterface>
<Holdable slots="RightHand,LeftHand,Any" holdpos="5,-75" holdangle="0" aimpos="0,-45" handle1="-5,15" handle2="-5,15" swingamount="25,8" swingspeed="0.5" swingwhenusing="true" msg="ItemMsgPickupSelect">
<Holdable slots="RightHand,LeftHand,Any" holdpos="5,-65" holdangle="0" aimpos="5,-65" handle1="0,30" handle2="0,30" swingamount="25,8" swingspeed="0.5" swingwhenusing="true" msg="ItemMsgPickupSelect">
<StatusEffect type="OnBroken" target="This">
<Remove />
</StatusEffect>
</Holdable>
<ItemContainer itempos="3,-3" hideitems="false" drawinventory="true" capacity="1" maxstacksize="1" slotsperrow="1" iteminterval="0,0" itemrotation="180" canbeselected="false" containedspritedepth="0.6">
<StatusEffect type="OnUse" targettype="Contained" >
<Use />
</StatusEffect>
<Containable items="cassette">
</Containable>
</ItemContainer>
</Item>
<Item name="Walkman BARO Silver" cargocontaineridentifier="metalcrate" identifier="{% if config['slug'] != "sunken_tapes" %}{{ config["slug"] }}-{% endif %}walkman-silver" category="Equipment" Tags="smallitem,walkman,sunken-tapes-player" scale="0.5" description="" price="450" impactsoundtag="impact_metal_light" isshootable="true" HideConditionBar="true">
<PreferredContainer primary="abandonedcrewcab" spawnprobability="0.1"/>
<PreferredContainer primary="outpostcrewcabinet" spawnprobability="0.1"/>
<Price baseprice="450" soldeverywhere="false">
<Price locationtype="outpost" multiplier="1" sold="false"/>
<Price locationtype="city" multiplier="0.7" sold="false"/>
<Price locationtype="research" multiplier="1.0" minavailable="1"/>
<Price locationtype="military" multiplier="1.1" sold="false"/>
<Price locationtype="mine" multiplier="1.1" sold="false"/>
</Price>
<Deconstruct time="20">
</Deconstruct>
<Fabricate suitablefabricators="fabricator" requiredtime="45">
<RequiredSkill identifier="mechanical" level="45" />
<RequiredSkill identifier="electrical" level="55" />
<RequiredItem identifier="aluminium" />
<RequiredItem identifier="copper" />
<RequiredItem identifier="plastic" />
<RequiredItem identifier="fpgacircuit" />
</Fabricate>
<Upgrade gameversion="0.9.2.0" scale="0.5" />
<InventoryIcon texture="Mods/{{ config['name'] }}/players_icons.png" sourcerect="128,0,64,40" origin="0.5,0.5" />
<Sprite texture="Mods/{{ config['name'] }}/players_sprites.png" sourcerect="168,0,51,33" depth="0.55" origin="0.5,0.5" />
<Body width="51" height="33" />
<LightComponent LightColor="0.0,0.0,0.0,0.0" range="1" powerconsumption="0" blinkfrequency="0" IsOn="false" canbeselected="false">
</LightComponent>
<CustomInterface canbeselected="true" drawhudwhenequipped="true" allowuioverlap="true" msg="Equip to control">
<GuiFrame relativesize="0.10,0.07" anchor="CenterLeft" pivot="BottomLeft" relativeoffset="0.006,-0.05" style="ItemUI" />
<TickBox text="Play">
<StatusEffect type="OnUse" targettype="This" IsOn="true">
<Conditional IsOn="false" />
<sound file="Mods/{{ config['name'] }}/sound_effects/boombox_play_cassette.ogg" type="OnUse" range="300" volume="1.0" />
</StatusEffect>
<StatusEffect type="OnSecondaryUse" targettype="This" IsOn="false" >
<Conditional IsOn="true" />
<sound file="Mods/{{ config['name'] }}/sound_effects/boombox_play_cassette.ogg" type="OnUse" range="300" volume="1.0" />
<Use />
</StatusEffect>
</TickBox>
</CustomInterface>
<Holdable slots="RightHand,LeftHand,Any" holdpos="5,-75" holdangle="0" aimpos="0,-45" handle1="-5,15" handle2="-5,15" swingamount="25,8" swingspeed="0.5" swingwhenusing="true" msg="ItemMsgPickupSelect">
<StatusEffect type="OnBroken" target="This">
<Remove />
</StatusEffect>
</Holdable>
<ItemContainer itempos="3,-3" hideitems="false" drawinventory="true" capacity="1" maxstacksize="1" slotsperrow="1" iteminterval="0,0" itemrotation="180" canbeselected="false" containedspritedepth="0.6">
<StatusEffect type="OnUse" targettype="Contained" >
<Use />
</StatusEffect>
<Containable items="cassette">
</Containable>
</ItemContainer>
</Item>
<Item name="Walkman BARO Black" cargocontaineridentifier="metalcrate" identifier="{% if config['slug'] != "sunken_tapes" %}{{ config["slug"] }}-{% endif %}walkman-black" category="Equipment" Tags="smallitem,walkman,sunken-tapes-player" scale="0.5" description="" price="450" impactsoundtag="impact_metal_light" isshootable="true" HideConditionBar="true">
<PreferredContainer primary="abandonedcrewcab" spawnprobability="0.1"/>
<PreferredContainer primary="outpostcrewcabinet" spawnprobability="0.1"/>
<Price baseprice="450" soldeverywhere="false">
<Price locationtype="outpost" multiplier="1" sold="false"/>
<Price locationtype="city" multiplier="0.7" sold="false"/>
<Price locationtype="research" multiplier="1.1" sold="false"/>
<Price locationtype="military" multiplier="1.1" sold="false"/>
<Price locationtype="mine" multiplier="1.0" minavailable="1"/>
</Price>
<Deconstruct time="20">
</Deconstruct>
<Fabricate suitablefabricators="fabricator" requiredtime="45">
<RequiredSkill identifier="mechanical" level="45" />
<RequiredSkill identifier="electrical" level="55" />
<RequiredItem identifier="aluminium" />
<RequiredItem identifier="copper" />
<RequiredItem identifier="plastic" />
<RequiredItem identifier="fpgacircuit" />
</Fabricate>
<Upgrade gameversion="0.9.2.0" scale="0.5" />
<InventoryIcon texture="Mods/{{ config['name'] }}/players_icons.png" sourcerect="192,0,64,40" origin="0.5,0.5" />
<Sprite texture="Mods/{{ config['name'] }}/players_sprites.png" sourcerect="219,0,51,33" depth="0.55" origin="0.5,0.5" />
<Body width="51" height="33" />
<LightComponent LightColor="0.0,0.0,0.0,0.0" range="1" powerconsumption="0" blinkfrequency="0" IsOn="false" canbeselected="false">
</LightComponent>
<CustomInterface canbeselected="true" drawhudwhenequipped="true" allowuioverlap="true" msg="Equip to control">
<GuiFrame relativesize="0.10,0.07" anchor="CenterLeft" pivot="BottomLeft" relativeoffset="0.006,-0.05" style="ItemUI" />
<TickBox text="Play">
<StatusEffect type="OnUse" targettype="This" IsOn="true">
<Conditional IsOn="false" />
<sound file="Mods/{{ config['name'] }}/sound_effects/boombox_play_cassette.ogg" type="OnUse" range="300" volume="1.0" />
</StatusEffect>
<StatusEffect type="OnSecondaryUse" targettype="This" IsOn="false" >
<Conditional IsOn="true" />
<sound file="Mods/{{ config['name'] }}/sound_effects/boombox_play_cassette.ogg" type="OnUse" range="300" volume="1.0" />
<Use />
</StatusEffect>
</TickBox>
</CustomInterface>
<Holdable slots="RightHand,LeftHand,Any" holdpos="5,-75" holdangle="0" aimpos="0,-45" handle1="-5,15" handle2="-5,15" swingamount="25,8" swingspeed="0.5" swingwhenusing="true" msg="ItemMsgPickupSelect">
<StatusEffect type="OnBroken" target="This">
<Remove />
</StatusEffect>
</Holdable>
<ItemContainer itempos="3,-3" hideitems="false" drawinventory="true" capacity="1" maxstacksize="1" slotsperrow="1" iteminterval="0,0" itemrotation="180" canbeselected="false" containedspritedepth="0.6">
<StatusEffect type="OnUse" targettype="Contained" >
<Use />
</StatusEffect>
<Containable items="cassette">
</Containable>
</ItemContainer>
</Item>
<Item name="Walkman BARO Blue" cargocontaineridentifier="metalcrate" identifier="{% if config['slug'] != "sunken_tapes" %}{{ config["slug"] }}-{% endif %}walkman-blue" category="Equipment" Tags="smallitem,walkman,sunken-tapes-player" scale="0.5" description="" price="450" impactsoundtag="impact_metal_light" isshootable="true" HideConditionBar="true">
<PreferredContainer primary="abandonedcrewcab" spawnprobability="0.1"/>
<PreferredContainer primary="outpostcrewcabinet" spawnprobability="0.1"/>
<Price baseprice="450" soldeverywhere="false">
<Price locationtype="outpost" multiplier="1" sold="false"/>
<Price locationtype="city" multiplier="0.7" sold="false"/>
<Price locationtype="research" multiplier="1.1" sold="false"/>
<Price locationtype="military" multiplier="1.0" minavailable="1"/>
<Price locationtype="mine" multiplier="1.1" sold="false"/>
</Price>
<Deconstruct time="20">
</Deconstruct>
<Fabricate suitablefabricators="fabricator" requiredtime="45">
<RequiredSkill identifier="mechanical" level="45" />
<RequiredSkill identifier="electrical" level="55" />
<RequiredItem identifier="aluminium" />
<RequiredItem identifier="copper" />
<RequiredItem identifier="plastic" />
<RequiredItem identifier="fpgacircuit" />
</Fabricate>
<Upgrade gameversion="0.9.2.0" scale="0.5" />
<InventoryIcon texture="Mods/{{ config['name'] }}/players_icons.png" sourcerect="256,0,64,40" origin="0.5,0.5" />
<Sprite texture="Mods/{{ config['name'] }}/players_sprites.png" sourcerect="270,0,51,33" depth="0.55" origin="0.5,0.5" />
<Body width="51" height="33" />
<LightComponent LightColor="0.0,0.0,0.0,0.0" range="1" powerconsumption="0" blinkfrequency="0" IsOn="false" canbeselected="false">
</LightComponent>
<CustomInterface canbeselected="true" drawhudwhenequipped="true" allowuioverlap="true" msg="Equip to control">
<GuiFrame relativesize="0.10,0.07" anchor="CenterLeft" pivot="BottomLeft" relativeoffset="0.006,-0.05" style="ItemUI" />
<TickBox text="Play">
<StatusEffect type="OnUse" targettype="This" IsOn="true">
<Conditional IsOn="false" />
<sound file="Mods/{{ config['name'] }}/sound_effects/boombox_play_cassette.ogg" type="OnUse" range="300" volume="1.0" />
</StatusEffect>
<StatusEffect type="OnSecondaryUse" targettype="This" IsOn="false" >
<Conditional IsOn="true" />
<sound file="Mods/{{ config['name'] }}/sound_effects/boombox_play_cassette.ogg" type="OnUse" range="300" volume="1.0" />
<Use />
</StatusEffect>
</TickBox>
</CustomInterface>
<Holdable slots="RightHand,LeftHand,Any" holdpos="5,-75" holdangle="0" aimpos="0,-45" handle1="-5,15" handle2="-5,15" swingamount="25,8" swingspeed="0.5" swingwhenusing="true" msg="ItemMsgPickupSelect">
<StatusEffect type="OnBroken" target="This">
<Remove />
</StatusEffect>
</Holdable>
<ItemContainer itempos="3,-3" hideitems="false" drawinventory="true" capacity="1" maxstacksize="1" slotsperrow="1" iteminterval="0,0" itemrotation="180" canbeselected="false" containedspritedepth="0.6">
<ItemContainer hideitems="true" drawinventory="true" capacity="1" maxstacksize="1" slotsperrow="6" itempos="0,0" iteminterval="0,0" itemrotation="0" canbeselected="false" containedspritedepth="0.79" >
<StatusEffect type="OnUse" targettype="Contained" >
<Use />
</StatusEffect>
@ -276,7 +114,7 @@
<!-- Cassette Tapes -->
{% for tape in tapes %}
<Item name="Tape: {{ tape.name }}" identifier="{% if config['slug'] != "sunken_tapes" %}{{ config["slug"] }}-{% endif %}cassette-{{ tape.identifier }}" category="Equipment" maxstacksize="8" Tags="smallitem,cassette" cargocontaineridentifier="metalcrate" scale="0.5" isshootable="true" impacttolerance="1.4" >
<Item name="Tape: {{ tape.name }}" identifier="{% if config['slug'] != "sunken_tapes" %}{{ config["slug"] }}-{% endif %}cassette-{{ tape.identifier }}" category="Equipment" maxstacksize="8" Tags="smallitem,cassette" cargocontaineridentifier="metalcrate" scale="0.5" isshootable="true" impacttolerance="1.3" >
<PreferredContainer primary="abandonedcrewcab" spawnprobability="0.05"/>
<PreferredContainer primary="outpostcrewcabinet" minamount="0" maxamount="1" spawnprobability="0.05"/>
<Price baseprice="{{ tape.price }}" soldeverywhere="false">{% for location in ["outpost", "city", "research", "military", "mine"] %}
@ -292,8 +130,8 @@
<RequiredItem identifier="fpgacircuit" />
</Fabricate>
<InventoryIcon texture="Mods/{{ config['name'] }}/icons.png" sourcerect="{{ 64 * positions[loop.index0]['column'] }},{{ 41 * positions[loop.index0]['row'] }},64,41" origin="0.5,0.5" />
<Sprite texture="Mods/{{ config['name'] }}/sprites.png" sourcerect="{{ 33 * positions[loop.index0]['column'] }},{{ 21 * positions[loop.index0]['row'] }},33,21" depth="0.6" origin="0.5,0.5" />
<Body width="33" height="21" />
<Sprite texture="Mods/{{ config['name'] }}/icons.png" sourcerect="{{ 64 * positions[loop.index0]['column'] }},{{ 41 * positions[loop.index0]['row'] }},64,41" depth="0.6" origin="0.5,0.5" />
<Body width="48" height="48" />
<Throwable slots="Any,RightHand,LeftHand" holdpos="5,-65" holdangle="0" handle1="0,1" throwforce="4.0" aimpos="35,-10" msg="Aim to throw">
<StatusEffect type="OnImpact" target="This" Condition="-5.0" disabledeltatime="true">
<sound file="Mods/{{ config['name'] }}/sound_effects/cassette_drop.ogg" range="500" volume="1.0" />

View File

@ -2,7 +2,6 @@
name: Blank Tape
source: ./source/original_audio/blank.ogg
note: ""
icon_resize: sharp
spawn:
- location: abandonedcrewcab
probability: 0.05
@ -21,7 +20,6 @@
end: -1
volume: 0
note: ""
icon_resize: blur
spawn:
- location: abandonedcrewcab
probability: 0.05
@ -41,7 +39,6 @@
end: -1
volume: 0
note: ""
icon_resize: blur
spawn:
- location: abandonedcrewcab
probability: 0.05
@ -61,7 +58,6 @@
end: -1
volume: 0
note: ""
icon_resize: sharp
spawn:
- location: abandonedcrewcab
probability: 0.04
@ -81,7 +77,6 @@
end: -1
volume: 0
note: ""
icon_resize: sharp
spawn:
- location: abandonedcrewcab
probability: 0.05
@ -101,7 +96,6 @@
end: -1
volume: 0
note: ""
icon_resize: blur
spawn:
- location: abandonedcrewcab
probability: 0.05
@ -122,7 +116,6 @@
end: 00:06:50
volume: 2
note: ""
icon_resize: sharp
spawn:
- location: abandonedcrewcab
probability: 0.05
@ -143,7 +136,6 @@
end: 00:02:49
volume: 0
note: ""
icon_resize: sharp
spawn:
- location: abandonedcrewcab
probability: 0.05
@ -163,7 +155,6 @@
end: 00:04:32
volume: 0
note: ""
icon_resize: sharp
spawn:
- location: abandonedcrewcab
probability: 0.05
@ -183,7 +174,6 @@
end: -1
volume: 3
note: ""
icon_resize: sharp
spawn:
- location: abandonedcrewcab
probability: 0.05
@ -203,7 +193,6 @@
end: -1
volume: 0
note: ""
icon_resize: sharp
spawn:
- location: abandonedcrewcab
probability: 0.05
@ -225,7 +214,6 @@
end: -1
volume: 3
note: ""
icon_resize: blur
spawn:
- location: abandonedcrewcab
probability: 0.05
@ -246,7 +234,6 @@
end: -1
volume: 3
note: ""
icon_resize: blur
spawn:
- location: abandonedcrewcab
probability: 0.05
@ -267,7 +254,6 @@
end: 00:04:18
volume: 0
note: ""
icon_resize: sharp
spawn:
- location: abandonedcrewcab
probability: 0.05
@ -288,7 +274,6 @@
end: 00:02:45
volume: 0
note: ""
icon_resize: sharp
spawn:
- location: abandonedcrewcab
probability: 0.05
@ -309,7 +294,6 @@
end: 00:03:20
volume: 6
note: ""
icon_resize: sharp
spawn:
- location: abandonedcrewcab
probability: 0.05
@ -330,7 +314,6 @@
end: 00:02:33
volume: 6
note: ""
icon_resize: blur
spawn:
- location: abandonedcrewcab
probability: 0.05
@ -351,7 +334,6 @@
end: -1
volume: 6
note: ""
icon_resize: blur
spawn:
- location: abandonedcrewcab
probability: 0.05
@ -372,7 +354,6 @@
end: -1
volume: 0
note: ""
icon_resize: sharp
spawn:
- location: abandonedcrewcab
probability: 0.05
@ -393,7 +374,6 @@
end: -1
volume: 6
note: ""
icon_resize: blur
spawn:
- location: abandonedcrewcab
probability: 0.05
@ -414,7 +394,6 @@
end: 00:05:51
volume: 3
note: ""
icon_resize: sharp
spawn:
- location: abandonedcrewcab
probability: 0.05
@ -435,7 +414,6 @@
end: -1
volume: 3
note: ""
icon_resize: sharp
spawn:
- location: abandonedcrewcab
probability: 0.05
@ -456,7 +434,6 @@
end: -1
volume: 6
note: ""
icon_resize: sharp
spawn:
- location: abandonedcrewcab
probability: 0.02
@ -477,7 +454,6 @@
end: -1
volume: 0
note: ""
icon_resize: sharp
spawn:
- location: abandonedcrewcab
probability: 0.05
@ -499,7 +475,6 @@
end: 00:02:35
volume: 2
note: ""
icon_resize: sharp
spawn:
- location: abandonedcrewcab
probability: 0.05
@ -520,7 +495,6 @@
end: 00:04:08.8
volume: 0
note: ""
icon_resize: sharp
spawn:
- location: abandonedcrewcab
probability: 0.05
@ -541,7 +515,6 @@
end: -1
volume: 3
note: ""
icon_resize: sharp
spawn:
- location: abandonedcrewcab
probability: 0.05
@ -560,7 +533,6 @@
end: -1
volume: 10
note: ""
icon_resize: sharp
spawn:
- location: abandonedcrewcab
probability: 0.05
@ -581,7 +553,6 @@
end: -1
volume: 0
note: ""
icon_resize: sharp
spawn:
- location: abandonedcrewcab
probability: 0.05
@ -602,7 +573,6 @@
end: -1
volume: 0
note: ""
icon_resize: sharp
spawn:
- location: abandonedcrewcab
probability: 0.05
@ -611,7 +581,7 @@
price: 450
multipliers: [1, 1, 1, 1, 1] # outpost, city, research, military, mine
sold: [false, true, false, false, false] # outpost, city, research, military, mine
no_of_uses: 6 # post-processing
no_of_uses: 6
buffs: False
buff_multiplier: 0.5
@ -619,7 +589,6 @@
name: Inka - Schritte (08080 remix)
source: ./source/original_audio/schritte_08080.ogg
note: Anžiček remix
icon_resize: sharp
spawn:
- location: abandonedcrewcab
probability: 0.05
@ -639,7 +608,6 @@
end: -1
volume: 0
note: ""
icon_resize: sharp
spawn:
- location: abandonedcrewcab
probability: 0.05
@ -654,7 +622,6 @@
name: Neznani Rock Fotri
source: ./source/original_audio/wacky_tape.ogg
note: Made by a broken cassette player
icon_resize: sharp
spawn:
- location: abandonedcrewcab
probability: 0.05
@ -669,7 +636,6 @@
name: 08080 - Minor Threat
source: ./source/original_audio/08080_minor_threat.ogg
note: Original song by 08080
icon_resize: sharp
spawn:
- location: abandonedcrewcab
probability: 0.04
@ -686,7 +652,6 @@
name: 08080 - Canyon's Joyride
source: ./source/original_audio/08080_canyons_joyride.ogg
note: Original song by 08080
icon_resize: sharp
spawn:
- location: abandonedcrewcab
probability: 0.03
@ -707,7 +672,6 @@
end: -1
volume: 0
note: ""
icon_resize: sharp
spawn:
- location: abandonedcrewcab
probability: 0.05
@ -727,7 +691,6 @@
end: -1
volume: 0
note: ""
icon_resize: sharp
spawn:
- location: abandonedcrewcab
probability: 0.05
@ -747,7 +710,6 @@
end: -1
volume: 0
note: ""
icon_resize: sharp
spawn:
- location: abandonedcrewcab
probability: 0.05
@ -768,7 +730,6 @@
end: 00:06:46
volume: 0
note: ""
icon_resize: sharp
spawn:
- location: outpostcrewcabinet
probability: 0.02
@ -787,7 +748,6 @@
end: -1
volume: 12
note: ""
icon_resize: sharp
spawn:
- location: abandonedcrewcab
probability: 0.03
@ -808,7 +768,6 @@
end: -1
volume: 0
note: ""
icon_resize: sharp
spawn:
- location: abandonedcrewcab
probability: 0.04
@ -829,7 +788,6 @@
end: -1
volume: 0
note: ""
icon_resize: sharp
spawn:
- location: abandonedcrewcab
probability: 0.04