Merge pull request #1274 from Erthilo/master

Randomises blob weakness/strengths + removal of customs by request + changelog!
This commit is contained in:
SkyMarshal
2012-06-09 11:58:29 -07:00
7 changed files with 164 additions and 18 deletions
+3
View File
@@ -1,3 +1,6 @@
/obj/effect/decal
pass_flags = PASSBLOB
/obj/effect/decal/ash
name = "ashes"
desc = "Ashes to ashes, dust to dust, and into space."
+116 -12
View File
@@ -11,10 +11,14 @@
anchored = 1
var/active = 1
var/health = 30
var/brute_resist = 4
var/fire_resist = 1
var/maxhealth = 60
var/brute_resist = 3
var/fire_resist = 3
var/blobtype = "Blob"
var/blobdebug = 0
var/list/blob_attributes = list("fire","brute","cold","elec","acid")
var/weakness = null //What works best
var/strength = null //What doesn't/heals them
/*Types
var/Blob
var/Node
@@ -26,9 +30,16 @@
var/steps_since_action = 1
New(loc, var/h = 30)
New(loc, var/h = 30, var/w = "fire", var/s = "brute")
blobs += src
src.health = h
src.weakness = w
src.strength = s
if(w)
if(w == "fire")
src.fire_resist = 1
if(w == "brute")
src.brute_resist = 1
src.dir = pick(1,2,4,8)
src.update()
..(loc)
@@ -77,6 +88,16 @@
blobtype = "Core"
blob_cores += src
processing_objects.Add(src)
var/list/a = blob_attributes
weakness = pick(a)
a -= weakness
strength = pick(a)
var/w = src.weakness
if(w)
if(w == "fire")
src.fire_resist = 1
if(w == "brute")
src.brute_resist = 1
return 1
//Nodeblob
if((blobdebug == 2))
@@ -132,7 +153,7 @@
var/turf/T = get_step(src, dirn)
var/obj/effect/blob/B = (locate(/obj/effect/blob) in T)
if(!B)
expand(T)//No blob here so try and expand
expand(T, src.weakness, src.strength)//No blob here so try and expand
return
B.Pulse((pulse+1),get_dir(src.loc,T))
return
@@ -182,10 +203,29 @@
temperature_expose(datum/gas_mixture/air, temperature, volume)
if(temperature > T0C+200)
health -= 0.01 * temperature
if(weakness == "fire")
health -= 0.01 * temperature
if(strength == "fire")
health += 0.01 * temperature
else
health -= 0.005 * temperature
update()
if(temperature < T0C+20) //Because cold is rather hard to change, it happens at a relatively high temperature
if(weakness == "cold")
if(temperature >= T0C)
health -= 0.1 * (20-temperature)
else
health -= 0.1 * abs(temperature)
update()
if(strength == "cold") //Don't want blobs on space to be too hard to kill
if(temperature >= T0C)
health += 0.01 * (20-temperature)
else
health += 0.01 * abs(temperature)
update()
proc/expand(var/turf/T = null)
proc/expand(var/turf/T = null, var/weakness, var/strength)
if(!prob(health)) return//TODO: Change this to prob(health + o2 mols or such)
if(!T)
var/list/dirs = list(1,2,4,8)
@@ -198,7 +238,7 @@
continue
else break
if(T)
var/obj/effect/blob/B = new /obj/effect/blob(src.loc, min(src.health, 30))
var/obj/effect/blob/B = new /obj/effect/blob(src.loc, min(src.health, 30), weakness, strength)
if(T.Enter(B,src))
B.loc = T
else
@@ -221,6 +261,8 @@
proc/update()//Needs to be updated with the types
if(health > maxhealth)
health = maxhealth
if(health <= 0)
playsound(src.loc, 'splat.ogg', 50, 1)
del(src)
@@ -236,8 +278,33 @@
bullet_act(var/obj/item/projectile/Proj)
if(!Proj) return
src.health -= Proj.damage
update()
var/damage = 0
if(istype(Proj, /obj/item/projectile/energy/electrode))
damage = Proj.damage
if(src.weakness == "elec")
damage += 20
src.visible_message("\red \The [src] disintegrates slightly from \the [Proj]!")
if(src.strength == "elec")
damage -= 10
src.visible_message("\red \The [src] absorbs \the [Proj]!")
else if(istype(Proj, /obj/item/projectile/beam))
damage = Proj.damage
if(src.weakness == "fire")
damage = damage*2
if(src.strength == "fire")
damage = -(damage*0.5)
src.visible_message("\red \The [src] absorbs \the [Proj]!")
else if(istype(Proj, /obj/item/projectile/bullet))
damage = Proj.damage
if(src.weakness == "brute")
damage = damage*2
if(src.strength == "brute")
damage = damage*0.5
src.visible_message("\red \The [src] absorbs \the [Proj]!")
else
damage = Proj.damage
src.health -= damage
src.update()
return 0
@@ -248,11 +315,35 @@
switch(W.damtype)
if("fire")
damage = (W.force / max(src.fire_resist,1))
if(src.weakness == "fire")
damage = damage*1.25
if(src.strength == "fire")
damage = -(damage*0.5)
src.visible_message("\red <B>The [src.name] rebuilds itself from the heat!")
if(istype(W, /obj/item/weapon/weldingtool))
playsound(src.loc, 'Welder.ogg', 100, 1)
if("brute")
damage = (W.force / max(src.brute_resist,1))
if(istype(W, /obj/item/weapon/melee/baton))
var/obj/item/weapon/melee/baton/T = W
if(T.status == 1 && T.charges > 0) //Copied over from stun baton code
playsound(src.loc, 'Egloves.ogg', 50, 1, -1)
if(isrobot(user))
var/mob/living/silicon/robot/R = user
R.cell.charge -= 20
else
T.charges--
if(src.weakness == "elec")
damage = damage*2
src.visible_message("\red <B>The [src.name] disintegrates from the electricity!")
if(src.strength == "elec")
damage = -(damage*0.5)
src.visible_message("\red <B>The [src.name] absorbs the electricity!")
if(src.weakness == "brute")
damage = damage*1.25
if(src.strength == "brute")
damage = damage*0.5
src.visible_message("\red <B>The [src.name] rebounds the hit!")
src.health -= damage
src.update()
return
@@ -278,8 +369,10 @@
icon_state = "blobidle0"
New(loc, var/h = 10)
New(loc, var/h = 10, var/w = "fire", var/s = "brute")
src.health = h
src.weakness = w
src.strength = s
src.dir = pick(1,2,4,8)
src.update_idle()
@@ -298,7 +391,7 @@
Del() //idle blob that spawns a normal blob when killed.
var/obj/effect/blob/B = new /obj/effect/blob( src.loc )
var/obj/effect/blob/B = new /obj/effect/blob(src.loc, src.weakness, src.strength)
spawn(30)
B.Life()
..()
@@ -310,6 +403,17 @@
spawn()
src.blobdebug = 1
src.Life()
var/list/a = blob_attributes
weakness = pick(a)
a -= weakness
strength = pick(a)
var/w = src.weakness
if(w)
if(w == "fire")
src.fire_resist = 1
if(w == "brute")
src.brute_resist = 1
/obj/effect/blob/node/New()
..()
+1
View File
@@ -393,6 +393,7 @@ steam.start() -- spawns the effect
opacity = 1
anchored = 0.0
mouse_opacity = 0
pass_flags = PASSBLOB
var/amount = 6.0
var/divisor = 1
@@ -734,6 +734,20 @@ datum
M.take_organ_damage(min(15, volume * 2))
reaction_obj(var/obj/O, var/volume)
if(istype(O, /obj/effect/blob))
var/obj/effect/blob/B = O
if(B.weakness == "acid")
B.health -= rand(volume*2,volume*3)
B.update()
O.visible_message("\red \The [O] sizzles violently!")
else if(B.strength == "acid")
B.health += rand(volume*0.5,volume*1)
B.update()
O.visible_message("\red <B>\The [O] strengthens!</B>")
else
B.health -= rand(volume*1,volume*1.5)
O.visible_message("\red \The [O] dissolves slightly.")
B.update()
if((istype(O,/obj/item) || istype(O,/obj/effect/glowshroom)) && prob(10))
if(!O.unacidable)
var/obj/effect/decal/cleanable/molten_item/I = new/obj/effect/decal/cleanable/molten_item(O.loc)
@@ -801,6 +815,20 @@ datum
M.take_organ_damage(min(15, volume * 4))
reaction_obj(var/obj/O, var/volume)
if(istype(O, /obj/effect/blob))
var/obj/effect/blob/B = O
if(B.weakness == "acid")
B.health -= rand(volume*5,volume*6)
B.update()
O.visible_message("\red \The [O] sizzles violently!")
if(B.strength == "acid")
B.health += rand(volume*2,volume*3)
B.update()
O.visible_message("\red <B>\The [O] strengthens!</B>")
else
B.health -= rand(volume*2,volume*2.5)
O.visible_message("\red \The [O] dissolves slightly.")
B.update()
if((istype(O,/obj/item) || istype(O,/obj/effect/glowshroom)))
if(!O.unacidable)
var/obj/effect/decal/cleanable/molten_item/I = new/obj/effect/decal/cleanable/molten_item(O.loc)
+6 -3
View File
@@ -167,13 +167,15 @@
icon_state = "serithi_artalis_1"
//////////// Hats ////////////
//Removed by request
/*
/obj/item/clothing/head/helmet/hardhat/fluff/greg_anderson_1 //deusdactyl: Greg Anderson
name = "old hard hat"
desc = "An old dented hard hat with the nametag \"Anderson\". It seems to be backwards."
icon_state = "hardhat0_dblue" //Already an in-game sprite
item_state = "hardhat0_dblue"
color = "dblue"
*/
/obj/item/clothing/head/secsoft/fluff/swatcap //deusdactyl: James Girard
name = "\improper SWAT hat"
@@ -287,7 +289,8 @@
//////////// Sets ////////////
////// CDC //deusdactyl: Roger Wiles
//Removed by request.
/*
/obj/item/clothing/under/rank/virologist/fluff/cdc_jumpsuit
name = "\improper CDC jumpsuit"
desc = "A modified standard-issue CDC jumpsuit made of a special fiber that gives special protection against biohazards. It has a biohazard symbol sewn into the back."
@@ -300,7 +303,7 @@
desc = "A standard-issue CDC labcoat that protects against minor chemical spills. It has the name \"Wiles\" sewn on to the breast pocket."
icon = 'custom_items.dmi'
icon_state = "labcoat_cdc_open"
*/
////// Short Sleeve Medical Outfit //erthilo: Farah Lants
/obj/item/clothing/under/rank/medical/fluff/short
-2
View File
@@ -6,8 +6,6 @@ chinsky: Summer Springfield: /obj/item/weapon/camera_test/fluff/orange
compactninja: Ysyr Rylias: /obj/item/weapon/reagent_containers/food/drinks/dry_ramen, /obj/item/weapon/reagent_containers/food/drinks/dry_ramen, /obj/item/weapon/reagent_containers/food/drinks/dry_ramen, /obj/item/weapon/reagent_containers/food/drinks/dry_ramen
desiderium: Momiji Inubashiri: /obj/item/clothing/under/fluff/olddressuniform
desiderium: Rook Maudlin: /obj/item/clothing/suit/storage/det_suit/fluff/retpolcoat, /obj/item/clothing/head/det_hat/fluff/retpolcap, /obj/item/clothing/under/det/fluff/retpoluniform
deusdactyl: Greg Anderson: /obj/item/clothing/head/helmet/hardhat/fluff/greg_anderson_1
deusdactyl: Roger Wiles: /obj/item/clothing/under/rank/virologist/fluff/cdc_jumpsuit, /obj/item/clothing/suit/storage/labcoat/fluff/cdc_labcoat
deusdactyl: James Girard: /obj/item/clothing/head/secsoft/fluff/swatcap
eternal248: Maximilian Haynes: /obj/item/weapon/paper/certificate
fastler: Fastler Greay: /obj/item/weapon/card/id/fluff/lifetime
+10 -1
View File
@@ -41,7 +41,7 @@ Header Section
<tr>
<td valign='top'>
<font size='2'><b>Code:</b> Abi79, Aryn, Cael_Aislinn, Chinsky, cib, CompactNinja, DopeGhoti, Erthilo, Hawk_v3, Head, Ispil, Lexusjjss, Melonstorm, Miniature, Mloc, SkyMarshal, Spectre, Strumpetplaya, Sunfall, Tastyfish, Uristqwerty<br></font>
<font size='2'><b>Sprites:</b> Apple_Master, Arcalane, Chinsky, CompactNinja, Deus Dactyl, Erthilo, Flashkirby, Miniature, Xenone<br></font>
<font size='2'><b>Sprites:</b> Apple_Master, Arcalane, Chinsky, CompactNinja, Deus Dactyl, Erthilo, Flashkirby, Miniature, Searif, Xenone<br></font>
<font size='2'><b>Sounds:</b> Aryn<br></font>
<font size='2'><b>Thanks To:</b> /tg/ station, Goonstation, Animus Station, Daedalus, and original Spacestation 13 devs. Skibiliano for the IRC bot.</font>
</td>
@@ -57,6 +57,15 @@ Stuff which is in development and not yet visible to players or just code relate
should be listed in the changelog upon commit though. Thanks. -->
<!-- To take advantage of the pretty new format (well it was new when I wrote this anyway), open the "add-to-changelog.html" file in any browser and add the stuff and then generate the html code and paste it here -->
<div class="commit sansserif">
<h2 class="date">09 June 2012</h2>
<h3 class="author">Erthilo updated:</h3>
<ul class="changes bgimages16">
<li class="rscadd">Blobs have evolved! Their weaknesses/strengths are now randomised. Experimentation ahoy!</li>
<li class="bugfix">Meteors have been fixed, and will therefore appear again. Meteor mode works too.</li>
</ul>
</div>
<div class="commit sansserif">
<h2 class="date">07 June 2012</h2>
<h3 class="author">SkyMarshal updated:</h3>