uploading base project structure (& ariel skin and some nerielle item icons! also 20% nerielle skin)
|
@ -0,0 +1,16 @@
|
|||
<!--
|
||||
- Put a `name` field so the game recognizes for which item it should give
|
||||
the player a costum. If you leave it empty, several items might give you
|
||||
the same costume.
|
||||
- the `priority` field controls on which costum layer the costum is applied
|
||||
for exemple, priority="1" would put the costum behind isaac's head, and
|
||||
priority="99" would put the costum in front of all other costums
|
||||
-->
|
||||
<costumes anm2root="gfx/">
|
||||
<costume
|
||||
name="Your item's name"
|
||||
anm2path="path to your custom animation in gfx.anm2"
|
||||
priority="99"
|
||||
type="passive"
|
||||
/>
|
||||
</costumes>
|
|
@ -0,0 +1,32 @@
|
|||
<!--
|
||||
- Add an id field in order to make an entity of the type you want.
|
||||
For exemple, if you wanted to make a new type of bomb, put `id="4"`.
|
||||
- Add a `variant="n"` if you are having issues getting your entity
|
||||
to appear in the game.
|
||||
- Control the speed of your enemy with `friction`.
|
||||
That value is between 0 and 1, values greater than 1 might make
|
||||
your entity accelerate to uncontrolable speeds.
|
||||
- The `portrait` fields control what pictures show when the entity kills the
|
||||
player.
|
||||
- Put the `collisionDamage` value to "0" if you want the entity to be
|
||||
harmless when directly hitting the player.
|
||||
-->
|
||||
<entities anm2root="gfx/" version="5">
|
||||
<entity name="the entity's name"
|
||||
anm2path="animation file name in your gfx in resources folder.anm2"
|
||||
reroll="true"
|
||||
baseHP="10"
|
||||
boss="0"
|
||||
champion="1"
|
||||
collisionDamage="1"
|
||||
collisionMass="30"
|
||||
collisionRadius="13"
|
||||
friction="1"
|
||||
numGridCollisionPoints="7"
|
||||
shadowSize="0"
|
||||
stageHP="0"
|
||||
portrait="30"
|
||||
bestiary="false"
|
||||
><gibs amount="6" blood="1" bone="0" eye="0" gut="1" large="0" />
|
||||
</entity>
|
||||
</entities>
|
|
@ -0,0 +1,38 @@
|
|||
<!--
|
||||
Note: imagine that each item adds a number of tokens to the item pool.
|
||||
Each time the game must generate an item pedestal, it takes out a random
|
||||
token from the item pool and puts the item on the pedestal.
|
||||
|
||||
- `weight` the number of tokens to put in the pool for your item. Greater
|
||||
values makes your item more likely to show up.
|
||||
|
||||
- `decreaseby` Number of tokens to remove from the pool when
|
||||
the player **sees** the item. Greater numbers means you are
|
||||
less likely to see the item after having seen it once.
|
||||
|
||||
- `removeon` Minimum number of tokens to accept the item in the pool.
|
||||
If your item has less token remaining than the `removeon` value,
|
||||
the player won't see it anymore, even if there is remaining tokens.
|
||||
|
||||
- Note that item weights might be pool dependent.
|
||||
|
||||
- Note that picking up the item will remove it from all the pools it is in.
|
||||
|
||||
- All values can be natural or rational numbers.
|
||||
-->
|
||||
<ItemPools>
|
||||
<Pool name="treasure">
|
||||
<Item name="Your item name"
|
||||
weight="2"
|
||||
removeon="0.1"
|
||||
decreaseby="1"
|
||||
/>
|
||||
</Pool>
|
||||
<Pool name="angel">
|
||||
<Item name="Your item name"
|
||||
weight="2"
|
||||
removeon="0.1"
|
||||
decreaseby="1"
|
||||
/>
|
||||
</Pool>
|
||||
</ItemPools>
|
|
@ -0,0 +1,79 @@
|
|||
<!--
|
||||
Note: there is several type of items, the type is the name of the
|
||||
entry (<passive.../> defines a passive type item).
|
||||
- Those are: passive, active, familiar and trinket
|
||||
|
||||
- use the fields `bombs`, `coins` and `keys` to control how many
|
||||
consumables your item gives when you pick it up. For exemple
|
||||
`bombs="10" keys="10"` gives the player 10 keys and 10 bombs when
|
||||
the item is picked up.
|
||||
|
||||
Note: all heart counts are calculated in half hearts.
|
||||
- `maxhearts` is the number of heart containers to add.
|
||||
- `hearts` is count of red hearts to add, it won't exceed the amount of
|
||||
heart containers the player have.
|
||||
- `soulhearts` is the number of spirit hearts to add.
|
||||
- `blackhearts` the number of black hearts to add.
|
||||
|
||||
Note: Red Candle has a `maxcharges` value of 110
|
||||
- For active items `maxcharges` control the number of charges the item have
|
||||
A value of `maxcharge="0"` means infinite charges.
|
||||
|
||||
- `cooldown` is the number of frames you want the player to freez after
|
||||
using the item
|
||||
|
||||
Note on making stat modifying items: the mod needs to have a
|
||||
MC_EVALUATE_CACHE callback in main.lua in order to catch the
|
||||
modification and apply the actual stat changes.
|
||||
- `cache` are the flags to set when calling functions callbacks to
|
||||
MC_EVALUATE_CACHE. They are a space separated list of stat names,
|
||||
the possible values are as following:
|
||||
`speed`, `range`, `shotspeed`, `damage`, `tearcolor`, `tearflag`,
|
||||
`firedelay`, `luck`, `flying` and `all`
|
||||
All the flags might not work, but some work. If you want to call
|
||||
MC_EVALUATE_CACHE with the damage, luck and speed flags, put
|
||||
`cache="damage luck speed"` in your item xml definiton.
|
||||
|
||||
- `special` if you want your item to be special, because it's special
|
||||
a special item has special set to `special="true"`
|
||||
|
||||
- `devilprice` the number of red heart containers your item should cost in
|
||||
a devil room (`devilprice="1"` or `devilprice="2"`)
|
||||
|
||||
<passive name="passive_name.name"
|
||||
description="flavor text shows when you pick up the item"
|
||||
gfx="itemsprite.png"
|
||||
/>
|
||||
|
||||
<active name="an active item name"
|
||||
description="flavor text shows when you pick up the item"
|
||||
gfx="itemsprite.png"
|
||||
maxcharges="0"
|
||||
/>
|
||||
-->
|
||||
<items gfxroot="gfx/collectibles/items/" version="1">
|
||||
|
||||
<passive name="Bronze Scale Collar"
|
||||
description="Shiny!"
|
||||
gfx="bronze_scale.png"
|
||||
/>
|
||||
|
||||
<passive name="Scaly Egg"
|
||||
description="A warming companion."
|
||||
gfx="scaly_egg.png"
|
||||
/>
|
||||
|
||||
<active name="Zappy Breath!"
|
||||
description="Zappy-zapps in a bottle!"
|
||||
gfx="zappy.png"
|
||||
maxcharges="4"
|
||||
/>
|
||||
|
||||
<passive name="Dragon Mark"
|
||||
description="Fiery"
|
||||
gfx="drake_mark.png"
|
||||
soulhearts="2"
|
||||
maxcharges="4"
|
||||
/>
|
||||
|
||||
</items>
|
|
@ -0,0 +1,20 @@
|
|||
<!--
|
||||
** Taken from the nicalis sample mod:
|
||||
** http://steamcommunity.com/sharedfiles/filedetails/?id=838994644
|
||||
-->
|
||||
<players root="gfx/characters/costumes/"
|
||||
portraitroot="gfx/ui/boss/"
|
||||
nameimageroot="gfx/ui/boss/"
|
||||
bigportraitroot="gfx/ui/stage/">
|
||||
<player name="Ariel"
|
||||
id="1"
|
||||
skin="ariel/base.png"
|
||||
hp="1" black="3"
|
||||
items="23"
|
||||
key = "1"
|
||||
nameimage="PlayerName_01_Ariel.png"
|
||||
portrait="PlayerPortrait_01_Ariel.png"
|
||||
bigportrait="PlayerPortraitBig_01_Ariel.png"
|
||||
skinColor="-1"
|
||||
/>
|
||||
</players>
|
|
@ -0,0 +1,38 @@
|
|||
local Lore = RegisterMod( "thecreativelore", 1 );
|
||||
|
||||
--[[ CHARACTERS ]]
|
||||
-- Ariel
|
||||
local ARIEL_NAME = "Ariel";
|
||||
local ARIEL_TYPE = Isaac.GetPlayerTypeByName(ARIEL_NAME);
|
||||
local ARIEL_STATS = {
|
||||
MoveSpeedNaturalBonus = 0.10,
|
||||
MoveSpeedNaturalMultiplier = 0.9,
|
||||
DamageNaturalMultiplier = 0.70,
|
||||
ShotSpeedNaturalMultiplier = 0.8,
|
||||
MaxFireDelayNaturalMultiplier = 1.0,
|
||||
MaxFireDelayNaturalExponent = 0.9,
|
||||
TearHeightBonus = 12,
|
||||
};
|
||||
|
||||
|
||||
--[[ Stats ]]
|
||||
function Lore:EvaluateCache( player, cacheFlag )
|
||||
if player:GetPlayerType() = ARIEL_TYPE then
|
||||
--[[ if cacheFlag == CacheFlag.CACHE_SPEED then
|
||||
player.MoveSpeed = player.MoveSpeed * ARIEL_STATS.MoveSpeedNaturalMultiplier + ARIEL_STATS.MoveSpeedNaturalBonus;
|
||||
elseif cacheFlag == CacheFlag.CACHE_SHOTSPEED then
|
||||
player.ShotSpeed = player.ShotSpeed * ARIEL_STATS.ShotSpeedNaturalMultiplier;
|
||||
elseif cacheFlag == CacheFlag.CACHE_DAMAGE then
|
||||
player.Damage = player.Damage * ARIEL_STATS.DamageNaturalMultiplier;
|
||||
elseif cacheFlag == CacheFlag.CACHE_FIREDELAY then
|
||||
player.MaxFireDelay = math.floor( math.max( 1, player.MaxFireDelay * ARIEL_STATS.MaxFireDelayNaturalMultiplier ) ^ ARIEL_STATS.MaxFireDelayNaturalExponent );
|
||||
elseif cacheFlag == CacheFlag.CACHE_RANGE then
|
||||
player.TearHeight = player.TearHeight + ARIEL_STATS.TearHeightBonus;
|
||||
elseif cacheFlag == CacheFlag.CACHE_TEARCOLOR then
|
||||
--player.TearColor = GAPPI_COLOR;
|
||||
--Player.LaserColor = GAPPI_COLOR;
|
||||
end]]
|
||||
player.CanFly = true
|
||||
end
|
||||
end
|
||||
Lore:AddCallback( ModCallbacks.MC_EVALUATE_CACHE, Lore.EvaluateCache );
|
|
@ -0,0 +1,8 @@
|
|||
<metadata>
|
||||
<name>thecreativelore</name>
|
||||
<directory>thecreativelore</directory>
|
||||
<description/>
|
||||
<version>1.0</version>
|
||||
<visibility/>
|
||||
</metadata>
|
||||
|
After Width: | Height: | Size: 27 KiB |
After Width: | Height: | Size: 31 KiB |
After Width: | Height: | Size: 18 KiB |
After Width: | Height: | Size: 531 B |
After Width: | Height: | Size: 392 B |
After Width: | Height: | Size: 1.0 KiB |
After Width: | Height: | Size: 1.1 KiB |