Solicitando el código para la oveja Famine Volt
activos locales =
{
Activo("ANIM", "anim/lightning_goat_build.zip"),
Activo(" ANIM", "anim/lightning_goat_shocked_build.zip"),
Asset("ANIM", "anim/lightning_goat_basic.zip"),
Asset("ANIM", "anim/ lightning_goat_actions.zip"),
Asset("SOUND", "sound/lightninggoat.fsb"),
}
prefabricados locales =
{
"carne",
"espino de cabra",
"leche de cabra"
}
SetSharedLootTable( 'cabra relámpago',
{
{'carne', 1.00},
{'carne', 1.00},
{'carne', 1.00},
{'lightninggoathorn',0.25},
})
SetSharedLootTable( 'chargedlightninggoat',
{
{'carne', 1,00},
{'carne', 1,00},
{'carne', 1,00},
{'lightninggoathorn',0.25},
{'goatmilk', 1.00},
})
función local RetargetFn( inst)
si inst.charged entonces
devuelve FindEntity(inst, TUNING.LIGHTNING_GOAT_TARGET_DIST, función(chico)
devuelve no chico:HasTag("lightninggoat" ) y
inst.components.combat:CanTarget(chico) y
no chico:HasTag("wall")
fin)
end
end
función local KeepTargetFn(inst, target)
if inst.components.herdmember
e inst.components .herdmember:GetHerd() luego
manada local = inst.components.herdmember
e inst.components.herdmember:GetHerd()
si es rebaño, entonces
devuelve distsq(Vector3(herd.Transform:GetWorldPosition() ), Vector3(inst.Transform:GetWorldPosition() ) ) < TUNING.LIGHTNING_GOAT_CHASE_DIST*TUNING.LIGHTNING_GOAT_CHASE_DIST
fin
fin
devuelve verdadero
fin
descarga de función local (inst)
inst:RemoveTag("charged")
inst.components.lootdropper:SetChanceLootTable('lightninggoat')
inst.sg :GoToState("descarga")
inst.AnimState:ClearBloomEffectHandle()
inst.charged = false
inst.Light:Enable(false) p> p>
inst.chargeleft = nil
end
función local setcharged(inst, instante)
inst:AddTag("charged") p>
inst.components.lootdropper:SetChanceLootTable('chargedlightninggoat')
inst.AnimState:SetBuild("lightning_goat_shocked_build")
inst.AnimState:Show(" fx" )
si no es instantáneo, entonces
inst.sg:GoToState("shocked")
end
inst.AnimState: SetBloomEffectHandle( "shaders/anim.ksh" )
inst.charged = true
inst.chargeleft = 3
inst.Light:Enable(true)
inst:ListenForEvent( "día completo", función()
si inst.chargeleft entonces
inst.chargeleft = inst.chargeleft - 1
si inst.chargeleft <= 0 entonces
descarga(inst)
fin
fin
fin, GetWorld()) p>
fin
función local OnAttacked(inst, data)
inst.components.combat:SetTarget(data.attacker)
si inst.charged entonces
si data.attacker.components.health entonces
si (data.weapon == nil o (no data.weapon:HasTag("projectile") y data.weapon.projectile == nil ))
y (data.attacker ~= GetPlayer() o (data.attacker == GetPlayer() y no GetPlayer().components.inventory:IsInsulated())) entonces
data.attacker.components.health:DoDelta(-TUNING.LIGHTNING_GOAT_DAMAGE)
si data.attacker == GetPlayer() entonces
data.attacker.sg:GoToState(" electrocutar")
end
end
end
end
si no está cargado inst. y datos y data.weapon y data.weapon.components.weapon y data.weapon.components.weapon.stimuli == "eléctrico" luego
setcharged(inst)
fin
atacante local = datos y data.attacker
inst.components.combat:SetTarget(atacante)
inst.components.combat:ShareTarget(atacante, 20, función(amigo ) devuelve amigo:HasTag("lightninggoat") y amigo:HasTag("charged") final, 3)
fin
función local onlightning(inst, data)
si data.rod == inst entonces
setcharged(inst)
end
end
función local OnSave(inst , datos)
si inst.charged entonces
data.charged = inst.charged
data.chargeleft = inst.char
geleft
end
end
función local OnLoad(inst, data)
si data y data.charged y data.chargeleft entonces
setcharged(inst, true)
inst.chargeleft = data.chargeleft
fin
fin
función local getstatus(inst, visor)
si inst.charged entonces
devuelve "CARGADO"
fin
fin
función local fn(Sim)
local inst = CreateEntity()
local trans = inst.entity:AddTransform()
local anim = inst.entity:AddAnimState()
sonido local = inst.entity:AddSoundEmitter()
sombra local = inst.entity:AddDynamicShadow()
sombra: SetSize(1.75,.75)
inst.Transform:SetFourFaced()
MakeCharacterPhysics(inst, 100, 1)
anim:SetBank("lightning_goat" )
anim:SetBuild("lightning_goat_build")
anim:PlayAnimation("idle_loop", true)
anim:Hide("fx") p>
---------------------------------------------
inst:AddTag("rayo")
inst:AddTag("animal")
inst:AddTag("rayo")
luz local = inst.entity:AddLight()
inst.Light:Enable(false)
inst.Light:SetRadius(.85)
inst.Light:SetFalloff(0.5)
inst.Light:SetIntensity(.75)
inst.Light:SetColour(255/255,255/255,236/255)
----------------------------------------------- ---
inst: AddComponent("salud")
inst.components.health:SetMaxHealth(350)
-------- ----------
inst:AddComponent("combat")
inst.components.combat:SetDefaultDamage(TUNING.LIGHTNING_GOAT_DAMAGE)
inst.components.combat:SetRange(TUNING.LIGHTNING_GOAT_ATTACK_RANGE)
inst.components.combat.hiteffectsymbol = "lightning_goat_body"
inst.components.combat:SetAttackPeriod(TUNING.LIGHTNING_GOAT_ATTACK_PERIOD)
inst.components.combat:SetRetargetFunction (1, RetargetFn)
inst.components.combat:SetKeepTargetFunction(KeepTargetFn)
inst.components.combat:SetHurtSound("dontstarve_DLC001/creatures/lightninggoat/hurt")
---------------------------------------------
inst:AddComponent("sleeper")
inst.components.sleeper:SetResistance(4)
------------ --- --------------------
inst:AddComponent("lootdropper")
inst .components.lootdropper:SetChanceLootTable('lightninggoat')
------------------------------ -- ----------
inst:AddComponent("inspectable")
inst.components.inspectable.getstatus = getstatus
------------------------------------------
instancia :AddComponent ("ubicaciones conocidas")
inst:AddComponent("herdmember")
inst.components.herdmember:SetHerdPrefab("lightninggoatherd")
-- -- -------------------------------------
inst:ListenForEvent( " atacado", OnAttacked)
------------------------------------- ---------- ----
MakeMediumBurnableCharacter(inst, "lightning_goat_body")
> MakeMediumFreezableCharacter(inst, "lightning_goat_body")
inst:ListenForEvent("lightningstrike", function(inst, data) onlightning(inst, data) end)
inst.lightningpriority = 10
inst.setcharged = setcharged
inst.OnSave = OnSave
inst.OnLoad = OnLoad
------- ----------------------------------
inst:AddComponent("locomotor")
inst.components.locomotor.walkspeed = TUNING.LIGHTNING_GOAT_WALK_SPEED
inst.components.locomotor.runspeed = TUNING.LIGHTNING_GOAT_RUN_SPEED
inst:SetStateGraph("SGlightninggoat" )
cerebro local = require("brains/lightninggoatbrain")
inst:SetBrain(cerebro)
return inst
end
return Prefab( "común/monstruos/lightninggoat", fn, activos, prefabs)