mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-07-12 07:33:34 +01:00
Merge pull request #4480 from Fox-McCloud/simple-animal-loot-refactor
Simple Animal Loot Refactor
This commit is contained in:
@@ -20,6 +20,7 @@
|
||||
flying = 1
|
||||
universal_speak = 1
|
||||
var/list/construct_spells = list()
|
||||
loot = list(/obj/item/weapon/reagent_containers/food/snacks/ectoplasm)
|
||||
|
||||
/mob/living/simple_animal/construct/New()
|
||||
..()
|
||||
@@ -31,7 +32,6 @@
|
||||
|
||||
/mob/living/simple_animal/construct/death()
|
||||
..()
|
||||
new /obj/item/weapon/reagent_containers/food/snacks/ectoplasm (src.loc)
|
||||
for(var/mob/M in viewers(src, null))
|
||||
if((M.client && !( M.blinded )))
|
||||
M.show_message("\red [src] collapses in a shattered heap. ")
|
||||
|
||||
@@ -603,6 +603,7 @@
|
||||
var/emagged = 0
|
||||
atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0)
|
||||
minbodytemp = 0
|
||||
loot = list(/obj/effect/decal/cleanable/blood/gibs/robot)
|
||||
|
||||
/mob/living/simple_animal/pet/corgi/Ian/borgi/emag_act(user as mob)
|
||||
if(!emagged)
|
||||
@@ -651,7 +652,6 @@
|
||||
/mob/living/simple_animal/pet/corgi/Ian/borgi/death()
|
||||
..()
|
||||
visible_message("<b>[src]</b> blows apart!")
|
||||
new /obj/effect/decal/cleanable/blood/gibs/robot(src.loc)
|
||||
var/datum/effect/system/spark_spread/s = new /datum/effect/system/spark_spread
|
||||
s.set_up(3, 1, src)
|
||||
s.start()
|
||||
|
||||
@@ -23,6 +23,7 @@
|
||||
minbodytemp = 0
|
||||
speak_emote = list("states")
|
||||
gold_core_spawnable = CHEM_MOB_SPAWN_HOSTILE
|
||||
loot = list(/obj/effect/decal/cleanable/blood/gibs/robot)
|
||||
|
||||
/mob/living/simple_animal/hostile/hivebot/range
|
||||
name = "Hivebot"
|
||||
@@ -47,7 +48,6 @@
|
||||
/mob/living/simple_animal/hostile/hivebot/death()
|
||||
..()
|
||||
visible_message("<b>[src]</b> blows apart!")
|
||||
new /obj/effect/decal/cleanable/blood/gibs/robot(src.loc)
|
||||
var/datum/effect/system/spark_spread/s = new /datum/effect/system/spark_spread
|
||||
s.set_up(3, 1, src)
|
||||
s.start()
|
||||
|
||||
@@ -73,6 +73,8 @@
|
||||
aggro_vision_range = 9
|
||||
idle_vision_range = 2
|
||||
turns_per_move = 5
|
||||
loot = list(/obj/item/weapon/ore/diamond{layer = 4.1},
|
||||
/obj/item/weapon/ore/diamond{layer = 4.1})
|
||||
|
||||
/obj/item/projectile/temp/basilisk
|
||||
name = "freezing blast"
|
||||
@@ -100,14 +102,6 @@
|
||||
if(3.0)
|
||||
adjustBruteLoss(110)
|
||||
|
||||
/mob/living/simple_animal/hostile/asteroid/basilisk/death()
|
||||
if(stat != DEAD)
|
||||
var/counter
|
||||
for(counter=0, counter<2, counter++)
|
||||
var/obj/item/weapon/ore/diamond/D = new /obj/item/weapon/ore/diamond(src.loc)
|
||||
D.layer = 4.1
|
||||
..()
|
||||
|
||||
/mob/living/simple_animal/hostile/asteroid/goldgrub
|
||||
name = "goldgrub"
|
||||
desc = "A worm that grows fat from eating everything in its sight. Seems to enjoy precious metals and other shiny things, hence the name."
|
||||
@@ -239,6 +233,7 @@
|
||||
retreat_distance = 3
|
||||
minimum_distance = 3
|
||||
pass_flags = PASSTABLE
|
||||
loot = list(/obj/item/organ/internal/hivelord_core)
|
||||
|
||||
/mob/living/simple_animal/hostile/asteroid/hivelord/OpenFire(var/the_target)
|
||||
var/mob/living/simple_animal/hostile/asteroid/hivelordbrood/A = new /mob/living/simple_animal/hostile/asteroid/hivelordbrood(src.loc)
|
||||
@@ -250,11 +245,6 @@
|
||||
/mob/living/simple_animal/hostile/asteroid/hivelord/AttackingTarget()
|
||||
OpenFire()
|
||||
|
||||
/mob/living/simple_animal/hostile/asteroid/hivelord/death()
|
||||
if(stat != DEAD)
|
||||
new /obj/item/organ/internal/hivelord_core(src.loc)
|
||||
..()
|
||||
|
||||
/obj/item/organ/internal/hivelord_core
|
||||
name = "hivelord remains"
|
||||
desc = "All that remains of a hivelord, it seems to be what allows it to break pieces of itself off without being hurt... its healing properties will soon become inert if not used quickly. Try not to think about what you're eating."
|
||||
@@ -370,6 +360,7 @@
|
||||
idle_vision_range = 5
|
||||
anchored = 1 //Stays anchored until death as to be unpullable
|
||||
var/pre_attack = 0
|
||||
loot = list(/obj/item/asteroid/goliath_hide{layer = 4.1})
|
||||
|
||||
/mob/living/simple_animal/hostile/asteroid/goliath/process_ai()
|
||||
..()
|
||||
@@ -386,13 +377,6 @@
|
||||
anchored = 1
|
||||
..()
|
||||
|
||||
/mob/living/simple_animal/hostile/asteroid/goliath/death()
|
||||
anchored = 0
|
||||
if(stat != DEAD)
|
||||
var/obj/item/asteroid/goliath_hide/G = new /obj/item/asteroid/goliath_hide(src.loc)
|
||||
G.layer = 4.1
|
||||
..()
|
||||
|
||||
/mob/living/simple_animal/hostile/asteroid/goliath/OpenFire()
|
||||
var/tturf = get_turf(target)
|
||||
if(get_dist(src, target) <= 7)//Screen range check, so you can't get tentacle'd offscreen
|
||||
|
||||
@@ -22,9 +22,8 @@
|
||||
atmos_requirements = list("min_oxy" = 5, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 1, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0)
|
||||
unsuitable_atmos_damage = 15
|
||||
speak_emote = list("yarrs")
|
||||
var/corpse = /obj/effect/landmark/mobcorpse/pirate
|
||||
var/weapon1 = /obj/item/weapon/melee/energy/sword/pirate
|
||||
|
||||
loot = list(/obj/effect/landmark/mobcorpse/pirate,
|
||||
/obj/item/weapon/melee/energy/sword/pirate)
|
||||
faction = list("pirate")
|
||||
|
||||
/mob/living/simple_animal/hostile/pirate/ranged
|
||||
@@ -38,16 +37,12 @@
|
||||
retreat_distance = 5
|
||||
minimum_distance = 5
|
||||
projectiletype = /obj/item/projectile/beam
|
||||
corpse = /obj/effect/landmark/mobcorpse/pirate/ranged
|
||||
weapon1 = /obj/item/weapon/gun/energy/laser
|
||||
loot = list(/obj/effect/landmark/mobcorpse/pirate/ranged,
|
||||
/obj/item/weapon/gun/energy/laser)
|
||||
|
||||
|
||||
/mob/living/simple_animal/hostile/pirate/death()
|
||||
..()
|
||||
if(corpse)
|
||||
new corpse (src.loc)
|
||||
if(weapon1)
|
||||
new weapon1 (src.loc)
|
||||
ghostize()
|
||||
qdel(src)
|
||||
return
|
||||
@@ -150,8 +150,8 @@
|
||||
walk(src,0)
|
||||
|
||||
/mob/living/simple_animal/hostile/retaliate/malf_drone/death()
|
||||
src.visible_message("\blue \icon[src] [src] suddenly breaks apart.")
|
||||
..()
|
||||
visible_message("\blue \icon[src] [src] suddenly breaks apart.")
|
||||
qdel(src)
|
||||
|
||||
/mob/living/simple_animal/hostile/retaliate/malf_drone/Destroy() //Seriously, what the actual hell.
|
||||
|
||||
@@ -45,6 +45,7 @@
|
||||
minbodytemp = 0
|
||||
|
||||
faction = list("undead") // did I mention ghost
|
||||
loot = list(/obj/item/weapon/reagent_containers/food/snacks/ectoplasm)
|
||||
|
||||
/mob/living/simple_animal/hostile/retaliate/ghost/Process_Spacemove(var/check_drift = 0)
|
||||
return 1
|
||||
@@ -61,7 +62,7 @@
|
||||
invisibility = pick(0,60,60,invisibility)
|
||||
..()
|
||||
/mob/living/simple_animal/hostile/retaliate/ghost/death()
|
||||
new /obj/item/weapon/reagent_containers/food/snacks/ectoplasm(loc)
|
||||
..()
|
||||
qdel(src)
|
||||
return
|
||||
|
||||
@@ -90,9 +91,10 @@
|
||||
minbodytemp = 0
|
||||
|
||||
faction = list("undead")
|
||||
loot = list(/obj/effect/decal/remains/human)
|
||||
|
||||
/mob/living/simple_animal/hostile/retaliate/skeleton/death()
|
||||
new /obj/effect/decal/remains/human(loc)
|
||||
..()
|
||||
qdel(src)
|
||||
return
|
||||
|
||||
@@ -121,8 +123,9 @@
|
||||
minbodytemp = 0
|
||||
|
||||
faction = list("undead")
|
||||
loot = list(/obj/effect/decal/cleanable/blood/gibs)
|
||||
|
||||
/mob/living/simple_animal/hostile/retaliate/zombie/death()
|
||||
new /obj/effect/decal/cleanable/blood/gibs(loc)
|
||||
..()
|
||||
qdel(src)
|
||||
return
|
||||
@@ -19,35 +19,30 @@
|
||||
attacktext = "punches"
|
||||
attack_sound = 'sound/weapons/punch1.ogg'
|
||||
a_intent = I_HARM
|
||||
var/corpse = /obj/effect/landmark/mobcorpse/russian
|
||||
var/weapon1 = /obj/item/weapon/kitchen/knife
|
||||
unsuitable_atmos_damage = 15
|
||||
faction = list("russian")
|
||||
status_flags = CANPUSH
|
||||
loot = list(/obj/effect/landmark/mobcorpse/russian,
|
||||
/obj/item/weapon/kitchen/knife)
|
||||
|
||||
|
||||
/mob/living/simple_animal/hostile/russian/ranged
|
||||
icon_state = "russianranged"
|
||||
icon_living = "russianranged"
|
||||
corpse = /obj/effect/landmark/mobcorpse/russian/ranged
|
||||
weapon1 = /obj/item/weapon/gun/projectile/revolver/mateba
|
||||
ranged = 1
|
||||
retreat_distance = 5
|
||||
minimum_distance = 5
|
||||
projectiletype = /obj/item/projectile/bullet
|
||||
projectilesound = 'sound/weapons/Gunshot.ogg'
|
||||
casingtype = /obj/item/ammo_casing/a357
|
||||
loot = list(/obj/effect/landmark/mobcorpse/russian/ranged, /obj/item/weapon/gun/projectile/revolver/mateba)
|
||||
|
||||
/mob/living/simple_animal/hostile/russian/ranged/New()
|
||||
if(prob(50) && ispath(weapon1,/obj/item/weapon/gun/projectile/revolver/mateba)) //to preserve varedits
|
||||
weapon1 = /obj/item/weapon/gun/projectile/shotgun/boltaction
|
||||
casingtype = /obj/item/ammo_casing/a762
|
||||
/mob/living/simple_animal/hostile/russian/ranged/mosin
|
||||
loot = list(/obj/effect/landmark/mobcorpse/russian/ranged,
|
||||
/obj/item/weapon/gun/projectile/shotgun/boltaction)
|
||||
casingtype = /obj/item/ammo_casing/a762
|
||||
|
||||
/mob/living/simple_animal/hostile/russian/death()
|
||||
..()
|
||||
if(corpse)
|
||||
new corpse (src.loc)
|
||||
if(weapon1)
|
||||
new weapon1 (src.loc)
|
||||
qdel(src)
|
||||
return
|
||||
@@ -19,22 +19,14 @@
|
||||
attacktext = "punches"
|
||||
attack_sound = 'sound/weapons/punch1.ogg'
|
||||
a_intent = I_HARM
|
||||
var/corpse = /obj/effect/landmark/mobcorpse/syndicatesoldier
|
||||
var/weapon1
|
||||
var/weapon2
|
||||
unsuitable_atmos_damage = 15
|
||||
faction = list("syndicate")
|
||||
check_friendly_fire = 1
|
||||
status_flags = CANPUSH
|
||||
loot = list(/obj/effect/landmark/mobcorpse/syndicatesoldier)
|
||||
|
||||
/mob/living/simple_animal/hostile/syndicate/death()
|
||||
..()
|
||||
if(corpse)
|
||||
new corpse (src.loc)
|
||||
if(weapon1)
|
||||
new weapon1 (src.loc)
|
||||
if(weapon2)
|
||||
new weapon2 (src.loc)
|
||||
qdel(src)
|
||||
return
|
||||
|
||||
@@ -45,11 +37,10 @@
|
||||
melee_damage_upper = 25
|
||||
icon_state = "syndicatemelee"
|
||||
icon_living = "syndicatemelee"
|
||||
weapon1 = /obj/item/weapon/melee/energy/sword/saber/red
|
||||
weapon2 = /obj/item/weapon/shield/energy
|
||||
attacktext = "slashes"
|
||||
attack_sound = 'sound/weapons/bladeslice.ogg'
|
||||
status_flags = 0
|
||||
loot = list(/obj/effect/landmark/mobcorpse/syndicatesoldier, /obj/item/weapon/melee/energy/sword/saber/red, /obj/item/weapon/shield/energy)
|
||||
|
||||
/mob/living/simple_animal/hostile/syndicate/melee/attackby(var/obj/item/O as obj, var/mob/user as mob, params)
|
||||
if(O.force)
|
||||
@@ -83,8 +74,8 @@
|
||||
icon_state = "syndicatemeleespace"
|
||||
icon_living = "syndicatemeleespace"
|
||||
name = "Syndicate Commando"
|
||||
corpse = /obj/effect/landmark/mobcorpse/syndicatecommando
|
||||
speed = 1
|
||||
loot = list(/obj/effect/landmark/mobcorpse/syndicatecommando, /obj/item/weapon/melee/energy/sword/saber/red, /obj/item/weapon/shield/energy)
|
||||
|
||||
/mob/living/simple_animal/hostile/syndicate/melee/space/Process_Spacemove(var/movement_dir = 0)
|
||||
return
|
||||
@@ -99,8 +90,7 @@
|
||||
casingtype = /obj/item/ammo_casing/c45
|
||||
projectilesound = 'sound/weapons/Gunshot_smg.ogg'
|
||||
projectiletype = /obj/item/projectile/bullet/midbullet2
|
||||
|
||||
weapon1 = /obj/item/weapon/gun/projectile/automatic/c20r
|
||||
loot = list(/obj/effect/landmark/mobcorpse/syndicatesoldier, /obj/item/weapon/gun/projectile/automatic/c20r)
|
||||
|
||||
/mob/living/simple_animal/hostile/syndicate/ranged/space
|
||||
icon_state = "syndicaterangedpsace"
|
||||
@@ -108,8 +98,9 @@
|
||||
name = "Syndicate Commando"
|
||||
atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0)
|
||||
minbodytemp = 0
|
||||
corpse = /obj/effect/landmark/mobcorpse/syndicatecommando
|
||||
speed = 1
|
||||
loot = list(/obj/effect/landmark/mobcorpse/syndicatecommando, /obj/item/weapon/gun/projectile/automatic/c20r)
|
||||
|
||||
|
||||
/mob/living/simple_animal/hostile/syndicate/ranged/space/Process_Spacemove(var/movement_dir = 0)
|
||||
return
|
||||
|
||||
@@ -28,6 +28,7 @@
|
||||
minbodytemp = 0
|
||||
|
||||
faction = list("hostile", "winter")
|
||||
loot = list(/obj/item/stack/sheet/wood)
|
||||
gold_core_spawnable = CHEM_MOB_SPAWN_HOSTILE
|
||||
|
||||
/mob/living/simple_animal/hostile/tree/FindTarget()
|
||||
@@ -46,5 +47,4 @@
|
||||
/mob/living/simple_animal/hostile/tree/death()
|
||||
..()
|
||||
visible_message("\red <b>[src]</b> is hacked into pieces!")
|
||||
new /obj/item/stack/sheet/wood(loc)
|
||||
qdel(src)
|
||||
@@ -20,15 +20,12 @@
|
||||
melee_damage_lower = 3
|
||||
melee_damage_upper = 7
|
||||
|
||||
var/weapon1
|
||||
|
||||
/mob/living/simple_animal/hostile/winter/snowman
|
||||
name = "snowman"
|
||||
desc = "A very angry snowman. Doesn't look like it wants to play around..."
|
||||
icon_state = "snowman"
|
||||
icon_living = "snowman"
|
||||
icon_dead = "snowman-dead"
|
||||
weapon1 = /obj/item/weapon/melee/candy_sword
|
||||
|
||||
bodytemperature = 73.0 //it's made of snow and hatred, so it's pretty cold.
|
||||
maxbodytemp = 280.15 //at roughly 7 C, these will start melting (dying) from the warmth. Mind over matter or something.
|
||||
@@ -37,10 +34,10 @@
|
||||
|
||||
|
||||
/mob/living/simple_animal/hostile/winter/snowman/death()
|
||||
if(weapon1 && prob(50)) //50% chance to drop weapon on death, if it has one to drop
|
||||
new weapon1(get_turf(src))
|
||||
if(prob(50)) //50% chance to drop weapon on death, if it has one to drop
|
||||
loot = list(/obj/item/weapon/melee/candy_sword)
|
||||
if(prob(20)) //chance to become a stationary snowman structure instead of a corpse
|
||||
new /obj/structure/snowman(get_turf(src))
|
||||
loot.Add(/obj/structure/snowman)
|
||||
visible_message("<span class='notice'>The [src.name] shimmers as its animating magic fades away!</span>")
|
||||
..() //this is just to make sure it gets properly killed before we qdel it
|
||||
qdel(src)
|
||||
@@ -52,7 +49,6 @@
|
||||
retreat_distance = 5
|
||||
minimum_distance = 5
|
||||
projectiletype = /obj/item/projectile/snowball
|
||||
weapon1 = null
|
||||
|
||||
/mob/living/simple_animal/hostile/winter/reindeer
|
||||
name = "reindeer"
|
||||
|
||||
@@ -24,11 +24,11 @@
|
||||
status_flags = 0
|
||||
faction = list("cult")
|
||||
status_flags = CANPUSH
|
||||
loot = list(/obj/item/weapon/reagent_containers/food/snacks/ectoplasm)
|
||||
|
||||
|
||||
death()
|
||||
..()
|
||||
new /obj/item/weapon/reagent_containers/food/snacks/ectoplasm (src.loc)
|
||||
for(var/mob/M in viewers(src, null))
|
||||
if((M.client && !( M.blinded )))
|
||||
M.show_message("\red [src] lets out a contented sigh as their form unwinds. ")
|
||||
|
||||
@@ -71,6 +71,7 @@
|
||||
|
||||
var/master_commander = null //holding var for determining who own/controls a sentient simple animal (for sentience potions).
|
||||
var/sentience_type = SENTIENCE_ORGANIC // Sentience type, for slime potions
|
||||
var/list/loot = list() //list of things spawned at mob's loc when it dies
|
||||
|
||||
|
||||
/mob/living/simple_animal/New()
|
||||
@@ -467,6 +468,9 @@
|
||||
stat(null, "Health: [round((health / maxHealth) * 100)]%")
|
||||
|
||||
/mob/living/simple_animal/death(gibbed)
|
||||
if(loot.len)
|
||||
for(var/i in loot)
|
||||
new i(loc)
|
||||
health = 0
|
||||
icon_state = icon_dead
|
||||
stat = DEAD
|
||||
|
||||
@@ -646,11 +646,14 @@ datum/reagent/strange_reagent
|
||||
metabolization_rate = 0.2
|
||||
|
||||
datum/reagent/strange_reagent/reaction_mob(var/mob/living/M as mob, var/method=TOUCH, var/volume)
|
||||
if(istype(M, /mob/living/simple_animal))
|
||||
if(isanimal(M))
|
||||
if(method == TOUCH)
|
||||
if(M.stat == DEAD)
|
||||
M.revive()
|
||||
M.visible_message("<span class='warning'>[M] seems to rise from the dead!</span>")
|
||||
var/mob/living/simple_animal/SM = M
|
||||
if(SM.stat == DEAD)
|
||||
SM.revive()
|
||||
SM.loot.Cut() //no abusing strange reagent for unlimited farming of resources
|
||||
SM.visible_message("<span class='warning'>[M] seems to rise from the dead!</span>")
|
||||
|
||||
if(istype(M, /mob/living/carbon))
|
||||
if(method == INGEST)
|
||||
if(M.stat == DEAD)
|
||||
|
||||
Reference in New Issue
Block a user