Force LF line endings with gitattributes and convert repo (#52266)

Co-authored-by: Aleksej Komarov <stylemistake@gmail.com>
This commit is contained in:
jdawg1290
2020-07-16 03:02:40 +03:00
committed by GitHub
co-authored by Aleksej Komarov
parent 39e8bd721f
commit 62676e72a8
1133 changed files with 266492 additions and 266454 deletions
@@ -1,67 +1,67 @@
#define CELSIUS_TO_KELVIN(T_K) ((T_K) + T0C)
#define OPTIMAL_TEMP_K_PLA_BURN_SCALE(PRESSURE_P,PRESSURE_O,TEMP_O) (((PRESSURE_P) * GLOB.meta_gas_info[/datum/gas/plasma][META_GAS_SPECIFIC_HEAT]) / (((PRESSURE_P) * GLOB.meta_gas_info[/datum/gas/plasma][META_GAS_SPECIFIC_HEAT] + (PRESSURE_O) * GLOB.meta_gas_info[/datum/gas/oxygen][META_GAS_SPECIFIC_HEAT]) / PLASMA_UPPER_TEMPERATURE - (PRESSURE_O) * GLOB.meta_gas_info[/datum/gas/oxygen][META_GAS_SPECIFIC_HEAT] / CELSIUS_TO_KELVIN(TEMP_O)))
#define OPTIMAL_TEMP_K_PLA_BURN_RATIO(PRESSURE_P,PRESSURE_O,TEMP_O) (CELSIUS_TO_KELVIN(TEMP_O) * PLASMA_OXYGEN_FULLBURN * (PRESSURE_P) / (PRESSURE_O))
/obj/effect/spawner/newbomb
name = "bomb"
icon = 'icons/mob/screen_gen.dmi'
icon_state = "x"
var/temp_p = 1500
var/temp_o = 1000 // tank temperatures
var/pressure_p = 10 * ONE_ATMOSPHERE
var/pressure_o = 10 * ONE_ATMOSPHERE //tank pressures
var/assembly_type
/obj/effect/spawner/newbomb/Initialize()
. = ..()
var/obj/item/transfer_valve/V = new(src.loc)
var/obj/item/tank/internals/plasma/PT = new(V)
var/obj/item/tank/internals/oxygen/OT = new(V)
PT.air_contents.assert_gas(/datum/gas/plasma)
PT.air_contents.gases[/datum/gas/plasma][MOLES] = pressure_p*PT.volume/(R_IDEAL_GAS_EQUATION*CELSIUS_TO_KELVIN(temp_p))
PT.air_contents.temperature = CELSIUS_TO_KELVIN(temp_p)
OT.air_contents.assert_gas(/datum/gas/oxygen)
OT.air_contents.gases[/datum/gas/oxygen][MOLES] = pressure_o*OT.volume/(R_IDEAL_GAS_EQUATION*CELSIUS_TO_KELVIN(temp_o))
OT.air_contents.temperature = CELSIUS_TO_KELVIN(temp_o)
V.tank_one = PT
V.tank_two = OT
PT.master = V
OT.master = V
if(assembly_type)
var/obj/item/assembly/A = new assembly_type(V)
V.attached_device = A
A.holder = V
V.update_icon()
return INITIALIZE_HINT_QDEL
/obj/effect/spawner/newbomb/timer/syndicate/Initialize()
temp_p = (OPTIMAL_TEMP_K_PLA_BURN_SCALE(pressure_p, pressure_o, temp_o)/2 + OPTIMAL_TEMP_K_PLA_BURN_RATIO(pressure_p, pressure_o, temp_o)/2) - T0C
. = ..()
/obj/effect/spawner/newbomb/timer
assembly_type = /obj/item/assembly/timer
/obj/effect/spawner/newbomb/timer/syndicate
pressure_o = TANK_LEAK_PRESSURE - 1
temp_o = 20
pressure_p = TANK_LEAK_PRESSURE - 1
/obj/effect/spawner/newbomb/proximity
assembly_type = /obj/item/assembly/prox_sensor
/obj/effect/spawner/newbomb/radio
assembly_type = /obj/item/assembly/signaler
#undef CELSIUS_TO_KELVIN
#undef OPTIMAL_TEMP_K_PLA_BURN_SCALE
#undef OPTIMAL_TEMP_K_PLA_BURN_RATIO
#define CELSIUS_TO_KELVIN(T_K) ((T_K) + T0C)
#define OPTIMAL_TEMP_K_PLA_BURN_SCALE(PRESSURE_P,PRESSURE_O,TEMP_O) (((PRESSURE_P) * GLOB.meta_gas_info[/datum/gas/plasma][META_GAS_SPECIFIC_HEAT]) / (((PRESSURE_P) * GLOB.meta_gas_info[/datum/gas/plasma][META_GAS_SPECIFIC_HEAT] + (PRESSURE_O) * GLOB.meta_gas_info[/datum/gas/oxygen][META_GAS_SPECIFIC_HEAT]) / PLASMA_UPPER_TEMPERATURE - (PRESSURE_O) * GLOB.meta_gas_info[/datum/gas/oxygen][META_GAS_SPECIFIC_HEAT] / CELSIUS_TO_KELVIN(TEMP_O)))
#define OPTIMAL_TEMP_K_PLA_BURN_RATIO(PRESSURE_P,PRESSURE_O,TEMP_O) (CELSIUS_TO_KELVIN(TEMP_O) * PLASMA_OXYGEN_FULLBURN * (PRESSURE_P) / (PRESSURE_O))
/obj/effect/spawner/newbomb
name = "bomb"
icon = 'icons/mob/screen_gen.dmi'
icon_state = "x"
var/temp_p = 1500
var/temp_o = 1000 // tank temperatures
var/pressure_p = 10 * ONE_ATMOSPHERE
var/pressure_o = 10 * ONE_ATMOSPHERE //tank pressures
var/assembly_type
/obj/effect/spawner/newbomb/Initialize()
. = ..()
var/obj/item/transfer_valve/V = new(src.loc)
var/obj/item/tank/internals/plasma/PT = new(V)
var/obj/item/tank/internals/oxygen/OT = new(V)
PT.air_contents.assert_gas(/datum/gas/plasma)
PT.air_contents.gases[/datum/gas/plasma][MOLES] = pressure_p*PT.volume/(R_IDEAL_GAS_EQUATION*CELSIUS_TO_KELVIN(temp_p))
PT.air_contents.temperature = CELSIUS_TO_KELVIN(temp_p)
OT.air_contents.assert_gas(/datum/gas/oxygen)
OT.air_contents.gases[/datum/gas/oxygen][MOLES] = pressure_o*OT.volume/(R_IDEAL_GAS_EQUATION*CELSIUS_TO_KELVIN(temp_o))
OT.air_contents.temperature = CELSIUS_TO_KELVIN(temp_o)
V.tank_one = PT
V.tank_two = OT
PT.master = V
OT.master = V
if(assembly_type)
var/obj/item/assembly/A = new assembly_type(V)
V.attached_device = A
A.holder = V
V.update_icon()
return INITIALIZE_HINT_QDEL
/obj/effect/spawner/newbomb/timer/syndicate/Initialize()
temp_p = (OPTIMAL_TEMP_K_PLA_BURN_SCALE(pressure_p, pressure_o, temp_o)/2 + OPTIMAL_TEMP_K_PLA_BURN_RATIO(pressure_p, pressure_o, temp_o)/2) - T0C
. = ..()
/obj/effect/spawner/newbomb/timer
assembly_type = /obj/item/assembly/timer
/obj/effect/spawner/newbomb/timer/syndicate
pressure_o = TANK_LEAK_PRESSURE - 1
temp_o = 20
pressure_p = TANK_LEAK_PRESSURE - 1
/obj/effect/spawner/newbomb/proximity
assembly_type = /obj/item/assembly/prox_sensor
/obj/effect/spawner/newbomb/radio
assembly_type = /obj/item/assembly/signaler
#undef CELSIUS_TO_KELVIN
#undef OPTIMAL_TEMP_K_PLA_BURN_SCALE
#undef OPTIMAL_TEMP_K_PLA_BURN_RATIO
+153 -153
View File
@@ -1,153 +1,153 @@
/obj/effect/gibspawner
icon_state = "gibspawner"// For the map editor
var/sparks = 0 //whether sparks spread
var/virusProb = 20 //the chance for viruses to spread on the gibs
var/gib_mob_type //generate a fake mob to transfer DNA from if we weren't passed a mob.
var/sound_to_play = 'sound/effects/blobattack.ogg'
var/sound_vol = 60
var/list/gibtypes = list() //typepaths of the gib decals to spawn
var/list/gibamounts = list() //amount to spawn for each gib decal type we'll spawn.
var/list/gibdirections = list() //of lists of possible directions to spread each gib decal type towards.
/obj/effect/gibspawner/Initialize(mapload, mob/living/source_mob, list/datum/disease/diseases)
. = ..()
if(gibtypes.len != gibamounts.len)
stack_trace("Gib list amount length mismatch!")
return
if(gibamounts.len != gibdirections.len)
stack_trace("Gib list dir length mismatch!")
return
var/obj/effect/decal/cleanable/blood/gibs/gib = null
if(sound_to_play && isnum(sound_vol))
playsound(src, sound_to_play, sound_vol, TRUE)
if(sparks)
var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread
s.set_up(2, 1, loc)
s.start()
var/list/dna_to_add //find the dna to pass to the spawned gibs. do note this can be null if the mob doesn't have blood. add_blood_DNA() has built in null handling.
if(source_mob)
dna_to_add = source_mob.get_blood_dna_list() //ez pz
else if(gib_mob_type)
var/mob/living/temp_mob = new gib_mob_type(src) //generate a fake mob so that we pull the right type of DNA for the gibs.
dna_to_add = temp_mob.get_blood_dna_list()
qdel(temp_mob)
else
dna_to_add = list("Non-human DNA" = random_blood_type()) //else, generate a random bloodtype for it.
for(var/i = 1, i<= gibtypes.len, i++)
if(gibamounts[i])
for(var/j = 1, j<= gibamounts[i], j++)
var/gibType = gibtypes[i]
gib = new gibType(loc, diseases)
gib.add_blood_DNA(dna_to_add)
var/list/directions = gibdirections[i]
if(isturf(loc))
if(directions.len)
gib.streak(directions)
return INITIALIZE_HINT_QDEL
/obj/effect/gibspawner/generic
gibtypes = list(/obj/effect/decal/cleanable/blood/gibs, /obj/effect/decal/cleanable/blood/gibs, /obj/effect/decal/cleanable/blood/gibs/core)
gibamounts = list(2, 2, 1)
sound_vol = 40
/obj/effect/gibspawner/generic/Initialize()
if(!gibdirections.len)
gibdirections = list(list(WEST, NORTHWEST, SOUTHWEST, NORTH),list(EAST, NORTHEAST, SOUTHEAST, SOUTH), list())
return ..()
/obj/effect/gibspawner/generic/animal
gib_mob_type = /mob/living/simple_animal/pet
/obj/effect/gibspawner/human
gibtypes = list(/obj/effect/decal/cleanable/blood/gibs/up, /obj/effect/decal/cleanable/blood/gibs/down, /obj/effect/decal/cleanable/blood/gibs, /obj/effect/decal/cleanable/blood/gibs, /obj/effect/decal/cleanable/blood/gibs/body, /obj/effect/decal/cleanable/blood/gibs/limb, /obj/effect/decal/cleanable/blood/gibs/core)
gibamounts = list(1, 1, 1, 1, 1, 1, 1)
gib_mob_type = /mob/living/carbon/human
sound_vol = 50
/obj/effect/gibspawner/human/Initialize()
if(!gibdirections.len)
gibdirections = list(list(NORTH, NORTHEAST, NORTHWEST),list(SOUTH, SOUTHEAST, SOUTHWEST),list(WEST, NORTHWEST, SOUTHWEST),list(EAST, NORTHEAST, SOUTHEAST), GLOB.alldirs, GLOB.alldirs, list())
return ..()
/obj/effect/gibspawner/human/bodypartless //only the gibs that don't look like actual full bodyparts (except torso).
gibtypes = list(/obj/effect/decal/cleanable/blood/gibs, /obj/effect/decal/cleanable/blood/gibs/core, /obj/effect/decal/cleanable/blood/gibs, /obj/effect/decal/cleanable/blood/gibs/core, /obj/effect/decal/cleanable/blood/gibs, /obj/effect/decal/cleanable/blood/gibs/torso)
gibamounts = list(1, 1, 1, 1, 1, 1)
/obj/effect/gibspawner/human/bodypartless/Initialize()
if(!gibdirections.len)
gibdirections = list(list(NORTH, NORTHEAST, NORTHWEST),list(SOUTH, SOUTHEAST, SOUTHWEST),list(WEST, NORTHWEST, SOUTHWEST),list(EAST, NORTHEAST, SOUTHEAST), GLOB.alldirs, list())
return ..()
/obj/effect/gibspawner/xeno
gibtypes = list(/obj/effect/decal/cleanable/xenoblood/xgibs/up, /obj/effect/decal/cleanable/xenoblood/xgibs/down, /obj/effect/decal/cleanable/xenoblood/xgibs, /obj/effect/decal/cleanable/xenoblood/xgibs, /obj/effect/decal/cleanable/xenoblood/xgibs/body, /obj/effect/decal/cleanable/xenoblood/xgibs/limb, /obj/effect/decal/cleanable/xenoblood/xgibs/core)
gibamounts = list(1, 1, 1, 1, 1, 1, 1)
gib_mob_type = /mob/living/carbon/alien
/obj/effect/gibspawner/xeno/Initialize()
if(!gibdirections.len)
gibdirections = list(list(NORTH, NORTHEAST, NORTHWEST),list(SOUTH, SOUTHEAST, SOUTHWEST),list(WEST, NORTHWEST, SOUTHWEST),list(EAST, NORTHEAST, SOUTHEAST), GLOB.alldirs, GLOB.alldirs, list())
return ..()
/obj/effect/gibspawner/xeno/bodypartless //only the gibs that don't look like actual full bodyparts (except torso).
gibtypes = list(/obj/effect/decal/cleanable/xenoblood/xgibs, /obj/effect/decal/cleanable/xenoblood/xgibs/core, /obj/effect/decal/cleanable/xenoblood/xgibs, /obj/effect/decal/cleanable/xenoblood/xgibs/core, /obj/effect/decal/cleanable/xenoblood/xgibs, /obj/effect/decal/cleanable/xenoblood/xgibs/torso)
gibamounts = list(1, 1, 1, 1, 1, 1)
/obj/effect/gibspawner/xeno/bodypartless/Initialize()
if(!gibdirections.len)
gibdirections = list(list(NORTH, NORTHEAST, NORTHWEST),list(SOUTH, SOUTHEAST, SOUTHWEST),list(WEST, NORTHWEST, SOUTHWEST),list(EAST, NORTHEAST, SOUTHEAST), GLOB.alldirs, list())
return ..()
/obj/effect/gibspawner/larva
gibtypes = list(/obj/effect/decal/cleanable/xenoblood/xgibs/larva, /obj/effect/decal/cleanable/xenoblood/xgibs/larva, /obj/effect/decal/cleanable/xenoblood/xgibs/larva/body, /obj/effect/decal/cleanable/xenoblood/xgibs/larva/body)
gibamounts = list(1, 1, 1, 1)
gib_mob_type = /mob/living/carbon/alien/larva
/obj/effect/gibspawner/larva/Initialize()
if(!gibdirections.len)
gibdirections = list(list(NORTH, NORTHEAST, NORTHWEST),list(SOUTH, SOUTHEAST, SOUTHWEST), list(), GLOB.alldirs)
return ..()
/obj/effect/gibspawner/larva/bodypartless
gibtypes = list(/obj/effect/decal/cleanable/xenoblood/xgibs/larva, /obj/effect/decal/cleanable/xenoblood/xgibs/larva, /obj/effect/decal/cleanable/xenoblood/xgibs/larva)
gibamounts = list(1, 1, 1)
/obj/effect/gibspawner/larva/bodypartless/Initialize()
if(!gibdirections.len)
gibdirections = list(list(NORTH, NORTHEAST, NORTHWEST),list(SOUTH, SOUTHEAST, SOUTHWEST), list())
return ..()
/obj/effect/gibspawner/robot
sparks = 1
gibtypes = list(/obj/effect/decal/cleanable/robot_debris/up, /obj/effect/decal/cleanable/robot_debris/down, /obj/effect/decal/cleanable/robot_debris, /obj/effect/decal/cleanable/robot_debris, /obj/effect/decal/cleanable/robot_debris, /obj/effect/decal/cleanable/robot_debris/limb)
gibamounts = list(1, 1, 1, 1, 1, 1)
gib_mob_type = /mob/living/silicon
/obj/effect/gibspawner/robot/Initialize()
if(!gibdirections.len)
gibdirections = list(list(NORTH, NORTHEAST, NORTHWEST),list(SOUTH, SOUTHEAST, SOUTHWEST),list(WEST, NORTHWEST, SOUTHWEST),list(EAST, NORTHEAST, SOUTHEAST), GLOB.alldirs, GLOB.alldirs)
gibamounts[6] = pick(0, 1, 2)
return ..()
/obj/effect/gibspawner
icon_state = "gibspawner"// For the map editor
var/sparks = 0 //whether sparks spread
var/virusProb = 20 //the chance for viruses to spread on the gibs
var/gib_mob_type //generate a fake mob to transfer DNA from if we weren't passed a mob.
var/sound_to_play = 'sound/effects/blobattack.ogg'
var/sound_vol = 60
var/list/gibtypes = list() //typepaths of the gib decals to spawn
var/list/gibamounts = list() //amount to spawn for each gib decal type we'll spawn.
var/list/gibdirections = list() //of lists of possible directions to spread each gib decal type towards.
/obj/effect/gibspawner/Initialize(mapload, mob/living/source_mob, list/datum/disease/diseases)
. = ..()
if(gibtypes.len != gibamounts.len)
stack_trace("Gib list amount length mismatch!")
return
if(gibamounts.len != gibdirections.len)
stack_trace("Gib list dir length mismatch!")
return
var/obj/effect/decal/cleanable/blood/gibs/gib = null
if(sound_to_play && isnum(sound_vol))
playsound(src, sound_to_play, sound_vol, TRUE)
if(sparks)
var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread
s.set_up(2, 1, loc)
s.start()
var/list/dna_to_add //find the dna to pass to the spawned gibs. do note this can be null if the mob doesn't have blood. add_blood_DNA() has built in null handling.
if(source_mob)
dna_to_add = source_mob.get_blood_dna_list() //ez pz
else if(gib_mob_type)
var/mob/living/temp_mob = new gib_mob_type(src) //generate a fake mob so that we pull the right type of DNA for the gibs.
dna_to_add = temp_mob.get_blood_dna_list()
qdel(temp_mob)
else
dna_to_add = list("Non-human DNA" = random_blood_type()) //else, generate a random bloodtype for it.
for(var/i = 1, i<= gibtypes.len, i++)
if(gibamounts[i])
for(var/j = 1, j<= gibamounts[i], j++)
var/gibType = gibtypes[i]
gib = new gibType(loc, diseases)
gib.add_blood_DNA(dna_to_add)
var/list/directions = gibdirections[i]
if(isturf(loc))
if(directions.len)
gib.streak(directions)
return INITIALIZE_HINT_QDEL
/obj/effect/gibspawner/generic
gibtypes = list(/obj/effect/decal/cleanable/blood/gibs, /obj/effect/decal/cleanable/blood/gibs, /obj/effect/decal/cleanable/blood/gibs/core)
gibamounts = list(2, 2, 1)
sound_vol = 40
/obj/effect/gibspawner/generic/Initialize()
if(!gibdirections.len)
gibdirections = list(list(WEST, NORTHWEST, SOUTHWEST, NORTH),list(EAST, NORTHEAST, SOUTHEAST, SOUTH), list())
return ..()
/obj/effect/gibspawner/generic/animal
gib_mob_type = /mob/living/simple_animal/pet
/obj/effect/gibspawner/human
gibtypes = list(/obj/effect/decal/cleanable/blood/gibs/up, /obj/effect/decal/cleanable/blood/gibs/down, /obj/effect/decal/cleanable/blood/gibs, /obj/effect/decal/cleanable/blood/gibs, /obj/effect/decal/cleanable/blood/gibs/body, /obj/effect/decal/cleanable/blood/gibs/limb, /obj/effect/decal/cleanable/blood/gibs/core)
gibamounts = list(1, 1, 1, 1, 1, 1, 1)
gib_mob_type = /mob/living/carbon/human
sound_vol = 50
/obj/effect/gibspawner/human/Initialize()
if(!gibdirections.len)
gibdirections = list(list(NORTH, NORTHEAST, NORTHWEST),list(SOUTH, SOUTHEAST, SOUTHWEST),list(WEST, NORTHWEST, SOUTHWEST),list(EAST, NORTHEAST, SOUTHEAST), GLOB.alldirs, GLOB.alldirs, list())
return ..()
/obj/effect/gibspawner/human/bodypartless //only the gibs that don't look like actual full bodyparts (except torso).
gibtypes = list(/obj/effect/decal/cleanable/blood/gibs, /obj/effect/decal/cleanable/blood/gibs/core, /obj/effect/decal/cleanable/blood/gibs, /obj/effect/decal/cleanable/blood/gibs/core, /obj/effect/decal/cleanable/blood/gibs, /obj/effect/decal/cleanable/blood/gibs/torso)
gibamounts = list(1, 1, 1, 1, 1, 1)
/obj/effect/gibspawner/human/bodypartless/Initialize()
if(!gibdirections.len)
gibdirections = list(list(NORTH, NORTHEAST, NORTHWEST),list(SOUTH, SOUTHEAST, SOUTHWEST),list(WEST, NORTHWEST, SOUTHWEST),list(EAST, NORTHEAST, SOUTHEAST), GLOB.alldirs, list())
return ..()
/obj/effect/gibspawner/xeno
gibtypes = list(/obj/effect/decal/cleanable/xenoblood/xgibs/up, /obj/effect/decal/cleanable/xenoblood/xgibs/down, /obj/effect/decal/cleanable/xenoblood/xgibs, /obj/effect/decal/cleanable/xenoblood/xgibs, /obj/effect/decal/cleanable/xenoblood/xgibs/body, /obj/effect/decal/cleanable/xenoblood/xgibs/limb, /obj/effect/decal/cleanable/xenoblood/xgibs/core)
gibamounts = list(1, 1, 1, 1, 1, 1, 1)
gib_mob_type = /mob/living/carbon/alien
/obj/effect/gibspawner/xeno/Initialize()
if(!gibdirections.len)
gibdirections = list(list(NORTH, NORTHEAST, NORTHWEST),list(SOUTH, SOUTHEAST, SOUTHWEST),list(WEST, NORTHWEST, SOUTHWEST),list(EAST, NORTHEAST, SOUTHEAST), GLOB.alldirs, GLOB.alldirs, list())
return ..()
/obj/effect/gibspawner/xeno/bodypartless //only the gibs that don't look like actual full bodyparts (except torso).
gibtypes = list(/obj/effect/decal/cleanable/xenoblood/xgibs, /obj/effect/decal/cleanable/xenoblood/xgibs/core, /obj/effect/decal/cleanable/xenoblood/xgibs, /obj/effect/decal/cleanable/xenoblood/xgibs/core, /obj/effect/decal/cleanable/xenoblood/xgibs, /obj/effect/decal/cleanable/xenoblood/xgibs/torso)
gibamounts = list(1, 1, 1, 1, 1, 1)
/obj/effect/gibspawner/xeno/bodypartless/Initialize()
if(!gibdirections.len)
gibdirections = list(list(NORTH, NORTHEAST, NORTHWEST),list(SOUTH, SOUTHEAST, SOUTHWEST),list(WEST, NORTHWEST, SOUTHWEST),list(EAST, NORTHEAST, SOUTHEAST), GLOB.alldirs, list())
return ..()
/obj/effect/gibspawner/larva
gibtypes = list(/obj/effect/decal/cleanable/xenoblood/xgibs/larva, /obj/effect/decal/cleanable/xenoblood/xgibs/larva, /obj/effect/decal/cleanable/xenoblood/xgibs/larva/body, /obj/effect/decal/cleanable/xenoblood/xgibs/larva/body)
gibamounts = list(1, 1, 1, 1)
gib_mob_type = /mob/living/carbon/alien/larva
/obj/effect/gibspawner/larva/Initialize()
if(!gibdirections.len)
gibdirections = list(list(NORTH, NORTHEAST, NORTHWEST),list(SOUTH, SOUTHEAST, SOUTHWEST), list(), GLOB.alldirs)
return ..()
/obj/effect/gibspawner/larva/bodypartless
gibtypes = list(/obj/effect/decal/cleanable/xenoblood/xgibs/larva, /obj/effect/decal/cleanable/xenoblood/xgibs/larva, /obj/effect/decal/cleanable/xenoblood/xgibs/larva)
gibamounts = list(1, 1, 1)
/obj/effect/gibspawner/larva/bodypartless/Initialize()
if(!gibdirections.len)
gibdirections = list(list(NORTH, NORTHEAST, NORTHWEST),list(SOUTH, SOUTHEAST, SOUTHWEST), list())
return ..()
/obj/effect/gibspawner/robot
sparks = 1
gibtypes = list(/obj/effect/decal/cleanable/robot_debris/up, /obj/effect/decal/cleanable/robot_debris/down, /obj/effect/decal/cleanable/robot_debris, /obj/effect/decal/cleanable/robot_debris, /obj/effect/decal/cleanable/robot_debris, /obj/effect/decal/cleanable/robot_debris/limb)
gibamounts = list(1, 1, 1, 1, 1, 1)
gib_mob_type = /mob/living/silicon
/obj/effect/gibspawner/robot/Initialize()
if(!gibdirections.len)
gibdirections = list(list(NORTH, NORTHEAST, NORTHWEST),list(SOUTH, SOUTHEAST, SOUTHWEST),list(WEST, NORTHWEST, SOUTHWEST),list(EAST, NORTHEAST, SOUTHEAST), GLOB.alldirs, GLOB.alldirs)
gibamounts[6] = pick(0, 1, 2)
return ..()
+487 -487
View File
@@ -1,487 +1,487 @@
/obj/effect/spawner/lootdrop
icon = 'icons/effects/landmarks_static.dmi'
icon_state = "random_loot"
layer = OBJ_LAYER
var/lootcount = 1 //how many items will be spawned
var/lootdoubles = TRUE //if the same item can be spawned twice
var/list/loot //a list of possible items to spawn e.g. list(/obj/item, /obj/structure, /obj/effect)
var/fan_out_items = FALSE //Whether the items should be distributed to offsets 0,1,-1,2,-2,3,-3.. This overrides pixel_x/y on the spawner itself
/obj/effect/spawner/lootdrop/Initialize(mapload)
..()
if(loot && loot.len)
var/loot_spawned = 0
while((lootcount-loot_spawned) && loot.len)
var/lootspawn = pickweight(loot)
while(islist(lootspawn))
lootspawn = pickweight(lootspawn)
if(!lootdoubles)
loot.Remove(lootspawn)
if(lootspawn)
var/atom/movable/spawned_loot = new lootspawn(loc)
if (!fan_out_items)
if (pixel_x != 0)
spawned_loot.pixel_x = pixel_x
if (pixel_y != 0)
spawned_loot.pixel_y = pixel_y
else
if (loot_spawned)
spawned_loot.pixel_x = spawned_loot.pixel_y = ((!(loot_spawned%2)*loot_spawned/2)*-1)+((loot_spawned%2)*(loot_spawned+1)/2*1)
loot_spawned++
return INITIALIZE_HINT_QDEL
/obj/effect/spawner/lootdrop/donkpockets
name = "donk pocket box spawner"
lootdoubles = FALSE
loot = list(
/obj/item/storage/box/donkpockets/donkpocketspicy = 1,
/obj/item/storage/box/donkpockets/donkpocketteriyaki = 1,
/obj/item/storage/box/donkpockets/donkpocketpizza = 1,
/obj/item/storage/box/donkpockets/donkpocketberry = 1,
/obj/item/storage/box/donkpockets/donkpockethonk = 1,
)
/obj/effect/spawner/lootdrop/armory_contraband
name = "armory contraband gun spawner"
lootdoubles = FALSE
loot = list(
/obj/item/gun/ballistic/automatic/pistol = 8,
/obj/item/gun/ballistic/shotgun/automatic/combat = 5,
/obj/item/gun/ballistic/automatic/pistol/deagle,
/obj/item/gun/ballistic/revolver/mateba
)
/obj/effect/spawner/lootdrop/armory_contraband/metastation
loot = list(/obj/item/gun/ballistic/automatic/pistol = 5,
/obj/item/gun/ballistic/shotgun/automatic/combat = 5,
/obj/item/gun/ballistic/automatic/pistol/deagle,
/obj/item/storage/box/syndie_kit/throwing_weapons = 3,
/obj/item/gun/ballistic/revolver/mateba)
/obj/effect/spawner/lootdrop/armory_contraband/donutstation
loot = list(/obj/item/grenade/clusterbuster/teargas = 5,
/obj/item/gun/ballistic/shotgun/automatic/combat = 5,
/obj/item/bikehorn/golden,
/obj/item/grenade/clusterbuster,
/obj/item/storage/box/syndie_kit/throwing_weapons = 3,
/obj/item/gun/ballistic/revolver/mateba)
/obj/effect/spawner/lootdrop/prison_contraband
name = "prison contraband loot spawner"
loot = list(/obj/item/clothing/mask/cigarette/space_cigarette = 4,
/obj/item/clothing/mask/cigarette/robust = 2,
/obj/item/clothing/mask/cigarette/carp = 3,
/obj/item/clothing/mask/cigarette/uplift = 2,
/obj/item/clothing/mask/cigarette/dromedary = 3,
/obj/item/clothing/mask/cigarette/robustgold = 1,
/obj/item/storage/fancy/cigarettes/cigpack_uplift = 3,
/obj/item/storage/fancy/cigarettes = 3,
/obj/item/clothing/mask/cigarette/rollie/cannabis = 4,
/obj/item/toy/crayon/spraycan = 2,
/obj/item/crowbar = 1,
/obj/item/assembly/flash/handheld = 1,
/obj/item/restraints/handcuffs/cable/zipties = 1,
/obj/item/restraints/handcuffs = 1,
/obj/item/radio/off = 1,
/obj/item/lighter = 3,
/obj/item/storage/box/matches = 3,
/obj/item/reagent_containers/syringe/contraband/space_drugs = 1,
/obj/item/reagent_containers/syringe/contraband/krokodil = 1,
/obj/item/reagent_containers/syringe/contraband/crank = 1,
/obj/item/reagent_containers/syringe/contraband/methamphetamine = 1,
/obj/item/reagent_containers/syringe/contraband/bath_salts = 1,
/obj/item/reagent_containers/syringe/contraband/fentanyl = 1,
/obj/item/reagent_containers/syringe/contraband/morphine = 1,
/obj/item/storage/pill_bottle/happy = 1,
/obj/item/storage/pill_bottle/lsd = 1,
/obj/item/storage/pill_bottle/psicodine = 1,
/obj/item/reagent_containers/food/drinks/beer = 4,
/obj/item/reagent_containers/food/drinks/bottle/whiskey = 1,
/obj/item/paper/fluff/jobs/prisoner/letter = 1,
/obj/item/grenade/smokebomb = 1,
/obj/item/flashlight/seclite = 1,
/obj/item/tailclub = 1, //want to buy makeshift wooden club sprite
/obj/item/kitchen/knife/shiv = 4,
/obj/item/kitchen/knife/shiv/carrot = 1,
/obj/item/kitchen/knife = 1,
/obj/item/storage/wallet/random = 1,
/obj/item/pda = 1
)
/obj/effect/spawner/lootdrop/gambling
name = "gambling valuables spawner"
loot = list(
/obj/item/gun/ballistic/revolver/russian = 5,
/obj/item/clothing/head/ushanka = 3,
/obj/item/storage/box/syndie_kit/throwing_weapons,
/obj/item/coin/gold,
/obj/item/reagent_containers/food/drinks/bottle/vodka/badminka,
)
/obj/effect/spawner/lootdrop/grille_or_trash
name = "maint grille or trash spawner"
loot = list(/obj/structure/grille = 5,
/obj/item/cigbutt = 1,
/obj/item/trash/cheesie = 1,
/obj/item/trash/candy = 1,
/obj/item/trash/chips = 1,
/obj/item/reagent_containers/food/snacks/deadmouse = 1,
/obj/item/trash/pistachios = 1,
/obj/item/trash/plate = 1,
/obj/item/trash/popcorn = 1,
/obj/item/trash/raisins = 1,
/obj/item/trash/sosjerky = 1,
/obj/item/trash/syndi_cakes = 1)
/obj/effect/spawner/lootdrop/three_course_meal
name = "three course meal spawner"
lootcount = 3
lootdoubles = FALSE
var/soups = list(
/obj/item/reagent_containers/food/snacks/soup/beet,
/obj/item/reagent_containers/food/snacks/soup/sweetpotato,
/obj/item/reagent_containers/food/snacks/soup/stew,
/obj/item/reagent_containers/food/snacks/soup/hotchili,
/obj/item/reagent_containers/food/snacks/soup/nettle,
/obj/item/reagent_containers/food/snacks/soup/meatball)
var/salads = list(
/obj/item/reagent_containers/food/snacks/salad/herbsalad,
/obj/item/reagent_containers/food/snacks/salad/validsalad,
/obj/item/reagent_containers/food/snacks/salad/fruit,
/obj/item/reagent_containers/food/snacks/salad/jungle,
/obj/item/reagent_containers/food/snacks/salad/aesirsalad)
var/mains = list(
/obj/item/reagent_containers/food/snacks/bearsteak,
/obj/item/reagent_containers/food/snacks/enchiladas,
/obj/item/reagent_containers/food/snacks/stewedsoymeat,
/obj/item/reagent_containers/food/snacks/burger/bigbite,
/obj/item/reagent_containers/food/snacks/burger/superbite,
/obj/item/reagent_containers/food/snacks/burger/fivealarm)
/obj/effect/spawner/lootdrop/three_course_meal/Initialize(mapload)
loot = list(pick(soups) = 1,pick(salads) = 1,pick(mains) = 1)
. = ..()
/obj/effect/spawner/lootdrop/maintenance
name = "maintenance loot spawner"
// see code/_globalvars/lists/maintenance_loot.dm for loot table
/obj/effect/spawner/lootdrop/maintenance/Initialize(mapload)
loot = GLOB.maintenance_loot
. = ..()
/obj/effect/spawner/lootdrop/maintenance/two
name = "2 x maintenance loot spawner"
lootcount = 2
/obj/effect/spawner/lootdrop/maintenance/three
name = "3 x maintenance loot spawner"
lootcount = 3
/obj/effect/spawner/lootdrop/maintenance/four
name = "4 x maintenance loot spawner"
lootcount = 4
/obj/effect/spawner/lootdrop/maintenance/five
name = "5 x maintenance loot spawner"
lootcount = 5
/obj/effect/spawner/lootdrop/maintenance/six
name = "6 x maintenance loot spawner"
lootcount = 6
/obj/effect/spawner/lootdrop/maintenance/seven
name = "7 x maintenance loot spawner"
lootcount = 7
/obj/effect/spawner/lootdrop/maintenance/eight
name = "8 x maintenance loot spawner"
lootcount = 8
/obj/effect/spawner/lootdrop/crate_spawner
name = "lootcrate spawner" //USE PROMO CODE "SELLOUT" FOR 20% OFF!
lootdoubles = FALSE
loot = list(
/obj/structure/closet/crate/secure/loot = 20,
"" = 80
)
/obj/effect/spawner/lootdrop/organ_spawner
name = "ayylien organ spawner"
loot = list(
/obj/item/organ/heart/gland/electric = 3,
/obj/item/organ/heart/gland/trauma = 4,
/obj/item/organ/heart/gland/egg = 7,
/obj/item/organ/heart/gland/chem = 5,
/obj/item/organ/heart/gland/mindshock = 5,
/obj/item/organ/heart/gland/plasma = 7,
/obj/item/organ/heart/gland/transform = 5,
/obj/item/organ/heart/gland/slime = 4,
/obj/item/organ/heart/gland/spiderman = 5,
/obj/item/organ/heart/gland/ventcrawling = 1,
/obj/item/organ/body_egg/alien_embryo = 1,
/obj/item/organ/regenerative_core = 2)
lootcount = 3
/obj/effect/spawner/lootdrop/memeorgans
name = "meme organ spawner"
loot = list(
/obj/item/organ/ears/penguin,
/obj/item/organ/ears/cat,
/obj/item/organ/eyes/moth,
/obj/item/organ/eyes/snail,
/obj/item/organ/tongue/bone,
/obj/item/organ/tongue/fly,
/obj/item/organ/tongue/snail,
/obj/item/organ/tongue/lizard,
/obj/item/organ/tongue/alien,
/obj/item/organ/tongue/ethereal,
/obj/item/organ/tongue/robot,
/obj/item/organ/tongue/zombie,
/obj/item/organ/appendix,
/obj/item/organ/liver/fly,
/obj/item/organ/lungs/plasmaman,
/obj/item/organ/tail/cat,
/obj/item/organ/tail/lizard)
lootcount = 5
/obj/effect/spawner/lootdrop/two_percent_xeno_egg_spawner
name = "2% chance xeno egg spawner"
loot = list(
/obj/effect/decal/remains/xeno = 49,
/obj/effect/spawner/xeno_egg_delivery = 1)
/obj/effect/spawner/lootdrop/costume
name = "random costume spawner"
/obj/effect/spawner/lootdrop/costume/Initialize()
loot = list()
for(var/path in subtypesof(/obj/effect/spawner/bundle/costume))
loot[path] = TRUE
. = ..()
// Minor lootdrops follow
/obj/effect/spawner/lootdrop/minor/beret_or_rabbitears
name = "beret or rabbit ears spawner"
loot = list(
/obj/item/clothing/head/beret = 1,
/obj/item/clothing/head/rabbitears = 1)
/obj/effect/spawner/lootdrop/minor/bowler_or_that
name = "bowler or top hat spawner"
loot = list(
/obj/item/clothing/head/bowler = 1,
/obj/item/clothing/head/that = 1)
/obj/effect/spawner/lootdrop/minor/kittyears_or_rabbitears
name = "kitty ears or rabbit ears spawner"
loot = list(
/obj/item/clothing/head/kitty = 1,
/obj/item/clothing/head/rabbitears = 1)
/obj/effect/spawner/lootdrop/minor/pirate_or_bandana
name = "pirate hat or bandana spawner"
loot = list(
/obj/item/clothing/head/pirate = 1,
/obj/item/clothing/head/bandana = 1)
/obj/effect/spawner/lootdrop/minor/twentyfive_percent_cyborg_mask
name = "25% cyborg mask spawner"
loot = list(
/obj/item/clothing/mask/gas/cyborg = 25,
"" = 75)
/obj/effect/spawner/lootdrop/aimodule_harmless // These shouldn't allow the AI to start butchering people
name = "harmless AI module spawner"
loot = list(
/obj/item/ai_module/core/full/asimov,
/obj/item/ai_module/core/full/asimovpp,
/obj/item/ai_module/core/full/hippocratic,
/obj/item/ai_module/core/full/paladin_devotion,
/obj/item/ai_module/core/full/paladin
)
/obj/effect/spawner/lootdrop/aimodule_neutral // These shouldn't allow the AI to start butchering people without reason
name = "neutral AI module spawner"
loot = list(
/obj/item/ai_module/core/full/corp,
/obj/item/ai_module/core/full/maintain,
/obj/item/ai_module/core/full/drone,
/obj/item/ai_module/core/full/peacekeeper,
/obj/item/ai_module/core/full/reporter,
/obj/item/ai_module/core/full/robocop,
/obj/item/ai_module/core/full/liveandletlive,
/obj/item/ai_module/core/full/hulkamania
)
/obj/effect/spawner/lootdrop/aimodule_harmful // These will get the shuttle called
name = "harmful AI module spawner"
loot = list(
/obj/item/ai_module/core/full/antimov,
/obj/item/ai_module/core/full/balance,
/obj/item/ai_module/core/full/tyrant,
/obj/item/ai_module/core/full/thermurderdynamic,
/obj/item/ai_module/core/full/damaged,
/obj/item/ai_module/reset/purge
)
// Tech storage circuit board spawners
/obj/effect/spawner/lootdrop/techstorage
name = "generic circuit board spawner"
lootdoubles = FALSE
fan_out_items = TRUE
lootcount = INFINITY
/obj/effect/spawner/lootdrop/techstorage/service
name = "service circuit board spawner"
loot = list(
/obj/item/circuitboard/computer/arcade/battle,
/obj/item/circuitboard/computer/arcade/orion_trail,
/obj/item/circuitboard/machine/autolathe,
/obj/item/circuitboard/computer/mining,
/obj/item/circuitboard/machine/ore_redemption,
/obj/item/circuitboard/machine/mining_equipment_vendor,
/obj/item/circuitboard/machine/microwave,
/obj/item/circuitboard/machine/chem_dispenser/drinks,
/obj/item/circuitboard/machine/chem_dispenser/drinks/beer,
/obj/item/circuitboard/computer/slot_machine
)
/obj/effect/spawner/lootdrop/techstorage/rnd
name = "RnD circuit board spawner"
loot = list(
/obj/item/circuitboard/computer/aifixer,
/obj/item/circuitboard/machine/rdserver,
/obj/item/circuitboard/machine/mechfab,
/obj/item/circuitboard/machine/circuit_imprinter/department,
/obj/item/circuitboard/computer/teleporter,
/obj/item/circuitboard/machine/destructive_analyzer,
/obj/item/circuitboard/computer/rdconsole,
/obj/item/circuitboard/computer/nanite_chamber_control,
/obj/item/circuitboard/computer/nanite_cloud_controller,
/obj/item/circuitboard/machine/nanite_chamber,
/obj/item/circuitboard/machine/nanite_programmer,
/obj/item/circuitboard/machine/nanite_program_hub,
/obj/item/circuitboard/computer/scan_consolenew,
/obj/item/circuitboard/machine/dnascanner
)
/obj/effect/spawner/lootdrop/techstorage/security
name = "security circuit board spawner"
loot = list(
/obj/item/circuitboard/computer/secure_data,
/obj/item/circuitboard/computer/security,
/obj/item/circuitboard/computer/prisoner
)
/obj/effect/spawner/lootdrop/techstorage/engineering
name = "engineering circuit board spawner"
loot = list(
/obj/item/circuitboard/computer/atmos_alert,
/obj/item/circuitboard/computer/stationalert,
/obj/item/circuitboard/computer/powermonitor
)
/obj/effect/spawner/lootdrop/techstorage/tcomms
name = "tcomms circuit board spawner"
loot = list(
/obj/item/circuitboard/computer/message_monitor,
/obj/item/circuitboard/machine/telecomms/broadcaster,
/obj/item/circuitboard/machine/telecomms/bus,
/obj/item/circuitboard/machine/telecomms/server,
/obj/item/circuitboard/machine/telecomms/receiver,
/obj/item/circuitboard/machine/telecomms/processor,
/obj/item/circuitboard/machine/announcement_system,
/obj/item/circuitboard/computer/comm_server,
/obj/item/circuitboard/computer/comm_monitor
)
/obj/effect/spawner/lootdrop/techstorage/medical
name = "medical circuit board spawner"
loot = list(
/obj/item/circuitboard/machine/chem_dispenser,
/obj/item/circuitboard/computer/med_data,
/obj/item/circuitboard/machine/smoke_machine,
/obj/item/circuitboard/machine/chem_master,
/obj/item/circuitboard/computer/pandemic
)
/obj/effect/spawner/lootdrop/techstorage/ai
name = "secure AI circuit board spawner"
loot = list(
/obj/item/circuitboard/computer/aiupload,
/obj/item/circuitboard/computer/borgupload,
/obj/item/circuitboard/aicore
)
/obj/effect/spawner/lootdrop/techstorage/command
name = "secure command circuit board spawner"
loot = list(
/obj/item/circuitboard/computer/crew,
/obj/item/circuitboard/computer/communications,
/obj/item/circuitboard/computer/card
)
/obj/effect/spawner/lootdrop/techstorage/rnd_secure
name = "secure RnD circuit board spawner"
loot = list(
/obj/item/circuitboard/computer/mecha_control,
/obj/item/circuitboard/computer/apc_control,
/obj/item/circuitboard/computer/robotics
)
/obj/effect/spawner/lootdrop/mafia_outfit
name = "mafia outfit spawner"
loot = list(
/obj/effect/spawner/bundle/costume/mafia = 20,
/obj/effect/spawner/bundle/costume/mafia/white = 5,
/obj/effect/spawner/bundle/costume/mafia/checkered = 2,
/obj/effect/spawner/bundle/costume/mafia/beige = 5
)
//finds the probabilities of items spawning from a loot spawner's loot pool
/obj/item/loot_table_maker
icon = 'icons/effects/landmarks_static.dmi'
icon_state = "random_loot"
var/spawner_to_test = /obj/effect/spawner/lootdrop/maintenance //what lootdrop spawner to use the loot pool of
var/loot_count = 180 //180 is about how much maint loot spawns per map as of 11/14/2019
//result outputs
var/list/spawned_table //list of all items "spawned" and how many
var/list/stat_table //list of all items "spawned" and their occurrance probability
/obj/item/loot_table_maker/Initialize()
. = ..()
make_table()
/obj/item/loot_table_maker/attack_self(mob/user)
to_chat(user, "Loot pool re-rolled.")
make_table()
/obj/item/loot_table_maker/proc/make_table()
spawned_table = list()
stat_table = list()
var/obj/effect/spawner/lootdrop/spawner_to_table = new spawner_to_test
var/lootpool = spawner_to_table.loot
qdel(spawner_to_table)
for(var/i in 1 to loot_count)
var/loot_spawn = pick_loot(lootpool)
if(!(loot_spawn in spawned_table))
spawned_table[loot_spawn] = 1
else
spawned_table[loot_spawn] += 1
stat_table += spawned_table
for(var/item in stat_table)
stat_table[item] /= loot_count
/obj/item/loot_table_maker/proc/pick_loot(lootpool) //selects path from loot table and returns it
var/lootspawn = pickweight(lootpool)
while(islist(lootspawn))
lootspawn = pickweight(lootspawn)
return lootspawn
/obj/effect/spawner/lootdrop
icon = 'icons/effects/landmarks_static.dmi'
icon_state = "random_loot"
layer = OBJ_LAYER
var/lootcount = 1 //how many items will be spawned
var/lootdoubles = TRUE //if the same item can be spawned twice
var/list/loot //a list of possible items to spawn e.g. list(/obj/item, /obj/structure, /obj/effect)
var/fan_out_items = FALSE //Whether the items should be distributed to offsets 0,1,-1,2,-2,3,-3.. This overrides pixel_x/y on the spawner itself
/obj/effect/spawner/lootdrop/Initialize(mapload)
..()
if(loot && loot.len)
var/loot_spawned = 0
while((lootcount-loot_spawned) && loot.len)
var/lootspawn = pickweight(loot)
while(islist(lootspawn))
lootspawn = pickweight(lootspawn)
if(!lootdoubles)
loot.Remove(lootspawn)
if(lootspawn)
var/atom/movable/spawned_loot = new lootspawn(loc)
if (!fan_out_items)
if (pixel_x != 0)
spawned_loot.pixel_x = pixel_x
if (pixel_y != 0)
spawned_loot.pixel_y = pixel_y
else
if (loot_spawned)
spawned_loot.pixel_x = spawned_loot.pixel_y = ((!(loot_spawned%2)*loot_spawned/2)*-1)+((loot_spawned%2)*(loot_spawned+1)/2*1)
loot_spawned++
return INITIALIZE_HINT_QDEL
/obj/effect/spawner/lootdrop/donkpockets
name = "donk pocket box spawner"
lootdoubles = FALSE
loot = list(
/obj/item/storage/box/donkpockets/donkpocketspicy = 1,
/obj/item/storage/box/donkpockets/donkpocketteriyaki = 1,
/obj/item/storage/box/donkpockets/donkpocketpizza = 1,
/obj/item/storage/box/donkpockets/donkpocketberry = 1,
/obj/item/storage/box/donkpockets/donkpockethonk = 1,
)
/obj/effect/spawner/lootdrop/armory_contraband
name = "armory contraband gun spawner"
lootdoubles = FALSE
loot = list(
/obj/item/gun/ballistic/automatic/pistol = 8,
/obj/item/gun/ballistic/shotgun/automatic/combat = 5,
/obj/item/gun/ballistic/automatic/pistol/deagle,
/obj/item/gun/ballistic/revolver/mateba
)
/obj/effect/spawner/lootdrop/armory_contraband/metastation
loot = list(/obj/item/gun/ballistic/automatic/pistol = 5,
/obj/item/gun/ballistic/shotgun/automatic/combat = 5,
/obj/item/gun/ballistic/automatic/pistol/deagle,
/obj/item/storage/box/syndie_kit/throwing_weapons = 3,
/obj/item/gun/ballistic/revolver/mateba)
/obj/effect/spawner/lootdrop/armory_contraband/donutstation
loot = list(/obj/item/grenade/clusterbuster/teargas = 5,
/obj/item/gun/ballistic/shotgun/automatic/combat = 5,
/obj/item/bikehorn/golden,
/obj/item/grenade/clusterbuster,
/obj/item/storage/box/syndie_kit/throwing_weapons = 3,
/obj/item/gun/ballistic/revolver/mateba)
/obj/effect/spawner/lootdrop/prison_contraband
name = "prison contraband loot spawner"
loot = list(/obj/item/clothing/mask/cigarette/space_cigarette = 4,
/obj/item/clothing/mask/cigarette/robust = 2,
/obj/item/clothing/mask/cigarette/carp = 3,
/obj/item/clothing/mask/cigarette/uplift = 2,
/obj/item/clothing/mask/cigarette/dromedary = 3,
/obj/item/clothing/mask/cigarette/robustgold = 1,
/obj/item/storage/fancy/cigarettes/cigpack_uplift = 3,
/obj/item/storage/fancy/cigarettes = 3,
/obj/item/clothing/mask/cigarette/rollie/cannabis = 4,
/obj/item/toy/crayon/spraycan = 2,
/obj/item/crowbar = 1,
/obj/item/assembly/flash/handheld = 1,
/obj/item/restraints/handcuffs/cable/zipties = 1,
/obj/item/restraints/handcuffs = 1,
/obj/item/radio/off = 1,
/obj/item/lighter = 3,
/obj/item/storage/box/matches = 3,
/obj/item/reagent_containers/syringe/contraband/space_drugs = 1,
/obj/item/reagent_containers/syringe/contraband/krokodil = 1,
/obj/item/reagent_containers/syringe/contraband/crank = 1,
/obj/item/reagent_containers/syringe/contraband/methamphetamine = 1,
/obj/item/reagent_containers/syringe/contraband/bath_salts = 1,
/obj/item/reagent_containers/syringe/contraband/fentanyl = 1,
/obj/item/reagent_containers/syringe/contraband/morphine = 1,
/obj/item/storage/pill_bottle/happy = 1,
/obj/item/storage/pill_bottle/lsd = 1,
/obj/item/storage/pill_bottle/psicodine = 1,
/obj/item/reagent_containers/food/drinks/beer = 4,
/obj/item/reagent_containers/food/drinks/bottle/whiskey = 1,
/obj/item/paper/fluff/jobs/prisoner/letter = 1,
/obj/item/grenade/smokebomb = 1,
/obj/item/flashlight/seclite = 1,
/obj/item/tailclub = 1, //want to buy makeshift wooden club sprite
/obj/item/kitchen/knife/shiv = 4,
/obj/item/kitchen/knife/shiv/carrot = 1,
/obj/item/kitchen/knife = 1,
/obj/item/storage/wallet/random = 1,
/obj/item/pda = 1
)
/obj/effect/spawner/lootdrop/gambling
name = "gambling valuables spawner"
loot = list(
/obj/item/gun/ballistic/revolver/russian = 5,
/obj/item/clothing/head/ushanka = 3,
/obj/item/storage/box/syndie_kit/throwing_weapons,
/obj/item/coin/gold,
/obj/item/reagent_containers/food/drinks/bottle/vodka/badminka,
)
/obj/effect/spawner/lootdrop/grille_or_trash
name = "maint grille or trash spawner"
loot = list(/obj/structure/grille = 5,
/obj/item/cigbutt = 1,
/obj/item/trash/cheesie = 1,
/obj/item/trash/candy = 1,
/obj/item/trash/chips = 1,
/obj/item/reagent_containers/food/snacks/deadmouse = 1,
/obj/item/trash/pistachios = 1,
/obj/item/trash/plate = 1,
/obj/item/trash/popcorn = 1,
/obj/item/trash/raisins = 1,
/obj/item/trash/sosjerky = 1,
/obj/item/trash/syndi_cakes = 1)
/obj/effect/spawner/lootdrop/three_course_meal
name = "three course meal spawner"
lootcount = 3
lootdoubles = FALSE
var/soups = list(
/obj/item/reagent_containers/food/snacks/soup/beet,
/obj/item/reagent_containers/food/snacks/soup/sweetpotato,
/obj/item/reagent_containers/food/snacks/soup/stew,
/obj/item/reagent_containers/food/snacks/soup/hotchili,
/obj/item/reagent_containers/food/snacks/soup/nettle,
/obj/item/reagent_containers/food/snacks/soup/meatball)
var/salads = list(
/obj/item/reagent_containers/food/snacks/salad/herbsalad,
/obj/item/reagent_containers/food/snacks/salad/validsalad,
/obj/item/reagent_containers/food/snacks/salad/fruit,
/obj/item/reagent_containers/food/snacks/salad/jungle,
/obj/item/reagent_containers/food/snacks/salad/aesirsalad)
var/mains = list(
/obj/item/reagent_containers/food/snacks/bearsteak,
/obj/item/reagent_containers/food/snacks/enchiladas,
/obj/item/reagent_containers/food/snacks/stewedsoymeat,
/obj/item/reagent_containers/food/snacks/burger/bigbite,
/obj/item/reagent_containers/food/snacks/burger/superbite,
/obj/item/reagent_containers/food/snacks/burger/fivealarm)
/obj/effect/spawner/lootdrop/three_course_meal/Initialize(mapload)
loot = list(pick(soups) = 1,pick(salads) = 1,pick(mains) = 1)
. = ..()
/obj/effect/spawner/lootdrop/maintenance
name = "maintenance loot spawner"
// see code/_globalvars/lists/maintenance_loot.dm for loot table
/obj/effect/spawner/lootdrop/maintenance/Initialize(mapload)
loot = GLOB.maintenance_loot
. = ..()
/obj/effect/spawner/lootdrop/maintenance/two
name = "2 x maintenance loot spawner"
lootcount = 2
/obj/effect/spawner/lootdrop/maintenance/three
name = "3 x maintenance loot spawner"
lootcount = 3
/obj/effect/spawner/lootdrop/maintenance/four
name = "4 x maintenance loot spawner"
lootcount = 4
/obj/effect/spawner/lootdrop/maintenance/five
name = "5 x maintenance loot spawner"
lootcount = 5
/obj/effect/spawner/lootdrop/maintenance/six
name = "6 x maintenance loot spawner"
lootcount = 6
/obj/effect/spawner/lootdrop/maintenance/seven
name = "7 x maintenance loot spawner"
lootcount = 7
/obj/effect/spawner/lootdrop/maintenance/eight
name = "8 x maintenance loot spawner"
lootcount = 8
/obj/effect/spawner/lootdrop/crate_spawner
name = "lootcrate spawner" //USE PROMO CODE "SELLOUT" FOR 20% OFF!
lootdoubles = FALSE
loot = list(
/obj/structure/closet/crate/secure/loot = 20,
"" = 80
)
/obj/effect/spawner/lootdrop/organ_spawner
name = "ayylien organ spawner"
loot = list(
/obj/item/organ/heart/gland/electric = 3,
/obj/item/organ/heart/gland/trauma = 4,
/obj/item/organ/heart/gland/egg = 7,
/obj/item/organ/heart/gland/chem = 5,
/obj/item/organ/heart/gland/mindshock = 5,
/obj/item/organ/heart/gland/plasma = 7,
/obj/item/organ/heart/gland/transform = 5,
/obj/item/organ/heart/gland/slime = 4,
/obj/item/organ/heart/gland/spiderman = 5,
/obj/item/organ/heart/gland/ventcrawling = 1,
/obj/item/organ/body_egg/alien_embryo = 1,
/obj/item/organ/regenerative_core = 2)
lootcount = 3
/obj/effect/spawner/lootdrop/memeorgans
name = "meme organ spawner"
loot = list(
/obj/item/organ/ears/penguin,
/obj/item/organ/ears/cat,
/obj/item/organ/eyes/moth,
/obj/item/organ/eyes/snail,
/obj/item/organ/tongue/bone,
/obj/item/organ/tongue/fly,
/obj/item/organ/tongue/snail,
/obj/item/organ/tongue/lizard,
/obj/item/organ/tongue/alien,
/obj/item/organ/tongue/ethereal,
/obj/item/organ/tongue/robot,
/obj/item/organ/tongue/zombie,
/obj/item/organ/appendix,
/obj/item/organ/liver/fly,
/obj/item/organ/lungs/plasmaman,
/obj/item/organ/tail/cat,
/obj/item/organ/tail/lizard)
lootcount = 5
/obj/effect/spawner/lootdrop/two_percent_xeno_egg_spawner
name = "2% chance xeno egg spawner"
loot = list(
/obj/effect/decal/remains/xeno = 49,
/obj/effect/spawner/xeno_egg_delivery = 1)
/obj/effect/spawner/lootdrop/costume
name = "random costume spawner"
/obj/effect/spawner/lootdrop/costume/Initialize()
loot = list()
for(var/path in subtypesof(/obj/effect/spawner/bundle/costume))
loot[path] = TRUE
. = ..()
// Minor lootdrops follow
/obj/effect/spawner/lootdrop/minor/beret_or_rabbitears
name = "beret or rabbit ears spawner"
loot = list(
/obj/item/clothing/head/beret = 1,
/obj/item/clothing/head/rabbitears = 1)
/obj/effect/spawner/lootdrop/minor/bowler_or_that
name = "bowler or top hat spawner"
loot = list(
/obj/item/clothing/head/bowler = 1,
/obj/item/clothing/head/that = 1)
/obj/effect/spawner/lootdrop/minor/kittyears_or_rabbitears
name = "kitty ears or rabbit ears spawner"
loot = list(
/obj/item/clothing/head/kitty = 1,
/obj/item/clothing/head/rabbitears = 1)
/obj/effect/spawner/lootdrop/minor/pirate_or_bandana
name = "pirate hat or bandana spawner"
loot = list(
/obj/item/clothing/head/pirate = 1,
/obj/item/clothing/head/bandana = 1)
/obj/effect/spawner/lootdrop/minor/twentyfive_percent_cyborg_mask
name = "25% cyborg mask spawner"
loot = list(
/obj/item/clothing/mask/gas/cyborg = 25,
"" = 75)
/obj/effect/spawner/lootdrop/aimodule_harmless // These shouldn't allow the AI to start butchering people
name = "harmless AI module spawner"
loot = list(
/obj/item/ai_module/core/full/asimov,
/obj/item/ai_module/core/full/asimovpp,
/obj/item/ai_module/core/full/hippocratic,
/obj/item/ai_module/core/full/paladin_devotion,
/obj/item/ai_module/core/full/paladin
)
/obj/effect/spawner/lootdrop/aimodule_neutral // These shouldn't allow the AI to start butchering people without reason
name = "neutral AI module spawner"
loot = list(
/obj/item/ai_module/core/full/corp,
/obj/item/ai_module/core/full/maintain,
/obj/item/ai_module/core/full/drone,
/obj/item/ai_module/core/full/peacekeeper,
/obj/item/ai_module/core/full/reporter,
/obj/item/ai_module/core/full/robocop,
/obj/item/ai_module/core/full/liveandletlive,
/obj/item/ai_module/core/full/hulkamania
)
/obj/effect/spawner/lootdrop/aimodule_harmful // These will get the shuttle called
name = "harmful AI module spawner"
loot = list(
/obj/item/ai_module/core/full/antimov,
/obj/item/ai_module/core/full/balance,
/obj/item/ai_module/core/full/tyrant,
/obj/item/ai_module/core/full/thermurderdynamic,
/obj/item/ai_module/core/full/damaged,
/obj/item/ai_module/reset/purge
)
// Tech storage circuit board spawners
/obj/effect/spawner/lootdrop/techstorage
name = "generic circuit board spawner"
lootdoubles = FALSE
fan_out_items = TRUE
lootcount = INFINITY
/obj/effect/spawner/lootdrop/techstorage/service
name = "service circuit board spawner"
loot = list(
/obj/item/circuitboard/computer/arcade/battle,
/obj/item/circuitboard/computer/arcade/orion_trail,
/obj/item/circuitboard/machine/autolathe,
/obj/item/circuitboard/computer/mining,
/obj/item/circuitboard/machine/ore_redemption,
/obj/item/circuitboard/machine/mining_equipment_vendor,
/obj/item/circuitboard/machine/microwave,
/obj/item/circuitboard/machine/chem_dispenser/drinks,
/obj/item/circuitboard/machine/chem_dispenser/drinks/beer,
/obj/item/circuitboard/computer/slot_machine
)
/obj/effect/spawner/lootdrop/techstorage/rnd
name = "RnD circuit board spawner"
loot = list(
/obj/item/circuitboard/computer/aifixer,
/obj/item/circuitboard/machine/rdserver,
/obj/item/circuitboard/machine/mechfab,
/obj/item/circuitboard/machine/circuit_imprinter/department,
/obj/item/circuitboard/computer/teleporter,
/obj/item/circuitboard/machine/destructive_analyzer,
/obj/item/circuitboard/computer/rdconsole,
/obj/item/circuitboard/computer/nanite_chamber_control,
/obj/item/circuitboard/computer/nanite_cloud_controller,
/obj/item/circuitboard/machine/nanite_chamber,
/obj/item/circuitboard/machine/nanite_programmer,
/obj/item/circuitboard/machine/nanite_program_hub,
/obj/item/circuitboard/computer/scan_consolenew,
/obj/item/circuitboard/machine/dnascanner
)
/obj/effect/spawner/lootdrop/techstorage/security
name = "security circuit board spawner"
loot = list(
/obj/item/circuitboard/computer/secure_data,
/obj/item/circuitboard/computer/security,
/obj/item/circuitboard/computer/prisoner
)
/obj/effect/spawner/lootdrop/techstorage/engineering
name = "engineering circuit board spawner"
loot = list(
/obj/item/circuitboard/computer/atmos_alert,
/obj/item/circuitboard/computer/stationalert,
/obj/item/circuitboard/computer/powermonitor
)
/obj/effect/spawner/lootdrop/techstorage/tcomms
name = "tcomms circuit board spawner"
loot = list(
/obj/item/circuitboard/computer/message_monitor,
/obj/item/circuitboard/machine/telecomms/broadcaster,
/obj/item/circuitboard/machine/telecomms/bus,
/obj/item/circuitboard/machine/telecomms/server,
/obj/item/circuitboard/machine/telecomms/receiver,
/obj/item/circuitboard/machine/telecomms/processor,
/obj/item/circuitboard/machine/announcement_system,
/obj/item/circuitboard/computer/comm_server,
/obj/item/circuitboard/computer/comm_monitor
)
/obj/effect/spawner/lootdrop/techstorage/medical
name = "medical circuit board spawner"
loot = list(
/obj/item/circuitboard/machine/chem_dispenser,
/obj/item/circuitboard/computer/med_data,
/obj/item/circuitboard/machine/smoke_machine,
/obj/item/circuitboard/machine/chem_master,
/obj/item/circuitboard/computer/pandemic
)
/obj/effect/spawner/lootdrop/techstorage/ai
name = "secure AI circuit board spawner"
loot = list(
/obj/item/circuitboard/computer/aiupload,
/obj/item/circuitboard/computer/borgupload,
/obj/item/circuitboard/aicore
)
/obj/effect/spawner/lootdrop/techstorage/command
name = "secure command circuit board spawner"
loot = list(
/obj/item/circuitboard/computer/crew,
/obj/item/circuitboard/computer/communications,
/obj/item/circuitboard/computer/card
)
/obj/effect/spawner/lootdrop/techstorage/rnd_secure
name = "secure RnD circuit board spawner"
loot = list(
/obj/item/circuitboard/computer/mecha_control,
/obj/item/circuitboard/computer/apc_control,
/obj/item/circuitboard/computer/robotics
)
/obj/effect/spawner/lootdrop/mafia_outfit
name = "mafia outfit spawner"
loot = list(
/obj/effect/spawner/bundle/costume/mafia = 20,
/obj/effect/spawner/bundle/costume/mafia/white = 5,
/obj/effect/spawner/bundle/costume/mafia/checkered = 2,
/obj/effect/spawner/bundle/costume/mafia/beige = 5
)
//finds the probabilities of items spawning from a loot spawner's loot pool
/obj/item/loot_table_maker
icon = 'icons/effects/landmarks_static.dmi'
icon_state = "random_loot"
var/spawner_to_test = /obj/effect/spawner/lootdrop/maintenance //what lootdrop spawner to use the loot pool of
var/loot_count = 180 //180 is about how much maint loot spawns per map as of 11/14/2019
//result outputs
var/list/spawned_table //list of all items "spawned" and how many
var/list/stat_table //list of all items "spawned" and their occurrance probability
/obj/item/loot_table_maker/Initialize()
. = ..()
make_table()
/obj/item/loot_table_maker/attack_self(mob/user)
to_chat(user, "Loot pool re-rolled.")
make_table()
/obj/item/loot_table_maker/proc/make_table()
spawned_table = list()
stat_table = list()
var/obj/effect/spawner/lootdrop/spawner_to_table = new spawner_to_test
var/lootpool = spawner_to_table.loot
qdel(spawner_to_table)
for(var/i in 1 to loot_count)
var/loot_spawn = pick_loot(lootpool)
if(!(loot_spawn in spawned_table))
spawned_table[loot_spawn] = 1
else
spawned_table[loot_spawn] += 1
stat_table += spawned_table
for(var/item in stat_table)
stat_table[item] /= loot_count
/obj/item/loot_table_maker/proc/pick_loot(lootpool) //selects path from loot table and returns it
var/lootspawn = pickweight(lootpool)
while(islist(lootspawn))
lootspawn = pickweight(lootspawn)
return lootspawn